From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with UTF8SMTPS id 7DC3A62EDD for ; Tue, 24 Nov 2020 14:54:00 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with UTF8SMTP id 61109DE9A for ; Tue, 24 Nov 2020 14:53:29 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with UTF8SMTPS id B5B3EDE90 for ; Tue, 24 Nov 2020 14:53:28 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with UTF8SMTP id 7F8FA406E3; Tue, 24 Nov 2020 14:53:28 +0100 (CET) To: Proxmox VE development discussion , Alwin Antreich References: <20201124105811.1416723-1-a.antreich@proxmox.com> <20201124105811.1416723-5-a.antreich@proxmox.com> From: Dominik Csapak Message-ID: <4751d9d9-b385-cb83-923e-178e2f51305c@proxmox.com> Date: Tue, 24 Nov 2020 14:53:27 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Thunderbird/84.0 MIME-Version: 1.0 In-Reply-To: <20201124105811.1416723-5-a.antreich@proxmox.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.317 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment NICE_REPLY_A -0.001 Looks like a legit reply (A) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH manager v2 4/8] ceph: gui: add autoscale & flatten pool view X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Nov 2020 13:54:00 -0000 comments inline On 11/24/20 11:58 AM, Alwin Antreich wrote: > Letting the columns flex needs a flat column head structure. > > Signed-off-by: Alwin Antreich > --- > www/manager6/ceph/Pool.js | 131 ++++++++++++++++++++++---------------- > 1 file changed, 75 insertions(+), 56 deletions(-) > > diff --git a/www/manager6/ceph/Pool.js b/www/manager6/ceph/Pool.js > index 271dcc3c..6febe1fc 100644 > --- a/www/manager6/ceph/Pool.js > +++ b/www/manager6/ceph/Pool.js > @@ -105,14 +105,16 @@ Ext.define('PVE.node.CephPoolList', { > > columns: [ > { > - header: gettext('Name'), > - width: 120, > + text: gettext('Name'), > + minWidth: 120, > + flex: 2, > sortable: true, > dataIndex: 'pool_name' > }, > { > - header: gettext('Size') + '/min', > - width: 100, > + text: gettext('Size') + '/min', > + minWidth: 100, > + flex: 1, > align: 'right', > renderer: function(v, meta, rec) { > return v + '/' + rec.data.min_size; > @@ -120,62 +122,75 @@ Ext.define('PVE.node.CephPoolList', { > dataIndex: 'size' > }, > { > - text: 'Placement Groups', > - columns: [ > - { > - text: '# of PGs', // pg_num', > - width: 150, > - align: 'right', > - dataIndex: 'pg_num' > - }, > - { > - text: gettext('Autoscale'), > - width: 140, > - align: 'right', > - dataIndex: 'pg_autoscale_mode' > - }, > - ] > + text: '# of Placement Groups', > + flex: 1, > + minWidth: 150, > + align: 'right', > + dataIndex: 'pg_num' > }, > { > - text: 'CRUSH Rule', > - columns: [ > - { > - text: 'ID', > - align: 'right', > - width: 50, > - dataIndex: 'crush_rule' > - }, > - { > - text: gettext('Name'), > - width: 150, > - dataIndex: 'crush_rule_name', > - }, > - ] > + text: gettext('Optimal # of PGs'), > + flex: 1, > + minWidth: 140, > + align: 'right', > + dataIndex: 'pg_num_final', > }, > { > - text: gettext('Used'), > - columns: [ > - { > - text: '%', > - width: 100, > - sortable: true, > - align: 'right', > - renderer: function(val) { > - return Ext.util.Format.percent(val, '0.00'); > - }, > - dataIndex: 'percent_used', > - }, > - { > - text: gettext('Total'), > - width: 100, > - sortable: true, > - renderer: PVE.Utils.render_size, > - align: 'right', > - dataIndex: 'bytes_used', > - summaryType: 'sum', > - summaryRenderer: PVE.Utils.render_size > + text: gettext('Target Size Ratio'), > + flex: 1, > + minWidth: 140, > + align: 'right', > + dataIndex: 'target_size_ratio', > + renderer: Ext.util.Format.numberRenderer('0.0000'), > + hidden: true, > + }, > + { > + text: gettext('Target Size'), > + flex: 1, > + minWidth: 140, > + align: 'right', > + dataIndex: 'target_size', > + hidden: true, > + renderer: function(v, metaData, rec) { > + let value = PVE.Utils.render_size(v); > + if (rec.data.target_size_ratio > 0) { > + value = ' ' + value; > + metaData.tdAttr = 'data-qtip="Target Size Ratio takes precedence over Target Size."'; > } > - ] > + return value; > + }, > + }, > + { > + text: gettext('Autoscale') + ' ' + gettext('Mode'), please do not do this as it does not work in all languages e.g. 'autoscaling mode' translates to 'modo de escalado automático' in spanish (courtesy of deepl.com) simply write gettext("Autoscale Mode') > + flex: 1, > + minWidth: 140, > + align: 'right', > + dataIndex: 'pg_autoscale_mode', > + }, > + { > + text: 'CRUSH ' + gettext('Rule') + ' (ID)', also this: we did not translate 'CRUSH Rule' so we can simply use 'CRUSH Rule (ID)' here > + flex: 1, > + align: 'right', > + minWidth: 150, > + renderer: function(v, meta, rec) { > + return v + ' (' + rec.data.crush_rule + ')'; > + }, > + dataIndex: 'crush_rule_name', > + }, > + { > + text: gettext('Used (%)'), > + flex: 1, > + minWidth: 180, > + sortable: true, > + align: 'right', > + dataIndex: 'bytes_used', > + summaryType: 'sum', > + summaryRenderer: PVE.Utils.render_size, > + renderer: function(v, meta, rec) { > + let percentage = Ext.util.Format.percent(rec.data.percent_used, '0.00'); > + let used = PVE.Utils.render_size(v); > + return used + ' (' + percentage + ')'; > + }, > } > ], > initComponent: function() { > @@ -276,7 +291,11 @@ Ext.define('PVE.node.CephPoolList', { > { name: 'bytes_used', type: 'integer'}, > { name: 'percent_used', type: 'number'}, > { name: 'crush_rule', type: 'integer'}, > - { name: 'crush_rule_name', type: 'string'} > + { name: 'crush_rule_name', type: 'string'}, > + { name: 'pg_autoscale_mode', type: 'string'}, > + { name: 'pg_num_final', type: 'integer'}, > + { name: 'target_size_ratio', type: 'number'}, > + { name: 'target_size_bytes', type: 'integer'}, > ], > idProperty: 'pool_name' > }); >