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