mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-07-14 22:23:42 +00:00

but allow an empty nodename to be set. This is in preparation for allowing a cluster view as well, where an empty node name will indicate that no node is selected. Since the reloadStorageList function still returns early if there is no nodename, this should not lead to any issues. Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
117 lines
2.0 KiB
JavaScript
117 lines
2.0 KiB
JavaScript
Ext.define('PVE.form.StorageSelector', {
|
|
extend: 'Proxmox.form.ComboGrid',
|
|
alias: 'widget.pveStorageSelector',
|
|
|
|
allowBlank: false,
|
|
valueField: 'storage',
|
|
displayField: 'storage',
|
|
listConfig: {
|
|
width: 450,
|
|
columns: [
|
|
{
|
|
header: gettext('Name'),
|
|
dataIndex: 'storage',
|
|
hideable: false,
|
|
flex: 1,
|
|
},
|
|
{
|
|
header: gettext('Type'),
|
|
width: 75,
|
|
dataIndex: 'type',
|
|
},
|
|
{
|
|
header: gettext('Avail'),
|
|
width: 90,
|
|
dataIndex: 'avail',
|
|
renderer: Proxmox.Utils.format_size,
|
|
},
|
|
{
|
|
header: gettext('Capacity'),
|
|
width: 90,
|
|
dataIndex: 'total',
|
|
renderer: Proxmox.Utils.format_size,
|
|
},
|
|
],
|
|
},
|
|
|
|
reloadStorageList: function() {
|
|
let me = this;
|
|
if (!me.nodename) {
|
|
return;
|
|
}
|
|
|
|
let params = {
|
|
format: 1,
|
|
};
|
|
if (me.storageContent) {
|
|
params.content = me.storageContent;
|
|
}
|
|
if (me.targetNode) {
|
|
params.target = me.targetNode;
|
|
params.enabled = 1; // skip disabled storages
|
|
}
|
|
me.store.setProxy({
|
|
type: 'proxmox',
|
|
url: `/api2/json/nodes/${me.nodename}/storage`,
|
|
extraParams: params,
|
|
});
|
|
|
|
me.store.load(() => me.validate());
|
|
},
|
|
|
|
setTargetNode: function(targetNode) {
|
|
var me = this;
|
|
|
|
if (!targetNode || me.targetNode === targetNode) {
|
|
return;
|
|
}
|
|
|
|
me.targetNode = targetNode;
|
|
|
|
me.reloadStorageList();
|
|
},
|
|
|
|
setNodename: function(nodename) {
|
|
var me = this;
|
|
|
|
nodename = nodename || '';
|
|
|
|
if (me.nodename === nodename) {
|
|
return;
|
|
}
|
|
|
|
me.nodename = nodename;
|
|
|
|
me.reloadStorageList();
|
|
},
|
|
|
|
initComponent: function() {
|
|
var me = this;
|
|
|
|
let 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, {
|
|
store: store,
|
|
});
|
|
|
|
me.callParent();
|
|
|
|
me.setNodename(nodename);
|
|
},
|
|
}, function() {
|
|
Ext.define('pve-storage-status', {
|
|
extend: 'Ext.data.Model',
|
|
fields: ['storage', 'active', 'type', 'avail', 'total'],
|
|
idProperty: 'storage',
|
|
});
|
|
});
|