proxmox-backup/www/window/NamespaceEdit.js
Thomas Lamprecht 3d2baf4170 ui: datastore: use safe destroy as base for dialog
only ask the name of the current NS, not the full NS path to avoid
too long input requirements on deep levels.

needs a few smaller hacks, ideally we would pull out the basic stuff
from Edit window in some EditBase window and let both, SafeDestroy
and Edit window derive from that, for better common, in sync
features.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-05-15 16:47:44 +02:00

105 lines
2.4 KiB
JavaScript

Ext.define('PBS.window.NamespaceEdit', {
extend: 'Proxmox.window.Edit',
xtype: 'pbsNamespaceEdit', // for now rather "NamespaceAdd"
mixins: ['Proxmox.Mixin.CBind'],
//onlineHelp: 'namespaces', // TODO
isCreate: true,
subject: gettext('Namespace'),
// avoid that the trigger of the combogrid fields open on window show
defaultFocus: 'proxmoxtextfield[name=name]',
cbind: {
url: '/api2/extjs/admin/datastore/{datastore}/namespace',
},
method: 'POST',
width: 450,
fieldDefaults: {
labelWidth: 120,
},
items: {
xtype: 'inputpanel',
onGetValues: function(values) {
if (values.parent === '') {
delete values.parent;
}
return values;
},
items: [
{
xtype: 'pbsNamespaceSelector',
name: 'parent',
fieldLabel: gettext('Parent Namespace'),
cbind: {
value: '{namespace}',
datastore: '{datastore}',
},
},
{
xtype: 'proxmoxtextfield',
name: 'name',
fieldLabel: gettext('Namespace Name'),
value: '',
allowBlank: false,
maxLength: 31,
regex: PBS.Utils.SAFE_ID_RE,
regexText: gettext("Only alpha numerical, '_' and '-' (if not at start) allowed"),
},
],
},
});
Ext.define('PBS.window.NamespaceDelete', {
extend: 'Proxmox.window.SafeDestroy',
xtype: 'pbsNamespaceDelete',
mixins: ['Proxmox.Mixin.CBind'],
viewModel: {},
autoShow: true,
taskName: 'delete-namespace',
cbind: {
url: '/api2/extjs/admin/datastore/{datastore}/namespace',
},
additionalItems: [
{
xtype: 'proxmoxcheckbox',
name: 'delete-groups',
reference: 'rmGroups',
boxLabel: gettext('Delete all Backup Groups'),
value: false,
listeners: {
change: function(field, value) {
let win = field.up('proxmoxSafeDestroy');
if (value) {
win.params['delete-groups'] = value;
} else {
delete win.params['delete-groups'];
}
},
},
},
{
xtype: 'box',
padding: '5 0 0 0',
html: `<span class="pmx-hint">${gettext('Note')}</span>: `
+ gettext('This will permanently remove all backups from the current namespace and all namespaces below it!'),
bind: {
hidden: '{!rmGroups.checked}',
},
},
],
initComponent: function() {
let me = this;
me.title = Ext.String.format(gettext("Destroy Namespace '{0}'"), me.namespace);
me.params = { ns: me.namespace };
me.callParent();
},
});