JSFiddle - React, Tailwind, and code Playground
by Bjolja
JavaScript
ajax.loadViewModel = function (opts) {
if (!opts) return null;
var defferedLoader = $.Deferred();
var defferedPromise = defferedLoader.promise();
if (!ajax.currentUser().IsOfflineUser() || !opts.storeName) {
defferedPromise = defferedPromise.then(function () {
var resultDef = $.Deferred();
ajax._getAjaxAsync(opts.url, opts).done(function (result) {
resultDef.resolve(result);
});
return resultDef;
});
}
if (opts.storeName) {
defferedPromise = defferedPromise.then(function () {
var resultDef = $.Deferred();
var storageFunctionToExecute = !opts.mode || opts.mode == 'list' ? data.indexedDB.getAllItemsNew : data.indexedDB.getSingleItem;
if (opts.mode == 'single') {
opts.includeKeyInResponse = true;
}
storageFunctionToExecute.call(this, opts.storeName, opts).done(function (result) {
var isArray = Object.prototype.toString.call(result) === '[object Array]';
if (!isArray || (isArray && result.length > 0)) {
resultDef.resolve(result);
} else if (opts.url) {
ajax._getAjaxAsync(opts.url, {
data: opts.data,
storeName: opts.storeName,
onAjaxload: opts.onAjaxload
}).done(function (ajaxResult) {
resultDef.resolve(ajaxResult);
});
}
});
return resultDef;
});
}
defferedPromise = defferedPromise.then(function (result) {
return ajax._mapData(result, opts);
});
defferedLoader.resolve();
return defferedPromise;
}