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 9D48F6B3E0 for ; Thu, 18 Feb 2021 16:06:50 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with UTF8SMTP id 8BDE8FCC6 for ; Thu, 18 Feb 2021 16:06:20 +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) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with UTF8SMTPS id 05879FCB8 for ; Thu, 18 Feb 2021 16:06:20 +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 C5B29461E3 for ; Thu, 18 Feb 2021 16:06:19 +0100 (CET) Message-ID: Date: Thu, 18 Feb 2021 16:06:19 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:86.0) Gecko/20100101 Thunderbird/86.0 Content-Language: en-US To: pbs-devel@lists.proxmox.com References: <20210218144030.16778-1-d.csapak@proxmox.com> <20210218144030.16778-11-d.csapak@proxmox.com> From: Dominik Csapak In-Reply-To: <20210218144030.16778-11-d.csapak@proxmox.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.214 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: [pbs-devel] [PATCH proxmox-backup 11/11] ui: tape/ChangerStatus: show the state of the drive X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Feb 2021 15:06:50 -0000 On 2/18/21 15:40, Dominik Csapak wrote: > an optimize the columns for smaller layouts (1280 width) > we show either: > * Idle > * spinner + status (if no upid) > * spinner + rendered UPID (clickable, opens task viewer) > > Signed-off-by: Dominik Csapak > --- > we probably want to have an updatestore for only the drive state > of the changer (such an api call would not cost much, since it > only checks a lock + read from tmpfs) to have an up-to-date view > of the drive state. If we have that, we can enable/disable > buttons/options for busy drives. > > www/tape/ChangerStatus.js | 47 ++++++++++++++++++++++++++++++++++++++- > 1 file changed, 46 insertions(+), 1 deletion(-) > > diff --git a/www/tape/ChangerStatus.js b/www/tape/ChangerStatus.js > index 436bae72..5a1c6073 100644 > --- a/www/tape/ChangerStatus.js > +++ b/www/tape/ChangerStatus.js > @@ -498,6 +498,42 @@ Ext.define('PBS.TapeManagement.ChangerStatus', { > } > return status; > }, > + > + renderState: function(value, md, record) { > + if (!value) { > + return gettext('Idle'); > + } > + > + let icon = ''; > + > + if (value.startsWith("UPID")) { > + let upid = Proxmox.Utils.parse_task_upid(value); > + md.tdCls = "pointer"; > + return `${icon} ${upid.desc}`; > + } > + > + return `${icon} ${value}`; > + }, > + > + control: { > + 'grid[reference=drives]': { > + cellclick: function(table, td, ci, rec, tr, ri, e) { > + if (!e.position.column.dataIndex === 'state') { this line should be if (e.position.column.dataIndex !== 'state') { i'll fix in a potential v2 or alternatively send a fixup > + return; > + } > + > + let upid = rec.data.state; > + if (!upid || !upid.startsWith("UPID")) { > + return; > + } > + > + Ext.create('Proxmox.window.TaskViewer', { > + autoShow: true, > + upid, > + }); > + }, > + }, > + }, > }, > > listeners: { > @@ -641,7 +677,7 @@ Ext.define('PBS.TapeManagement.ChangerStatus', { > text: gettext('Inventory'), > dataIndex: 'is-labeled', > renderer: 'renderIsLabeled', > - flex: 1, > + flex: 1.5, > }, > { > text: gettext("Name"), > @@ -650,10 +686,17 @@ Ext.define('PBS.TapeManagement.ChangerStatus', { > flex: 1, > renderer: Ext.htmlEncode, > }, > + { > + text: gettext('State'), > + dataIndex: 'state', > + flex: 3, > + renderer: 'renderState', > + }, > { > text: gettext("Vendor"), > sortable: true, > dataIndex: 'vendor', > + hidden: true, > flex: 1, > renderer: Ext.htmlEncode, > }, > @@ -661,6 +704,7 @@ Ext.define('PBS.TapeManagement.ChangerStatus', { > text: gettext("Model"), > sortable: true, > dataIndex: 'model', > + hidden: true, > flex: 1, > renderer: Ext.htmlEncode, > }, > @@ -668,6 +712,7 @@ Ext.define('PBS.TapeManagement.ChangerStatus', { > text: gettext("Serial"), > sortable: true, > dataIndex: 'serial', > + hidden: true, > flex: 1, > renderer: Ext.htmlEncode, > }, >