5
0
mirror of git://git.proxmox.com/git/proxmox-backup.git synced 2025-01-22 22:04:00 +03:00
proxmox-backup/www/form/NamespaceMaxDepth.js
Lukas Wagner eff279e771 ui: sync job: fix error if local namespace is selected first
When creating a new sync job and a local namespace is configured
without setting a remote first, the createMaxPrefixLength
was passed an array instead of a string/undefined/null, which
triggered a 'ns2.match is not a funtion exception', making the UI
glitchy afterwards.

Fixed by explicitly checking for a string. Verified that the other
user of NamespaceMaxDepthReduced, the prune job edit window, does not
break after the change.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2024-04-25 11:50:02 +02:00

62 lines
1.5 KiB
JavaScript

Ext.define('PBS.form.NamespaceMaxDepth', {
extend: 'Proxmox.form.field.Integer',
alias: 'widget.pbsNamespaceMaxDepth',
allowBlank: true,
emptyText: gettext('Full'),
fieldLabel: gettext('Max. Depth'),
deleteEmpty: true,
minValue: 0,
maxValue: 7,
triggers: {
clear: {
cls: 'pmx-clear-trigger',
weight: -1,
hidden: true,
handler: function() {
this.triggers.clear.setVisible(false);
this.setValue('');
},
},
},
listeners: {
change: function(field, value) {
let canClear = value !== '';
field.triggers.clear.setVisible(canClear);
},
},
});
Ext.define('PBS.form.NamespaceMaxDepthReduced', {
extend: 'PBS.form.NamespaceMaxDepth',
alias: 'widget.pbsNamespaceMaxDepthReduced',
calcMaxPrefixLength: function(ns1, ns2) {
let maxPrefixLength = 0;
if (ns1 !== undefined && ns1 !== null && typeof ns1 === 'string') {
maxPrefixLength = (ns1.match(/[/]/g) || []).length + (ns1 === '' ? 0 : 1);
}
if (ns2 !== undefined && ns2 !== null && typeof ns2 === 'string') {
let ns2PrefixLength = (ns2.match(/[/]/g) || []).length + (ns2 === '' ? 0 : 1);
if (ns2PrefixLength > maxPrefixLength) {
maxPrefixLength = ns2PrefixLength;
}
}
return maxPrefixLength;
},
setLimit: function(ns1, ns2) {
let me = this;
let maxPrefixLength = me.calcMaxPrefixLength(ns1, ns2);
if (maxPrefixLength !== undefined) {
me.maxValue = 7 - maxPrefixLength;
} else {
me.maxValue = 7;
}
},
});