X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=40d703f3f632ff5c5e7277666359cbde2a61855b;hb=9484ddf3fc0e14c63b704e96bb916944fe85a65c;hp=1d0b793588332c3d1b6e7fdabe85fb3c3113df6c;hpb=72a1f990ea55524c3d4bacec12f858754ab94e62;p=mkws-moved-to-github.git diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js index 1d0b793..40d703f 100644 --- a/tools/htdocs/mkws.js +++ b/tools/htdocs/mkws.js @@ -142,12 +142,48 @@ var mkws = { }; +// The following PubSub code is modified from the jQuery manual: +// https://api.jquery.com/jQuery.Callbacks/ +// +// Use as: +// mkws.queue("eventName").subscribe(function(param1, param2 ...) { ... }); +// mkws.queue("eventName").publish(arg1, arg2, ...); + +(function() { + var queues = {}; + mkws.queue = function(id) { + if (!queues[id]) { + var callbacks = $.Callbacks(); + queues[id] = { + publish: callbacks.fire, + subscribe: callbacks.add, + unsubscribe: callbacks.remove + }; + } + return queues[id]; + } +}()); + + // Define empty mkws_config for simple applications that don't define it. if (mkws_config == null || typeof mkws_config != 'object') { var mkws_config = {}; } +// Factory function for widget objects. +function widget($, team, node) { + var that = { + team: team, + node: node + }; + + // ### More to do here, surely + + return that; +} + + // Factory function for team objects. As much as possible, this uses // only member variables (prefixed "m_") and inner functions with // private scope. Some functions are visibl as member-functions to be @@ -502,6 +538,8 @@ function team($, teamName) { } debug("triggerSearch(" + m_query + "): filters = " + $.toJSON(m_filters) + ", pp2filter = " + pp2filter + ", params = " + $.toJSON(params)); + // We can use: params.torusquery = "udb=NAME" + // Note: that won't work when running against raw pazpar2 m_paz.search(m_query, m_perpage, m_sort, pp2filter, undefined, params); } @@ -880,7 +918,7 @@ function team($, teamName) { // ### There is only one match here by design: fix not to bother looping $('.mkwsSearch.mkwsTeam_' + m_teamName).each(function (i, obj) { var node = this; - mkws.handle_node_with_team(node, function(tname) { + mkws.handle_node_with_team(this, function(tname) { $(node).html('\
\ \ @@ -950,7 +988,7 @@ function team($, teamName) { $('.mkwsSearchForm.mkwsTeam_' + m_teamName).each(function (i, obj) { debug("adding search-forms for team '" + m_teamName + "'"); var node = this; - mkws.handle_node_with_team(node, function(tname) { + mkws.handle_node_with_team(this, function(tname) { debug("adding search-form '" + tname + "' for team '" + m_teamName + "'"); $(node).submit(onFormSubmitEventHandler); }); @@ -966,7 +1004,7 @@ function team($, teamName) { // on first page, hide the termlist $(document).ready(function() { $(".mkwsTermlists.mkwsTeam_" + m_teamName).hide(); }); var motd = $(".mkwsMOTD.mkwsTeam_" + m_teamName); - var container = $(".mkwsMOTDContainer.mkwsTeam_" + m_teamName); + var container = $(".mkwsMOTDContainer.mkwsTeam_" + m_teamName); if (motd.length && container.length) { // Move the MOTD from the provided element down into the container motd.appendTo(container); @@ -1209,7 +1247,7 @@ function team($, teamName) { tname = cname.replace(/^mkwsTeam_/, ''); } } - callback(tname); + callback.call(this, tname); } @@ -1380,7 +1418,7 @@ function team($, teamName) { // elements that have the old magic IDs. var ids = [ "Switch", "Lang", "Search", "Pager", "Navi", "Results", "Records", "Targets", "Ranking", - "Termlists", "Stat" ]; + "Termlists", "Stat", "MOTD" ]; for (var i = 0; i < ids.length; i++) { var id = 'mkws' + ids[i]; var node = $('#' + id); @@ -1401,15 +1439,19 @@ function team($, teamName) { // Find all nodes with an class, and determine their team from // the mkwsTeam_* class. Make all team objects. + var then = $.now(); $('[class^="mkws"],[class*=" mkws"]').each(function () { - var node = this; - mkws.handle_node_with_team(node, function(tname) { + mkws.handle_node_with_team(this, function(tname) { if (!mkws.teams[tname]) { mkws.teams[tname] = team(j, tname); debug("Made MKWS team '" + tname + "'"); } + var myTeam = mkws.teams[tname] + var myWidget = widget(j, myTeam, this) }); }); + var now = $.now(); + debug("Walking MKWS nodes took " + (now-then) + " ms"); if (mkws_config.use_service_proxy) { authenticate_session(mkws_config.service_proxy_auth,