From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id CCF171FF557 for ; Thu, 18 Apr 2024 16:30:16 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4B34B1EC91; Thu, 18 Apr 2024 16:30:18 +0200 (CEST) From: Hannes Laimer To: pbs-devel@lists.proxmox.com Date: Thu, 18 Apr 2024 16:29:24 +0200 Message-Id: <20240418142931.122618-17-h.laimer@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240418142931.122618-1-h.laimer@proxmox.com> References: <20240418142931.122618-1-h.laimer@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.001 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 Subject: [pbs-devel] [PATCH proxmox-backup v6 16/23] ui: add partition selector form 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: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" Signed-off-by: Hannes Laimer --- www/Makefile | 1 + www/form/PartitionSelector.js | 74 +++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 www/form/PartitionSelector.js diff --git a/www/Makefile b/www/Makefile index 79cb4c04..762d90c5 100644 --- a/www/Makefile +++ b/www/Makefile @@ -49,6 +49,7 @@ JSSRC= \ form/NamespaceMaxDepth.js \ form/CalendarEvent.js \ form/PermissionPathSelector.js \ + form/PartitionSelector.js \ form/GroupSelector.js \ form/GroupFilter.js \ form/VerifyOutdatedAfter.js \ diff --git a/www/form/PartitionSelector.js b/www/form/PartitionSelector.js new file mode 100644 index 00000000..604975a6 --- /dev/null +++ b/www/form/PartitionSelector.js @@ -0,0 +1,74 @@ +Ext.define('pbs-partition-list', { + extend: 'Ext.data.Model', + fields: ['name', 'uuid', 'filesystem', 'devpath', 'size'], + proxy: { + type: 'proxmox', + url: "/api2/json/nodes/localhost/disks/list?skipsmart=1&include-partitions=1&exclude-used=1", + reader: { + transform: (rawData) => rawData.data + .flatMap(disk => (disk.partitions ?? []) + .filter(partition => partition.used === 'filesystem')), + }, + }, + idProperty: 'devpath', + +}); + +Ext.define('PBS.form.PartitionSelector', { + extend: 'Proxmox.form.ComboGrid', + alias: 'widget.pbsPartitionSelector', + + allowBlank: false, + autoSelect: false, + submitEmpty: false, + valueField: 'uuid', + displayField: 'devpath', + + store: { + model: 'pbs-partition-list', + autoLoad: true, + sorters: 'devpath', + }, + getSubmitData: function() { + let me = this; + let data = null; + if (!me.disabled && me.submitValue && !me.isFileUpload()) { + let val = me.getSubmitValue(); + if (val !== undefined && val !== null && val !== '') { + data = {}; + data[me.getName()] = val; + } else if (me.getDeleteEmpty()) { + data = {}; + data.delete = me.getName(); + } + } + return data; + }, + listConfig: { + columns: [ + { + header: gettext('Path'), + sortable: true, + dataIndex: 'devpath', + renderer: (v, metaData, rec) => Ext.String.htmlEncode(v), + flex: 1, + }, + { + header: gettext('Filesystem'), + sortable: true, + dataIndex: 'filesystem', + flex: 1, + }, + { + header: gettext('Size'), + sortable: true, + dataIndex: 'size', + renderer: Proxmox.Utils.format_size, + flex: 1, + }, + ], + viewConfig: { + emptyText: 'No partitions present', + }, + }, +}); -- 2.39.2 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel