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 相关文章推荐
JS 动态加载脚本的4种方法
May 05 Javascript
window.parent与window.openner区别介绍
Apr 12 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
Jan 07 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
May 27 Javascript
用jquery模仿的a的title属性的例子
Oct 22 Javascript
D3.js中data(), enter() 和 exit()的问题详解
Aug 17 Javascript
JS自定义选项卡函数及用法实例分析
Sep 02 Javascript
JS代码实现百度地图 画圆 删除标注
Oct 12 Javascript
Angularjs验证用户输入的字符串是否为日期时间
Jun 01 Javascript
微信小程序实现滚动消息通知
Feb 02 Javascript
React+TypeScript+webpack4多入口配置详解
Aug 08 Javascript
让你30分钟快速掌握vue3教程
Oct 26 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 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
vue h5移动端禁止缩放代码
2019/10/28 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
Python中for循环控制语句用法实例
2015/06/02 Python
python批量修改图片大小的方法
2018/07/24 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
python3 logging日志封装实例
2020/04/08 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
热能动力工程毕业生自荐信
2013/11/07 职场文书
个人委托书如何写
2014/09/25 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
2015年度物流工作总结
2015/04/30 职场文书
《将心比心》教学反思
2016/02/23 职场文书
Python读取和写入Excel数据
2022/04/20 Python