polardbxengine/storage/ndb/mcc/frontend/dojo/dojox/mobile/View.js

399 lines
11 KiB
JavaScript

//>>built
define("dojox/mobile/View",["dojo/_base/array","dojo/_base/config","dojo/_base/connect","dojo/_base/declare","dojo/_base/lang","dojo/_base/sniff","dojo/_base/window","dojo/_base/Deferred","dojo/dom","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dijit/registry","dijit/_Contained","dijit/_Container","dijit/_WidgetBase","./ViewController","./common","./transition","./viewRegistry"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d,_e,_f,_10,_11,_12,_13,_14,_15){
var dm=_5.getObject("dojox.mobile",true);
return _4("dojox.mobile.View",[_11,_10,_f],{selected:false,keepScrollPos:true,tag:"div",baseClass:"mblView",constructor:function(_16,_17){
if(_17){
_9.byId(_17).style.visibility="hidden";
}
},destroy:function(){
_15.remove(this.id);
this.inherited(arguments);
},buildRendering:function(){
this.domNode=this.containerNode=this.srcNodeRef||_b.create(this.tag);
this._animEndHandle=this.connect(this.domNode,"webkitAnimationEnd","onAnimationEnd");
this._animStartHandle=this.connect(this.domNode,"webkitAnimationStart","onAnimationStart");
if(!_2["mblCSS3Transition"]){
this._transEndHandle=this.connect(this.domNode,"webkitTransitionEnd","onAnimationEnd");
}
if(_6("mblAndroid3Workaround")){
_d.set(this.domNode,"webkitTransformStyle","preserve-3d");
}
_15.add(this);
this.inherited(arguments);
},startup:function(){
if(this._started){
return;
}
if(this._visible===undefined){
var _18=this.getSiblingViews();
var ids=location.hash&&location.hash.substring(1).split(/,/);
var _19,_1a,_1b;
_1.forEach(_18,function(v,i){
if(_1.indexOf(ids,v.id)!==-1){
_19=v;
}
if(i==0){
_1b=v;
}
if(v.selected){
_1a=v;
}
v._visible=false;
},this);
(_19||_1a||_1b)._visible=true;
}
if(this._visible){
this.show(true,true);
this.defer(function(){
this.onStartView();
_3.publish("/dojox/mobile/startView",[this]);
});
}
if(this.domNode.style.visibility!="visible"){
this.domNode.style.visibility="visible";
}
this.inherited(arguments);
var _1c=this.getParent();
if(!_1c||!_1c.resize){
this.resize();
}
if(!this._visible){
this.hide();
}
},resize:function(){
_1.forEach(this.getChildren(),function(_1d){
if(_1d.resize){
_1d.resize();
}
});
},onStartView:function(){
},onBeforeTransitionIn:function(_1e,dir,_1f,_20,_21){
},onAfterTransitionIn:function(_22,dir,_23,_24,_25){
},onBeforeTransitionOut:function(_26,dir,_27,_28,_29){
},onAfterTransitionOut:function(_2a,dir,_2b,_2c,_2d){
},_clearClasses:function(_2e){
if(!_2e){
return;
}
var _2f=[];
_1.forEach(_5.trim(_2e.className||"").split(/\s+/),function(c){
if(c.match(/^mbl\w*View$/)||c.indexOf("mbl")===-1){
_2f.push(c);
}
},this);
_2e.className=_2f.join(" ");
},_fixViewState:function(_30){
var _31=this.domNode.parentNode.childNodes;
for(var i=0;i<_31.length;i++){
var n=_31[i];
if(n.nodeType===1&&_a.contains(n,"mblView")){
this._clearClasses(n);
}
}
this._clearClasses(_30);
var _32=_e.byNode(_30);
if(_32){
_32._inProgress=false;
}
},convertToId:function(_33){
if(typeof (_33)=="string"){
return _33.replace(/^#?([^&?]+).*/,"$1");
}
return _33;
},_isBookmarkable:function(_34){
return _34.moveTo&&(_2["mblForceBookmarkable"]||_34.moveTo.charAt(0)==="#")&&!_34.hashchange;
},performTransition:function(_35,_36,_37,_38,_39){
if(this._inProgress){
return;
}
this._inProgress=true;
var _3a,_3b;
if(_35&&typeof (_35)==="object"){
_3a=_35;
_3b=_36;
}else{
_3a={moveTo:_35,transitionDir:_36,transition:_37,context:_38,method:_39};
_3b=[];
for(var i=5;i<arguments.length;i++){
_3b.push(arguments[i]);
}
}
this._detail=_3a;
this._optArgs=_3b;
this._arguments=[_3a.moveTo,_3a.transitionDir,_3a.transition,_3a.context,_3a.method];
if(_3a.moveTo==="#"){
return;
}
var _3c;
if(_3a.moveTo){
_3c=this.convertToId(_3a.moveTo);
}else{
if(!this._dummyNode){
this._dummyNode=_7.doc.createElement("div");
_7.body().appendChild(this._dummyNode);
}
_3c=this._dummyNode;
}
if(this.addTransitionInfo&&typeof (_3a.moveTo)=="string"&&this._isBookmarkable(_3a)){
this.addTransitionInfo(this.id,_3a.moveTo,{transitionDir:_3a.transitionDir,transition:_3a.transition});
}
var _3d=this.domNode;
var _3e=_3d.offsetTop;
_3c=this.toNode=_9.byId(_3c);
if(!_3c){
return;
}
_3c.style.visibility="hidden";
_3c.style.display="";
this._fixViewState(_3c);
var _3f=_e.byNode(_3c);
if(_3f){
if(_2["mblAlwaysResizeOnTransition"]||!_3f._resized){
_13.resizeAll(null,_3f);
_3f._resized=true;
}
if(_3a.transition&&_3a.transition!="none"){
_3f.containerNode.style.paddingTop=_3e+"px";
}
_3f.load&&_3f.load();
_3f.movedFrom=_3d.id;
}
if(_6("mblAndroidWorkaround")&&!_2["mblCSS3Transition"]&&_3a.transition&&_3a.transition!="none"){
_d.set(_3c,"webkitTransformStyle","preserve-3d");
_d.set(_3d,"webkitTransformStyle","preserve-3d");
_a.add(_3c,"mblAndroidWorkaround");
}
this.onBeforeTransitionOut.apply(this,this._arguments);
_3.publish("/dojox/mobile/beforeTransitionOut",[this].concat(_5._toArray(this._arguments)));
if(_3f){
if(this.keepScrollPos&&!this.getParent()){
var _40=_7.body().scrollTop||_7.doc.documentElement.scrollTop||_7.global.pageYOffset||0;
_3d._scrollTop=_40;
var _41=(_3a.transitionDir==1)?0:(_3c._scrollTop||0);
_3c.style.top="0px";
if(_40>1||_41!==0){
_3d.style.top=_41-_40+"px";
if(_2["mblHideAddressBar"]!==false){
setTimeout(function(){
_7.global.scrollTo(0,(_41||1));
},0);
}
}
}else{
_3c.style.top="0px";
}
_3f.onBeforeTransitionIn.apply(_3f,this._arguments);
_3.publish("/dojox/mobile/beforeTransitionIn",[_3f].concat(_5._toArray(this._arguments)));
}
_3c.style.display="none";
_3c.style.visibility="visible";
_13.fromView=this;
_13.toView=_3f;
this._doTransition(_3d,_3c,_3a.transition,_3a.transitionDir);
},_toCls:function(s){
return "mbl"+s.charAt(0).toUpperCase()+s.substring(1);
},_doTransition:function(_42,_43,_44,_45){
var rev=(_45==-1)?" mblReverse":"";
_43.style.display="";
if(!_44||_44=="none"){
this.domNode.style.display="none";
this.invokeCallback();
}else{
if(_2["mblCSS3Transition"]){
_8.when(_14,_5.hitch(this,function(_46){
var _47=_d.get(_43,"position");
_d.set(_43,"position","absolute");
_8.when(_46(_42,_43,{transition:_44,reverse:(_45===-1)?true:false}),_5.hitch(this,function(){
_d.set(_43,"position",_47);
this.invokeCallback();
}));
}));
}else{
if(_44.indexOf("cube")!=-1){
if(_6("ipad")){
_d.set(_43.parentNode,{webkitPerspective:1600});
}else{
if(_6("iphone")){
_d.set(_43.parentNode,{webkitPerspective:800});
}
}
}
var s=this._toCls(_44);
if(_6("mblAndroidWorkaround")){
setTimeout(function(){
_a.add(_42,s+" mblOut"+rev);
_a.add(_43,s+" mblIn"+rev);
_a.remove(_43,"mblAndroidWorkaround");
setTimeout(function(){
_a.add(_42,"mblTransition");
_a.add(_43,"mblTransition");
},30);
},70);
}else{
_a.add(_42,s+" mblOut"+rev);
_a.add(_43,s+" mblIn"+rev);
setTimeout(function(){
_a.add(_42,"mblTransition");
_a.add(_43,"mblTransition");
},100);
}
var _48="50% 50%";
var _49="50% 50%";
var _4a,_4b,_4c;
if(_44.indexOf("swirl")!=-1||_44.indexOf("zoom")!=-1){
if(this.keepScrollPos&&!this.getParent()){
_4a=_7.body().scrollTop||_7.doc.documentElement.scrollTop||_7.global.pageYOffset||0;
}else{
_4a=-_c.position(_42,true).y;
}
_4c=_7.global.innerHeight/2+_4a;
_48="50% "+_4c+"px";
_49="50% "+_4c+"px";
}else{
if(_44.indexOf("scale")!=-1){
var _4d=_c.position(_42,true);
_4b=((this.clickedPosX!==undefined)?this.clickedPosX:_7.global.innerWidth/2)-_4d.x;
if(this.keepScrollPos&&!this.getParent()){
_4a=_7.body().scrollTop||_7.doc.documentElement.scrollTop||_7.global.pageYOffset||0;
}else{
_4a=-_4d.y;
}
_4c=((this.clickedPosY!==undefined)?this.clickedPosY:_7.global.innerHeight/2)+_4a;
_48=_4b+"px "+_4c+"px";
_49=_4b+"px "+_4c+"px";
}
}
_d.set(_42,{webkitTransformOrigin:_48});
_d.set(_43,{webkitTransformOrigin:_49});
}
}
},onAnimationStart:function(e){
},onAnimationEnd:function(e){
var _4e=e.animationName||e.target.className;
if(_4e.indexOf("Out")===-1&&_4e.indexOf("In")===-1&&_4e.indexOf("Shrink")===-1){
return;
}
var _4f=false;
if(_a.contains(this.domNode,"mblOut")){
_4f=true;
this.domNode.style.display="none";
_a.remove(this.domNode,[this._toCls(this._detail.transition),"mblIn","mblOut","mblReverse"]);
}else{
this.containerNode.style.paddingTop="";
}
_d.set(this.domNode,{webkitTransformOrigin:""});
if(_4e.indexOf("Shrink")!==-1){
var li=e.target;
li.style.display="none";
_a.remove(li,"mblCloseContent");
var p=_15.getEnclosingScrollable(this.domNode);
p&&p.onTouchEnd();
}
if(_4f){
this.invokeCallback();
}
this._clearClasses(this.domNode);
this.clickedPosX=this.clickedPosY=undefined;
if(_4e.indexOf("Cube")!==-1&&_4e.indexOf("In")!==-1&&_6("iphone")){
this.domNode.parentNode.style.webkitPerspective="";
}
},invokeCallback:function(){
this.onAfterTransitionOut.apply(this,this._arguments);
_3.publish("/dojox/mobile/afterTransitionOut",[this].concat(this._arguments));
var _50=_e.byNode(this.toNode);
if(_50){
_50.onAfterTransitionIn.apply(_50,this._arguments);
_3.publish("/dojox/mobile/afterTransitionIn",[_50].concat(this._arguments));
_50.movedFrom=undefined;
if(this.setFragIds&&this._isBookmarkable(this._detail)){
this.setFragIds(_50);
}
}
if(_6("mblAndroidWorkaround")){
setTimeout(_5.hitch(this,function(){
if(_50){
_d.set(this.toNode,"webkitTransformStyle","");
}
_d.set(this.domNode,"webkitTransformStyle","");
}),0);
}
var c=this._detail.context,m=this._detail.method;
if(c||m){
if(!m){
m=c;
c=null;
}
c=c||_7.global;
if(typeof (m)=="string"){
c[m].apply(c,this._optArgs);
}else{
if(typeof (m)=="function"){
m.apply(c,this._optArgs);
}
}
}
this._detail=this._optArgs=this._arguments=undefined;
this._inProgress=false;
},isVisible:function(_51){
var _52=function(_53){
return _d.get(_53,"display")!=="none";
};
if(_51){
for(var n=this.domNode;n.tagName!=="BODY";n=n.parentNode){
if(!_52(n)){
return false;
}
}
return true;
}else{
return _52(this.domNode);
}
},getShowingView:function(){
var _54=this.domNode.parentNode.childNodes;
for(var i=0;i<_54.length;i++){
var n=_54[i];
if(n.nodeType===1&&_a.contains(n,"mblView")&&n.style.display!=="none"){
return _e.byNode(n);
}
}
return null;
},getSiblingViews:function(){
if(!this.domNode.parentNode){
return [this];
}
return _1.map(_1.filter(this.domNode.parentNode.childNodes,function(n){
return n.nodeType===1&&_a.contains(n,"mblView");
}),function(n){
return _e.byNode(n);
});
},show:function(_55,_56){
var out=this.getShowingView();
if(!_55){
if(out){
out.onBeforeTransitionOut(out.id);
_3.publish("/dojox/mobile/beforeTransitionOut",[out,out.id]);
}
this.onBeforeTransitionIn(this.id);
_3.publish("/dojox/mobile/beforeTransitionIn",[this,this.id]);
}
if(_56){
this.domNode.style.display="";
}else{
_1.forEach(this.getSiblingViews(),function(v){
v.domNode.style.display=(v===this)?"":"none";
},this);
}
this.load&&this.load();
if(!_55){
if(out){
out.onAfterTransitionOut(out.id);
_3.publish("/dojox/mobile/afterTransitionOut",[out,out.id]);
}
this.onAfterTransitionIn(this.id);
_3.publish("/dojox/mobile/afterTransitionIn",[this,this.id]);
}
},hide:function(){
this.domNode.style.display="none";
}});
});