]>
Commit | Line | Data |
---|---|---|
054ac1b8 DC |
1 | Ext.define('PVE.panel.StatusView', { |
2 | extend: 'Ext.panel.Panel', | |
3 | alias: 'widget.pveStatusView', | |
4 | ||
5 | layout: { | |
6 | type: 'column' | |
7 | }, | |
8 | ||
9 | title: gettext('Status'), | |
10 | ||
11 | getRecordValue: function(key, store) { | |
12 | if (!key) { | |
13 | throw "no key given"; | |
14 | } | |
15 | var me = this; | |
16 | ||
17 | if (store === undefined) { | |
18 | store = me.getStore(); | |
19 | } | |
20 | ||
21 | var rec = store.getById(key); | |
22 | if (rec) { | |
23 | return rec.data.value; | |
24 | } | |
25 | ||
26 | return ''; | |
27 | }, | |
28 | ||
29 | fieldRenderer: function(val,max) { | |
30 | if (max === undefined) { | |
31 | return val; | |
32 | } | |
33 | ||
34 | if (!Ext.isNumeric(max) || max === 1) { | |
35 | return PVE.Utils.render_usage(val); | |
36 | } | |
37 | return PVE.Utils.render_size_usage(val,max); | |
38 | }, | |
39 | ||
40 | fieldCalculator: function(used, max) { | |
41 | if (!Ext.isNumeric(max) && Ext.isNumeric(used)) { | |
42 | return used; | |
43 | } else if(!Ext.isNumeric(used)) { | |
44 | /* we come here if the field is from a node | |
45 | * where the records are not mem and maxmem | |
46 | * but mem.used and mem.total | |
47 | */ | |
48 | if (used.used !== undefined && | |
49 | used.total !== undefined) { | |
50 | return used.used/used.total; | |
51 | } | |
52 | } | |
53 | ||
54 | return used/max; | |
55 | }, | |
56 | ||
57 | updateField: function(field) { | |
58 | var me = this; | |
59 | var text = ''; | |
60 | var renderer = me.fieldRenderer; | |
61 | if (Ext.isFunction(field.renderer)) { | |
62 | renderer = field.renderer; | |
63 | } | |
64 | if (field.textField !== undefined) { | |
65 | field.updateValue(renderer(me.getRecordValue(field.textField))); | |
66 | } else if(field.valueField !== undefined) { | |
67 | var used = me.getRecordValue(field.valueField); | |
68 | /*jslint confusion: true*/ | |
69 | /* string and int */ | |
70 | var max = field.maxField !== undefined ? me.getRecordValue(field.maxField) : 1; | |
71 | ||
72 | var calculate = me.fieldCalculator; | |
73 | ||
74 | if (Ext.isFunction(field.calculate)) { | |
75 | calculate = field.calculate; | |
76 | } | |
d3ecda12 | 77 | field.updateValue(renderer.call(field, used,max), calculate(used,max)); |
054ac1b8 DC |
78 | } |
79 | }, | |
80 | ||
81 | getStore: function() { | |
82 | var me = this; | |
83 | if (!me.rstore) { | |
84 | throw "there is no rstore"; | |
85 | } | |
86 | ||
87 | return me.rstore; | |
88 | }, | |
89 | ||
90 | updateTitle: function() { | |
91 | var me = this; | |
92 | me.setTitle(me.getRecordValue('name')); | |
93 | }, | |
94 | ||
95 | updateValues: function(store, records, success) { | |
96 | if (!success) { | |
97 | return; // do not update if store load was not successful | |
98 | } | |
99 | var me = this; | |
100 | var itemsToUpdate = me.query('pveInfoWidget'); | |
101 | ||
102 | itemsToUpdate.forEach(me.updateField, me); | |
103 | ||
104 | me.updateTitle(store); | |
105 | }, | |
106 | ||
107 | initComponent: function() { | |
108 | var me = this; | |
109 | ||
110 | if (!me.rstore) { | |
111 | throw "no rstore given"; | |
112 | } | |
113 | ||
114 | if (!me.title) { | |
115 | throw "no title given"; | |
116 | } | |
117 | ||
e7ade592 | 118 | Proxmox.Utils.monStoreErrors(me, me.rstore); |
054ac1b8 DC |
119 | |
120 | me.callParent(); | |
121 | ||
122 | me.mon(me.rstore, 'load', 'updateValues'); | |
123 | } | |
124 | ||
125 | }); |