X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=a14a0cc9e25e60a6fa28e9b80d49a0019476406d;hb=08199c82e9fabefdfb48e39fc6e199efeac87bf8;hp=124b3115fb9723bcf7227d31e86b8337e09fd45a;hpb=588dc0fed2bd1f9240418e05a87514796679223a;p=mkws-moved-to-github.git
diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js
index 124b311..a14a0cc 100644
--- a/tools/htdocs/mkws.js
+++ b/tools/htdocs/mkws.js
@@ -5,6 +5,8 @@
// Set up namespace and some state.
var mkws = {
+ sort: 'relevance',
+ authenticated: false,
filters: [],
};
@@ -101,26 +103,32 @@ mkws.debug_function = function (string) {
var debug = mkws.debug_function; // local alias
-Handlebars.registerHelper('link', function(a) {
- var result = "";
- for (var i in a) {
- if (i > 0) result += " ";
- var text = Handlebars.Utils.escapeExpression(a[i]);
- result += '' + text + '';
- }
-
- return new Handlebars.SafeString(result);
-});
-
-
Handlebars.registerHelper('json', function(obj) {
return JSON.stringify(obj);
});
-// We need {{attr name}} because Handlebars can't parse {{@@name}}
+// We need {{attr '@name'}} because Handlebars can't parse {{@name}}
Handlebars.registerHelper('attr', function(attrName) {
- return this['@' + attrName];
+ return this[attrName];
+});
+
+
+/*
+ * Use as follows: {{#if-any NAME1 having="NAME2"}}
+ * Applicable when NAME1 is the name of an array
+ * The guarded code runs only if at least one element of the NAME1
+ * array has a subelement called NAME2.
+ */
+Handlebars.registerHelper('if-any', function(items, options) {
+ var having = options.hash.having;
+ for (var i in items) {
+ var item = items[i]
+ if (!having || item[having]) {
+ return options.fn(this);
+ }
+ }
+ return "";
});
@@ -136,6 +144,18 @@ Handlebars.registerHelper('first', function(items, options) {
});
+Handlebars.registerHelper('commaList', function(items, options) {
+ var out = "";
+
+ for (var i in items) {
+ if (i > 0) out += ", ";
+ out += options.fn(items[i])
+ }
+
+ return out;
+});
+
+
{
/* default mkws config */
var config_default = {
@@ -173,6 +193,12 @@ Handlebars.registerHelper('first', function(items, options) {
}
}
+mkws.sort = mkws_config.sort_default;
+debug("copied mkws_config.sort_default '" + mkws_config.sort_default + "' to mkws.sort");
+
+mkws.pazpar2path = mkws_config.pazpar2_url || "http://mkws.indexdata.com/service-proxy/";
+mkws.usesessions = mkws_config.use_service_proxy ? false : true;
+
if (mkws_config.query_width < 5 || mkws_config.query_width > 150) {
debug("Reset query width: " + mkws_config.query_width);
mkws_config.query_width = 50;
@@ -195,13 +221,13 @@ for (var key in mkws_config) {
// autoInit is set to true on default
var my_paz = new pz2( { "onshow": my_onshow,
"showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way
- "pazpar2path": mkws_config.pazpar2_url || "http://mkws.indexdata.com/service-proxy/",
+ "pazpar2path": mkws.pazpar2path,
"oninit": my_oninit,
"onstat": my_onstat,
"onterm": my_onterm,
"termlist": "xtargets,subject,author",
"onbytarget": my_onbytarget,
- "usesessions" : mkws_config.use_service_proxy ? false : true,
+ "usesessions" : mkws.usesessions,
"showResponseType": '', // or "json" (for debugging?)
"onrecord": my_onrecord } );
@@ -213,7 +239,6 @@ var recPerPage = 20;
var totalRec = 0;
var curDetRecId = '';
var curDetRecData = null;
-var curSort = 'relevance';
var submitted = false;
var SourceMax = 16;
var SubjectMax = 10;
@@ -246,24 +271,29 @@ function my_onshow(data) {
var html = [];
for (var i = 0; i < data.hits.length; i++) {
var hit = data.hits[i];
- html.push('