X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=a96fd32fd08fb9b71bf8e0700ad5a7a4cd123dae;hb=23efd7251999817caf5e29ee9361e17c4b417dff;hp=e9da39d6fcdc323c77e83775985e47ba9a7a704e;hpb=2ff86cfc8d8fd83b34a8600f3e7bc0a4e0da60d3;p=mkws-moved-to-github.git diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js index e9da39d..a96fd32 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,7 +142,14 @@ 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; @@ -170,33 +170,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; @@ -265,13 +246,14 @@ function team($, teamName) { 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) { @@ -364,14 +346,14 @@ function team($, teamName) { function my_onrecord(data, args, teamName) { - debug("record"); + debug("record: teamName=" + teamName + ", m_teamName=" + m_teamName); // FIXME: record is async!! clearTimeout(m_paz.recordTimer); // in case on_show was faster to redraw element - var detRecordDiv = document.getElementById('mkwsDet_'+data.recid); + var detRecordDiv = document.getElementById('mkwsDet_' + teamName + '_' + data.recid); if (detRecordDiv) return; m_curDetRecData = data; - var recordDiv = document.getElementById('mkwsRecdiv_'+m_curDetRecData.recid); + var recordDiv = document.getElementById('mkwsRecdiv_' + teamName + '_' + m_curDetRecData.recid); var html = renderDetails(m_curDetRecData); recordDiv.innerHTML += html; } @@ -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); - }); - }); - - var node = $('.mkwsSort.mkwsTeam_' + m_teamName); - if (node.length) - node.change(onSelectDdChange); - node = $('.mkwsPerpage.mkwsTeam_' + m_teamName); - if (node.length) - node.change(onSelectDdChange); - } - - // when search button pressed function onFormSubmitEventHandler() { @@ -658,9 +619,9 @@ function team($, teamName) { ? firstClkbl + 2*onsides : pages; - var prev = '<< ' + M('Prev') + ' | '; + var prev = '<< ' + M('Prev') + ' | '; if (m_curPage > 1) - prev = '' + prev = '' +'<< ' + M('Prev') + ' | '; var middle = ''; @@ -673,9 +634,9 @@ function team($, teamName) { + numLabel + ' '; } - var next = ' | ' + M('Next') + ' >>'; + var next = ' | ' + M('Next') + ' >>'; if (pages - m_curPage > 0) - next = ' | ' + next = ' | ' + M('Next') + ' >>'; var predots = ''; @@ -755,7 +716,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); @@ -776,7 +737,7 @@ function team($, teamName) { { var template = loadTemplate("Record"); var details = template(data); - return '
' + details + '
'; + return '
' + details + '
'; } @@ -952,6 +913,7 @@ function team($, teamName) { 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. @@ -960,7 +922,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(); }); @@ -1134,16 +1110,8 @@ function team($, teamName) { * implement jQuery plugin $.pazpar2({}) */ function _mkws_jquery_plugin ($) { - var debug_level = 1; - function debug (string) { - if (!debug_level) - return; - - if (typeof console === "undefined" || typeof console.log === "undefined") - return; - - console.log("jquery.pazpar2: " + string); + mkws.debug("jquery.pazpar2: " + string); } function init_popup(obj) { @@ -1275,12 +1243,24 @@ function _mkws_jquery_plugin ($) { // wrapper to call team() after page load (function (j) { - function log(s) { - if (typeof console === "undefined" || typeof console.log === "undefined") { /* ARGH!!! old IE */ - return; - } - console.log(s); + mkws.debug = function (string) { + if (!mkws.debug_level) + return; + + if (typeof console === "undefined" || typeof console.log === "undefined") { /* ARGH!!! old IE */ + return; + } + + // you need to disable use strict at the top of the file!!! + if (mkws.debug_level >= 3) { + console.log(arguments.callee.caller); + } else if (mkws.debug_level >= 2) { + console.log(">>> called from function " + arguments.callee.caller.name + ' <<<'); + } + console.log(string); } + var debug = mkws.debug; + // enable before page load, so we could call it before mkws() runs _mkws_jquery_plugin(j); @@ -1308,7 +1288,7 @@ function _mkws_jquery_plugin ($) { if ($(window).width() <= width && parent.hasClass("mkwsTermlistContainer1")) { - log("changing from wide to narrow: " + $(window).width()); + debug("changing from wide to narrow: " + $(window).width()); $(".mkwsTermlistContainer1").hide(); $(".mkwsTermlistContainer2").show(); for (var tname in mkws.teams) { @@ -1319,7 +1299,7 @@ function _mkws_jquery_plugin ($) { } } else if ($(window).width() > width && parent.hasClass("mkwsTermlistContainer2")) { - log("changing from narrow to wide: " + $(window).width()); + debug("changing from narrow to wide: " + $(window).width()); $(".mkwsTermlistContainer1").show(); $(".mkwsTermlistContainer2").hide(); for (var tname in mkws.teams) { @@ -1420,11 +1400,11 @@ function _mkws_jquery_plugin ($) { * for the site. */ function authenticate_session(auth_url, auth_domain, pp2_url) { - log("Run service proxy auth URL: " + auth_url); + debug("Run service proxy auth URL: " + auth_url); if (!auth_domain) { auth_domain = pp2_url.replace(/^(https?:)?\/\/(.*?)\/.*/, '$2'); - log("guessed auth_domain '" + auth_domain + "' from pp2_url '" + pp2_url + "'"); + debug("guessed auth_domain '" + auth_domain + "' from pp2_url '" + pp2_url + "'"); } var request = new pzHttpRequest(auth_url, function(err) { @@ -1443,7 +1423,7 @@ function _mkws_jquery_plugin ($) { return; } - log("Service proxy auth successfully done"); + debug("Service proxy auth successfully done"); mkws.authenticated = true; run_auto_searches(); }); @@ -1451,13 +1431,13 @@ function _mkws_jquery_plugin ($) { function run_auto_searches() { - log("running auto searches"); + debug("running auto searches"); for (var teamName in mkws.teams) { // ### should check mkwsTermlist as well, for facet-only teams var node = $('.mkwsRecords.mkwsTeam_' + teamName); var query = node.attr('autosearch'); - log("teamName '" + teamName + "', node=" + node + ", class='" + node.className + "', query=" + query); + debug("teamName '" + teamName + "', node=" + node + ", class='" + node.className + "', query=" + query); if (query) { var sort = node.attr('sort'); @@ -1466,9 +1446,9 @@ function _mkws_jquery_plugin ($) { if (teamName) s += " [teamName '" + teamName + "']"; if (sort) s += " sorted by '" + sort + "'"; if (targets) s += " in targets '" + targets + "'"; - log(s); + debug(s); var team = mkws.teams[teamName]; - log($.toJSON(team)); + debug($.toJSON(team)); team.newSearch(query, sort, targets, teamName); } } @@ -1476,7 +1456,7 @@ function _mkws_jquery_plugin ($) { $(document).ready(function() { - log("on load ready"); + debug("on load ready"); default_mkws_config(); // Backwards compatibility: set new magic class names on any @@ -1489,7 +1469,7 @@ function _mkws_jquery_plugin ($) { var node = $('#' + id); if (node.attr('id')) { node.addClass(id); - log("added magic class to '" + node.attr('id') + "'"); + debug("added magic class to '" + node.attr('id') + "'"); } } @@ -1497,7 +1477,7 @@ function _mkws_jquery_plugin ($) { // specified, set the team to AUTO. $('[class^="mkws"],[class*=" mkws"]').each(function () { if (!this.className.match(/mkwsTeam_/)) { - log("adding AUTO team to node with class '" + this.className + "'"); + debug("adding AUTO team to node with class '" + this.className + "'"); $(this).addClass('mkwsTeam_AUTO'); } }); @@ -1509,7 +1489,7 @@ function _mkws_jquery_plugin ($) { mkws.handle_node_with_team(node, function(tname) { if (!mkws.teams[tname]) { mkws.teams[tname] = team(j, tname); - log("Made MKWS team '" + tname + "'"); + debug("Made MKWS team '" + tname + "'"); } }); });