X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=tools%2Fhtdocs%2Fmkws.js;h=32710e7781f2a5ed9ae05b5697b0569df1474217;hb=8a5c1a1a171ed8fc2ff21f1740b6dc5c3f64c321;hp=9530afe49ffe66ca6701a1c710f0fd76dda8d30f;hpb=5c7b651bae92f6863a79666ef94678b940f9cf72;p=mkws-moved-to-github.git
diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js
index 9530afe..32710e7 100644
--- a/tools/htdocs/mkws.js
+++ b/tools/htdocs/mkws.js
@@ -6,7 +6,6 @@
// Set up namespace and some state.
var mkws = {
filters: [],
- pp2filter: null,
};
/*
@@ -101,6 +100,24 @@ mkws.debug_function = function (string) {
}
var debug = mkws.debug_function; // local alias
+
+Handlebars.registerHelper('link', function(a) {
+ var result = "";
+ for (var i in a) {
+ if (i > 0) result += "
";
+ var text = Handlebars.Utils.escapeExpression(a[i]);
+ result += '' + text + '';
+ }
+
+ return new Handlebars.SafeString(result);
+});
+
+
+Handlebars.registerHelper('json', function(obj) {
+ return JSON.stringify(obj);
+});
+
+
{
/* default mkws config */
var config_default = {
@@ -259,9 +276,9 @@ function my_onterm(data) {
if (facets[i] == "sources") {
add_single_facet(acc, "Sources", data.xtargets, SourceMax, null);
} else if (facets[i] == "subjects") {
- add_single_facet(acc, "Subjects", data.subject, SubjectMax, "su");
+ add_single_facet(acc, "Subjects", data.subject, SubjectMax, "subject");
} else if (facets[i] == "authors") {
- add_single_facet(acc, "Authors", data.author, AuthorMax, "au");
+ add_single_facet(acc, "Authors", data.author, AuthorMax, "author");
} else {
alert("bad facet configuration: '" + facets[i] + "'");
}
@@ -271,19 +288,19 @@ function my_onterm(data) {
replaceHtml(termlist, acc.join(''));
}
-function add_single_facet(acc, caption, data, max, cclIndex) {
+function add_single_facet(acc, caption, data, max, pzIndex) {
acc.push('
');
acc.push('
' + M(caption) + '
');
for (var i = 0; i < data.length && i < max; i++ ) {
acc.push('
');
acc.push('
' + data[i].name + ''
+ '
' + data[i].freq + '');
@@ -375,8 +392,24 @@ function resetPage()
function triggerSearch ()
{
- debug("triggerSearch: filters = " + JSON.stringify(mkws.filters));
- my_paz.search(document.mkwsSearchForm.mkwsQuery.value, recPerPage, curSort, mkws.pp2filter);
+ var pp2filter = "";
+ var pp2limit = "";
+
+ for (var i in mkws.filters) {
+ var filter = mkws.filters[i];
+ if (filter.id) {
+ if (pp2filter)
+ pp2filter += ",";
+ pp2filter += 'pz:id=' + filter.id;
+ } else {
+ if (pp2limit)
+ pp2limit += ",";
+ pp2limit += filter.field + "=" + filter.value.replace(/[\\|,]/g, '\\$&');
+ }
+ }
+
+ debug("triggerSearch: filters = " + JSON.stringify(mkws.filters) + ", pp2filter = " + pp2filter + ", pp2limit = " + pp2limit);
+ my_paz.search(document.mkwsSearchForm.mkwsQuery.value, recPerPage, curSort, pp2filter, undefined, { limit: pp2limit });
}
function loadSelect ()
@@ -395,8 +428,10 @@ 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();
+ resetPage();
+ loadSelect();
+ triggerSearch();
+ return false;
}
// limit by target functions
@@ -405,7 +440,6 @@ mkws.limitTarget = function (id, name)
debug("limitTarget(id=" + id + ", name=" + name + ")");
mkws.filters.push({ id: id, name: name });
redraw_navi();
- mkws.pp2filter = 'pz:id=' + id;
resetPage();
loadSelect();
triggerSearch();
@@ -430,7 +464,6 @@ mkws.delimitQuery = function (field, value)
mkws.filters = newFilters;
redraw_navi();
- mkws.pp2filter = null;
resetPage();
loadSelect();
triggerSearch();
@@ -454,7 +487,6 @@ mkws.delimitTarget = function (id)
mkws.filters = newFilters;
redraw_navi();
- mkws.pp2filter = null;
resetPage();
loadSelect();
triggerSearch();
@@ -626,7 +658,41 @@ function replaceHtml(el, html) {
function renderDetails(data, marker)
{
- var details = '
';
+ if (mkws.templateRecord === undefined) {
+ maybeLoadTemplate("Record");
+ }
+
+ var details;
+ if (mkws.templateRecord) {
+ var template = mkws.templateRecord;
+ details = template(data);
+ } else {
+ details = defaultRenderDetails(data, marker);
+ }
+
+ return '' + details + '
';
+}
+
+
+function maybeLoadTemplate(name)
+{
+ var source = $("#mkwsTemplate" + name).html();
+ if (!source) {
+ debug("no template '" + name + "': falling back to default behaviour");
+ // Mark template as not provided
+ mkws['template' + name] = 0;
+ return;
+ }
+
+ var template = Handlebars.compile(source);
+ debug("compiled template '" + name + "'");
+ mkws['template' + name] = template;
+}
+
+
+function defaultRenderDetails(data, marker)
+{
+ var details = '';
if (marker) details += ''+ marker + ' |
';
var locations = [];
@@ -644,11 +710,11 @@ function renderDetails(data, marker)
} else {
details += renderField("Location" + (locations.length == 1 ? "" : "s"), locations);
}
- details += '
';
-
+ details += '
';
return details;
}
+
function renderField(caption, data, data2, data3) {
if (data === undefined) {
return "";