summaryrefslogtreecommitdiff
path: root/includes/js/dojox/timing/Sequence.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/timing/Sequence.js')
-rw-r--r--includes/js/dojox/timing/Sequence.js145
1 files changed, 0 insertions, 145 deletions
diff --git a/includes/js/dojox/timing/Sequence.js b/includes/js/dojox/timing/Sequence.js
deleted file mode 100644
index 4dc4bdb..0000000
--- a/includes/js/dojox/timing/Sequence.js
+++ /dev/null
@@ -1,145 +0,0 @@
-if(!dojo._hasResource["dojox.timing.Sequence"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojox.timing.Sequence"] = true;
-dojo.provide("dojox.timing.Sequence");
-dojo.experimental("dojox.timing.Sequence"); // in case it gets moved/renamed somewhere soon
-
-dojo.declare("dojox.timing.Sequence",null,{
- // summary:
- // This class provides functionality to really sequentialize
- // function calls. You need to provide a list of functions and
- // some parameters for each (like: pauseBefore) and they will
- // be run one after another. This can be very useful for slideshows
- // or alike things.
- //
- // description:
- // This array will contain the sequence defines resolved, so that
- // ie. repeat:10 will result in 10 elements in the sequence, so
- // the repeat handling is easier and we don't need to handle that
- // many extra cases. Also the doneFunction, if given is added at the
- // end of the resolved-sequences.
-
- // _defsResolved: Array
- // The resolved sequence, for easier handling.
- _defsResolved: [],
-
- // This is the time to wait before goOn() calls _go(), which
- // mostly results from a pauseAfter for a function that returned
- // false and is later continued by the external goOn() call.
- // The time to wait needs to be waited in goOn() where the
- // sequence is continued.
-
- // _goOnPause: Integer
- // The pause to wait before really going on.
- _goOnPause: 0,
-
- _running: false,
-
- go: function(/* Array */defs, /* function|Array? */doneFunction){
- // summary:
- //
- // defs: Array
- // the sequence of actions
- // doneFunction: Function|Array?
- // The function to call when done
- this._running = true;
- var self = this;
- dojo.forEach(defs, function(cur){
- if(cur.repeat > 1){
- var repeat = cur.repeat;
- for(var j=0; j<repeat ;j++){
- cur.repeat = 1;
- self._defsResolved.push(cur);
- }
- }else{
- self._defsResolved.push(cur);
- }
- });
- var last = defs[defs.length-1];
- if (doneFunction) {
- self._defsResolved.push({func: doneFunction});
- }
- // stop the sequence, this actually just sets this._running to false
- self._defsResolved.push({func: [this.stop, this]});
- this._curId = 0;
- this._go();
- },
-
- _go: function(){
- // summary: Execute one task of this._defsResolved.
- //
- // if _running was set to false stop the sequence, this is the
- // case when i.e. stop() was called.
- if(!this._running){
- return;
- }
- var cur = this._defsResolved[this._curId];
- this._curId += 1;
- // create the function to call, the func property might be an array, which means
- // [function, context, parameter1, parameter2, ...]
- function resolveAndCallFunc(func) {
- var ret = null;
- if(dojo.isArray(func)){
- // Two elements might only be given when the function+context
- // is given, this is nice for using this, ie: [this.func, this]
- if(func.length>2){
- ret = func[0].apply(func[1], func.slice(2));
- }else{
- ret = func[0].apply(func[1]);
- }
- }else{
- ret = func();
- }
- return ret;
- }
-
- if(this._curId >= this._defsResolved.length){
- resolveAndCallFunc(cur.func); // call the last function, since it is the doneFunction we dont need to handle pause stuff
- // don't go on and call this._go() again, we are done
- return;
- }
- var self = this;
- if(cur.pauseAfter){
- if(resolveAndCallFunc(cur.func)!==false){
- window.setTimeout(function() {self._go()}, cur.pauseAfter);
- }else{
- this._goOnPause = cur.pauseAfter;
- }
- }else if(cur.pauseBefore){
- var x = function(){
- if(resolveAndCallFunc(cur.func)!==false){
- self._go()
- }
- };
- window.setTimeout(x, cur.pauseBefore);
- }else{
- if(resolveAndCallFunc(cur.func)!==false){
- this._go();
- }
- }
- },
-
- goOn: function(){
- // summary: This method just provides a hook from the outside, so that
- // an interrupted sequence can be continued.
- if(this._goOnPause){
- var self = this;
- setTimeout(function(){ self._go() }, this._goOnPause);
- this._goOnPause = 0; // reset it, so if the next one doesnt set it we dont use the old pause
- }else{ this._go(); }
- },
-
- stop: function(){
- // summary: Stop the currently running sequence.
- // description:
- // This can only interrupt the sequence not the last function that
- // had been started. If the last function was i.e. a slideshow
- // that is handled inside a function that you have given as
- // one sequence item it cant be stopped, since it is not controlled
- // by this object here. In this case it would be smarter to
- // run the slideshow using a sequence object so you can also stop
- // it using this method.
- this._running = false;
- }
-});
-
-}