Вход Регистрация
Файл: public/js/3rd_party/progressbar/progressbar.js
Строк: 604
<?php
/**
 * Simple wrapper for IPBs use
 * options
 * 
 */
IPBProgressBar = Class.create( {
    
initialize: function( options )
    {
        
this.controlbar null;
        
this.counter 0;
        
this.lastId  0;
        
this.options = {
               
title"Processing",
               
totalnull,
               
pergonull,
               
ajaxUrl''
            
}
        
        
Object.extend(this.options,options || {});
        
        
this.current 0;
        
this.done    0;
        
        
/* inc css */
        
curUrl = $('progressbarScript').readAttribute('src').replace(/progressbar.js/, '' );
        
        $$(
'head')[0].insert( new Element'link', { type'text/css'rel'stylesheet'media'screen'hrefcurUrl 'progressbar.css' } ) )
    },
    
    
show: function()
    {
        if ( $(
'showProgressBar_popup') )
        {
            $(
'showProgressBar_popup').remove();
        }
        
        new 
ipb.Popup'showProgressBar', {  type'pane',
                                             
initial"<h3>" this.options.title "</h3><div id='progresswrapper'><div id='progress_bar'></div><div id='progressmsg'>Ready...</div></div>",
                                             
stemfalse,
                                             
hideAtStartfalse,
                                             
hideClosefalse,
                                             
deferfalse,
                                             
w200 } );
        
        
/* Give it a chance to appear */
        
setTimeoutthis._show.bind(this), 150 );
    },
    
    
_show: function()
    {
        
this.controlbar = new Control.ProgressBar('progress_bar' );
        
        if ( 
this.options.total === null || this.options.pergo === null )
        {
            
this.getOptionsViaAjax();
        }
        else
        {
            
this.runAjax();
        }
    },
    
    
runAjax: function()
    {
        
/* Pings ajax, expects json back:
         * status: (processing, done, error)
         * msg: (Optional message to show)
         * lastId: (last ID processed)
         *  */
        
Debug.writethis.options.ajaxUrl '&pb_act=fire&pb_pergo=' this.options.pergo '&pb_lastId=' this.lastId '&pb_done=' this.done );
        
        new 
Ajax.Request(     this.options.ajaxUrl '&pb_act=fire&pb_pergo=' this.options.pergo '&pb_lastId=' this.lastId '&pb_done=' this.done,
                             {
                                
method'get',
                                
evalJSON'force',
                                
onSuccess: function(t)
                                {
                                    
json t.responseJSON;
                                    
                                    if ( 
t.responseJSON['error'] )
                                    {
                                        
alertt.responseJSON['error'] );
                                    }
                                    else
                                    {
                                        if ( 
json['status'] == 'done' )
                                        {
                                            
Debug.write"Done");
                                            
this.finish();
                                        }
                                        else if ( 
json['status'] == 'error' )
                                        {
                                            
this.finish"An error occured " json['msg'] );
                                        }
                                        else
                                        {
                                        
                                            
/* We're still processing, so.. */
                                            
this.lastId json['lastId'];
                                            
this.done  += this.options.pergo;
                                            
                                            
num 0;
                                            
                                            if ( 
this.done >= this.options.total )
                                            {
                                                
num 100;
                                            }
                                            else
                                            {
                                                
num Math.round( ( 100 this.options.total ) * this.done );
                                            }
                                            
                                            
/* Increment bar */
                                            
this.controlbar.setProgressnum );
                                            
                                            
/* Update message */
                                            
this.updateStatus( ( json['msg'] ) ? json['msg'] : "Processed " this.done " of " this.options.total '...' );
        
                                            
/* Go again! */
                                            
this.runAjax();
                                        }
                                    }
                                }.
bind(this)
                            }
                        );
    },
    
    
/**
     * fetch data via ajax. Expects json['pergo'] json['total']
     */
    
getOptionsViaAjax: function()
    {
        
this.updateStatus"Fetching details..." );
        
        
Debug.writethis.options.ajaxUrl '&pb_act=getOptions' );
        
        
// Send AJAX request
        
new Ajax.Request(     this.options.ajaxUrl '&pb_act=getOptions',
                             {
                                
method'get',
                                
evalJSON'force',
                                
onSuccess: function(t)
                                {
                                    
json t.responseJSON;
                                    
                                    
Debug.dirjson );
                                    
                                    if ( 
t.responseJSON['error'] )
                                    {
                                        
alertt.responseJSON['error'] );
                                    }
                                    else
                                    {
                                        if ( 
json['total'] && json['pergo'] )
                                        {
                                            
this.options.total parseIntjson['total'] );
                                            
this.options.pergo parseIntjson['pergo'] );
                                            
                                            
this.runAjax();
                                        }
                                        else
                                        {
                                            
Debug.write"No data found, so assume nothing to rebuild");
                                            
this.finish();
                                        }
                                    }
                                }.
bind(this)
                            }
                        );
    },
    
    
/**
     * Updates status innit
     */
    
updateStatus: function( msg )
    {
        $(
'progressmsg').updatemsg );
    },
    
    
/**
     * Finish
     */
    
finish: function( msg )
    {
        
msg msg msg "Finished";
        
        
this.updateStatusmsg );
        
        
this.controlbar.setProgress(0);
    }


} );

/**
 * @author Ryan Johnson <http://syntacticx.com/>
 * @copyright 2008 PersonalGrid Corporation <http://personalgrid.com/>
 * @package LivePipe UI
 * @license MIT
 * @url http://livepipe.net/core
 * @require prototype.js
 */

if(typeof(Control) == 'undefined')
    
Control = {};
    
var 
$proc = function(proc){
    return 
typeof(proc) == 'function' proc : function(){return proc};
};

var 
$value = function(value){
    return 
typeof(value) == 'function' value() : value;
};

Object.Event = {
    
extend: function(object){
        
object._objectEventSetup = function(event_name){
            
this._observers this._observers || {};
            
this._observers[event_name] = this._observers[event_name] || [];
        };
        
object.observe = function(event_name,observer){
            if(
typeof(event_name) == 'string' && typeof(observer) != 'undefined'){
                
this._objectEventSetup(event_name);
                if(!
this._observers[event_name].include(observer))
                    
this._observers[event_name].push(observer);
            }else
                for(var 
e in event_name)
                    
this.observe(e,event_name[e]);
        };
        
object.stopObserving = function(event_name,observer){
            
this._objectEventSetup(event_name);
            if(
event_name && observer)
                
this._observers[event_name] = this._observers[event_name].without(observer);
            else if(
event_name)
                
this._observers[event_name] = [];
            else
                
this._observers = {};
        };
        
object.observeOnce = function(event_name,outer_observer){
            var 
inner_observer = function(){
                
outer_observer.apply(this,arguments);
                
this.stopObserving(event_name,inner_observer);
            }.
bind(this);
            
this._objectEventSetup(event_name);
            
this._observers[event_name].push(inner_observer);
        };
        
object.notify = function(event_name){
            
this._objectEventSetup(event_name);
            var 
collected_return_values = [];
            var 
args $A(arguments).slice(1);
            try{
                for(var 
0this._observers[event_name].length; ++i)
                    
collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args) || null);
            }catch(
e){
                if(
== $break)
                    return 
false;
                else
                    throw 
e;
            }
            return 
collected_return_values;
        };
        if(
object.prototype){
            
object.prototype._objectEventSetup object._objectEventSetup;
            
object.prototype.observe object.observe;
            
object.prototype.stopObserving object.stopObserving;
            
object.prototype.observeOnce object.observeOnce;
            
object.prototype.notify = function(event_name){
                if(
object.notify){
                    var 
args $A(arguments).slice(1);
                    
args.unshift(this);
                    
args.unshift(event_name);
                    
object.notify.apply(object,args);
                }
                
this._objectEventSetup(event_name);
                var 
args $A(arguments).slice(1);
                var 
collected_return_values = [];
                try{
                    if(
this.options && this.options[event_name] && typeof(this.options[event_name]) == 'function')
                        
collected_return_values.push(this.options[event_name].apply(this,args) || null);
                    for(var 
0this._observers[event_name].length; ++i)
                        
collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args) || null);
                }catch(
e){
                    if(
== $break)
                        return 
false;
                    else
                        throw 
e;
                }
                return 
collected_return_values;
            };
        }
    }
};

/* Begin Core Extensions */

//Element.observeOnce
Element.addMethods({
    
observeOnce: function(element,event_name,outer_callback){
        var 
inner_callback = function(){
            
outer_callback.apply(this,arguments);
            
Element.stopObserving(element,event_name,inner_callback);
        };
        
Element.observe(element,event_name,inner_callback);
    }
});

//mouse:wheel
(function(){
    function 
wheel(event){
        var 
deltaelementcustom_event;
        
// normalize the delta
        
if (event.wheelDelta) { // IE & Opera
            
delta event.wheelDelta 120;
        } else if (
event.detail) { // W3C
            
delta =- event.detail 3;
        }
        if (!
delta) { return; }
        
element Event.extend(event).target;
        
element Element.extend(element.nodeType === Node.TEXT_NODE element.parentNode element);
        
custom_event element.fire('mouse:wheel',{ deltadelta });
        if (
custom_event.stopped) {
            
Event.stop(event);
            return 
false;
        }
    }
    
document.observe('mousewheel',wheel);
    
document.observe('DOMMouseScroll',wheel);
})();

/* End Core Extensions */

//from PrototypeUI
var IframeShim = Class.create({
    
initialize: function() {
        
this.element = new Element('iframe',{
            
style'position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);display:none',
            
src'javascript:void(0);',
            
frameborder
        
});
        $(
document.body).insert(this.element);
    },
    
hide: function() {
        
this.element.hide();
        return 
this;
    },
    
show: function() {
        
this.element.show();
        return 
this;
    },
    
positionUnder: function(element) {
        var 
element = $(element);
        var 
offset element.cumulativeOffset();
        var 
dimensions element.getDimensions();
        
this.element.setStyle({
            
leftoffset[0] + 'px',
            
topoffset[1] + 'px',
            
widthdimensions.width 'px',
            
heightdimensions.height 'px',
            
zIndexelement.getStyle('zIndex') - 1
        
}).show();
        return 
this;
    },
    
setBounds: function(bounds) {
        for(
prop in bounds)
            
bounds[prop] += 'px';
        
this.element.setStyle(bounds);
        return 
this;
    },
    
destroy: function() {
        if(
this.element)
            
this.element.remove();
        return 
this;
    }
});

/**
 * @author Ryan Johnson <http://syntacticx.com/>
 * @copyright 2008 PersonalGrid Corporation <http://personalgrid.com/>
 * @package LivePipe UI
 * @license MIT
 * @url http://livepipe.net/control/progressbar
 * @require prototype.js, livepipe.js
 */

/*global document, Prototype, Ajax, Class, PeriodicalExecuter, $, $A, Control */

if(typeof(Prototype) == "undefined") {
    throw 
"Control.ProgressBar requires Prototype to be loaded."; }
if(
typeof(Object.Event) == "undefined") {
    throw 
"Control.ProgressBar requires Object.Event to be loaded."; }

Control.ProgressBar = Class.create({
    
initialize: function(container,options){
        
this.progress 0;
        
this.executer false;
        
this.active false;
        
this.poller false;
        
this.container = $(container);
        
this.containerWidth this.container.getDimensions().width - (parseInt(this.container.getStyle('border-right-width').replace(/px/,''), 10) + parseInt(this.container.getStyle('border-left-width').replace(/px/,''), 10));
        
this.progressContainer = $(document.createElement('div'));
        
this.progressContainer.setStyle({
            
widththis.containerWidth 'px',
            
height'100%',
            
position'absolute',
            
top'0px',
            
right'0px'
        
});
       
        
this.container.appendChild(this.progressContainer);
        
this.options = {
            
afterChangePrototype.emptyFunction,
            
interval0.25,
            
step1,
            
classNames: {
                
active'progress_bar_active',
                
inactive'progress_bar_inactive'
            
}
        };
        
Object.extend(this.options,options || {});
        
this.container.addClassName(this.options.classNames.inactive);
        
this.active false;
    },
    
setProgress: function(value){
        
this.progress value;
        
this.draw();
        if(
this.progress >= 100) {
            
this.stop(false); }
        
this.notify('afterChange',this.progress,this.active);
    },
    
poll: function (urlintervalajaxOptions){
        
// Extend the passed ajax options and success callback with our own.
        
ajaxOptions ajaxOptions || {};
        var 
success ajaxOptions.onSuccess || Prototype.emptyFunction;
        
ajaxOptions.onSuccess success.wrap(function (callOriginalrequest) {
            
this.setProgress(parseInt(request.responseText10));
            if(!
this.active) { this.poller.stop(); }
            
callOriginal(request);
        }).
bind(this);

        
this.active true;
        
this.poller = new PeriodicalExecuter(function(){
            var 
= new Ajax.Request(urlajaxOptions);
        }.
bind(this),interval || 3);
    },
    
start: function(){
        
this.active true;
        
this.container.removeClassName(this.options.classNames.inactive);
        
this.container.addClassName(this.options.classNames.active);
        
this.executer = new PeriodicalExecuter(this.step.bind(this,this.options.step),this.options.interval);
    },
    
stop: function(reset){
        
this.active false;
        if(
this.executer) {
            
this.executer.stop(); }
        
this.container.removeClassName(this.options.classNames.active);
        
this.container.addClassName(this.options.classNames.inactive);
        if (
typeof reset  === 'undefined' || reset === true) {
            
this.reset(); }
    },
    
step: function(amount){
        
this.active true;
        
this.setProgress(Math.min(100,this.progress amount));
    },
    
reset: function(){
        
this.active false;
        
this.setProgress(0);
    },
    
draw: function(){
        
this.progressContainer.setStyle({
            
width: (this.containerWidth Math.floor((parseInt(this.progress10) / 100) * this.containerWidth)) + 'px'
        
});
    },
    
notify: function(event_name){
        if(
this.options[event_name]) {
            return [
this.options[event_name].apply(this.options[event_name],$A(arguments).slice(1))]; }
    }
});
Object.Event.extend(Control.ProgressBar);
?>
Онлайн: 0
Реклама