X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=tools%2Fhtdocs%2Fmkws.js;h=c268c8ecbf07c25521f873e5e2a54d234cdb0c79;hb=3a0a0a1568521adc95c57fd44e1c39c84d809a99;hp=aedef95c2911d07589402cac9cae7448c959c106;hpb=a55cc66b3824eaca07120f839a6c01e9840f8646;p=mkws-moved-to-github.git
diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js
index aedef95..c268c8e 100644
--- a/tools/htdocs/mkws.js
+++ b/tools/htdocs/mkws.js
@@ -66,18 +66,11 @@ Handlebars.registerHelper('commaList', function(items, options) {
-// Some functions are visible to be called from outside code, namely
-// generated HTML: that.switchView(), showDetails(), limitTarget(),
-// limitQuery(), delimitTarget(), delimitQuery(), pagerPrev(),
-// pagerNext(), showPage(). Also mkws.M() is made available for the
-// Handlebars helper 'translate'
-
-
-// Set up global mkws object. Contains a hash of team objects,
-// indexed by windowid.
+// Set up global mkws object. Contains truly global state such as SP
+// authentication, and a hash of team objects, indexed by windowid.
+//
var mkws = {
authenticated: false,
- debug_function: undefined, // will be set during initialisation
debug_level: undefined, // will be initialised from mkws_config
paz: undefined, // will be set up during initialisation
teams: {},
@@ -149,16 +142,24 @@ if (mkws_config == null || typeof mkws_config != 'object') {
}
-// wrapper for jQuery lib
+// Factory function for team objects. As much as possible, this uses
+// only member variables (prefixed "m_") and inner functions with
+// private scope. Some functions are visibl as member-functions to be
+// called from outside code -- specifically, from generated
+// HTML. These functions are that.switchView(), showDetails(),
+// limitTarget(), limitQuery(), delimitTarget(), delimitQuery(),
+// pagerPrev(), pagerNext(), showPage(). Also mkws.M() is made
+// available for the Handlebars helper 'translate'
+//
function team($, teamName) {
var that = {};
var m_teamName = teamName;
var m_submitted = false;
var m_query; // initially undefined
- var m_sort = 'relevance';
+ var m_sort; // will be set below
+ var m_perpage; // will be set below
var m_filters = [];
var m_totalRec = 0;
- var m_recPerPage = 20;
var m_curPage = 1;
var m_curDetRecId = '';
var m_curDetRecData = null;
@@ -170,33 +171,14 @@ function team($, teamName) {
var m_paz; // will be initialised below
- // if (console && console.log) // disabled, will fail in IE8
- // console.log("run team(" + (teamName ? teamName : "") + ")");
-
-
- // Needs to be defined inside team() so it can see m_debug_time
- // ### member access won't work: there is only one instance of this function
- mkws.debug_function = function (string) {
- if (!mkws.debug_level)
- return;
-
- if (typeof console === "undefined" || typeof console.log === "undefined") { /* ARGH!!! old IE */
- return;
- }
-
+ var debug = function (s) {
var now = $.now();
var timestamp = ((now - m_debug_time.start)/1000).toFixed(3) + " (+" + ((now - m_debug_time.last)/1000).toFixed(3) + ") "
m_debug_time.last = now;
- // you need to disable use strict at the top of the file!!!
- if (mkws.debug_level >= 3) {
- console.log(timestamp + arguments.callee.caller);
- } else if (mkws.debug_level >= 2) {
- console.log(timestamp + ">>> called from function " + arguments.callee.caller.name + ' <<<');
- }
- console.log(m_teamName + ": " + timestamp + string);
+ mkws.debug(m_teamName + ": " + timestamp + s);
}
- var debug = mkws.debug_function; // local alias
+
debug("start running MKWS");
m_sort = mkws_config.sort_default;
@@ -242,7 +224,7 @@ function team($, teamName) {
"onrecord": my_onrecord });
if (!isNaN(parseInt(mkws_config.perpage_default))) {
- m_recPerPage = parseInt(mkws_config.perpage_default);
+ m_perpage = parseInt(mkws_config.perpage_default);
}
@@ -260,9 +242,9 @@ function team($, teamName) {
debug("show");
m_totalRec = data.merged;
- var pager = document.getElementById("mkwsPager");
- if (pager) {
- drawPager(pager, data);
+ var pager = $(".mkwsPager.mkwsTeam_" + m_teamName);
+ if (pager.length) {
+ pager.html(drawPager(data))
}
// navi
@@ -408,27 +390,6 @@ function team($, teamName) {
////////////////////////////////////////////////////////////////////////////////
- // wait until the DOM is ready
- function domReady ()
- {
- $('.mkwsSearchForm.mkwsTeam_' + m_teamName).each(function (i, obj) {
- debug("adding search-forms for team '" + m_teamName + "'");
- var node = this;
- mkws.handle_node_with_team(node, function(tname) {
- debug("adding search-form '" + tname + "' for team '" + m_teamName + "'");
- $(node).submit(onFormSubmitEventHandler);
- });
- });
-
- if (document.mkwsSelect) {
- if (document.mkwsSelect.mkwsSort)
- document.mkwsSelect.mkwsSort.onchange = onSelectDdChange;
- if (document.mkwsSelect.mkwsPerpage)
- document.mkwsSelect.mkwsPerpage.onchange = onSelectDdChange;
- }
- }
-
-
// when search button pressed
function onFormSubmitEventHandler()
{
@@ -452,8 +413,8 @@ function team($, teamName) {
m_filters = []
redraw_navi();
- resetPage(); // ### the globals it resents should be indexed by windowid
- loadSelect(); // ### should use windowid
+ resetPage();
+ loadSelect();
triggerSearch(query, sort, targets, windowid);
that.switchView('records'); // In case it's configured to start off as hidden
m_submitted = true;
@@ -465,7 +426,7 @@ function team($, teamName) {
if (!m_submitted) return false;
resetPage();
loadSelect();
- m_paz.show(0, m_recPerPage, m_sort);
+ m_paz.show(0, m_perpage, m_sort);
return false;
}
@@ -521,17 +482,21 @@ function team($, teamName) {
}
debug("triggerSearch(" + m_query + "): filters = " + $.toJSON(m_filters) + ", pp2filter = " + pp2filter + ", params = " + $.toJSON(params));
- m_paz.search(m_query, m_recPerPage, m_sort, pp2filter, undefined, params);
+ m_paz.search(m_query, m_perpage, m_sort, pp2filter, undefined, params);
}
function loadSelect ()
{
- if (document.mkwsSelect) {
- if (document.mkwsSelect.mkwsSort)
- m_sort = document.mkwsSelect.mkwsSort.value;
- if (document.mkwsSelect.mkwsPerpage)
- m_recPerPage = document.mkwsSelect.mkwsPerpage.value;
+ var node = $('.mkwsSort.mkwsTeam_' + m_teamName);
+ if (node.length && node.val() != m_sort) {
+ debug("changing m_sort from " + m_sort + " to " + node.val());
+ m_sort = node.val();
+ }
+ node = $('.mkwsPerpage.mkwsTeam_' + m_teamName);
+ if (node.length && node.val() != m_perpage) {
+ debug("changing m_perpage from " + m_perpage + " to " + node.val());
+ m_perpage = node.val();
}
}
@@ -635,7 +600,7 @@ function team($, teamName) {
}
- function drawPager (pagerDiv, data)
+ function drawPager (data)
{
var s = '
' + M('Displaying') + ': '
+ (data.start + 1) + ' ' + M('to') + ' ' + (data.start + data.num) +
@@ -644,7 +609,7 @@ function team($, teamName) {
//client indexes pages from 1 but pz2 from 0
var onsides = 6;
- var pages = Math.ceil(m_totalRec / m_recPerPage);
+ var pages = Math.ceil(m_totalRec / m_perpage);
var firstClkbl = (m_curPage - onsides > 0)
? m_curPage - onsides
@@ -656,7 +621,7 @@ function team($, teamName) {
var prev = '<< ' + M('Prev') + ' | ';
if (m_curPage > 1)
- prev = ''
+ prev = ''
+'<< ' + M('Prev') + ' | ';
var middle = '';
@@ -665,13 +630,13 @@ function team($, teamName) {
if(i == m_curPage)
numLabel = '' + i + '';
- middle += ' '
+ middle += ' '
+ numLabel + ' ';
}
var next = ' | ' + M('Next') + ' >>';
if (pages - m_curPage > 0)
- next = ' | '
+ next = ' | '
+ M('Next') + ' >>';
var predots = '';
@@ -684,11 +649,12 @@ function team($, teamName) {
s += '
'
+ prev + predots + middle + postdots + next + '
';
- pagerDiv.innerHTML = s;
+
+ return s;
}
- mkws.showPage = function (pageNum)
+ that.showPage = function (pageNum)
{
m_curPage = pageNum;
m_paz.showPage(m_curPage - 1);
@@ -696,15 +662,15 @@ function team($, teamName) {
// simple paging functions
- mkws.pagerNext = function () {
- if (m_totalRec - m_recPerPage*m_curPage > 0) {
+ that.pagerNext = function () {
+ if (m_totalRec - m_perpage*m_curPage > 0) {
m_paz.showNext();
m_curPage++;
}
}
- mkws.pagerPrev = function () {
+ that.pagerPrev = function () {
if (m_paz.showPrev() != false)
m_curPage--;
}
@@ -930,9 +896,10 @@ function team($, teamName) {
');
}
- if ($("#mkwsRanking").length) {
+ var node = $(".mkwsRanking.mkwsTeam_" + m_teamName);
+ if (node.length) {
var ranking_data = '';
- ranking_data += '';
- $("#mkwsRanking").html(ranking_data);
+ node.html(ranking_data);
}
mkws_html_switch();
@@ -954,7 +921,21 @@ function team($, teamName) {
$(document).ready(function() { mkws.resize_page() });
}
- domReady();
+ $('.mkwsSearchForm.mkwsTeam_' + m_teamName).each(function (i, obj) {
+ debug("adding search-forms for team '" + m_teamName + "'");
+ var node = this;
+ mkws.handle_node_with_team(node, function(tname) {
+ debug("adding search-form '" + tname + "' for team '" + m_teamName + "'");
+ $(node).submit(onFormSubmitEventHandler);
+ });
+ });
+
+ node = $('.mkwsSort.mkwsTeam_' + m_teamName);
+ if (node.length)
+ node.change(onSelectDdChange);
+ node = $('.mkwsPerpage.mkwsTeam_' + m_teamName);
+ if (node.length)
+ node.change(onSelectDdChange);
// on first page, hide the termlist
$(document).ready(function() { $(".mkwsTermlists.mkwsTeam_" + m_teamName).hide(); });
@@ -1013,7 +994,7 @@ function team($, teamName) {
function mkws_html_sort() {
debug("HTML sort, m_sort = '" + m_sort + "'");
- var sort_html = '