X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=9530afe49ffe66ca6701a1c710f0fd76dda8d30f;hb=5c7b651bae92f6863a79666ef94678b940f9cf72;hp=9be53579de3e1c7a37afee248d9efe025383ded4;hpb=3ee170c3d3498aa48f1b5b5672e6ac6ca0e864f4;p=mkws-moved-to-github.git diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js index 9be5357..9530afe 100644 --- a/tools/htdocs/mkws.js +++ b/tools/htdocs/mkws.js @@ -4,7 +4,10 @@ "use strict"; // HTML5: disable for debug_level >= 2 // Set up namespace and some state. -var mkws = {}; +var mkws = { + filters: [], + pp2filter: null, +}; /* * global config object: mkws_config @@ -176,7 +179,6 @@ var totalRec = 0; var curDetRecId = ''; var curDetRecData = null; var curSort = 'relevance'; -var curFilter = null; var submitted = false; var SourceMax = 16; var SubjectMax = 10; @@ -194,12 +196,15 @@ function my_onshow(data) { totalRec = data.merged; // move it out var pager = document.getElementById("mkwsPager"); - pager.innerHTML = ""; - pager.innerHTML +='
' + M('Displaying') + ': ' - + (data.start + 1) + ' ' + M('to') + ' ' + (data.start + data.num) + - ' ' + M('of') + ' ' + data.merged + ' (' + M('found') + ': ' - + data.total + ')
'; - drawPager(pager); + if (pager) { + pager.innerHTML = ""; + pager.innerHTML +='
' + M('Displaying') + ': ' + + (data.start + 1) + ' ' + M('to') + ' ' + (data.start + data.num) + + ' ' + M('of') + ' ' + data.merged + ' (' + M('found') + ': ' + + data.total + ')
'; + drawPager(pager); + } + // navi var results = document.getElementById("mkwsRecords"); @@ -370,7 +375,8 @@ function resetPage() function triggerSearch () { - my_paz.search(document.mkwsSearchForm.mkwsQuery.value, recPerPage, curSort, curFilter); + debug("triggerSearch: filters = " + JSON.stringify(mkws.filters)); + my_paz.search(document.mkwsSearchForm.mkwsQuery.value, recPerPage, curSort, mkws.pp2filter); } function loadSelect () @@ -386,6 +392,9 @@ function loadSelect () // limit the query after clicking the facet mkws.limitQuery = function (field, value) { + debug("limitQuery(field=" + field + ", value=" + value + ")"); + mkws.filters.push({ field: field, value: value }); + redraw_navi(); document.mkwsSearchForm.mkwsQuery.value += ' and ' + field + '="' + value + '"'; onFormSubmitEventHandler(); } @@ -393,28 +402,91 @@ mkws.limitQuery = function (field, value) // limit by target functions mkws.limitTarget = function (id, name) { - var navi = document.getElementById('mkwsNavi'); - navi.innerHTML = - 'Source: ' - + name + ''; - curFilter = 'pz:id=' + id; + debug("limitTarget(id=" + id + ", name=" + name + ")"); + mkws.filters.push({ id: id, name: name }); + redraw_navi(); + mkws.pp2filter = 'pz:id=' + id; resetPage(); loadSelect(); triggerSearch(); return false; } -mkws.delimitTarget = function () +mkws.delimitQuery = function (field, value) { - var navi = document.getElementById('mkwsNavi'); - navi.innerHTML = ''; - curFilter = null; + debug("delimitQuery(field=" + field + ", value=" + value + ")"); + var newFilters = []; + for (var i in mkws.filters) { + var filter = mkws.filters[i]; + if (filter.field && + field == filter.field && + value == filter.value) { + debug("delimitTarget() removing filter " + JSON.stringify(filter)); + } else { + debug("delimitTarget() keeping filter " + JSON.stringify(filter)); + newFilters.push(filter); + } + } + mkws.filters = newFilters; + + redraw_navi(); + mkws.pp2filter = null; + resetPage(); + loadSelect(); + triggerSearch(); + return false; +} + + +mkws.delimitTarget = function (id) +{ + debug("delimitTarget(id=" + id + ")"); + var newFilters = []; + for (var i in mkws.filters) { + var filter = mkws.filters[i]; + if (filter.id) { + debug("delimitTarget() removing filter " + JSON.stringify(filter)); + } else { + debug("delimitTarget() keeping filter " + JSON.stringify(filter)); + newFilters.push(filter); + } + } + mkws.filters = newFilters; + + redraw_navi(); + mkws.pp2filter = null; resetPage(); loadSelect(); triggerSearch(); return false; } + +function redraw_navi () +{ + var navi = document.getElementById('mkwsNavi'); + if (!navi) return; + + var text = ""; + for (var i in mkws.filters) { + if (text) { + text += " | "; + } + var filter = mkws.filters[i]; + if (filter.id) { + text += 'Source: ' + filter.name + ''; + } else { + text += filter.field + ': ' + filter.value + ''; + } + } + + navi.innerHTML = text; +} + + function drawPager (pagerDiv) { //client indexes pages from 1 but pz2 from 0 @@ -555,14 +627,23 @@ function replaceHtml(el, html) { function renderDetails(data, marker) { var details = '
'; - if (marker) details += ''; + if (marker) details += ''; + + var locations = []; + for (var i in data.location) { + locations.push(data.location[i]['@name']); + } details += renderField("Title", data["md-title"], data["md-title-remainder"], data["md-title-responsibility"]); details += renderField("Date", data["md-date"]); details += renderField("Author", data["md-author"]); details += renderField("URL", data["md-electronic-url"]); details += renderField("Subject", data["location"][0]["md-subject"]); - details += renderField("Location", data["location"][0]["@name"], data["location"][0]["@id"]); + if (locations.length == 0) { + details += ''; + } else { + details += renderField("Location" + (locations.length == 1 ? "" : "s"), locations); + } details += '
'+ marker + '
'+ marker + '
No locations for record!
'; return details; @@ -573,19 +654,27 @@ function renderField(caption, data, data2, data3) { return ""; } - if (caption == "URL") { - data = '' + data + ''; + var res = ""; + for (var i = 0; i < data.length; i++) { + var s = data[i]; + if (i > 0) + res += ", "; + + if (caption == "URL") + s = '' + s + ''; + + res += s } if (data2 != undefined) { - data = data + " (" + data2 + ")"; + res = res + " (" + data2 + ")"; } if (data3 != undefined) { - data = data + " " + data3 + ""; + res = res + " " + data3 + ""; } - return '' + M(caption) + '' + data + ''; + return '' + M(caption) + '' + res + ''; } @@ -655,7 +744,8 @@ function mkws_html_all() { mkws_html_switch(); if (mkws_config.use_service_proxy) - mkws_service_proxy_auth(mkws_config.service_proxy_auth); + mkws_service_proxy_auth(mkws_config.service_proxy_auth, + mkws_config.service_proxy_auth_domain); if (mkws_config.responsive_design_width) { // Responsive web design - change layout on the fly based on @@ -748,13 +838,13 @@ function mkws_html_perpage() { * The username/password is configured in the apache config file * for the site. */ -function mkws_service_proxy_auth(auth_url) { +function mkws_service_proxy_auth(auth_url, auth_domain) { debug("Run service proxy auth URL: " + auth_url); var request = new pzHttpRequest(auth_url, function(err) { - alert("HTTP call for authentication failed: " + err) - return; - }); + alert("HTTP call for authentication failed: " + err) + return; + }, auth_domain); request.get(null, function(data) { if (!$.isXMLDoc(data)) {