API Docs for:
Show:

File: yui3-gallery/src/gallery-async-progress/js/async-progress.js

/**
 * @module gallery-async-progress
 */
(function (Y, moduleName) {
    'use strict';
    
    var _string_progress = 'progress',
        
        _Plugin = Y.Plugin,
        
        _invoke = Y.Array.invoke;

    /**
     * Asynchronous command runner progress plugin.
     * @class Plugin.AsyncProgress
     * @extends Plugin.Base
     * @param {Object} config Configuration Object.
     */
    _Plugin.AsyncProgress = Y.Base.create(moduleName, _Plugin.Base, [], {
        destructor: function () {
            _invoke(this._subs, 'detach');
        },
        initializer: function () {
            var completed = 0,
                host = this.get('host'),
                run = host.get('run'),
                total = run.length;
                
            this._subs = _invoke(run, 'on', 'complete', function () {
                completed += 1;
                
                /**
                 * @event progress
                 * @for Async
                 * @param {Number} completed
                 * @param {Number} total
                 */
                host.fire(_string_progress, {
                    completed: completed,
                    total: total
                });
            });
        }
    }, {
        NS: _string_progress
    });
}(Y, arguments[1]));