]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/qemu/DisplayEdit.js
update shipped appliance info index
[pve-manager.git] / www / manager6 / qemu / DisplayEdit.js
CommitLineData
4f3e66d8
DC
1Ext.define('PVE.qemu.DisplayInputPanel', {
2 extend: 'Proxmox.panel.InputPanel',
3 xtype: 'pveDisplayInputPanel',
d2d16a78 4 onlineHelp: 'qm_display',
db050180 5
4f3e66d8 6 onGetValues: function(values) {
c8e171a8 7 let ret = PVE.Parser.printPropertyString(values, 'type');
4f3e66d8 8 if (ret === '') {
c8e171a8 9 return { 'delete': 'vga' };
4f3e66d8 10 }
c8e171a8 11 return { vga: ret };
4f3e66d8 12 },
8a56fe1a 13
524be1b9
MF
14 viewModel: {
15 data: {
16 type: '__default__',
17 clipboard: '__default__',
18 },
19 formulas: {
20 matchNonGUIOption: function(get) {
21 return get('type').match(/^(serial\d|none)$/);
22 },
23 memoryEmptyText: function(get) {
24 let val = get('type');
25 if (val === "cirrus") {
26 return "4";
27 } else if (val === "std" || val.match(/^qxl\d?$/) || val === "vmware") {
28 return "16";
29 } else if (val.match(/^virtio/)) {
30 return "256";
31 } else if (get('matchNonGUIOption')) {
32 return "N/A";
33 } else {
34 console.debug("unexpected display type", val);
35 return Proxmox.Utils.defaultText;
36 }
37 },
80da5bb9
MF
38 isVNC: get => get('clipboard') === 'vnc',
39 hideDefaultHint: get => get('isVNC') || get('matchNonGUIOption'),
40 hideVNCHint: get => !get('isVNC') || get('matchNonGUIOption'),
524be1b9
MF
41 },
42 },
43
8a56fe1a 44 items: [{
4f3e66d8 45 name: 'type',
8a56fe1a
TL
46 xtype: 'proxmoxKVComboBox',
47 value: '__default__',
4f3e66d8 48 deleteEmpty: false,
8a56fe1a 49 fieldLabel: gettext('Graphic card'),
56148f25 50 comboItems: Object.entries(PVE.Utils.kvm_vga_drivers),
c8e171a8
TL
51 validator: function(v) {
52 let cfg = this.up('proxmoxWindowEdit').vmconfig || {};
8a56fe1a
TL
53
54 if (v.match(/^serial\d+$/) && (!cfg[v] || cfg[v] !== 'socket')) {
c8e171a8 55 let fmt = gettext("Serial interface '{0}' is not correctly configured.");
8a56fe1a 56 return Ext.String.format(fmt, v);
db050180 57 }
db050180 58 return true;
4f3e66d8 59 },
524be1b9
MF
60 bind: {
61 value: '{type}',
f6710aac 62 },
c8e171a8
TL
63 },
64 {
4f3e66d8
DC
65 xtype: 'proxmoxintegerfield',
66 emptyText: Proxmox.Utils.defaultText,
67 fieldLabel: gettext('Memory') + ' (MiB)',
68 minValue: 4,
69 maxValue: 512,
70 step: 4,
f6710aac 71 name: 'memory',
524be1b9
MF
72 bind: {
73 emptyText: '{memoryEmptyText}',
74 disabled: '{matchNonGUIOption}',
75 },
f6710aac 76 }],
80da5bb9
MF
77
78 advancedItems: [
79 {
80 xtype: 'proxmoxKVComboBox',
81 name: 'clipboard',
82 deleteEmpty: false,
83 value: '__default__',
84 fieldLabel: gettext('Clipboard'),
85 comboItems: [
86 ['__default__', Proxmox.Utils.defaultText],
87 ['vnc', 'VNC'],
88 ],
89 bind: {
90 value: '{clipboard}',
91 disabled: '{matchNonGUIOption}',
92 },
93 },
94 {
95 xtype: 'displayfield',
96 name: 'vncHint',
97 userCls: 'pmx-hint',
98 value: gettext('You cannot use the default SPICE clipboard if the VNC Clipboard is selected.') + ' ' +
99 gettext('VNC Clipboard requires spice-tools installed in the Guest-VM.'),
100 bind: {
101 hidden: '{hideVNCHint}',
102 },
103 },
104 {
105 xtype: 'displayfield',
106 name: 'defaultHint',
107 userCls: 'pmx-hint',
108 value: gettext('This option depends on your display type.') + ' ' +
109 gettext('If the display type uses SPICE you are able to use the default SPICE Clipboard.'),
110 bind: {
111 hidden: '{hideDefaultHint}',
112 },
113 },
114 ],
4f3e66d8
DC
115});
116
117Ext.define('PVE.qemu.DisplayEdit', {
118 extend: 'Proxmox.window.Edit',
119
120 vmconfig: undefined,
121
122 subject: gettext('Display'),
123 width: 350,
124
125 items: [{
f6710aac 126 xtype: 'pveDisplayInputPanel',
8a56fe1a 127 }],
db050180 128
8058410f 129 initComponent: function() {
c8e171a8 130 let me = this;
db050180
DM
131
132 me.callParent();
133
134 me.load({
8a56fe1a
TL
135 success: function(response) {
136 me.vmconfig = response.result.data;
c8e171a8 137 let vga = me.vmconfig.vga || '__default__';
4f3e66d8 138 me.setValues(PVE.Parser.parsePropertyString(vga, 'type'));
f6710aac 139 },
db050180 140 });
f6710aac 141 },
db050180 142});