X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=4bbd5064bbbdf04b584c8db43fcc503ef84afd88;hb=5b8aaa96003a49e11913a405061b7adbe538bbcd;hp=9893577b510f182d86d1593d36ec5cdb20eb1795;hpb=91f43e22a13194f7d3d19539b380292629e4699e;p=mkws-moved-to-github.git diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js index 9893577..4bbd506 100644 --- a/tools/htdocs/mkws.js +++ b/tools/htdocs/mkws.js @@ -2,81 +2,149 @@ "use strict"; // HTML5: disable for debug_level >= 2 + +// Handlebars helpers +Handlebars.registerHelper('json', function(obj) { + return $.toJSON(obj); +}); + + +Handlebars.registerHelper('translate', function(s) { + debug("translating '" + s + "'"); + return mkws.M(s); +}); + + +// 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; +}); + + + // Some functions are visible to be called from outside code, namely // generated HTML: mkws.switchView(), showDetails(), limitTarget(), // limitQuery(), delimitTarget(), delimitQuery(), pagerPrev(), -// pagerNext(), showPage() +// pagerNext(), showPage(). Also mkws.M() is made available for the +// Handlebars helper 'translate' + // Set up global mkws object. Contains a hash of session objects, // indexed by windowid. var mkws = { authenticated: false, - sessions: {} -}; - -mkws.locale_lang = { - "de": { - "Authors": "Autoren", - "Subjects": "Schlagwörter", - "Sources": "Daten und Quellen", - "Termlists": "Termlisten", - "Next": "Weiter", - "Prev": "Zurück", - "Search": "Suche", - "Sort by": "Sortieren nach", - "and show": "und zeige", - "per page": "pro Seite", - "Displaying": "Zeige", - "to": "von", - "of": "aus", - "found": "gefunden", - "Title": "Titel", - "Author": "Autor", - "Date": "Datum", - "Subject": "Schlagwort", - "Location": "Ort", - "Records": "Datensätze", - "Targets": "Datenbanken", - - "dummy": "dummy" - }, - - "da": { - "Authors": "Forfattere", - "Subjects": "Emner", - "Sources": "Kilder", - "Termlists": "Termlists", - "Next": "Næste", - "Prev": "Forrige", - "Search": "Søg", - "Sort by": "Sorter efter", - "and show": "og vis", - "per page": "per side", - "Displaying": "Viser", - "to": "til", - "of": "ud af", - "found": "fandt", - "Title": "Title", - "Author": "Forfatter", - "Date": "Dato", - "Subject": "Emneord", - "Location": "Lokation", - "Records": "Poster", - "Targets": "Baser", - - "dummy": "dummy" + init: false, + debug_function: undefined, // will be set during initialisation + debug_level: undefined, // will be initialised from mkws_config + sessions: {}, + locale_lang: { + "de": { + "Authors": "Autoren", + "Subjects": "Schlagwörter", + "Sources": "Daten und Quellen", + "Termlists": "Termlisten", + "Next": "Weiter", + "Prev": "Zurück", + "Search": "Suche", + "Sort by": "Sortieren nach", + "and show": "und zeige", + "per page": "pro Seite", + "Displaying": "Zeige", + "to": "von", + "of": "aus", + "found": "gefunden", + "Title": "Titel", + "Author": "Autor", + "Date": "Datum", + "Subject": "Schlagwort", + "Location": "Ort", + "Records": "Datensätze", + "Targets": "Datenbanken", + + "dummy": "dummy" + }, + + "da": { + "Authors": "Forfattere", + "Subjects": "Emner", + "Sources": "Kilder", + "Termlists": "Termlists", + "Next": "Næste", + "Prev": "Forrige", + "Search": "Søg", + "Sort by": "Sorter efter", + "and show": "og vis", + "per page": "per side", + "Displaying": "Viser", + "to": "til", + "of": "ud af", + "found": "fandt", + "Title": "Title", + "Author": "Forfatter", + "Date": "Dato", + "Subject": "Emneord", + "Location": "Lokation", + "Records": "Poster", + "Targets": "Baser", + + "dummy": "dummy" + } } }; + // Define empty mkws_config for simple applications that don't define it. if (mkws_config == null || typeof mkws_config != 'object') { var mkws_config = {}; } + // wrapper for jQuery lib function _make_mkws_team($, teamName) { - if (console && console.log) - console.log("run _make_mkws_team(" + (teamName ? teamName : "") + ")"); + // if (console && console.log) // disabled, will fail in IE8 + // console.log("run _make_mkws_team(" + (teamName ? teamName : "") + ")"); // call this function only once if (mkws.init) { @@ -86,13 +154,24 @@ function _make_mkws_team($, teamName) { var m_sort = 'relevance'; var m_filters = []; - - // keep time state for debugging + var curPage = 1; + var recPerPage = 20; + var totalRec = 0; + var curDetRecId = ''; + var curDetRecData = null; + var submitted = false; + var SourceMax = 16; + var SubjectMax = 10; + var AuthorMax = 10; + var m_query; // initially undefined var m_debug_time = { + // Timestamps for logging "start": $.now(), "last": $.now() }; + + // Needs to be defined inside _make_mkws_team() so it can see m_debug_time mkws.debug_function = function (string) { if (!mkws.debug_level) return; @@ -117,65 +196,6 @@ function _make_mkws_team($, teamName) { debug("start running MKWS"); - Handlebars.registerHelper('json', function(obj) { - return $.toJSON(obj); - }); - - - Handlebars.registerHelper('translate', function(s) { - debug("translating '" + s + "'"); - return M(s); - }); - - - // 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 */ @@ -263,21 +283,11 @@ function _make_mkws_team($, teamName) { "showResponseType": '', // or "json" (for debugging?) "onrecord": my_onrecord } ); - // some state vars - var curPage = 1; - var recPerPage = 20; - var totalRec = 0; - var curDetRecId = ''; - var curDetRecData = null; - var submitted = false; - var SourceMax = 16; - var SubjectMax = 10; - var AuthorMax = 10; - if (!isNaN(parseInt(mkws_config.perpage_default))) { recPerPage = parseInt(mkws_config.perpage_default); } + // // pz2.js event handlers: // @@ -286,6 +296,7 @@ function _make_mkws_team($, teamName) { m_paz.bytarget(); } + function my_onshow(data) { totalRec = data.merged; // move it out @@ -337,6 +348,7 @@ function _make_mkws_team($, teamName) { '' + M('Retrieved records') + ': ' + data.records + '/' + data.hits + ''; } + function my_onterm(data) { // no facets if (!mkws_config.facets || mkws_config.facets.length == 0) { @@ -368,6 +380,7 @@ function _make_mkws_team($, teamName) { replaceHtml(termlist, acc.join('')); } + function add_single_facet(acc, caption, data, max, pzIndex) { acc.push('