]> git.proxmox.com Git - pve-manager-legacy.git/commitdiff
copy grid/PoolMembers.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/PoolMembers.js [new file with mode: 0644]

diff --git a/www/manager5/grid/PoolMembers.js b/www/manager5/grid/PoolMembers.js
new file mode 100644 (file)
index 0000000..939abde
--- /dev/null
@@ -0,0 +1,181 @@
+Ext.define('PVE.pool.AddVM', {
+    extend: 'PVE.window.Edit',
+
+    initComponent : function() {
+       /*jslint confusion: true */
+       var me = this;
+
+       if (!me.pool) {
+           throw "no pool specified";
+       }
+
+       me.create = true;
+       me.isAdd = true;
+       me.url = "/pools/" + me.pool;
+       me.method = 'PUT';
+       
+       Ext.apply(me, {
+           subject: gettext('Virtual Machine'),
+           width: 350,
+           items: [
+               {
+                   xtype: 'pveVMIDSelector',
+                   name: 'vms',
+                   validateExists: true,
+                   value:  '',
+                   fieldLabel: "VM ID"
+               }
+           ]
+       });
+
+       me.callParent();
+    }
+});
+
+Ext.define('PVE.pool.AddStorage', {
+    extend: 'PVE.window.Edit',
+
+    initComponent : function() {
+       /*jslint confusion: true */
+       var me = this;
+
+       if (!me.pool) {
+           throw "no pool specified";
+       }
+
+       me.create = true;
+       me.isAdd = true;
+       me.url = "/pools/" + me.pool;
+       me.method = 'PUT';
+       
+       Ext.apply(me, {
+           subject: gettext('Storage'),
+           width: 350,
+           items: [
+               {
+                   xtype: 'PVE.form.StorageSelector',
+                   name: 'storage',
+                   nodename: 'localhost',
+                   autoSelect: false,
+                   value:  '',
+                   fieldLabel: gettext("Storage")
+               }
+           ]
+       });
+
+       me.callParent();
+    }
+});
+
+Ext.define('PVE.grid.PoolMembers', {
+    extend: 'Ext.grid.GridPanel',
+    alias: ['widget.pvePoolMembers'],
+
+    // fixme: dynamic status update ?
+
+    initComponent : function() {
+       var me = this;
+
+       if (!me.pool) {
+           throw "no pool specified";
+       }
+
+       var store = Ext.create('Ext.data.Store', {
+           model: 'PVEResources',
+           sorters: [
+               {
+                   property : 'type',
+                   direction: 'ASC'
+               }
+           ],
+           proxy: { 
+               type: 'pve',
+               root: 'data.members',
+               url: "/api2/json/pools/" + me.pool
+           }
+       });
+
+       var coldef = PVE.data.ResourceStore.defaultColums();
+
+       var reload = function() {
+           store.load();
+       };
+
+       var sm = Ext.create('Ext.selection.RowModel', {});
+
+       var remove_btn = new PVE.button.Button({
+           text: gettext('Remove'),
+           disabled: true,
+           selModel: sm,
+           confirmMsg: function (rec) {
+               return Ext.String.format(gettext('Are you sure you want to remove entry {0}'),
+                                        "'" + rec.data.id + "'");
+           },
+           handler: function(btn, event, rec) {
+               var params = { 'delete': 1 };
+               if (rec.data.type === 'storage') {
+                   params.storage = rec.data.storage;
+               } else if (rec.data.type === 'qemu' || rec.data.type === 'openvz') {
+                   params.vms = rec.data.vmid;
+               } else {
+                   throw "unknown resource type";
+               }
+
+               PVE.Utils.API2Request({
+                   url: '/pools/' + me.pool,
+                   method: 'PUT',
+                   params: params,
+                   waitMsgTarget: me,
+                   callback: function() {
+                       reload();
+                   },
+                   failure: function (response, opts) {
+                       Ext.Msg.alert(gettext('Error'), response.htmlStatus);
+                   }
+               });
+           }
+       });
+
+       Ext.apply(me, {
+           store: store,
+           selModel: sm,
+           tbar: [
+               {
+                   text: gettext('Add'),
+                   menu: new Ext.menu.Menu({
+                       items: [
+                           {
+                               text: gettext('Virtual Machine'),
+                               iconCls: 'pve-itype-icon-qemu',
+                               handler: function() {
+                                   var win = Ext.create('PVE.pool.AddVM', { pool: me.pool });
+                                   win.on('destroy', reload);
+                                   win.show();
+                               }
+                           },
+                           {
+                               text: gettext('Storage'),
+                               iconCls: 'pve-itype-icon-storage',
+                               handler: function() {
+                                   var win = Ext.create('PVE.pool.AddStorage', { pool: me.pool });
+                                   win.on('destroy', reload);
+                                   win.show();
+                               }
+                           }
+                       ]
+                   })
+               },
+               remove_btn
+           ],
+           viewConfig: {
+               stripeRows: true
+            },
+            columns: coldef,
+           listeners: {
+               show: reload
+           }
+       });
+
+       me.callParent();
+    }
+});
\ No newline at end of file