]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/sdn/zones/Base.js
ui: sdn: zonedit: fix display && refactor
[pve-manager.git] / www / manager6 / sdn / zones / Base.js
1 Ext.define('PVE.panel.SDNZoneBase', {
2 extend: 'Proxmox.panel.InputPanel',
3
4 type: '',
5
6 onGetValues: function(values) {
7 var me = this;
8
9 if (me.isCreate) {
10 values.type = me.type;
11 } else {
12 delete values.zone;
13 }
14
15 return values;
16 },
17
18 initComponent: function() {
19 var me = this;
20
21 me.items.unshift({
22 xtype: me.isCreate ? 'textfield' : 'displayfield',
23 name: 'zone',
24 maxLength: 8,
25 value: me.zone || '',
26 fieldLabel: 'ID',
27 allowBlank: false,
28 });
29
30 me.items.push(
31 {
32 xtype: 'proxmoxintegerfield',
33 name: 'mtu',
34 minValue: 100,
35 maxValue: 65000,
36 fieldLabel: 'MTU',
37 skipEmptyText: true,
38 allowBlank: true,
39 emptyText: 'auto',
40 },
41 {
42 xtype: 'pveNodeSelector',
43 name: 'nodes',
44 fieldLabel: gettext('Nodes'),
45 emptyText: gettext('All') + ' (' + gettext('No restrictions') +')',
46 multiSelect: true,
47 autoSelect: false,
48 },
49 {
50 xtype: 'pveSDNIpamSelector',
51 fieldLabel: gettext('Ipam'),
52 name: 'ipam',
53 value: me.ipam || 'pve',
54 allowBlank: false,
55 },
56 );
57
58 me.advancedItems = [
59 {
60 xtype: 'pveSDNDnsSelector',
61 fieldLabel: gettext('Dns server'),
62 name: 'dns',
63 value: '',
64 allowBlank: true,
65 },
66 {
67 xtype: 'pveSDNDnsSelector',
68 fieldLabel: gettext('Reverse Dns server'),
69 name: 'reversedns',
70 value: '',
71 allowBlank: true,
72 },
73 {
74 xtype: 'proxmoxtextfield',
75 name: 'dnszone',
76 skipEmptyText: true,
77 fieldLabel: gettext('DNS zone'),
78 allowBlank: true,
79 },
80 ];
81
82 me.callParent();
83 },
84 });
85
86 Ext.define('PVE.sdn.zones.BaseEdit', {
87 extend: 'Proxmox.window.Edit',
88
89 width: 400,
90
91 initComponent: function() {
92 var me = this;
93
94 me.isCreate = !me.zone;
95
96 if (me.isCreate) {
97 me.url = '/api2/extjs/cluster/sdn/zones';
98 me.method = 'POST';
99 } else {
100 me.url = '/api2/extjs/cluster/sdn/zones/' + me.zone;
101 me.method = 'PUT';
102 }
103
104 var ipanel = Ext.create(me.paneltype, {
105 type: me.type,
106 isCreate: me.isCreate,
107 zone: me.zone,
108 });
109
110 Ext.apply(me, {
111 subject: PVE.Utils.format_sdnzone_type(me.type),
112 isAdd: true,
113 items: [ipanel],
114 });
115
116 me.callParent();
117
118 if (!me.isCreate) {
119 me.load({
120 success: function(response, options) {
121 var values = response.result.data;
122 var ctypes = values.content || '';
123
124 values.content = ctypes.split(',');
125
126 if (values.nodes) {
127 values.nodes = values.nodes.split(',');
128 }
129
130 if (values.exitnodes) {
131 values.exitnodes = values.exitnodes.split(',');
132 }
133
134 values.enable = values.disable ? 0 : 1;
135
136 ipanel.setValues(values);
137 },
138 });
139 }
140 },
141 });