]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/TagFieldSet.js
ui: wizards: allow adding tags in the qemu/lxc create wizard
[pve-manager.git] / www / manager6 / form / TagFieldSet.js
1 Ext.define('PVE.form.TagFieldSet', {
2 extend: 'Ext.form.FieldSet',
3 alias: 'widget.pveTagFieldSet',
4 mixins: ['Ext.form.field.Field'],
5
6 title: gettext('Tags'),
7 padding: '0 5 5 5',
8
9 getValue: function() {
10 let me = this;
11 let tags = me.down('pveTagEditContainer').getTags().filter(t => t !== '');
12 return tags.join(';');
13 },
14
15 setValue: function(value) {
16 let me = this;
17 value ??= [];
18 if (!Ext.isArray(value)) {
19 value = value.split(/[;, ]/).filter(t => t !== '');
20 }
21 me.down('pveTagEditContainer').loadTags(value.join(';'));
22 },
23
24 getErrors: function(value) {
25 value ??= [];
26 if (!Ext.isArray(value)) {
27 value = value.split(/[;, ]/).filter(t => t !== '');
28 }
29 if (value.some(t => !t.match(PVE.Utils.tagCharRegex))) {
30 return [gettext("Tags contain invalid characters.")];
31 }
32 return [];
33 },
34
35 getSubmitData: function() {
36 let me = this;
37 let value = me.getValue();
38 if (me.disabled || !me.submitValue || value === '') {
39 return null;
40 }
41 let data = {};
42 data[me.getName()] = value;
43 return data;
44 },
45
46 layout: 'fit',
47
48 items: [
49 {
50 xtype: 'pveTagEditContainer',
51 userCls: 'proxmox-tags-full proxmox-tag-fieldset',
52 editOnly: true,
53 allowBlank: true,
54 layout: 'column',
55 scrollable: true,
56 },
57 ],
58
59 initComponent: function() {
60 let me = this;
61 me.callParent();
62 me.initField();
63 },
64 });