]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/panel/RunningChart.js
2 * This is a running chart widget you add time datapoints to it, and we only
3 * show the last x of it used for ceph performance charts
5 Ext
.define('PVE.widget.RunningChart', {
6 extend
: 'Ext.container.Container',
7 alias
: 'widget.pveRunningChart',
21 tpl
: '<h3>{title}:</h3>'
53 textBaseline
: 'middle',
65 renderer: function( tooltip
, record
, ctx
) {
66 let me
= this.getChart();
67 if (!record
|| !record
.data
) return;
68 let date
= new Date(record
.data
.time
);
69 let value
= me
.up().renderer(record
.data
.val
);
71 me
.up().title
+ ': ' + value
+ '<br />' +
72 Ext
.Date
.format(date
, 'H:i:s')
96 // the renderer for the tooltip and last value, default just the value
97 renderer
: Ext
.identityFn
,
99 // show the last x seconds default is 5 minutes
102 addDataPoint: function(value
, time
) {
105 var now
= new Date();
106 var begin
= new Date(now
.getTime() - (1000*panel
.timeFrame
));
109 time
: time
|| now
.getTime(),
113 // delete all old records when we have 20 times more datapoints
114 // than seconds in our timeframe (so even a subsecond graph does
115 // not trigger this often)
117 // records in the store do not take much space, but like this,
118 // we prevent a memory leak when someone has the site open for a long time
119 // with minimal graphical glitches
120 if (me
.store
.count() > panel
.timeFrame
* 20) {
121 var oldData
= me
.store
.getData().createFiltered(function(item
) {
122 return item
.data
.time
< begin
.getTime();
125 me
.store
.remove(oldData
.getRange());
128 me
.timeaxis
.setMinimum(begin
.getTime());
129 me
.timeaxis
.setMaximum(now
.getTime());
130 me
.valuesprite
.setText(panel
.renderer(value
|| 0).toString());
131 me
.valuesprite
.setAttributes({
132 x
: me
.getWidth() - 15,
138 setTitle: function(title
) {
140 var me
= this.getComponent('title');
141 me
.update({title
: title
});
144 initComponent: function(){
149 me
.getComponent('title').update({title
: me
.title
});
151 me
.chart
= me
.getComponent('chart');
152 me
.chart
.timeaxis
= me
.chart
.getAxes()[1];
153 me
.chart
.valuesprite
= me
.chart
.getSurface('chart').get('valueSprite');
155 me
.chart
.series
[0].setStyle({