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