X-Git-Url: http://git.indexdata.com/?p=mkws-moved-to-github.git;a=blobdiff_plain;f=src%2Fmkws-widget.js;h=4cace293c2025351d227161f2968715517153d08;hp=1a009b92728e531e15c58d8e61e9716d8051d8cd;hb=058ce4a204a9ce4d63b2d319037f60cd9f94ff1b;hpb=f944d2112f977ffe31545ceaee8a1ebeb1e128d8 diff --git a/src/mkws-widget.js b/src/mkws-widget.js index 1a009b9..4cace29 100644 --- a/src/mkws-widget.js +++ b/src/mkws-widget.js @@ -13,10 +13,12 @@ mkws.makeWidget = function($, team, type, node) { config: mkws.objectInheritingFrom(team.config) }; - function log(s) { - team.log(s); - } - that.log = log; + that.trace = team.trace; + that.debug = team.debug; + that.info = team.info; + that.warn = team.warn; + that.error = team.error; + that.fatal = team.fatal; that.toString = function() { return '[Widget ' + team.name() + ':' + type + ']'; @@ -38,12 +40,12 @@ mkws.makeWidget = function($, team, type, node) { for (var name in this.config) { if (this.config.hasOwnProperty(name)) { attrs[name] = this.config[name]; - log(this + " copied property " + name + "='" + attrs[name] + "' to " + type + " subwidget"); + this.info(this + " copied property " + name + "='" + attrs[name] + "' to " + type + " subwidget"); } } for (var name in overrides) { - log(this + " overrode property " + name + "='" + overrides[name] + "' (was '" + attrs[name] + "') for " + type + " subwidget"); + this.info(this + " overrode property " + name + "='" + overrides[name] + "' (was '" + attrs[name] + "') for " + type + " subwidget"); attrs[name] = overrides[name]; } @@ -51,7 +53,7 @@ mkws.makeWidget = function($, team, type, node) { for (var name in defaults) { if (!attrs[name]) { attrs[name] = defaults[name]; - log(this + " fell back to default property " + name + "='" + attrs[name] + "' for " + type + " subwidget"); + this.info(this + " fell back to default property " + name + "='" + attrs[name] + "' for " + type + " subwidget"); } } } @@ -69,23 +71,27 @@ mkws.makeWidget = function($, team, type, node) { function expandValue(val) { if (val.match(/^!param!/)) { var param = val.replace(/^!param!/, ''); + var optional = param.match(/^\?/); + if (optional) { + param = param.replace(/^\?/, ''); + } val = mkws.getParameterByName(param); - log("obtained val '" + val + "' from param '" + param + "'"); - if (!val) { + that.info("obtained val '" + val + "' from param '" + param + "'"); + if (!val && !optional) { alert("This page has a MasterKey widget that needs a val specified by the '" + param + "' parameter"); } } else if (val.match(/^!path!/)) { var index = val.replace(/^!path!/, ''); var path = window.location.pathname.split('/'); val = path[path.length - index]; - log("obtained val '" + val + "' from path-component '" + index + "'"); + that.info("obtained val '" + val + "' from path-component '" + index + "'"); if (!val) { alert("This page has a MasterKey widget that needs a val specified by the path-component " + index); } } else if (val.match(/^!var!/)) { var name = val.replace(/^!var!/, ''); val = window[name]; // It's ridiculous that this works - log("obtained val '" + val + "' from variable '" + name + "'"); + that.info("obtained val '" + val + "' from variable '" + name + "'"); if (!val) { alert("This page has a MasterKey widget that needs a val specified by the '" + name + "' variable"); } @@ -98,17 +104,9 @@ mkws.makeWidget = function($, team, type, node) { var that = this; var query = this.config.autosearch; if (query) { - var old = this.team.config.query; - if (!old) { - // Stash this for subsequent inspection - this.team.config.query = query; - } else if (old === query) { - this.log("duplicate autosearch: '" + query + "': ignoring"); - return; - } else { - this.log("conflicting autosearch: '" + query + "' vs '" + old + "': ignoring"); - return; - } + // Should do this more elegantly with message passing + var widget = this.team.widget('query'); + if (widget) { widget.node.val(query); } this.team.queue("ready").subscribe(function() { // Postpone testing for the configuration items: these are not @@ -131,7 +129,7 @@ mkws.makeWidget = function($, team, type, node) { if (limit) s += " limited by '" + limit + "'"; if (targets) s += " in targets '" + targets + "'"; if (targetfilter) s += " constrained by targetfilter '" + targetfilter + "'"; - that.log(s); + that.info(s); that.team.newSearch(query, sortOrder, maxrecs, perpage, limit, targets, targetfilter); }); @@ -155,12 +153,12 @@ mkws.makeWidget = function($, team, type, node) { var val = expandValue(a.value); if (a.name === 'data-mkws-config') { // Treat as a JSON fragment configuring just this widget - log(node + ": parsing config fragment '" + val + "'"); + this.info(node + ": parsing config fragment '" + val + "'"); var data; try { data = $.parseJSON(val); for (var key in data) { - log(node + ": adding config element " + key + "='" + data[key] + "'"); + this.info(node + ": adding config element " + key + "='" + data[key] + "'"); that.config[key] = data[key]; } } catch (err) { @@ -169,21 +167,21 @@ mkws.makeWidget = function($, team, type, node) { } else if (a.name.match (/^data-mkws-/)) { var name = a.name.replace(/^data-mkws-/, '') that.config[name] = val; - log(that + ": set data-mkws attribute " + name + "='" + val + "'"); + this.info(that + ": set data-mkws attribute " + name + "='" + val + "'"); } else if (!ignoreAttrs[a.name]) { that.config[a.name] = val; - log(that + ": set regular attribute " + a.name + "='" + val + "'"); + this.info(that + ": set regular attribute " + a.name + "='" + val + "'"); } } var fn = mkws.promotionFunction(type); if (fn) { fn.call(that); - log("made " + type + " widget(node=" + node + ")"); + this.info("made " + type + " widget(node=" + node + ")"); } else if (type.match(/-[Cc]ontainer-(narrow|wide)$/)) { // Not really a widget: no need to log its lack of promotion } else { - log("made UNPROMOTED widget(type=" + type + ", node=" + node + ")"); + this.info("made UNPROMOTED widget(type=" + type + ", node=" + node + ")"); } return that;