- :
.
MicrositeMedia.ImagePreLoader = function (_settings) {
var self = this;
var defaults = {
list: [],
rootpath: '',
onFinished: function () { },
onItemFinished: null,
containerId: '#preload-container'
}
this.settings = $.extend(defaults, _settings);
this.progressElm = 'preloadProgressIndicator';
var listSize = _settings.list.length;
MicrositeUtils.Logger.log("listSize: " + listSize);
this.current = 0;
this.init = function () {
$(this.settings.containerId).show();
this.loadNext();
}
var loadList = [];
var curImg = new Image();
this.loadNext = function () {
if (listSize && listSize != 0) {
var key = this.settings.list.shift();
curImg.src = this.settings.rootpath + key;
curImg.onerror = function () {
MicrositeUtils.Logger.log("Error while loading image" + curImg.src.toString());
}
curImg.onload = function () {
loadList.push(curImg.src);
if (self.settings.onItemFinished) {
self.settings.onItemFinished(self.current, curImg.src);
}
self.current += 1;
self.updateProgressIndicator(curImg.src, self.current, listSize);
MicrositeUtils.Logger.log("loading image " + self.current + "/" + listSize);
if (self.current == listSize) {
self.complete();
}
else {
self.loadNext();
}
};
}
else {
MicrositeUtils.Logger.log("ImageLoader.loadNext(): nothing to load!");
}
}
this.complete = function () {
$(this.settings.containerId).fadeOut('slow', function () {
if (self.settings.onFinished) self.settings.onFinished();
});
}
this.updateProgressIndicator = function (text, idx, max) {
var elm = this.progressElm;
var percent = (Math.round((idx / max) * 100)) + "%";
if (!document.getElementById(elm)) {
$('<div id="' + elm + '"></div>')
.appendTo(this.settings.containerId);
}
$('#' + elm).html(percent);
}
}
:
this.imagePreloader = new MicrositeMedia.ImagePreLoader({
list: preloadList,
rootpath: self.appPath + '/assets/images',
onFinished: function () {
self.LoadInitialSection();
},
onItemFinished: function (item, src) {
}
});
this.imagePreloader.init();
list - .
rootpath, , , . .
containerId preloader, . , .
onFinished , , . , .
onItemFinished - , , .
MicrositeUtils.Logger.log .