]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/grid/PoolMembers.js
1 Ext
.define('PVE.pool.AddVM', {
2 extend
: 'Proxmox.window.Edit',
13 initComponent: function() {
17 throw "no pool specified";
20 me
.url
= "/pools/" + me
.pool
;
23 var vmsField
= Ext
.create('Ext.form.field.Text', {
29 var vmStore
= Ext
.create('Ext.data.Store', {
30 model
: 'PVEResources',
39 return (item
.data
.type
=== 'lxc' || item
.data
.type
=== 'qemu') &&item
.data
.pool
!== me
.pool
;
44 var vmGrid
= Ext
.create('widget.grid', {
50 selType
: 'checkboxmodel',
53 selectionchange: function(model
, selected
, opts
) {
55 selected
.forEach(function(vm
) {
56 selectedVms
.push(vm
.data
.vmid
);
58 vmsField
.setValue(selectedVms
);
69 header
: gettext('Node'),
73 header
: gettext('Current Pool'),
77 header
: gettext('Status'),
79 renderer: function(value
) {
81 return Proxmox
.Utils
.runningText
;
83 return Proxmox
.Utils
.stoppedText
;
88 header
: gettext('Name'),
93 header
: gettext('Type'),
100 subject
: gettext('Virtual Machine'),
105 xtype
: 'displayfield',
107 value
: gettext('Selected guests who are already part of a pool will be removed from it first.'),
117 Ext
.define('PVE.pool.AddStorage', {
118 extend
: 'Proxmox.window.Edit',
120 initComponent: function() {
124 throw "no pool specified";
129 me
.url
= "/pools/" + me
.pool
;
133 subject
: gettext('Storage'),
137 xtype
: 'pveStorageSelector',
139 nodename
: 'localhost',
142 fieldLabel
: gettext("Storage"),
151 Ext
.define('PVE.grid.PoolMembers', {
152 extend
: 'Ext.grid.GridPanel',
153 alias
: ['widget.pvePoolMembers'],
155 // fixme: dynamic status update ?
158 stateId
: 'grid-pool-members',
160 initComponent: function() {
164 throw "no pool specified";
167 var store
= Ext
.create('Ext.data.Store', {
168 model
: 'PVEResources',
177 root
: 'data.members',
178 url
: "/api2/json/pools/" + me
.pool
,
182 var coldef
= PVE
.data
.ResourceStore
.defaultColumns().filter((c
) =>
183 c
.dataIndex
!== 'tags' && c
.dataIndex
!== 'lock',
186 var reload = function() {
190 var sm
= Ext
.create('Ext.selection.RowModel', {});
192 var remove_btn
= new Proxmox
.button
.Button({
193 text
: gettext('Remove'),
196 confirmMsg: function(rec
) {
197 return Ext
.String
.format(gettext('Are you sure you want to remove entry {0}'),
198 "'" + rec
.data
.id
+ "'");
200 handler: function(btn
, event
, rec
) {
201 var params
= { 'delete': 1 };
202 if (rec
.data
.type
=== 'storage') {
203 params
.storage
= rec
.data
.storage
;
204 } else if (rec
.data
.type
=== 'qemu' || rec
.data
.type
=== 'lxc' || rec
.data
.type
=== 'openvz') {
205 params
.vms
= rec
.data
.vmid
;
207 throw "unknown resource type";
210 Proxmox
.Utils
.API2Request({
211 url
: '/pools/' + me
.pool
,
215 callback: function() {
218 failure: function(response
, opts
) {
219 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
230 text
: gettext('Add'),
231 menu
: new Ext
.menu
.Menu({
234 text
: gettext('Virtual Machine'),
235 iconCls
: 'pve-itype-icon-qemu',
236 handler: function() {
237 var win
= Ext
.create('PVE.pool.AddVM', { pool
: me
.pool
});
238 win
.on('destroy', reload
);
243 text
: gettext('Storage'),
244 iconCls
: 'pve-itype-icon-storage',
245 handler: function() {
246 var win
= Ext
.create('PVE.pool.AddStorage', { pool
: me
.pool
});
247 win
.on('destroy', reload
);
261 itemcontextmenu
: PVE
.Utils
.createCmdMenu
,
262 itemdblclick: function(v
, record
) {
263 var ws
= me
.up('pveStdWorkspace');
264 ws
.selectById(record
.data
.id
);