mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 07:23:13 +00:00
Add cache and wait stack to MustacheRenderer
This commit is contained in:
@@ -1,11 +1,24 @@
|
||||
var p4 = p4 || {};
|
||||
|
||||
(function(p4){
|
||||
(function(p4, $){
|
||||
|
||||
var templates = [];
|
||||
|
||||
var waitStack = [];
|
||||
|
||||
var LoadAndRender = function(TemplateName, datas, callback) {
|
||||
|
||||
|
||||
if(waitStack[TemplateName] instanceof Array)
|
||||
{
|
||||
waitStack[TemplateName].push({ datas : datas, callback : callback });
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
waitStack[TemplateName] = [];
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: "/prod/MustacheLoader/",
|
||||
@@ -16,7 +29,16 @@ var p4 = p4 || {};
|
||||
success: function(data){
|
||||
templates[TemplateName] = data;
|
||||
|
||||
return MustacheRender(TemplateName, datas, callback);
|
||||
MustacheRender(TemplateName, datas, callback);
|
||||
|
||||
for(s in waitStack[TemplateName])
|
||||
{
|
||||
MustacheRender(TemplateName, waitStack[TemplateName][s].datas, waitStack[TemplateName][s].callback);
|
||||
}
|
||||
|
||||
waitStack[TemplateName] = null;
|
||||
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -24,12 +46,24 @@ var p4 = p4 || {};
|
||||
var MustacheRender = function(TemplateName, datas, callback) {
|
||||
if(templates[TemplateName])
|
||||
{
|
||||
return callback(Mustache.render(templates[TemplateName], datas));
|
||||
var rendered = Mustache.render(templates[TemplateName], datas);
|
||||
|
||||
if(typeof callback === 'function')
|
||||
return callback(rendered);
|
||||
else
|
||||
return rendered;
|
||||
}
|
||||
else
|
||||
return LoadAndRender(TemplateName, datas, callback);
|
||||
};
|
||||
|
||||
p4.Mustache = MustacheRender;
|
||||
var ClearCache = function() {
|
||||
templates = new Array();
|
||||
};
|
||||
|
||||
}(p4));
|
||||
p4.Mustache = {
|
||||
Render : MustacheRender,
|
||||
ClearCache : ClearCache
|
||||
};
|
||||
|
||||
}(p4, jQuery));
|
Reference in New Issue
Block a user