X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmkws-team.js;h=607b0c85eb7a89259654ceb2dbfd279ac1a7568b;hb=d6daac773616f2fd50f88b99cda793a5dd5850e9;hp=8d33d9e87cb9a1fb661f169e6902aeea0f28429d;hpb=6a8b6776618229ff0cae8b19288124daf9239463;p=mkws-moved-to-github.git
diff --git a/src/mkws-team.js b/src/mkws-team.js
index 8d33d9e..607b0c8 100644
--- a/src/mkws-team.js
+++ b/src/mkws-team.js
@@ -26,7 +26,8 @@ function team($, teamName) {
"last": $.now()
};
var m_paz; // will be initialised below
- var m_template = {};
+ var m_tempateText = {}; // widgets can register tempates to be compiled
+ var m_template = {}; // compiled templates, from any source
var m_config = mkws.objectInheritingFrom(mkws.config);
var m_widgets = {}; // Maps widget-type to object
@@ -35,6 +36,7 @@ function team($, teamName) {
// Accessor methods for individual widgets: readers
that.name = function() { return m_teamName; };
that.submitted = function() { return m_submitted; };
+ that.sortOrder = function() { return m_sortOrder; };
that.perpage = function() { return m_perpage; };
that.totalRecordCount = function() { return m_totalRecordCount; };
that.currentPage = function() { return m_currentPage; };
@@ -185,7 +187,9 @@ function team($, teamName) {
that.limitCategory = function(id) {
log("limitCategory(id=" + id + ")");
- m_filterSet.add(categoryFilter(id));
+ // Only one category filter at a time
+ m_filterSet.removeMatching(function(f) { return f.type === 'category' });
+ if (id !== '') m_filterSet.add(categoryFilter(id));
if (m_query) triggerSearch();
return false;
};
@@ -265,15 +269,17 @@ function team($, teamName) {
if (query) m_query = query;
if (sortOrder) m_sortOrder = sortOrder;
if (perpage) m_perpage = perpage;
- if (targets) m_filterSet.add(targetFilter(id, id));
+ if (targets) m_filterSet.add(targetFilter(targets, targets));
var pp2filter = m_filterSet.pp2filter();
var pp2limit = m_filterSet.pp2limit(limit);
var pp2catLimit = m_filterSet.pp2catLimit();
+ if (pp2catLimit) {
+ pp2filter = pp2filter ? pp2filter + "," + pp2catLimit : pp2catLimit;
+ }
var params = {};
if (pp2limit) params.limit = pp2limit;
- if (pp2catLimit) params.categoryfilter = pp2catLimit;
if (maxrecs) params.maxrecs = maxrecs;
if (torusquery) {
if (!mkws.config.use_service_proxy)
@@ -348,75 +354,8 @@ function team($, teamName) {
*/
function mkwsHtmlAll() {
mkwsSetLang();
- if (m_config.show_lang)
- mkwsHtmlLang();
-
- log("HTML search form");
- findnode('.mkwsSearch').html('\
-
');
-
- log("HTML records");
- // If the team has a .mkwsResults, populate it in the usual
- // way. If not, assume that it's a smarter application that
- // defines its own subcomponents, some or all of the
- // following:
- // .mkwsTermlists
- // .mkwsRanking
- // .mkwsPager
- // .mkwsNavi
- // .mkwsRecords
- findnode(".mkwsResults").html('\
-
\
-
\
-
\
- \
-
\
-
\
- \
- \
- \
- \
-
\
-
\
-
\
-
\
- \
-
\
-
\
-
');
-
- var acc = [];
- var facets = m_config.facets;
- acc.push('
' + M('Termlists') + '
');
- for (var i = 0; i < facets.length; i++) {
- acc.push('
');
- acc.push('
');
- }
- findnode(".mkwsTermlists").html(acc.join(''));
-
- var ranking_data = '';
- findnode(".mkwsRanking").html(ranking_data);
+ mkwsHtmlLang();
- mkwsHtmlSwitch();
-
- findnode('.mkwsSearchForm').submit(function() {
- var val = widgetNode('Query').val();
- newSearch(val);
- return false;
- });
-
- // on first page, hide the termlist
- $(document).ready(function() { widgetNode("Termlists").hide(); });
var container = findnode(".mkwsMOTDContainer");
if (container.length) {
// Move the MOTD from the provided element down into the container
@@ -437,9 +376,31 @@ function team($, teamName) {
return m_config.lang;
}
+ // set or re-set "lang" URL parameter
+ function lang_url(lang) {
+ var query = location.search;
+ // no query parameters? done
+ if (!query) {
+ return "?lang=" + lang;
+ }
+
+ // parameter does not exists
+ if (!query.match(/[\?&]lang=/)) {
+ return query + "&lang=" + lang;
+ }
+
+ // replace existing parameter
+ query = query.replace(/\?lang=([^]*)/, "?lang=" + lang);
+ query = query.replace(/\&lang=([^]*)/, "&lang=" + lang);
+ return query;
+ }
+
+ // dynamic URL or static page? /path/foo?query=test
/* create locale language menu */
function mkwsHtmlLang() {
+ if (!m_config.show_lang) return;
+
var lang_default = "en";
var lang = m_config.lang || lang_default;
var list = [];
@@ -473,7 +434,7 @@ function team($, teamName) {
if (lang == l) {
data += ' ' + l + ' ';
} else {
- data += ' ' + l + ' '
+ data += ' ' + l + ' '
}
}
@@ -481,64 +442,6 @@ function team($, teamName) {
}
- function mkwsHtmlSort() {
- log("HTML sort, m_sortOrder = '" + m_sortOrder + "'");
- var sort_html = '';
-
- return sort_html;
- }
-
-
- function mkwsHtmlPerpage() {
- log("HTML perpage, m_perpage = " + m_perpage);
- var perpage_html = '';
-
- return perpage_html;
- }
-
-
- function mkwsHtmlSwitch() {
- log("HTML switch for team " + m_teamName);
-
- var node = findnode(".mkwsSwitch");
- node.append($('' + M('Records') + ''));
- node.append($("", { text: " | " }));
- node.append($('' + M('Targets') + ''));
-
- log("HTML targets");
- var node = findnode(".mkwsTargets");
- node.html('\
-
\
- No information available yet.\
-
');
- node.css("display", "none");
- }
-
-
// Translation function. At present, this is properly a
// global-level function (hence the assignment to mkws.M) but we
// want to make it per-team so different teams can operate in
@@ -589,6 +492,11 @@ function team($, teamName) {
that.renderDetails = renderDetails;
+ that.registerTemplate = function(name, text) {
+ m_tempateText[name] = text;
+ };
+
+
function loadTemplate(name) {
var template = m_template[name];
@@ -604,6 +512,9 @@ function team($, teamName) {
}
if (!source) {
+ source = m_tempateText[name];
+ }
+ if (!source) {
source = defaultTemplate(name);
}