]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/grid/FirewallAliases.js
use Proxmox.button.StdRemoveButton where possible
[pve-manager.git] / www / manager6 / 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
10 var me = this;
11
12 me.isCreate = (me.alias_name === undefined);
13
14 if (me.isCreate) {
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.isCreate ? '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 isCreate: me.isCreate,
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.isCreate) {
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-fw-aliases', {
68 extend: 'Ext.data.Model',
69
70 fields: [ 'name', 'cidr', 'comment', 'digest' ],
71 idProperty: 'name'
72 });
73
74 Ext.define('PVE.FirewallAliases', {
75 extend: 'Ext.grid.Panel',
76 alias: ['widget.pveFirewallAliases'],
77
78 onlineHelp: 'pve_firewall_ip_aliases',
79
80 stateful: true,
81 stateId: 'grid-firewall-aliases',
82
83 base_url: undefined,
84
85 title: gettext('Alias'),
86
87 initComponent : function() {
88
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: 'pve',
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);
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 PVE.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 { header: gettext('Name'), dataIndex: 'name', width: 100 },
168 { header: gettext('IP/CIDR'), dataIndex: 'cidr', width: 100 },
169 { header: gettext('Comment'), dataIndex: 'comment', renderer: Ext.String.htmlEncode, flex: 1 }
170 ],
171 listeners: {
172 itemdblclick: run_editor
173 }
174 });
175
176 me.callParent();
177 me.on('activate', reload);
178 }
179 });