]>
Commit | Line | Data |
---|---|---|
9233148b AD |
1 | Ext.define('PVE.sdn.VnetInputPanel', { |
2 | extend: 'Proxmox.panel.InputPanel', | |
68dc9092 | 3 | mixins: ['Proxmox.Mixin.CBind'], |
9233148b AD |
4 | |
5 | onGetValues: function(values) { | |
68dc9092 | 6 | let me = this; |
9233148b AD |
7 | |
8 | if (me.isCreate) { | |
9 | values.type = 'vnet'; | |
10 | } | |
11 | ||
12 | if (!values.ipv6) { | |
13 | delete values.ipv6; | |
14 | } | |
9233148b AD |
15 | if (!values.ipv4) { |
16 | delete values.ipv4; | |
17 | } | |
9233148b AD |
18 | if (!values.mac) { |
19 | delete values.mac; | |
20 | } | |
21 | ||
22 | return values; | |
23 | }, | |
24 | ||
68dc9092 TL |
25 | items: [ |
26 | { | |
27 | xtype: 'pmxDisplayEditField', | |
28 | name: 'vnet', | |
29 | cbind: { | |
30 | editable: '{isCreate}', | |
31 | }, | |
872f9a05 | 32 | maxLength: 8, |
f3c1eac7 | 33 | flex: 1, |
68dc9092 TL |
34 | allowBlank: false, |
35 | fieldLabel: gettext('Name'), | |
36 | }, | |
37 | { | |
38 | xtype: 'textfield', | |
39 | name: 'alias', | |
40 | fieldLabel: gettext('Alias'), | |
41 | allowBlank: true, | |
42 | }, | |
43 | { | |
44 | xtype: 'pveSDNZoneSelector', | |
45 | fieldLabel: gettext('Zone'), | |
46 | name: 'zone', | |
47 | value: '', | |
48 | allowBlank: false, | |
49 | }, | |
50 | { | |
51 | xtype: 'proxmoxintegerfield', | |
52 | name: 'tag', | |
53 | minValue: 1, | |
e763c7d7 | 54 | maxValue: 16777216, |
68dc9092 | 55 | fieldLabel: gettext('Tag'), |
e763c7d7 | 56 | allowBlank: true, |
68dc9092 | 57 | }, |
d0da259e AD |
58 | { |
59 | xtype: 'proxmoxcheckbox', | |
60 | name: 'vlanaware', | |
61 | uncheckedValue: 0, | |
62 | checked: false, | |
f6710aac | 63 | fieldLabel: gettext('VLAN Aware'), |
d0da259e | 64 | }, |
6d3dbf0e TL |
65 | { |
66 | xtype: 'textfield', | |
67 | name: 'mac', | |
68 | fieldLabel: gettext('MAC Address'), | |
69 | vtype: 'MacAddress', | |
70 | skipEmptyText: true, | |
71 | allowBlank: true, | |
72 | emptyText: 'auto', | |
73 | }, | |
74 | ], | |
75 | advancedItems: [ | |
68dc9092 TL |
76 | { |
77 | xtype: 'textfield', | |
78 | name: 'ipv4', | |
79 | vtype: 'IPCIDRAddress', | |
80 | fieldLabel: 'IPv4/CIDR', // do not localize | |
f3c1eac7 | 81 | emptyText: 'Optional anycast addr. for BGP', |
68dc9092 TL |
82 | skipEmptyText: true, |
83 | allowBlank: true, | |
84 | }, | |
85 | { | |
86 | xtype: 'textfield', | |
87 | name: 'ipv6', | |
88 | vtype: 'IP6CIDRAddress', | |
89 | fieldLabel: 'IPv6/CIDR', // do not localize | |
f3c1eac7 | 90 | emptyText: 'Optional anycast addr. for BGP', |
68dc9092 TL |
91 | skipEmptyText: true, |
92 | allowBlank: true, | |
93 | }, | |
68dc9092 | 94 | ], |
9233148b AD |
95 | }); |
96 | ||
97 | Ext.define('PVE.sdn.VnetEdit', { | |
98 | extend: 'Proxmox.window.Edit', | |
99 | ||
68dc9092 TL |
100 | subject: gettext('VNet'), |
101 | ||
9233148b AD |
102 | vnet: undefined, |
103 | ||
f3c1eac7 TL |
104 | width: 350, |
105 | ||
68dc9092 | 106 | initComponent: function() { |
9233148b AD |
107 | var me = this; |
108 | ||
68dc9092 | 109 | me.isCreate = me.vnet === undefined; |
9233148b | 110 | |
68dc9092 TL |
111 | if (me.isCreate) { |
112 | me.url = '/api2/extjs/cluster/sdn/vnets'; | |
113 | me.method = 'POST'; | |
114 | } else { | |
115 | me.url = '/api2/extjs/cluster/sdn/vnets/' + me.vnet; | |
116 | me.method = 'PUT'; | |
117 | } | |
9233148b | 118 | |
68dc9092 | 119 | let ipanel = Ext.create('PVE.sdn.VnetInputPanel', { |
9233148b | 120 | isCreate: me.isCreate, |
9233148b AD |
121 | }); |
122 | ||
123 | Ext.apply(me, { | |
68dc9092 TL |
124 | items: [ |
125 | ipanel, | |
126 | ], | |
9233148b AD |
127 | }); |
128 | ||
129 | me.callParent(); | |
130 | ||
131 | if (!me.isCreate) { | |
132 | me.load({ | |
68dc9092 TL |
133 | success: function(response, options) { |
134 | let values = response.result.data; | |
9233148b | 135 | ipanel.setValues(values); |
68dc9092 | 136 | }, |
9233148b AD |
137 | }); |
138 | } | |
68dc9092 | 139 | }, |
9233148b | 140 | }); |