X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=db6c337efd24b60b8092242fd6e309a26dee47d8;hb=61726cb61e0f8b3a7c2a57f9d1d0fe90f7207eeb;hp=c98b17d21bd49deaff1d2f2b33292c397c105ca0;hpb=7fc684231ef7c9dbc4e5141c1c536712183f2751;p=mkws-moved-to-github.git diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js index c98b17d..db6c337 100644 --- a/tools/htdocs/mkws.js +++ b/tools/htdocs/mkws.js @@ -1,10 +1,13 @@ -/* A very simple client that shows a basic usage of the pz2.js -*/ +/*! MKWS, the MasterKey Widget Set. Copyright (C) 2013, Index Data */ "use strict"; // HTML5: disable for debug_level >= 2 // Set up namespace and some state. -var mkws = {}; +var mkws = { + sort: 'relevance', + authenticated: false, + filters: [] +}; /* * global config object: mkws_config @@ -12,8 +15,9 @@ var mkws = {}; * Needs to be defined in the HTML header before including this JS file. * Define empty mkws_config for simple applications that don't define it. */ -if (!mkws_config) +if (mkws_config == null || typeof mkws_config != 'object')) { var mkws_config = {}; +} // Wrapper for jQuery (function ($) { @@ -85,7 +89,7 @@ mkws.debug_function = function (string) { } var now = $.now(); - var timestamp = (now - mkws.debug_time.start)/1000 + " (+" + (now - mkws.debug_time.last)/1000 + ") " + var timestamp = ((now - mkws.debug_time.start)/1000).toFixed(3) + " (+" + ((now - mkws.debug_time.last)/1000).toFixed(3) + ") " mkws.debug_time.last = now; // you need to disable use strict at the top of the file!!! @@ -98,10 +102,66 @@ mkws.debug_function = function (string) { } var debug = mkws.debug_function; // local alias + +Handlebars.registerHelper('json', function(obj) { + return $.toJSON(obj); +}); + + +// We need {{attr '@name'}} because Handlebars can't parse {{@name}} +Handlebars.registerHelper('attr', function(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 ""; +}); + + +Handlebars.registerHelper('first', function(items, options) { + var having = options.hash.having; + for (var i in items) { + var item = items[i] + if (!having || item[having]) { + return options.fn(item); + } + } + return ""; +}); + + +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 = { use_service_proxy: true, + pazpar2_url: "http://mkws.indexdata.com/service-proxy/", service_proxy_auth: "http://mkws.indexdata.com/service-proxy-auth", lang: "", sort_options: [["relevance"], ["title:1", "title"], ["date:0", "newest"], ["date:1", "oldest"]], @@ -127,6 +187,12 @@ var debug = mkws.debug_function; // local alias mkws.debug_level = config_default.debug_level; } + // make sure the mkws_config is a valid hash + if (!$.isPlainObject(mkws_config)) { + debug("ERROR: mkws_config is not an JS object, ignore it...."); + mkws_config = {}; + } + /* override standard config values by function parameters */ for (var k in config_default) { if (typeof mkws_config[k] === 'undefined') @@ -135,6 +201,11 @@ var debug = mkws.debug_function; // local alias } } +mkws.sort = mkws_config.sort_default; +debug("copied mkws_config.sort_default '" + mkws_config.sort_default + "' to mkws.sort"); + +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; @@ -157,13 +228,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_config.pazpar2_url, "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 } ); @@ -175,8 +246,6 @@ var recPerPage = 20; var totalRec = 0; var curDetRecId = ''; var curDetRecData = null; -var curSort = 'relevance'; -var curFilter = null; var submitted = false; var SourceMax = 16; var SubjectMax = 10; @@ -194,36 +263,44 @@ function my_onshow(data) { totalRec = data.merged; // move it out var pager = document.getElementById("mkwsPager"); - pager.innerHTML = ""; - pager.innerHTML +='
'+ marker + ' | |
No sources for record! |
Title | \ +\ + {{md-title}}\ + {{#if md-title-remainder}}\ + ({{md-title-remainder}})\ + {{/if}}\ + {{#if md-title-responsibility}}\ + {{md-title-responsibility}}\ + {{/if}}\ + | \ +
---|---|
Date | \ +{{md-date}} | \ +
Author | \ +{{md-author}} | \ +
URL | \ +\
+ {{#each md-electronic-url}}\
+ {{this}} \ + {{/each}}\ + | \
+
Subject | \ +\ + {{#first location having="md-subject"}}\ + {{#if md-subject}}\ + {{md-subject}}\ + {{/if}}\ + {{/first}}\ + | \ +
Locations | \ +\ + {{#commaList location}}\ + {{attr "@name"}}{{/commaList}}\ + | \ +