]>
git.proxmox.com Git - pve-manager.git/blob - www/manager5/window/Wizard.js
1 Ext
.define('PVE.window.Wizard', {
2 extend
: 'Ext.window.Window',
4 getValues: function(dirtyOnly
) {
9 var form
= me
.down('form').getForm();
11 form
.getFields().each(function(field
) {
12 if (!field
.up('inputpanel') && (!dirtyOnly
|| field
.isDirty())) {
13 PVE
.Utils
.assemble_field_data(values
, field
.getSubmitData());
17 Ext
.Array
.each(me
.query('inputpanel'), function(panel
) {
18 PVE
.Utils
.assemble_field_data(values
, panel
.getValues(dirtyOnly
));
24 initComponent: function() {
27 var tabs
= me
.items
|| [];
31 * Items may have the following functions:
32 * validator(): per tab custom validation
33 * onSubmit(): submit handler
34 * onGetValues(): overwrite getValues results
37 Ext
.Array
.each(tabs
, function(tab
) {
40 tabs
[0].disabled
= false;
42 var check_card = function(card
) {
44 var fields
= card
.query('field, fieldcontainer');
45 if (card
.isXType('fieldcontainer')) {
48 Ext
.Array
.each(fields
, function(field
) {
49 // Note: not all fielcontainer have isValid()
50 if (Ext
.isFunction(field
.isValid
) && !field
.isValid()) {
55 if (Ext
.isFunction(card
.validator
)) {
56 return card
.validator();
63 var tbar
= Ext
.create('Ext.toolbar.Toolbar', {
70 text
: gettext('Back'),
75 var tp
= me
.down('#wizcontent');
76 var atab
= tp
.getActiveTab();
77 var prev
= tp
.items
.indexOf(atab
) - 1;
81 var ntab
= tp
.items
.getAt(prev
);
83 tp
.setActiveTab(ntab
);
90 text
: gettext('Next'),
96 var form
= me
.down('form').getForm();
98 var tp
= me
.down('#wizcontent');
99 var atab
= tp
.getActiveTab();
100 if (!check_card(atab
)) {
104 var next
= tp
.items
.indexOf(atab
) + 1;
105 var ntab
= tp
.items
.getAt(next
);
108 tp
.setActiveTab(ntab
);
114 text
: gettext('Finish'),
118 handler: function() {
119 var tp
= me
.down('#wizcontent');
120 var atab
= tp
.getActiveTab();
127 var display_header = function(newcard
) {
128 var html
= '<h1>' + newcard
.title
+ '</h1>';
130 html
+= newcard
.descr
;
132 me
.down('#header').update(html
);
135 var disable_at = function(card
) {
136 var tp
= me
.down('#wizcontent');
137 var idx
= tp
.items
.indexOf(card
);
138 for(;idx
< tp
.items
.getCount();idx
++) {
139 var nc
= tp
.items
.getAt(idx
);
146 var tabchange = function(tp
, newcard
, oldcard
) {
147 if (newcard
.onSubmit
) {
148 me
.down('#next').setVisible(false);
149 me
.down('#submit').setVisible(true);
151 me
.down('#next').setVisible(true);
152 me
.down('#submit').setVisible(false);
154 var valid
= check_card(newcard
);
155 me
.down('#next').setDisabled(!valid
);
156 me
.down('#submit').setDisabled(!valid
);
157 me
.down('#back').setDisabled(tp
.items
.indexOf(newcard
) == 0);
159 if (oldcard
&& !check_card(oldcard
)) {
163 var next
= tp
.items
.indexOf(newcard
) + 1;
164 var ntab
= tp
.items
.getAt(next
);
165 if (valid
&& ntab
&& !newcard
.onSubmit
) {
170 if (me
.subject
&& !me
.title
) {
171 me
.title
= PVE
.Utils
.dialog_title(me
.subject
, true, false);
185 // disabled for now - not really needed
205 itemId
: 'wizcontent',
210 afterrender: function(tp
) {
211 var atab
= this.getActiveTab();
214 tabchange: function(tp
, newcard
, oldcard
) {
215 display_header(newcard
);
216 tabchange(tp
, newcard
, oldcard
);
226 display_header(tabs
[0]);
228 Ext
.Array
.each(me
.query('field'), function(field
) {
229 field
.on('validitychange', function(f
) {
230 var tp
= me
.down('#wizcontent');
231 var atab
= tp
.getActiveTab();
232 var valid
= check_card(atab
);
233 me
.down('#next').setDisabled(!valid
);
234 me
.down('#submit').setDisabled(!valid
);
235 var next
= tp
.items
.indexOf(atab
) + 1;
236 var ntab
= tp
.items
.getAt(next
);
239 } else if (ntab
&& !atab
.onSubmit
) {