From: Wolfram Schneider Date: Mon, 4 Aug 2014 15:46:03 +0000 (+0000) Subject: Merge branch 'master' of ssh://git.indexdata.com:222/home/git/private/mkws X-Git-Tag: 1.0.0~368 X-Git-Url: http://sru.miketaylor.org.uk/?a=commitdiff_plain;h=3dcb0141691c6c4f038fa4c0b006ed9998f35b66;hp=06c250c516a17557842ccf1ce8dd6747f6c8d74d;p=mkws-moved-to-github.git Merge branch 'master' of ssh://git.indexdata.com:222/home/git/private/mkws --- diff --git a/examples/htdocs/surlyauto.html b/examples/htdocs/surlyauto.html new file mode 100644 index 0000000..ef9c436 --- /dev/null +++ b/examples/htdocs/surlyauto.html @@ -0,0 +1,18 @@ + + + + MKWS demo: Multiple autosearching widgets get their own teams + + + + + + +
result will appear here
+
result will appear here
+
result will appear here
+
result will appear here
+ + diff --git a/src/mkws-core.js b/src/mkws-core.js index 04accc8..a3a1ac9 100644 --- a/src/mkws-core.js +++ b/src/mkws-core.js @@ -379,7 +379,26 @@ mkws.pagerNext = function(tname) { } } - if (!teamName) teamName = "AUTO"; + // Widgets without a team are on team "AUTO" + if (!teamName) { + teamName = "AUTO"; + // Autosearch widgets don't join team AUTO if there is already an + // autosearch on the team or the team has otherwise gotten a query + if (node.hasAttribute("autosearch")) { + if (mkws.autoHasAuto || + mkws.teams["AUTO"] && mkws.teams["AUTO"].config["query"]) { + log("AUTO team already has a query, using unique team"); + teamName = "UNIQUE"; + } + mkws.autoHasAuto = true; + } + } + + // Widgets on team "UNIQUE" get a random team + if (teamName === "UNIQUE") { + teamName = Math.floor(Math.random() * 100000000).toString(); + } + callback.call(node, teamName, type); } @@ -523,6 +542,7 @@ mkws.pagerNext = function(tname) { function init(rootsel) { + mkws.autoHasAuto = false; if (!rootsel) var rootsel = ':root'; var saved_config; if (typeof mkws_config === 'undefined') { diff --git a/src/mkws-team.js b/src/mkws-team.js index f4e0c88..a2dd506 100644 --- a/src/mkws-team.js +++ b/src/mkws-team.js @@ -28,9 +28,11 @@ function team($, teamName) { var m_paz; // will be initialised below var m_templateText = {}; // widgets can register templates to be compiled var m_template = {}; // compiled templates, from any source - var m_config = mkws.objectInheritingFrom(mkws.config); var m_widgets = {}; // Maps widget-type to array of widget objects var m_gotRecords = false; + + var config = mkws.objectInheritingFrom(mkws.config); + that.config = config; that.toString = function() { return '[Team ' + teamName + ']'; }; @@ -44,7 +46,6 @@ function team($, teamName) { that.currentRecordId = function() { return m_currentRecordId; }; that.currentRecordData = function() { return m_currentRecordData; }; that.filters = function() { return m_filterSet; }; - that.config = function() { return m_config; }; // Accessor methods for individual widgets: writers that.set_sortOrder = function(val) { m_sortOrder = val }; @@ -86,23 +87,23 @@ function team($, teamName) { log("making new widget team"); - m_sortOrder = m_config.sort_default; - m_perpage = m_config.perpage_default; + m_sortOrder = config.sort_default; + m_perpage = config.perpage_default; // 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": m_config.pazpar2_url, - "usesessions" : m_config.use_service_proxy ? false : true, + "pazpar2path": config.pazpar2_url, + "usesessions" : config.use_service_proxy ? false : true, "oninit": onInit, "onbytarget": onBytarget, "onstat": onStat, - "onterm": (m_config.facets.length ? onTerm : undefined), + "onterm": (config.facets.length ? onTerm : undefined), "onshow": onShow, "onrecord": onRecord, "showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way - "termlist": m_config.facets.join(',') + "termlist": config.facets.join(',') }); log("created main pz2 object"); @@ -257,7 +258,7 @@ function team($, teamName) { function newSearch(query, sortOrder, maxrecs, perpage, limit, targets, torusquery) { log("newSearch: " + query); - if (m_config.use_service_proxy && !mkws.authenticated) { + if (config.use_service_proxy && !mkws.authenticated) { alert("searching before authentication"); return; } diff --git a/src/mkws-widget-main.js b/src/mkws-widget-main.js index d3a13cf..fcffe5b 100644 --- a/src/mkws-widget-main.js +++ b/src/mkws-widget-main.js @@ -413,7 +413,7 @@ mkws.registerWidgetType('Config', function() { var c = this.config; for (var name in c) { if (c.hasOwnProperty(name)) { - this.team.config()[name] = c[name]; + this.team.config[name] = c[name]; this.log(this + " copied property " + name + "='" + c[name] + "' up to team"); } } diff --git a/src/mkws-widget.js b/src/mkws-widget.js index 39513d9..722db5e 100644 --- a/src/mkws-widget.js +++ b/src/mkws-widget.js @@ -10,7 +10,7 @@ function widget($, team, type, node) { team: team, type: type, node: $(node), - config: mkws.objectInheritingFrom(team.config()) + config: mkws.objectInheritingFrom(team.config) }; function log(s) { @@ -98,10 +98,10 @@ function widget($, team, type, node) { var that = this; var query = this.config.autosearch; if (query) { - var old = this.team.config().query; + var old = this.team.config.query; if (!old) { // Stash this for subsequent inspection - this.team.config().query = query; + this.team.config.query = query; } else if (old === query) { this.log("duplicate autosearch: '" + query + "': ignoring"); return;