]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/dc/OptionView.js
Add mac prefix to the datacenter options
[pve-manager.git] / www / manager6 / dc / OptionView.js
1 Ext.define('PVE.dc.HttpProxyEdit', {
2 extend: 'PVE.window.Edit',
3
4 initComponent : function() {
5 var me = this;
6
7 Ext.applyIf(me, {
8 subject: gettext('HTTP proxy'),
9 items: {
10 xtype: 'pvetextfield',
11 name: 'http_proxy',
12 vtype: 'HttpProxy',
13 emptyText: PVE.Utils.noneText,
14 deleteEmpty: true,
15 value: '',
16 fieldLabel: gettext('HTTP proxy')
17 }
18 });
19
20 me.callParent();
21
22 me.load();
23 }
24 });
25
26 Ext.define('PVE.dc.KeyboardEdit', {
27 extend: 'PVE.window.Edit',
28
29 initComponent : function() {
30 var me = this;
31
32 Ext.applyIf(me, {
33 subject: gettext('Keyboard Layout'),
34 items: {
35 xtype: 'VNCKeyboardSelector',
36 name: 'keyboard',
37 value: '__default__',
38 fieldLabel: gettext('Keyboard Layout')
39 }
40 });
41
42 me.callParent();
43
44 me.load();
45 }
46 });
47
48 Ext.define('PVE.dc.ConsoleViewerEdit', {
49 extend: 'PVE.window.Edit',
50
51 initComponent : function() {
52 var me = this;
53
54 var data = [];
55
56 Ext.Array.each(['__default__','vv', 'html5'], function(value) {
57 data.push([value, PVE.Utils.render_console_viewer(value)]);
58 });
59
60 Ext.applyIf(me, {
61 subject: gettext('Console Viewer'),
62 items: {
63 xtype: 'pveKVComboBox',
64 name: 'console',
65 value: '__default__',
66 fieldLabel: gettext('Console Viewer'),
67 comboItems: data
68 }
69 });
70
71 me.callParent();
72
73 me.load();
74 }
75 });
76
77 Ext.define('PVE.dc.EmailFromEdit', {
78 extend: 'PVE.window.Edit',
79
80 initComponent : function() {
81 var me = this;
82
83 Ext.applyIf(me, {
84 subject: gettext('Email from address'),
85 items: {
86 xtype: 'pvetextfield',
87 name: 'email_from',
88 vtype: 'pveMail',
89 emptyText: 'root@$hostname',
90 deleteEmpty: true,
91 value: '',
92 fieldLabel: gettext('Email from address')
93 }
94 });
95
96 me.callParent();
97
98 me.load();
99 }
100 });
101
102 Ext.define('PVE.dc.MacPrefixEdit', {
103 extend: 'PVE.window.Edit',
104
105 initComponent : function() {
106 var me = this;
107
108 Ext.applyIf(me, {
109 subject: gettext('MAC address prefix'),
110 items: {
111 xtype: 'pvetextfield',
112 name: 'mac_prefix',
113 regex: /^[a-f0-9]{2}(?::[a-f0-9]{2}){0,2}:?$/i,
114 regexText: gettext('Example') + ': 02:8f',
115 emptyText: PVE.Utils.noneText,
116 deleteEmpty: true,
117 value: '',
118 fieldLabel: gettext('MAC address prefix')
119 }
120 });
121
122 me.callParent();
123
124 me.load();
125 }
126 });
127
128 Ext.define('PVE.dc.OptionView', {
129 extend: 'PVE.grid.ObjectGrid',
130 alias: ['widget.pveDcOptionView'],
131
132 initComponent : function() {
133 var me = this;
134
135 var reload = function() {
136 me.rstore.load();
137 };
138
139 var rows = {
140 keyboard: {
141 header: gettext('Keyboard Layout'),
142 editor: 'PVE.dc.KeyboardEdit',
143 renderer: PVE.Utils.render_kvm_language,
144 required: true
145 },
146 http_proxy: {
147 header: gettext('HTTP proxy'),
148 editor: 'PVE.dc.HttpProxyEdit',
149 required: true,
150 renderer: function(value) {
151 if (!value) {
152 return PVE.Utils.noneText;
153 }
154 return value;
155 }
156 },
157 console: {
158 header: gettext('Console Viewer'),
159 editor: 'PVE.dc.ConsoleViewerEdit',
160 required: true,
161 renderer: PVE.Utils.render_console_viewer
162 },
163 email_from: {
164 header: gettext('Email from address'),
165 editor: 'PVE.dc.EmailFromEdit',
166 required: true,
167 renderer: function(value) {
168 if (!value) {
169 return 'root@$hostname';
170 }
171 return value;
172 }
173 },
174 mac_prefix: {
175 header: gettext('MAC address prefix'),
176 editor: 'PVE.dc.MacPrefixEdit',
177 required: true,
178 renderer: function(value) {
179 if (!value) {
180 return PVE.Utils.noneText;
181 }
182 return value;
183 }
184 }
185 };
186
187 var sm = Ext.create('Ext.selection.RowModel', {});
188
189 var run_editor = function() {
190 var rec = sm.getSelection()[0];
191 if (!rec) {
192 return;
193 }
194
195 var rowdef = rows[rec.data.key];
196 if (!rowdef.editor) {
197 return;
198 }
199
200 var win = Ext.create(rowdef.editor, {
201 url: "/api2/extjs/cluster/options",
202 confid: rec.data.key
203 });
204 win.show();
205 win.on('destroy', reload);
206 };
207
208 var edit_btn = new PVE.button.Button({
209 text: gettext('Edit'),
210 disabled: true,
211 selModel: sm,
212 handler: run_editor
213 });
214
215 Ext.apply(me, {
216 url: "/api2/json/cluster/options",
217 interval: 1000,
218 selModel: sm,
219 tbar: [ edit_btn ],
220 rows: rows,
221 listeners: {
222 itemdblclick: run_editor,
223 activate: reload
224 }
225 });
226
227 me.callParent();
228 }
229 });