proxmox-backup/www/form/NamespaceMaxDepth.js
Thomas Lamprecht f07e660153 ui: move max NS prefix length logic to reduced max-depth selector
for better re-usability in the future and it felt a bit odd to have
such specific logic in the sync job edit directly

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

62 lines
1.4 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) {
maxPrefixLength = (ns1.match(/[/]/g) || []).length + (ns1 === '' ? 0 : 1);
}
if (ns2 !== undefined && ns2 !== null) {
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;
}
},
});