POC: StackExchange API: $.getStackExchangeUsers
Test wrapper for getting a list of users.
by Adam Patridge
HTML
<a id="more-questions" href="#">Get more</a>
<ul id="results"></ul>
<script type="text/x-jquery-tmpl" id="resultTemplate">
{{#each $data}}
<li data-question-id="{{=user_id}}">
<p>{{=display_name!}} ({{=reputation}})</p>
</li>
{{/each}}
</script>
<script type="text/javascript" src="http://dl.dropbox.com/u/6593594/cdn/JSLINQ.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="http://jquery-jsonp.googlecode.com/files/jquery.jsonp-2.1.4.min.js"></script>
<script type="text/javascript" src="https://raw.github.com/BorisMoore/jsrender/master/jsrender.js"></script>
<script type="text/javascript" src="http://dl.dropbox.com/u/6593594/cdn/uri.js"></script>
JavaScript
/***Let JSLint know what the expected global variables are***/
/*global jQuery, $, google, JSLINQ, clearTimeout, setTimeout */
(function ($) {
"use strict";
var apiHost = "api.stackexchange.com";
$.getStackExchangeUsers = function (options) {
var opts = $.extend({}, $.getStackExchangeUsers.defaults, options),
url = URI("https://" + apiHost + "/2.0/users/" + (opts.ids || ""));
// Append all options as querystring parameters.
$.each(opts, function (i, val) {
url.addSearch(i, val);
});
var getNewQuestions = $.ajax({
dataType: "jsonp",
url: url
});
return getNewQuestions;
};
$.getStackExchangeUsers.defaults = {
pagesize: 50,
site: "stackoverflow",
sort: "reputation",
order: "desc"
//min: lastValueForSort,
//key: yourApiKey,
//todate: someTimestamp,
//fromdate: someTimestamp,
//ids: "1;2;3",
//page: x,
};
}(jQuery));
$(function () {
"use strict";
var apiKey = "BFkB32WKyHjbqI9RYU1lKA((",
mostRecentPage = 1;
$("#more-questions").click(function (e) {
var opts = {
key: apiKey,
site: "stackoverflow",
sort: "reputation",
order: "desc",
page: mostRecentPage
};
$.getStackExchangeUsers(opts).done(function (data) {
var currentUserIds = JSLINQ($("#results li")).Select(function (li) {
return $(li).data("user-id");
}),
orderedData = JSLINQ(data.items).Where(function (user) {
return !currentUserIds.Any(function (id) {
return id === user.user_id;
});
}).OrderBy(function (user) {
return user.reputation;
}),
result =...