]>
Commit | Line | Data |
---|---|---|
a46c2eb1 TL |
1 | Ext.define('Proxmox.form.field.DisplayEdit', { |
2 | extend: 'Ext.form.FieldContainer', | |
a307714b | 3 | alias: 'widget.pmxDisplayEditField', |
a46c2eb1 TL |
4 | |
5 | viewModel: { | |
a307714b | 6 | parent: null, |
a46c2eb1 TL |
7 | data: { |
8 | editable: false, | |
a307714b | 9 | value: undefined, |
a46c2eb1 TL |
10 | }, |
11 | }, | |
12 | ||
13 | displayType: 'displayfield', | |
14 | ||
15 | editConfig: {}, | |
16 | editable: false, | |
17 | setEditable: function(editable) { | |
18 | let me = this; | |
19 | let vm = me.getViewModel(); | |
20 | ||
21 | me.editable = editable; | |
22 | vm.set('editable', editable); | |
23 | }, | |
24 | ||
187e9a6d | 25 | layout: 'fit', |
a46c2eb1 | 26 | defaults: { |
01031528 | 27 | hideLabel: true, |
a46c2eb1 TL |
28 | }, |
29 | ||
a46c2eb1 TL |
30 | initComponent: function() { |
31 | let me = this; | |
32 | ||
33 | let displayConfig = { | |
34 | xtype: me.displayType, | |
a307714b | 35 | bind: {}, |
a46c2eb1 TL |
36 | }; |
37 | Ext.applyIf(displayConfig, me.initialConfig); | |
38 | delete displayConfig.editConfig; | |
39 | delete displayConfig.editable; | |
40 | ||
a307714b | 41 | let editConfig = Ext.apply({}, me.editConfig); |
a46c2eb1 TL |
42 | Ext.applyIf(editConfig, { |
43 | xtype: 'textfield', | |
a307714b | 44 | bind: {}, |
a46c2eb1 TL |
45 | }); |
46 | Ext.applyIf(editConfig, displayConfig); | |
47 | ||
a307714b TL |
48 | Ext.applyIf(displayConfig.bind, { |
49 | hidden: '{editable}', | |
50 | disabled: '{editable}', | |
51 | value: '{value}', | |
52 | }); | |
53 | Ext.applyIf(editConfig.bind, { | |
54 | hidden: '{!editable}', | |
55 | disabled: '{!editable}', | |
56 | value: '{value}', | |
57 | }); | |
58 | ||
a46c2eb1 TL |
59 | // avoid glitch, start off correct even before viewmodel fixes it |
60 | editConfig.disabled = editConfig.hidden = !me.editable; | |
61 | displayConfig.disabled = displayConfig.hidden = !!me.editable; | |
62 | ||
63 | editConfig.name = displayConfig.name = me.name; | |
64 | ||
65 | Ext.apply(me, { | |
66 | items: [ | |
a46c2eb1 | 67 | editConfig, |
a307714b | 68 | displayConfig, |
a46c2eb1 TL |
69 | ], |
70 | }); | |
71 | ||
72 | me.callParent(); | |
73 | ||
74 | me.getViewModel().set('editable', me.editable); | |
75 | }, | |
76 | ||
77 | }); |