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 fbd6f54f39b243e5 Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
85 lines
2.1 KiB
JavaScript
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]);
|
|
},
|
|
});
|