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.pswp.cn/news/449927.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449927.shtml
英文地址,請注明出處:http://en.pswp.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一般不太在意個人開發者提交的…