zoukankan      html  css  js  c++  java
  • Extjs 4 动态显示折线图 按秒显示

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                + request.getServerName() + ":" + request.getServerPort()
                + path + "/";
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <title>Test</title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <jsp:include page="/common/Extjs.jsp"></jsp:include>
            <link rel="stylesheet" type="text/css" href="/css/storageSpaceBar.css" />
            <script type="text/javascript" src="/app/plugins/jquery.min.js"></script>
            <script>
    
            Ext.onReady(function () {
                var chart, timeAxis;
                var nowDate = new Date(Ext.Date.format(new Date(),'Y-m-d H:i:s'));  //当前时间
                //产生数据
                var generateData = (function() {
                    var data = [], i = 0,
                    last = false,
                        date = nowDate,
                        min = Math.min,
                        max = Math.max,
                        random = Math.random;
                    return function() {
                        data = data.slice();
                        data.push({
                            date:  Ext.Date.add(date, Ext.Date.SECOND, i++),
                            visits: min(100, max(last? last.visits + (random() - 0.5) * 20 : random() * 100, 0))
                        });
                         last = data[data.length -1];
                        return data;
                    };
                })();
    
                var store = Ext.create('Ext.data.JsonStore', {
                    fields: ['date', 'visits'],
                    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.SECOND, 1);//修改开始时间+1
                        chart.markerIndex = markerIndex;
                    }
                    store.loadData(gs);
                }, 1000);
    
                var win = Ext.create('Ext.window.Window', {
                     800,
                    height: 300,
                    autoShow: true,
                    layout: 'fit',
                    items: [{
                        xtype: 'chart',
                        style: 'background:#fff',
                        itemId: 'chartCmp',
                        store: store,
                        shadow: false,
                        animate: true,
                        axes: [{
                            type: 'Numeric',
                            minimum: 0,
                            maximum: 100,
                            position: 'left',
                            grid:true,
                            fields: ['visits']
                        }, {
                            type: 'Time',
                            position: 'bottom',
                            fields: 'date',
                            dateFormat: 'H:i:s',//
                            groupBy: 'year,month,day,hour,minute,second',
                            step: [Ext.Date.SECOND, 1], //默认为天
                            grid:true,
                            aggregateOp: 'sum',
                            constrain: true,
                            fromDate: nowDate,    //当前时间
                            toDate: Ext.Date.add(nowDate,Ext.Date.SECOND,20)//6秒后时间
                        }],
                        series: [{
                            type: 'line',
                            showMarkers:false, 
                            smooth: false,
                            axis: ['left', 'bottom'],
                            xField: 'date',
                            yField: 'visits'
                        }]
                    }]
                });
                chart = win.child('#chartCmp');
                timeAxis = chart.axes.get(1);
            });
            </script>
        </head>
        <body>
        </body>
    </html>

    官方example按天数走得,稍微修改了一下弄成了时分秒,按秒更新的(留存参考)

    效果图:

  • 相关阅读:
    sublime如何自动保存
    什么是DQL、DML、DDL、DCL
    Linux Shall命令入门
    省市区地址三级联动jQuery插件Distpicker使用
    ThinkPHP3.2设置404跳转页面
    File.separator
    HiddenHttpMethodFilter
    SpringMVC环境搭建
    JVM介绍(一)
    some characters cannot be mapped using iso-8859-1 character encoding
  • 原文地址:https://www.cnblogs.com/shinubi/p/5207343.html
Copyright © 2011-2022 走看看