]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/VMSelector.js
1 /* filter is a javascript builtin, but extjs calls it also filter */
2 Ext
.define('PVE.form.VMSelector', {
3 extend
: 'Ext.grid.Panel',
4 alias
: 'widget.vmselector',
7 field
: 'Ext.form.field.Field',
14 plugins
: 'gridfilters',
17 model
: 'PVEResources',
35 header
: gettext('Node'),
39 header
: gettext('Status'),
46 header
: gettext('Name'),
54 header
: gettext('Pool'),
61 header
: gettext('Type'),
64 renderer: function(value
) {
65 if (value
=== 'qemu') {
66 return gettext('Virtual Machine');
67 } else if (value
=== 'lxc') {
68 return gettext('LXC Container');
77 { id
: 'qemu', text
: gettext('Virtual Machine') },
78 { id
: 'lxc', text
: gettext('LXC Container') },
81 // Due to EXTJS-18711. we have to do a static list via a store but to avoid
82 // creating an object, we have to have an empty pseudo un function
88 header
: 'HA ' + gettext('Status'),
98 selType
: 'checkboxmodel',
108 selectionchange: function() {
109 // to trigger validity and error checks
114 getValue: function() {
116 var sm
= me
.getSelectionModel();
117 var selection
= sm
.getSelection();
119 var store
= me
.getStore();
120 selection
.forEach(function(item
) {
121 // only add if not filtered
122 if (store
.findExact('vmid', item
.data
.vmid
) !== -1) {
123 values
.push(item
.data
.vmid
);
129 setValue: function(value
) {
131 if (!Ext
.isArray(value
)) {
132 value
= value
.split(',');
135 let store
= me
.getStore();
136 let selection
= value
.map(item
=> store
.findRecord('vmid', item
, 0, false, true, true)).filter(r
=> r
);
138 me
.getSelectionModel().select(selection
);
140 return me
.mixins
.field
.setValue
.call(me
, value
);
143 getErrors: function(value
) {
145 if (me
.allowBlank
=== false &&
146 me
.getSelectionModel().getCount() === 0) {
147 me
.addBodyCls(['x-form-trigger-wrap-default', 'x-form-trigger-wrap-invalid']);
148 return [gettext('No VM selected')];
151 me
.removeBodyCls(['x-form-trigger-wrap-default', 'x-form-trigger-wrap-invalid']);
155 initComponent: function() {
161 me
.store
.filters
.add({
168 // only show the relevant guests by default
170 var statusfilter
= '';
173 statusfilter
= 'stopped';
176 statusfilter
= 'running';
179 if (statusfilter
!== '') {
180 me
.store
.filters
.add({
181 property
: 'template',
184 id
: 'x-gridfilter-status',
187 value
: [statusfilter
],
193 me
.mon(me
.getStore(), 'load', function() {
194 me
.getSelectionModel().selectAll(false);
201 Ext
.define('PVE.form.VMComboSelector', {
202 extend
: 'Proxmox.form.ComboGrid',
203 alias
: 'widget.vmComboSelector',
206 displayField
: 'vmid',
211 forceSelection
: true,
214 model
: 'PVEResources',
225 plugins
: 'gridfilters',
236 header
: gettext('Name'),
244 header
: gettext('Node'),
248 header
: gettext('Status'),
255 header
: gettext('Pool'),
263 header
: gettext('Type'),
266 renderer: function(value
) {
267 if (value
=== 'qemu') {
268 return gettext('Virtual Machine');
269 } else if (value
=== 'lxc') {
270 return gettext('LXC Container');
279 { id
: 'qemu', text
: gettext('Virtual Machine') },
280 { id
: 'lxc', text
: gettext('LXC Container') },
282 un: function() { /* due to EXTJS-18711 */ },
287 header
: 'HA ' + gettext('Status'),
288 dataIndex
: 'hastate',