[pbs-devel] [PATCH proxmox-backup] ui: switch datastore destroy label text on backend type
Lukas Wagner
l.wagner at proxmox.com
Wed Jul 30 09:36:37 CEST 2025
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 at 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 at 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 at proxmox.com>
More information about the pbs-devel
mailing list