玩转Highcharts图表库系列(三) 给曲线加上点击事件

来源:互联网 发布:淘宝卖包包店铺名字 编辑:程序博客网 时间:2024/06/10 20:51

一般来说,曲线反应的是某个属性在一段时间内的波动变化。在Highchart曲线图上,把鼠标放到曲线上,那么随着鼠标的移动,该属性值也会显示出来方便查看。但是如果这个属性是一个复合属性,它还有更细致的组成部分需要被详细读出,那么最便捷的操作就是在曲线的这个点上进行点击操作了。

这个曲线是对总用电功率的分时展示,点击其中的任何点,都会更新一个弹出窗口,在弹出窗口里显示该点时刻用电功率排名前三的房间。

这里写图片描述

在Highcharts里添加这样的点击操作是设置Event字段属性,代码如下:

plotOptions: {                    spline: {                        allowPointSelect: true,                        cursor: 'pointer', //鼠标移到图表上时鼠标的样式                         enableMouseTracking: true, //鼠标移到图表上时是否显示提示框                         events: {//监听点的鼠标事件                              click: function () {                                var x = (event.point.x - (Date.UTC(theYear, theMonth, theDay, 0, 0, 0, 0) + localOffset))/1000;                                var hour = Math.floor(x / 3600) > 9 ? Math.floor(x / 3600) : '0' + Math.floor(x / 3600);                                var minute = Math.floor((x % 3600) / 60) > 9 ? Math.floor((x % 3600) / 60) : '0' + Math.floor((x % 3600) / 60);                                var second = (x % 60) > 9 ? (x % 60) : '0' + (x % 60);                                var time = hour + ':' + minute + ':' + second;                                //alert(hour + ':' + minute + ':' + second + ',' + event.point.y);                                ShowMaxSubValues(time);                            }                            //mouseOver:function() {                        },                        lineWidth: 2,                        states: {                            hover: {                                lineWidth: 3                            }                        },                        marker: {                            enabled: false                        }                    }                },

这里获取鼠标点击点对应的X轴时间值,然后调用ShowMaxSubValues()方法。

// 获取某时刻即时功率最大的三个电表名称和数值,供鼠标点击曲线图数值时显示        function ShowMaxSubValues(time) {                var date; // 日期                if (navtab.getSelectedTabItemID() == "tabitem1") { // 实时功率页面,取当前日期                    date = new Date().format('yyyy-MM-dd');                } else { // 历史功率Tab2页面,取历史时间                    date = $("#time").val();                }                var parms = "time=" + date + " " + time + ".000"; // 构造datetime                LG.ajax({                    type: 'AjaxRealTimePower',                    method: 'GetMaxValuesAtTime',                    data: parms,                    success: function (ajaxData) {                        var json = ajaxData.topvaluesjson;                        // 设置浮动框内的内容                        if ((json != null) && !$('#dragableBox').hasClass("hidden")) {                            $("#boxName").text(date + " " + time);                            if (json.length > 0)                                $("#POWER1").text(json[0].StationName + ' : ' + json[0].py);                            else                                $("#POWER1").text("无当日数据");                            if (json.length > 1)                                $("#POWER2").text(json[1].StationName + ' : ' + json[1].py);                            else                                $("#POWER2").text("");                            if (json.length > 2)                                $("#POWER3").text(json[2].StationName + ' : ' + json[2].py);                            else                                $("#POWER3").text("");                        }                    }                });        }

持续更新中。。。

玩转Highcharts图表库系列(一) 显示多条曲线
玩转Highcharts图表库系列(二) 沿X轴设置不同的背景色分辨带
玩转Highcharts图表库系列(三) 给曲线加上点击事件
玩转Highcharts图表库系列(四) 散点图和曲线图的混合显示

0 0
原创粉丝点击