Wizard_wev8.js 4.22 KB
Ext.ux.Wiz=Ext.extend(Ext.Window,{loadMaskConfig:{"default":"Saving..."},height:540,width:600,closable:true,resizable:false,modal:true,cards:null,previousButtonText:"&lt; 上一步",nextButtonText:"下一步 &gt;",cancelButtonText:"取消",finishButtonText:"完成",headerConfig:{},cardPanelConfig:{},previousButton:null,nextButton:null,cancelButton:null,cardPanel:null,currentCard:-1,headPanel:null,initComponent:function(){this.initButtons();this.initPanels();var a=this.title||this.headerConfig.title;a=a||"";Ext.apply(this,{title:a,layout:"border",buttons:[this.previousButton,this.nextButton,this.cancelButton],items:[this.headPanel,this.cardPanel]});this.addEvents("cancel","finish");Ext.ux.Wiz.superclass.initComponent.call(this)},initEvents:function(){Ext.ux.Wiz.superclass.initEvents.call(this);for(var b=0,a=this.cards.length;b<a;b++){this.cards[b].on("show",this.onCardShow,this);this.cards[b].on("hide",this.onCardHide,this);this.cards[b].on("clientvalidation",this.onClientValidation,this)}},getWizardData:function(){var d={};var c=this.cards;for(var b=0,a=c.length;b<a;b++){if(c[b].form){d[c[b].id]=c[b].form.getValues(false)}else{d[c[b].id]={}}}return d},switchDialogState:function(a,c){this.showLoadMask(!a,c);this.previousButton.setDisabled(!a);this.nextButton.setDisabled(!a);this.cancelButton.setDisabled(true);if(this.closable){var b=this.tools.close;if(a==true){this.tools.close.unmask()}else{this.tools.close.mask()}}},showLoadMask:function(a,b){if(!b){b="default"}if(a){if(this.loadMask==null){this.loadMask=new Ext.LoadMask(this.body)}this.loadMask.msg=this.loadMaskConfig.type;this.loadMask.show()}else{if(this.loadMask){this.loadMask.hide()}}},initPanels:function(){var d=this.cards;var c=this.cardPanelConfig;for(var b=0;b<this.cards.length;b++){this.cards[b].wizard=this}Ext.apply(this.headerConfig,{steps:this.getVisibleCardsCount(),wizard:this});this.headPanel=new Ext.ux.Wiz.Header(this.headerConfig);Ext.apply(c,{layout:new Ext.ux.layout.CardLayout(),items:d});var a=this.getFirstActiveCardIndex();Ext.applyIf(c,{region:"center",border:false,activeItem:a});this.cardPanel=new Ext.Panel(c);if(this.cards[a].monitorValid){this.cards[a].startMonitoring()}},initButtons:function(){this.previousButton=new Ext.Button({text:this.previousButtonText,disabled:true,minWidth:75,handler:this.onPreviousClick,scope:this});this.nextButton=new Ext.Button({text:this.nextButtonText,minWidth:75,handler:this.onNextClick,scope:this});this.cancelButton=new Ext.Button({text:this.cancelButtonText,handler:this.onCancelClick,scope:this,minWidth:75})},onClientValidation:function(a,b){if(!b){this.nextButton.setDisabled(true)}else{this.nextButton.setDisabled(false)}},onCardHide:function(a){if(this.cardPanel.layout.activeItem.id===a.id){this.nextButton.setDisabled(true)}},onCardShow:function(a){this.currentCard=this.getCardPosition(a);this.headPanel.updateStep();if(this.cards[this.currentCard].getNext()==-1){this.nextButton.setText(this.finishButtonText)}else{this.nextButton.setText(this.nextButtonText)}if(a.isValid()){this.nextButton.setDisabled(false)}if(this.cards[this.currentCard].getPrevious()==-1){this.previousButton.setDisabled(true)}else{this.previousButton.setDisabled(false)}},onCancelClick:function(){if(this.fireEvent("cancel",this)!==false){this.hide()}this.cardPanel.getLayout().setActiveItem(0)},onFinish:function(){if(this.fireEvent("finish",this,this.getWizardData())!==false){this.hide()}this.cardPanel.getLayout().setActiveItem(0)},onPreviousClick:function(){var a=this.cards[this.currentCard].getPrevious();if(a!=-1){this.cardPanel.getLayout().setActiveItem(a)}},onNextClick:function(){var a=this.cards[this.currentCard].getNext();if(a==-1){this.onFinish()}else{this.cardPanel.getLayout().setActiveItem(a)}},getCardPosition:function(a){var c=this.cards.length;for(var b=0;b<c;b++){if(this.cards[b]==a){return b}}return -1},getVisibleCardPosition:function(b){var c=this.getFirstActiveCardIndex();if(c==-1){return -1}var d=this.cards[c];var a=0;while(c!=-1){if(this.cards[c]==b){break}c=this.cards[c].getNext();a++}return a},getFirstActiveCardIndex:function(){var a=0;while(this.cards[a].skip&&a!=-1){a=this.cards[a].getNext()}return a},getVisibleCardsCount:function(){var a=this.getFirstActiveCardIndex();if(a==-1){return 0}var b=0;while(a!=-1){b++;a=this.cards[a].getNext()}return b}});