mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 15:33:15 +00:00
Add cache and wait stack to MustacheRenderer
This commit is contained in:
@@ -1,11 +1,24 @@
|
|||||||
var p4 = p4 || {};
|
var p4 = p4 || {};
|
||||||
|
|
||||||
(function(p4){
|
(function(p4, $){
|
||||||
|
|
||||||
var templates = [];
|
var templates = [];
|
||||||
|
|
||||||
|
var waitStack = [];
|
||||||
|
|
||||||
var LoadAndRender = function(TemplateName, datas, callback) {
|
var LoadAndRender = function(TemplateName, datas, callback) {
|
||||||
|
|
||||||
|
|
||||||
|
if(waitStack[TemplateName] instanceof Array)
|
||||||
|
{
|
||||||
|
waitStack[TemplateName].push({ datas : datas, callback : callback });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
waitStack[TemplateName] = [];
|
||||||
|
}
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: "/prod/MustacheLoader/",
|
url: "/prod/MustacheLoader/",
|
||||||
@@ -16,7 +29,16 @@ var p4 = p4 || {};
|
|||||||
success: function(data){
|
success: function(data){
|
||||||
templates[TemplateName] = 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) {
|
var MustacheRender = function(TemplateName, datas, callback) {
|
||||||
if(templates[TemplateName])
|
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
|
else
|
||||||
return LoadAndRender(TemplateName, datas, callback);
|
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