jqplot通过ajax动态画折线图的方法及思路


Posted in Javascript onDecember 08, 2013

jqplot通过ajax动态画折线图的方法及思路

效果如图所示,每个五秒钟图会移动一次(其实是重新画了一张图),能显示所监控的cpu信息。

pastCpuInfomation函数主要用来显示一张折线图

updateCpuPic函数把5秒前的图去掉,重新根据现有数据画一张图。

updateCpuInfomation函数 把最新的点加入存储折线的数组中

再接着在界面中弄两个定时器,让他们每个5秒执行一次updateCpuPic,每个1分钟执行一次updateCpuInfomation,图画就动起来了。

PS:代码中执行好多操作前都会在服务器中获取下服务器的当前时间 ,ajax写得有点乱,我也不知道规不规范,实现动态图的方法好像也不是太好,最好是能直接更新线的数据的,希望朋友们多多指教!画表的代码已经标红(30行到60行)

var past_cpu_service_statistics_line = new Array();
var plot;
function pastCpuInfomation() {
    // 历史cpu数据
    // 本地时间    $.ajax({
        type: "POST",
        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
        url: globalObj.path + '/server/getServerCurrentTime.htm',
        success: function(currentTime){
            console.log("取到服务器时间"+currentTime);
            //获取历史cpu数据
            $.ajax({
                type: "POST",
                contentType: "application/x-www-form-urlencoded;charset=UTF-8",
                url: globalObj.path + '/server/getPastCpuMonitorData.htm',
                // startTime endtime 是伪数据,时间在后台获取
                data: "hostName=" + "login.cheos.cn",
                success: function(result){
                    for (key in result) {
                        // 去得到时间转化为int
                        var intKey = parseInt(key);
                        var transferTime = new Date(intKey);
                        console.log("transferTime:"+ key + "----resut:" + transferTime);
                        var onePoint = [transferTime, result[key] ];
                        past_cpu_service_statistics_line.push(onePoint);
                    }
                   <span style="color:#ff0000;"> // 历史cpu情况表
                    plot= $.jqplot('cpuHistory',[ past_cpu_service_statistics_line ],
                            {
                                axes: {
                                    xaxis: {
                                        label: '时间',
                                        renderer: $.jqplot.DateAxisRenderer,
                                        tickOptions: {
                                            formatString: '%Y-%#m-%d %H:%M'
                                        },
                                        min : (currentTime -1000 * 60 * 60),
                                        max: (currentTime),
                                    // 横(纵)坐标显示的最小值
                                    // ticks:['']
                                    },
                                    yaxis: {
                                        label: 'cpu监控',
                                    }
                                },
                                highlighter: {
                                    show: true,
                                    sizeAdjust : 7.5
                                },
                                cursor: {
                                    show: false
                                }
                            });
 </span>
                },
                error: function(textStatus){
                    alert("获取监控信息失败!");
                }
            });
            //获取历史cpu数据ajax结束
        },
        error: function(textStatus){
            alert("取历史cpu数据时候获取服务器时间失败!");
        }
    });     
}
function updateCpuPic() {
    console.log("正在更新cpu视图");
//先取得服务器时间,用来画横坐标
    $.ajax({
        type: "POST",
        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
        url: globalObj.path + '/server/getServerCurrentTime.htm',
        success: function(result){
            var intKey =parseInt(result);
            var transferTime = new Date(intKey);
            console.log("获取到服务器时间:"+result+"------"+transferTime);
        //操作图表
            //如果已经存在图表,则摧毁
            if (plot) {
                // plot.destory();
                $("#cpuHistory").unbind();
                $("#cpuHistory").empty();
                plot= null;
            }
            //重新画图表
            plot= $.jqplot('cpuHistory',[ past_cpu_service_statistics_line ], {
                axes: {
                    xaxis: {
                        label: '时间',
                        renderer: $.jqplot.DateAxisRenderer,
                        tickOptions: {
                            formatString: '%Y-%#m-%d %H:%M'
                        },
                        min: (result - 1000 * 60 * 60),
                        max: (result),
                    // 横(纵)坐标显示的最小值
                    // ticks:['']
                    },
                    yaxis: {
                        label: 'cpu监控',
                    }
                },
                highlighter: {
                    show: true,
                    sizeAdjust: 7.5
                },
                cursor: {
                    show: false
                },
                replot: {
                    resetAxes: true
                }
            });
        },
        error: function(textStatus){
            alert("获取服务器时间失败!");
        }
    });
 
}
function updateCpuInfomation() {
    $.ajax({
        type: "POST",
        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
        url: globalObj.path + '/server/getLatestCpuMonitorData.htm',
        data: "hostName=" + "login.cheos.cn",
        success: function(result){
            // 更新一次数据
            for (key in result) {
                var intKey = parseInt(key);
                var transferTime = new Date(intKey);
                console.log("----------------更新cpu信息---:" + key + "----更新时间:" + transferTime);
                var onePoint = [transferTime, result[key] ];
                past_cpu_service_statistics_line.push(onePoint);
            }
            // 更新图表
        //  updateCpuPic();
        },
        error: function(textStatus){
            alert("更新cpu信息失败!");
        }
    });
}
Javascript 相关文章推荐
关于javascript document.createDocumentFragment()
Apr 04 Javascript
jQeury淡入淡出需要注意的问题
Sep 08 Javascript
javascript中length属性的探索
Jul 31 Javascript
jQuery实现不断闪烁文字的方法
May 15 Javascript
jQuery寻找n以内完全数的方法
Jun 24 Javascript
jQuery实现带滑动条的菜单效果代码
Aug 26 Javascript
Bootstrap中的Panel和Table全面解析
Jun 13 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
Nov 16 Javascript
浅谈Javascript常用正则表达式应用
Mar 08 Javascript
Node.js Stream ondata触发时机与顺序的探索
Mar 08 Javascript
js使用cookie实现记住用户名功能示例
Jun 13 Javascript
layui 解决form表单点击无反应的问题
Oct 25 Javascript
JavaScript 32位整型无符号操作示例
Dec 08 #Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
Dec 08 #Javascript
js快速排序的实现代码
Dec 08 #Javascript
Javascript中匿名函数的多种调用方式总结
Dec 06 #Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
Dec 06 #Javascript
JavaScript作用域与作用域链深入解析
Dec 06 #Javascript
深入解析JavaScript中的变量作用域
Dec 06 #Javascript
You might like
php实现的http请求封装示例
2016/11/08 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
php时间戳转换代码详解
2019/08/04 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
Jquery 自定义动画概述及示例
2013/03/29 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
Three.js基础学习教程
2017/11/16 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
Python中的CURL PycURL使用例子
2014/06/01 Python
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
Python中Class类用法实例分析
2015/11/12 Python
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
python爬取m3u8连接的视频
2018/02/28 Python
python__new__内置静态方法使用解析
2020/01/07 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
python字典按照value排序方法
2020/12/28 Python
澳大利亚排名第一的儿童在线玩具商店:Toy Galaxy
2018/10/06 全球购物
五一劳动节活动记录
2014/03/23 职场文书
假释思想汇报范文
2014/10/11 职场文书
党校毕业个人总结
2015/02/28 职场文书
运动会通讯稿50字
2015/07/20 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书