]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/node/LVM.js
ui: node summary: rework repo status output
[pve-manager.git] / www / manager6 / node / LVM.js
CommitLineData
d660ba8a
DC
1Ext.define('PVE.node.CreateLVM', {
2 extend: 'Proxmox.window.Edit',
3 xtype: 'pveCreateLVM',
4
57c29e0b 5 onlineHelp: 'chapter_lvm',
d660ba8a
DC
6 subject: 'LVM Volume Group',
7
8 showProgress: true,
57c29e0b 9 isCreate: true,
d660ba8a 10
8058410f 11 initComponent: function() {
57c29e0b 12 let me = this;
d660ba8a
DC
13
14 if (!me.nodename) {
15 throw "no node name specified";
16 }
17
18 me.isCreate = true;
19
20 Ext.applyIf(me, {
57c29e0b 21 url: `/nodes/${me.nodename}/disks/lvm`,
d660ba8a
DC
22 method: 'POST',
23 items: [
24 {
d0cfe2ea 25 xtype: 'pmxDiskSelector',
d660ba8a
DC
26 name: 'device',
27 nodename: me.nodename,
28 diskType: 'unused',
29 fieldLabel: gettext('Disk'),
f6710aac 30 allowBlank: false,
d660ba8a
DC
31 },
32 {
33 xtype: 'proxmoxtextfield',
34 name: 'name',
35 fieldLabel: gettext('Name'),
f6710aac 36 allowBlank: false,
d660ba8a
DC
37 },
38 {
39 xtype: 'proxmoxcheckbox',
40 name: 'add_storage',
41 fieldLabel: gettext('Add Storage'),
f6710aac
TL
42 value: '1',
43 },
57c29e0b
TL
44 ],
45 });
d660ba8a 46
57c29e0b 47 me.callParent();
f6710aac 48 },
d660ba8a
DC
49});
50
51Ext.define('PVE.node.LVMList', {
52 extend: 'Ext.tree.Panel',
53 xtype: 'pveLVMList',
57c29e0b 54
d660ba8a 55 emptyText: gettext('No Volume Groups found'),
57c29e0b 56
d660ba8a
DC
57 stateful: true,
58 stateId: 'grid-node-lvm',
57c29e0b
TL
59
60 rootVisible: false,
61 useArrows: true,
62
d660ba8a
DC
63 columns: [
64 {
65 xtype: 'treecolumn',
66 text: gettext('Name'),
67 dataIndex: 'name',
f6710aac 68 flex: 1,
d660ba8a
DC
69 },
70 {
71 text: gettext('Number of LVs'),
72 dataIndex: 'lvcount',
73 width: 150,
f6710aac 74 align: 'right',
d660ba8a
DC
75 },
76 {
77 header: gettext('Usage'),
78 width: 110,
79 dataIndex: 'usage',
80 tdCls: 'x-progressbar-default-cell',
81 xtype: 'widgetcolumn',
82 widget: {
f6710aac
TL
83 xtype: 'pveProgressBar',
84 },
d660ba8a
DC
85 },
86 {
87 header: gettext('Size'),
88 width: 100,
89 align: 'right',
90 sortable: true,
91 renderer: Proxmox.Utils.format_size,
f6710aac 92 dataIndex: 'size',
d660ba8a
DC
93 },
94 {
95 header: gettext('Free'),
96 width: 100,
97 align: 'right',
98 sortable: true,
99 renderer: Proxmox.Utils.format_size,
f6710aac
TL
100 dataIndex: 'free',
101 },
d660ba8a
DC
102 ],
103
d660ba8a
DC
104 tbar: [
105 {
106 text: gettext('Reload'),
107 iconCls: 'fa fa-refresh',
108 handler: function() {
57c29e0b 109 this.up('panel').reload();
f6710aac 110 },
d660ba8a
DC
111 },
112 {
113 text: gettext('Create') + ': Volume Group',
114 handler: function() {
57c29e0b
TL
115 let view = this.up('panel');
116 Ext.create('PVE.node.CreateLVM', {
117 nodename: view.nodename,
118 taskDone: () => view.reload(),
119 autoShow: true,
120 });
f6710aac
TL
121 },
122 },
d660ba8a
DC
123 ],
124
125 reload: function() {
57c29e0b
TL
126 let me = this;
127 let sm = me.getSelectionModel();
d660ba8a 128 Proxmox.Utils.API2Request({
57c29e0b 129 url: `/nodes/${me.nodename}/disks/lvm`,
d660ba8a
DC
130 waitMsgTarget: me,
131 method: 'GET',
57c29e0b 132 failure: (response, opts) => Proxmox.Utils.setErrorMask(me, response.htmlStatus),
d660ba8a
DC
133 success: function(response, opts) {
134 sm.deselectAll();
135 me.setRootNode(response.result.data);
136 me.expandAll();
f6710aac 137 },
d660ba8a
DC
138 });
139 },
140
141 listeners: {
142 activate: function() {
57c29e0b 143 this.reload();
f6710aac 144 },
d660ba8a
DC
145 },
146
57c29e0b
TL
147 selModel: 'treemodel',
148 fields: [
149 'name',
150 'size',
151 'free',
152 {
153 type: 'string',
154 name: 'iconCls',
155 calculate: data => `fa x-fa-tree fa-${data.leaf ? 'hdd-o' : 'object-group'}`,
156 },
157 {
158 type: 'number',
159 name: 'usage',
160 calculate: data => (data.size - data.free) / data.size,
161 },
162 ],
163 sorters: 'name',
164
d660ba8a 165 initComponent: function() {
57c29e0b 166 let me = this;
d660ba8a
DC
167
168 me.nodename = me.pveSelNode.data.node;
169 if (!me.nodename) {
170 throw "no node name specified";
171 }
d660ba8a
DC
172 me.callParent();
173
174 me.reload();
f6710aac 175 },
d660ba8a
DC
176});
177