]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/panel/IPSet.js
1 Ext
.define('PVE.IPSetList', {
2 extend
: 'Ext.grid.Panel',
3 alias
: 'widget.pveIPSetList',
5 ipset_panel
: undefined,
13 initComponent: function() {
14 /*jslint confusion: true */
17 if (me
.ipset_panel
== undefined) {
18 throw "no rule panel specified";
21 if (me
.base_url
== undefined) {
22 throw "no base_url specified";
25 var store
= new Ext
.data
.Store({
26 fields
: [ 'name', 'comment', 'digest' ],
29 url
: "/api2/json" + me
.base_url
38 var sm
= Ext
.create('Ext.selection.RowModel', {});
40 var reload = function() {
41 var oldrec
= sm
.getSelection()[0];
42 store
.load(function(records
, operation
, success
) {
44 var rec
= store
.findRecord('name', oldrec
.data
.name
);
52 var run_editor = function() {
53 var rec
= sm
.getSelection()[0];
57 var win
= Ext
.create('PVE.window.Edit', {
58 subject
: "IPSet '" + rec
.data
.name
+ "'",
61 digest
: rec
.data
.digest
,
72 fieldLabel
: gettext('Name'),
78 value
: rec
.data
.comment
,
79 fieldLabel
: gettext('Comment')
84 win
.on('destroy', reload
);
87 me
.editBtn
= new PVE
.button
.Button({
88 text
: gettext('Edit'),
94 me
.addBtn
= new PVE
.button
.Button({
95 text
: gettext('Create'),
98 var win
= Ext
.create('PVE.window.Edit', {
107 fieldLabel
: gettext('Name'),
114 fieldLabel
: gettext('Comment')
119 win
.on('destroy', reload
);
124 me
.removeBtn
= new PVE
.button
.Button({
125 text
: gettext('Remove'),
128 handler: function() {
129 var rec
= sm
.getSelection()[0];
130 if (!rec
|| !me
.base_url
) {
133 PVE
.Utils
.API2Request({
134 url
: me
.base_url
+ '/' + rec
.data
.name
,
137 failure: function(response
, options
) {
138 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
147 tbar
: [ '<b>IPSet:</b>', me
.addBtn
, me
.removeBtn
, me
.editBtn
],
150 { header
: 'IPSet', dataIndex
: 'name', width
: 100 },
151 { header
: gettext('Comment'), dataIndex
: 'comment', renderer
: Ext
.String
.htmlEncode
, flex
: 1 }
154 itemdblclick
: run_editor
,
155 select: function(sm
, rec
) {
156 var url
= me
.base_url
+ '/' + rec
.data
.name
;
157 me
.ipset_panel
.setBaseUrl(url
);
159 deselect: function() {
160 me
.ipset_panel
.setBaseUrl(undefined);
172 Ext
.define('PVE.IPSetCidrEdit', {
173 extend
: 'PVE.window.Edit',
177 initComponent : function() {
178 /*jslint confusion: true */
181 me
.create
= (me
.cidr
=== undefined);
185 me
.url
= '/api2/extjs' + me
.base_url
;
188 me
.url
= '/api2/extjs' + me
.base_url
+ '/' + me
.cidr
;
195 if (!me
.list_refs_url
) {
196 throw "no alias_base_url specified";
200 xtype
: 'pveIPRefSelector',
205 base_url
: me
.list_refs_url
,
207 fieldLabel
: gettext('IP/CIDR')
211 xtype
: 'displayfield',
214 fieldLabel
: gettext('IP/CIDR')
218 var ipanel
= Ext
.create('PVE.panel.InputPanel', {
223 xtype
: 'pvecheckbox',
227 fieldLabel
: 'nomatch'
235 fieldLabel
: gettext('Comment')
241 subject
: gettext('IP/CIDR'),
249 success: function(response
, options
) {
250 var values
= response
.result
.data
;
251 ipanel
.setValues(values
);
258 Ext
.define('PVE.IPSetGrid', {
259 extend
: 'Ext.grid.Panel',
260 alias
: 'widget.pveIPSetGrid',
263 list_refs_url
: undefined,
266 removeBtn
: undefined,
269 setBaseUrl: function(url
) {
274 if (url
=== undefined) {
275 me
.addBtn
.setDisabled(true);
276 me
.store
.removeAll();
278 me
.addBtn
.setDisabled(false);
281 url
: '/api2/json' + url
288 initComponent: function() {
289 /*jslint confusion: true */
292 if (!me
.list_refs_url
) {
293 throw "no1 list_refs_url specified";
296 var store
= new Ext
.data
.Store({
300 var reload = function() {
304 var sm
= Ext
.create('Ext.selection.RowModel', {});
306 var run_editor = function() {
307 var rec
= sm
.getSelection()[0];
311 var win
= Ext
.create('PVE.IPSetCidrEdit', {
312 base_url
: me
.base_url
,
316 win
.on('destroy', reload
);
319 me
.editBtn
= new PVE
.button
.Button({
320 text
: gettext('Edit'),
326 me
.addBtn
= new PVE
.button
.Button({
327 text
: gettext('Add'),
329 handler: function() {
333 var win
= Ext
.create('PVE.IPSetCidrEdit', {
334 base_url
: me
.base_url
,
335 list_refs_url
: me
.list_refs_url
338 win
.on('destroy', reload
);
342 me
.removeBtn
= new PVE
.button
.Button({
343 text
: gettext('Remove'),
346 handler: function() {
347 var rec
= sm
.getSelection()[0];
348 if (!rec
|| !me
.base_url
) {
352 PVE
.Utils
.API2Request({
353 url
: me
.base_url
+ '/' + rec
.data
.cidr
,
356 failure: function(response
, options
) {
357 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
364 var render_errors = function(value
, metaData
, record
) {
365 var errors
= record
.data
.errors
;
367 var msg
= errors
.cidr
|| errors
.nomatch
;
369 metaData
.tdCls
= 'x-form-invalid-field';
370 var html
= '<p>' + Ext
.htmlEncode(msg
) + '</p>';
371 metaData
.tdAttr
= 'data-qwidth=600 data-qtitle="ERROR" data-qtip="' +
372 html
.replace(/\"/g,'"') + '"';
379 tbar
: [ '<b>IP/CIDR:</b>', me
.addBtn
, me
.removeBtn
, me
.editBtn
],
383 itemdblclick
: run_editor
390 header
: gettext('IP/CIDR'),
393 renderer: function(value
, metaData
, record
) {
394 value
= render_errors(value
, metaData
, record
);
395 if (record
.data
.nomatch
) {
396 return '<b>! </b>' + value
;
402 header
: gettext('Comment'),
403 dataIndex
: 'comment',
405 renderer: function(value
) {
406 return Ext
.util
.Format
.htmlEncode(value
);
415 me
.setBaseUrl(me
.base_url
); // load
420 Ext
.define('pve-ipset', {
421 extend
: 'Ext.data.Model',
422 fields
: [ { name
: 'nomatch', type
: 'boolean' },
423 'cidr', 'comment', 'errors' ],
429 Ext
.define('PVE.IPSet', {
430 extend
: 'Ext.panel.Panel',
431 alias
: 'widget.pveIPSet',
435 list_refs_url
: undefined,
437 initComponent: function() {
440 if (!me
.list_refs_url
) {
441 throw "no list_refs_url specified";
444 var ipset_panel
= Ext
.createWidget('pveIPSetGrid', {
446 list_refs_url
: me
.list_refs_url
,
451 var ipset_list
= Ext
.createWidget('pveIPSetList', {
453 ipset_panel
: ipset_panel
,
454 base_url
: me
.base_url
,
462 items
: [ ipset_list
, ipset_panel
],
465 ipset_list
.fireEvent('show', ipset_list
);