X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=experiments%2Fspclient%2Fmkws.js;h=050475397a8c985ab231d7f1ffce60230990a68f;hb=91117c67b1a2ce7909d3ad2fb6c49b47ddd08673;hp=21cd04b3d1d57c059bc81f96f961666de0af9239;hpb=1f5c472fe0aad8f7c9526fc24b8d2626774cf5a5;p=mkws-moved-to-github.git diff --git a/experiments/spclient/mkws.js b/experiments/spclient/mkws.js index 21cd04b..0504753 100644 --- a/experiments/spclient/mkws.js +++ b/experiments/spclient/mkws.js @@ -1,18 +1,71 @@ /* A very simple client that shows a basic usage of the pz2.js */ +"use strict"; // HTML5 + +if (!mkws_config) + var mkws_config = {}; // for the guys who forgot to define mkws_config... + +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 : "/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_debug = 1; + +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", + + "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", + + "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 @@ -41,9 +94,9 @@ function my_onshow(data) { // move it out var pager = document.getElementById("pager"); pager.innerHTML = ""; - pager.innerHTML +='
Displaying: ' - + (data.start + 1) + ' to ' + (data.start + data.num) + - ' of ' + data.merged + ' (found: ' + pager.innerHTML +='
' + M('Displaying') + ': ' + + (data.start + 1) + ' ' + M('to') + ' ' + (data.start + data.num) + + ' ' + M('of') + ' ' + data.merged + ' (' + M('found') + ': ' + data.total + ')
'; drawPager(pager); // navi @@ -85,20 +138,20 @@ function my_onstat(data) { function my_onterm(data) { var termlists = []; - termlists.push('
TERMLISTS:
Sources
'); + termlists.push('
' + M('TERMLISTS') + ':
' + M('Sources') + '
'); for (var i = 0; i < data.xtargets.length && i < SourceMax; i++ ) { termlists.push('' + data.xtargets[i].name + ' (' + data.xtargets[i].freq + ')
'); } - termlists.push('
Subjects
'); + termlists.push('
' + M('Subjects') + '
'); for (var i = 0; i < data.subject.length && i < SubjectMax; i++ ) { termlists.push('' + data.subject[i].name + ' (' + data.subject[i].freq + ')
'); } - termlists.push('
Authors
'); + termlists.push('
' + M('Authors') + '
'); for (var i = 0; i < data.author.length && i < AuthorMax; i++ ) { termlists.push('' + data.author[i].name @@ -234,10 +287,10 @@ function drawPager (pagerDiv) ? firstClkbl + 2*onsides : pages; - var prev = '<< Prev | '; + var prev = '<< ' + M('Prev') + ' | '; if (curPage > 1) prev = ' | '; + +'<< ' + M('Prev') + ' | '; var middle = ''; for(var i = firstClkbl; i <= lastClkbl; i++) { @@ -249,10 +302,10 @@ function drawPager (pagerDiv) + numLabel + ' '; } - var next = ' | Next >>'; + var next = ' | ' + M('Next') + ' >>'; if (pages - curPage > 0) next = ' | '; + + M('Next') + ' >>'; var predots = ''; if (firstClkbl > 1) @@ -384,26 +437,42 @@ function mkws_html_all(data) { sort_default: "relevance", perpage_default: 20, query_width: 50, - mkws_switch: true, /* show/hide Records|Targets menu */ + switch_menu: true, /* show/hide Records|Targets menu */ + debug: 0, /* debug level for development: 0..2 */ dummy: "dummy" }; + /* set global debug flag early */ + if (data.debug !== 'undefined') { + mkws_debug = data.debug; + } else if (config.debug !== 'undefined') { + mkws_debug = config.debug; + } + /* override standard config values by function parameters */ for (var k in data) { config[k] = data[k]; + debug("Set config: " + k + ' => ' + data[k]); } - - mkws_html_switch(config); + if (mkws_config.query_width < 5 || mkws_config.query_width > 150) { + debug("Reset query width: " + mkws_config.query_width); + mkws_config.query_width = 50; + } + + mkws_set_lang(mkws_config); + mkws_html_lang(mkws_config); // For some reason, doing this programmatically results in // document.search.query being undefined, hence the raw HTML. + debug("HTML search form"); $("#mkwsSearch").html('\ -
\ - \ - \ + \ + \ + \
'); + debug("HTML records"); $("#mkwsRecords").html('\ \ \ @@ -412,10 +481,10 @@ function mkws_html_all(data) { \ \ \ -
\
\ -
\ - Sort by' + mkws_html_sort(config) + '\ - and show ' + mkws_html_perpage(config) + '\ - per page.\ + \ + ' + M('Sort by') + mkws_html_sort(config) + '\ + ' + M('and show') + ' ' + mkws_html_perpage(config) + '\ + ' + M('per page') + '.\
\
\
\ @@ -423,20 +492,30 @@ function mkws_html_all(data) {
\
\ -
'); + '); - $("#mkwsTargets").html('\ -
\ - No information available yet.\ -
'); - $("#mkwsTargets").css("display", "none"); + mkws_html_switch(config); + if (mkws_config.use_service_proxy) + mkws_service_proxy_auth(config.service_proxy_auth); - mkws_service_proxy_auth(config.service_proxy_auth); domReady(); } +function mkws_set_lang(mkws_config) { + var lang = jQuery.parseQuerystring().lang || mkws_config.lang || ""; + if (!lang || !mkws_locale_lang[lang]) { + mkws_config.lang = "" + } else { + mkws_config.lang = lang; + } + + debug("Locale language: " + (mkws_config.lang ? mkws_config.lang : "none")); + return mkws_config.lang; +} + function mkws_html_switch(config) { + debug("HTML switch"); + $("#mkwsSwitch").html($("", { href: '#', onclick: "switchView(\'records\')", @@ -449,12 +528,21 @@ function mkws_html_switch(config) { text: "Targets" })); - if (!config.mkws_switch) { + debug("HTML targets"); + $("#mkwsTargets").html('\ +
\ + 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 = ''; for(var i = 0; i < config.perpage.length; i++) { @@ -497,6 +586,8 @@ function mkws_html_perpage(config) { function mkws_service_proxy_auth(auth_url) { if (!auth_url) auth_url = "/service-proxy-auth"; + + debug("Run service proxy auth URL: " + auth_url); var jqxhr = jQuery.get(auth_url) .fail(function() { @@ -515,5 +606,74 @@ function mkws_service_proxy_auth(auth_url) { }); } +/* create locale language menu */ +function mkws_html_lang(mkws_config) { + var lang_default = "en"; + var lang = mkws_config.lang || lang_default; + var list = [lang_default]; + + for (var k in mkws_locale_lang) { + list.push(k); + } + debug("Language menu for: " + list.join(", ")); + + 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); +} + +/* 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; +} }); + +function debug(string) { + if (!mkws_debug) + return; + + var console; // IE8 quirks + if (!console) { /* ARGH!!! */ + 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) });