X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=8ddb1b1b86572e0a72edbbbc55fd311ac376ee85;hb=c0e349d3bbbc858513b19267e30e3c03bb25aa32;hp=645e224a88937637532def37289dff03d9bd34ba;hpb=16aed0a8939f9d9caa11dce61431363fc1b9b5ec;p=mkws-moved-to-github.git
diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js
index 645e224..8ddb1b1 100644
--- a/tools/htdocs/mkws.js
+++ b/tools/htdocs/mkws.js
@@ -1,31 +1,24 @@
-/* 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: []
+};
+// Define empty mkws_config for simple applications that don't define it.
if (!mkws_config)
- var mkws_config = {}; // for the guys who forgot to define mkws_config...
-
-// Wrapper for jQuery
-(function ($) {
-
-/*
- * global config object: mkws_config
- *
- * needs to be defined in the HTML header before
- * including this JS file
- */
-
-if (typeof mkws_config.use_service_proxy === 'undefined')
- mkws_config.use_service_proxy = true;
+ var mkws_config = {};
-var pazpar2_url = mkws_config.pazpar2_url ? mkws_config.pazpar2_url : "http://mkws.indexdata.com/service-proxy/";
+// wrapper for jQuery lib
+function _mkws($) {
+ // if (console && console.log) console.log("run _mkws()");
-mkws.pazpar2path = pazpar2_url;
-mkws.usesessions = mkws_config.use_service_proxy ? false : true;
+ // call this function only once
+ if (mkws.init) return;
mkws.locale_lang = {
"de": {
@@ -84,6 +77,7 @@ mkws.debug_time = {
"start": $.now(),
"last": $.now()
};
+
mkws.debug_function = function (string) {
if (!mkws.debug_level)
return;
@@ -93,7 +87,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!!!
@@ -105,6 +99,109 @@ mkws.debug_function = function (string) {
console.log(timestamp + string);
}
var debug = mkws.debug_function; // local alias
+debug("start running MKWS");
+
+
+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"]],
+ perpage_options: [10, 20, 30, 50],
+ sort_default: "relevance",
+ perpage_default: 20,
+ query_width: 50,
+ show_lang: true, /* show/hide language menu */
+ show_sort: true, /* show/hide sort menu */
+ show_perpage: true, /* show/hide perpage menu */
+ lang_options: [], /* display languages links for given languages, [] for all */
+ facets: ["sources", "subjects", "authors"], /* display facets, in this order, [] for none */
+ responsive_design_width: undefined, /* a page with less pixel width considered as narrow */
+ debug_level: 1, /* debug level for development: 0..2 */
+
+ dummy: "dummy"
+ };
+
+ /* set global debug_level flag early */
+ if (typeof mkws_config.debug_level !== 'undefined') {
+ mkws.debug_level = mkws_config.debug_level;
+ } else if (typeof config_default.debug_level !== 'undefined') {
+ mkws.debug_level = config_default.debug_level;
+ }
+
+ /* override standard config values by function parameters */
+ for (var k in config_default) {
+ if (typeof mkws_config[k] === 'undefined')
+ mkws_config[k] = config_default[k];
+ debug("Set config: " + k + ' => ' + mkws_config[k]);
+ }
+}
+
+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;
+}
for (var key in mkws_config) {
if (mkws_config.hasOwnProperty(key)) {
@@ -112,17 +209,18 @@ for (var key in mkws_config) {
var lang = key.replace(/^language_/, "");
// Copy custom languages into list
mkws.locale_lang[lang] = mkws_config[key];
+ debug("Added locally configured language '" + lang + "'");
}
}
}
-
+debug("Create main pz2 object");
// create a parameters array and pass it to the pz2's constructor
// then register the form submit event with the pz2.search function
// 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.pazpar2path,
+ "pazpar2path": mkws_config.pazpar2_url,
"oninit": my_oninit,
"onstat": my_onstat,
"onterm": my_onterm,
@@ -140,8 +238,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;
@@ -159,46 +255,54 @@ function my_onshow(data) {
totalRec = data.merged;
// move it out
var pager = document.getElementById("mkwsPager");
- pager.innerHTML = "";
- pager.innerHTML +='
';
+ drawPager(pager);
+ }
+
// navi
var results = document.getElementById("mkwsRecords");
var html = [];
for (var i = 0; i < data.hits.length; i++) {
var hit = data.hits[i];
- html.push('