X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=experiments%2Fspclient%2Fmkws.js;h=5ba76924e874e07891b17f7e3ac81eea3253c381;hb=4405243cc5e5ee13712197574381bc27b393bb13;hp=0f7eba8a55d07f0bb390fa53716b770470af0ca6;hpb=d24ebfca52727d9414d69ed4a99d3a1e925b3fea;p=mkws-moved-to-github.git diff --git a/experiments/spclient/mkws.js b/experiments/spclient/mkws.js index 0f7eba8..7e6ccfb 100644 --- a/experiments/spclient/mkws.js +++ b/experiments/spclient/mkws.js @@ -1,18 +1,92 @@ /* A very simple client that shows a basic usage of the pz2.js */ +"use strict"; // HTML5: disable for debug >= 2 + +/* + * global config object: mkws_config + * + * needs to be defined in the HTML header before + * including this JS file + */ + +if (!mkws_config) + var mkws_config = {}; // for the guys who forgot to define mkws_config... + +if (typeof mkws_config.use_service_proxy === 'undefined') + mkws_config.use_service_proxy = true; + +var mkws_debug = 1; + +var pazpar2_url = mkws_config.pazpar2_url ? mkws_config.pazpar2_url : "/pazpar2/search.pz2"; +var service_proxy_url = mkws_config.service_proxy_url ? mkws_config.service_proxy_url : "http://mkws.indexdata.com/service-proxy/"; + +var pazpar2path = mkws_config.use_service_proxy ? service_proxy_url : pazpar2_url; +var usesessions = mkws_config.use_service_proxy ? false : true; + + +var mkws_locale_lang = { + "de": { + "Authors": "Autoren", + "Subjects": "Schlagwörter", + "Sources": "Daten und Quellen", + "Termlists": "Termlisten", + "Next": "Weiter", + "Prev": "Zurück", + "Search": "Suche", + "Sort by": "Sortieren nach", + "and show": "und zeige", + "per page": "pro Seite", + "Displaying": "Zeige", + "to": "von", + "of": "aus", + "found": "gefunden", + "Title": "Titel", + "Author": "Autor", + "Date": "Datum", + "Subject": "Schlagwort", + "Location": "Ort", + + "dummy": "dummy" + }, + + "da": { + "Authors": "Forfattere", + "Subjects": "Emner", + "Sources": "Kilder", + "Termlists": "Termlists", + "Next": "Næste", + "Prev": "Forrige", + "Search": "Søg", + "Sort by": "Sorter efter", + "and show": "og vis", + "per page": "per side", + "Displaying": "Viser", + "to": "til", + "of": "ud af", + "found": "fandt", + "Title": "Title", + "Author": "Forfatter", + "Date": "Dato", + "Subject": "Emneord", + "Location": "Lokation", + + "dummy": "dummy" + } +}; + // create a parameters array and pass it to the pz2's constructor // then register the form submit event with the pz2.search function // autoInit is set to true on default var my_paz = new pz2( { "onshow": my_onshow, "showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way - "pazpar2path": '/service-proxy/', + "pazpar2path": pazpar2path, "oninit": my_oninit, "onstat": my_onstat, "onterm": my_onterm, "termlist": "xtargets,subject,author", "onbytarget": my_onbytarget, - "usesessions" : false, + "usesessions" : usesessions, "showResponseType": '', // or "json" (for debugging?) "onrecord": my_onrecord } ); // some state vars @@ -39,24 +113,24 @@ function my_oninit() { function my_onshow(data) { totalRec = data.merged; // move it out - var pager = document.getElementById("pager"); + var pager = document.getElementById("mkwsPager"); pager.innerHTML = ""; - pager.innerHTML +='
Target ID | Hits | Diags | ' +'Records | State | ||||||||||||||
" + data[i].id + " | " + data[i].hits +
@@ -143,20 +242,23 @@ function my_onbytarget(data) {
////////////////////////////////////////////////////////////////////////////////
// wait until the DOM is ready
-function domReady ()
-{
- document.search.onsubmit = onFormSubmitEventHandler;
- document.search.query.value = '';
- document.select.sort.onchange = onSelectDdChange;
- document.select.perpage.onchange = onSelectDdChange;
+function domReady ()
+{
+ document.mkwsSearchForm.onsubmit = onFormSubmitEventHandler;
+ document.mkwsSearchForm.mkwsQuery.value = '';
+ if (document.mkwsSelect) {
+ document.mkwsSelect.mkwsSort.onchange = onSelectDdChange;
+ document.mkwsSelect.mkwsPerpage.onchange = onSelectDdChange;
+ }
}
// when search button pressed
-function onFormSubmitEventHandler()
+function onFormSubmitEventHandler()
{
resetPage();
loadSelect();
triggerSearch();
+ switchView('records'); // In case it's configured to start off as hidden
submitted = true;
return false;
}
@@ -178,27 +280,29 @@ function resetPage()
function triggerSearch ()
{
- my_paz.search(document.search.query.value, recPerPage, curSort, curFilter);
+ my_paz.search(document.mkwsSearchForm.mkwsQuery.value, recPerPage, curSort, curFilter);
}
function loadSelect ()
{
- curSort = document.select.sort.value;
- recPerPage = document.select.perpage.value;
+ if (document.mkwsSelect) {
+ curSort = document.mkwsSelect.mkwsSort.value;
+ recPerPage = document.mkwsSelect.mkwsPerpage.value;
+ }
}
// limit the query after clicking the facet
function limitQuery (field, value)
{
- document.search.query.value += ' and ' + field + '="' + value + '"';
+ document.mkwsSearchForm.query.value += ' and ' + field + '="' + value + '"';
onFormSubmitEventHandler();
}
// limit by target functions
function limitTarget (id, name)
{
- var navi = document.getElementById('navi');
- navi.innerHTML =
+ var navi = document.getElementById('mkwsNavi');
+ navi.innerHTML =
'Source: '
+ name + '';
navi.innerHTML += ' '; @@ -211,9 +315,9 @@ function limitTarget (id, name) function delimitTarget () { - var navi = document.getElementById('navi'); + var navi = document.getElementById('mkwsNavi'); navi.innerHTML = ''; - curFilter = null; + curFilter = null; resetPage(); loadSelect(); triggerSearch(); @@ -225,8 +329,8 @@ function drawPager (pagerDiv) //client indexes pages from 1 but pz2 from 0 var onsides = 6; var pages = Math.ceil(totalRec / recPerPage); - - var firstClkbl = ( curPage - onsides > 0 ) + + var firstClkbl = ( curPage - onsides > 0 ) ? curPage - onsides : 1; @@ -234,10 +338,10 @@ function drawPager (pagerDiv) ? firstClkbl + 2*onsides : pages; - var prev = '<< Prev | '; + var prev = '<< ' + M('Prev') + ' | '; if (curPage > 1) - prev = '' - +'<< Prev | '; + prev = '' + +'<< ' + M('Prev') + ' | '; var middle = ''; for(var i = firstClkbl; i <= lastClkbl; i++) { @@ -248,11 +352,11 @@ function drawPager (pagerDiv) middle += ' ' + numLabel + ' '; } - - var next = ' | Next >>'; + + var next = ' | ' + M('Next') + ' >>'; if (pages - curPage > 0) - next = ' | ' - +'Next >>'; + next = ' | ' + + M('Next') + ' >>'; var predots = ''; if (firstClkbl > 1) @@ -262,7 +366,7 @@ function drawPager (pagerDiv) if (lastClkbl < pages) postdots = '...'; - pagerDiv.innerHTML += ' '
+ pagerDiv.innerHTML += ' '
+ prev + predots + middle + postdots + next + ' '; } @@ -286,21 +390,29 @@ function pagerPrev() { curPage--; } -// swithing view between targets and records +// switching view between targets and records function switchView(view) { - - var targets = document.getElementById('targetview'); - var records = document.getElementById('recordview'); - + + var targets = document.getElementById('mkwsTargets'); + var records = document.getElementById('mkwsResults'); + var blanket = document.getElementById('mkwsBlanket'); + switch(view) { - case 'targetview': - targets.style.display = "block"; - records.style.display = "none"; + case 'targets': + targets.style.display = "block"; + if (records) records.style.display = "none"; + if (blanket) { blanket.style.display = "none"; } + break; + case 'records': + targets.style.display = "none"; + if (records) records.style.display = "block"; + if (blanket) { blanket.style.display = "block"; } break; - case 'recordview': - targets.style.display = "none"; - records.style.display = "block"; + case 'none': + targets.style.display = "none"; + if (records) records.style.display = "none"; + if (blanket) { blanket.style.display = "none"; } break; default: alert('Unknown view.'); @@ -309,12 +421,12 @@ function switchView(view) { // detailed record drawing function showDetails (prefixRecId) { - var recId = prefixRecId.replace('rec_', ''); + var recId = prefixRecId.replace('mkwsRec_', ''); var oldRecId = curDetRecId; curDetRecId = recId; - + // remove current detailed view if any - var detRecordDiv = document.getElementById('det_'+oldRecId); + var detRecordDiv = document.getElementById('mkwsDet_'+oldRecId); // lovin DOM! if (detRecordDiv) detRecordDiv.parentNode.removeChild(detRecordDiv); @@ -345,45 +457,383 @@ function replaceHtml(el, html) { function renderDetails(data, marker) { - var details = '
' + M(caption) + ' | ' + data + ' |
\
+ No information available yet.\
+ ');
+ $("#mkwsTargets").css("display", "none");
+
+ if (!config.switch_menu) {
+ debug("disable switch menu");
+ $("#mkwsSwitch").css("display", "none");
+ }
+}
+
+function mkws_html_sort(config) {
+ debug("HTML sort");
+ var sort_html = '';
+
+ return sort_html;
+}
+
+function mkws_html_perpage(config) {
+ debug("HTML perpage");
+ var perpage_html = '';
+
+ return perpage_html;
+}
+
+/*
+ * Run service-proxy authentication in background (after page load).
+ * The username/password is configured in the apache config file
+ * for the site.
+ */
+function mkws_service_proxy_auth(auth_url) {
+ if (!auth_url)
+ auth_url = "http://mkws.indexdata.com/service-proxy-auth";
+
+ debug("Run service proxy auth URL: " + auth_url);
+
+ var request = new pzHttpRequest(auth_url);
+ request.get(null, function(data) {
+ if (!jQuery.isXMLDoc(data)) {
+ alert("service proxy auth response document is not valid XML document, give up!");
+ return;
+ }
+ var status = $(data).find("status");
+ if (status.text() != "OK") {
+ alert("service proxy auth repsonse status: " + status.text() + ", give up!");
+ return;
+ }
+ });
+}
+
+/* create locale language menu */
+function mkws_html_lang(mkws_config) {
+ var lang_default = "en";
+ var lang = mkws_config.lang || lang_default;
+ var list = [];
+
+ /* display a list of configured languages, or all */
+ var lang_display = mkws_config.lang_display || [];
+ var hash = {};
+ for (var i = 0; i < lang_display.length; i++) {
+ hash[lang_display[i]] = 1;
+ }
+
+ for (var k in mkws_locale_lang) {
+ if (hash[k] == 1 || lang_display.length == 0)
+ list.push(k);
+ }
+
+ // add english link
+ if (lang_display.length == 0 || hash[lang_default] == 1)
+ list.push(lang_default);
+
+ debug("Language menu for: " + list.join(", "));
+
+ /* the HTML part */
+ var data = "";
+ for(var i = 0; i < list.length; i++) {
+ var l = list[i];
+
+ if (data)
+ data += ' | ';
+
+ if (lang == l) {
+ data += ' ' + l + ' ';
+ } else {
+ data += ' ' + l + ' '
+ }
+ }
+
+ $("#mkwsLang").html(data);
+}
+
+function mkws_mobile_resize () {
+ debug("resize width: " + $(window).height() + ", width: " + $(window).width());
+ var list = ["mkwsSwitch"];
+ var obj;
+ // alert($(window).width());
+
+ var width = mkws_config.responsive_design_width || 980;
+
+ if ($(window).width() <= width) {
+ for(var i = 0; i < list.length; i++) {
+ $("#" + list[i]).hide();
+ }
+
+ $("#mkwsTermlists").parent().hide();
+ obj = $("#mkwsTermlists").parent().html();
+ $("#mkwsShiftedTermlists").html("" + obj); + } else { + for(var i = 0; i < list.length; i++) { + $("#" + list[i]).show(); + } + $("#mkwsTermlists").parent().show(); + $("#mkwsShiftedTermlists").html(""); + } +}; + +/* locale */ +function M(word) { + var lang = mkws_config.lang; + + if (!lang || !mkws_locale_lang[lang]) + return word; + + return mkws_locale_lang[lang][word] ? mkws_locale_lang[lang][word] : word; +} + +/* implement jQuery.parseQuerystring() for parsing URL parameters */ +jQuery.extend({ + parseQuerystring: function() { + var nvpair = {}; + var qs = window.location.search.replace('?', ''); + var pairs = qs.split('&'); + $.each(pairs, function(i, v){ + var pair = v.split('='); + nvpair[pair[0]] = pair[1]; + }); + return nvpair; + }, + pazpar2: function(data) { + document.write('\ + \ + \ + \ + \ + '); + + mkws_html_all(mkws_config); + } }); + +function debug(string) { + if (!mkws_debug) + 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 >= 3) { + console.log(arguments.callee.caller); + } else if (mkws_debug >= 2) { + console.log(">>> called from function " + arguments.callee.caller.name + ' <<<'); + } + console.log(string); +} + +/* magic */ +$(document).ready(function() { mkws_html_all(mkws_config) }); |