2015-07-03 11:29:11 +02:00
Ext . define ( 'PVE.form.StorageSelector' , {
2018-01-15 15:17:50 +01:00
extend : 'Proxmox.form.ComboGrid' ,
2016-09-12 12:02:34 +02:00
alias : 'widget.pveStorageSelector' ,
2015-07-03 11:29:11 +02:00
2015-12-10 15:08:00 +01:00
allowBlank : false ,
valueField : 'storage' ,
displayField : 'storage' ,
listConfig : {
2019-06-17 12:53:59 +02:00
width : 450 ,
2015-12-10 15:08:00 +01:00
columns : [
{
header : gettext ( 'Name' ) ,
dataIndex : 'storage' ,
hideable : false ,
flex : 1
} ,
{
header : gettext ( 'Type' ) ,
2019-06-17 12:53:59 +02:00
width : 75 ,
2015-12-10 15:08:00 +01:00
dataIndex : 'type'
} ,
{
header : gettext ( 'Avail' ) ,
2019-06-17 12:53:59 +02:00
width : 90 ,
2015-12-10 15:08:00 +01:00
dataIndex : 'avail' ,
2018-01-15 15:18:09 +01:00
renderer : Proxmox . Utils . format _size
2015-12-10 15:08:00 +01:00
} ,
{
header : gettext ( 'Capacity' ) ,
2019-06-17 12:53:59 +02:00
width : 90 ,
2015-12-10 15:08:00 +01:00
dataIndex : 'total' ,
2018-01-15 15:18:09 +01:00
renderer : Proxmox . Utils . format _size
2015-12-10 15:08:00 +01:00
}
]
} ,
2015-07-03 11:29:11 +02:00
reloadStorageList : function ( ) {
var me = this ;
if ( ! me . nodename ) {
return ;
}
2017-11-10 14:49:20 +01:00
var params = {
format : 1
} ;
2015-07-03 11:29:11 +02:00
var url = '/api2/json/nodes/' + me . nodename + '/storage' ;
if ( me . storageContent ) {
params . content = me . storageContent ;
}
if ( me . targetNode ) {
params . target = me . targetNode ;
params . enabled = 1 ; // skip disabled storages
}
me . store . setProxy ( {
2017-12-11 14:46:51 +01:00
type : 'proxmox' ,
2015-07-03 11:29:11 +02:00
url : url ,
extraParams : params
} ) ;
me . store . load ( ) ;
} ,
setTargetNode : function ( targetNode ) {
var me = this ;
if ( ! targetNode || ( me . targetNode === targetNode ) ) {
return ;
}
me . targetNode = targetNode ;
me . reloadStorageList ( ) ;
} ,
setNodename : function ( nodename ) {
var me = this ;
if ( ! nodename || ( me . nodename === nodename ) ) {
return ;
}
me . nodename = nodename ;
me . reloadStorageList ( ) ;
} ,
initComponent : function ( ) {
var me = this ;
var nodename = me . nodename ;
me . nodename = undefined ;
var store = Ext . create ( 'Ext.data.Store' , {
model : 'pve-storage-status' ,
sorters : {
property : 'storage' ,
order : 'DESC'
}
} ) ;
Ext . apply ( me , {
2016-04-29 12:06:28 +02:00
store : store
2015-07-03 11:29:11 +02:00
} ) ;
me . callParent ( ) ;
if ( nodename ) {
me . setNodename ( nodename ) ;
}
}
} , function ( ) {
Ext . define ( 'pve-storage-status' , {
extend : 'Ext.data.Model' ,
fields : [ 'storage' , 'active' , 'type' , 'avail' , 'total' ] ,
idProperty : 'storage'
} ) ;
} ) ;