mkws.registerWidgetType('records', function() {
var that = this;
var team = this.team;
- var m_data;
- var m_needRedraw = false;
- 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);
- if (m_needRedraw) {
- for (var i = 0; i < m_data.hits.length; i++) {
- var hit = m_data.hits[i];
+ if (m_dataToRedraw) {
+ for (var i = 0; i < m_dataToRedraw.hits.length; i++) {
+ var hit = m_dataToRedraw.hits[i];
hit.detailLinkId = team.recordElementId(hit.recid[0]);
hit.detailClick = "mkws.showDetails('" + team.name() + "', '" + hit.recid[0] + "');return false;";
hit.containerClass = "mkws-summary mkwsSummary mkws-team-" + team.name();
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_data.hits}, that.config.template_vars);
+ var tdata = $.extend({}, {"hits": m_dataToRedraw.hits}, that.config.template_vars);
that.node.html(template(tdata, {"partials":{"summary":summaryPartial}}));
}
- m_needRedraw = false;
+ m_dataToRedraw = null;
}
- function setRecordData(data) {
- m_data = data;
- m_needRedraw = true;
+ var m_frozen = false;
+ this.team.queue("records").subscribe(function(data) {
+ m_dataToRedraw = data;
if (!m_frozen) {
refreshRecordData();
}
- }
-
- this.team.queue("records").subscribe(setRecordData);
+ });
- this.node.mouseenter(function() {
- that.info("freezing display records");
- that.node.css('opacity', 0.5);
+ var m_timer;
+ this.node.mousemove(function() {
+ 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);
});
- this.node.mouseleave(function() {
- that.info("refreshing records");
+ function unfreezeRecordDisplay() {
+ clearTimeout(m_timer);
that.node.css('opacity', 1);
m_frozen = false;
refreshRecordData();
- });
-
-/*
- var m_busy = false;
- this.node.mousemove(function() {
- if (!m_busy) {
- m_busy = true;
- that.info("making semi-transparent in 0.001 s");
- that.node.fadeTo(1, 0.5, function() {
- that.info("making opaque in 2 s");
- that.node.fadeTo(2000, 1, function() {
- that.info("done making opaque");
- m_busy = false;
- });
- });
- }
- });
-*/
+ }
+ this.node.mouseleave(unfreezeRecordDisplay);
that.autosearch();
});
var team = this.team;
this.node.submit(function() {
var val = team.widget('query').value();
- team.newSearch(val);
+ team.newSearch(this, val);
return false;
});
});