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 =...