]>
Commit | Line | Data |
---|---|---|
ed416f20 EK |
1 | Ext.define('PVE.form.GuestIDSelector', { |
2 | extend: 'Ext.form.field.Number', | |
3 | alias: 'widget.pveGuestIDSelector', | |
4 | ||
5 | allowBlank: false, | |
6 | ||
7 | minValue: 100, | |
8 | ||
9 | maxValue: 999999999, | |
10 | ||
11 | validateExists: undefined, | |
12 | ||
13 | loadNextFreeID: false, | |
14 | ||
15 | guestType: undefined, | |
16 | ||
40342aa6 DC |
17 | validator: function(value) { |
18 | var me = this; | |
19 | ||
20 | if (!Ext.isNumeric(value) || | |
21 | value < me.minValue || | |
22 | value > me.maxValue) { | |
23 | // check is done by ExtJS | |
a1304e1e | 24 | return true; |
40342aa6 DC |
25 | } |
26 | ||
27 | if (me.validateExists === true && !me.exists) { | |
28 | return me.unknownID; | |
29 | } | |
30 | ||
31 | if (me.validateExists === false && me.exists) { | |
32 | return me.inUseID; | |
33 | } | |
34 | ||
35 | return true; | |
36 | }, | |
37 | ||
ed416f20 EK |
38 | initComponent: function() { |
39 | var me = this; | |
40 | var label = '{0} ID'; | |
8dc7c7af | 41 | var unknownID = gettext('This {0} ID does not exist'); |
49e19905 | 42 | var inUseID = gettext('This {0} ID is already in use'); |
40342aa6 | 43 | var type = 'CT/VM'; |
ed416f20 EK |
44 | |
45 | if (me.guestType === 'lxc') { | |
40342aa6 | 46 | type = 'CT'; |
ed416f20 | 47 | } else if (me.guestType === 'qemu') { |
40342aa6 | 48 | type = 'VM'; |
ed416f20 EK |
49 | } |
50 | ||
40342aa6 DC |
51 | me.label = Ext.String.format(label, type); |
52 | me.unknownID = Ext.String.format(unknownID, type); | |
53 | me.inUseID = Ext.String.format(inUseID, type); | |
54 | ||
ed416f20 | 55 | Ext.apply(me, { |
40342aa6 | 56 | fieldLabel: me.label, |
ed416f20 EK |
57 | listeners: { |
58 | 'change': function(field, newValue, oldValue) { | |
59 | if (!Ext.isDefined(me.validateExists)) { | |
60 | return; | |
61 | } | |
e7ade592 | 62 | Proxmox.Utils.API2Request({ |
ed416f20 EK |
63 | params: { vmid: newValue }, |
64 | url: '/cluster/nextid', | |
65 | method: 'GET', | |
66 | success: function(response, opts) { | |
40342aa6 | 67 | me.exists = false; |
a1304e1e | 68 | me.validate(); |
ed416f20 EK |
69 | }, |
70 | failure: function(response, opts) { | |
40342aa6 | 71 | me.exists = true; |
a1304e1e | 72 | me.validate(); |
f6710aac | 73 | }, |
ed416f20 | 74 | }); |
f6710aac TL |
75 | }, |
76 | }, | |
ed416f20 EK |
77 | }); |
78 | ||
79 | me.callParent(); | |
80 | ||
81 | if (me.loadNextFreeID) { | |
e7ade592 | 82 | Proxmox.Utils.API2Request({ |
ed416f20 EK |
83 | url: '/cluster/nextid', |
84 | method: 'GET', | |
85 | success: function(response, opts) { | |
86 | me.setRawValue(response.result.data); | |
f6710aac | 87 | }, |
ed416f20 EK |
88 | }); |
89 | } | |
f6710aac | 90 | }, |
ed416f20 | 91 | }); |