Transition.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. //>>built
  2. define("dojox/app/controllers/Transition",["require","dojo/_base/lang","dojo/_base/declare","dojo/has","dojo/on","dojo/Deferred","dojo/when","dojo/dom-style","../Controller","../utils/constraints"],function(_1,_2,_3,_4,on,_5,_6,_7,_8,_9){
  3. var _a;
  4. return _3("dojox.app.controllers.Transition",_8,{proceeding:false,waitingQueue:[],constructor:function(_b,_c){
  5. this.events={"app-transition":this.transition,"app-domNode":this.onDomNodeChange};
  6. _1([this.app.transit||"dojox/css3/transit"],function(t){
  7. _a=t;
  8. });
  9. if(this.app.domNode){
  10. this.onDomNodeChange({oldNode:null,newNode:this.app.domNode});
  11. }
  12. },transition:function(_d){
  13. var _e=_d.viewId||"";
  14. this.proceedingSaved=this.proceeding;
  15. var _f=_e.split("+");
  16. var _10,_11;
  17. if(_f.length>0){
  18. while(_f.length>1){
  19. _10=_f.shift();
  20. _11=_2.clone(_d);
  21. _11.viewId=_10;
  22. this.proceeding=true;
  23. this.proceedTransition(_11);
  24. }
  25. _10=_f.shift();
  26. var _12=_10.split("-");
  27. if(_12.length>0){
  28. _10=_12.shift();
  29. while(_12.length>0){
  30. var _13=_12.shift();
  31. _11=_2.clone(_d);
  32. _11.viewId=_13;
  33. this._doTransition(_11.viewId,_11.opts,_11.opts.params,_d.opts.data,this.app,true,_11._doResize);
  34. }
  35. }
  36. if(_10.length>0){
  37. this.proceeding=this.proceedingSaved;
  38. _d.viewId=_10;
  39. _d._doResize=true;
  40. this.proceedTransition(_d);
  41. }
  42. }else{
  43. _d._doResize=true;
  44. this.proceedTransition(_d);
  45. }
  46. },onDomNodeChange:function(evt){
  47. if(evt.oldNode!=null){
  48. this.unbind(evt.oldNode,"startTransition");
  49. }
  50. this.bind(evt.newNode,"startTransition",_2.hitch(this,this.onStartTransition));
  51. },onStartTransition:function(evt){
  52. if(evt.preventDefault){
  53. evt.preventDefault();
  54. }
  55. evt.cancelBubble=true;
  56. if(evt.stopPropagation){
  57. evt.stopPropagation();
  58. }
  59. var _14=evt.detail.target;
  60. var _15=/#(.+)/;
  61. if(!_14&&_15.test(evt.detail.href)){
  62. _14=evt.detail.href.match(_15)[1];
  63. }
  64. this.transition({"viewId":_14,opts:_2.mixin({},evt.detail),data:evt.detail.data});
  65. },proceedTransition:function(_16){
  66. if(this.proceeding){
  67. this.app.log("in app/controllers/Transition proceedTransition push event",_16);
  68. this.waitingQueue.push(_16);
  69. this.processingQueue=false;
  70. return;
  71. }
  72. if(this.waitingQueue.length>0&&!this.processingQueue){
  73. this.processingQueue=true;
  74. this.waitingQueue.push(_16);
  75. _16=this.waitingQueue.shift();
  76. }
  77. this.proceeding=true;
  78. this.app.log("in app/controllers/Transition proceedTransition calling trigger load",_16);
  79. if(!_16.opts){
  80. _16.opts={};
  81. }
  82. var _17=_16.params||_16.opts.params;
  83. this.app.emit("app-load",{"viewId":_16.viewId,"params":_17,"callback":_2.hitch(this,function(){
  84. var _18=this._doTransition(_16.viewId,_16.opts,_17,_16.opts.data,this.app,false,_16._doResize);
  85. _6(_18,_2.hitch(this,function(){
  86. this.proceeding=false;
  87. var _19=this.waitingQueue.shift();
  88. if(_19){
  89. this.proceedTransition(_19);
  90. }
  91. }));
  92. })});
  93. },_getTransition:function(_1a,_1b,_1c){
  94. var _1d=_1a;
  95. var _1e=null;
  96. if(_1d.views[_1b]){
  97. _1e=_1d.views[_1b].transition;
  98. }
  99. if(!_1e){
  100. _1e=_1d.transition;
  101. }
  102. var _1f=_1d.defaultTransition;
  103. while(!_1e&&_1d.parent){
  104. _1d=_1d.parent;
  105. _1e=_1d.transition;
  106. if(!_1f){
  107. _1f=_1d.defaultTransition;
  108. }
  109. }
  110. return _1e||_1c.transition||_1f||"none";
  111. },_getParamsForView:function(_20,_21){
  112. var _22={};
  113. for(var _23 in _21){
  114. var _24=_21[_23];
  115. if(_2.isObject(_24)){
  116. if(_23==_20){
  117. _22=_2.mixin(_22,_24);
  118. }
  119. }else{
  120. if(_23&&_24!=null){
  121. _22[_23]=_21[_23];
  122. }
  123. }
  124. }
  125. return _22;
  126. },_doTransition:function(_25,_26,_27,_28,_29,_2a,_2b,_2c){
  127. if(!_29){
  128. throw Error("view parent not found in transition.");
  129. }
  130. this.app.log("in app/controllers/Transition._doTransition transitionTo=[",_25,"], removeView = [",_2a,"] parent.name=[",_29.name,"], opts=",_26);
  131. var _2d,_2e,_2f,_30;
  132. if(_25){
  133. _2d=_25.split(",");
  134. }else{
  135. _2d=_29.defaultView.split(",");
  136. }
  137. _2e=_2d.shift();
  138. _2f=_2d.join(",");
  139. _30=_29.children[_29.id+"_"+_2e];
  140. if(!_30){
  141. if(_2a){
  142. this.app.log("> in Transition._doTransition called with removeView true, but that view is not available to remove");
  143. return;
  144. }
  145. throw Error("child view must be loaded before transition.");
  146. }
  147. var _31=_9.getSelectedChild(_29,_30.constraint);
  148. _30.params=this._getParamsForView(_30.name,_27);
  149. if(!_2f&&_30.defaultView){
  150. _2f=_30.defaultView;
  151. }
  152. if(_2a){
  153. if(_30!==_31){
  154. this.app.log("> in Transition._doTransition called with removeView true, but that view is not available to remove");
  155. return;
  156. }
  157. _30=null;
  158. }
  159. if(_30!==_31){
  160. var _32=_9.getAllSelectedChildren(_31);
  161. for(var i=0;i<_32.length;i++){
  162. var _33=_32[i];
  163. if(_33&&_33.beforeDeactivate){
  164. this.app.log("< in Transition._doTransition calling subChild.beforeDeactivate subChild name=[",_33.name,"], parent.name=[",_33.parent.name,"], next!==current path");
  165. _33.beforeDeactivate();
  166. }
  167. }
  168. if(_31){
  169. this.app.log("< in Transition._doTransition calling current.beforeDeactivate current name=[",_31.name,"], parent.name=[",_31.parent.name,"], next!==current path");
  170. _31.beforeDeactivate(_30,_28);
  171. }
  172. if(_30){
  173. this.app.log("> in Transition._doTransition calling next.beforeActivate next name=[",_30.name,"], parent.name=[",_30.parent.name,"], next!==current path");
  174. _30.beforeActivate(_31,_28);
  175. }
  176. this.app.log("> in Transition._doTransition calling app.emit layoutView view next");
  177. if(!_2a){
  178. this.app.emit("app-layoutView",{"parent":_29,"view":_30});
  179. }
  180. if(_2b&&!_2f){
  181. this.app.emit("app-resize");
  182. }
  183. var _34=true;
  184. if(_a&&(!_2c||_31!=null)){
  185. var _35=_2.mixin({},_26);
  186. _35=_2.mixin({},_35,{reverse:(_35.reverse||_35.transitionDir===-1)?true:false,transition:this._getTransition(_29,_2e,_35)});
  187. if(_30){
  188. this.app.log(" > in Transition._doTransition calling transit for current ="+_30.name);
  189. }
  190. _34=_a(_31&&_31.domNode,_30&&_30.domNode,_35);
  191. }
  192. _6(_34,_2.hitch(this,function(){
  193. if(_30){
  194. this.app.log(" < in Transition._doTransition back from transit for next ="+_30.name);
  195. }
  196. if(_2a){
  197. this.app.emit("app-layoutView",{"parent":_29,"view":_31,"removeView":true});
  198. }
  199. var _36=_9.getAllSelectedChildren(_31);
  200. for(var i=0;i<_36.length;i++){
  201. var _37=_36[i];
  202. if(_37&&_37.beforeDeactivate){
  203. this.app.log(" < in Transition._doTransition calling subChild.afterDeactivate subChild name=[",_37.name,"], parent.name=[",_37.parent.name,"], next!==current path");
  204. _37.afterDeactivate();
  205. }
  206. }
  207. if(_31){
  208. this.app.log(" < in Transition._doTransition calling current.afterDeactivate current name=[",_31.name,"], parent.name=[",_31.parent.name,"], next!==current path");
  209. _31.afterDeactivate(_30,_28);
  210. }
  211. if(_30){
  212. this.app.log(" > in Transition._doTransition calling next.afterActivate next name=[",_30.name,"], parent.name=[",_30.parent.name,"], next!==current path");
  213. _30.afterActivate(_31,_28);
  214. }
  215. if(_2f){
  216. this._doTransition(_2f,_26,_27,_28,_30||_29,_2a,_2b,true);
  217. }
  218. }));
  219. return _34;
  220. }
  221. this.app.log("< in Transition._doTransition calling next.beforeDeactivate refresh current view next name=[",_30.name,"], parent.name=[",_30.parent.name,"], next==current path");
  222. _30.beforeDeactivate(_31,_28);
  223. this.app.log(" < in Transition._doTransition calling next.afterDeactivate refresh current view next name=[",_30.name,"], parent.name=[",_30.parent.name,"], next==current path");
  224. _30.afterDeactivate(_31,_28);
  225. this.app.log("> in Transition._doTransition calling next.beforeActivate next name=[",_30.name,"], parent.name=[",_30.parent.name,"], next==current path");
  226. _30.beforeActivate(_31,_28);
  227. this.app.log("> in Transition._doTransition calling app.triggger layoutView view next name=[",_30.name,"], removeView = [",_2a,"], parent.name=[",_30.parent.name,"], next==current path");
  228. this.app.emit("app-layoutView",{"parent":_29,"view":_30,"removeView":_2a});
  229. if(_2b&&!_2f){
  230. this.app.emit("app-resize");
  231. }
  232. this.app.log(" > in Transition._doTransition calling next.afterActivate next name=[",_30.name,"], parent.name=[",_30.parent.name,"], next==current path");
  233. _30.afterActivate(_31,_28);
  234. if(_2f){
  235. return this._doTransition(_2f,_26,_27,_28,_30,_2a);
  236. }
  237. }});
  238. });