]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/GuestIDSelector.js
use validator for GuestIDSelector and optimize labels
[pve-manager.git] / www / manager6 / form / GuestIDSelector.js
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
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
24 return;
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
38 initComponent: function() {
39 var me = this;
40 var label = '{0} ID';
41 var unknownID = gettext('This {0} ID does not exists');
42 var inUseID = gettext('This {0} ID is already in use');
43 var type = 'CT/VM';
44
45 if (me.guestType === 'lxc') {
46 type = 'CT';
47 } else if (me.guestType === 'qemu') {
48 type = 'VM';
49 }
50
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
55 Ext.apply(me, {
56 fieldLabel: me.label,
57 listeners: {
58 'change': function(field, newValue, oldValue) {
59 if (!Ext.isDefined(me.validateExists)) {
60 return;
61 }
62 PVE.Utils.API2Request({
63 params: { vmid: newValue },
64 url: '/cluster/nextid',
65 method: 'GET',
66 success: function(response, opts) {
67 me.exists = false;
68 me.isValid();
69 },
70 failure: function(response, opts) {
71 me.exists = true;
72 me.isValid();
73 }
74 });
75 }
76 }
77 });
78
79 me.callParent();
80
81 if (me.loadNextFreeID) {
82 PVE.Utils.API2Request({
83 url: '/cluster/nextid',
84 method: 'GET',
85 success: function(response, opts) {
86 me.setRawValue(response.result.data);
87 }
88 });
89 }
90 }
91 });