]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/panel/RRDView.js
highlight errors in grids
[pve-manager.git] / www / manager6 / panel / RRDView.js
CommitLineData
2f0885f1
DM
1Ext.define('PVE.panel.RRDView', {
2 extend: 'Ext.panel.Panel',
3 alias: 'widget.pveRRDView',
4
5 initComponent : function() {
6 var me = this;
7
8 if (!me.datasource) {
9 throw "no datasource specified";
10 }
11
12 if (!me.rrdurl) {
13 throw "no rrdurl specified";
14 }
15
16 var stateid = 'pveRRDTypeSelection';
17 var sp = Ext.state.Manager.getProvider();
18 var stateinit = sp.get(stateid);
19
20 if (stateinit) {
21 if(stateinit.timeframe !== me.timeframe || stateinit.cf !== me.rrdcffn){
22 me.timeframe = stateinit.timeframe;
23 me.rrdcffn = stateinit.cf;
24 }
25 }
26
27 if (!me.timeframe) {
28 if(stateinit && stateinit.timeframe){
29 me.timeframe = stateinit.timeframe;
30 }else{
31 me.timeframe = 'hour';
32 }
33 }
34
35 if (!me.rrdcffn) {
36 if(stateinit && stateinit.rrdcffn){
37 me.rrdcffn = stateinit.cf;
38 }else{
39 me.rrdcffn = 'AVERAGE';
40 }
41 }
42
43
44 var datasource = me.datasource;
45
46 // fixme: dcindex??
47 var dcindex = 0;
48 var create_url = function() {
49 var url = me.rrdurl + "?ds=" + datasource +
50 "&timeframe=" + me.timeframe + "&cf=" + me.rrdcffn +
51 "&_dc=" + dcindex.toString();
52 dcindex++;
53 return url;
54 };
55
56
57 Ext.apply(me, {
58 layout: 'fit',
59 html: {
60 tag: 'img',
61 width: 800,
62 height: 200,
63 src: create_url()
64 },
65 applyState : function(state) {
66 if (state && state.id) {
67 if(state.timeframe !== me.timeframe || state.cf !== me.rrdcffn){
68 me.timeframe = state.timeframe;
69 me.rrdcffn = state.cf;
70 me.reload_task.delay(10);
71 }
72 }
73 }
74 });
75
76 me.callParent();
77
78 me.reload_task = new Ext.util.DelayedTask(function() {
79 if (me.rendered) {
80 try {
81 var html = {
82 tag: 'img',
83 width: 800,
84 height: 200,
85 src: create_url()
86 };
87 me.update(html);
88 } catch (e) {
89 // fixme:
90 console.log(e);
91 }
92 me.reload_task.delay(30000);
93 } else {
94 me.reload_task.delay(1000);
95 }
96 });
97
98 me.reload_task.delay(30000);
99
100 me.on('destroy', function() {
101 me.reload_task.cancel();
102 });
103
104 var state_change_fn = function(prov, key, value) {
105 if (key == stateid) {
106 me.applyState(value);
107 }
108 };
109
110 me.mon(sp, 'statechange', state_change_fn);
111 }
112});