X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fmkws-team.js;h=adf1acfc199c4ea61cf476e98d77871d84e9edf4;hb=c3e181ab73125d1a57d6cb880fd958be8ec8b051;hp=c26ab041a25abcba5fc7b34ae792496489ae7eff;hpb=094982971aed89925c9e8e3f11e49b4cdd9905db;p=mkws-moved-to-github.git diff --git a/src/mkws-team.js b/src/mkws-team.js index c26ab04..adf1acf 100644 --- a/src/mkws-team.js +++ b/src/mkws-team.js @@ -27,6 +27,7 @@ function team($, teamName) { }; var m_paz; // will be initialised below var m_template = {}; + var m_config = Object.create(mkws.config); that.toString = function() { return '[Team ' + teamName + ']'; }; @@ -39,41 +40,66 @@ function team($, teamName) { that.currentRecordId = function() { return m_currentRecordId; }; that.currentRecordData = function() { return m_currentRecordData; }; that.filters = function() { return m_filters; }; + that.config = function() { return m_config; }; // Accessor methods for individual widgets: writers that.set_sortOrder = function(val) { m_sortOrder = val }; that.set_perpage = function(val) { m_perpage = val }; + // 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 = {}; + function queue(id) { + if (!queues[id]) { + var callbacks = $.Callbacks(); + queues[id] = { + publish: callbacks.fire, + subscribe: callbacks.add, + unsubscribe: callbacks.remove + }; + } + return queues[id]; + }; + that.queue = queue; + + function log(s) { var now = $.now(); var timestamp = (((now - m_logTime.start)/1000).toFixed(3) + " (+" + ((now - m_logTime.last)/1000).toFixed(3) + ") "); m_logTime.last = now; mkws.log(m_teamName + ": " + timestamp + s); + that.queue("log").publish(m_teamName, timestamp, s); } that.log = log; + log("start running MKWS"); - m_sortOrder = mkws_config.sort_default; - m_perpage = mkws_config.perpage_default; + m_sortOrder = m_config.sort_default; + m_perpage = m_config.perpage_default; log("Create main pz2 object"); // create a parameters array and pass it to the pz2's constructor // then register the form submit event with the pz2.search function // autoInit is set to true on default m_paz = new pz2({ "windowid": teamName, - "pazpar2path": mkws_config.pazpar2_url, - "usesessions" : mkws_config.use_service_proxy ? false : true, + "pazpar2path": m_config.pazpar2_url, + "usesessions" : m_config.use_service_proxy ? false : true, "oninit": onInit, "onbytarget": onBytarget, "onstat": onStat, - "onterm": (mkws_config.facets.length ? onTerm : undefined), + "onterm": (m_config.facets.length ? onTerm : undefined), "onshow": onShow, "onrecord": onRecord, "showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way - "termlist": mkws_config.facets.join(',') + "termlist": m_config.facets.join(',') }); @@ -234,7 +260,7 @@ function team($, teamName) { { log("newSearch: " + query); - if (mkws_config.use_service_proxy && !mkws.authenticated) { + if (m_config.use_service_proxy && !mkws.authenticated) { alert("searching before authentication"); return; } @@ -361,13 +387,13 @@ function team($, teamName) { */ function mkwsHtmlAll() { mkwsSetLang(); - if (mkws_config.show_lang) + if (m_config.show_lang) mkwsHtmlLang(); log("HTML search form"); findnode('.mkwsSearch').html('\
\ - \ + \ \
'); @@ -402,10 +428,10 @@ function team($, teamName) { '); var ranking_data = '
'; - if (mkws_config.show_sort) { + if (m_config.show_sort) { ranking_data += M('Sort by') + ' ' + mkwsHtmlSort() + ' '; } - if (mkws_config.show_perpage) { + if (m_config.show_perpage) { ranking_data += M('and show') + ' ' + mkwsHtmlPerpage() + ' ' + M('per page') + '.'; } ranking_data += '
'; @@ -430,26 +456,26 @@ function team($, teamName) { function mkwsSetLang() { - var lang = getParameterByName("lang") || mkws_config.lang; + var lang = getParameterByName("lang") || m_config.lang; if (!lang || !mkws.locale_lang[lang]) { - mkws_config.lang = "" + m_config.lang = "" } else { - mkws_config.lang = lang; + m_config.lang = lang; } - log("Locale language: " + (mkws_config.lang ? mkws_config.lang : "none")); - return mkws_config.lang; + log("Locale language: " + (m_config.lang ? m_config.lang : "none")); + return m_config.lang; } /* create locale language menu */ function mkwsHtmlLang() { var lang_default = "en"; - var lang = mkws_config.lang || lang_default; + var lang = m_config.lang || lang_default; var list = []; /* display a list of configured languages, or all */ - var lang_options = mkws_config.lang_options || []; + var lang_options = m_config.lang_options || []; var toBeIncluded = {}; for (var i = 0; i < lang_options.length; i++) { toBeIncluded[lang_options[i]] = true; @@ -489,8 +515,8 @@ function team($, teamName) { log("HTML sort, m_sortOrder = '" + m_sortOrder + "'"); var sort_html = ''; - for(var i = 0; i < mkws_config.perpage_options.length; i++) { - var key = mkws_config.perpage_options[i]; + for(var i = 0; i < m_config.perpage_options.length; i++) { + var key = m_config.perpage_options[i]; perpage_html += '