]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/grid/PoolMembers.js
1 Ext
.define('PVE.pool.AddVM', {
2 extend
: 'Proxmox.window.Edit',
7 initComponent: function() {
11 throw "no pool specified";
14 me
.url
= "/pools/" + me
.pool
;
17 var vmsField
= Ext
.create('Ext.form.field.Text', {
23 var vmStore
= Ext
.create('Ext.data.Store', {
24 model
: 'PVEResources',
33 return (item
.data
.type
=== 'lxc' || item
.data
.type
=== 'qemu') && item
.data
.pool
=== '';
38 var vmGrid
= Ext
.create('widget.grid', {
44 selType
: 'checkboxmodel',
47 selectionchange: function(model
, selected
, opts
) {
49 selected
.forEach(function(vm
) {
50 selectedVms
.push(vm
.data
.vmid
);
52 vmsField
.setValue(selectedVms
);
63 header
: gettext('Node'),
67 header
: gettext('Status'),
69 renderer: function(value
) {
71 return Proxmox
.Utils
.runningText
;
73 return Proxmox
.Utils
.stoppedText
;
78 header
: gettext('Name'),
83 header
: gettext('Type'),
89 subject
: gettext('Virtual Machine'),
90 items
: [vmsField
, vmGrid
],
98 Ext
.define('PVE.pool.AddStorage', {
99 extend
: 'Proxmox.window.Edit',
101 initComponent: function() {
105 throw "no pool specified";
110 me
.url
= "/pools/" + me
.pool
;
114 subject
: gettext('Storage'),
118 xtype
: 'pveStorageSelector',
120 nodename
: 'localhost',
123 fieldLabel
: gettext("Storage"),
132 Ext
.define('PVE.grid.PoolMembers', {
133 extend
: 'Ext.grid.GridPanel',
134 alias
: ['widget.pvePoolMembers'],
136 // fixme: dynamic status update ?
139 stateId
: 'grid-pool-members',
141 initComponent: function() {
145 throw "no pool specified";
148 var store
= Ext
.create('Ext.data.Store', {
149 model
: 'PVEResources',
158 root
: 'data.members',
159 url
: "/api2/json/pools/" + me
.pool
,
163 var coldef
= PVE
.data
.ResourceStore
.defaultColumns().filter((c
) =>
164 c
.dataIndex
!== 'tags' && c
.dataIndex
!== 'lock',
167 var reload = function() {
171 var sm
= Ext
.create('Ext.selection.RowModel', {});
173 var remove_btn
= new Proxmox
.button
.Button({
174 text
: gettext('Remove'),
177 confirmMsg: function(rec
) {
178 return Ext
.String
.format(gettext('Are you sure you want to remove entry {0}'),
179 "'" + rec
.data
.id
+ "'");
181 handler: function(btn
, event
, rec
) {
182 var params
= { 'delete': 1 };
183 if (rec
.data
.type
=== 'storage') {
184 params
.storage
= rec
.data
.storage
;
185 } else if (rec
.data
.type
=== 'qemu' || rec
.data
.type
=== 'lxc' || rec
.data
.type
=== 'openvz') {
186 params
.vms
= rec
.data
.vmid
;
188 throw "unknown resource type";
191 Proxmox
.Utils
.API2Request({
192 url
: '/pools/' + me
.pool
,
196 callback: function() {
199 failure: function(response
, opts
) {
200 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
211 text
: gettext('Add'),
212 menu
: new Ext
.menu
.Menu({
215 text
: gettext('Virtual Machine'),
216 iconCls
: 'pve-itype-icon-qemu',
217 handler: function() {
218 var win
= Ext
.create('PVE.pool.AddVM', { pool
: me
.pool
});
219 win
.on('destroy', reload
);
224 text
: gettext('Storage'),
225 iconCls
: 'pve-itype-icon-storage',
226 handler: function() {
227 var win
= Ext
.create('PVE.pool.AddStorage', { pool
: me
.pool
});
228 win
.on('destroy', reload
);
242 itemcontextmenu
: PVE
.Utils
.createCmdMenu
,
243 itemdblclick: function(v
, record
) {
244 var ws
= me
.up('pveStdWorkspace');
245 ws
.selectById(record
.data
.id
);