]> git.proxmox.com Git - pve-manager.git/commitdiff
copy grid/FirewallAliases.js from manager to manager5
authorDietmar Maurer <dietmar@proxmox.com>
Fri, 3 Jul 2015 09:29:11 +0000 (11:29 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Fri, 3 Jul 2015 09:29:11 +0000 (11:29 +0200)
www/manager5/grid/FirewallAliases.js [new file with mode: 0644]

diff --git a/www/manager5/grid/FirewallAliases.js b/www/manager5/grid/FirewallAliases.js
new file mode 100644 (file)
index 0000000..353b97c
--- /dev/null
@@ -0,0 +1,185 @@
+Ext.define('PVE.FirewallAliasEdit', {
+    extend: 'PVE.window.Edit',
+
+    base_url: undefined,
+    
+    alias_name: undefined,
+
+    initComponent : function() {
+       /*jslint confusion: true */
+       var me = this;
+
+       me.create = (me.alias_name === undefined);
+
+       if (me.create) {
+            me.url = '/api2/extjs' + me.base_url;
+            me.method = 'POST';
+        } else {
+            me.url = '/api2/extjs' + me.base_url + '/' + me.alias_name;
+            me.method = 'PUT';
+        }
+
+       var items =  [
+           {
+               xtype: 'textfield',
+               name: me.create ? 'name' : 'rename',
+               fieldLabel: gettext('Name'),
+               allowBlank: false
+           },
+           {
+               xtype: 'textfield',
+               name: 'cidr',
+               fieldLabel: gettext('IP/CIDR'),
+               allowBlank: false
+           },
+           {
+               xtype: 'textfield',
+               name: 'comment',
+               fieldLabel: gettext('Comment')
+           }
+       ];
+
+       var ipanel = Ext.create('PVE.panel.InputPanel', {
+           create: me.create,
+           items: items
+       });
+
+       Ext.apply(me, {
+            subject: gettext('Alias'),
+           isAdd: true,
+           items: [ ipanel ]
+       });
+
+       me.callParent();
+
+       if (!me.create) {
+           me.load({
+               success:  function(response, options) {
+                   var values = response.result.data;
+                   values.rename = values.name;
+                   ipanel.setValues(values);
+               }
+           });
+       }
+    }
+});
+
+Ext.define('PVE.FirewallAliases', {
+    extend: 'Ext.grid.Panel',
+    alias: ['widget.pveFirewallAliases'],
+
+    base_url: undefined,
+
+    title: gettext('Alias'),
+
+    initComponent : function() {
+       /*jslint confusion: true */
+
+       var me = this;
+
+       if (!me.base_url) {
+           throw "missing base_url configuration";
+       }
+
+       var store = new Ext.data.Store({
+           fields: [ 'name', 'cidr', 'comment', 'digest' ],
+           proxy: {
+               type: 'pve',
+               url: "/api2/json" + me.base_url
+           },
+           idProperty: 'name',
+           sorters: {
+               property: 'name',
+               order: 'DESC'
+           }
+       });
+
+       var sm = Ext.create('Ext.selection.RowModel', {});
+
+       var reload = function() {
+           var oldrec = sm.getSelection()[0];
+           store.load(function(records, operation, success) {
+               if (oldrec) {
+                   var rec = store.findRecord('name', oldrec.data.name);
+                   if (rec) {
+                       sm.select(rec);
+                   }
+               }
+           });
+       };
+
+       var run_editor = function() {
+           var sm = me.getSelectionModel();
+           var rec = sm.getSelection()[0];
+           if (!rec) {
+               return;
+           }
+
+           var win = Ext.create('PVE.FirewallAliasEdit', {
+               base_url: me.base_url,
+               alias_name: rec.data.name
+           });
+
+           win.show();
+           win.on('destroy', reload);
+       };
+
+       me.editBtn = new PVE.button.Button({
+           text: gettext('Edit'),
+           disabled: true,
+           selModel: sm,
+           handler: run_editor
+       });
+
+       me.addBtn =  Ext.create('Ext.Button', {
+           text: gettext('Add'),
+           handler: function() {
+               var win = Ext.create('PVE.FirewallAliasEdit', {
+                   base_url: me.base_url
+               });
+               win.on('destroy', reload);
+               win.show();
+           }
+       });
+
+       me.removeBtn = new PVE.button.Button({
+           text: gettext('Remove'),
+           selModel: sm,
+           disabled: true,
+           handler: function() {
+               var rec = sm.getSelection()[0];
+               if (!rec) {
+                   return;
+               }
+               PVE.Utils.API2Request({
+                   url: me.base_url + '/' + rec.data.name,
+                   method: 'DELETE',
+                   waitMsgTarget: me,
+                   failure: function(response, options) {
+                       Ext.Msg.alert(gettext('Error'), response.htmlStatus);
+                   },
+                   callback: reload
+               });
+           }
+       });
+
+
+       Ext.applyIf(me, {
+           store: store,
+           tbar: [ me.addBtn, me.removeBtn, me.editBtn ],
+           selModel: sm,
+           columns: [
+               { header: gettext('Name'), dataIndex: 'name', width: 100 },
+               { header:  gettext('IP/CIDR'), dataIndex: 'cidr', width: 100 },
+               { header: gettext('Comment'), dataIndex: 'comment', flex: 1 }
+           ],
+           listeners: {
+               itemdblclick: run_editor
+           }
+       });
+
+       me.callParent();
+
+       me.on('show', reload);
+    }
+});