f07e660153
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>
62 lines
1.4 KiB
JavaScript
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;
|
|
}
|
|
},
|
|
});
|