]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/form/GuestIDSelector.js
ui: ScheduleSimulator: split date and time into two columns
[pve-manager.git] / www / manager6 / form / GuestIDSelector.js
CommitLineData
ed416f20
EK
1Ext.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});