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