From: "Lukas Wagner" <l.wagner@proxmox.com>
To: "Proxmox Backup Server development discussion"
<pbs-devel@lists.proxmox.com>,
"Christian Ebner" <c.ebner@proxmox.com>
Subject: Re: [pbs-devel] [PATCH proxmox-backup] ui: switch datastore destroy label text on backend type
Date: Wed, 30 Jul 2025 09:36:37 +0200 [thread overview]
Message-ID: <DBP7U360DCDD.1145NZY6584H4@proxmox.com> (raw)
In-Reply-To: <20250729165249.855831-1-c.ebner@proxmox.com>
On Tue Jul 29, 2025 at 6:52 PM CEST, Christian Ebner wrote:
> Load also the backend configuration via the rstore, but do not show
> it in the grid. By passing the backend type along to the datastore
> destroy window, the destroy all data checkbox label is set based on
> the given type.
>
> Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
> ---
> Note: This is the ui followup for the datastore destroy dialog as requested in:
> https://lore.proxmox.com/pbs-devel/DBOL7XELUICP.1CAPP8NTAR2KR@proxmox.com/
>
> www/datastore/OptionView.js | 23 ++++++++++++++++++++++-
> 1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/www/datastore/OptionView.js b/www/datastore/OptionView.js
> index 913bdfc74..9aafd2e9c 100644
> --- a/www/datastore/OptionView.js
> +++ b/www/datastore/OptionView.js
> @@ -18,6 +18,10 @@ Ext.define('PBS.window.SafeDatastoreDestroy', {
> ? gettext('All backup snapshots and their data will be permanently destroyed!')
> : gettext('Configuration change only, no data will be deleted.'),
> destroyNoteCls: (get) => (get('destroyData') ? 'pmx-hint' : ''),
> + destroyCheckboxLabel: (get) =>
> + get('backendType') === 's3'
> + ? gettext('Remove data from S3 bucket and local cache (dangerous!)')
> + : gettext('Destroy all data (dangerous!)'),
> },
> },
>
> @@ -46,10 +50,10 @@ Ext.define('PBS.window.SafeDatastoreDestroy', {
> {
> xtype: 'proxmoxcheckbox',
> name: 'destroy-data',
> - boxLabel: gettext('Destroy all data (dangerous!)'),
> defaultValue: false,
> bind: {
> value: '{destroyData}',
> + boxLabel: '{destroyCheckboxLabel}',
> },
> },
> {
> @@ -70,6 +74,12 @@ Ext.define('PBS.window.SafeDatastoreDestroy', {
> },
> },
> ],
> +
> + initComponent: function () {
> + let me = this;
> + me.getViewModel().set('backendType', me.backendType);
> + me.callParent();
> + },
> });
>
> Ext.define('PBS.Datastore.Options', {
> @@ -118,7 +128,14 @@ Ext.define('PBS.Datastore.Options', {
>
> removeDatastore: function () {
> let me = this;
> + let backendType = 'filesystem';
> + let backend = me.getView().rstore.data.items.find((item) => item.id === 'backend');
> + if (backend) {
> + let backendConfig = PBS.Utils.parsePropertyString(backend.data.value, 'type');
> + backendType = backendConfig.type;
> + }
> Ext.create('PBS.window.SafeDatastoreDestroy', {
> + backendType: backendType,
> datastore: me.getView().datastore,
> });
> },
> @@ -164,6 +181,10 @@ Ext.define('PBS.Datastore.Options', {
> },
>
> rows: {
> + backend: {
> + required: false,
> + visible: false,
> + },
> 'notification-mode': {
> required: true,
> defaultValue: 'notification-system',
Applied this on top of your other patch series, works fine on my end.
Tested-by: Lukas Wagner <l.wagner@proxmox.com>
For the `removeDatastore` function I would use ExtJS's native accessor
methods for the data instead of accessing the data directly, for
example:
diff --git i/www/datastore/OptionView.js w/www/datastore/OptionView.js
index 9aafd2e9c..2f9aa9ebe 100644
--- i/www/datastore/OptionView.js
+++ w/www/datastore/OptionView.js
@@ -129,9 +129,10 @@ Ext.define('PBS.Datastore.Options', {
removeDatastore: function () {
let me = this;
let backendType = 'filesystem';
- let backend = me.getView().rstore.data.items.find((item) => item.id === 'backend');
+ let backend = me.getView().getStore().getById('backend');
+
if (backend) {
- let backendConfig = PBS.Utils.parsePropertyString(backend.data.value, 'type');
+ let backendConfig = PBS.Utils.parsePropertyString(backend.get('value'), 'type');
backendType = backendConfig.type;
}
Ext.create('PBS.window.SafeDatastoreDestroy', {
If you choose to use this hunk directly, consider this
Reviewed-by: Lukas Wagner <l.wagner@proxmox.com>
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
next prev parent reply other threads:[~2025-07-30 7:35 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-29 16:52 Christian Ebner
2025-07-30 7:36 ` Lukas Wagner [this message]
2025-07-30 7:45 ` Christian Ebner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DBP7U360DCDD.1145NZY6584H4@proxmox.com \
--to=l.wagner@proxmox.com \
--cc=c.ebner@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox