]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/grid/PoolMembers.js
use windowEdit from widget toolkit
[pve-manager.git] / www / manager6 / grid / PoolMembers.js
index 391dac29591f9f5d541a874924ca919c17c89369..680e27318e3b0ff8f3318204ff200707c90f7877 100644 (file)
 Ext.define('PVE.pool.AddVM', {
-    extend: 'PVE.window.Edit',
-
+    extend: 'Proxmox.window.Edit',
+    width: 600,
+    height: 400,
+    isAdd: true,
+    isCreate: true,
     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: [
+       var vmsField = Ext.create('Ext.form.field.Text', {
+           name: 'vms',
+           hidden: true,
+           allowBlank: false
+       });
+
+       var vmStore = Ext.create('Ext.data.Store', {
+           model: 'PVEResources',
+           sorters: [
                {
-                   xtype: 'pveVMIDSelector',
-                   name: 'vms',
-                   validateExists: true,
-                   value:  '',
-                   fieldLabel: "VM ID"
+                   property: 'vmid',
+                   order: 'ASC'
+               }
+           ],
+           filters: [
+               function(item) {
+                   return ((item.data.type === 'lxc' || item.data.type === 'qemu') && item.data.pool === '');
                }
            ]
        });
 
+       var vmGrid = Ext.create('widget.grid',{
+           store: vmStore,
+           border: true,
+           height: 300,
+           scrollable: true,
+           selModel: {
+               selType: 'checkboxmodel',
+               mode: 'SIMPLE',
+               listeners: {
+                   selectionchange: function(model, selected, opts) {
+                       var selectedVms = [];
+                       selected.forEach(function(vm) {
+                           selectedVms.push(vm.data.vmid);
+                       });
+                       vmsField.setValue(selectedVms);
+                   }
+               }
+           },
+           columns: [
+               {
+                   header: 'ID',
+                   dataIndex: 'vmid',
+                   width: 60
+               },
+               {
+                   header: gettext('Node'),
+                   dataIndex: 'node'
+               },
+               {
+                   header: gettext('Status'),
+                   dataIndex: 'uptime',
+                   renderer: function(value) {
+                       if (value) {
+                           return Proxmox.Utils.runningText;
+                       } else {
+                           return Proxmox.Utils.stoppedText;
+                       }
+                   }
+               },
+               {
+                   header: gettext('Name'),
+                   dataIndex: 'name',
+                   flex: 1
+               },
+               {
+                   header: gettext('Type'),
+                   dataIndex: 'type'
+               }
+           ]
+       });
+       Ext.apply(me, {
+           subject: gettext('Virtual Machine'),
+           items: [ vmsField, vmGrid ]
+       });
+
        me.callParent();
+       vmStore.load();
     }
 });
 
 Ext.define('PVE.pool.AddStorage', {
-    extend: 'PVE.window.Edit',
+    extend: 'Proxmox.window.Edit',
 
     initComponent : function() {
-       /*jslint confusion: true */
+
        var me = this;
 
        if (!me.pool) {
            throw "no pool specified";
        }
 
-       me.create = true;
+       me.isCreate = true;
        me.isAdd = true;
        me.url = "/pools/" + me.pool;
        me.method = 'PUT';
@@ -53,7 +117,7 @@ Ext.define('PVE.pool.AddStorage', {
            width: 350,
            items: [
                {
-                   xtype: 'PVE.form.StorageSelector',
+                   xtype: 'pveStorageSelector',
                    name: 'storage',
                    nodename: 'localhost',
                    autoSelect: false,
@@ -73,6 +137,9 @@ Ext.define('PVE.grid.PoolMembers', {
 
     // fixme: dynamic status update ?
 
+    stateful: true,
+    stateId: 'grid-pool-members',
+
     initComponent : function() {
        var me = this;
 
@@ -95,7 +162,7 @@ Ext.define('PVE.grid.PoolMembers', {
            }
        });
 
-       var coldef = PVE.data.ResourceStore.defaultColums();
+       var coldef = PVE.data.ResourceStore.defaultColumns();
 
        var reload = function() {
            store.load();
@@ -103,7 +170,7 @@ Ext.define('PVE.grid.PoolMembers', {
 
        var sm = Ext.create('Ext.selection.RowModel', {});
 
-       var remove_btn = new PVE.button.Button({
+       var remove_btn = new Proxmox.button.Button({
            text: gettext('Remove'),
            disabled: true,
            selModel: sm,
@@ -121,7 +188,7 @@ Ext.define('PVE.grid.PoolMembers', {
                    throw "unknown resource type";
                }
 
-               PVE.Utils.API2Request({
+               Proxmox.Utils.API2Request({
                    url: '/pools/' + me.pool,
                    method: 'PUT',
                    params: params,
@@ -172,6 +239,11 @@ Ext.define('PVE.grid.PoolMembers', {
             },
             columns: coldef,
            listeners: {
+               itemcontextmenu: PVE.Utils.createCmdMenu,
+               itemdblclick: function(v, record) {
+                   var ws = me.up('pveStdWorkspace');
+                   ws.selectById(record.data.id);
+               },
                activate: reload
            }
        });