proxmox-backup/www/ZFSList.js
Dominik Csapak 2ea501ffdf ui: add ZFS management
adds a ZFSList and ZFSCreate class, modeled after the one in pve

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-06-26 10:33:23 +02:00

138 lines
2.5 KiB
JavaScript

Ext.define('PBS.admin.ZFSList', {
extend: 'Ext.grid.Panel',
xtype: 'pbsZFSList',
stateful: true,
stateId: 'grid-node-zfs',
controller: {
xclass: 'Ext.app.ViewController',
openCreateWindow: function() {
let me = this;
Ext.create('PBS.window.CreateZFS', {
nodename: me.nodename,
listeners: {
destroy: function() { me.reload(); },
}
}).show();
},
openDetailWindow: function() {
let me = this;
let view = me.getView();
let selection = view.getSelection();
if (!selection || selection.length < 1) return;
let rec = selection[0];
let zpool = rec.get('name');
Ext.create('Proxmox.window.ZFSDetail', {
zpool,
nodename: view.nodename,
}).show();
},
reload: function() {
let me = this;
let view = me.getView();
let store = view.getStore();
store.load();
store.sort();
},
init: function(view) {
let me = this;
if (!view.nodename) {
throw "no nodename given";
}
let url = `/api2/json/nodes/${view.nodename}/disks/zfs`;
view.getStore().getProxy().setUrl(url)
Proxmox.Utils.monStoreErrors(view, view.getStore(), true);
me.reload();
},
},
columns: [
{
text: gettext('Name'),
dataIndex: 'name',
flex: 1
},
{
header: gettext('Size'),
renderer: Proxmox.Utils.format_size,
dataIndex: 'size'
},
{
header: gettext('Free'),
renderer: Proxmox.Utils.format_size,
dataIndex: 'free'
},
{
header: gettext('Allocated'),
renderer: Proxmox.Utils.format_size,
dataIndex: 'alloc'
},
{
header: gettext('Fragmentation'),
renderer: function(value) {
return value.toString() + '%';
},
dataIndex: 'frag'
},
{
header: gettext('Health'),
renderer: Proxmox.Utils.render_zfs_health,
dataIndex: 'health'
},
{
header: gettext('Deduplication'),
hidden: true,
renderer: function(value) {
return value.toFixed(2).toString() + 'x';
},
dataIndex: 'dedup'
}
],
rootVisible: false,
useArrows: true,
tbar: [
{
text: gettext('Reload'),
iconCls: 'fa fa-refresh',
handler: 'reload',
},
{
text: gettext('Create') + ': ZFS',
handler: 'openCreateWindow',
},
{
text: gettext('Detail'),
xtype: 'proxmoxButton',
disabled: true,
handler: function() {
}
}
],
listeners: {
itemdblclick: 'openDetailWindow',
},
store: {
fields: ['name', 'size', 'free', 'alloc', 'dedup', 'frag', 'health'],
proxy: {
type: 'proxmox',
},
sorters: 'name'
},
});