X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=experiments%2Fspclient%2Fmkws.js;h=e3e5fe5d2955bc423b49d3568ada853c390c2a84;hb=235260b9ff89a63bdc951f53123b2bca6dbb18ea;hp=6114955ffee0caeef1ad935cde764687dffcd7a7;hpb=d37a64ffac0420df8d47270f3815ad7b71b13a96;p=mkws-moved-to-github.git diff --git a/experiments/spclient/mkws.js b/experiments/spclient/mkws.js index 6114955..e3e5fe5 100644 --- a/experiments/spclient/mkws.js +++ b/experiments/spclient/mkws.js @@ -1,17 +1,30 @@ /* A very simple client that shows a basic usage of the pz2.js */ -"use strict"; // HTML5 +"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 : "/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", @@ -28,6 +41,11 @@ var mkws_locale_lang = { "to": "von", "of": "aus", "found": "gefunden", + "Title": "Titel", + "Author": "Autor", + "Date": "Datum", + "Subject": "Schlagwort", + "Location": "Ort", "dummy": "dummy" }, @@ -36,17 +54,22 @@ var mkws_locale_lang = { "Authors": "Forfattere", "Subjects": "Emner", "Sources": "Kilder", - "TERMLISTS": "Termlisten", + "TERMLISTS": "TERMLISTS", "Next": "Næste", "Prev": "Forrige", "Search": "Søg", "Sort by": "Sorter efter", - "and show": "og show", + "and show": "og vis", "per page": "per side", - "Displaying": "Visning", + "Displaying": "Viser", "to": "til", - "of": "under", - "found": "fundet", + "of": "ud af", + "found": "fandt", + "Title": "Title", + "Author": "Forfatter", + "Date": "Dato", + "Subject": "Emneord", + "Location": "Lokation", "dummy": "dummy" } @@ -135,6 +158,9 @@ function my_onstat(data) { } function my_onterm(data) { + if (!mkws_config.termlist_menu) + return; + var termlists = []; termlists.push('
' + M('TERMLISTS') + ':
' + M('Sources') + '
'); for (var i = 0; i < data.xtargets.length && i < SourceMax; i++ ) { @@ -399,7 +425,7 @@ function renderDetails(data, marker) var details = '
'; if (marker) details += ''; if (data["md-title"] != undefined) { - details += ''; } if (data["md-date"] != undefined) - details += ''; + details += ''; if (data["md-author"] != undefined) - details += ''; + details += ''; if (data["md-electronic-url"] != undefined) details += ''; if (data["location"][0]["md-subject"] != undefined) - details += ''; + details += ''; if (data["location"][0]["@name"] != undefined) - details += ''; + details += ''; details += '
'+ marker + '
Title: '+data["md-title"]; + details += '
' + M('Title') + ': '+data["md-title"]; if (data["md-title-remainder"] !== undefined) { details += ' : ' + data["md-title-remainder"] + ' '; } @@ -409,15 +435,15 @@ function renderDetails(data, marker) details += '
Date: ' + data["md-date"] + '
' + M('Date') + ': ' + data["md-date"] + '
Author: ' + data["md-author"] + '
' + M('Author') + ': ' + data["md-author"] + '
URL: ' + data["md-electronic-url"] + '' + '
Subject: ' + data["location"][0]["md-subject"] + '
' + M('Subject') + ': ' + data["location"][0]["md-subject"] + '
Location: ' + data["location"][0]["@name"] + " (" +data["location"][0]["@id"] + ")" + '
' + M('Location') + ': ' + data["location"][0]["@name"] + " (" +data["location"][0]["@id"] + ")" + '
'; return details; } @@ -426,33 +452,57 @@ function renderDetails(data, marker) * All the HTML stuff to render the search forms and * result pages. */ -function mkws_html_all(data) { +function mkws_html_all(config) { - /* default config */ - var config = { + /* default mkws config */ + var mkws_config_default = { sort: [["relevance"], ["title:1", "title"], ["date:0", "newest"], ["date:1", "oldest"]], perpage: [10, 20, 30, 50], sort_default: "relevance", perpage_default: 20, query_width: 50, - switch: true, /* show/hide Records|Targets menu */ + switch_menu: true, /* show/hide Records|Targets menu */ + lang_menu: true, /* show/hide language menu */ + lang_display: [], /* display languages links for given languages, [] for all */ + termlist_menu: true, /* show/hide termlist */ + debug: 0, /* debug level for development: 0..2 */ dummy: "dummy" }; + /* set global debug flag early */ + if (config.debug !== 'undefined') { + mkws_debug = config.debug; + } else if (mkws_config_default.debug !== 'undefined') { + mkws_debug = mkws_config_default.debug; + } + /* override standard config values by function parameters */ - for (var k in data) { - config[k] = data[k]; + for (var k in mkws_config_default) { + if (typeof config[k] === 'undefined') + mkws_config[k] = mkws_config_default[k]; + debug("Set config: " + k + ' => ' + mkws_config[k]); } + 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); + if (mkws_config.lang_menu) + 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('\ \ \ @@ -461,7 +511,7 @@ function mkws_html_all(data) { \ \ \ -
\
\ -
\ + \ ' + M('Sort by') + mkws_html_sort(config) + '\ ' + M('and show') + ' ' + mkws_html_perpage(config) + '\ ' + M('per page') + '.\ @@ -472,8 +522,7 @@ function mkws_html_all(data) {
\
\ - '); + '); mkws_html_switch(config); if (mkws_config.use_service_proxy) @@ -482,7 +531,21 @@ function mkws_html_all(data) { 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\')", @@ -495,18 +558,21 @@ function mkws_html_switch(config) { text: "Targets" })); + debug("HTML targets"); $("#mkwsTargets").html('\
\ No information available yet.\
'); $("#mkwsTargets").css("display", "none"); - if (!config.switch) { + 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++) { @@ -549,6 +616,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() { @@ -567,6 +636,48 @@ 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 = []; + + /* 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); +} + /* locale */ function M(word) { var lang = mkws_config.lang; @@ -577,5 +688,49 @@ function M(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) });