]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/dc/StorageView.js
remove reset columns button from resource grid
[pve-manager.git] / www / manager6 / dc / StorageView.js
CommitLineData
2f8915cf
DM
1
2Ext.define('PVE.dc.StorageView', {
3 extend: 'Ext.grid.GridPanel',
4
5 alias: ['widget.pveStorageView'],
6
ba93a9c6
DC
7 onlineHelp: 'chapter_storage',
8
2f8915cf
DM
9 initComponent : function() {
10 var me = this;
11
12 var store = new Ext.data.Store({
13 model: 'pve-storage',
14 proxy: {
15 type: 'pve',
16 url: "/api2/json/storage"
17 },
a9f71282
DC
18 sorters: {
19 property: 'storage',
20 order: 'DESC'
2f8915cf
DM
21 }
22 });
23
24 var reload = function() {
25 store.load();
26 };
27
28 var sm = Ext.create('Ext.selection.RowModel', {});
29
30 var run_editor = function() {
31 var rec = sm.getSelection()[0];
32 if (!rec) {
33 return;
34 }
35 var type = rec.data.type;
a9f71282 36
2f8915cf
DM
37 var editor;
38 if (type === 'dir') {
39 editor = 'PVE.storage.DirEdit';
40 } else if (type === 'nfs') {
41 editor = 'PVE.storage.NFSEdit';
42 } else if (type === 'glusterfs') {
43 editor = 'PVE.storage.GlusterFsEdit';
44 } else if (type === 'lvm') {
45 editor = 'PVE.storage.LVMEdit';
c3378f7b
DC
46 } else if (type === 'lvmthin') {
47 editor = 'PVE.storage.LvmThinEdit';
2f8915cf
DM
48 } else if (type === 'iscsi') {
49 editor = 'PVE.storage.IScsiEdit';
50 } else if (type === 'rbd') {
51 editor = 'PVE.storage.RBDEdit';
52 } else if (type === 'sheepdog') {
53 editor = 'PVE.storage.SheepdogEdit';
54 } else if (type === 'zfs') {
55 editor = 'PVE.storage.ZFSEdit';
56 } else if (type === 'zfspool') {
57 editor = 'PVE.storage.ZFSPoolEdit';
58 } else {
59 return;
60 }
61 var win = Ext.create(editor, {
62 storageId: rec.data.storage
63 });
64
65 win.show();
66 win.on('destroy', reload);
67 };
a9f71282 68
2f8915cf
DM
69 var edit_btn = new PVE.button.Button({
70 text: gettext('Edit'),
71 disabled: true,
72 selModel: sm,
73 handler: run_editor
74 });
75
76 var remove_btn = new PVE.button.Button({
77 text: gettext('Remove'),
78 disabled: true,
79 selModel: sm,
80 confirmMsg: function (rec) {
81 return Ext.String.format(gettext('Are you sure you want to remove entry {0}'),
82 "'" + rec.data.storage + "'");
83 },
84 handler: function(btn, event, rec) {
85 PVE.Utils.API2Request({
86 url: '/storage/' + rec.data.storage,
87 method: 'DELETE',
88 waitMsgTarget: me,
89 callback: function() {
90 reload();
91 },
92 failure: function (response, opts) {
93 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
94 }
95 });
96 }
97 });
98
99 Ext.apply(me, {
100 store: store,
101 selModel: sm,
102 stateful: false,
103 viewConfig: {
104 trackOver: false
105 },
a9f71282 106 tbar: [
2f8915cf
DM
107 {
108 text: gettext('Add'),
109 menu: new Ext.menu.Menu({
110 items: [
111 {
112 text: PVE.Utils.format_storage_type('dir'),
0ef7ade9 113 iconCls: 'fa fa-fw fa-folder',
2f8915cf
DM
114 handler: function() {
115 var win = Ext.create('PVE.storage.DirEdit', {});
116 win.on('destroy', reload);
117 win.show();
118 }
119
120 },
121 {
122 text: PVE.Utils.format_storage_type('lvm'),
0ef7ade9 123 iconCls: 'fa fa-fw fa-folder',
2f8915cf
DM
124 handler: function() {
125 var win = Ext.create('PVE.storage.LVMEdit', {});
126 win.on('destroy', reload);
127 win.show();
128 }
129 },
c3378f7b
DC
130 {
131 text: PVE.Utils.format_storage_type('lvmthin'),
0ef7ade9 132 iconCls: 'fa fa-fw fa-folder',
c3378f7b
DC
133 handler: function() {
134 var win = Ext.create('PVE.storage.LvmThinEdit', {});
135 win.on('destroy', reload);
136 win.show();
137 }
138 },
2f8915cf
DM
139 {
140 text: PVE.Utils.format_storage_type('nfs'),
0ef7ade9 141 iconCls: 'fa fa-fw fa-building',
2f8915cf
DM
142 handler: function() {
143 var win = Ext.create('PVE.storage.NFSEdit', {});
144 win.on('destroy', reload);
145 win.show();
146 }
147 },
148 {
149 text: PVE.Utils.format_storage_type('iscsi'),
0ef7ade9 150 iconCls: 'fa fa-fw fa-building',
2f8915cf
DM
151 handler: function() {
152 var win = Ext.create('PVE.storage.IScsiEdit', {});
153 win.on('destroy', reload);
154 win.show();
155 }
156 },
157 {
158 text: PVE.Utils.format_storage_type('glusterfs'),
0ef7ade9 159 iconCls: 'fa fa-fw fa-building',
2f8915cf
DM
160 handler: function() {
161 var win = Ext.create('PVE.storage.GlusterFsEdit', {});
162 win.on('destroy', reload);
163 win.show();
164 }
165 },
166 {
167 text: PVE.Utils.format_storage_type('rbd'),
0ef7ade9 168 iconCls: 'fa fa-fw fa-building',
2f8915cf
DM
169 handler: function() {
170 var win = Ext.create('PVE.storage.RBDEdit', {});
171 win.on('destroy', reload);
172 win.show();
173 }
174 },
175 {
176 text: PVE.Utils.format_storage_type('zfs'),
0ef7ade9 177 iconCls: 'fa fa-fw fa-building',
2f8915cf
DM
178 handler: function() {
179 var win = Ext.create('PVE.storage.ZFSEdit', {});
180 win.on('destroy', reload);
181 win.show();
182 }
183 },
184 {
185 text: PVE.Utils.format_storage_type('zfspool'),
0ef7ade9 186 iconCls: 'fa fa-fw fa-folder',
2f8915cf
DM
187 handler: function() {
188 var win = Ext.create('PVE.storage.ZFSPoolEdit', {});
189 win.on('destroy', reload);
190 win.show();
191 }
22f2f9d6 192 }
2f8915cf
DM
193
194/* the following type are conidered unstable
195 * so we do not enable that on the GUI for now
196 {
197 text: PVE.Utils.format_storage_type('sheepdog'),
0ef7ade9 198 iconCls: 'fa fa-fw fa-building',
2f8915cf
DM
199 handler: function() {
200 var win = Ext.create('PVE.storage.SheepdogEdit', {});
201 win.on('destroy', reload);
202 win.show();
203 }
204 }
205*/
206 ]
207 })
208 },
209 remove_btn,
210 edit_btn
211 ],
212 columns: [
213 {
214 header: 'ID',
215 width: 100,
216 sortable: true,
217 dataIndex: 'storage'
218 },
219 {
220 header: gettext('Type'),
221 width: 60,
222 sortable: true,
223 dataIndex: 'type',
224 renderer: PVE.Utils.format_storage_type
225 },
226 {
227 header: gettext('Content'),
228 width: 150,
229 sortable: true,
230 dataIndex: 'content',
231 renderer: PVE.Utils.format_content_types
232 },
233 {
234 header: gettext('Path') + '/' + gettext('Target'),
235 flex: 1,
236 sortable: true,
237 dataIndex: 'path',
238 renderer: function(value, metaData, record) {
239 if (record.data.target) {
240 return record.data.target;
241 }
242 return value;
243 }
244 },
245 {
246 header: gettext('Shared'),
247 width: 80,
248 sortable: true,
249 dataIndex: 'shared',
250 renderer: PVE.Utils.format_boolean
251 },
252 {
185a77e5 253 header: gettext('Enabled'),
2f8915cf
DM
254 width: 80,
255 sortable: true,
256 dataIndex: 'disable',
257 renderer: PVE.Utils.format_neg_boolean
258 }
259 ],
260 listeners: {
c0b3df6e 261 activate: reload,
2f8915cf
DM
262 itemdblclick: run_editor
263 }
264 });
265
266 me.callParent();
267 }
268}, function() {
269
270 Ext.define('pve-storage', {
271 extend: 'Ext.data.Model',
a9f71282 272 fields: [
2f8915cf
DM
273 'path', 'type', 'content', 'server', 'portal', 'target', 'export', 'storage',
274 { name: 'shared', type: 'boolean'},
a9f71282 275 { name: 'disable', type: 'boolean'}
2f8915cf
DM
276 ],
277 idProperty: 'storage'
278 });
279
280});