]> git.proxmox.com Git - pve-manager.git/commitdiff
gui: add MDevSelector
authorDominik Csapak <d.csapak@proxmox.com>
Thu, 22 Nov 2018 10:35:44 +0000 (11:35 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 22 Nov 2018 12:31:31 +0000 (13:31 +0100)
this is used to select a mediated device type

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
www/manager6/Makefile
www/manager6/form/MDevSelector.js [new file with mode: 0644]

index 03fc93e0c2392b0b9f8a8d3e9999eec7b163b915..d900ec88573e3d70b7e0cec53a197f373177ff97 100644 (file)
@@ -42,6 +42,7 @@ JSSRC=                                                        \
        form/DiskStorageSelector.js                     \
        form/BridgeSelector.js                          \
        form/PCISelector.js                             \
+       form/MDevSelector.js                            \
        form/SecurityGroupSelector.js                   \
        form/IPRefSelector.js                           \
        form/IPProtocolSelector.js                      \
diff --git a/www/manager6/form/MDevSelector.js b/www/manager6/form/MDevSelector.js
new file mode 100644 (file)
index 0000000..2eabd79
--- /dev/null
@@ -0,0 +1,91 @@
+Ext.define('PVE.form.MDevSelector', {
+    extend: 'Proxmox.form.ComboGrid',
+    xtype: 'pveMDevSelector',
+
+    store: {
+       fields: [ 'type','available', 'description' ],
+       filterOnLoad: true,
+       sorters: [
+           {
+               property : 'type',
+               direction: 'ASC'
+           }
+       ]
+    },
+    autoSelect: false,
+    valueField: 'type',
+    displayField: 'type',
+    listConfig: {
+       columns: [
+           {
+               header: gettext('Type'),
+               dataIndex: 'type',
+               flex: 1
+           },
+           {
+               header: gettext('Available'),
+               dataIndex: 'available',
+               width: 80
+           },
+           {
+               header: gettext('Description'),
+               dataIndex: 'description',
+               flex: 1,
+               renderer: function(value) {
+                   if (!value) {
+                       return '';
+                   }
+
+                   return value.split('\n').join('<br>');
+               }
+           }
+       ]
+    },
+
+    setPciID: function(pciid, force) {
+       var me = this;
+
+       if (!force && (!pciid || (me.pciid === pciid))) {
+           return;
+       }
+
+       me.pciid = pciid;
+       me.updateProxy();
+    },
+
+
+    setNodename: function(nodename) {
+       var me = this;
+
+       if (!nodename || (me.nodename === nodename)) {
+           return;
+       }
+
+       me.nodename = nodename;
+       me.updateProxy();
+    },
+
+    updateProxy: function() {
+       var me = this;
+       me.store.setProxy({
+           type: 'proxmox',
+           url: '/api2/json/nodes/' + me.nodename + '/scan/pci/' + me.pciid + '/mdev'
+       });
+       me.store.load();
+    },
+
+    initComponent: function() {
+       var me = this;
+
+       if (!me.nodename) {
+           throw 'no node name specified';
+       }
+
+        me.callParent();
+
+       if (me.pciid) {
+           me.setPciID(me.pciid, true);
+       }
+    }
+});
+