]>
Commit | Line | Data |
---|---|---|
7c0a43d9 | 1 | Ext.define('PVE.form.StorageSelector', { |
0fc95a12 | 2 | extend: 'Proxmox.form.ComboGrid', |
4cb75dd9 | 3 | alias: 'widget.pveStorageSelector', |
7c0a43d9 | 4 | |
a13842bf EK |
5 | allowBlank: false, |
6 | valueField: 'storage', | |
7 | displayField: 'storage', | |
8 | listConfig: { | |
eb89111d | 9 | width: 450, |
a13842bf EK |
10 | columns: [ |
11 | { | |
12 | header: gettext('Name'), | |
13 | dataIndex: 'storage', | |
14 | hideable: false, | |
15 | flex: 1 | |
16 | }, | |
17 | { | |
18 | header: gettext('Type'), | |
eb89111d | 19 | width: 75, |
a13842bf EK |
20 | dataIndex: 'type' |
21 | }, | |
22 | { | |
23 | header: gettext('Avail'), | |
eb89111d | 24 | width: 90, |
a13842bf | 25 | dataIndex: 'avail', |
e7ade592 | 26 | renderer: Proxmox.Utils.format_size |
a13842bf EK |
27 | }, |
28 | { | |
29 | header: gettext('Capacity'), | |
eb89111d | 30 | width: 90, |
a13842bf | 31 | dataIndex: 'total', |
e7ade592 | 32 | renderer: Proxmox.Utils.format_size |
a13842bf EK |
33 | } |
34 | ] | |
35 | }, | |
36 | ||
7c0a43d9 DM |
37 | reloadStorageList: function() { |
38 | var me = this; | |
39 | if (!me.nodename) { | |
40 | return; | |
41 | } | |
42 | ||
acd0d10a DC |
43 | var params = { |
44 | format: 1 | |
45 | }; | |
7c0a43d9 DM |
46 | var url = '/api2/json/nodes/' + me.nodename + '/storage'; |
47 | if (me.storageContent) { | |
48 | params.content = me.storageContent; | |
49 | } | |
50 | if (me.targetNode) { | |
51 | params.target = me.targetNode; | |
52 | params.enabled = 1; // skip disabled storages | |
53 | } | |
54 | me.store.setProxy({ | |
56a353b9 | 55 | type: 'proxmox', |
7c0a43d9 DM |
56 | url: url, |
57 | extraParams: params | |
58 | }); | |
59 | ||
60 | me.store.load(); | |
2a4971d8 | 61 | |
7c0a43d9 DM |
62 | }, |
63 | ||
64 | setTargetNode: function(targetNode) { | |
65 | var me = this; | |
66 | ||
67 | if (!targetNode || (me.targetNode === targetNode)) { | |
68 | return; | |
69 | } | |
70 | ||
71 | me.targetNode = targetNode; | |
72 | ||
73 | me.reloadStorageList(); | |
74 | }, | |
75 | ||
76 | setNodename: function(nodename) { | |
77 | var me = this; | |
78 | ||
79 | if (!nodename || (me.nodename === nodename)) { | |
80 | return; | |
81 | } | |
82 | ||
83 | me.nodename = nodename; | |
84 | ||
85 | me.reloadStorageList(); | |
86 | }, | |
87 | ||
88 | initComponent: function() { | |
89 | var me = this; | |
90 | ||
91 | var nodename = me.nodename; | |
2a4971d8 | 92 | me.nodename = undefined; |
7c0a43d9 DM |
93 | |
94 | var store = Ext.create('Ext.data.Store', { | |
95 | model: 'pve-storage-status', | |
96 | sorters: { | |
2a4971d8 TL |
97 | property: 'storage', |
98 | order: 'DESC' | |
7c0a43d9 DM |
99 | } |
100 | }); | |
101 | ||
102 | Ext.apply(me, { | |
22f2f9d6 | 103 | store: store |
7c0a43d9 DM |
104 | }); |
105 | ||
106 | me.callParent(); | |
107 | ||
108 | if (nodename) { | |
109 | me.setNodename(nodename); | |
110 | } | |
111 | } | |
112 | }, function() { | |
113 | ||
114 | Ext.define('pve-storage-status', { | |
115 | extend: 'Ext.data.Model', | |
116 | fields: [ 'storage', 'active', 'type', 'avail', 'total' ], | |
117 | idProperty: 'storage' | |
118 | }); | |
119 | ||
120 | }); |