X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=aeb0d129f8dca8717da6753b54f8a7b4896c45a4;hb=3ef390ce1f70178ffc78957ccb74216ce169fd59;hp=bcd33db3b454aafd7951dd13d599ccd389419754;hpb=6085e5b0540822d0901ed3378582f2f80df5127c;p=mkws-moved-to-github.git diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js index bcd33db..aeb0d12 100644 --- a/tools/htdocs/mkws.js +++ b/tools/htdocs/mkws.js @@ -228,11 +228,13 @@ function team($, teamName) { m_sort = mkws_config.sort_default; debug("copied mkws_config.sort_default '" + mkws_config.sort_default + "' to m_sort"); + // ### should be in global code if (mkws_config.query_width < 5 || mkws_config.query_width > 150) { debug("Reset query width: " + mkws_config.query_width); mkws_config.query_width = 50; } + // ### should be in global code for (var key in mkws_config) { if (mkws_config.hasOwnProperty(key)) { if (key.match(/^language_/)) { @@ -272,6 +274,13 @@ function team($, teamName) { } + // Finds the node of the specified class within the current team + function findnode(selector, teamName) { + teamName ||= m_teamName; + return $(selector + '.mkwsTeam_' + m_teamName); + } + + // // pz2.js event handlers: // @@ -286,12 +295,12 @@ function team($, teamName) { debug("show"); m_totalRec = data.merged; - var pager = $(".mkwsPager.mkwsTeam_" + m_teamName); + var pager = findnode(".mkwsPager"); if (pager.length) { pager.html(drawPager(data)) } - var results = $(".mkwsRecords.mkwsTeam_" + m_teamName); + var results = findnode(".mkwsRecords"); if (!results.length) return; @@ -321,7 +330,7 @@ function team($, teamName) { function my_onstat(data, teamName) { debug("stat"); - var stat = $('.mkwsStat.mkwsTeam_' + teamName); + var stat = findnode('.mkwsStat'); if (stat.length === 0) return; @@ -335,7 +344,7 @@ function team($, teamName) { function my_onterm(data, teamName) { debug("term"); - var node = $(".mkwsTermlists.mkwsTeam_" + teamName); + var node = findnode(".mkwsTermlists"); if (node.length == 0) return; // no facets: this should never happen @@ -419,7 +428,7 @@ function team($, teamName) { function my_onbytarget(data, teamName) { debug("target"); - var targetDiv = $('.mkwsBytarget.mkwsTeam_' + teamName); + var targetDiv = findnode('.mkwsBytarget'); if (!targetDiv) { return; } @@ -449,10 +458,11 @@ function team($, teamName) { // when search button pressed + // ### This is closure, so can always just operate on its own team function onFormSubmitEventHandler() { mkws.handle_node_with_team(this, function (tname) { - var val = $('.mkwsQuery.mkwsTeam_' + tname).val(); + var val = findnode('.mkwsQuery').val(); mkws.teams[tname].newSearch(val); }); @@ -460,6 +470,8 @@ function team($, teamName) { } + // ### won't need to be externally visible once onFormSubmitEventHandler() is fixed. + // ### doesn't need windowid that.newSearch = function(query, sort, targets, windowid) { debug("newSearch: " + query); @@ -496,6 +508,7 @@ function team($, teamName) { } + // ### doesn't need windowid function triggerSearch (query, sort, targets, windowid) { var pp2filter = ""; @@ -548,12 +561,12 @@ function team($, teamName) { function loadSelect () { - var node = $('.mkwsSort.mkwsTeam_' + m_teamName); + var node = findnode('.mkwsSort'); 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); + node = findnode('.mkwsPerpage'); if (node.length && node.val() != m_perpage) { debug("changing m_perpage from " + m_perpage + " to " + node.val()); m_perpage = node.val(); @@ -637,7 +650,7 @@ function team($, teamName) { function redraw_navi () { - var navi = $('.mkwsNavi.mkwsTeam_' + m_teamName); + var navi = findnode('.mkwsNavi'); if (!navi) return; var text = ""; @@ -738,10 +751,11 @@ function team($, teamName) { // switching view between targets and records that.switchView = function(view) { - var targets = $('.mkwsTargets.mkwsTeam_' + m_teamName); + var targets = findnode('.mkwsTargets'); + // ### Fix next line to use findnode() var results = $('.mkwsResults.mkwsTeam_' + m_teamName + ',.mkwsRecords.mkwsTeam_' + m_teamName); - var blanket = $('.mkwsBlanket.mkwsTeam_' + m_teamName); - var motd = $('.mkwsMOTD.mkwsTeam_' + m_teamName); + var blanket = findnode('.mkwsBlanket'); + var motd = findnode('.mkwsMOTD'); switch(view) { case 'targets': @@ -807,9 +821,9 @@ function team($, teamName) { if (template === undefined) { // Fall back to generic template if there is no team-specific one - var node = $(".mkwsTemplate_" + name + ".mkwsTeam_" + m_teamName) + var node = findnode(".mkwsTemplate_" + name); if (!node.length) { - node = $(".mkwsTemplate_" + name + ".mkwsTeam_ALL") + node = $(".mkwsTemplate_" + name + ".mkwsTeam_ALL"); } var source = node.html(); @@ -911,22 +925,19 @@ function team($, teamName) { * All the HTML stuff to render the search forms and * result pages. */ + // ### This and other multi-word identifiers should be camelCase function mkws_html_all() { mkws_set_lang(); if (mkws_config.show_lang) mkws_html_lang(); 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) { - var node = this; - mkws.handle_node_with_team(this, function(tname) { - $(node).html('\ + mkws.handle_node_with_team(findnode('.mkwsSearch'), function(tname) { + this.html('\
\ \ \
'); - }); }); debug("HTML records"); @@ -961,7 +972,7 @@ function team($, teamName) { '); } - var node = $(".mkwsRanking.mkwsTeam_" + m_teamName); + var node = findnode(".mkwsRanking"); if (node.length) { var ranking_data = ''; ranking_data += '
'; @@ -987,26 +998,21 @@ function team($, teamName) { $(document).ready(function() { mkws.resize_page() }); } - $('.mkwsSearchForm.mkwsTeam_' + m_teamName).each(function (i, obj) { - debug("adding search-forms for team '" + m_teamName + "'"); - var node = this; - mkws.handle_node_with_team(this, function(tname) { - debug("adding search-form '" + tname + "' for team '" + m_teamName + "'"); - $(node).submit(onFormSubmitEventHandler); - }); - }); - - node = $('.mkwsSort.mkwsTeam_' + m_teamName); + var node; + node = findnode('.mkwsSearchForm'); + if (node.length) + node.submit(onFormSubmitEventHandler); + node = findnode('.mkwsSort'); if (node.length) node.change(onSelectDdChange); - node = $('.mkwsPerpage.mkwsTeam_' + m_teamName); + node = findnode('.mkwsPerpage'); 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); + $(document).ready(function() { findnode(".mkwsTermlists").hide(); }); + var motd = findnode(".mkwsMOTD"); + var container = findnode(".mkwsMOTDContainer"); if (motd.length && container.length) { // Move the MOTD from the provided element down into the container motd.appendTo(container); @@ -1043,13 +1049,13 @@ function team($, teamName) { function mkws_html_switch() { debug("HTML switch for team " + m_teamName); - var node = $(".mkwsSwitch.mkwsTeam_" + m_teamName); + var node = findnode(".mkwsSwitch"); node.append($('' + M('Records') + '')); node.append($("", { text: " | " })); node.append($('' + M('Targets') + '')); debug("HTML targets"); - var node = $(".mkwsTargets.mkwsTeam_" + m_teamName); + var node = findnode(".mkwsTargets"); node.html('\
\ No information available yet.\ @@ -1137,13 +1143,13 @@ function team($, teamName) { } } - $(".mkwsLang.mkwsTeam_" + m_teamName).html(data); + findnode(".mkwsLang").html(data); } that.run_auto_search = function() { // ### should check mkwsTermlist as well, for facet-only teams - var node = $('.mkwsRecords.mkwsTeam_' + m_teamName); + var node = findnode('.mkwsRecords'); var query = node.attr('autosearch'); if (!query) return; @@ -1180,6 +1186,7 @@ function team($, teamName) { // This function is taken from a StackOverflow answer // http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript/901144#901144 + // ### should we unify this and parseQuerystring()? function getParameterByName(name) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), @@ -1240,19 +1247,28 @@ function team($, teamName) { mkws.handle_node_with_team = function(node, callback) { - var classes = node.className; + // First branch for DOM objects; second branch for jQuery objects + var classes = node.className || node.attr('class'); + if (!classes) { + // For some reason, if we try to proceed when classes is + // undefined, we don't get an error message, but this + // function and its callers, up several stack level, + // silently return. What a crock. + mkws.debug("handle_node_with_team() called on node with no classes"); + return; + } var list = classes.split(/\s+/) - var tname, type; + var teamName, type; for (var i = 0; i < list.length; i++) { var cname = list[i]; if (cname.match(/^mkwsTeam_/)) { - tname = cname.replace(/^mkwsTeam_/, ''); + teamName = cname.replace(/^mkwsTeam_/, ''); } else if (cname.match(/^mkws/)) { type = cname.replace(/^mkws/, ''); } } - callback.call(this, tname, type); + callback.call(node, teamName, type); } @@ -1423,7 +1439,7 @@ function team($, teamName) { // elements that have the old magic IDs. var ids = [ "Switch", "Lang", "Search", "Pager", "Navi", "Results", "Records", "Targets", "Ranking", - "Termlists", "Stat" ]; + "Termlists", "Stat", "MOTD" ]; for (var i = 0; i < ids.length; i++) { var id = 'mkws' + ids[i]; var node = $('#' + id);