X-Git-Url: http://git.indexdata.com/?p=mkws-moved-to-github.git;a=blobdiff_plain;f=src%2Fmkws-widget-main.js;h=017ce65c109fdf0882f00cf064014b9401efe149;hp=53e2f5c2e8ac12c19be28d12877c5970eae7ef08;hb=ec8afe26d4ebd3b3097515c42b19a356c4481a39;hpb=6bd6b79fe02808c9cbc19c44f7d8355637e13fb3 diff --git a/src/mkws-widget-main.js b/src/mkws-widget-main.js index 53e2f5c..017ce65 100644 --- a/src/mkws-widget-main.js +++ b/src/mkws-widget-main.js @@ -19,15 +19,18 @@ mkws.registerWidgetType('targets', function() { var cleandata = []; for (var i = 0; i < data.length; i++) { var cur = {}; + cur.name = data[i].name; cur.id = data[i].id; cur.hits = data[i].hits; cur.diagnostic = data[i].diagnostic; cur.message = data[i].message; cur.records = data[i].records; - cur.state = data[i].state; + cur.state = data[i].state.replace(/^Client_/, ''); cleandata.push(cur); } + cleandata.sort(function(a,b) { return a.name.localeCompare(b.name) }); + var template = that.team.loadTemplate(that.config.template || "targets"); that.node.html(template({data: cleandata})); }); @@ -100,7 +103,6 @@ mkws.registerWidgetType('details', function() { }); } this.team.queue("record").subscribe(function(data) { - console.log(data); if ($.inArray(recid, data.recid) > -1) { var template = that.team.loadTemplate(that.config.template || "details"); that.node.html(template(data)); @@ -111,30 +113,69 @@ 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); } + }); - this.team.queue("records").subscribe(function(data) { - for (var i = 0; i < data.hits.length; i++) { - var hit = data.hits[i]; - that.team.queue("record").publish(hit); - 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.containerClass += " " + hit.detailLinkId; - // ### At some point, we may be able to move the - // m_currentRecordId and m_currentRecordData members - // from the team object into this widget. - if (hit.recid == team.currentRecordId()) { - if (team.currentRecordData()) { - hit.renderedDetails = team.renderDetails(team.currentRecordData()); - } + function refreshRecordData() { + that.node.css('opacity', 1); + + 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.containerClass += " " + hit.detailLinkId; + // ### At some point, we may be able to move the + // m_currentRecordId and m_currentRecordData members + // from the team object into this widget. + if (hit.recid == team.currentRecordId()) { + if (team.currentRecordData()) { + hit.renderedDetails = team.renderDetails(team.currentRecordData()); + } + } } + 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); + that.node.html(template(tdata, {"partials":{"summary":summaryPartial}})); } - var template = team.loadTemplate(that.config.template || "records"); - var summaryPartial = team.loadTemplate("summary"); - var tdata = $.extend({}, {"hits": data.hits}, that.config.template_vars); - that.node.html(template(tdata, {"partials":{"summary":summaryPartial}})); + + m_dataToRedraw = null; + } + + function setRecordData(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); + m_frozen = true; + clearTimeout(m_timer); + m_timer = setTimeout(unfreezeRecordDisplay, 1000); }); + function unfreezeRecordDisplay() { + clearTimeout(m_timer); + that.info("refreshing records"); + that.node.css('opacity', 1); + m_frozen = false; + refreshRecordData(); + } + this.node.mouseleave(unfreezeRecordDisplay); + that.autosearch(); }); @@ -143,7 +184,7 @@ mkws.registerWidgetType('navi', function() { var that = this; var teamName = this.team.name(); - this.team.queue("navi").subscribe(function() { + this.team.queue("searchtriggered").subscribe(function() { var filters = that.team.filters(); var output = {filters:[]}; @@ -222,7 +263,6 @@ mkws.registerWidgetType('switch', function() { mkws.registerWidgetType('search', function() { var output = {}; output.team = this.team.name(); - output.queryWidth = this.config.query_width; var template = this.team.loadTemplate(this.config.template || "search"); this.node.html(template(output)); }); @@ -254,18 +294,18 @@ mkws.registerWidgetType('ranking', function() { output.showPerPage = this.config.show_perpage; var order = this.team.sortOrder(); - this.log("making sort, sortOrder = '" + order + "'"); + this.info("making sort, sortOrder = '" + order + "'"); for (var i = 0; i < this.config.sort_options.length; i++) { var cur = {}; var opt = this.config.sort_options[i]; cur.key = opt[0]; - cur.label = opt.length == 1 ? opt[0] : opt[1]; + cur.label = opt.length == 1 ? opt[0] : mkws.M(opt[1]); if (order == cur.key || order == cur.label) cur.selected = true; output.sort.push(cur); } var perpage = this.team.perpage(); - this.log("making perpage, perpage = " + perpage); + this.info("making perpage, perpage = " + perpage); for(var i = 0; i < this.config.perpage_options.length; i++) { var cur = {}; cur.perPage = this.config.perpage_options[i]; @@ -313,7 +353,7 @@ mkws.registerWidgetType('lang', function() { list.push(cur); } - this.log("language menu: " + list.join(", ")); + this.info("language menu: " + list.join(", ")); var template = this.team.loadTemplate(this.config.template || "lang"); this.node.html(template({languages: list})); @@ -358,7 +398,7 @@ mkws.registerWidgetType('config', function() { for (var name in c) { if (c.hasOwnProperty(name)) { this.team.config[name] = c[name]; - this.log(this + " copied property " + name + "='" + c[name] + "' up to team"); + this.info(this + " copied property " + name + "='" + c[name] + "' up to team"); } } }); @@ -378,6 +418,24 @@ mkws.registerWidgetType('progress', function() { }); +mkws.registerWidgetType('waiting', function() { + var that = this; + + this.node.css("visibility", "hidden"); + var template = that.team.loadTemplate(that.config.template || "waiting"); + this.node.html(template({ + src: this.config.src || "http://mkws.indexdata.com/progress.gif" + })); + + this.team.queue("searchtriggered").subscribe(function(data) { + that.node.css("visibility", "visible"); + }); + this.team.queue("complete").subscribe(function(n) { + that.node.css("visibility", "hidden"); + }); +}); + + // Some elements have mkws* classes that makes them appear as widgets // -- for example, because we want to style them using CSS -- but have // no actual functionality. We register these to prevent ignorable