| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 | Ext.require([    'Ext.window.Window',    'Ext.chart.*']);Ext.onReady(function () {    var chart;    var generateData = (function() {        var data = [], i = 0,            last = false,            date = new Date(2011, 1, 1),            seconds = +date,            min = Math.min,            max = Math.max,            random = Math.random;        return function() {            data = data.slice();            data.push({                date:  Ext.Date.add(date, Ext.Date.DAY, i++),                visits: min(100, max(last? last.visits + (random() - 0.5) * 20 : random() * 100, 0)),                views: min(100, max(last? last.views + (random() - 0.5) * 10 : random() * 100, 0)),                veins: min(100, max(last? last.veins + (random() - 0.5) * 20 : random() * 100, 0))            });            last = data[data.length -1];            return data;        };    })();    var group = false,        groupOp = [{            dateFormat: 'M d',            groupBy: 'year,month,day'        }, {            dateFormat: 'M',            groupBy: 'year,month'        }];    function regroup() {        group = !group;        var axis = chart.axes.get(1),            selectedGroup = groupOp[+group];        axis.dateFormat = selectedGroup.dateFormat;        axis.groupBy = selectedGroup.groupBy;        chart.redraw();    }    var store = Ext.create('Ext.data.JsonStore', {        fields: ['date', 'visits', 'views', 'veins'],        data: generateData()    });    var intr = setInterval(function() {        var gs = generateData();        var toDate = timeAxis.toDate,            lastDate = gs[gs.length - 1].date,            markerIndex = chart.markerIndex || 0;        if (+toDate < +lastDate) {            markerIndex = 1;            timeAxis.toDate = lastDate;            timeAxis.fromDate = Ext.Date.add(Ext.Date.clone(timeAxis.fromDate), Ext.Date.DAY, 1);            chart.markerIndex = markerIndex;        }        store.loadData(gs);    }, 100);    Ext.create('Ext.Window', {        width: 800,        height: 600,        minHeight: 400,        minWidth: 550,        maximizable: true,        title: 'Live Updated Chart',        layout: 'fit',        items: [{            xtype: 'chart',            style: 'background:#fff',            store: store,            id: 'chartCmp',            axes: [{                type: 'Numeric',                grid: true,                minimum: 0,                maximum: 100,                position: 'left',                fields: ['views', 'visits', 'veins'],                title: 'Number of Hits',                grid: {                    odd: {                        fill: '#dedede',                        stroke: '#ddd',                        'stroke-width': 0.5                    }                }            }, {                type: 'Time',                position: 'bottom',                fields: 'date',                title: 'Day',                dateFormat: 'M d',                groupBy: 'year,month,day',                aggregateOp: 'sum',                constrain: true,                fromDate: new Date(2011, 1, 1),                toDate: new Date(2011, 1, 7)            }],            series: [{                type: 'line',                axis: ['left', 'bottom'],                xField: 'date',                yField: 'visits',                label: {                    display: 'none',                    field: 'visits',                    renderer: function(v) { return v >> 0; },                    'text-anchor': 'middle'                },                markerConfig: {                    radius: 5,                    size: 5                }            },{                type: 'line',                axis: ['left', 'bottom'],                xField: 'date',                yField: 'views',                label: {                    display: 'none',                    field: 'visits',                    renderer: function(v) { return v >> 0; },                    'text-anchor': 'middle'                },                markerConfig: {                    radius: 5,                    size: 5                }            },{                type: 'line',                axis: ['left', 'bottom'],                xField: 'date',                yField: 'veins',                label: {                    display: 'none',                    field: 'visits',                    renderer: function(v) { return v >> 0; },                    'text-anchor': 'middle'                },                markerConfig: {                    radius: 5,                    size: 5                }            }]        }]    }).show();    chart = Ext.getCmp('chartCmp');    var timeAxis = chart.axes.get(1);});
 |