Use mkws.getParameterByName
[mkws-moved-to-github.git] / src / mkws-widgets.js
index c2795db..3a24b0e 100644 (file)
@@ -27,10 +27,15 @@ function widget($, team, type, node) {
        if (a.name === 'data-mkws-config') {
            // Treat as a JSON fragment configuring just this widget
            log(node + ": parsing config fragment '" + a.value + "'");
-           var data = $.parseJSON(a.value);
-           for (var key in data) {
-               log(node + ": adding config element " + key + "='" + data[key] + "'");
-               that.config[key] = data[key];
+           var data;
+           try {
+               data = $.parseJSON(a.value);
+               for (var key in data) {
+                   log(node + ": adding config element " + key + "='" + data[key] + "'");
+                   that.config[key] = data[key];
+               }
+           } catch (err) {
+               alert("Can't parse " + node + " data-mkws-config as JSON: " + a.value);
            }
        } else if (a.name.match (/^data-mkws-/)) {
            var name = a.name.replace(/^data-mkws-/, '')
@@ -260,6 +265,37 @@ mkws.registerWidgetType('Records', function() {
            return template(hit);
        }
     });
+
+    var query = that.config.autosearch;
+    if (query) {
+       if (query.match(/^!param!/)) {
+           var param = query.replace(/^!param!/, '');
+           query = mkws.getParameterByName(param);
+           that.log("obtained query '" + query + "' from param '" + param + "'");
+           if (!query) {
+               alert("This page has a MasterKey widget that needs a query specified by the '" + param + "' parameter");
+           }
+       } else if (query.match(/^!path!/)) {
+           var index = query.replace(/^!path!/, '');
+           var path = window.location.pathname.split('/');
+           query = path[path.length - index];
+           that.log("obtained query '" + query + "' from path-component '" + index + "'");
+           if (!query) {
+               alert("This page has a MasterKey widget that needs a query specified by the path-component " + index);
+           }
+       }
+
+       this.team.queue("ready").subscribe(function() {
+           var sortOrder = that.config.sort;
+           var targets = that.config.targets;
+           var s = "running auto search: '" + query + "'";
+           if (sortOrder) s += " sorted by '" + sortOrder + "'";
+           if (targets) s += " in targets '" + targets + "'";
+           that.log(s);
+
+           that.team.newSearch(query, sortOrder, targets);
+       });
+    }
 });