From 0cd4e973e16228be1dcf4602f453e11073e780b7 Mon Sep 17 00:00:00 2001 From: Mike Taylor Date: Wed, 30 Apr 2014 09:03:10 +0100 Subject: [PATCH] Rename mkws-widgets.js to mkws-widget-main.js --- src/mkws-widget-main.js | 415 +++++++++++++++++++++++++++++++++++++++++++++++ src/mkws-widgets.js | 415 ----------------------------------------------- 2 files changed, 415 insertions(+), 415 deletions(-) create mode 100644 src/mkws-widget-main.js delete mode 100644 src/mkws-widgets.js diff --git a/src/mkws-widget-main.js b/src/mkws-widget-main.js new file mode 100644 index 0000000..69d1360 --- /dev/null +++ b/src/mkws-widget-main.js @@ -0,0 +1,415 @@ +// Functions follow for promoting the regular widget object into +// widgets of specific types. These could be moved into their own +// source files. + + +mkws.registerWidgetType('Targets', function() { + var that = this; + var M = mkws.M; + + $(this.node).html('\ +
\ +No information available yet.\ +
'); + $(this.node).css("display", "none"); + + this.team.queue("targets").subscribe(function(data) { + var table ='' + + '' + + '' + + '' + + '' + + '' + + ''; + + for (var i = 0; i < data.length; i++) { + table += ""; + } + + table += '
' + M('Target ID') + '' + M('Hits') + '' + M('Diags') + '' + M('Records') + '' + M('State') + '
" + data[i].id + + "" + data[i].hits + + "" + data[i].diagnostic + + "" + data[i].records + + "" + data[i].state + "
'; + var subnode = $(that.node).children('.mkwsBytarget'); + subnode.html(table); + }); +}); + + +mkws.registerWidgetType('Stat', function() { + var that = this; + var M = mkws.M; + + this.team.queue("stat").subscribe(function(data) { + if (that.node.length === 0) alert("huh?!"); + + $(that.node).html('' + M('Status info') + '' + + ' -- ' + + '' + M('Active clients') + ': ' + data.activeclients + '/' + data.clients + '' + + ' -- ' + + '' + M('Retrieved records') + ': ' + data.records + '/' + data.hits + ''); + }); +}); + + +mkws.registerWidgetType('Pager', function() { + var that = this; + var M = mkws.M; + + this.team.queue("pager").subscribe(function(data) { + $(that.node).html(drawPager(data)) + + function drawPager(data) { + var teamName = that.team.name(); + var s = '
' + M('Displaying') + ': ' + + (data.start + 1) + ' ' + M('to') + ' ' + (data.start + data.num) + + ' ' + M('of') + ' ' + data.merged + ' (' + M('found') + ': ' + + data.total + ')
'; + + //client indexes pages from 1 but pz2 from 0 + var onsides = 6; + var pages = Math.ceil(that.team.totalRecordCount() / that.team.perpage()); + var currentPage = that.team.currentPage(); + + var firstClkbl = (currentPage - onsides > 0) + ? currentPage - onsides + : 1; + + var lastClkbl = firstClkbl + 2*onsides < pages + ? firstClkbl + 2*onsides + : pages; + + var prev = '<< ' + M('Prev') + ' | '; + if (currentPage > 1) + prev = '' + +'<< ' + M('Prev') + ' | '; + + var middle = ''; + for(var i = firstClkbl; i <= lastClkbl; i++) { + var numLabel = i; + if(i == currentPage) + numLabel = '' + i + ''; + + middle += ' ' + + numLabel + ' '; + } + + var next = ' | ' + M('Next') + ' >>'; + if (pages - currentPage > 0) + next = ' | ' + + M('Next') + ' >>'; + + var predots = ''; + if (firstClkbl > 1) + predots = '...'; + + var postdots = ''; + if (lastClkbl < pages) + postdots = '...'; + + s += '
' + + prev + predots + middle + postdots + next + '
'; + + return s; + } + }); +}); + + +mkws.registerWidgetType('Results', function() { + // Nothing to do apart from act as an autosearch trigger + // Contained elements do all the real work + widget.autosearch(this); +}); + + +mkws.registerWidgetType('Records', function() { + var that = this; + var team = this.team; + + this.team.queue("records").subscribe(function(data) { + var html = []; + for (var i = 0; i < data.hits.length; i++) { + var hit = data.hits[i]; + that.team.queue("record").publish(hit); + var divId = team.recordElementId(hit.recid[0]); + html.push('
', renderSummary(hit), '
'); + // ### At some point, we may be able to move the + // m_currentRecordId and m_currentRecordData members + // from the team object into this widget. + if (hit.recid == team.currentRecordId()) { + if (team.currentRecordData()) + html.push(team.renderDetails(team.currentRecordData())); + } + } + $(that.node).html(html.join('')); + + function renderSummary(hit) { + var template = team.loadTemplate(that.config.template || "Summary"); + hit._id = team.recordElementId(hit.recid[0]); + hit._onclick = "mkws.showDetails('" + team.name() + "', '" + hit.recid[0] + "');return false;" + return template(hit); + } + }); + + widget.autosearch(that); +}); + + +mkws.registerWidgetType('Navi', function() { + var that = this; + var teamName = this.team.name(); + var M = mkws.M; + + this.team.queue("navi").subscribe(function() { + var filters = that.team.filters(); + var text = ""; + + filters.visitTargets(function(id, name) { + if (text) text += " | "; + text += M('source') + ': ' + name + ''; + }); + + filters.visitFields(function(field, value) { + if (text) text += " | "; + text += M(field) + ': ' + value + ''; + }); + + $(that.node).html(text); + }); +}); + + +// It seems this and the Perpage widget doen't need to subscribe to +// anything, since they produce events rather than consuming them. +// +mkws.registerWidgetType('Sort', function() { + var that = this; + + $(this.node).change(function() { + that.team.set_sortOrder($(that.node).val()); + if (that.team.submitted()) { + that.team.reShow(); + } + return false; + }); +}); + + +mkws.registerWidgetType('Perpage', function() { + var that = this; + + $(this.node).change(function() { + that.team.set_perpage($(that.node).val()); + if (that.team.submitted()) { + that.team.reShow(); + } + return false; + }); +}); + + +mkws.registerWidgetType('Done', function() { + var that = this; + + this.team.queue("complete").subscribe(function(n) { + $(that.node).html("Search complete: found " + n + " records"); + }); +}); + + +mkws.registerWidgetType('Switch', function() { + var tname = this.team.name(); + $(this.node).html('\ +Records \ +| \ +Targets'); +}); + + +mkws.registerWidgetType('Search', function() { + var tname = this.team.name(); + var M = mkws.M; + + $(this.node).html('\ +
\ + \ + \ +
'); +}); + + +mkws.registerWidgetType('SearchForm', function() { + var team = this.team; + $(this.node).submit(function() { + var val = team.widget('Query').value(); + team.newSearch(val); + return false; + }); +}); + + +mkws.registerWidgetType('Results', function() { + var tname = this.team.name(); + + $(this.node).html('\ +\ + \ + \ + \ + \ + \ + \ + \ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
'); +}); + + +mkws.registerWidgetType('Ranking', function() { + var tname = this.team.name(); + var that = this; + var M = mkws.M; + + var s = '
'; + if (this.config.show_sort) { + s += M('Sort by') + ' ' + mkwsHtmlSort() + ' '; + } + if (this.config.show_perpage) { + s += M('and show') + ' ' + mkwsHtmlPerpage() + ' ' + M('per page') + '.'; + } + s += '
'; + + $(this.node).html(s); + + + function mkwsHtmlSort() { + var order = that.team.sortOrder(); + + that.log("HTML sort, sortOrder = '" + order + "'"); + var sort_html = ''; + + return sort_html; + } + + function mkwsHtmlPerpage() { + var perpage = that.team.perpage(); + + that.log("HTML perpage, perpage = " + perpage); + var perpage_html = ''; + + return perpage_html; + } +}); + + +mkws.registerWidgetType('Lang', function() { + // dynamic URL or static page? /path/foo?query=test + /* create locale language menu */ + if (!this.config.show_lang) return; + + var lang_default = "en"; + var lang = this.config.lang || lang_default; + var list = []; + + /* display a list of configured languages, or all */ + var lang_options = this.config.lang_options || []; + var toBeIncluded = {}; + for (var i = 0; i < lang_options.length; i++) { + toBeIncluded[lang_options[i]] = true; + } + + for (var k in mkws.locale_lang) { + if (toBeIncluded[k] || lang_options.length == 0) + list.push(k); + } + + // add english link + if (lang_options.length == 0 || toBeIncluded[lang_default]) + list.push(lang_default); + + this.log("Language menu for: " + list.join(", ")); + + /* the HTML part */ + var data = ""; + for (var i = 0; i < list.length; i++) { + var l = list[i]; + if (data) + data += ' | '; + + if (lang == l) { + data += ' ' + l + ' '; + } else { + data += ' ' + l + ' ' + } + } + + $(this.node).html(data); + + + // set or re-set "lang" URL parameter + function lang_url(lang) { + var query = location.search; + // no query parameters? done + if (!query) { + return "?lang=" + lang; + } + + // parameter does not exist + if (!query.match(/[\?&]lang=/)) { + return query + "&lang=" + lang; + } + + // replace existing parameter + query = query.replace(/\?lang=([^&#;]*)/, "?lang=" + lang); + query = query.replace(/\&lang=([^&#;]*)/, "&lang=" + lang); + return query; + } +}); + + +mkws.registerWidgetType('MOTD', function() { + var container = this.team.widget('MOTDContainer'); + if (container) { + // Move the MOTD from the provided element down into the container + $(this.node).appendTo(container.node); + } +}); + + diff --git a/src/mkws-widgets.js b/src/mkws-widgets.js deleted file mode 100644 index 69d1360..0000000 --- a/src/mkws-widgets.js +++ /dev/null @@ -1,415 +0,0 @@ -// Functions follow for promoting the regular widget object into -// widgets of specific types. These could be moved into their own -// source files. - - -mkws.registerWidgetType('Targets', function() { - var that = this; - var M = mkws.M; - - $(this.node).html('\ -
\ -No information available yet.\ -
'); - $(this.node).css("display", "none"); - - this.team.queue("targets").subscribe(function(data) { - var table ='' + - '' + - '' + - '' + - '' + - '' + - ''; - - for (var i = 0; i < data.length; i++) { - table += ""; - } - - table += '
' + M('Target ID') + '' + M('Hits') + '' + M('Diags') + '' + M('Records') + '' + M('State') + '
" + data[i].id + - "" + data[i].hits + - "" + data[i].diagnostic + - "" + data[i].records + - "" + data[i].state + "
'; - var subnode = $(that.node).children('.mkwsBytarget'); - subnode.html(table); - }); -}); - - -mkws.registerWidgetType('Stat', function() { - var that = this; - var M = mkws.M; - - this.team.queue("stat").subscribe(function(data) { - if (that.node.length === 0) alert("huh?!"); - - $(that.node).html('' + M('Status info') + '' + - ' -- ' + - '' + M('Active clients') + ': ' + data.activeclients + '/' + data.clients + '' + - ' -- ' + - '' + M('Retrieved records') + ': ' + data.records + '/' + data.hits + ''); - }); -}); - - -mkws.registerWidgetType('Pager', function() { - var that = this; - var M = mkws.M; - - this.team.queue("pager").subscribe(function(data) { - $(that.node).html(drawPager(data)) - - function drawPager(data) { - var teamName = that.team.name(); - var s = '
' + M('Displaying') + ': ' - + (data.start + 1) + ' ' + M('to') + ' ' + (data.start + data.num) + - ' ' + M('of') + ' ' + data.merged + ' (' + M('found') + ': ' - + data.total + ')
'; - - //client indexes pages from 1 but pz2 from 0 - var onsides = 6; - var pages = Math.ceil(that.team.totalRecordCount() / that.team.perpage()); - var currentPage = that.team.currentPage(); - - var firstClkbl = (currentPage - onsides > 0) - ? currentPage - onsides - : 1; - - var lastClkbl = firstClkbl + 2*onsides < pages - ? firstClkbl + 2*onsides - : pages; - - var prev = '<< ' + M('Prev') + ' | '; - if (currentPage > 1) - prev = '' - +'<< ' + M('Prev') + ' | '; - - var middle = ''; - for(var i = firstClkbl; i <= lastClkbl; i++) { - var numLabel = i; - if(i == currentPage) - numLabel = '' + i + ''; - - middle += ' ' - + numLabel + ' '; - } - - var next = ' | ' + M('Next') + ' >>'; - if (pages - currentPage > 0) - next = ' | ' - + M('Next') + ' >>'; - - var predots = ''; - if (firstClkbl > 1) - predots = '...'; - - var postdots = ''; - if (lastClkbl < pages) - postdots = '...'; - - s += '
' - + prev + predots + middle + postdots + next + '
'; - - return s; - } - }); -}); - - -mkws.registerWidgetType('Results', function() { - // Nothing to do apart from act as an autosearch trigger - // Contained elements do all the real work - widget.autosearch(this); -}); - - -mkws.registerWidgetType('Records', function() { - var that = this; - var team = this.team; - - this.team.queue("records").subscribe(function(data) { - var html = []; - for (var i = 0; i < data.hits.length; i++) { - var hit = data.hits[i]; - that.team.queue("record").publish(hit); - var divId = team.recordElementId(hit.recid[0]); - html.push('
', renderSummary(hit), '
'); - // ### At some point, we may be able to move the - // m_currentRecordId and m_currentRecordData members - // from the team object into this widget. - if (hit.recid == team.currentRecordId()) { - if (team.currentRecordData()) - html.push(team.renderDetails(team.currentRecordData())); - } - } - $(that.node).html(html.join('')); - - function renderSummary(hit) { - var template = team.loadTemplate(that.config.template || "Summary"); - hit._id = team.recordElementId(hit.recid[0]); - hit._onclick = "mkws.showDetails('" + team.name() + "', '" + hit.recid[0] + "');return false;" - return template(hit); - } - }); - - widget.autosearch(that); -}); - - -mkws.registerWidgetType('Navi', function() { - var that = this; - var teamName = this.team.name(); - var M = mkws.M; - - this.team.queue("navi").subscribe(function() { - var filters = that.team.filters(); - var text = ""; - - filters.visitTargets(function(id, name) { - if (text) text += " | "; - text += M('source') + ': ' + name + ''; - }); - - filters.visitFields(function(field, value) { - if (text) text += " | "; - text += M(field) + ': ' + value + ''; - }); - - $(that.node).html(text); - }); -}); - - -// It seems this and the Perpage widget doen't need to subscribe to -// anything, since they produce events rather than consuming them. -// -mkws.registerWidgetType('Sort', function() { - var that = this; - - $(this.node).change(function() { - that.team.set_sortOrder($(that.node).val()); - if (that.team.submitted()) { - that.team.reShow(); - } - return false; - }); -}); - - -mkws.registerWidgetType('Perpage', function() { - var that = this; - - $(this.node).change(function() { - that.team.set_perpage($(that.node).val()); - if (that.team.submitted()) { - that.team.reShow(); - } - return false; - }); -}); - - -mkws.registerWidgetType('Done', function() { - var that = this; - - this.team.queue("complete").subscribe(function(n) { - $(that.node).html("Search complete: found " + n + " records"); - }); -}); - - -mkws.registerWidgetType('Switch', function() { - var tname = this.team.name(); - $(this.node).html('\ -Records \ -| \ -Targets'); -}); - - -mkws.registerWidgetType('Search', function() { - var tname = this.team.name(); - var M = mkws.M; - - $(this.node).html('\ -
\ - \ - \ -
'); -}); - - -mkws.registerWidgetType('SearchForm', function() { - var team = this.team; - $(this.node).submit(function() { - var val = team.widget('Query').value(); - team.newSearch(val); - return false; - }); -}); - - -mkws.registerWidgetType('Results', function() { - var tname = this.team.name(); - - $(this.node).html('\ -\ - \ - \ - \ - \ - \ - \ - \ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
'); -}); - - -mkws.registerWidgetType('Ranking', function() { - var tname = this.team.name(); - var that = this; - var M = mkws.M; - - var s = '
'; - if (this.config.show_sort) { - s += M('Sort by') + ' ' + mkwsHtmlSort() + ' '; - } - if (this.config.show_perpage) { - s += M('and show') + ' ' + mkwsHtmlPerpage() + ' ' + M('per page') + '.'; - } - s += '
'; - - $(this.node).html(s); - - - function mkwsHtmlSort() { - var order = that.team.sortOrder(); - - that.log("HTML sort, sortOrder = '" + order + "'"); - var sort_html = ''; - - return sort_html; - } - - function mkwsHtmlPerpage() { - var perpage = that.team.perpage(); - - that.log("HTML perpage, perpage = " + perpage); - var perpage_html = ''; - - return perpage_html; - } -}); - - -mkws.registerWidgetType('Lang', function() { - // dynamic URL or static page? /path/foo?query=test - /* create locale language menu */ - if (!this.config.show_lang) return; - - var lang_default = "en"; - var lang = this.config.lang || lang_default; - var list = []; - - /* display a list of configured languages, or all */ - var lang_options = this.config.lang_options || []; - var toBeIncluded = {}; - for (var i = 0; i < lang_options.length; i++) { - toBeIncluded[lang_options[i]] = true; - } - - for (var k in mkws.locale_lang) { - if (toBeIncluded[k] || lang_options.length == 0) - list.push(k); - } - - // add english link - if (lang_options.length == 0 || toBeIncluded[lang_default]) - list.push(lang_default); - - this.log("Language menu for: " + list.join(", ")); - - /* the HTML part */ - var data = ""; - for (var i = 0; i < list.length; i++) { - var l = list[i]; - if (data) - data += ' | '; - - if (lang == l) { - data += ' ' + l + ' '; - } else { - data += ' ' + l + ' ' - } - } - - $(this.node).html(data); - - - // set or re-set "lang" URL parameter - function lang_url(lang) { - var query = location.search; - // no query parameters? done - if (!query) { - return "?lang=" + lang; - } - - // parameter does not exist - if (!query.match(/[\?&]lang=/)) { - return query + "&lang=" + lang; - } - - // replace existing parameter - query = query.replace(/\?lang=([^&#;]*)/, "?lang=" + lang); - query = query.replace(/\&lang=([^&#;]*)/, "&lang=" + lang); - return query; - } -}); - - -mkws.registerWidgetType('MOTD', function() { - var container = this.team.widget('MOTDContainer'); - if (container) { - // Move the MOTD from the provided element down into the container - $(this.node).appendTo(container.node); - } -}); - - -- 1.7.10.4