proxmox-backup/www/window/MaintenanceOptions.js
Thomas Lamprecht 2e63a46414 ui: trigger datastore update after maintenance mode edit
This provides immediate feedback for adding the respective icon in
the navigation tree entry most of the time, and we can then increase
the query period of the datastore list store to the original 15
again, as it was lowered to 5 seconds for just this reason in commit
fbd6f54f39

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-05-14 14:39:02 +02:00

85 lines
2.1 KiB
JavaScript

Ext.define('PBS.form.maintenanceType', {
extend: 'Proxmox.form.KVComboBox',
alias: 'widget.pbsMaintenanceType',
comboItems: [
['__default__', gettext('None')],
['read-only', gettext('Read only')],
['offline', gettext('Offline')],
],
});
Ext.define('PBS.window.MaintenanceOptions', {
extend: 'Proxmox.window.Edit',
xtype: 'pbsMaintenanceOptionEdit',
mixins: ['Proxmox.Mixin.CBind'],
subject: gettext('Maintenance mode'),
width: 450,
fieldDefaults: {
labelWidth: 120,
},
apiCallDone: function(success, response, options) {
if (success) {
let datastoreStore = Ext.data.StoreManager.lookup('pbs-datastore-list');
if (datastoreStore) {
// delay a bit to allow the window to close and maintenance mode to take effect
setTimeout(() => datastoreStore.load(), 10);
}
}
},
items: {
xtype: 'inputpanel',
onGetValues: function(values) {
if (values.delete === 'maintenance-type') {
values.delete = 'maintenance-mode';
} else if (values['maintenance-type']) {
const escaped_message = (values['maintenance-msg'] ?? '')
.replaceAll('\\', '')
.replaceAll('"', '\\"');
const maybe_message =
values['maintenance-msg'] ? `,message="${escaped_message}"` : '';
values['maintenance-mode'] = `type=${values['maintenance-type']}${maybe_message}`;
}
delete values['maintenance-type'];
delete values['maintenance-msg'];
return values;
},
items: [
{
xtype: 'pbsMaintenanceType',
name: 'maintenance-type',
fieldLabel: gettext('Maintenance Type'),
value: '__default__',
deleteEmpty: true,
},
{
xtype: 'proxmoxtextfield',
name: 'maintenance-msg',
fieldLabel: gettext('Description'),
// FIXME: disable if maintenance type is none
},
],
},
setValues: function(values) {
let me = this;
let options = {
'maintenance-type': '__default__',
'maintenance-msg': '',
};
if (values['maintenance-mode']) {
const [type, message] = PBS.Utils.parseMaintenanceMode(values['maintenance-mode']);
options = {
'maintenance-type': type,
'maintenance-msg': message ?? '',
};
}
me.callParent([options]);
},
});