]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/grid/FirewallAliases.js
ui: eslint: enforce "no-extra-parens" rule
[pve-manager.git] / www / manager6 / grid / FirewallAliases.js
CommitLineData
53ebd289 1Ext.define('PVE.FirewallAliasEdit', {
9fccc702 2 extend: 'Proxmox.window.Edit',
53ebd289
DM
3
4 base_url: undefined,
09b3292e 5
53ebd289
DM
6 alias_name: undefined,
7
09b3292e
TL
8 width: 400,
9
8058410f 10 initComponent: function() {
53ebd289
DM
11 var me = this;
12
53e3ea84 13 me.isCreate = me.alias_name === undefined;
53ebd289 14
d5e771ce 15 if (me.isCreate) {
a22fc39f
TL
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 }
53ebd289 22
8058410f 23 var items = [
53ebd289
DM
24 {
25 xtype: 'textfield',
d5e771ce 26 name: me.isCreate ? 'name' : 'rename',
53ebd289 27 fieldLabel: gettext('Name'),
f6710aac 28 allowBlank: false,
53ebd289
DM
29 },
30 {
31 xtype: 'textfield',
32 name: 'cidr',
33 fieldLabel: gettext('IP/CIDR'),
f6710aac 34 allowBlank: false,
53ebd289
DM
35 },
36 {
37 xtype: 'textfield',
38 name: 'comment',
f6710aac
TL
39 fieldLabel: gettext('Comment'),
40 },
53ebd289
DM
41 ];
42
ef4ef788 43 var ipanel = Ext.create('Proxmox.panel.InputPanel', {
d5e771ce 44 isCreate: me.isCreate,
f6710aac 45 items: items,
53ebd289
DM
46 });
47
48 Ext.apply(me, {
49 subject: gettext('Alias'),
50 isAdd: true,
8058410f 51 items: [ipanel],
53ebd289
DM
52 });
53
54 me.callParent();
55
d5e771ce 56 if (!me.isCreate) {
53ebd289 57 me.load({
a22fc39f 58 success: function(response, options) {
53ebd289
DM
59 var values = response.result.data;
60 values.rename = values.name;
61 ipanel.setValues(values);
f6710aac 62 },
53ebd289
DM
63 });
64 }
f6710aac 65 },
53ebd289
DM
66});
67
1774f148
DC
68Ext.define('pve-fw-aliases', {
69 extend: 'Ext.data.Model',
70
8058410f 71 fields: ['name', 'cidr', 'comment', 'digest'],
f6710aac 72 idProperty: 'name',
1774f148
DC
73});
74
53ebd289
DM
75Ext.define('PVE.FirewallAliases', {
76 extend: 'Ext.grid.Panel',
77 alias: ['widget.pveFirewallAliases'],
78
9a811965
DC
79 onlineHelp: 'pve_firewall_ip_aliases',
80
123e1c80
DC
81 stateful: true,
82 stateId: 'grid-firewall-aliases',
83
53ebd289
DM
84 base_url: undefined,
85
86 title: gettext('Alias'),
87
8058410f 88 initComponent: function() {
53ebd289
DM
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({
1774f148 96 model: 'pve-fw-aliases',
53ebd289 97 proxy: {
56a353b9 98 type: 'proxmox',
f6710aac 99 url: "/api2/json" + me.base_url,
53ebd289 100 },
53ebd289
DM
101 sorters: {
102 property: 'name',
f6710aac
TL
103 order: 'DESC',
104 },
53ebd289
DM
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) {
8267aa63 113 var rec = store.findRecord('name', oldrec.data.name, 0, false, true, true);
53ebd289
DM
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,
f6710aac 130 alias_name: rec.data.name,
53ebd289
DM
131 });
132
133 win.show();
134 win.on('destroy', reload);
135 };
136
5720fafa 137 me.editBtn = new Proxmox.button.Button({
53ebd289
DM
138 text: gettext('Edit'),
139 disabled: true,
140 selModel: sm,
f6710aac 141 handler: run_editor,
53ebd289
DM
142 });
143
8058410f 144 me.addBtn = Ext.create('Ext.Button', {
53ebd289
DM
145 text: gettext('Add'),
146 handler: function() {
147 var win = Ext.create('PVE.FirewallAliasEdit', {
f6710aac 148 base_url: me.base_url,
53ebd289
DM
149 });
150 win.on('destroy', reload);
151 win.show();
f6710aac 152 },
53ebd289
DM
153 });
154
3b1ca3ff 155 me.removeBtn = Ext.create('Proxmox.button.StdRemoveButton', {
53ebd289 156 selModel: sm,
3b1ca3ff 157 baseurl: me.base_url + '/',
f6710aac 158 callback: reload,
53ebd289
DM
159 });
160
161
b6f01f84 162 Ext.apply(me, {
53ebd289 163 store: store,
8058410f 164 tbar: [me.addBtn, me.removeBtn, me.editBtn],
53ebd289
DM
165 selModel: sm,
166 columns: [
c10fabfe
TL
167 {
168 header: gettext('Name'),
169 dataIndex: 'name',
170 flex: 1,
171 },
172 {
8058410f 173 header: gettext('IP/CIDR'),
c10fabfe
TL
174 dataIndex: 'cidr',
175 flex: 1,
176 },
177 {
178 header: gettext('Comment'),
179 dataIndex: 'comment',
180 renderer: Ext.String.htmlEncode,
181 flex: 3,
f6710aac 182 },
53ebd289
DM
183 ],
184 listeners: {
f6710aac
TL
185 itemdblclick: run_editor,
186 },
53ebd289
DM
187 });
188
189 me.callParent();
260c1540 190 me.on('activate', reload);
f6710aac 191 },
53ebd289 192});