X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Fmkws-widget-main.js;h=91c2d9311ca8e48a0ac75087e895ed8087bddab6;hb=9d552877ef9bfbb92887942b9ac1870ddd12ba58;hp=a70e7d2ba9bc16db0f753a86ed2284ce16b1392f;hpb=275a65ddb6b53b56d512955c86cd5286f51554a0;p=mkws-moved-to-github.git
diff --git a/src/mkws-widget-main.js b/src/mkws-widget-main.js
index a70e7d2..91c2d93 100644
--- a/src/mkws-widget-main.js
+++ b/src/mkws-widget-main.js
@@ -6,43 +6,34 @@
mkws.registerWidgetType('Targets', function() {
if (!this.config.show_switch) return;
var that = this;
- var M = mkws.M;
- this.jqnode.html('No information available yet.');
- this.jqnode.css("display", "none");
+ this.node.html('No information available yet.');
+ this.node.css("display", "none");
this.team.queue("targets").subscribe(function(data) {
- var table ='
' +
- '' + M('Target ID') + ' ' +
- '' + M('Hits') + ' ' +
- '' + M('Diags') + ' ' +
- '' + M('Records') + ' ' +
- '' + M('State') + ' ' +
- ' ';
-
+ // There is a bug in pz2.js
+ var cleandata = [];
for (var i = 0; i < data.length; i++) {
- table += "" + data[i].id +
- " " + data[i].hits +
- " " + data[i].diagnostic +
- " " + data[i].records +
- " " + data[i].state + " ";
+ var cur = {};
+ cur.id = data[i].id;
+ cur.hits = data[i].hits;
+ cur.diagnostic = data[i].diagnostic;
+ cur.records = data[i].records;
+ cur.state = data[i].state;
+ cleandata.push(cur);
}
- table += '
';
- that.jqnode.html(table);
+ var template = that.team.loadTemplate(that.config.template || "Targets");
+ that.node.html(template({data: cleandata}));
});
});
mkws.registerWidgetType('Stat', function() {
var that = this;
- var M = mkws.M;
-
this.team.queue("stat").subscribe(function(data) {
- that.jqnode.html(' -- ' +
- '' + M('Active clients') + ': ' + data.activeclients + '/' + data.clients + ' ' +
- ' -- ' +
- M('Retrieved records') + ': ' + data.records + '/' + data.hits);
+ var template = that.team.loadTemplate(that.config.template || "Stat");
+ that.node.html(template(data));
});
});
@@ -52,7 +43,7 @@ mkws.registerWidgetType('Pager', function() {
var M = mkws.M;
this.team.queue("pager").subscribe(function(data) {
- that.jqnode.html(drawPager(data))
+ that.node.html(drawPager(data))
function drawPager(data) {
var teamName = that.team.name();
@@ -116,31 +107,29 @@ mkws.registerWidgetType('Records', function() {
var team = this.team;
this.team.queue("records").subscribe(function(data) {
- var html = [];
for (var i = 0; i < data.hits.length; i++) {
var hit = data.hits[i];
that.team.queue("record").publish(hit);
- var divId = team.recordElementId(hit.recid[0]);
- html.push('', renderSummary(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.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())
- html.push(team.renderDetails(team.currentRecordData()));
+ if (team.currentRecordData()) {
+ hit.renderedDetails = team.renderDetails(team.currentRecordData());
+ console.log(hit.renderedDetails);
+ }
}
}
- that.jqnode.html(html.join(''));
-
- function renderSummary(hit) {
- var template = team.loadTemplate(that.config.template || "Summary");
- hit._id = team.recordElementId(hit.recid[0]);
- hit._onclick = "mkws.showDetails('" + team.name() + "', '" + hit.recid[0] + "');return false;"
- return template(hit);
- }
+ var template = team.loadTemplate(that.config.template || "Records");
+ var targs = $.extend({}, {"hits": data.hits}, that.config.template_vars);
+ that.node.html(template(targs));
});
- widget.autosearch(that);
+ that.autosearch();
});
@@ -166,7 +155,7 @@ mkws.registerWidgetType('Navi', function() {
');return false;">' + value + '';
});
- that.jqnode.html(text);
+ that.node.html(text);
});
});
@@ -177,8 +166,8 @@ mkws.registerWidgetType('Navi', function() {
mkws.registerWidgetType('Sort', function() {
var that = this;
- this.jqnode.change(function() {
- that.team.set_sortOrder(that.jqnode.val());
+ this.node.change(function() {
+ that.team.set_sortOrder(that.node.val());
if (that.team.submitted()) {
that.team.reShow();
}
@@ -190,8 +179,8 @@ mkws.registerWidgetType('Sort', function() {
mkws.registerWidgetType('Perpage', function() {
var that = this;
- this.jqnode.change(function() {
- that.team.set_perpage(that.jqnode.val());
+ this.node.change(function() {
+ that.team.set_perpage(that.node.val());
if (that.team.submitted()) {
that.team.reShow();
}
@@ -204,7 +193,7 @@ mkws.registerWidgetType('Done', function() {
var that = this;
this.team.queue("complete").subscribe(function(n) {
- that.jqnode.html("Search complete: found " + n + " records");
+ that.node.html("Search complete: found " + n + " records");
});
});
@@ -212,11 +201,11 @@ mkws.registerWidgetType('Done', function() {
mkws.registerWidgetType('Switch', function() {
if (!this.config.show_switch) return;
var tname = this.team.name();
- this.jqnode.html('\
+ this.node.html('\
Records \
| \
Targets ');
- widget.hideWhenNarrow(this);
+ this.hideWhenNarrow();
});
@@ -224,7 +213,7 @@ mkws.registerWidgetType('Search', function() {
var tname = this.team.name();
var M = mkws.M;
- this.jqnode.html('\
+ this.node.html('\
';
- this.jqnode.html(s);
+ this.node.html(s);
function mkwsHtmlSort() {
var order = that.team.sortOrder();
- that.log("HTML sort, sortOrder = '" + order + "'");
+ that.log("making sort HTML, sortOrder = '" + order + "'");
var sort_html = '';
for(var i = 0; i < that.config.sort_options.length; i++) {
@@ -311,7 +300,7 @@ mkws.registerWidgetType('Ranking', function() {
function mkwsHtmlPerpage() {
var perpage = that.team.perpage();
- that.log("HTML perpage, perpage = " + perpage);
+ that.log("making perpage HTML, perpage = " + perpage);
var perpage_html = '';
for(var i = 0; i < that.config.perpage_options.length; i++) {
@@ -355,7 +344,7 @@ mkws.registerWidgetType('Lang', function() {
if (lang_options.length == 0 || toBeIncluded[lang_default])
list.push(lang_default);
- this.log("Language menu for: " + list.join(", "));
+ this.log("language menu: " + list.join(", "));
/* the HTML part */
var data = "";
@@ -371,8 +360,8 @@ mkws.registerWidgetType('Lang', function() {
}
}
- this.jqnode.html(data);
- widget.hideWhenNarrow(this);
+ this.node.html(data);
+ this.hideWhenNarrow();
// set or re-set "lang" URL parameter
@@ -400,11 +389,46 @@ mkws.registerWidgetType('MOTD', function() {
var container = this.team.widget('MOTDContainer');
if (container) {
// Move the MOTD from the provided element down into the container
- this.jqnode.appendTo(container.node); // #### can this be container.jqnode
+ this.node.appendTo(container.node);
}
});
+// This widget has no functionality of its own, but its configuration
+// is copied up into its team, allowing it to affect other widgets in
+// the team.
+//
+mkws.registerWidgetType('Config', function() {
+ var c = this.config;
+ 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");
+ }
+ }
+});
+
+
+mkws.registerWidgetType('Progress', function() {
+ var that = this;
+
+ this.node.hide();
+ this.team.queue("stat").subscribe(function(data) {
+ var s = '';
+ for (var i = 0; i < data.clients; i++) {
+ if (i == data.clients - data.activeclients) {
+ s += ' ';
+ s += '';
+ }
+ s += '█';
+ }
+ s += ' ';
+ that.node.html(s);
+ that.node.show();
+ });
+});
+
+
// 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
@@ -413,6 +437,5 @@ mkws.registerWidgetType('MOTD', function() {
mkws.registerWidgetType('Query', function() {});
mkws.registerWidgetType('MOTDContainer', function() {});
mkws.registerWidgetType('Button', function() {});
-mkws.registerWidgetType('Popup', function() {});