]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/Wizard.js
1 Ext
.define('PVE.window.Wizard', {
2 extend
: 'Ext.window.Window',
4 activeTitle
: '', // used for automated testing
6 getValues: function(dirtyOnly
) {
11 var form
= me
.down('form').getForm();
13 form
.getFields().each(function(field
) {
14 if (!field
.up('inputpanel') && (!dirtyOnly
|| field
.isDirty())) {
15 PVE
.Utils
.assemble_field_data(values
, field
.getSubmitData());
19 Ext
.Array
.each(me
.query('inputpanel'), function(panel
) {
20 PVE
.Utils
.assemble_field_data(values
, panel
.getValues(dirtyOnly
));
26 initComponent: function() {
29 var tabs
= me
.items
|| [];
33 * Items may have the following functions:
34 * validator(): per tab custom validation
35 * onSubmit(): submit handler
36 * onGetValues(): overwrite getValues results
39 Ext
.Array
.each(tabs
, function(tab
) {
42 tabs
[0].disabled
= false;
44 var check_card = function(card
) {
46 var fields
= card
.query('field, fieldcontainer');
47 if (card
.isXType('fieldcontainer')) {
50 Ext
.Array
.each(fields
, function(field
) {
51 // Note: not all fielcontainer have isValid()
52 if (Ext
.isFunction(field
.isValid
) && !field
.isValid()) {
57 if (Ext
.isFunction(card
.validator
)) {
58 return card
.validator();
65 var tbar
= Ext
.create('Ext.toolbar.Toolbar', {
71 xtype
: 'pveHelpButton',
76 text
: gettext('Back'),
81 var tp
= me
.down('#wizcontent');
82 var atab
= tp
.getActiveTab();
83 var prev
= tp
.items
.indexOf(atab
) - 1;
87 var ntab
= tp
.items
.getAt(prev
);
89 tp
.setActiveTab(ntab
);
96 text
: gettext('Next'),
100 handler: function() {
102 var form
= me
.down('form').getForm();
104 var tp
= me
.down('#wizcontent');
105 var atab
= tp
.getActiveTab();
106 if (!check_card(atab
)) {
110 var next
= tp
.items
.indexOf(atab
) + 1;
111 var ntab
= tp
.items
.getAt(next
);
114 tp
.setActiveTab(ntab
);
120 text
: gettext('Finish'),
124 handler: function() {
125 var tp
= me
.down('#wizcontent');
126 var atab
= tp
.getActiveTab();
133 var display_header = function(newcard
) {
134 me
.activeTitle
= newcard
.title
;
135 var html
= '<h1>' + newcard
.title
+ '</h1>';
137 html
+= newcard
.descr
;
139 me
.down('#header').update(html
);
142 var disable_at = function(card
) {
143 var tp
= me
.down('#wizcontent');
144 var idx
= tp
.items
.indexOf(card
);
145 for(;idx
< tp
.items
.getCount();idx
++) {
146 var nc
= tp
.items
.getAt(idx
);
153 var tabchange = function(tp
, newcard
, oldcard
) {
154 if (newcard
.onSubmit
) {
155 me
.down('#next').setVisible(false);
156 me
.down('#submit').setVisible(true);
158 me
.down('#next').setVisible(true);
159 me
.down('#submit').setVisible(false);
161 var valid
= check_card(newcard
);
162 me
.down('#next').setDisabled(!valid
);
163 me
.down('#submit').setDisabled(!valid
);
164 me
.down('#back').setDisabled(tp
.items
.indexOf(newcard
) == 0);
166 var next
= tp
.items
.indexOf(newcard
) + 1;
167 var ntab
= tp
.items
.getAt(next
);
168 if (valid
&& ntab
&& !newcard
.onSubmit
) {
173 if (me
.subject
&& !me
.title
) {
174 me
.title
= PVE
.Utils
.dialog_title(me
.subject
, true, false);
188 // disabled for now - not really needed
208 itemId
: 'wizcontent',
213 afterrender: function(tp
) {
214 var atab
= this.getActiveTab();
217 tabchange: function(tp
, newcard
, oldcard
) {
218 display_header(newcard
);
219 tabchange(tp
, newcard
, oldcard
);
229 display_header(tabs
[0]);
231 Ext
.Array
.each(me
.query('field'), function(field
) {
232 var validcheck = function() {
233 var tp
= me
.down('#wizcontent');
234 var atab
= tp
.getActiveTab();
235 var valid
= check_card(atab
);
236 me
.down('#next').setDisabled(!valid
);
237 me
.down('#submit').setDisabled(!valid
);
238 var next
= tp
.items
.indexOf(atab
) + 1;
239 var ntab
= tp
.items
.getAt(next
);
242 } else if (ntab
&& !atab
.onSubmit
) {
246 field
.on('change', validcheck
);
247 field
.on('validitychange', validcheck
);