highCharts使用中问题总结

              想出一张图表,数据是多条线体,45天的数据展示最近15天的。并且每次展示其中一条。可以切换时间看前面的 或者后面的。

 

最开始遇到的问题是,展示一条线体成功,但是在切换线体的时候,成功但是接着刷新到最开始的状态。

跟同事分析后发现是方法引用的问题。也就是每次在给highCharts赋值时要保证都是重新打开一个图表,但是数据切换了。

            数据的展示。遇到的问题是从ajax查询后台时,用request.setAttribute('' , '' ) 无效。jsp页面得不到数据。  也是可以理解。然后解决的方案是

在传值中加上。使用对象JSONObject 传值。

           

           事件的问题。对每条数据添加点击事件,使用到this.x 值。这是数据出现的下标值。

        具体代码如下:

var baseData = '';
var arrayIndex = 0 ,j=0;
var showLength = 15 ;
var flags = true ;
var getObjArray = new Array() ;
$(document).ready(function() {
$.ajax({
type : 'post',
url : url+'/dmsHistoryHchartsData/highChartsOneCheckData',
datatype : 'josn',
async : false,
data : '',
success : function(data) {
baseData = JSON.parse(data);
var array = baseData['array'] ;
if(array.length>0){
createHighCharts(0);
}else{
// 如果没有值 显示默认图
Highcharts.chart('container', {
chart: {
type: 'column'
},
title: {
text: '没有要展示的数据,请联系管理员'
},
xAxis: {
categories: ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas']
},
yAxis: {
min: 0,
title: {
text: 'Total fruit consumption'
},
stackLabels: {
enabled: true,
style: {
fontWeight: 'bold',
color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
}
}
},
legend: {
align: 'right',
x: -30,
verticalAlign: 'top',
y: 25,
floating: true,
backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || 'white',
borderColor: '#CCC',
borderWidth: 1,
shadow: false
},
tooltip: {
headerFormat: '<b>{point.x}</b><br/>',
pointFormat: '{series.name}: {point.y}<br/>Total: {point.stackTotal}'
},
plotOptions: {
column: {
stacking: 'normal',
dataLabels: {
enabled: true,
color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white'
}
}
},
series: [{
name: 'John',
data: [5, 3, 4, 7, 2]
}, {
name: 'Jane',
data: [2, 2, 3, 2, 1]
}, {
name: 'Joe',
data: [3, 4, 4, 2, 5]
}]
});
}
},
error : function() {
alert("ajax查询返回失败");
}
});

});

function createHighCharts(flagA){
var array = baseData['array'] ;
if('1'==flagA){
if(arrayIndex-1>=0){
arrayIndex-=1 ;
}else{
alert("当前是第一条线体");
return ;
}
}else if('2'==flagA){
if(arrayIndex+1>array.length){
alert("当前是最后一条线体");
return ;
}else{
arrayIndex = arrayIndex+1;
}
}
var map = baseData['Map'] ;
lineName= array[arrayIndex];
beanList = map[lineName] ;
var listLength = beanList.length ;

if(showLength>=listLength){
showLength = listLength;
flags =false ;
}else{
flags=true ;
}
j = beanList.length - showLength ;
changeColumn(0);
}
function changeColumn(flagsTwo){
if('1'==flagsTwo){
if(!flags){

alert("当前线体没有其他数据展示!");
return ;
}else{
if(j-5>=0){
j-=5;
}else{
alert("当前线体没有其他数据展示!");
return ;
}
}
}else if('2'==flagsTwo){

if(!flags){
alert("当前线体没有其他数据展示!");
return ;
}else{
if((j +showLength+5)> beanList.length ){
alert("当前线体没有其他数据展示!");
return ;
}else{
j+=5;
}
}
}
-- 构造展示的数据
timeArray = new Array(); // 时间数据
var lineCount = new Array(); // 线体产量
var goodsCount = new Array(); // 耗材消耗量
var dollarCount = new Array(); // 耗材消耗金额
getObjArray = new Array();
for(var i=0 ;i<showLength;i++ ){
var bean = beanList[i+j];
timeArray.push(bean.thisdayA); // 时间
lineCount.push(parseFloat(bean.milliA)); //线体产量千分比
goodsCount.push(parseFloat(bean.outWhQtA)); // 耗材消耗量
dollarCount.push(2);// 模拟数据
}
objArray = new Array() ;
var obj = new Object(); // 展示主数据
obj.name='费用';
obj.data = dollarCount ;
objArray.push(obj);
obj = new Object();
obj.name='耗材消耗';
obj.data = goodsCount ;
objArray.push(obj);
obj = new Object();
obj.name='线体产量';
obj.data = lineCount ;
objArray.push(obj);
basic();
}

function basic() {
var charts = Highcharts.chart('container', {
chart: {
type: 'column'
},
title: {
text: '产线' + lineName + '当日产量、耗材消耗量、费用展示'
},
xAxis: {
categories: timeArray
},
yAxis: {
min: 0,
title: {
text: 'Total fruit consumption'
},
stackLabels: {
enabled: true,
style: {
fontWeight: 'bold',
color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
}
}
},
legend: {
align: 'right',
x: -30,
verticalAlign: 'top',
y: 25,
floating: true,
backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || 'white',
borderColor: '#CCC',
borderWidth: 1,
shadow: false
},
tooltip: {
shared: true,
crosshairs: true,//十字线
valueSuffix: ''//标示框后缀加上%

},
plotOptions: {
column: {
stacking: 'normal',
dataLabels: {
enabled: true,
color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white'
}
},
series: { -- 添加点击事件
cursor: 'pointer',
point: {
events: {
click: function () {
alert('耗材明细' +( beanList[parseInt(this.x)+j].msgA));
}
}
}
}

},
series: objArray
});
}
 

转载于:https://www.cnblogs.com/a6948076/p/10381574.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于pjsip实现p2p语音对讲

目的 为实现跨网络的语音对讲&#xff0c;使位于NAT后的两个设备进行p2p的语音通讯&#xff0c;此处选用pjsip开源项目来实现。 未解决的问题&#xff1a;对称型的NAT无法实现p2p打洞&#xff0c;pjsip采用turn服务进行转发&#xff0c;不能称之为纯粹的p2p。 pjisp简介 PJ…

VS2017 启动调试报错无法启动程序 当前状态中非法

昨天还可以使用&#xff0c;今天就莫名报了这个错误&#xff0c;百度了一下&#xff1a; 1. 第一种尝试方法是右击解决方案中的项目(图标有带球的)&#xff0c;打开属性选择“WEB”选项&#xff0c;修改特定页为Home,结果还是报错。 2.我又关闭Windows防火墙&#xff0c;依旧报…

ABAP WRITE

1、空行 WRITE /. 2、AS CHECKBOX DATA: check1 TYPE c LENGTH 1 VALUE X, check2 TYPE c LENGTH 1 VALUE . START-OF-SELECTION. WRITE: / check1 AS CHECKBOX, Checkbox 1, / check2 AS CHECKBOX, Checkbox 2. AT LINE-SELECTION. READ: LINE 1 FIELD VALUE check1, LINE 2 …

java 星期几、得周一、得周日、上周、下周、相差、日期工具类

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 import org.apache.commons.lang3.StringUtils;import java.text.ParseException; import java.text.SimpleDateFormat; import java.ut…

苹果前CEO斯卡利变身创业导师:欲寻下个乔布斯

乔布斯和约翰斯卡利 导语&#xff1a;国外媒体今天撰文称&#xff0c;苹果前CEO约翰斯卡利(John Sculley)虽然早已离开苹果&#xff0c;但仍然活跃在科技行业。他现在将目光转向了医疗科技领域&#xff0c;希望从中挖掘出下一个乔布斯。 以下为文章全文&#xff1a; 下一个乔布…

记录一次kernel内存泄漏的查找定位过程

Bug描述&#xff1a;压力测试一个小工程时发现内存逐渐减少&#xff0c;10个小时后出现OOM Bug定位过程&#xff1a; 对整个工程模块进行分解&#xff0c;逐步缩小范围&#xff0c;由于整个工程包括几个相对独立的小模块&#xff0c;而整个工程采用单进程多线程的模型&#x…

python3.6+selenium_Testsuits测试套件

#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2018/11/23 11:23 # File : unittest_test2_2.pyTestsuits测试套件 import unittest from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.commo…

PBRT笔记(7)——反射模型

基础术语 表面反射可以分为4大类&#xff1a; diffuse 漫反射glossy specular 镜面反射高光perfect specular 完美反射高光retro-reflective distributions 后反射分布几何坐标系以及工具函数 pbrt中的反射是在反射坐标系中进行计算的。坐标系由着色点处法向量与两个切向量组成…

Linux grep命令、Linux cd命令、Linux pwd命令

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Linux grep命令用于查找文件里符合条件的字符串。 grep指令用于查找内容包含指定的范本样式的文件&#xff0c;如果发现某文件的内容符…

忠告:创业公司与大公司正面竞争易死

移动互联网的兴起给了创业公司足够的发展空间&#xff0c;也提供了一个相对公平的竞争平台。但机遇永远与挑战并存。   对于初创公司&#xff0c;最大的挑战莫过于在移动互联网大潮中生存下来。IDG资本合伙人高翔认为&#xff0c;初创公司不要和大公司正面竞争&#xff0c;应…

海康萤石摄像机远程监控机制分析

背景介绍 有一个远程监控的需求&#xff0c;正常情况下采用服务器转发视频流对服务器要求很高&#xff0c;所以p2p看似是一个比较好的方案&#xff0c;但是p2p打洞却不是一件容易的事情&#xff0c;所以打算分析下海康萤石摄像机远程监控的机制&#xff0c;是否采用了p2p的方式…

实体类中存在List集合,怎么在xml文件中,对应

public class AppointmentDTO {/**订单id**/private String appointmentId;/**订单里面的商品list**/private List<CommodityShowInAppoinment> list;/**订单里面的商品数量**/private Integer count;/**订单实际付款的金额**/private Float totalMoney; } 怎么弄呢&…

git管理复杂项目代码

背景 我初学前端的时候接触git&#xff0c;那时候只要会add/commit什么的就好了&#xff0c;网上的教程大多都停留在从头到尾一个个介绍git的命令&#xff0c;关于各种用法&#xff0c;特别是多个分支来回交叉冲突的实际处理&#xff0c;很少有这方面的介绍&#xff0c;经过很多…

实现一个通用的生产者消费者队列(c语言版本)

背景&#xff1a;笔者之前一直从事嵌入式音视频相关的开发工作&#xff0c;对于音视频的数据的处理&#xff0c;生产者消费者队列必不可少&#xff0c;而如何实现一个高效稳定的生产者消费者队列则十分重要&#xff0c;不过按照笔者从业的经验&#xff0c;所看到的现象&#xf…

美媒:小米新浪达成合作 采取行动对抗腾讯

来自美媒的报道称&#xff0c;两家中国最具发展潜力的科技公司&#xff0c;新浪和小米将会共同合作&#xff0c;结合各自的通信应用程序来共同对抗移动通信的挑战&#xff0c;尤其是拥有2亿用户的强劲对手微信。 来自中国的消息称&#xff0c;这次新浪与小米的合作将会涉及到新…

Linux expr命令、Linux wc命令、Linux let 命令

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 expr命令是一个手工命令行计数器&#xff0c;用于在UNIX/LINUX下求表达式变量的值&#xff0c;一般用于整数值&#xff0c;也可用于字符…

【English】六、am,is,are 分别用在什么地方

is&#xff1a;第三人称单数am&#xff1a;第一人称单数are&#xff1a;第二人称单数&#xff0c;第一、二、三人称的复数 用于第一人称, I am ......(我是.......)用于第三人称, He is ......(他是......) 或She is ......(她是......), It is ......(它是.......)用于第二人…

误删了公司数据库,但我还是活下来了

专栏 | 九章算法 网址 | www.jiuzhang.com 上周我与同事们进行了一次关于职业生涯中搞砸了一些事情的简短谈话。这确实会沦为他人笑柄&#xff0c;却更给我们带来了珍贵的教训。重要的是&#xff0c;我们应该分享那些曾经的错误&#xff0c;这样其他人就可以从其中学习。下文是…

改良程序的11技巧

有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点&#xff0c;程序你只写一次&#xff0c;但以后会无数次的阅读。当你第二天回头来看你的代码时&#xff0c;你就要开始阅读它了。当你把代码拿给其他人看时&#xff0c;他必须阅读你的代码。因此&#…

历时四年,给Google提交的Android Framework Bug终于被Fixed了

历时四年&#xff0c;Google终于修复了一个我发现的Android Framework Bug 2014年在做一个Android终端设备开发过程中&#xff0c;发现了一个Android Framework层的Bug&#xff0c;给Google提交了issue和解决方案&#xff0c;和外界传言一致Google一般不太在意个人开发者提交的…