/** * Class that represents a single multi load. * @class AssetLoad * @memberof jibo.loader */ /** * Debugging Keep track of how many we've created * @type {int} * @name jibo.loader.AssetLoad.ID * @static * @private */ /** * @constructor * @param {jibo.loader.AssetManager} manager Reference to the manager. * @private */ /** * Reference to the Task Manager. * @type {jibo.loader.AssetManager} * @name jibo.loader.AssetLoad#manager * @private */ /** * How to display the results, either as single (0), map (1) or list (2). * @type {int} * @name jibo.loader.AssetLoad#mode * @default 1 * @private */ /** * The maximum number of loads, 0 for no max limit (all at once) * @type {Number} * @name jibo.loader.AssetLoad#maxLoads * @readOnly * @private */ /** * Name of cache to apply to all items in the load * @type {String} * @name jibo.loader.AssetLoad#cacheAll * @default null * @private */ /** * `true` if we load all the resources remotely. * @type {Boolean} * @name jibo.loader.AssetLoad#remoteAll * @default false * @private */ /** * Number of milliseconds to timeout all remote requests * @type {Number} * @name jibo.loader.AssetLoad#timeoutAll * @default 0 * @private */ /** * Items that have already been loaded and added to the cache. Stored for removal * if the load is canceled before completion, as well accessing by the code that initiated * the load. * @type {jibo.loader.AssetToken[]} * @name jibo.loader.AssetLoad#loadedTokens * @private */ /** * The list of tasks to load. * @type {Array} * @name jibo.loader.AssetLoad#tasks * @private */ /** * The results to return when we're done. * @type {Array|Object} * @name jibo.loader.AssetLoad#results */ /** * `true` if the load is currently running. * @type {Boolean} * @name jibo.loader.AssetLoad#running * @default false */ /** * The total number of assets loaded. * @type {int} * @name jibo.loader.AssetLoad#numLoaded * @default 0 * @readOnly * @private */ /** * The current number of . * @type {int} * @name jibo.loader.AssetLoad#numLoading * @default 0 * @readOnly * @private */ /** * The total number of assets. * @type {int} * @name jibo.loader.AssetLoad#total * @default 0 * @readOnly * @private */ /** * When an asset is finished. * @event jibo.loader.AssetLoad#taskDone * @param {*} result The loader result. * @param {object} originalAsset The original load asset. * @param {jibo.loader.AssetLoad} load This loader to add additional assets to. */ /** * When all assets have been completely loaded. * @event jibo.loader.AssetLoad#complete * @param {Array|Object} results The results of load. */ /** * Checks how many assets have finished loading. * @event jibo.loader.AssetLoad#progress * @param {number} percentage The amount loaded from 0 to 1. */ /** * List of AssetToken objects for all loads that will be or have been performed. * @type {jibo.loader.AssetToken[]} * @name jibo.loader.AssetLoad#tokens */ /** * Debugging purposes. * @method jibo.loader.AssetLoad#toString * @return {String} * @private */ /** * Initializes the Load. * @method jibo.loader.AssetLoad#setup * @param {object|array} assets The collection of assets to load. * @param {object} [options] The loading options. * @param {Number} [options.maxLoads=4] `0` to start all load requests at once, any other to limit. * @param {Boolean} [options.autoStart=true] `true` to start running automatically. * @param {Boolean|String} [options.cacheAll=false] `true` to cache all load results, `false` to allow assets to cache themselves. * @param {Boolean|String} [options.remoteAll=false] `true` to make all requests remote, `false` to allow assets to remote themselves. * @private */ /** * Cancel the load progress. * @method jibo.loader.AssetLoad#cancel */ /** * Cancel the load progress. * @method jibo.loader.AssetLoad#cancelToken * @private */ /** * Starts the load process. * @method jibo.loader.AssetLoad#start */ /** * Sets back to the original state. * @method jibo.loader.AssetLoad#reset * @private */ /** * Adds loads to an ongoing load. Call this during callbacks/events for individual task * completion. * @method jibo.loader.AssetLoad#addAssets * @param {Object|Array} assets The assets to load. * @return {jibo.loader.AssetToken[]} The asset tokens of the newly added assets (if they are cached). */ /** * Creates a list of tasks from assets. * @method jibo.loader.AssetLoad#addTasks * @private * @param {Object|Array} assets The assets to load. * @param {jibo.loader.AssetToken[]} [tokenOut] An array to add new asset tokens to. */ /** * Converts assets into object defaults. * @method jibo.loader.AssetLoad#applyDefaults * @private * @static * @param {*} asset The function to convert. * @return {Object} The object asset to use. */ /** * Loads a single asset. * @method jibo.loader.AssetLoad#addTask * @private * @param {Object} asset The asset to load. * Can either be an object, URL/path, or async function. * @return {Task} New task instance. */ /** * Gets the Task definition for an asset. * @method jibo.loader.AssetLoad#getTaskByAsset * @private * @static * @param {Object} asset The asset to check. * @return {Function} The Task class. */ /** * Runs the next task that's waiting. * @method jibo.loader.AssetLoad#nextTask * @private */ /** * Handler when a task has completed. * @method jibo.loader.AssetLoad#taskDone * @private * @param {Task} task Reference to original task. * @param {Error} err The error thrown by load. * @param {*} [result] The result of load. */ /** * Gets an empty assets collection. * @method jibo.loader.AssetLoad#getAssetsContainer * @private * @param {int} mode The mode. * @return {Array|Object|null} Empty container for assets. */ /** * Destroys this and discards. * @private * @method jibo.loader.AssetLoad#destroy */ /** * The result is a single result. * @property {int} jibo.loader.AssetLoad.SINGLE_MODE * @private * @final * @static * @default 0 */ /** * The result is a map of result objects. * @property {int} jibo.loader.AssetLoad.MAP_MODE * @private * @final * @static * @default 1 */ /** * The result is an array of result objects. * @property {int} jibo.loader.AssetLoad.LIST_MODE * @private * @final * @static * @default 2 */ /** * Checks if an object is a String type. * @method jibo.loader.AssetLoad.isString * @private * @param {*} obj The object to check. * @return {Boolean} `true` if object is a String, `false` otherwise. */ /** * Checks if an object is a function type. * @method jibo.loader.AssetLoad.isFunction * @private * @param {*} obj The object to check. * @return {Boolean} `true` if object is a function, `false` otherwise. */