UNPKG

chartnew.js

Version:

Simple HTML5 Charts using the canvas element

158 lines (136 loc) 6.26 kB
// JavaScript Document function addHatch(data,param) { // check conditions; if(data.datasets.length !=2) return; // find xBegin and xEnd values; if(typeof data.xBegin == "undefined") data.xBegin=1 * data.labels[0]; if(typeof data.xEnd == "undefined") data.xEnd=1 * data.labels[data.labels.length - 1]; if(typeof data.xBegin != "number" || isNaN(data.xBegin))data.xBegin=0; if (data.xEnd <= data.xBegin || isNaN(data.xEnd)) data.xEnd = data.xBegin + 100; var mouseDetection; if (typeof param.mouseDetection != "undefined" ){ mouseDetection=param.mouseDetection; } else if (typeof param.annotateDisplay != "undefined") { mouseDetection=param.annotateDisplay; } else mouseDetection=false; nb_hatch_lines= (typeof param.nb_hatch_lines != "undefined" ? param.nb_hatch_lines : 100) data.datasets[2] ={ data : [], xPos : [], origin : [], linkType : 1, mouseDetection : mouseDetection, animation : (typeof param.animation != "undefined" ? param.animation : true), inGraphDataShow: (typeof param.positive_inGraphDataShow != "undefined" ? param.positive_inGraphDataShow : false), annotateDisplay : (typeof param.positive_annotateDisplay != "undefined" ? param.positive_annotateDisplay : false), title : (typeof param.positive_title != "undefined" ? param.positive_title : ""), strokeColor : (typeof param.positive_strokeColor != "undefined" ? param.positive_strokeColor : "red"), datasetStrokeWidth : (typeof param.positive_datasetStrokeWidth != "undefined" ? param.positive_datasetStrokeWidth : 2), datasetStrokeStyle : (typeof param.positive_datasetStrokeStyle != "undefined" ? param.positive_datasetStrokeStyle : "solid"), pointColor : (typeof param.positive_pointColor != "undefined" ? param.positive_pointColor : "rgba(0,0,0,0)"), pointStrokeColor : (typeof param.positive_pointStrokeColor != "undefined" ? param.positive_pointStrokeColor : "rgba(0,0,0,0)") }; data.datasets[3] ={ data : [], xPos : [], origin : [], linkType : 1, highLight : false, mouseDetection : mouseDetection, animation : (typeof param.animation != "undefined" ? param.animation : true), inGraphDataShow: (typeof param.negative_inGraphDataShow != "undefined" ? param.negative_inGraphDataShow : false), annotateDisplay : (typeof param.negative_annotateDisplay != "undefined" ? param.negative_annotateDisplay : false), title : (typeof param.negative_title != "undefined" ? param.negative_title : ""), strokeColor : (typeof param.negative_strokeColor != "undefined" ? param.negative_strokeColor : "blue"), datasetStrokeWidth : (typeof param.negative_datasetStrokeWidth != "undefined" ? param.negative_datasetStrokeWidth : 2), datasetStrokeStyle : (typeof param.negative_datasetStrokeStyle != "undefined" ? param.negative_datasetStrokeStyle : "solid"), pointColor : (typeof param.negative_pointColor != "undefined" ? param.negative_pointColor : "rgba(0,0,0,0)"), pointStrokeColor : (typeof param.negative_pointStrokeColor != "undefined" ? param.negative_pointStrokeColor : "rgba(0,0,0,0)") }; var v1,v2,vpos; var cntp=0,cntn=0; for(var i=0;i<nb_hatch_lines;i++) { vpos=data.xBegin+i*(data.xEnd-data.xBegin)/(nb_hatch_lines-1); v1=setDataVal(vpos,0,data); v2=setDataVal(vpos,1,data); if(v1>v2) { data.datasets[2].xPos[cntp]=vpos; data.datasets[2].origin[cntp]=v1; data.datasets[2].data[cntp]=v2; cntp++; } else { data.datasets[3].xPos[cntn]=vpos; data.datasets[3].origin[cntn]=v1; data.datasets[3].data[cntn]=v2; cntn++; } } var tmpdata=data.datasets[0]; data.datasets[0]=data.datasets[1]; data.datasets[1]=data.datasets[2]; data.datasets[2]=data.datasets[3]; data.datasets[3]=tmpdata; tmpdata=data.datasets[0]; data.datasets[0]=data.datasets[1]; data.datasets[1]=data.datasets[2]; data.datasets[2]=data.datasets[3]; data.datasets[3]=tmpdata; if(data.datasets[1].xPos.length==0) { data.datasets[1]=data.datasets[2]; data.datasets[2]=data.datasets[3]; data.datasets.pop(); } if(data.datasets[0].xPos.length==0) { data.datasets[0]=data.datasets[1]; data.datasets[1]=data.datasets[2]; if(data.datasets.length==4)data.datasets[2]=data.datasets[3]; data.datasets.pop(); } function setDataVal(xpos,i,data) { var pt0x, pt1x, pt0y, pt1y,rtval; if(xpos<data.xBegin) return null; if(xpos>data.xEnd) return null; if(Math.abs(xpos-data.xBegin)<0.0001)return data.datasets[i].data[0]; if(typeof data.datasets[i].xPos=="undefined") { if(xpos==data.xBegin)return data.datasets[i].data[0]; var curpos=(xpos-data.xBegin)/((data.xEnd-data.xBegin)/(data.labels.length-1)); if(Math.abs(curpos-Math.round(curpos))<0.0001) return data.datasets[i].data[Math.round(curpos)]; else { pt0x=data.xBegin+Math.floor(curpos)*((data.xEnd-data.xBegin)/(data.labels.length-1)); pt1x=data.xBegin+Math.ceil(curpos)*((data.xEnd-data.xBegin)/(data.labels.length-1)); pt0y=data.datasets[i].data[Math.floor(curpos)]; pt1y=data.datasets[i].data[Math.ceil(curpos)]; } } else { var j=data.datasets[i].xPos.length-1; while(j>=0 && typeof pt0x=="undefined") { if(typeof (1*data.datasets[i].xPos[j])=="number" && typeof (1*data.datasets[i].data[j])=="number" && typeof pt0x == "undefined") { if(Math.abs(xpos-1*data.datasets[i].xPos[j])<0.0001) return data.datasets[i].data[j]; if(xpos>=1*data.datasets[i].xPos[j]) { pt0x=1*data.datasets[i].xPos[j]; pt0y=1*data.datasets[i].data[j]; } } j--; } if(typeof pt0x != "undefined") { j++; while(j<data.datasets[i].xPos.length && typeof pt1x=="undefined") { if(typeof (1*data.datasets[i].xPos[j])=="number" && typeof (1*data.datasets[i].data[j])=="number" && typeof pt1x == "undefined") { if(xpos<1*data.datasets[i].xPos[j]) { pt1x=1*data.datasets[i].xPos[j]; pt1y=1*data.datasets[i].data[j]; } } j++; } } } if(typeof pt0x != "undefined" && typeof pt1x != "undefined") { var a=(pt0y-pt1y)/(pt0x-pt1x); var b=pt0y-a*pt0x; rtval=a*xpos+b; } return rtval; } };