ui: storage: show no-keeps hint exactly when needed

extracting the logic from the previous checkbox listener into a function, which
is also called on field changes and once in afterrender. Calling it initially
makes sure the hint is also displayed at the beginning when editing a storage
with no retention options configured, and the initial disabling of the input
fields for the isCreate case now also happens through that call.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
Fabian Ebner 2020-11-24 15:31:36 +01:00 committed by Thomas Lamprecht
parent fbbb2a1428
commit 56fad7c4e6

View File

@ -81,6 +81,18 @@ Ext.define('PVE.panel.StoragePruneInputPanel', {
return options; return options;
}, },
updateComponents: function() {
let panel = this;
let keepAll = panel.down('proxmoxcheckbox[name=keep-all]').getValue();
let anyValue = false;
panel.query('pmxPruneKeepField').forEach(field => {
anyValue = anyValue || field.getValue() !== null;
field.setDisabled(keepAll);
});
panel.down('component[name=no-keeps-hint]').setHidden(anyValue || keepAll);
},
listeners: { listeners: {
afterrender: function(panel) { afterrender: function(panel) {
if (panel.needMask) { if (panel.needMask) {
@ -89,12 +101,14 @@ Ext.define('PVE.panel.StoragePruneInputPanel', {
gettext('Backup content type not available for this storage.'), gettext('Backup content type not available for this storage.'),
); );
} else if (panel.isCreate) { } else if (panel.isCreate) {
panel.query('pmxPruneKeepField').forEach(field => {
field.setDisabled(true);
});
panel.down('proxmoxcheckbox[name=keep-all]').setValue(true); panel.down('proxmoxcheckbox[name=keep-all]').setValue(true);
} }
panel.down('component[name=pbs-hint]').setHidden(!panel.isPBS); panel.down('component[name=pbs-hint]').setHidden(!panel.isPBS);
panel.query('pmxPruneKeepField').forEach(field => {
field.on('change', panel.updateComponents, panel);
});
panel.updateComponents();
}, },
}, },
@ -105,12 +119,7 @@ Ext.define('PVE.panel.StoragePruneInputPanel', {
listeners: { listeners: {
change: function(field, newValue) { change: function(field, newValue) {
let panel = field.up('pveStoragePruneInputPanel'); let panel = field.up('pveStoragePruneInputPanel');
let anyValue = false; panel.updateComponents();
panel.query('pmxPruneKeepField').forEach(field => {
anyValue = anyValue || field.getValue() !== null;
field.setDisabled(newValue);
});
panel.down('component[name=no-keeps-hint]').setHidden(anyValue || newValue);
}, },
}, },
}, },