proxmox-backup/www/window/MaintenanceOptions.js
Hannes Laimer bd25fc40a6 ui: allow resetting unmounting maintenance
Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
2024-11-26 16:35:02 +01:00

100 lines
2.6 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'],
onlineHelp: 'maintenance-mode',
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 message = (values['maintenance-msg'] ?? '')
.replaceAll('\\', '')
.replaceAll('"', '\\"');
const maybe_message = values['maintenance-msg'] ? `,message="${message}"` : '';
values['maintenance-mode'] = `type=${values['maintenance-type']}${maybe_message}`;
}
delete values['maintenance-type'];
delete values['maintenance-msg'];
return values;
},
items: [
{
xtype: 'pbsMaintenanceType',
reference: 'type-field',
name: 'maintenance-type',
fieldLabel: gettext('Maintenance Type'),
value: '__default__',
deleteEmpty: true,
listeners: {
change: (field, newValue) => {
field.up('form').down('[name=maintenance-msg]').setDisabled(newValue === '__default__');
},
},
},
{
xtype: 'proxmoxtextfield',
reference: 'message-field',
name: 'maintenance-msg',
fieldLabel: gettext('Description'),
},
],
},
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 ?? '',
};
}
let unmounting = options['maintenance-type'] === 'unmount';
let defaultType = options['maintenance-type'] === '__default__';
if (unmounting) {
options['maintenance-type'] = gettext('Unmounting');
}
me.callParent([options]);
me.lookupReference('message-field').setDisabled(unmounting || defaultType);
},
});