Part of ACREP-80: new 'widget' parameter to team.newSearch
[mkws-moved-to-github.git] / src / mkws-widget-main.js
index 017ce65..2d47617 100644 (file)
@@ -113,14 +113,13 @@ mkws.registerWidgetType('details', function() {
 mkws.registerWidgetType('records', function() {
   var that = this;
   var team = this.team;
-  var m_dataToRedraw = null;
-  var m_frozen = false;
 
   this.team.queue("searchtriggered").subscribe(function() {
     var op = that.config.newsearch_opacity;
     if (op !== undefined) { that.node.fadeTo(500, op); }
   });
 
+  var m_dataToRedraw = null;
   function refreshRecordData() {
     that.node.css('opacity', 1);
 
@@ -139,7 +138,26 @@ mkws.registerWidgetType('records', function() {
             hit.renderedDetails = team.renderDetails(team.currentRecordData());
           } 
         }
+
+        var urls = hit['md-electronic-url'];
+        if (urls) {
+          var bestLink = null;
+          var otherLinks = [];
+          for (var j = 0; j < urls.length; j++) {
+            var url = urls[j];
+            if (!url.match(/^(https?:)?\/\//)) {
+              that.warn("link '" + url + "' is not a valid URL");
+            } else if (!bestLink) {
+              bestLink = url;
+            } else {
+              otherLinks.push(url);
+            }
+          }
+          hit.bestLink = bestLink;
+          hit.otherLinks = otherLinks;
+        }
       }
+
       var template = team.loadTemplate(that.config.template || "records");
       var summaryPartial = team.loadTemplate(that.config['summary-template'] || "summary");
       var tdata = $.extend({}, {"hits": m_dataToRedraw.hits}, that.config.template_vars);
@@ -149,19 +167,18 @@ mkws.registerWidgetType('records', function() {
     m_dataToRedraw = null;
   }
 
-  function setRecordData(data) {
+  var m_frozen = false;
+  this.team.queue("records").subscribe(function(data) {
     m_dataToRedraw = data;
     if (!m_frozen) {
       refreshRecordData();
     }
-  }
-
-  this.team.queue("records").subscribe(setRecordData);
+  });
 
   var m_timer;
   this.node.mousemove(function() {
-    that.info("freezing display records");
-    that.node.css('opacity', 0.5);
+    var op = that.config.freeze_opacity;
+    if (op !== undefined) { that.node.css('opacity', op); }
     m_frozen = true;
     clearTimeout(m_timer);
     m_timer = setTimeout(unfreezeRecordDisplay, 1000);
@@ -169,7 +186,6 @@ mkws.registerWidgetType('records', function() {
 
   function unfreezeRecordDisplay() {
     clearTimeout(m_timer);
-    that.info("refreshing records");
     that.node.css('opacity', 1);
     m_frozen = false;
     refreshRecordData();
@@ -272,7 +288,7 @@ mkws.registerWidgetType('search-form', function() {
   var team = this.team;
   this.node.submit(function() {
     var val = team.widget('query').value();
-    team.newSearch(val);
+    team.newSearch(this, val);
     return false;
   });
 });