From 071859164768563f77c49196cf1f3f4e8ff9ab3f Mon Sep 17 00:00:00 2001 From: Mike Taylor Date: Thu, 23 Jan 2014 15:43:39 +0000 Subject: [PATCH] Move Handlebars helpers out of the MKWS-specific code to the top --- tools/htdocs/mkws.js | 124 ++++++++++++++++++++++++++------------------------ 1 file changed, 64 insertions(+), 60 deletions(-) diff --git a/tools/htdocs/mkws.js b/tools/htdocs/mkws.js index fab98c7..59e6c7c 100644 --- a/tools/htdocs/mkws.js +++ b/tools/htdocs/mkws.js @@ -2,10 +2,72 @@ "use strict"; // HTML5: disable for debug_level >= 2 +// Handlebars helpers +Handlebars.registerHelper('json', function(obj) { + return $.toJSON(obj); +}); + + +Handlebars.registerHelper('translate', function(s) { + debug("translating '" + s + "'"); + return mkws.M(s); +}); + + +// We need {{attr '@name'}} because Handlebars can't parse {{@name}} +Handlebars.registerHelper('attr', function(attrName) { + return this[attrName]; +}); + + +/* + * Use as follows: {{#if-any NAME1 having="NAME2"}} + * Applicable when NAME1 is the name of an array + * The guarded code runs only if at least one element of the NAME1 + * array has a subelement called NAME2. + */ +Handlebars.registerHelper('if-any', function(items, options) { + var having = options.hash.having; + for (var i in items) { + var item = items[i] + if (!having || item[having]) { + return options.fn(this); + } + } + return ""; +}); + + +Handlebars.registerHelper('first', function(items, options) { + var having = options.hash.having; + for (var i in items) { + var item = items[i] + if (!having || item[having]) { + return options.fn(item); + } + } + return ""; +}); + + +Handlebars.registerHelper('commaList', function(items, options) { + var out = ""; + + for (var i in items) { + if (i > 0) out += ", "; + out += options.fn(items[i]) + } + + return out; +}); + + + // Some functions are visible to be called from outside code, namely // generated HTML: mkws.switchView(), showDetails(), limitTarget(), // limitQuery(), delimitTarget(), delimitQuery(), pagerPrev(), -// pagerNext(), showPage() +// pagerNext(), showPage(). Also mkws.M() is made available for the +// Handlebars helper 'translate' // Set up global mkws object. Contains a hash of session objects, @@ -123,65 +185,6 @@ function _make_mkws_team($, teamName) { debug("start running MKWS"); - Handlebars.registerHelper('json', function(obj) { - return $.toJSON(obj); - }); - - - Handlebars.registerHelper('translate', function(s) { - debug("translating '" + s + "'"); - return M(s); - }); - - - // We need {{attr '@name'}} because Handlebars can't parse {{@name}} - Handlebars.registerHelper('attr', function(attrName) { - return this[attrName]; - }); - - - /* - * Use as follows: {{#if-any NAME1 having="NAME2"}} - * Applicable when NAME1 is the name of an array - * The guarded code runs only if at least one element of the NAME1 - * array has a subelement called NAME2. - */ - Handlebars.registerHelper('if-any', function(items, options) { - var having = options.hash.having; - for (var i in items) { - var item = items[i] - if (!having || item[having]) { - return options.fn(this); - } - } - return ""; - }); - - - Handlebars.registerHelper('first', function(items, options) { - var having = options.hash.having; - for (var i in items) { - var item = items[i] - if (!having || item[having]) { - return options.fn(item); - } - } - return ""; - }); - - - Handlebars.registerHelper('commaList', function(items, options) { - var out = ""; - - for (var i in items) { - if (i > 0) out += ", "; - out += options.fn(items[i]) - } - - return out; - }); - - { /* default mkws config */ @@ -1231,6 +1234,7 @@ function _make_mkws_team($, teamName) { return mkws.locale_lang[lang][word] || word; } + mkws.M = M; // so the Handlebars helper can use it // main -- 1.7.10.4