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) server-digest SHA256) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id E0BB3959B2 for ; Thu, 19 Jan 2023 10:56:33 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id CB22A29E8D for ; Thu, 19 Jan 2023 10:56:33 +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 ; Thu, 19 Jan 2023 10:56:32 +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 8FF2A446F2 for ; Thu, 19 Jan 2023 10:56:32 +0100 (CET) From: Christoph Heiss To: pve-devel@lists.proxmox.com Date: Thu, 19 Jan 2023 10:56:22 +0100 Message-Id: <20230119095622.123218-1-c.heiss@proxmox.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.011 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com] Subject: [pve-devel] [PATCH manager v2] ui: storage backup view: Update remove button on protection change 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: Thu, 19 Jan 2023 09:56:33 -0000 Currently this works in the backup view for containers/VMs, but not in the storage backup view. Implement that for the latter part too. Uses the callback functionality of the load() method of the store to properly update the UI as soon as the loading has finished. While at it, refactor the same thing in the grid backup view as well, removing the current hack in the process. Signed-off-by: Christoph Heiss --- FWIW, using me.store.load({..}) directly in the grid backup view works perfectly fine too (as I would expect). But I opted to reuse reload() there for now, to keep consistency with the rest of the file. Thus the added `options` parameter. Based on the suggestion in regard to the `var` -> `const` transformation, I also converted the callback from an anon-fn to an arrow-fn, to further modernize it. Changes v1 -> v2: * Transformed reload() declaration from `var` to `const` * Transformed reload() callback to arrow function * Renamed `args` parameter to `options` * Slightly reworded commit message v1: https://lists.proxmox.com/pipermail/pve-devel/2023-January/055470.html www/manager6/grid/BackupView.js | 16 +++++++--------- www/manager6/storage/BackupView.js | 6 +++++- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/www/manager6/grid/BackupView.js b/www/manager6/grid/BackupView.js index 7f7e1b62..65340dcb 100644 --- a/www/manager6/grid/BackupView.js +++ b/www/manager6/grid/BackupView.js @@ -79,9 +79,9 @@ Ext.define('PVE.grid.BackupView', { ]); }; - var reload = Ext.Function.createBuffered(function() { + const reload = Ext.Function.createBuffered((options) => { if (me.store) { - me.store.load(); + me.store.load(options); } }, 100); @@ -300,20 +300,18 @@ Ext.define('PVE.grid.BackupView', { handler: function(button, event, record) { let volid = record.data.volid, storage = storagesel.getValue(); let url = `/api2/extjs/nodes/${nodename}/storage/${storage}/content/${volid}`; - let newProtection = record.data.protected ? 0 : 1; Proxmox.Utils.API2Request({ url: url, method: 'PUT', waitMsgTarget: me, params: { - 'protected': newProtection, + 'protected': record.data.protected ? 0 : 1, }, failure: (response) => Ext.Msg.alert('Error', response.htmlStatus), - success: (response) => { - reload(); - // propagate to remove button, fake for event as reload is to slow - record.data.protected = newProtection; // TODO: check if writing is OK! - sm.fireEvent('selectionchange', sm, [record]); + success: () => { + reload({ + callback: () => sm.fireEvent('selectionchange', sm, [record]), + }); }, }); }, diff --git a/www/manager6/storage/BackupView.js b/www/manager6/storage/BackupView.js index b8dc8f11..fbdf573d 100644 --- a/www/manager6/storage/BackupView.js +++ b/www/manager6/storage/BackupView.js @@ -183,7 +183,11 @@ Ext.define('PVE.storage.BackupView', { waitMsgTarget: me, params: { 'protected': record.data.protected ? 0 : 1 }, failure: response => Ext.Msg.alert('Error', response.htmlStatus), - success: () => me.store.load(), + success: () => { + me.store.load({ + callback: () => sm.fireEvent('selectionchange', sm, [record]), + }); + }, }); }, }, -- 2.34.1