From 169ddf541db119524e5229c243e0f1664df58ef6 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Wed, 6 Mar 2024 12:21:02 +0100 Subject: [PATCH] ui: prune: fix sending invalid parameters the prune input panel is used in various contexts (add/editing a prunejob, adding a datastore, executing a prune). These different api calls don't all take the same parameters, so we have to correctly set the `isCreate` to not send a `delete` paramter for those request if there was an empty field. Also set 'max-depth:0' only when recursive was not set *and* we can set 'recursive', because for creating a datastore that is not supported by the api, and for the prune job editing we override the whole onGetValues anyway so that's not an issue there. Signed-off-by: Dominik Csapak --- www/datastore/Content.js | 1 + www/panel/PrunePanel.js | 2 +- www/window/PruneJobEdit.js | 7 ++++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/www/datastore/Content.js b/www/datastore/Content.js index 87317ec1..fa0b7d2c 100644 --- a/www/datastore/Content.js +++ b/www/datastore/Content.js @@ -479,6 +479,7 @@ Ext.define('PBS.DataStoreContent', { ns, dryrun: true, canRecurse: true, + isCreate: true, }, ], }); diff --git a/www/panel/PrunePanel.js b/www/panel/PrunePanel.js index 59c28a8e..7ccdb1de 100644 --- a/www/panel/PrunePanel.js +++ b/www/panel/PrunePanel.js @@ -27,7 +27,7 @@ Ext.define('PBS.panel.PruneInputPanel', { if (me.ns && me.ns !== '') { values.ns = me.ns; } - if (!values.recursive) { + if (!values.recursive && me.canRecurse) { values['max-depth'] = 0; } delete values.recursive; diff --git a/www/window/PruneJobEdit.js b/www/window/PruneJobEdit.js index b2259bb9..b804fdb4 100644 --- a/www/window/PruneJobEdit.js +++ b/www/window/PruneJobEdit.js @@ -105,7 +105,9 @@ Ext.define('PBS.window.PruneJobEdit', { xtype: 'pbsNamespaceMaxDepthReduced', name: 'max-depth', fieldLabel: gettext('Max. Depth'), - deleteEmpty: true, + cbind: { + deleteEmpty: '{!isCreate}', + }, }, ], @@ -133,6 +135,9 @@ Ext.define('PBS.window.PruneJobEdit', { columnB: [ { xtype: 'pbsPruneInputPanel', + cbind: { + isCreate: '{isCreate}', + }, getValues: () => ({}), // let that handle our inputpanel here }, {