]> git.proxmox.com Git - pve-manager.git/commitdiff
ui: use pmxDiskList from widget-toolkit
authorDominik Csapak <d.csapak@proxmox.com>
Tue, 16 Jun 2020 09:06:36 +0000 (11:06 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 16 Jun 2020 09:43:05 +0000 (11:43 +0200)
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
www/manager6/Makefile
www/manager6/node/Config.js
www/manager6/node/Disks.js [deleted file]

index 7ebd4db3b8a133f1bb858fde4953f90091a1a7ac..ff452184eaf68708ac9dd83c5d3cee790f8f25c7 100644 (file)
@@ -116,7 +116,6 @@ JSSRC=                                                      \
        ceph/Config.js                                  \
        ceph/Log.js                                     \
        ceph/CephInstallWizard.js                       \
-       node/Disks.js                                   \
        node/LVM.js                                     \
        node/LVMThin.js                                 \
        node/Directory.js                               \
index b5e6fd1aecd8fc72a0fc0abd1805fc06138301ca..f45bd370e0dd7a458f5118d0bb7b3c8276e9c1ab 100644 (file)
@@ -275,7 +275,8 @@ Ext.define('PVE.node.Config', {
                    itemId: 'storage',
                    expandedOnInit: true,
                    iconCls: 'fa fa-hdd-o',
-                   xtype: 'pveNodeDiskList'
+                   nodename: nodename,
+                   xtype: 'pmxDiskList'
                },
                {
                    title: 'LVM',
diff --git a/www/manager6/node/Disks.js b/www/manager6/node/Disks.js
deleted file mode 100644 (file)
index e8ae276..0000000
+++ /dev/null
@@ -1,387 +0,0 @@
-Ext.define('PVE.node.DiskList', {
-    extend: 'Ext.grid.GridPanel',
-    alias: 'widget.pveNodeDiskList',
-
-    emptyText: gettext('No Disks found'),
-
-    stateful: true,
-    stateId: 'grid-node-disks',
-
-    columns: [
-       {
-           header: gettext('Device'),
-           width: 150,
-           sortable: true,
-           dataIndex: 'devpath'
-       },
-       {
-           header: gettext('Type'),
-           width: 80,
-           sortable: true,
-           dataIndex: 'type',
-           renderer: function(v) {
-               if (v === 'ssd') {
-                   return 'SSD';
-               } else if (v === 'hdd') {
-                   return 'Hard Disk';
-               } else if (v === 'usb'){
-                   return 'USB';
-               } else {
-                   return gettext('Unknown');
-               }
-           }
-       },
-       {
-           header: gettext('Usage'),
-           width: 150,
-           sortable: false,
-           renderer: function(v, metaData, rec) {
-               if (rec) {
-                   if (rec.data.osdid >= 0) {
-                       var bluestore = '';
-                       if (rec.data.bluestore === 1) {
-                           bluestore = ' (Bluestore)';
-                       }
-                       return "Ceph osd." + rec.data.osdid.toString() + bluestore;
-                   }
-
-                   var types = [];
-                   if (rec.data.journals > 0) {
-                       types.push('Journal');
-                   }
-
-                   if (rec.data.db > 0) {
-                       types.push('DB');
-                   }
-
-                   if (rec.data.wal > 0) {
-                       types.push('WAL');
-                   }
-
-                   if (types.length > 0) {
-                       return 'Ceph (' + types.join(', ') + ')';
-                   }
-               }
-
-               return v || Proxmox.Utils.noText;
-           },
-           dataIndex: 'used'
-       },
-       {
-           header: gettext('Size'),
-           width: 100,
-           align: 'right',
-           sortable: true,
-           renderer: Proxmox.Utils.format_size,
-           dataIndex: 'size'
-       },
-       {
-           header: 'GPT',
-           width: 60,
-           align: 'right',
-           renderer: Proxmox.Utils.format_boolean,
-           dataIndex: 'gpt'
-       },
-       {
-           header: gettext('Vendor'),
-           width: 100,
-           sortable: true,
-           hidden: true,
-           renderer: Ext.String.htmlEncode,
-           dataIndex: 'vendor'
-       },
-       {
-           header: gettext('Model'),
-           width: 200,
-           sortable: true,
-           renderer: Ext.String.htmlEncode,
-           dataIndex: 'model'
-       },
-       {
-           header: gettext('Serial'),
-           width: 200,
-           sortable: true,
-           renderer: Ext.String.htmlEncode,
-           dataIndex: 'serial'
-       },
-       {
-           header: 'S.M.A.R.T.',
-           width: 100,
-           sortable: true,
-           renderer: Ext.String.htmlEncode,
-           dataIndex: 'health'
-       },
-       {
-           header: 'Wearout',
-           width: 90,
-           sortable: true,
-           align: 'right',
-           dataIndex: 'wearout',
-           renderer: function(value) {
-               if (Ext.isNumeric(value)) {
-                   return (100 - value).toString() + '%';
-               }
-               return 'N/A';
-           }
-       }
-    ],
-
-    initComponent: function() {
-        var me = this;
-
-       var nodename = me.pveSelNode.data.node;
-       if (!nodename) {
-           throw "no node name specified";
-       }
-
-       var sm = Ext.create('Ext.selection.RowModel', {});
-
-       var store = Ext.create('Ext.data.Store', {
-           storeid: 'node-disk-list' + nodename,
-           model: 'node-disk-list',
-           proxy: {
-                type: 'proxmox',
-                url: "/api2/json/nodes/" + nodename + "/disks/list"
-           },
-           sorters: [
-               {
-                   property : 'dev',
-                   direction: 'ASC'
-               }
-           ]
-       });
-
-       var reloadButton = Ext.create('Proxmox.button.Button', {
-           text: gettext('Reload'),
-           handler: function() {
-               me.store.load();
-           }
-       });
-
-       var smartButton = Ext.create('Proxmox.button.Button', {
-           text: gettext('Show S.M.A.R.T. values'),
-           selModel: sm,
-           enableFn: function() {
-               return !!sm.getSelection().length;
-           },
-           disabled: true,
-           handler: function() {
-               var rec = sm.getSelection()[0];
-
-               var win = Ext.create('PVE.DiskSmartWindow', {
-                    nodename: nodename,
-                   dev: rec.data.devpath
-               });
-               win.show();
-           }
-       });
-
-       var initButton = Ext.create('Proxmox.button.Button', {
-           text: gettext('Initialize Disk with GPT'),
-           selModel: sm,
-           enableFn: function() {
-               var selection = sm.getSelection();
-
-               if (!selection.length || selection[0].data.used) {
-                   return false;
-               } else {
-                   return true;
-               }
-           },
-           disabled: true,
-
-           handler: function() {
-               var rec = sm.getSelection()[0];
-               Proxmox.Utils.API2Request({
-                   url: '/api2/extjs/nodes/' + nodename + '/disks/initgpt',
-                   waitMsgTarget: me,
-                   method: 'POST',
-                   params: { disk: rec.data.devpath},
-                   failure: function(response, options) {
-                       Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-                   },
-                   success: function(response, options) {
-                       var upid = response.result.data;
-                       var win = Ext.create('Proxmox.window.TaskProgress', {
-                           upid: upid
-                       });
-                       win.show();
-                   }
-               });
-           }
-       });
-
-       me.loadCount = 1; // avoid duplicate loadmask
-       Proxmox.Utils.monStoreErrors(me, store);
-
-       Ext.apply(me, {
-           store: store,
-           selModel: sm,
-           tbar: [ reloadButton, smartButton, initButton ],
-           listeners: {
-               itemdblclick: function() {
-                   var rec = sm.getSelection()[0];
-
-                   var win = Ext.create('PVE.DiskSmartWindow', {
-                       nodename: nodename,
-                       dev: rec.data.devpath
-                   });
-                   win.show();
-               }
-           }
-       });
-
-
-       me.callParent();
-       me.store.load();
-    }
-}, function() {
-
-    Ext.define('node-disk-list', {
-       extend: 'Ext.data.Model',
-       fields: [ 'devpath', 'used', { name: 'size', type: 'number'},
-                 {name: 'osdid', type: 'number'},
-                 'vendor', 'model', 'serial', 'rpm', 'type', 'health', 'wearout' ],
-       idProperty: 'devpath'
-    });
-});
-
-Ext.define('PVE.DiskSmartWindow', {
-    extend: 'Ext.window.Window',
-    alias: 'widget.pveSmartWindow',
-
-    modal: true,
-
-    items: [
-       {
-           xtype: 'gridpanel',
-           layout: {
-               type: 'fit'
-           },
-           emptyText: gettext('No S.M.A.R.T. Values'),
-           scrollable: true,
-           flex: 1,
-           itemId: 'smarts',
-           reserveScrollbar: true,
-           columns: [
-           { text: 'ID', dataIndex: 'id', width: 50 },
-           { text: gettext('Attribute'), flex: 1, dataIndex: 'name', renderer: Ext.String.htmlEncode },
-           { text: gettext('Value'), dataIndex: 'raw', renderer: Ext.String.htmlEncode },
-           { text: gettext('Normalized'), dataIndex: 'value', width: 60},
-           { text: gettext('Threshold'), dataIndex: 'threshold', width: 60},
-           { text: gettext('Worst'), dataIndex: 'worst', width: 60},
-           { text: gettext('Flags'), dataIndex: 'flags'},
-           { text: gettext('Failing'), dataIndex: 'fail', renderer: Ext.String.htmlEncode }
-           ]
-       },
-       {
-           xtype: 'component',
-           itemId: 'text',
-           layout: {
-               type: 'fit'
-           },
-           hidden: true,
-           style: {
-               'background-color': 'white',
-               'white-space': 'pre',
-               'font-family': 'monospace'
-           }
-       }
-    ],
-
-    buttons: [
-       {
-           text: gettext('Reload'),
-           name: 'reload',
-           handler: function() {
-               var me = this;
-               me.up('window').store.reload();
-           }
-       },
-       {
-           text: gettext('Close'),
-           name: 'close',
-           handler: function() {
-               var me = this;
-               me.up('window').close();
-           }
-       }
-    ],
-
-    layout: {
-       type: 'vbox',
-       align: 'stretch'
-    },
-    width: 800,
-    height: 500,
-    minWidth: 600,
-    minHeight: 400,
-    bodyPadding: 5,
-    title: gettext('S.M.A.R.T. Values'),
-
-    initComponent: function() {
-       var me = this;
-
-       var nodename = me.nodename;
-       if (!nodename) {
-           throw "no node name specified";
-       }
-
-       var dev = me.dev;
-       if (!dev) {
-           throw "no device specified";
-       }
-
-       me.store = Ext.create('Ext.data.Store', {
-           model: 'disk-smart',
-           proxy: {
-                type: 'proxmox',
-                url: "/api2/json/nodes/" + nodename + "/disks/smart?disk=" + dev
-           }
-       });
-
-       me.callParent();
-       var grid = me.down('#smarts');
-       var text = me.down('#text');
-
-       Proxmox.Utils.monStoreErrors(grid, me.store);
-       me.mon(me.store, 'load', function(s, records, success) {
-           if (success && records.length > 0) {
-               var rec = records[0];
-               switch (rec.data.type) {
-                   case 'text':
-                       grid.setVisible(false);
-                       text.setVisible(true);
-                       text.setHtml(Ext.String.htmlEncode(rec.data.text));
-                       break;
-                   default:
-                       // includes 'ata'
-                       // cannot use empty case because
-                       grid.setVisible(true);
-                       text.setVisible(false);
-                       grid.setStore(rec.attributes());
-                       break;
-               }
-           }
-       });
-
-       me.store.load();
-    }
-}, function() {
-
-    Ext.define('disk-smart', {
-       extend: 'Ext.data.Model',
-       fields: [
-           { name:'health'},
-           { name:'type'},
-           { name:'text'}
-       ],
-       hasMany: {model: 'smart-attribute', name: 'attributes'}
-    });
-    Ext.define('smart-attribute', {
-       extend: 'Ext.data.Model',
-       fields: [
-           { name:'id', type:'number' }, 'name', 'value', 'worst', 'threshold', 'flags', 'fail', 'raw'
-       ]
-    });
-});