1 Ext.require('Ext.chart.*');
3 Ext.onReady(function () {
5 var generateData = (function() {
8 date = new Date(2011, 1, 1),
16 date: Ext.Date.add(date, Ext.Date.DAY, i++),
17 visits: min(100, max(last? last.visits + (random() - 0.5) * 20 : random() * 100, 0)),
18 views: min(100, max(last? last.views + (random() - 0.5) * 10 : random() * 100, 0)),
19 users: min(100, max(last? last.users + (random() - 0.5) * 20 : random() * 100, 0))
21 last = data[data.length -1];
29 groupBy: 'year,month,day'
37 var axis = chart.axes.get(1),
38 selectedGroup = groupOp[+group];
39 axis.dateFormat = selectedGroup.dateFormat;
40 axis.groupBy = selectedGroup.groupBy;
44 var store = Ext.create('Ext.data.JsonStore', {
45 fields: ['date', 'visits', 'views', 'users'],
49 var intr = setInterval(function() {
50 var gs = generateData();
51 var toDate = timeAxis.toDate,
52 lastDate = gs[gs.length - 1].date,
53 markerIndex = chart.markerIndex || 0;
54 if (+toDate < +lastDate) {
56 timeAxis.toDate = lastDate;
57 timeAxis.fromDate = Ext.Date.add(Ext.Date.clone(timeAxis.fromDate), Ext.Date.DAY, 1);
58 chart.markerIndex = markerIndex;
63 Ext.create('Ext.Window', {
68 title: 'Live Animated Chart',
69 renderTo: Ext.getBody(),
73 style: 'background:#fff',
83 fields: ['views', 'visits', 'users'],
84 title: 'Number of Hits',
98 groupBy: 'year,month,day',
102 fromDate: new Date(2011, 1, 1),
103 toDate: new Date(2011, 1, 7),
114 renderer: function(v) { return v >> 0; },
115 'text-anchor': 'middle'
129 renderer: function(v) { return v >> 0; },
130 'text-anchor': 'middle'
144 renderer: function(v) { return v >> 0; },
145 'text-anchor': 'middle'
154 chart = Ext.getCmp('chartCmp');
155 var timeAxis = chart.axes.get(1);