X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=project%2Fjs%2Fapp.ui.templateManager.js;h=c880c5e79214f6ddfe8bdd96f3f93ed7399a4c9d;hb=335f789d65024a4f29b1fc71773bac03430de476;hp=463c032a0b879be6144555fbfdca2c6a6ec52159;hpb=d9b811b7a0184c4fdba886da26ab2862ca922128;p=apps%2Fweb%2Fsample%2FCallLog.git diff --git a/project/js/app.ui.templateManager.js b/project/js/app.ui.templateManager.js index 463c032..c880c5e 100644 --- a/project/js/app.ui.templateManager.js +++ b/project/js/app.ui.templateManager.js @@ -1,139 +1,187 @@ +/* +* Copyright 2013 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.1 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://floralicense.org/license/ +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + /*global tizen, $, app, ModifierManager */ + /** - * @class TemplateManager - */ +* @class TemplateManager +*/ function TemplateManager() { - 'use strict'; - this.init(); + 'use strict'; + this.init(); } (function () { // strict mode wrapper - 'use strict'; - TemplateManager.prototype = { - - /** - * Template cache - */ - cache: {}, - - /** - * UI module initialisation - */ - init: function init() { - this.modifiers = new ModifierManager().getAll(); - }, - - /** - * Returns template html (from cache) - * @param {string} tplName - * @param {string} tplParams - */ - get: function TemplateManager_get(tplName, tplParams) { - if (this.cache[tplName] !== undefined) { - return this.getCompleted(this.cache[tplName], tplParams); - } - return ''; - }, - - /** - * Load templates to cache - * @param {string} tplNames - * @param {function} onSuccess - */ - loadToCache: function TemplateManager_loadToCache(tplNames, onSuccess) { - var self = this, - cachedTemplates = 0, - tplName, - tplPath; - - if ($.isArray(tplNames)) { - - // for each template - $.each(tplNames, function (index, fileName) { - - // cache template html - if (self.cache[fileName] === undefined) { - tplName = [fileName, app.config.get('templateExtension')].join(''); - tplPath = [app.config.get('templateDir'), tplName].join('/'); - - $.ajax({ - url: tplPath, - cache: true, - dataType: 'html', - async: true, - success: function (data) { - // increase counter - cachedTemplates += 1; - - // save to cache - self.cache[fileName] = data; - - // if all templates are cached launch callback - if (cachedTemplates >= tplNames.length && typeof onSuccess === 'function') { - onSuccess(); - } - }, - error: function (jqXHR, textStatus, errorThrown) { - console.error('templateManagerError: ' + errorThrown); - } - }); - } else { - // template is already cached - cachedTemplates += 1; - // if all templates are cached launch callback - if (cachedTemplates >= tplNames.length && typeof onSuccess === 'function') { - onSuccess(); - } - } - }); - - } - }, - - /** - * Returns template completed by specified params - * @param {string} tplHtml - * @param {string} tplParams - */ - getCompleted: function TemplateManager_getCompleted(tplHtml, tplParams) { - var tplParam; - - for (tplParam in tplParams) { - if (tplParams.hasOwnProperty(tplParam)) { - tplHtml = this.passThruModifiers(tplHtml, tplParam, tplParams[tplParam]); - } - } - - return tplHtml; - }, - - passThruModifiers: function (tplHtml, tplParam, content) { - var regModOn = new RegExp('%' + tplParam + '(\\|(.+?)){1,}%', 'g'), - regModOff = new RegExp(['%', tplParam, '%'].join(''), 'g'), - regModGet = new RegExp('%' + tplParam + '\\|(.+?)%'), - regModPut = new RegExp('%' + tplParam + '\\|(.+?)%', 'g'), - specRegExp = new RegExp('\\$','g'), - modifiers, i; - - if (content && (typeof content === 'string')) { - content = content.replace(specRegExp, '$$$$'); - } - - if (regModOn.test(tplHtml)) { - modifiers = tplHtml.match(regModGet)[1].split('|'); - for (i in modifiers) { - if (this.modifiers[modifiers[i]] instanceof Function){ - content = this.modifiers[modifiers[i]](content); - } else { - console.error('unknown modifier: ' + modifiers[i]); - } - } - tplHtml = tplHtml.replace(regModPut, content); - } - tplHtml = tplHtml.replace(regModOff, content); - - return tplHtml; - } - }; - -}()); \ No newline at end of file + 'use strict'; + + TemplateManager.prototype = { + + /** + * Template cache + */ + cache: {}, + + /** + * UI module initialisation + */ + init: function init() { + this.modifiers = new ModifierManager().getAll(); + }, + + /** + * Returns template html (from cache) + * @param {string} tplName + * @param {string} tplParams + */ + get: function TemplateManager_get(tplName, tplParams) { + if (this.cache[tplName] !== undefined) { + return this.getCompleted(this.cache[tplName], tplParams); + } + return ''; + }, + + /** + * Load templates to cache + * @param {string} tplNames + * @param {function} onSuccess + */ + loadToCache: function TemplateManager_loadToCache(tplNames, onSuccess) { + var self = this, + cachedTemplates = 0, + tplName, + tplPath; + + if ($.isArray(tplNames)) { + + // for each template + $.each(tplNames, function (index, fileName) { + + // cache template html + if (self.cache[fileName] === undefined) { + tplName = [ + fileName, + app.config.get('templateExtension') + ].join(''); + tplPath = [ + app.config.get('templateDir'), + tplName + ].join('/'); + + $.ajax({ + url: tplPath, + cache: true, + dataType: 'html', + async: true, + success: function (data) { + // increase counter + cachedTemplates += 1; + + // save to cache + self.cache[fileName] = data; + + // if all templates are cached launch callback + if ( + cachedTemplates >= tplNames.length && + typeof onSuccess === 'function' + ) { + onSuccess(); + } + }, + error: function (jqXHR, textStatus, errorThrown) { + console.error( + 'templateManagerError: ' + + errorThrown + ); + } + }); + } else { + // template is already cached + cachedTemplates += 1; + // if all templates are cached launch callback + if ( + cachedTemplates >= tplNames.length && + typeof onSuccess === 'function' + ) { + onSuccess(); + } + } + }); + + } + }, + + /** + * Returns template completed by specified params + * @param {string} tplHtml + * @param {string} tplParams + */ + getCompleted: function TemplateManager_getCompleted( + tplHtml, + tplParams + ) { + var tplParam; + + for (tplParam in tplParams) { + if (tplParams.hasOwnProperty(tplParam)) { + tplHtml = this.passThruModifiers( + tplHtml, + tplParam, + tplParams[tplParam] + ); + } + } + + return tplHtml; + }, + + /** + * Returns template completed by specified params + * including modifiers + * @param {string} tplHtml + * @param {string} tplParams + * @param {string} content + */ + passThruModifiers: function (tplHtml, tplParam, content) { + var regModOn = new RegExp('%' + tplParam + '(\\|(.+?)){1,}%', 'g'), + regModOff = new RegExp(['%', tplParam, '%'].join(''), 'g'), + regModGet = new RegExp('%' + tplParam + '\\|(.+?)%'), + regModPut = new RegExp('%' + tplParam + '\\|(.+?)%', 'g'), + specRegExp = new RegExp('\\$', 'g'), + modifiers, + i; + + if (content && (typeof content === 'string')) { + content = content.replace(specRegExp, '$$$$'); + } + + if (regModOn.test(tplHtml)) { + modifiers = tplHtml.match(regModGet)[1].split('|'); + for (i in modifiers) { + if (this.modifiers[modifiers[i]] instanceof Function) { + content = this.modifiers[modifiers[i]](content); + } else { + console.error('unknown modifier: ' + modifiers[i]); + } + } + tplHtml = tplHtml.replace(regModPut, content); + } + tplHtml = tplHtml.replace(regModOff, content); + + return tplHtml; + } + }; + +}());