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