X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=3a44f46fee77749e73860299dd20d19944a503ae;hb=5ef5d20b3d8c331c19adaa6920f0849fb4984dd8;hp=43fc455e73bd467cafec35c761090e9303b6d748;hpb=4f9f9a2ed216e36091560a0442291e27a61b0a92;p=mkws-moved-to-github.git diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js index 43fc455..3a44f46 100644 --- a/tools/htdocs/mkws.js +++ b/tools/htdocs/mkws.js @@ -142,29 +142,6 @@ 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 = {}; @@ -183,13 +160,22 @@ function widget($, team, type, node) { if (type === 'Targets') { promoteTargets(); + } else if (type === 'Stat') { + promoteStat(); + } else { + // ### Handle other types here } - // ### More to do here, surely: e.g. wiring into the team mkws.debug("made widget(team=" + team + ", type=" + type + ", node=" + node); + return that; + + + // Functions follow for promoting the regular widget object into + // widgets of specific types. These could be moved outside of the + // widget object, or even into their own source files. function promoteTargets() { - mkws.queue("targets").subscribe(function(data) { + team.queue("targets").subscribe(function(data) { if (node.length === 0) alert("huh?!"); var table ='' + @@ -214,7 +200,18 @@ function widget($, team, type, node) { }); } - return that; + + function promoteStat() { + team.queue("stat").subscribe(function(data) { + if (node.length === 0) alert("huh?!"); + + $(node).html('' + M('Status info') + '' + + ' -- ' + + '' + M('Active clients') + ': ' + data.activeclients + '/' + data.clients + '' + + ' -- ' + + '' + M('Retrieved records') + ': ' + data.records + '/' + data.hits + ''); + }); + } } @@ -229,6 +226,7 @@ function widget($, team, type, node) { function team($, teamName) { var that = {}; var m_teamName = teamName; + that.name = function() { return m_teamName; } var m_submitted = false; var m_query; // initially undefined var m_sort; // will be set below @@ -281,33 +279,26 @@ function team($, teamName) { // // pz2.js event handlers: // - function onInit(teamName) { + function onInit() { debug("init"); m_paz.stat(); m_paz.bytarget(); } - function onBytarget(data, teamName) { + function onBytarget(data) { debug("target"); - mkws.queue("targets").publish(data); + queue("targets").publish(data); } - function onStat(data, teamName) { + function onStat(data) { debug("stat"); - var node = findnode('.mkwsStat'); - if (node.length === 0) return; - - node.html('' + M('Status info') + '' + - ' -- ' + - '' + M('Active clients') + ': ' + data.activeclients + '/' + data.clients + '' + - ' -- ' + - '' + M('Retrieved records') + ': ' + data.records + '/' + data.hits + ''); + queue("stat").publish(data); } - function onTerm(data, teamName) { + function onTerm(data) { debug("term"); var node = findnode(".mkwsTermlists"); if (node.length == 0) return; @@ -378,9 +369,10 @@ function team($, teamName) { var detRecordDiv = document.getElementById('mkwsDet_' + teamName + '_' + data.recid); if (detRecordDiv) return; m_curDetRecData = data; + // Can't use jQuery's $('#x') syntax to find this ID, because it contains spaces. var recordDiv = document.getElementById('mkwsRecdiv_' + teamName + '_' + m_curDetRecData.recid); var html = renderDetails(m_curDetRecData); - recordDiv.innerHTML += html; + $(recordDiv).append(html); } @@ -1179,6 +1171,29 @@ function team($, teamName) { } + // The following PubSub code is modified from the jQuery manual: + // https://api.jquery.com/jQuery.Callbacks/ + // + // Use as: + // team.queue("eventName").subscribe(function(param1, param2 ...) { ... }); + // team.queue("eventName").publish(arg1, arg2, ...); + + var queues = {}; + var queue = function(id) { + if (!queues[id]) { + var callbacks = $.Callbacks(); + queues[id] = { + publish: callbacks.fire, + subscribe: callbacks.add, + unsubscribe: callbacks.remove + }; + } + return queues[id]; + } + + that.queue = queue; + + // main (function() { try {