]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/node/LVM.js
ui: eslint: enforce "no-extra-parens" rule
[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
5 subject: 'LVM Volume Group',
6
7 showProgress: true,
8
705edf41 9 onlineHelp: 'chapter_lvm',
d660ba8a 10
8058410f 11 initComponent: function() {
d660ba8a
DC
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 {
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 },
44 ],
d660ba8a
DC
45 });
46
47 me.callParent();
f6710aac 48 },
d660ba8a
DC
49});
50
51Ext.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',
f6710aac 62 flex: 1,
d660ba8a
DC
63 },
64 {
65 text: gettext('Number of LVs'),
66 dataIndex: 'lvcount',
67 width: 150,
f6710aac 68 align: 'right',
d660ba8a
DC
69 },
70 {
71 header: gettext('Usage'),
72 width: 110,
73 dataIndex: 'usage',
74 tdCls: 'x-progressbar-default-cell',
75 xtype: 'widgetcolumn',
76 widget: {
f6710aac
TL
77 xtype: 'pveProgressBar',
78 },
d660ba8a
DC
79 },
80 {
81 header: gettext('Size'),
82 width: 100,
83 align: 'right',
84 sortable: true,
85 renderer: Proxmox.Utils.format_size,
f6710aac 86 dataIndex: 'size',
d660ba8a
DC
87 },
88 {
89 header: gettext('Free'),
90 width: 100,
91 align: 'right',
92 sortable: true,
93 renderer: Proxmox.Utils.format_size,
f6710aac
TL
94 dataIndex: 'free',
95 },
d660ba8a
DC
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();
f6710aac 108 },
d660ba8a
DC
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();
f6710aac 118 },
d660ba8a 119 }).show();
f6710aac
TL
120 },
121 },
d660ba8a
DC
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();
f6710aac 138 },
d660ba8a
DC
139 });
140 },
141
142 listeners: {
143 activate: function() {
144 var me = this;
145 me.reload();
f6710aac 146 },
d660ba8a
DC
147 },
148
149 initComponent: function() {
d660ba8a
DC
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-';
53e3ea84 167 txt += data.leaf ? 'hdd-o' : 'object-group';
d660ba8a 168 return txt;
f6710aac 169 },
d660ba8a
DC
170 },
171 {
172 type: 'number',
173 name: 'usage',
174 calculate: function(data) {
53e3ea84 175 return (data.size-data.free)/data.size;
f6710aac
TL
176 },
177 },
d660ba8a 178 ],
f6710aac 179 sorters: 'name',
d660ba8a
DC
180 });
181
182 me.callParent();
183
184 me.reload();
f6710aac 185 },
d660ba8a
DC
186});
187