X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Fmkws-widget-main.js;h=7fe78efff3d9318d96834776ea8b9c47d2d3c35c;hb=1be95beef1497132daf29e4f7b3bc9249247fd70;hp=be2f588853c5686ccced5497910447246ea95e14;hpb=462ef80604c5f016f8a70e3a87ecbc90f33cc5d9;p=mkws-moved-to-github.git diff --git a/src/mkws-widget-main.js b/src/mkws-widget-main.js index be2f588..7fe78ef 100644 --- a/src/mkws-widget-main.js +++ b/src/mkws-widget-main.js @@ -1,9 +1,11 @@ +(function($) { // jQuery wrapper + // Functions follow for promoting the regular widget object into // widgets of specific types. These could be moved into their own // source files. -mkws.registerWidgetType('Targets', function() { +mkws.registerWidgetType('targets', function() { if (!this.config.show_switch) return; var that = this; @@ -25,22 +27,22 @@ mkws.registerWidgetType('Targets', function() { cleandata.push(cur); } - var template = that.team.loadTemplate(that.config.template || "Targets"); + var template = that.team.loadTemplate(that.config.template || "targets"); that.node.html(template({data: cleandata})); }); }); -mkws.registerWidgetType('Stat', function() { +mkws.registerWidgetType('stat', function() { var that = this; this.team.queue("stat").subscribe(function(data) { - var template = that.team.loadTemplate(that.config.template || "Stat"); + var template = that.team.loadTemplate(that.config.template || "stat"); that.node.html(template(data)); }); }); -mkws.registerWidgetType('Pager', function() { +mkws.registerWidgetType('pager', function() { var that = this; var M = mkws.M; @@ -53,7 +55,7 @@ mkws.registerWidgetType('Pager', function() { output.found = data.total; //client indexes pages from 1 but pz2 from 0 - var onsides = 6; + var onsides = 5; var pages = Math.ceil(that.team.totalRecordCount() / that.team.perpage()); var currentPage = that.team.currentPage(); @@ -81,13 +83,32 @@ mkws.registerWidgetType('Pager', function() { if (pages - currentPage > 0) output.nextClick = "mkws.pagerNext(\'" + teamName + "\')"; - var template = that.team.loadTemplate(that.config.template || "Pager"); + var template = that.team.loadTemplate(that.config.template || "pager"); that.node.html(template(output)); }); }); +mkws.registerWidgetType('details', function() { + var that = this; + var recid = that.node.attr("data-mkws-recid"); + if (this.team.gotRecords()) { + that.team.fetchDetails(recid); + } else { + this.team.queue("firstrecords").subscribe(function() { + that.team.fetchDetails(recid); + }); + } + 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)); + } + }); + that.autosearch(); +}); -mkws.registerWidgetType('Records', function() { +mkws.registerWidgetType('records', function() { var that = this; var team = this.team; @@ -96,8 +117,8 @@ mkws.registerWidgetType('Records', function() { 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 = "mkwsSummary mkwsTeam_" + team.name(); + 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 @@ -105,42 +126,45 @@ mkws.registerWidgetType('Records', function() { if (hit.recid == team.currentRecordId()) { if (team.currentRecordData()) { hit.renderedDetails = team.renderDetails(team.currentRecordData()); - console.log(hit.renderedDetails); } } } - var template = team.loadTemplate(that.config.template || "Records"); - var targs = $.extend({}, {"hits": data.hits}, that.config.template_vars); - that.node.html(template(targs)); + 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}})); }); that.autosearch(); }); -mkws.registerWidgetType('Navi', function() { +mkws.registerWidgetType('navi', function() { var that = this; var teamName = this.team.name(); - var M = mkws.M; this.team.queue("navi").subscribe(function() { var filters = that.team.filters(); - var text = ""; + var output = {filters:[]}; filters.visitTargets(function(id, name) { - if (text) text += " | "; - text += M('source') + ': ' + name + ''; + var cur = {}; + cur.facet = 'source'; + cur.value = name; + cur.click = "mkws.delimitTarget('" + teamName + "', '" + id + "'); return false;"; + output.filters.push(cur); }); filters.visitFields(function(field, value) { - if (text) text += " | "; - text += M(field) + ': ' + value + ''; + var cur = {}; + cur.facet = field; + cur.value = value; + cur.click = "mkws.delimitQuery('" + teamName + "', '" + field + "', '" + value + "'" + ");return false;"; + output.filters.push(cur); }); - that.node.html(text); + var template = that.team.loadTemplate(that.config.template || "navi"); + that.node.html(template(output)); }); }); @@ -148,7 +172,7 @@ mkws.registerWidgetType('Navi', function() { // It seems this and the Perpage widget doen't need to subscribe to // anything, since they produce events rather than consuming them. // -mkws.registerWidgetType('Sort', function() { +mkws.registerWidgetType('sort', function() { var that = this; this.node.change(function() { @@ -161,7 +185,7 @@ mkws.registerWidgetType('Sort', function() { }); -mkws.registerWidgetType('Perpage', function() { +mkws.registerWidgetType('per-page', function() { var that = this; this.node.change(function() { @@ -174,135 +198,87 @@ mkws.registerWidgetType('Perpage', function() { }); -mkws.registerWidgetType('Done', function() { +mkws.registerWidgetType('done', function() { var that = this; this.team.queue("complete").subscribe(function(n) { - var template = that.team.loadTemplate(that.config.template || "Done"); + var template = that.team.loadTemplate(that.config.template || "done"); that.node.html(template({count: n})); }); }); -mkws.registerWidgetType('Switch', function() { +mkws.registerWidgetType('switch', function() { if (!this.config.show_switch) return; var tname = this.team.name(); var output = {}; output.recordClick = "mkws.switchView(\'" + tname + "\', \'records\')"; output.targetClick = "mkws.switchView(\'" + tname + "\', \'targets\')"; - var template = this.team.loadTemplate(this.config.template || "Switch"); + var template = this.team.loadTemplate(this.config.template || "switch"); this.node.html(template(output)); this.hideWhenNarrow(); }); -mkws.registerWidgetType('Search', 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"); + var template = this.team.loadTemplate(this.config.template || "search"); this.node.html(template(output)); }); -mkws.registerWidgetType('SearchForm', function() { +mkws.registerWidgetType('search-form', function() { var team = this.team; this.node.submit(function() { - var val = team.widget('Query').value(); + var val = team.widget('query').value(); team.newSearch(val); return false; }); }); -mkws.registerWidgetType('Results', function() { - var tname = this.team.name(); - - this.node.html('\ -
\ - \ - | \ -\ - \ - \ - \ - \ - | \ -
\ - \ - | \ -