X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fmkws-widgets.js;h=cd9e45df06f1e00531bff3142432a459c6bd8711;hb=7b6c3ddc940efb1bc499d33a3a2ec0ffc53a4729;hp=98a48bde67a9f30d60e8afb2f5e193063fb60b3d;hpb=2e98f6b0b8c985dadb49d9658f22df6911b43eee;p=mkws-moved-to-github.git
diff --git a/src/mkws-widgets.js b/src/mkws-widgets.js
index 98a48bd..cd9e45d 100644
--- a/src/mkws-widgets.js
+++ b/src/mkws-widgets.js
@@ -10,7 +10,7 @@ function widget($, team, type, node) {
team: team,
type: type,
node: node,
- config: Object.create(team.config())
+ config: mkws.objectInheritingFrom(team.config())
};
function log(s) {
@@ -22,6 +22,10 @@ function widget($, team, type, node) {
return '[Widget ' + team.name() + ':' + type + ']';
};
+ that.value = function() {
+ return node.value;
+ }
+
for (var i = 0; i < node.attributes.length; i++) {
var a = node.attributes[i];
if (a.name === 'data-mkws-config') {
@@ -154,73 +158,6 @@ mkws.registerWidgetType('Stat', function() {
});
-mkws.registerWidgetType('Termlists', function() {
- var that = this;
- var M = mkws.M;
-
- this.team.queue("termlists").subscribe(function(data) {
- if (!that.node) {
- alert("termlists event when there are no termlists");
- return;
- }
-
- // no facets: this should never happen
- var facets = that.config.facets;
- if (!facets || facets.length == 0) {
- alert("onTerm called even though we have no facets: " + $.toJSON(data));
- $(that.node).hide();
- return;
- }
-
- // display if we first got results
- $(that.node).show();
-
- var acc = [];
- acc.push('
' + M('Termlists') + '
');
-
- for (var i = 0; i < facets.length; i++) {
- if (facets[i] == "xtargets") {
- addSingleFacet(acc, "Sources", data.xtargets, 16, null);
- } else if (facets[i] == "subject") {
- addSingleFacet(acc, "Subjects", data.subject, 10, "subject");
- } else if (facets[i] == "author") {
- addSingleFacet(acc, "Authors", data.author, 10, "author");
- } else {
- alert("bad facet configuration: '" + facets[i] + "'");
- }
- }
-
- $(that.node).html(acc.join(''));
-
- function addSingleFacet(acc, caption, data, max, pzIndex) {
- var teamName = that.team.name();
- acc.push('');
- acc.push('
' + M(caption) + '
');
- for (var i = 0; i < data.length && i < max; i++) {
- acc.push('
');
- }
- acc.push('
');
- }
- });
-
- widget.autosearch(that);
-});
-
-
mkws.registerWidgetType('Pager', function() {
var that = this;
var M = mkws.M;
@@ -248,24 +185,24 @@ mkws.registerWidgetType('Pager', function() {
? firstClkbl + 2*onsides
: pages;
- var prev = '<< ' + M('Prev') + ' | ';
+ var prev = '<< ' + M('Prev') + ' | ';
if (currentPage > 1)
prev = ''
- +'<< ' + M('Prev') + ' | ';
+ +'<< ' + M('Prev') + ' | ';
var middle = '';
for(var i = firstClkbl; i <= lastClkbl; i++) {
var numLabel = i;
if(i == currentPage)
- numLabel = '' + i + '';
+ numLabel = '' + i + '';
middle += ' '
+ numLabel + ' ';
}
- var next = ' | ' + M('Next') + ' >>';
+ var next = ' | ' + M('Next') + ' >>';
if (pages - currentPage > 0)
- next = ' | '
+ next = ' | '
+ M('Next') + ' >>';
var predots = '';
@@ -285,6 +222,13 @@ mkws.registerWidgetType('Pager', function() {
});
+mkws.registerWidgetType('Results', function() {
+ // Nothing to do apart from act as an autosearch trigger
+ // Contained elements do all the real work
+ widget.autosearch(this);
+});
+
+
mkws.registerWidgetType('Records', function() {
var that = this;
var team = this.team;
@@ -326,20 +270,18 @@ mkws.registerWidgetType('Navi', function() {
var filters = that.team.filters();
var text = "";
- for (var i in filters) {
- if (text) {
- text += " | ";
- }
- var filter = filters[i];
- if (filter.id) {
- text += M('source') + ': ' + filter.name + '';
- } else {
- text += M(filter.field) + ': ' + filter.value + '';
- }
- }
+ filters.visitTargets(function(id, name) {
+ if (text) text += " | ";
+ text += M('source') + ': ' + name + '';
+ });
+
+ filters.visitFields(function(field, value) {
+ if (text) text += " | ";
+ text += M(field) + ': ' + value + '';
+ });
$(that.node).html(text);
});
@@ -355,7 +297,6 @@ mkws.registerWidgetType('Sort', function() {
$(this.node).change(function() {
that.team.set_sortOrder($(that.node).val());
if (that.team.submitted()) {
- that.team.resetPage();
that.team.reShow();
}
return false;
@@ -369,9 +310,17 @@ mkws.registerWidgetType('Perpage', function() {
$(this.node).change(function() {
that.team.set_perpage($(that.node).val());
if (that.team.submitted()) {
- that.team.resetPage();
that.team.reShow();
}
return false;
});
});
+
+
+mkws.registerWidgetType('Done', function() {
+ var that = this;
+
+ this.team.queue("complete").subscribe(function(n) {
+ $(that.node).html("Search complete: found " + n + " records");
+ });
+});