]> git.proxmox.com Git - proxmox-backup.git/blob - www/ZFSList.js
fix #2860: skip in-progress snapshots when syncing
[proxmox-backup.git] / www / ZFSList.js
1 Ext.define('PBS.admin.ZFSList', {
2 extend: 'Ext.grid.Panel',
3 xtype: 'pbsZFSList',
4
5 stateful: true,
6 stateId: 'grid-node-zfs',
7
8 controller: {
9 xclass: 'Ext.app.ViewController',
10
11 openCreateWindow: function() {
12 let me = this;
13 Ext.create('PBS.window.CreateZFS', {
14 nodename: me.nodename,
15 listeners: {
16 destroy: function() { me.reload(); },
17 }
18 }).show();
19 },
20
21 openDetailWindow: function() {
22 let me = this;
23 let view = me.getView();
24 let selection = view.getSelection();
25 if (!selection || selection.length < 1) return;
26
27 let rec = selection[0];
28 let zpool = rec.get('name');
29
30 Ext.create('Proxmox.window.ZFSDetail', {
31 zpool,
32 nodename: view.nodename,
33 }).show();
34 },
35
36 reload: function() {
37 let me = this;
38 let view = me.getView();
39 let store = view.getStore();
40 store.load();
41 store.sort();
42 },
43
44 init: function(view) {
45 let me = this;
46
47 if (!view.nodename) {
48 throw "no nodename given";
49 }
50
51 let url = `/api2/json/nodes/${view.nodename}/disks/zfs`;
52 view.getStore().getProxy().setUrl(url)
53
54 Proxmox.Utils.monStoreErrors(view, view.getStore(), true);
55
56 me.reload();
57 },
58 },
59
60 columns: [
61 {
62 text: gettext('Name'),
63 dataIndex: 'name',
64 flex: 1
65 },
66 {
67 header: gettext('Size'),
68 renderer: Proxmox.Utils.format_size,
69 dataIndex: 'size'
70 },
71 {
72 header: gettext('Free'),
73 renderer: Proxmox.Utils.format_size,
74 dataIndex: 'free'
75 },
76 {
77 header: gettext('Allocated'),
78 renderer: Proxmox.Utils.format_size,
79 dataIndex: 'alloc'
80 },
81 {
82 header: gettext('Fragmentation'),
83 renderer: function(value) {
84 return value.toString() + '%';
85 },
86 dataIndex: 'frag'
87 },
88 {
89 header: gettext('Health'),
90 renderer: Proxmox.Utils.render_zfs_health,
91 dataIndex: 'health'
92 },
93 {
94 header: gettext('Deduplication'),
95 hidden: true,
96 renderer: function(value) {
97 return value.toFixed(2).toString() + 'x';
98 },
99 dataIndex: 'dedup'
100 }
101 ],
102
103 rootVisible: false,
104 useArrows: true,
105
106 tbar: [
107 {
108 text: gettext('Reload'),
109 iconCls: 'fa fa-refresh',
110 handler: 'reload',
111 },
112 {
113 text: gettext('Create') + ': ZFS',
114 handler: 'openCreateWindow',
115 },
116 {
117 text: gettext('Detail'),
118 xtype: 'proxmoxButton',
119 disabled: true,
120 handler: 'openDetailWindow',
121 }
122 ],
123
124 listeners: {
125 itemdblclick: 'openDetailWindow',
126 },
127
128 store: {
129 fields: ['name', 'size', 'free', 'alloc', 'dedup', 'frag', 'health'],
130 proxy: {
131 type: 'proxmox',
132 },
133 sorters: 'name'
134 },
135 });
136