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 407DD9ED64 for ; Fri, 3 Nov 2023 14:38:04 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 77B9E1E28D for ; Fri, 3 Nov 2023 14:38:01 +0100 (CET) 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 ; Fri, 3 Nov 2023 14:37:58 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id AEC74442E4 for ; Fri, 3 Nov 2023 14:37:58 +0100 (CET) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Fri, 3 Nov 2023 14:37:29 +0100 Message-Id: <20231103133729.2252730-25-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231103133729.2252730-1-c.ebner@proxmox.com> References: <20231103133729.2252730-1-c.ebner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.075 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 - Subject: [pbs-devel] [PATCH v3 proxmox-widget-toolkit 24/24] file-browser: support pxar archive and fileref types 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: Fri, 03 Nov 2023 13:38:04 -0000 Covers cases for the special directory type archive and file reference types as introduced by pxar format version 2. Signed-off-by: Christian Ebner --- Changes since version 2: - not present in version 2 Changes since version 1: - not present in version 1 src/Schema.js | 2 ++ src/window/FileBrowser.js | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Schema.js b/src/Schema.js index a7ffdf8..37bd2a2 100644 --- a/src/Schema.js +++ b/src/Schema.js @@ -59,7 +59,9 @@ Ext.define('Proxmox.Schema', { // a singleton b: { icon: 'cube', label: gettext('Block Device') }, c: { icon: 'tty', label: gettext('Character Device') }, d: { icon: 'folder-o', label: gettext('Directory') }, + a: { icon: 'folder-o', label: gettext('Archive') }, f: { icon: 'file-text-o', label: gettext('File') }, + r: { icon: 'file-text-o', label: gettext('FileRef') }, h: { icon: 'file-o', label: gettext('Hardlink') }, l: { icon: 'link', label: gettext('Softlink') }, p: { icon: 'exchange', label: gettext('Pipe/Fifo') }, diff --git a/src/window/FileBrowser.js b/src/window/FileBrowser.js index 4e4c639..9ba1566 100644 --- a/src/window/FileBrowser.js +++ b/src/window/FileBrowser.js @@ -8,7 +8,7 @@ Ext.define('proxmox-file-tree', { calculate: data => { if (data.size === undefined) { return ''; - } else if (false && data.type === 'd') { // eslint-disable-line no-constant-condition + } else if (false && (data.type === 'd' || data.type === 'a')) { // eslint-disable-line no-constant-condition // FIXME: enable again once we fixed trouble with confusing size vs item # let fs = data.size === 1 ? gettext('{0} Item') : gettext('{0} Items'); return Ext.String.format(fs, data.size); @@ -26,7 +26,7 @@ Ext.define('proxmox-file-tree', { name: 'iconCls', calculate: function(data) { let icon = Proxmox.Schema.pxarFileTypes[data.type]?.icon ?? 'file-o'; - if (data.expanded && data.type === 'd') { + if (data.expanded && (data.type === 'd' || data.type === 'a')) { icon = 'folder-open-o'; } return `fa fa-${icon}`; @@ -58,7 +58,9 @@ Ext.define("Proxmox.window.FileBrowser", { downloadableFileTypes: { 'h': true, // hardlinks 'f': true, // "normal" files + 'r': true, // ref files 'd': true, // directories + 'a': true, // archive }, // enable tar download, this will add a menu to the "Download" button when the selection @@ -102,7 +104,7 @@ Ext.define("Proxmox.window.FileBrowser", { params.filepath = data.filepath; let filename = view.downloadPrefix + data.text; - if (data.type === 'd') { + if (data.type === 'd' || data.type === 'a') { if (tar) { params.tar = 1; filename += ".tar.zst"; @@ -126,7 +128,7 @@ Ext.define("Proxmox.window.FileBrowser", { view.lookup('selectText').setText(st); let canDownload = view.downloadURL && view.downloadableFileTypes[data.type]; - let enableMenu = view.enableTar && data.type === 'd'; + let enableMenu = view.enableTar && (data.type === 'd' || data.type === 'a'); let downloadBtn = view.lookup('downloadBtn'); downloadBtn.setDisabled(!canDownload || enableMenu); @@ -205,6 +207,7 @@ Ext.define("Proxmox.window.FileBrowser", { }); store.load((rec, op, success) => { let root = store.getRoot(); + console.log(root); root.expand(); // always expand invisible root node if (view.archive === 'all') { root.expandChildren(false); @@ -273,6 +276,11 @@ Ext.define("Proxmox.window.FileBrowser", { } else if (a.data.type !== 'd' && b.data.type === 'd') { return 1; } + if (a.data.type === 'a' && b.data.type !== 'a') { + return -1; + } else if (a.data.type !== 'a' && b.data.type === 'a') { + return 1; + } let asize = a.data.size || 0; let bsize = b.data.size || 0; -- 2.39.2