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: 'openDetailWindow',
	},
    ],

    listeners: {
	itemdblclick: 'openDetailWindow',
    },

    store: {
	fields: ['name', 'size', 'free', 'alloc', 'dedup', 'frag', 'health'],
	proxy: {
	    type: 'proxmox',
	},
	sorters: 'name',
    },
});