mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-05-03 08:38:31 +00:00
131 lines
3.0 KiB
JavaScript
131 lines
3.0 KiB
JavaScript
Ext.define('PVE.storage.Browser', {
|
|
extend: 'PVE.panel.Config',
|
|
alias: 'widget.PVE.storage.Browser',
|
|
|
|
onlineHelp: 'chapter_storage',
|
|
|
|
initComponent: function() {
|
|
var me = this;
|
|
|
|
var nodename = me.pveSelNode.data.node;
|
|
if (!nodename) {
|
|
throw "no node name specified";
|
|
}
|
|
|
|
var storeid = me.pveSelNode.data.storage;
|
|
if (!storeid) {
|
|
throw "no storage ID specified";
|
|
}
|
|
|
|
|
|
me.items = [
|
|
{
|
|
title: gettext('Summary'),
|
|
xtype: 'pveStorageSummary',
|
|
iconCls: 'fa fa-book',
|
|
itemId: 'summary',
|
|
},
|
|
];
|
|
|
|
var caps = Ext.state.Manager.get('GuiCap');
|
|
|
|
Ext.apply(me, {
|
|
title: Ext.String.format(
|
|
gettext("Storage {0} on node {1}"),
|
|
`'${storeid}'`,
|
|
`'${nodename}'`,
|
|
),
|
|
hstateid: 'storagetab',
|
|
});
|
|
|
|
if (caps.storage['Datastore.Allocate'] ||
|
|
caps.storage['Datastore.AllocateSpace'] ||
|
|
caps.storage['Datastore.Audit']) {
|
|
let storageInfo = PVE.data.ResourceStore.findRecord(
|
|
'id',
|
|
`storage/${nodename}/${storeid}`,
|
|
0, // startIndex
|
|
false, // anyMatch
|
|
true, // caseSensitive
|
|
true, // exactMatch
|
|
);
|
|
let res = storageInfo.data;
|
|
let plugin = res.plugintype;
|
|
let contents = res.content.split(',');
|
|
|
|
if (contents.includes('backup')) {
|
|
me.items.push({
|
|
xtype: 'pveStorageBackupView',
|
|
title: gettext('Backups'),
|
|
iconCls: 'fa fa-floppy-o',
|
|
itemId: 'contentBackup',
|
|
pluginType: plugin,
|
|
hasNotesColumn: true,
|
|
});
|
|
}
|
|
if (contents.includes('images')) {
|
|
me.items.push({
|
|
xtype: 'pveStorageImageView',
|
|
title: gettext('VM Disks'),
|
|
iconCls: 'fa fa-hdd-o',
|
|
itemId: 'contentImages',
|
|
content: 'images',
|
|
pluginType: plugin,
|
|
});
|
|
}
|
|
if (contents.includes('rootdir')) {
|
|
me.items.push({
|
|
xtype: 'pveStorageImageView',
|
|
title: gettext('CT Volumes'),
|
|
iconCls: 'fa fa-hdd-o lxc',
|
|
itemId: 'contentRootdir',
|
|
content: 'rootdir',
|
|
pluginType: plugin,
|
|
});
|
|
}
|
|
if (contents.includes('iso')) {
|
|
me.items.push({
|
|
xtype: 'pveStorageContentView',
|
|
title: gettext('ISO Images'),
|
|
iconCls: 'pve-itype-treelist-item-icon-cdrom',
|
|
itemId: 'contentIso',
|
|
content: 'iso',
|
|
pluginType: plugin,
|
|
useUploadButton: true,
|
|
});
|
|
}
|
|
if (contents.includes('vztmpl')) {
|
|
me.items.push({
|
|
xtype: 'pveStorageTemplateView',
|
|
title: gettext('CT Templates'),
|
|
iconCls: 'fa fa-file-o lxc',
|
|
itemId: 'contentVztmpl',
|
|
pluginType: plugin,
|
|
});
|
|
}
|
|
if (contents.includes('snippets')) {
|
|
me.items.push({
|
|
xtype: 'pveStorageContentView',
|
|
title: gettext('Snippets'),
|
|
iconCls: 'fa fa-file-code-o',
|
|
itemId: 'contentSnippets',
|
|
content: 'snippets',
|
|
pluginType: plugin,
|
|
});
|
|
}
|
|
}
|
|
|
|
if (caps.storage['Permissions.Modify']) {
|
|
me.items.push({
|
|
xtype: 'pveACLView',
|
|
title: gettext('Permissions'),
|
|
iconCls: 'fa fa-unlock',
|
|
itemId: 'permissions',
|
|
path: '/storage/' + storeid,
|
|
});
|
|
}
|
|
|
|
me.callParent();
|
|
},
|
|
});
|