Repository navigation
Expand file tree
/
Copy pathlive-data.js
More file actions
89 lines (76 loc) · 2.06 KB
/
Copy pathlive-data.js
File metadata and controls
89 lines (76 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import Controller from '@ember/controller';
import { later } from '@ember/runloop';
import { A } from '@ember/array';
import EmberObject, { action } from '@ember/object';
import debug from 'debug';
const log = debug('ember-cli-plotly:dummy:live-data');
const interval = 1000;
export default class ExamplesLiveDataController extends Controller.extend({
init() {
this._super(...arguments);
this.setProperties({
_updating: false,
chartData: A(),
//chartLayout: {},
//chartConfig: {},
plotlyEvents: ['plotly_restyle'],
currentTrace: 0,
currentIndex: 0
});
}
}) {
update() {
log('update firing');
if (!this._updating) {
return;
}
const currentTrace = this.currentTrace;
const currentIndex = this.currentIndex;
log(`Update called: currentTrace=${currentTrace}, currentIndex=${currentIndex}`, this.get(`chartData`));
if (!this.get(`chartData.${currentTrace}`)) {
this.chartData.pushObject(EmberObject.create({
x: A(),
y: A()
}));
}
// Generate some data
this.set(`chartData.${currentTrace}.x.${currentIndex}`, currentIndex);
this.set(`chartData.${currentTrace}.y.${currentIndex}`, 100*Math.random());
// Force update
this.set('chartData.triggerUpdate', !this.chartData.triggerUpdate);
if (currentIndex >= 5) {
this.set('currentTrace', currentTrace + 1);
this.set('currentIndex', 0);
}
else {
this.set('currentIndex', 1 + currentIndex);
}
later(this, 'update', interval);
}
@action
clear() {
log(`Clear clicked`);
this.setProperties({
currentTrace: 0,
currentIndex: 0
});
this.chartData.clear();
}
@action
start() {
log(`Start clicked`, this._updating);
if (this._updating === false) {
this.set('_updating', true);
later(this, 'update', interval);
}
}
@action
stop() {
log(`Stop clicked`);
this.set('_updating', false);
}
@action
onPlotlyEvent(eventName, eventData) {
log(`onPlotlyEvent got ${eventName} -->`, eventData, this);
}
}