]>
git.proxmox.com Git - extjs.git/blob - extjs/examples/kitchensink/classic/samples/view/charts/line/RealTimeController.js
1 Ext
.define('KitchenSink.view.charts.line.RealTimeController', {
2 extend
: 'Ext.app.ViewController',
3 alias
: 'controller.line-real-time',
5 onTimeChartRendered: function (chart
) {
6 chart
.getStore().removeAll();
8 this.timeChartTask
= Ext
.TaskManager
.start({
9 run
: this.addNewTimeData
,
16 onAxisLabelRender: function (axis
, label
, layoutContext
) { // only render interger values
17 return Math
.abs(layoutContext
.renderer(label
) % 1) < 1e-5 ? Math
.round(label
) : '';
20 onTimeChartDestroy: function () {
21 if (this.timeChartTask
) {
22 Ext
.TaskManager
.stop(this.timeChartTask
);
26 onNumberChartRendered: function (chart
) {
27 chart
.getStore().removeAll();
28 this.addNewNumberData();
29 this.numberChartTask
= Ext
.TaskManager
.start({
30 run
: this.addNewNumberData
,
37 onNumberChartDestroy: function () {
38 if (this.numberChartTask
) {
39 Ext
.TaskManager
.stop(this.numberChartTask
);
43 onTabChange: function (tabPanel
, newCard
, oldCard
) {
44 if (newCard
.getItemId() === 'numeric') {
45 Ext
.TaskManager
.stop(this.timeChartTask
);
46 Ext
.TaskManager
.start(this.numberChartTask
);
48 Ext
.TaskManager
.stop(this.numberChartTask
);
49 Ext
.TaskManager
.start(this.timeChartTask
);
53 getNextValue: function (previousValue
, min
, max
, delta
) {
58 delta
= Ext
.Number
.randomInt(-delta
, delta
);
60 if (Ext
.isNumber(previousValue
)) {
61 return Ext
.Number
.constrain(previousValue
+ delta
, min
, max
);
63 return Ext
.Number
.randomInt(min
, max
);
66 addNewTimeData: function() {
68 chart
= me
.lookupReference('time-chart'),
69 store
= chart
.getStore(),
70 count
= store
.getCount(),
71 xAxis
= chart
.getAxes()[1],
77 lastRecord
= store
.getAt(count
- 1);
78 xValue
= lastRecord
.get('xValue') + second
;
79 if (xValue
- me
.startTime
> visibleRange
) {
80 me
.startTime
= xValue
- visibleRange
;
81 xAxis
.setMinimum(this.startTime
);
82 xAxis
.setMaximum(xValue
);
86 metric1
: me
.getNextValue(lastRecord
.get('metric1')),
87 metric2
: me
.getNextValue(lastRecord
.get('metric2'))
91 chart
.animationSuspended
= true;
92 me
.startTime
= Math
.floor(Ext
.Date
.now() / second
) * second
;
93 xAxis
.setMinimum(me
.startTime
);
94 xAxis
.setMaximum(me
.startTime
+ visibleRange
);
97 xValue
: this.startTime
,
98 metric1
: me
.getNextValue(),
99 metric2
: me
.getNextValue()
101 chart
.animationSuspended
= false;
105 addNewNumberData: function() {
106 var chart
= this.lookupReference('number-chart'),
107 store
= chart
.getStore(),
108 count
= store
.getCount(),
109 xAxis
= chart
.getAxes()[1],
117 lastRecord
= store
.getAt(count
- 1);
118 xValue
= lastRecord
.get('xValue') + 1;
119 if (xValue
> visibleRange
) {
120 xAxis
.setMinimum(xValue
- visibleRange
);
121 xAxis
.setMaximum(xValue
);
125 yValue
: this.getNextValue(lastRecord
.get('yValue'), minY
, maxY
, deltaY
)
129 chart
.animationSuspended
= true;
131 xAxis
.setMaximum(visibleRange
);
135 yValue
: this.getNextValue((minY
+ maxY
) / 2, minY
, maxY
)
137 chart
.animationSuspended
= false;