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>
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]);
|
|
},
|
|
});
|