Merge branch 'master' of ssh://git.indexdata.com/home/git/private/mkws
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index 04977cd..12f3f71 100644 (file)
@@ -2,64 +2,71 @@
 
 "use strict"; // HTML5: disable for debug_level >= 2
 
+// Some functions are visible to be called from outside code, namely
+// generated HTML: mkws.switchView(), showDetails(), limitTarget(),
+// limitQuery(), delimitTarget(), delimitQuery(), pagerPrev(),
+// pagerNext(), showPage()
+
 // 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"
+       }
     }
 };
 
@@ -268,6 +275,7 @@ function _make_mkws_team($, teamName) {
     var SourceMax = 16;
     var SubjectMax = 10;
     var AuthorMax = 10;
+    var m_query; // initially undefined
 
     if (!isNaN(parseInt(mkws_config.perpage_default))) {
        recPerPage = parseInt(mkws_config.perpage_default);
@@ -313,13 +321,10 @@ function _make_mkws_team($, teamName) {
 
     function renderSummary(hit)
     {
-       if (mkws.templateSummary === undefined) {
-           loadTemplate("Summary");
-       }
-
+       var template = loadTemplate("Summary");
        hit._id = "mkwsRec_" + hit.recid;
        hit._onclick = "mkws.showDetails(this.id);return false;"
-       return mkws.templateSummary(hit);
+       return template(hit);
     }
 
 
@@ -489,7 +494,7 @@ function _make_mkws_team($, teamName) {
 
        // Re-use previous query/sort if new ones are not specified
        if (query) {
-           mkws.query = query;
+           m_query = query;
        }
        if (sort) {
            m_sort = sort;
@@ -524,9 +529,9 @@ function _make_mkws_team($, teamName) {
        if (windowid) {
            params.windowid = windowid;
        }
-       debug("triggerSearch(" + mkws.query + "): filters = " + $.toJSON(m_filters) + ", pp2filter = " + pp2filter + ", params = " + $.toJSON(params));
+       debug("triggerSearch(" + m_query + "): filters = " + $.toJSON(m_filters) + ", pp2filter = " + pp2filter + ", params = " + $.toJSON(params));
 
-       m_paz.search(mkws.query, recPerPage, m_sort, pp2filter, undefined, params);
+       m_paz.search(m_query, recPerPage, m_sort, pp2filter, undefined, params);
     }
 
     function loadSelect ()
@@ -775,11 +780,7 @@ function _make_mkws_team($, teamName) {
 
     function renderDetails(data, marker)
     {
-       if (mkws.templateRecord === undefined) {
-           loadTemplate("Record");
-       }
-
-       var template = mkws.templateRecord;
+       var template = loadTemplate("Record");
        var details = template(data);
        return '<div class="details" id="mkwsDet_' + data.recid + '">' + details + '</div>';
     }
@@ -787,14 +788,20 @@ function _make_mkws_team($, teamName) {
 
     function loadTemplate(name)
     {
-       var source = $("#mkwsTemplate" + name).html();
-       if (!source) {
-           source = defaultTemplate(name);
+       var template = mkws['template' + name];
+
+       if (template === undefined) {
+           var source = $("#mkwsTemplate" + name).html();
+           if (!source) {
+               source = defaultTemplate(name);
+           }
+
+           template = Handlebars.compile(source);
+           debug("compiled template '" + name + "'");
+           mkws['template' + name] = template;
        }
 
-       var template = Handlebars.compile(source);
-       debug("compiled template '" + name + "'");
-       mkws['template' + name] = template;
+       return template;
     }