/** * Created by robin on 10/24/15. */ (function () { 'use strict'; angular.module('luticate2Utils') .factory('luPromise', [function() { var luPromise = {}; luPromise.promises = {}; luPromise.loaders = []; luPromise.errors = []; luPromise.STATUS_RUNNING = 0; luPromise.STATUS_RESOLVED = 1; luPromise.STATUS_REJECTED = 2; luPromise.build = function(array) { luPromise[array] = {}; for (var id in luPromise.promises) { if (luPromise.promises.hasOwnProperty(id)) { var promise = luPromise.promises[id]; promise[array].forEach(function (group) { if (luPromise[array][group] == null) { luPromise[array][group] = []; } luPromise[array][group].push(promise); }); } } }; luPromise.newPromise = function(id, groups, loaderGroups, errorGroups) { return { id: id, groups: groups, loaderGroups: loaderGroups, errorGroups: errorGroups }; }; luPromise.initPromise = function(data) { var p = { loaders : [], errors: [], status: luPromise.STATUS_RUNNING, id: data.id }; if (data.groups instanceof Array) { data.groups.forEach(function (group) { p.loaders.push(group); p.errors.push(group); }); } else if (typeof data.groups === 'string') { p.loaders.push(data.groups); p.errors.push(data.groups); } if (data.loaderGroups instanceof Array) { data.loaderGroups.forEach(function (group) { p.loaders.push(group); }); } else if (typeof data.loaderGroups === 'string') { p.loaders.push(data.loaderGroups); } if (data.errorGroups instanceof Array) { data.errorGroups.forEach(function (group) { p.errors.push(group); }); } else if (typeof data.errorGroups === 'string') { p.errors.push(data.errorGroups); } luPromise.promises[data.id] = p; luPromise.build("loaders"); luPromise.build("errors"); }; luPromise.getLoadersGroup = function(group) { if (luPromise.loaders[group] == null) { return null; } return luPromise.loaders[group]; }; luPromise.getErrorsGroup = function(group) { if (luPromise.errors[group] == null) { return null; } return luPromise.errors[group]; }; luPromise.reject = function(promise, error) { luPromise.promises[promise.id].status = luPromise.STATUS_REJECTED; luPromise.promises[promise.id].value = error; }; luPromise.resolve = function(promise, data) { luPromise.promises[promise.id].status = luPromise.STATUS_RESOLVED; luPromise.promises[promise.id].value = data; }; return luPromise; }]); })();