From c449c89a73c2b678a1582a93524c260e24cdef1c Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Fri, 4 Mar 2016 09:28:32 +0100 Subject: [PATCH] ext6migrate: fix ceph Pool tab the usual: * move static conf. to class definition * change "show" event to "activate" special attention here to the bufferedRenderer: false value here: if the grid panel has bufferedRenderer: true (default) and the store is our Diffstore, it adds the Summary Row twice, once before the store is loaded and once after. because there probably will not be many pools in a ceph configuration managed by the gui, we can safely deactivate bufferedRenderer (according to extjs documentation, this is intended for gridpanels with several thousand rows, which is not an issue with ceph pools i think) Signed-off-by: Dominik Csapak --- www/manager6/ceph/Pool.js | 208 +++++++++++++++++++------------------- 1 file changed, 104 insertions(+), 104 deletions(-) diff --git a/www/manager6/ceph/Pool.js b/www/manager6/ceph/Pool.js index 0547e887..39271718 100644 --- a/www/manager6/ceph/Pool.js +++ b/www/manager6/ceph/Pool.js @@ -3,7 +3,52 @@ Ext.define('PVE.CephCreatePool', { alias: ['widget.pveCephCreatePool'], subject: 'Ceph Pool', - + create: true, + method: 'POST', + items: [ + { + xtype: 'textfield', + fieldLabel: gettext('Name'), + name: 'name', + allowBlank: false + }, + { + xtype: 'numberfield', + fieldLabel: gettext('Size'), + name: 'size', + value: 2, + minValue: 1, + maxValue: 3, + allowBlank: false + }, + { + xtype: 'numberfield', + fieldLabel: gettext('Min. Size'), + name: 'min_size', + value: 1, + minValue: 1, + maxValue: 3, + allowBlank: false + }, + { + xtype: 'numberfield', + fieldLabel: gettext('Crush RuleSet'), + name: 'crush_ruleset', + value: 0, + minValue: 0, + maxValue: 32768, + allowBlank: false + }, + { + xtype: 'numberfield', + fieldLabel: 'pg_num', + name: 'pg_num', + value: 64, + minValue: 8, + maxValue: 32768, + allowBlank: false + } + ], initComponent : function() { /*jslint confusion: true */ var me = this; @@ -13,53 +58,7 @@ Ext.define('PVE.CephCreatePool', { } Ext.applyIf(me, { - create: true, url: "/nodes/" + me.nodename + "/ceph/pools", - method: 'POST', - items: [ - { - xtype: 'textfield', - fieldLabel: gettext('Name'), - name: 'name', - allowBlank: false - }, - { - xtype: 'numberfield', - fieldLabel: gettext('Size'), - name: 'size', - value: 2, - minValue: 1, - maxValue: 3, - allowBlank: false - }, - { - xtype: 'numberfield', - fieldLabel: gettext('Min. Size'), - name: 'min_size', - value: 1, - minValue: 1, - maxValue: 3, - allowBlank: false - }, - { - xtype: 'numberfield', - fieldLabel: gettext('Crush RuleSet'), - name: 'crush_ruleset', - value: 0, - minValue: 0, - maxValue: 32768, - allowBlank: false - }, - { - xtype: 'numberfield', - fieldLabel: 'pg_num', - name: 'pg_num', - value: 64, - minValue: 8, - maxValue: 32768, - allowBlank: false - } - ] }); me.callParent(); @@ -70,6 +69,63 @@ Ext.define('PVE.node.CephPoolList', { extend: 'Ext.grid.GridPanel', alias: ['widget.pveNodeCephPoolList'], + stateful: false, + bufferedRenderer: false, + features: [ { ftype: 'summary'} ], + columns: [ + { + header: gettext('Name'), + width: 100, + sortable: true, + dataIndex: 'pool_name' + }, + { + header: gettext('Size') + '/min', + width: 80, + sortable: false, + renderer: function(v, meta, rec) { + return v + '/' + rec.data.min_size; + }, + dataIndex: 'size' + }, + { + header: 'pg_num', + width: 100, + sortable: false, + dataIndex: 'pg_num' + }, + { + header: 'ruleset', + width: 50, + sortable: false, + dataIndex: 'crush_ruleset' + }, + { + header: gettext('Used'), + columns: [ + { + header: '%', + width: 80, + sortable: true, + align: 'right', + renderer: Ext.util.Format.numberRenderer('0.00'), + dataIndex: 'percent_used', + summaryType: 'sum', + summaryRenderer: Ext.util.Format.numberRenderer('0.00') + }, + { + header: gettext('Total'), + width: 100, + sortable: true, + renderer: PVE.Utils.render_size, + align: 'right', + dataIndex: 'bytes_used', + summaryType: 'sum', + summaryRenderer: PVE.Utils.render_size + } + ] + } + ], initComponent: function() { var me = this; @@ -136,65 +192,9 @@ Ext.define('PVE.node.CephPoolList', { Ext.apply(me, { store: store, selModel: sm, - stateful: false, tbar: [ create_btn, remove_btn ], - features: [ { ftype: 'summary' } ], - columns: [ - { - header: gettext('Name'), - width: 100, - sortable: true, - dataIndex: 'pool_name' - }, - { - header: gettext('Size') + '/min', - width: 50, - sortable: false, - renderer: function(v, meta, rec) { - return v + '/' + rec.data.min_size; - }, - dataIndex: 'size' - }, - { - header: 'pg_num', - width: 100, - sortable: false, - dataIndex: 'pg_num' - }, - { - header: 'ruleset', - width: 50, - sortable: false, - dataIndex: 'crush_ruleset' - }, - { - header: gettext('Used'), - columns: [ - { - header: '%', - width: 80, - sortable: true, - align: 'right', - renderer: Ext.util.Format.numberRenderer('0.00'), - dataIndex: 'percent_used', - summaryType: 'sum', - summaryRenderer: Ext.util.Format.numberRenderer('0.00') - }, - { - header: gettext('Total'), - width: 100, - sortable: true, - renderer: PVE.Utils.render_size, - align: 'right', - dataIndex: 'bytes_used', - summaryType: 'sum', - summaryRenderer: PVE.Utils.render_size - } - ] - } - ], listeners: { - show: rstore.startUpdate, + activate: rstore.startUpdate, hide: rstore.stopUpdate, destroy: rstore.stopUpdate }