X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=a886bcf85f3326f0f2b34ee0cd8f29bbe1a1aa32;hb=89522ed15b98ee3d665fef7887b1a9ab87134647;hp=a3e2dcf6fd1c5576f26702b790a302aff49cf60d;hpb=58e7a7c64104914f7eab3ae74fde1a22eab79a60;p=mkws-moved-to-github.git
diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js
index a3e2dcf..a886bcf 100644
--- a/tools/htdocs/mkws.js
+++ b/tools/htdocs/mkws.js
@@ -66,19 +66,13 @@ 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
+ debug_level: 1, // Will be overridden from mkws_config, but
+ // initial value allows jQuery popup to use logging.
paz: undefined, // will be set up during initialisation
teams: {},
locale_lang: {
@@ -149,16 +143,23 @@ 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().
+//
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);
}
@@ -250,33 +232,29 @@ function team($, teamName) {
// pz2.js event handlers:
//
function my_oninit(teamName) {
- debug("init for " + teamName);
+ debug("init");
m_paz.stat();
m_paz.bytarget();
}
function my_onshow(data, teamName) {
- debug("show for " + teamName);
+ debug("show");
m_totalRec = data.merged;
- // move it out
- var pager = document.getElementById("mkwsPager");
- if (pager) {
- pager.innerHTML = "";
- pager.innerHTML +='
';
- drawPager(pager);
+
+ var pager = $(".mkwsPager.mkwsTeam_" + m_teamName);
+ if (pager.length) {
+ pager.html(drawPager(data))
}
- // navi
var results = $(".mkwsRecords.mkwsTeam_" + m_teamName);
+ if (!results.length)
+ return;
var html = [];
for (var i = 0; i < data.hits.length; i++) {
var hit = data.hits[i];
- html.push('
',
+ html.push('
',
renderSummary(hit),
'
');
if (hit.recid == m_curDetRecId) {
@@ -298,7 +276,7 @@ function team($, teamName) {
function my_onstat(data, teamName) {
- debug("stat for " + teamName);
+ debug("stat");
var stat = $('.mkwsStat.mkwsTeam_' + teamName);
if (stat.length === 0)
return;
@@ -312,7 +290,7 @@ function team($, teamName) {
function my_onterm(data, teamName) {
- debug("term for " + teamName);
+ debug("term");
var node = $(".mkwsTermlists.mkwsTeam_" + teamName);
if (node.length == 0) return;
@@ -352,11 +330,13 @@ function team($, teamName) {
for (var i = 0; i < data.length && i < max; i++) {
acc.push('
';
+
+ return s;
}
- mkws.showPage = function (pageNum)
+ that.showPage = function (pageNum)
{
m_curPage = pageNum;
m_paz.showPage(m_curPage - 1);
@@ -696,28 +676,26 @@ 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--;
}
// switching view between targets and records
- mkws.switchView = function(tname, view) {
- debug("switchView(" + tname + ", " + view + ")");
-
- var targets = $('.mkwsTargets.mkwsTeam_' + tname);
- var results = $('.mkwsResults.mkwsTeam_' + tname + ',.mkwsRecords.mkwsTeam_' + tname);
- var blanket = $('.mkwsBlanket.mkwsTeam_' + tname);
- var motd = $('.mkwsMOTD.mkwsTeam_' + tname);
+ that.switchView = function(view) {
+ var targets = $('.mkwsTargets.mkwsTeam_' + m_teamName);
+ var results = $('.mkwsResults.mkwsTeam_' + m_teamName + ',.mkwsRecords.mkwsTeam_' + m_teamName);
+ var blanket = $('.mkwsBlanket.mkwsTeam_' + m_teamName);
+ var motd = $('.mkwsMOTD.mkwsTeam_' + m_teamName);
switch(view) {
case 'targets':
@@ -733,7 +711,7 @@ function team($, teamName) {
if (motd) motd.css('display', 'none');
break;
case 'none':
- alert("mkws.switchView(" + tname + ", 'none') shouldn't happen");
+ alert("mkws.switchView(" + m_teamName + ", 'none') shouldn't happen");
if (targets) targets.css('display', 'none');
if (results) results.css('display', 'none');
if (blanket) blanket.css('display', 'none');
@@ -752,7 +730,7 @@ function team($, teamName) {
m_curDetRecId = recId;
// remove current detailed view if any
- var detRecordDiv = document.getElementById('mkwsDet_'+oldRecId);
+ var detRecordDiv = document.getElementById('mkwsDet_' + m_teamName + '_' + oldRecId);
// lovin DOM!
if (detRecordDiv)
detRecordDiv.parentNode.removeChild(detRecordDiv);
@@ -764,6 +742,7 @@ function team($, teamName) {
return;
}
// request the record
+ debug("showDetails() requesting record '" + recId + "'");
m_paz.record(recId);
}
@@ -772,7 +751,7 @@ function team($, teamName) {
{
var template = loadTemplate("Record");
var details = template(data);
- return '
' + details + '
';
+ return '
' + details + '
';
}
@@ -884,8 +863,6 @@ function team($, teamName) {
if (mkws_config.show_lang)
mkws_html_lang();
- // For some reason, doing this programmatically results in
- // document.mkwsSearchForm.mkwsQuery being undefined, hence the raw HTML.
debug("HTML search form");
// ### There is only one match here by design: fix not to bother looping
$('.mkwsSearch.mkwsTeam_' + m_teamName).each(function (i, obj) {
@@ -893,8 +870,8 @@ function team($, teamName) {
mkws.handle_node_with_team(node, function(tname) {
$(node).html('\
');
});
});
@@ -914,13 +891,13 @@ function team($, teamName) {
\
\
\
- \
+ \
\
\
- \
- \
- \
- \
+ \
+ \
+ \
+ \
\
\
\
@@ -931,9 +908,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();
+ // ### Should not be in the team code, since window size is global
if (mkws_config.responsive_design_width) {
// Responsive web design - change layout on the fly based on
// current screen width. Required for mobile devices.
@@ -955,15 +934,26 @@ function team($, teamName) {
$(document).ready(function() { mkws.resize_page() });
}
- debug("before domReady()");
- domReady();
- debug("after 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(); });
var motd = $(".mkwsMOTD.mkwsTeam_" + m_teamName);
var container = $(".mkwsMOTDContainer.mkwsTeam_" + m_teamName);
- debug("for team '" + m_teamName + "', motd=" + motd + "(" + motd.length + "), container=" + container + "(" + container.length + ")");
if (motd.length && container.length) {
// Move the MOTD from the provided element down into the container
motd.appendTo(container);
@@ -1017,7 +1007,7 @@ function team($, teamName) {
function mkws_html_sort() {
debug("HTML sort, m_sort = '" + m_sort + "'");
- var sort_html = '