]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/grid/FirewallAliases.js
ui: eslint: enforce "no-extra-parens" rule
[pve-manager.git] / www / manager6 / grid / FirewallAliases.js
1 Ext.define('PVE.FirewallAliasEdit', {
2 extend: 'Proxmox.window.Edit',
3
4 base_url: undefined,
5
6 alias_name: undefined,
7
8 width: 400,
9
10 initComponent: function() {
11 var me = this;
12
13 me.isCreate = me.alias_name === undefined;
14
15 if (me.isCreate) {
16 me.url = '/api2/extjs' + me.base_url;
17 me.method = 'POST';
18 } else {
19 me.url = '/api2/extjs' + me.base_url + '/' + me.alias_name;
20 me.method = 'PUT';
21 }
22
23 var items = [
24 {
25 xtype: 'textfield',
26 name: me.isCreate ? 'name' : 'rename',
27 fieldLabel: gettext('Name'),
28 allowBlank: false,
29 },
30 {
31 xtype: 'textfield',
32 name: 'cidr',
33 fieldLabel: gettext('IP/CIDR'),
34 allowBlank: false,
35 },
36 {
37 xtype: 'textfield',
38 name: 'comment',
39 fieldLabel: gettext('Comment'),
40 },
41 ];
42
43 var ipanel = Ext.create('Proxmox.panel.InputPanel', {
44 isCreate: me.isCreate,
45 items: items,
46 });
47
48 Ext.apply(me, {
49 subject: gettext('Alias'),
50 isAdd: true,
51 items: [ipanel],
52 });
53
54 me.callParent();
55
56 if (!me.isCreate) {
57 me.load({
58 success: function(response, options) {
59 var values = response.result.data;
60 values.rename = values.name;
61 ipanel.setValues(values);
62 },
63 });
64 }
65 },
66 });
67
68 Ext.define('pve-fw-aliases', {
69 extend: 'Ext.data.Model',
70
71 fields: ['name', 'cidr', 'comment', 'digest'],
72 idProperty: 'name',
73 });
74
75 Ext.define('PVE.FirewallAliases', {
76 extend: 'Ext.grid.Panel',
77 alias: ['widget.pveFirewallAliases'],
78
79 onlineHelp: 'pve_firewall_ip_aliases',
80
81 stateful: true,
82 stateId: 'grid-firewall-aliases',
83
84 base_url: undefined,
85
86 title: gettext('Alias'),
87
88 initComponent: function() {
89 var me = this;
90
91 if (!me.base_url) {
92 throw "missing base_url configuration";
93 }
94
95 var store = new Ext.data.Store({
96 model: 'pve-fw-aliases',
97 proxy: {
98 type: 'proxmox',
99 url: "/api2/json" + me.base_url,
100 },
101 sorters: {
102 property: 'name',
103 order: 'DESC',
104 },
105 });
106
107 var sm = Ext.create('Ext.selection.RowModel', {});
108
109 var reload = function() {
110 var oldrec = sm.getSelection()[0];
111 store.load(function(records, operation, success) {
112 if (oldrec) {
113 var rec = store.findRecord('name', oldrec.data.name, 0, false, true, true);
114 if (rec) {
115 sm.select(rec);
116 }
117 }
118 });
119 };
120
121 var run_editor = function() {
122 var sm = me.getSelectionModel();
123 var rec = sm.getSelection()[0];
124 if (!rec) {
125 return;
126 }
127
128 var win = Ext.create('PVE.FirewallAliasEdit', {
129 base_url: me.base_url,
130 alias_name: rec.data.name,
131 });
132
133 win.show();
134 win.on('destroy', reload);
135 };
136
137 me.editBtn = new Proxmox.button.Button({
138 text: gettext('Edit'),
139 disabled: true,
140 selModel: sm,
141 handler: run_editor,
142 });
143
144 me.addBtn = Ext.create('Ext.Button', {
145 text: gettext('Add'),
146 handler: function() {
147 var win = Ext.create('PVE.FirewallAliasEdit', {
148 base_url: me.base_url,
149 });
150 win.on('destroy', reload);
151 win.show();
152 },
153 });
154
155 me.removeBtn = Ext.create('Proxmox.button.StdRemoveButton', {
156 selModel: sm,
157 baseurl: me.base_url + '/',
158 callback: reload,
159 });
160
161
162 Ext.apply(me, {
163 store: store,
164 tbar: [me.addBtn, me.removeBtn, me.editBtn],
165 selModel: sm,
166 columns: [
167 {
168 header: gettext('Name'),
169 dataIndex: 'name',
170 flex: 1,
171 },
172 {
173 header: gettext('IP/CIDR'),
174 dataIndex: 'cidr',
175 flex: 1,
176 },
177 {
178 header: gettext('Comment'),
179 dataIndex: 'comment',
180 renderer: Ext.String.htmlEncode,
181 flex: 3,
182 },
183 ],
184 listeners: {
185 itemdblclick: run_editor,
186 },
187 });
188
189 me.callParent();
190 me.on('activate', reload);
191 },
192 });