[ADD] openerp.loadBundle()

bzr revid: fme@openerp.com-20140506103649-wrfa25boj2chy6gl
This commit is contained in:
Fabien Meghazi 2014-05-06 12:36:49 +02:00
parent 2b67c9c77b
commit c033b660e8
2 changed files with 44 additions and 19 deletions

View File

@ -345,31 +345,16 @@ instance.web.Session.include( /** @lends instance.web.Session# */{
load_css: function (files) {
var self = this;
_.each(files, function (file) {
$('head').append($('<link>', {
'href': self.url(file, null),
'rel': 'stylesheet',
'type': 'text/css'
}));
openerp.loadCSS(self.url(file, null));
});
},
load_js: function(files) {
var self = this;
var d = $.Deferred();
if(files.length !== 0) {
if (files.length !== 0) {
var file = files.shift();
var tag = document.createElement('script');
tag.type = 'text/javascript';
tag.src = self.url(file, null);
tag.onload = tag.onreadystatechange = function() {
if ( (tag.readyState && tag.readyState != "loaded" && tag.readyState != "complete") || tag.onload_done )
return;
tag.onload_done = true;
self.load_js(files).done(function () {
d.resolve();
});
};
var head = document.head || document.getElementsByTagName('head')[0];
head.appendChild(tag);
var url = self.url(file, null);
openerp.loadJS(url).done(d.resolve);
} else {
d.resolve();
}

View File

@ -933,6 +933,46 @@ openerp.jsonpRpc = function(url, fct_name, params, settings) {
});
};
openerp.loadCSS = function (url) {
if (!$('link[href="' + url + '"]').length) {
$('head').append($('<link>', {
'href': url,
'rel': 'stylesheet',
'type': 'text/css'
}));
}
};
openerp.loadJS = function (url) {
var def = $.Deferred();
if ($('script[src="' + url + '"]').length) {
def.resolve();
} else {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
script.onload = script.onreadystatechange = function() {
if ((script.readyState && script.readyState != "loaded" && script.readyState != "complete") || script.onload_done) {
return;
}
script.onload_done = true;
def.resolve(url);
};
script.onerror = function () {
console.error("Error loading file", script.src);
def.reject(url);
};
var head = document.head || document.getElementsByTagName('head')[0];
head.appendChild(script);
}
return def;
};
openerp.loadBundle = function (name) {
return $.when(
openerp.loadCSS('/web/css/' + name),
openerp.loadJS('/web/js/' + name)
);
};
var realSetTimeout = function(fct, millis) {
var finished = new Date().getTime() + millis;
var wait = function() {