Make findnode() visible as a team method.
[mkws-moved-to-github.git] / src / mkws-team.js
index adf1acf..e1e985b 100644 (file)
@@ -102,7 +102,6 @@ function team($, teamName) {
                      "termlist": m_config.facets.join(',')
                    });
 
-
     // pz2.js event handlers:
     function onInit() {
        log("init");
@@ -128,6 +127,7 @@ function team($, teamName) {
     function onShow(data, teamName) {
        log("show");
        m_totalRecordCount = data.merged;
+       log("found " + m_totalRecordCount + " records");
        queue("pager").publish(data);
        queue("records").publish(data);
     }
@@ -171,8 +171,7 @@ function team($, teamName) {
     };
 
 
-    that.limitTarget = function(id, name)
-    {
+    that.limitTarget = function(id, name) {
        log("limitTarget(id=" + id + ", name=" + name + ")");
        m_filters.push({ id: id, name: name });
        triggerSearch();
@@ -180,8 +179,7 @@ function team($, teamName) {
     };
 
 
-    that.limitQuery = function(field, value)
-    {
+    that.limitQuery = function(field, value) {
        log("limitQuery(field=" + field + ", value=" + value + ")");
        m_filters.push({ field: field, value: value });
        triggerSearch();
@@ -189,8 +187,7 @@ function team($, teamName) {
     };
 
 
-    that.delimitTarget = function(id)
-    {
+    that.delimitTarget = function(id) {
        log("delimitTarget(id=" + id + ")");
        removeMatchingFilters(function(f) { return f.id });
        triggerSearch();
@@ -198,8 +195,7 @@ function team($, teamName) {
     };
 
 
-    that.delimitQuery = function(field, value)
-    {
+    that.delimitQuery = function(field, value) {
        log("delimitQuery(field=" + field + ", value=" + value + ")");
        removeMatchingFilters(function(f) { return f.field && field == f.field && value == f.value });
        triggerSearch();
@@ -222,8 +218,7 @@ function team($, teamName) {
     }
 
 
-    that.showPage = function(pageNum)
-    {
+    that.showPage = function(pageNum) {
        m_currentPage = pageNum;
        m_paz.showPage(m_currentPage - 1);
     };
@@ -248,16 +243,14 @@ function team($, teamName) {
     };
 
 
-    function resetPage()
-    {
+    function resetPage() {
        m_currentPage = 1;
        m_totalRecordCount = 0;
     }
     that.resetPage = resetPage;
 
 
-    function newSearch(query, sortOrder, targets)
-    {
+    function newSearch(query, sortOrder, maxrecs, perpage, limit, targets, torusquery) {
        log("newSearch: " + query);
 
        if (m_config.use_service_proxy && !mkws.authenticated) {
@@ -266,19 +259,19 @@ function team($, teamName) {
        }
 
        m_filters = []
-       triggerSearch(query, sortOrder, targets);
+       triggerSearch(query, sortOrder, maxrecs, perpage, limit, targets, torusquery);
        switchView('records'); // In case it's configured to start off as hidden
        m_submitted = true;
     }
+    that.newSearch = newSearch;
 
 
-    function triggerSearch(query, sortOrder, targets)
-    {
+    function triggerSearch(query, sortOrder, maxrecs, perpage, limit, targets, torusquery) {
        resetPage();
        queue("navi").publish();
 
        var pp2filter = "";
-       var pp2limit = "";
+       var pp2limit = limit || "";
 
        // Continue to use previous query/sort-order unless new ones are specified
        if (query) {
@@ -287,6 +280,9 @@ function team($, teamName) {
        if (sortOrder) {
            m_sortOrder = sortOrder;
        }
+       if (perpage) {
+           m_perpage = perpage;
+       }
        if (targets) {
            m_filters.push({ id: targets, name: targets });
        }
@@ -313,6 +309,14 @@ function team($, teamName) {
        if (pp2limit) {
            params.limit = pp2limit;
        }
+       if (maxrecs) {
+           params.maxrecs = maxrecs;
+       }
+       if (torusquery) {
+           if (!mkws.config.use_service_proxy)
+               alert("can't narrow search by torusquery when Service Proxy is not in use");
+           params.torusquery = torusquery;
+       }
 
        log("triggerSearch(" + m_query + "): filters = " + $.toJSON(m_filters) + ", " +
            "pp2filter = " + pp2filter + ", params = " + $.toJSON(params));
@@ -363,11 +367,7 @@ function team($, teamName) {
        m_currentRecordId = recId;
 
        // remove current detailed view if any
-       // ##### restrict to current team
-       var detRecordDiv = document.getElementById(recordDetailsId(oldRecordId));
-       // lovin DOM!
-       if (detRecordDiv)
-           detRecordDiv.parentNode.removeChild(detRecordDiv);
+       findnode('#' + recordDetailsId(oldRecordId)).remove();
 
        // if the same clicked, just hide
        if (recId == oldRecordId) {
@@ -456,7 +456,7 @@ function team($, teamName) {
 
 
     function mkwsSetLang()  {
-       var lang = getParameterByName("lang") || m_config.lang;
+       var lang = mkws.getParameterByName("lang") || m_config.lang;
        if (!lang || !mkws.locale_lang[lang]) {
            m_config.lang = ""
        } else {
@@ -569,52 +569,6 @@ function team($, teamName) {
     }
 
 
-    that.runAutoSearch = function() {
-       var node = findnode('.mkwsRecords,.mkwsTermlists');
-       var query = node.attr('autosearch');
-       if (!query)
-           return;
-
-       if (query.match(/^!param!/)) {
-           var param = query.replace(/^!param!/, '');
-           query = getParameterByName(param);
-           log("obtained query '" + query + "' from param '" + param + "'");
-           if (!query) {
-               alert("This page has a MasterKey widget that needs a query specified by the '" + param + "' parameter");
-           }
-       } else if (query.match(/^!path!/)) {
-           var index = query.replace(/^!path!/, '');
-           var path = window.location.pathname.split('/');
-           query = path[path.length - index];
-           log("obtained query '" + query + "' from path-component '" + index + "'");
-           if (!query) {
-               alert("This page has a MasterKey widget that needs a query specified by the path-component " + index);
-           }
-       }
-
-       log("node=" + node + ", class='" + node.className + "', query=" + query);
-
-       var sortOrder = node.attr('sort');
-       var targets = node.attr('targets');
-       var s = "running auto search: '" + query + "'";
-       if (sortOrder) s += " sorted by '" + sortOrder + "'";
-       if (targets) s += " in targets '" + targets + "'";
-       log(s);
-
-       newSearch(query, sortOrder, targets);
-    };
-
-
-    // This function is taken from a StackOverflow answer
-    // http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript/901144#901144
-    function getParameterByName(name) {
-       name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
-       var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
-           results = regex.exec(location.search);
-       return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
-    }
-
-
     // Translation function. At present, this is properly a
     // global-level function (hence the assignment to mkws.M) but we
     // want to make it per-team so different teams can operate in
@@ -646,10 +600,10 @@ function team($, teamName) {
        //log('findnode(' + selector + ') found ' + node.length + ' nodes');
        return node;
     }
+    that.findnode = findnode;
 
 
-    function renderDetails(data, marker)
-    {
+    function renderDetails(data, marker) {
        var template = loadTemplate("Record");
        var details = template(data);
        return '<div class="details mkwsTeam_' + m_teamName + '" ' +
@@ -658,8 +612,7 @@ function team($, teamName) {
     that.renderDetails = renderDetails;
 
 
-    function loadTemplate(name)
-    {
+    function loadTemplate(name) {
        var template = m_template[name];
 
        if (template === undefined) {
@@ -684,8 +637,7 @@ function team($, teamName) {
     that.loadTemplate = loadTemplate;
 
 
-    function defaultTemplate(name)
-    {
+    function defaultTemplate(name) {
        if (name === 'Record') {
            return '\
 <table>\
@@ -757,6 +709,15 @@ function team($, teamName) {
   <span><i>{{md-title-responsibility}}</i></span>\
 {{/if}}\
 ';
+       } else if (name === "Image") {
+           return '\
+      <a href="#" id="{{_id}}" onclick="{{_onclick}}">\
+        {{#first md-thumburl}}\
+         <img src="{{this}}" alt="{{../md-title}}"/>\
+        {{/first}}\
+       <br/>\
+      </a>\
+';
        }
 
        var s = "There is no default '" + name +"' template!";