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 ESMTPS id 9FA968F93 for ; Tue, 1 Aug 2023 11:30:26 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 83B5CC3E9 for ; Tue, 1 Aug 2023 11:29:56 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (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 ESMTPS for ; Tue, 1 Aug 2023 11:29:55 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 284974393D for ; Tue, 1 Aug 2023 11:29:55 +0200 (CEST) From: Dominik Csapak To: pbs-devel@lists.proxmox.com Date: Tue, 1 Aug 2023 11:29:54 +0200 Message-Id: <20230801092954.1686860-4-d.csapak@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230801092954.1686860-1-d.csapak@proxmox.com> References: <20230801092954.1686860-1-d.csapak@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.016 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [rec.data] Subject: [pbs-devel] [PATCH proxmox-backup 3/3] ui: datastore content: add action to show upload statistics 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: Tue, 01 Aug 2023 09:30:26 -0000 inspired by how we show volume statistics for tape drives Signed-off-by: Dominik Csapak --- we could also add it as a tooltip somewhere else, eg the size column also, this pattern for the window could be refactored into a 'keyvalueinfowindow' (or something like that), since we already use that pattern a few time www/datastore/Content.js | 56 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/www/datastore/Content.js b/www/datastore/Content.js index 9fc07d49..bb2d76ee 100644 --- a/www/datastore/Content.js +++ b/www/datastore/Content.js @@ -711,6 +711,56 @@ Ext.define('PBS.DataStoreContent', { }); }, + showUploadStatistics: function(view, rI, cI, item, e, rec) { + let me = this; + + let list = []; + + let keyMap = { + count: gettext('Chunk Count'), + duplicates: gettext('Duplicate Chunks'), + size: gettext('Size'), + compressed_size: gettext('Compressed Size'), + }; + + for (let [key, val] of Object.entries(rec.data['upload-statistic'])) { + if (key === 'size' || key === 'compressed_size') { + val = Proxmox.Utils.format_size(val); + } + + list.push({ key: keyMap[key] ?? key, value: val }); + } + + Ext.create('Ext.window.Window', { + title: gettext('Upload Statistics'), + modal: true, + width: 600, + height: 250, + layout: 'fit', + scrollable: true, + items: [ + { + xtype: 'grid', + store: { + data: list, + }, + columns: [ + { + text: gettext('Property'), + dataIndex: 'key', + flex: 1, + }, + { + text: gettext('Value'), + dataIndex: 'value', + flex: 1, + }, + ], + }, + ], + }).show(); + }, + onForget: function(table, rI, cI, item, e, { data }) { let me = this; let view = this.getView(); @@ -974,6 +1024,12 @@ Ext.define('PBS.DataStoreContent', { }, isActionDisabled: (v, r, c, i, rec) => rec.data.ty !== 'dir', }, + { + handler: 'showUploadStatistics', + getTip: (v, m, rec) => Ext.String.format(gettext("Show Upload Statistics of '{0}'"), v), + getClass: (v, m, rec) => rec.data.ty === 'dir' ? 'fa fa-info-circle' : 'pmx-hidden', + isActionDisabled: (v, r, c, i, rec) => rec.data.ty !== 'dir', + }, { handler: 'onForget', getTip: (v, m, { data }) => { -- 2.30.2