rgraph-rails 4.64 → 4.67

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -8
  3. data/lib/rgraph-rails/version.rb +1 -1
  4. data/vendor/assets/javascripts/RGraph.bar.js +1 -1
  5. data/vendor/assets/javascripts/RGraph.bipolar.js +11 -11
  6. data/vendor/assets/javascripts/RGraph.common.dynamic.js +8 -6
  7. data/vendor/assets/javascripts/RGraph.common.sheets.js +6 -4
  8. data/vendor/assets/javascripts/RGraph.drawing.background.js +1 -1
  9. data/vendor/assets/javascripts/RGraph.drawing.marker1.js +1 -1
  10. data/vendor/assets/javascripts/RGraph.drawing.marker2.js +1 -1
  11. data/vendor/assets/javascripts/RGraph.drawing.marker3.js +1 -1
  12. data/vendor/assets/javascripts/RGraph.drawing.poly.js +4 -6
  13. data/vendor/assets/javascripts/RGraph.drawing.text.js +1 -1
  14. data/vendor/assets/javascripts/RGraph.drawing.xaxis.js +1 -1
  15. data/vendor/assets/javascripts/RGraph.drawing.yaxis.js +1 -1
  16. data/vendor/assets/javascripts/RGraph.fuel.js +1 -1
  17. data/vendor/assets/javascripts/RGraph.funnel.js +1 -1
  18. data/vendor/assets/javascripts/RGraph.gantt.js +1 -1
  19. data/vendor/assets/javascripts/RGraph.gauge.js +8 -8
  20. data/vendor/assets/javascripts/RGraph.hbar.js +1 -1
  21. data/vendor/assets/javascripts/RGraph.hprogress.js +1 -1
  22. data/vendor/assets/javascripts/RGraph.line.js +1 -1
  23. data/vendor/assets/javascripts/RGraph.meter.js +4 -6
  24. data/vendor/assets/javascripts/RGraph.odo.js +1 -1
  25. data/vendor/assets/javascripts/RGraph.pie.js +1 -1
  26. data/vendor/assets/javascripts/RGraph.radar.js +1 -1
  27. data/vendor/assets/javascripts/RGraph.rose.js +1 -1
  28. data/vendor/assets/javascripts/RGraph.rscatter.js +1 -1
  29. data/vendor/assets/javascripts/RGraph.scatter.js +1 -1
  30. data/vendor/assets/javascripts/RGraph.semicircularprogress.js +1 -1
  31. data/vendor/assets/javascripts/RGraph.svg.bar.js +25 -16
  32. data/vendor/assets/javascripts/RGraph.svg.bipolar.js +104 -0
  33. data/vendor/assets/javascripts/RGraph.svg.common.core.js +73 -32
  34. data/vendor/assets/javascripts/RGraph.svg.common.key.js +4 -3
  35. data/vendor/assets/javascripts/RGraph.svg.common.sheets.js +6 -4
  36. data/vendor/assets/javascripts/RGraph.svg.common.tooltips.js +2 -1
  37. data/vendor/assets/javascripts/RGraph.svg.funnel.js +7 -7
  38. data/vendor/assets/javascripts/RGraph.svg.gauge.js +33 -0
  39. data/vendor/assets/javascripts/RGraph.svg.hbar.js +15 -12
  40. data/vendor/assets/javascripts/RGraph.svg.line.js +43 -29
  41. data/vendor/assets/javascripts/RGraph.svg.pie.js +15 -13
  42. data/vendor/assets/javascripts/RGraph.svg.radar.js +7 -7
  43. data/vendor/assets/javascripts/RGraph.svg.rose.js +13 -13
  44. data/vendor/assets/javascripts/RGraph.svg.scatter.js +14 -8
  45. data/vendor/assets/javascripts/RGraph.svg.semicircularprogress.js +7 -7
  46. data/vendor/assets/javascripts/RGraph.svg.waterfall.js +13 -10
  47. data/vendor/assets/javascripts/RGraph.thermometer.js +1 -1
  48. data/vendor/assets/javascripts/RGraph.vprogress.js +1 -1
  49. data/vendor/assets/javascripts/RGraph.waterfall.js +3 -3
  50. metadata +4 -2
@@ -3,21 +3,22 @@ RGraph=window.RGraph||{isRGraph:true};RGraph.SVG=RGraph.SVG||{};(function(win,do
3
3
  {var RG=RGraph,ua=navigator.userAgent,ma=Math,win=window,doc=document;RG.SVG.Scatter=function(conf)
4
4
  {this.set=function(name,value)
5
5
  {if(arguments.length===1&&typeof name==='object'){for(i in arguments[0]){if(typeof i==='string'){var ret=RG.SVG.commonSetter({object:this,name:i,value:arguments[0][i]});name=ret.name;value=ret.value;this.set(name,value);}}}else{var ret=RG.SVG.commonSetter({object:this,name:name,value:value});name=ret.name;value=ret.value;this.properties[name]=value;if(name==='colors'){this.originalColors=RG.SVG.arrayClone(value);this.colorsParsed=false;}}
6
- return this;};this.id=conf.id;this.uid=RG.SVG.createUID();this.container=document.getElementById(this.id);this.layers={};this.svg=RG.SVG.createSVG({object:this,container:this.container});this.isRGraph=true;this.width=Number(this.svg.getAttribute('width'));this.height=Number(this.svg.getAttribute('height'));this.data=conf.data;this.type='scatter';this.coords=[];this.colorsParsed=false;this.originalColors={};this.gradientCounter=1;this.sequential=0;RG.SVG.OR.add(this);this.container.style.display='inline-block';this.properties={gutterLeft:35,gutterRight:35,gutterTop:35,gutterBottom:35,backgroundColor:null,backgroundImage:null,backgroundImageAspect:'none',backgroundImageStretch:true,backgroundImageOpacity:null,backgroundImageX:null,backgroundImageY:null,backgroundImageW:null,backgroundImageH:null,backgroundGrid:true,backgroundGridColor:'#ddd',backgroundGridLinewidth:1,backgroundGridHlines:true,backgroundGridHlinesCount:null,backgroundGridVlines:true,backgroundGridVlinesCount:null,backgroundGridBorder:true,backgroundGridDashed:false,backgroundGridDotted:false,backgroundGridDashArray:null,xmax:0,tickmarksStyle:'cross',tickmarksSize:7,colors:['black'],line:false,lineColors:1,lineLinewidth:'black',yaxis:true,yaxisTickmarks:true,yaxisTickmarksLength:3,yaxisColor:'black',yaxisScale:true,yaxisLabels:null,yaxisLabelsOffsetx:0,yaxisLabelsOffsety:0,yaxisLabelsCount:5,yaxisUnitsPre:'',yaxisUnitsPost:'',yaxisStrict:false,yaxisDecimals:0,yaxisPoint:'.',yaxisThousand:',',yaxisRound:false,yaxisMax:null,yaxisMin:0,yaxisFormatter:null,xaxis:true,xaxisTickmarks:true,xaxisTickmarksLength:5,xaxisLabels:null,xaxisLabelsPosition:'section',xaxisLabelsPositionEdgeTickmarksCount:null,xaxisColor:'black',xaxisLabelsOffsetx:0,xaxisLabelsOffsety:0,xaxisMin:0,xaxisMax:null,textColor:'black',textFont:'sans-serif',textSize:12,textBold:false,textItalic:false,labelsAboveFont:null,labelsAboveSize:null,labelsAboveBold:null,labelsAboveItalic:null,labelsAboveColor:null,labelsAboveBackground:'rgba(255,255,255,0.7)',labelsAboveBackgroundPadding:2,labelsAboveXUnitsPre:null,labelsAboveXUnitsPost:null,labelsAboveXPoint:null,labelsAboveXThousand:null,labelsAboveXFormatter:null,labelsAboveXDecimals:null,labelsAboveXDecimalsTrim:null,labelsAboveYUnitsPre:null,labelsAboveYUnitsPost:null,labelsAboveYPoint:null,labelsAboveYThousand:null,labelsAboveYFormatter:null,labelsAboveYDecimals:null,labelsAboveOffsetx:0,labelsAboveOffsety:-10,labelsAboveHalign:'center',labelsAboveValign:'bottom',labelsAboveSeperator:',',tooltipsOverride:null,tooltipsEffect:'fade',tooltipsCssClass:'RGraph_tooltip',tooltipsEvent:'mousemove',highlightStroke:'rgba(0,0,0,0)',highlightFill:'rgba(255,255,255,0.7)',highlightLinewidth:1,title:'',titleSize:16,titleX:null,titleY:null,titleHalign:'center',titleValign:null,titleColor:'black',titleFont:null,titleBold:false,titleItalic:false,titleSubtitle:'',titleSubtitleSize:10,titleSubtitleX:null,titleSubtitleY:null,titleSubtitleHalign:'center',titleSubtitleValign:null,titleSubtitleColor:'#aaa',titleSubtitleFont:null,titleSubtitleBold:false,titleSubtitleItalic:false,key:null,keyColors:null,keyOffsetx:0,keyOffsety:0,keyTextOffsetx:0,keyTextOffsety:-1,keyTextSize:null,keyTextBold:null,keyTextItalic:null};RG.SVG.getGlobals(this);for(i in conf.options){if(typeof i==='string'){this.set(i,conf.options[i]);}}
6
+ return this;};this.id=conf.id;this.uid=RG.SVG.createUID();this.container=document.getElementById(this.id);this.layers={};this.svg=RG.SVG.createSVG({object:this,container:this.container});this.isRGraph=true;this.width=Number(this.svg.getAttribute('width'));this.height=Number(this.svg.getAttribute('height'));this.data=conf.data;this.type='scatter';this.coords=[];this.coords2=[];this.colorsParsed=false;this.originalColors={};this.gradientCounter=1;this.sequential=0;RG.SVG.OR.add(this);this.container.style.display='inline-block';this.properties={gutterLeft:35,gutterRight:35,gutterTop:35,gutterBottom:35,backgroundColor:null,backgroundImage:null,backgroundImageAspect:'none',backgroundImageStretch:true,backgroundImageOpacity:null,backgroundImageX:null,backgroundImageY:null,backgroundImageW:null,backgroundImageH:null,backgroundGrid:true,backgroundGridColor:'#ddd',backgroundGridLinewidth:1,backgroundGridHlines:true,backgroundGridHlinesCount:null,backgroundGridVlines:true,backgroundGridVlinesCount:null,backgroundGridBorder:true,backgroundGridDashed:false,backgroundGridDotted:false,backgroundGridDashArray:null,xmax:0,tickmarksStyle:'cross',tickmarksSize:7,colors:['black'],line:false,lineColors:1,lineLinewidth:1,errorbarsColor:'black',errorbarsLinewidth:1,errorbarsCapwidth:10,yaxis:true,yaxisTickmarks:true,yaxisTickmarksLength:3,yaxisColor:'black',yaxisScale:true,yaxisLabels:null,yaxisLabelsOffsetx:0,yaxisLabelsOffsety:0,yaxisLabelsCount:5,yaxisUnitsPre:'',yaxisUnitsPost:'',yaxisStrict:false,yaxisDecimals:0,yaxisPoint:'.',yaxisThousand:',',yaxisRound:false,yaxisMax:null,yaxisMin:0,yaxisFormatter:null,xaxis:true,xaxisTickmarks:true,xaxisTickmarksLength:5,xaxisLabels:null,xaxisLabelsPosition:'section',xaxisLabelsPositionEdgeTickmarksCount:10,xaxisColor:'black',xaxisLabelsOffsetx:0,xaxisLabelsOffsety:0,xaxisMin:0,xaxisMax:null,xaxisLabelsCount:10,xaxisUnitsPre:'',xaxisUnitsPost:'',xaxisMax:null,xaxisMin:0,xaxisPoint:'.',xaxisRound:false,xaxisThousand:',',xaxisDecimals:0,xaxisFormatter:null,textColor:'black',textFont:'sans-serif',textSize:12,textBold:false,textItalic:false,labelsAboveFont:null,labelsAboveSize:null,labelsAboveBold:null,labelsAboveItalic:null,labelsAboveColor:null,labelsAboveBackground:'rgba(255,255,255,0.7)',labelsAboveBackgroundPadding:2,labelsAboveXUnitsPre:null,labelsAboveXUnitsPost:null,labelsAboveXPoint:null,labelsAboveXThousand:null,labelsAboveXFormatter:null,labelsAboveXDecimals:null,labelsAboveXDecimalsTrim:null,labelsAboveYUnitsPre:null,labelsAboveYUnitsPost:null,labelsAboveYPoint:null,labelsAboveYThousand:null,labelsAboveYFormatter:null,labelsAboveYDecimals:null,labelsAboveOffsetx:0,labelsAboveOffsety:-10,labelsAboveHalign:'center',labelsAboveValign:'bottom',labelsAboveSeperator:',',tooltipsOverride:null,tooltipsEffect:'fade',tooltipsCssClass:'RGraph_tooltip',tooltipsEvent:'mousemove',highlightStroke:'rgba(0,0,0,0)',highlightFill:'rgba(255,255,255,0.7)',highlightLinewidth:1,title:'',titleSize:16,titleX:null,titleY:null,titleHalign:'center',titleValign:null,titleColor:'black',titleFont:null,titleBold:false,titleItalic:false,titleSubtitle:null,titleSubtitleSize:10,titleSubtitleX:null,titleSubtitleY:null,titleSubtitleHalign:'center',titleSubtitleValign:null,titleSubtitleColor:'#aaa',titleSubtitleFont:null,titleSubtitleBold:false,titleSubtitleItalic:false,key:null,keyColors:null,keyOffsetx:0,keyOffsety:0,keyTextOffsetx:0,keyTextOffsety:-1,keyTextSize:null,keyTextBold:null,keyTextItalic:null,bubble:false,bubbleMaxValue:null,bubbleMaxRadius:null,bubbleColorsSolid:false,errorbars:null,errorbarsColor:'black',errorbarsLinewidth:1,errorbarsCapwidth:10,};RG.SVG.getGlobals(this);for(i in conf.options){if(typeof i==='string'){this.set(i,conf.options[i]);}}
7
7
  if(this.data[0]&&!RG.SVG.isArray(this.data[0])){this.data=[];this.data[0]=conf.data;}
8
8
  if(RG.SVG.FX&&typeof RG.SVG.FX.decorate==='function'){RG.SVG.FX.decorate(this);}
9
9
  var prop=this.properties;if(typeof prop.xaxisMin==='string'){prop.xaxisMin=RG.SVG.parseDate(prop.xaxisMin);}
10
10
  if(typeof prop.xaxisMax==='string'){prop.xaxisMax=RG.SVG.parseDate(prop.xaxisMax);}
11
11
  for(var i=0;i<this.data.length;++i){for(var j=0;j<this.data[i].length;++j){if(typeof this.data[i][j].x==='string'){this.data[i][j].x=RG.SVG.parseDate(this.data[i][j].x);}}}
12
12
  this.draw=function()
13
- {RG.SVG.fireCustomEvent(this,'onbeforedraw');RG.SVG.createDefs(this);this.graphWidth=this.width-prop.gutterLeft-prop.gutterRight;this.graphHeight=this.height-prop.gutterTop-prop.gutterBottom;RG.SVG.resetColorsToOriginalValues({object:this});this.parseColors();for(var ds=0,max=0;ds<this.data.length;++ds){for(var dp=0;dp<this.data[ds].length;++dp){max=ma.max(max,this.data[ds][dp].y);}}
13
+ {RG.SVG.fireCustomEvent(this,'onbeforedraw');this.width=Number(this.svg.getAttribute('width'));this.height=Number(this.svg.getAttribute('height'));RG.SVG.createDefs(this);this.graphWidth=this.width-prop.gutterLeft-prop.gutterRight;this.graphHeight=this.height-prop.gutterTop-prop.gutterBottom;this.coords=[];this.coords2=[];RG.SVG.resetColorsToOriginalValues({object:this});this.parseColors();for(var ds=0,max=0;ds<this.data.length;++ds){for(var dp=0;dp<this.data[ds].length;++dp){max=ma.max(max,this.data[ds][dp].y+(this.data[ds][dp].errorbar?(typeof this.data[ds][dp].errorbar==='number'?this.data[ds][dp].errorbar:this.data[ds][dp].errorbar.max):0));}}
14
14
  if(typeof prop.yaxisMax==='number'){max=prop.yaxisMax;}
15
15
  if(prop.yaxisMin==='mirror'||prop.yaxisMin==='middle'||prop.yaxisMin==='center'){var mirrorScale=true;prop.yaxisMin=0;}
16
16
  this.scale=RG.SVG.getScale({object:this,numlabels:prop.yaxisLabelsCount,unitsPre:prop.yaxisUnitsPre,unitsPost:prop.yaxisUnitsPost,max:max,min:prop.yaxisMin,point:prop.yaxisPoint,round:prop.yaxisRound,thousand:prop.yaxisThousand,decimals:prop.yaxisDecimals,strict:typeof prop.yaxisMax==='number',formatter:prop.yaxisFormatter});if(mirrorScale){this.scale=RG.SVG.getScale({object:this,numlabels:prop.yaxisLabelsCount,unitsPre:prop.yaxisUnitsPre,unitsPost:prop.yaxisUnitsPost,max:this.scale.max,min:this.scale.max* -1,point:prop.yaxisPoint,round:false,thousand:prop.yaxisThousand,decimals:prop.yaxisDecimals,strict:typeof prop.yaxisMax==='number',formatter:prop.yaxisFormatter});}
17
- this.max=this.scale.max;this.min=this.scale.min;prop.yaxisMax=this.scale.max;prop.yaxisMin=this.scale.min;RG.SVG.drawBackground(this);RG.SVG.drawXAxis(this);RG.SVG.drawYAxis(this);var dataset_group=RGraph.SVG.create({svg:this.svg,type:'g',parent:this.svg.all,attr:{className:'scatter_datasets_'+this.uid}});for(var i=0;i<this.data.length;++i){this.drawPoints({index:i,data:this.data[i],group:dataset_group});if(prop.line==true||(typeof prop.line==='object'&&prop.line[i]==true)){this.drawLine({index:i,coords:this.coords[i]});}}
17
+ this.max=this.scale.max;this.min=this.scale.min;prop.yaxisMax=this.scale.max;prop.yaxisMin=this.scale.min;RG.SVG.drawBackground(this);RG.SVG.drawXAxis(this);RG.SVG.drawYAxis(this);var dataset_group=RGraph.SVG.create({svg:this.svg,type:'g',parent:this.svg.all,attr:{className:'scatter_datasets_'+this.uid}});for(var i=0;i<this.data.length;++i){this.drawPoints({index:i,data:this.data[i],group:dataset_group});if(prop.line===true||(typeof prop.line==='object'&&prop.line[i]===true)){this.drawLine({index:i,coords:this.coords2[i]});}}
18
18
  if(typeof prop.key!==null&&RG.SVG.drawKey){RG.SVG.drawKey(this);}else if(!RGraph.SVG.isNull(prop.key)){alert('The drawKey() function does not exist - have you forgotten to include the key library?');}
19
19
  RG.SVG.fireCustomEvent(this,'ondraw');return this;};this.drawPoints=function(opt)
20
- {var index=opt.index,data=opt.data,group=opt.group;this.coords[index]=[];var group=RG.SVG.create({svg:this.svg,type:'g',parent:group,attr:{className:'scatter_dataset_'+index+'_'+this.uid}});for(var i=0;i<data.length;++i){var point=data[i];if(typeof point.x==='number'&&typeof point.y==='number'){var ret=this.drawSinglePoint({dataset:data,datasetIdx:index,point:point,index:i,group:group,sequential:this.sequential++});this.coords[index][i]=[ret.x,ret.y];}
20
+ {var index=opt.index,data=opt.data,group=opt.group;if(!this.coords2[index]){this.coords2[index]=[];}
21
+ var group=RG.SVG.create({svg:this.svg,type:'g',parent:group,attr:{className:'scatter_dataset_'+index+'_'+this.uid}});for(var i=0;i<data.length;++i){var point=data[i];if(typeof point.x==='number'&&typeof point.y==='number'){var ret=this.drawSinglePoint({dataset:data,datasetIdx:index,point:point,index:i,group:group,sequential:this.sequential});this.coords.push({x:ret.x,y:ret.y,z:ret.size,type:ret.type,element:ret.mark,object:this});this.coords2[index][i]={x:ret.x,y:ret.y,z:ret.size,type:ret.type,element:ret.mark,object:this};this.sequential++}
21
22
  if((typeof data[i].tooltip==='string'&&data[i].tooltip)||(typeof data[i].tooltip==='number')){data[i].tooltip=String(data[i].tooltip);if(prop.tooltipsEvent!=='mousemove'){prop.tooltipsEvent='click';}
22
23
  if(!group_tooltip_hotspots){var group_tooltip_hotspots=RG.SVG.create({svg:this.svg,parent:this.svg.all,type:'g',attr:{className:'rgraph-scatter-tooltip-hotspots'}});}
23
24
  var rect=RG.SVG.create({svg:this.svg,parent:this.svg.all,type:'rect',parent:group_tooltip_hotspots,attr:{x:ret.x-(ret.size/2),y:ret.y-(ret.size/2),width:ret.size,height:ret.size,fill:'transparent',stroke:'transparent','stroke-width':0},style:{cursor:'pointer'}});ret.mark.hotspot=rect;(function(dataset,index,seq,obj)
@@ -31,7 +32,8 @@ if(typeof conf.type==='string'){}else if(typeof prop.tickmarksStyle==='string'){
31
32
  if(typeof conf.size!=='number'&&typeof prop.tickmarksSize==='number'){conf.size=prop.tickmarksSize;}else if(typeof conf.size!=='number'&&typeof prop.tickmarksSize==='object'&&typeof prop.tickmarksSize[datasetIdx]==='number'){conf.size=prop.tickmarksSize[datasetIdx];}
32
33
  if(typeof conf.color==='string'){}else if(typeof prop.colors[datasetIdx]==='string'){conf.color=prop.colors[datasetIdx];}else{conf.color='black';}
33
34
  if(typeof conf.opacity==='undefined'){conf.opacity=1;}else if(typeof conf.opacity==='number'){}
34
- if(prop.bubble){return this.drawBubble(opt,conf);}
35
+ prop.errorbars=[];for(var ds=0,max=0;ds<this.data.length;++ds){for(var idx=0;idx<this.data[ds].length;++idx){prop.errorbars.push(this.data[ds][idx].errorbar);}}
36
+ this.drawErrorbar({object:this,dataset:datasetIdx,index:index,group:group,sequential:seq,x:coordX,y:coordY,valueX:valueX,valueY:valueY,parent:group});if(prop.bubble){return this.drawBubble(opt,conf);}
35
37
  switch(conf.type){case'image:'+conf.type.substr(6):var src=conf.type.substr(6);var img=new Image();img.src=src;var mark=RG.SVG.create({svg:this.svg,type:'image',parent:group,attr:{preserveAspectRatio:'xMidYMid meet','xlink:href':src}});img.onload=function()
36
38
  {var x=coordX-(img.width/2),y=coordY-(img.height/2),w=img.width,h=img.height;mark.setAttribute('x',x);mark.setAttribute('y',y);mark.setAttribute('width',w);mark.setAttribute('height',h);if(mark&&mark.hotspot){mark.hotspot.setAttribute('x',x);mark.hotspot.setAttribute('y',y);mark.hotspot.setAttribute('width',w);mark.hotspot.setAttribute('height',h);}};break;case'triangle':var mark=RG.SVG.create({svg:this.svg,type:'path',parent:group,attr:{d:'M {1} {2} L {3} {4} L {5} {6}'.format(coordX-(conf.size/2),coordY+(conf.size/2),coordX,coordY-(conf.size/2),coordX+(conf.size/2),coordY+(conf.size/2)),fill:conf.color,'fill-opacity':conf.opacity}});break;case'plus':var mark=RG.SVG.create({svg:this.svg,type:'path',parent:group,attr:{d:'M {1} {2} L {3} {4} M {5} {6} L {7} {8}'.format(coordX-(conf.size/2),coordY,coordX+(conf.size/2),coordY,coordX,coordY-(conf.size/2),coordX,coordY+(conf.size/2)),stroke:conf.color,'stroke-opacity':conf.opacity}});break;case'square':case'rect':var mark=RG.SVG.create({svg:this.svg,type:'rect',parent:group,attr:{x:coordX-(conf.size/2),y:coordY-(conf.size/2),width:conf.size,height:conf.size,fill:conf.color,'fill-opacity':conf.opacity}});break;case'dot':case'circle':var mark=RG.SVG.create({svg:this.svg,type:'circle',parent:group,attr:{cx:coordX,cy:coordY,r:conf.size/2,fill:conf.color,'fill-opacity':conf.opacity}});break;case'cross':default:var mark=RG.SVG.create({svg:this.svg,type:'path',parent:group,attr:{d:'M {1} {2} L {3} {4} M {5} {6} L {7} {8}'.format(coordX-(conf.size/2),coordY-(conf.size/2),coordX+(conf.size/2),coordY+(conf.size/2),coordX-(conf.size/2),coordY+(conf.size/2),coordX+(conf.size/2),coordY-(conf.size/2)),stroke:conf.color,'stroke-opacity':conf.opacity}});break;}
37
39
  if(typeof conf.above==='string'||(typeof conf.above!=='string'&&conf.above)){this.drawLabelsAbove({point:conf,coordX:coordX,coordY:coordY});}
@@ -39,7 +41,7 @@ mark.setAttribute('data-index',index);mark.setAttribute('data-dataset',datasetId
39
41
  {var size=(conf.z/prop.bubbleMaxValue)*prop.bubbleMaxRadius;var color=RG.SVG.parseColorRadial({object:this,color:prop.bubbleColorsSolid?conf.color:'Gradient(white:'+conf.color+')',cx:opt.coordx+(size/4),cy:opt.coordy-(size/4),fx:opt.coordx+(size/4),fy:opt.coordy-(size/4),r:size*1.5});var circle=RG.SVG.create({svg:this.svg,type:'circle',attr:{cx:opt.coordx,cy:opt.coordy,r:size,fill:color,'fill-opacity':conf.opacity}});circle.setAttribute('data-index',opt.index);circle.setAttribute('data-dataset',opt.datasetIdx);circle.setAttribute('data-original-opacity',conf.opacity);circle.setAttribute('data-original-color',conf.color);circle.setAttribute('data-original-coordx',opt.coordx);circle.setAttribute('data-original-coordy',opt.coordy);circle.setAttribute('data-size',size);circle.setAttribute('data-sequential',opt.sequential);circle.setAttribute('data-type','bubble');return{x:opt.coordx,y:opt.coordy,z:opt.coordz};};this.drawLine=function(opt)
40
42
  {var linewidth=1,color='black';if(typeof prop.lineLinewidth==='object'&&typeof prop.lineLinewidth[opt.index]==='number'){linewidth=prop.lineLinewidth[opt.index];}else if(typeof prop.lineLinewidth==='number'){linewidth=prop.lineLinewidth;}else{linewidth=1;}
41
43
  if(typeof prop.lineColors==='object'&&prop.lineColors[opt.index]){color=prop.lineColors[opt.index];}else if(prop.colors[opt.index]==='string'){color=prop.colors[opt.index];}else{color='black';}
42
- for(var i=0,path='';i<this.coords[opt.index].length;++i){path+='{1} {2} {3} '.format(i===0?'M':'L',this.coords[opt.index][i][0],this.coords[opt.index][i][1]);}
44
+ for(var i=0,path='';i<this.coords2[opt.index].length;++i){path+='{1} {2} {3} '.format(i===0?'M':'L',this.coords2[opt.index][i].x,this.coords2[opt.index][i].y);}
43
45
  RG.SVG.create({svg:this.svg,type:'path',parent:this.svg.all,attr:{d:path,fill:'transparent',stroke:color,'stroke-width':linewidth,'stroke-linecap':'round','stroke-linejoin':'round'}});};this.getXCoord=function(value)
44
46
  {var x;if(value>prop.xaxisMax){return null;}
45
47
  if(value<prop.xaxisMin){return null;}
@@ -49,11 +51,15 @@ var y,xaxispos=prop.xaxispos;if(value<this.scale.min){return null;}
49
51
  y=((value-this.scale.min)/(this.scale.max-this.scale.min));y*=(this.height-prop.gutterTop-prop.gutterBottom);y=this.height-prop.gutterBottom-y;return y;};this.highlight=function(rect)
50
52
  {rect.setAttribute('fill',prop.highlightFill);RG.SVG.REG.set('highlight',rect);};this.drawLabelsAbove=function(opt)
51
53
  {var conf=opt.point,coordX=opt.coordX,coordY=opt.coordY;if(typeof conf.above==='string'){var str=conf.above;}else{conf.x=RG.SVG.numberFormat({object:this,num:conf.x.toFixed(prop.labelsAboveXDecimals),prepend:typeof prop.labelsAboveXUnitsPre==='string'?prop.labelsAboveXUnitsPre:null,append:typeof prop.labelsAboveXUnitsPost==='string'?prop.labelsAboveXUnitsPost:null,point:typeof prop.labelsAboveXPoint==='string'?prop.labelsAboveXPoint:null,thousand:typeof prop.labelsAboveXThousand==='string'?prop.labelsAboveXThousand:null,formatter:typeof prop.labelsAboveXFormatter==='function'?prop.labelsAboveXFormatter:null,decimals_trim:prop.labelsAboveXDecimalsTrim});conf.y=RG.SVG.numberFormat({object:this,num:conf.y.toFixed(prop.labelsAboveYDecimals),prepend:typeof prop.labelsAboveYUnitsPre==='string'?prop.labelsAboveYUnitsPre:null,append:typeof prop.labelsAboveYUnitsPost==='string'?prop.labelsAboveYUnitsPost:null,point:typeof prop.labelsAboveYPoint==='string'?prop.labelsAboveYPoint:null,thousand:typeof prop.labelsAboveYThousand==='string'?prop.labelsAboveYThousand:null,formatter:typeof prop.labelsAboveYFormatter==='function'?prop.labelsAboveYFormatter:null,decimals_trim:prop.labelsAboveYDecimalsTrim});var str='{1}{2}{3}'.format(conf.x,prop.labelsAboveSeperator,conf.y);}
52
- RG.SVG.text({object:this,parent:this.svg.all,text:str,x:parseFloat(coordX)+prop.labelsAboveOffsetx,y:parseFloat(coordY)+prop.labelsAboveOffsety,halign:prop.labelsAboveHalign,valign:prop.labelsAboveValign,font:prop.labelsAboveFont||prop.textFont,size:prop.labelsAboveSize||prop.textSize,bold:prop.labelsAboveBold||prop.textBold,italic:prop.labelsAboveItalic||prop.textItalic,color:prop.labelsAboveColor||prop.textColor,background:prop.labelsAboveBackground||null,padding:prop.labelsAboveBackgroundPadding||0});};this.parseColors=function()
54
+ RG.SVG.text({object:this,parent:this.svg.all,tag:'labels.above',text:str,x:parseFloat(coordX)+prop.labelsAboveOffsetx,y:parseFloat(coordY)+prop.labelsAboveOffsety,halign:prop.labelsAboveHalign,valign:prop.labelsAboveValign,font:prop.labelsAboveFont||prop.textFont,size:prop.labelsAboveSize||prop.textSize,bold:prop.labelsAboveBold||prop.textBold,italic:prop.labelsAboveItalic||prop.textItalic,color:prop.labelsAboveColor||prop.textColor,background:prop.labelsAboveBackground||null,padding:prop.labelsAboveBackgroundPadding||0});};this.parseColors=function()
53
55
  {if(!Object.keys(this.originalColors).length){this.originalColors={colors:RG.SVG.arrayClone(prop.colors),backgroundGridColor:RG.SVG.arrayClone(prop.backgroundGridColor),highlightFill:RG.SVG.arrayClone(prop.highlightFill),backgroundColor:RG.SVG.arrayClone(prop.backgroundColor)}}
54
56
  var colors=prop.colors;if(colors&&!prop.bubble){for(var i=0;i<colors.length;++i){colors[i]=RG.SVG.parseColorLinear({object:this,color:colors[i]});}}
55
57
  prop.backgroundGridColor=RG.SVG.parseColorLinear({object:this,color:prop.backgroundGridColor});prop.highlightFill=RG.SVG.parseColorLinear({object:this,color:prop.highlightFill});prop.backgroundColor=RG.SVG.parseColorLinear({object:this,color:prop.backgroundColor});};this.on=function(type,func)
56
58
  {if(type.substr(0,2)!=='on'){type='on'+type;}
57
59
  RG.SVG.addCustomEventListener(this,type,func);return this;};this.exec=function(func)
58
60
  {func(this);return this;};this.removeHighlight=function()
59
- {var highlight=RG.SVG.REG.get('highlight');if(highlight){highlight.setAttribute('fill','transparent');RG.SVG.REG.set('highlight',null);}};};return this;})(window,document);
61
+ {var highlight=RG.SVG.REG.get('highlight');if(highlight){highlight.setAttribute('fill','transparent');RG.SVG.REG.set('highlight',null);}};this.drawErrorbar=function(opt)
62
+ {var max=RG.SVG.getErrorbarsMaxValue({object:this,index:opt.sequential});var min=RG.SVG.getErrorbarsMinValue({object:this,index:opt.sequential});if(!max&&!min){return;}
63
+ var linewidth=RG.SVG.getErrorbarsLinewidth({object:this,index:opt.sequential}),color=RG.SVG.getErrorbarsColor({object:this,index:opt.sequential}),capwidth=RG.SVG.getErrorbarsCapWidth({object:this,index:opt.sequential}),halfCapWidth=capwidth/2;if(max!==0||min!==0){var y1=this.getYCoord(opt.valueY+max)
64
+ y2=this.getYCoord(opt.valueY-min);var errorbarLine=RG.SVG.create({svg:this.svg,type:'line',parent:opt.parent,attr:{x1:opt.x,y1:opt.y,x2:opt.x,y2:y1,stroke:color,'stroke-width':linewidth}});var errorbarCap=RG.SVG.create({svg:this.svg,type:'line',parent:opt.parent,attr:{x1:opt.x-halfCapWidth,y1:y1,x2:opt.x+halfCapWidth,y2:y1,stroke:color,'stroke-width':linewidth}});}
65
+ if(typeof min==='number'){var errorbarLine=RG.SVG.create({svg:this.svg,type:'line',parent:opt.parent,attr:{x1:opt.x,y1:opt.y,x2:opt.x,y2:y2,stroke:color,'stroke-width':linewidth}});var errorbarCap=RG.SVG.create({svg:this.svg,type:'line',parent:opt.parent,attr:{x1:opt.x-halfCapWidth,y1:y2,x2:opt.x+halfCapWidth,y2:y2,stroke:color,'stroke-width':linewidth}});}};};return this;})(window,document);
@@ -3,18 +3,18 @@ RGraph=window.RGraph||{isRGraph:true};RGraph.SVG=RGraph.SVG||{};(function(win,do
3
3
  {var RG=RGraph,ua=navigator.userAgent,ma=Math,win=window,doc=document;RG.SVG.SemiCircularProgress=function(conf)
4
4
  {this.set=function(name,value)
5
5
  {if(arguments.length===1&&typeof name==='object'){for(i in arguments[0]){if(typeof i==='string'){var ret=RG.SVG.commonSetter({object:this,name:i,value:arguments[0][i]});name=ret.name;value=ret.value;this.set(name,value);}}}else{var ret=RG.SVG.commonSetter({object:this,name:name,value:value});name=ret.name;value=ret.value;this.properties[name]=value;if(name==='colors'){this.originalColors=RG.SVG.arrayClone(value);this.colorsParsed=false;}}
6
- return this;};this.min=RG.SVG.stringsToNumbers(conf.min);this.max=RG.SVG.stringsToNumbers(conf.max);this.value=RG.SVG.stringsToNumbers(conf.value);this.id=conf.id;this.uid=RG.SVG.createUID();this.container=document.getElementById(this.id);this.layers={};this.svg=RG.SVG.createSVG({object:this,container:this.container});this.isRGraph=true;this.width=Number(this.svg.getAttribute('width'));this.height=Number(this.svg.getAttribute('height'));this.data=conf.data;this.type='semicircularprogress';this.angles=[];this.colorsParsed=false;this.originalColors={};this.gradientCounter=1;this.nodes=[];this.shadowNodes=[];RG.SVG.OR.add(this);this.container.style.display='inline-block';this.properties={centerx:null,centery:null,radius:null,width:60,gutterLeft:35,gutterRight:35,gutterTop:35,gutterBottom:35,backgroundStrokeLinewidth:0.25,backgroundStroke:'gray',backgroundFill:'Gradient(white:#aaa)',backgroundFillOpacity:0.25,colors:['#0c0'],strokestyle:'#666',textColor:'gray',textFont:'sans-serif',textSize:10,textBold:false,textItalic:false,unitsPre:'',unitsPost:'',scalePoint:'.',scaleThousand:',',scaleDecimals:0,scaleFormatter:null,labelsMin:true,labelsMinSpecific:null,labelsMinPoint:null,labelsMinThousand:null,labelsMinFormatter:null,labelsMinFont:null,labelsMinSize:null,labelsMinBold:null,labelsMinItalic:null,labelsMinColor:null,labelsMinDecimals:null,labelsMinUnitsPre:null,labelsMinUnitsPost:null,labelsMax:true,labelsMaxSpecific:null,labelsMaxPoint:null,labelsMaxThousand:null,labelsMaxFormatter:null,labelsMaxFont:null,labelsMaxSize:null,labelsMaxBold:null,labelsMaxItalic:null,labelsMaxColor:null,labelsMaxDecimals:null,labelsMaxUnitsPre:null,labelsMaxUnitsPost:null,labelsCenter:true,labelsCenterSpecific:null,labelsCenterPoint:null,labelsCenterThousand:null,labelsCenterFormatter:null,labelsCenterFont:null,labelsCenterSize:40,labelsCenterBold:true,labelsCenterItalic:null,labelsCenterColor:'#666',labelsCenterDecimals:null,labelsCenterUnitsPre:null,labelsCenterUnitsPost:null,linewidth:0,tooltips:null,tooltipsOverride:null,tooltipsEffect:'fade',tooltipsCssClass:'RGraph_tooltip',tooltipsEvent:'click',highlightStroke:'rgba(0,0,0,0)',highlightFill:'rgba(255,255,255,0.7)',highlightLinewidth:1,title:'',titleSize:16,titleX:null,titleY:null,titleHalign:'center',titleValign:null,titleColor:'black',titleFont:null,titleBold:false,titleItalic:false,titleSubtitle:'',titleSubtitleSize:10,titleSubtitleX:null,titleSubtitleY:null,titleSubtitleHalign:'center',titleSubtitleValign:null,titleSubtitleColor:'#aaa',titleSubtitleFont:null,titleSubtitleBold:false,titleSubtitleItalic:false};RG.SVG.getGlobals(this);if(RG.SVG.FX&&typeof RG.SVG.FX.decorate==='function'){RG.SVG.FX.decorate(this);}
6
+ return this;};this.min=RG.SVG.stringsToNumbers(conf.min);this.max=RG.SVG.stringsToNumbers(conf.max);this.value=RG.SVG.stringsToNumbers(conf.value);this.id=conf.id;this.uid=RG.SVG.createUID();this.container=document.getElementById(this.id);this.layers={};this.svg=RG.SVG.createSVG({object:this,container:this.container});this.isRGraph=true;this.width=Number(this.svg.getAttribute('width'));this.height=Number(this.svg.getAttribute('height'));this.data=conf.data;this.type='semicircularprogress';this.colorsParsed=false;this.originalColors={};this.gradientCounter=1;this.nodes={};this.shadowNodes=[];RG.SVG.OR.add(this);this.container.style.display='inline-block';this.properties={centerx:null,centery:null,radius:null,width:60,gutterLeft:35,gutterRight:35,gutterTop:35,gutterBottom:35,backgroundStrokeLinewidth:0.25,backgroundStroke:'gray',backgroundFill:'Gradient(white:#aaa)',backgroundFillOpacity:0.25,colors:['#0c0'],strokestyle:'#666',textColor:'gray',textFont:'sans-serif',textSize:10,textBold:false,textItalic:false,unitsPre:'',unitsPost:'',scalePoint:'.',scaleThousand:',',scaleDecimals:0,scaleFormatter:null,labelsMin:true,labelsMinSpecific:null,labelsMinPoint:null,labelsMinThousand:null,labelsMinFormatter:null,labelsMinFont:null,labelsMinSize:null,labelsMinBold:null,labelsMinItalic:null,labelsMinColor:null,labelsMinDecimals:null,labelsMinUnitsPre:null,labelsMinUnitsPost:null,labelsMax:true,labelsMaxSpecific:null,labelsMaxPoint:null,labelsMaxThousand:null,labelsMaxFormatter:null,labelsMaxFont:null,labelsMaxSize:null,labelsMaxBold:null,labelsMaxItalic:null,labelsMaxColor:null,labelsMaxDecimals:null,labelsMaxUnitsPre:null,labelsMaxUnitsPost:null,labelsCenter:true,labelsCenterSpecific:null,labelsCenterPoint:null,labelsCenterThousand:null,labelsCenterFormatter:null,labelsCenterFont:null,labelsCenterSize:40,labelsCenterBold:true,labelsCenterItalic:null,labelsCenterColor:'#666',labelsCenterDecimals:null,labelsCenterUnitsPre:null,labelsCenterUnitsPost:null,linewidth:0,tooltips:null,tooltipsOverride:null,tooltipsEffect:'fade',tooltipsCssClass:'RGraph_tooltip',tooltipsEvent:'click',highlightStroke:'rgba(0,0,0,0)',highlightFill:'rgba(255,255,255,0.7)',highlightLinewidth:1,title:'',titleSize:16,titleX:null,titleY:null,titleHalign:'center',titleValign:null,titleColor:'black',titleFont:null,titleBold:false,titleItalic:false,titleSubtitle:null,titleSubtitleSize:10,titleSubtitleX:null,titleSubtitleY:null,titleSubtitleHalign:'center',titleSubtitleValign:null,titleSubtitleColor:'#aaa',titleSubtitleFont:null,titleSubtitleBold:false,titleSubtitleItalic:false};RG.SVG.getGlobals(this);if(RG.SVG.FX&&typeof RG.SVG.FX.decorate==='function'){RG.SVG.FX.decorate(this);}
7
7
  var prop=this.properties;this.draw=function()
8
- {RG.SVG.fireCustomEvent(this,'onbeforedraw');RG.SVG.createDefs(this);this.graphWidth=this.width-prop.gutterLeft-prop.gutterRight;this.graphHeight=this.height-prop.gutterTop-prop.gutterBottom;this.centerx=(this.graphWidth/2)+prop.gutterLeft;this.centery=this.height-prop.gutterBottom;this.radius=ma.min(this.graphWidth/2,this.graphHeight);this.centerx=typeof prop.centerx==='number'?prop.centerx:this.centerx;this.centery=typeof prop.centery==='number'?prop.centery:this.centery;this.radius=typeof prop.radius==='number'?prop.radius:this.radius;if(typeof prop.radius==='string'&&prop.radius.match(/^\+|-\d+$/))this.radius+=parseFloat(prop.radius);if(typeof prop.centerx==='string'&&prop.centerx.match(/^\+|-\d+$/))this.centery+=parseFloat(prop.centerx);if(typeof prop.centery==='string'&&prop.centery.match(/^\+|-\d+$/))this.centerx+=parseFloat(prop.centery);this.progressWidth=prop.width||(this.radius/3);RG.SVG.resetColorsToOriginalValues({object:this});this.parseColors();this.path=this.drawMeter();RG.SVG.drawTitle(this);this.drawLabels();RG.SVG.attribution(this);if(!RG.SVG.isNull(prop.tooltips)&&prop.tooltips[0]){var obj=this;this.path.addEventListener(prop.tooltipsEvent,function(e)
8
+ {RG.SVG.fireCustomEvent(this,'onbeforedraw');this.nodes={};this.width=Number(this.svg.getAttribute('width'));this.height=Number(this.svg.getAttribute('height'));RG.SVG.createDefs(this);this.graphWidth=this.width-prop.gutterLeft-prop.gutterRight;this.graphHeight=this.height-prop.gutterTop-prop.gutterBottom;this.centerx=(this.graphWidth/2)+prop.gutterLeft;this.centery=this.height-prop.gutterBottom;this.radius=ma.min(this.graphWidth/2,this.graphHeight);this.centerx=typeof prop.centerx==='number'?prop.centerx:this.centerx;this.centery=typeof prop.centery==='number'?prop.centery:this.centery;this.radius=typeof prop.radius==='number'?prop.radius:this.radius;if(typeof prop.radius==='string'&&prop.radius.match(/^\+|-\d+$/))this.radius+=parseFloat(prop.radius);if(typeof prop.centerx==='string'&&prop.centerx.match(/^\+|-\d+$/))this.centery+=parseFloat(prop.centerx);if(typeof prop.centery==='string'&&prop.centery.match(/^\+|-\d+$/))this.centerx+=parseFloat(prop.centery);this.progressWidth=prop.width||(this.radius/3);RG.SVG.resetColorsToOriginalValues({object:this});this.parseColors();this.path=this.drawMeter();RG.SVG.drawTitle(this);this.drawLabels();RG.SVG.attribution(this);if(!RG.SVG.isNull(prop.tooltips)&&prop.tooltips[0]){var obj=this;this.path.addEventListener(prop.tooltipsEvent,function(e)
9
9
  {obj.removeHighlight();RG.SVG.tooltip({object:obj,index:0,group:null,sequentialIndex:0,text:prop.tooltips[0],event:e});obj.highlight(e.target);},false);this.path.addEventListener('mousemove',function(e)
10
10
  {e.target.style.cursor='pointer'},false);}
11
11
  var obj=this;doc.body.addEventListener('mousedown',function(e)
12
12
  {obj.removeHighlight();},false);RG.SVG.fireCustomEvent(this,'ondraw');return this;};this.drawMeter=function()
13
- {var path=RG.SVG.TRIG.getArcPath({cx:this.centerx,cy:this.centery,r:this.radius,start:RG.SVG.TRIG.PI+RG.SVG.TRIG.HALFPI,end:RG.SVG.TRIG.HALFPI,anticlockwise:false});var path2=RG.SVG.TRIG.getArcPath({cx:this.centerx,cy:this.centery,r:this.radius-this.progressWidth,end:RG.SVG.TRIG.PI+RG.SVG.TRIG.HALFPI,start:RG.SVG.TRIG.HALFPI,anticlockwise:true,moveto:false});RG.SVG.create({svg:this.svg,type:'path',parent:this.svg.all,attr:{d:path+" L "+(this.centerx+this.radius-this.progressWidth)+" "+this.centery+path2+" L "+(this.centerx-this.radius)+" "+this.centery,fill:prop.backgroundFill||prop.colors[0],stroke:prop.backgroundStroke,'stroke-width':prop.backgroundStrokeLinewidth,'fill-opacity':prop.backgroundFillOpacity}});var angle=((this.value-this.min)/(this.max-this.min))*RG.SVG.TRIG.PI;angle-=RG.SVG.TRIG.HALFPI;var path=RG.SVG.TRIG.getArcPath({cx:this.centerx,cy:this.centery,r:this.radius,start:RG.SVG.TRIG.PI+RG.SVG.TRIG.HALFPI,end:angle,anticlockwise:false});var path2=RG.SVG.TRIG.getArcPath({cx:this.centerx,cy:this.centery,r:this.radius-this.progressWidth,start:angle,end:angle,anticlockwise:false,array:true});var path3=RG.SVG.TRIG.getArcPath({cx:this.centerx,cy:this.centery,r:this.radius-this.progressWidth,start:angle,end:RG.SVG.TRIG.PI+RG.SVG.TRIG.HALFPI,anticlockwise:true,moveto:false});var path=RG.SVG.create({svg:this.svg,type:'path',parent:this.svg.all,attr:{d:path+" L{1} {2} ".format(path2[1],path2[2])+path3+' z',fill:prop.colors[0],stroke:'black','stroke-width':prop.linewidth}});return path;};this.drawLabels=function()
14
- {if(prop.labelsMin){var min=RG.SVG.numberFormat({object:this,num:this.min.toFixed(typeof prop.labelsMinDecimals==='number'?prop.labelsMinDecimals:prop.scaleDecimals),prepend:typeof prop.labelsMinUnitsPre==='string'?prop.labelsMinUnitsPre:prop.unitsPre,append:typeof prop.labelsMinUnitsPost==='string'?prop.labelsMinUnitsPost:prop.unitsPost,point:typeof prop.labelsMinPoint==='string'?prop.labelsMinPoint:prop.scalePoint,thousand:typeof prop.labelsMinThousand==='string'?prop.labelsMinThousand:prop.scaleThousand,formatter:typeof prop.labelsMinFormatter==='function'?prop.labelsMinFormatter:prop.scaleFormatter});RG.SVG.text({object:this,parent:this.svg.all,text:typeof prop.labelsMinSpecific==='string'?prop.labelsMinSpecific:min,x:this.centerx-this.radius+(this.progressWidth/2),y:this.height-prop.gutterBottom+5,valign:'top',halign:'center',font:prop.labelsMinFont||prop.textFont,size:prop.labelsMinSize||prop.textSize,bold:typeof prop.labelsMinBold==='boolean'?prop.labelsMinBold:prop.textBold,italic:typeof prop.labelsMinItalic==='boolean'?prop.labelsMinItalic:prop.textItalic,color:prop.labelsMinColor||prop.textColor});}
15
- if(prop.labelsMax){var max=RG.SVG.numberFormat({object:this,num:this.max.toFixed(typeof prop.labelsMaxDecimals==='number'?prop.labelsMaxDecimals:prop.scaleDecimals),prepend:typeof prop.labelsMaxUnitsPre==='string'?prop.labelsMaxUnitsPre:prop.unitsPre,append:typeof prop.labelsMaxUnitsPost==='string'?prop.labelsMaxUnitsPost:prop.unitsPost,point:typeof prop.labelsMaxPoint==='string'?prop.labelsMaxPoint:prop.scalePoint,thousand:typeof prop.labelsMaxThousand==='string'?prop.labelsMaxThousand:prop.scaleThousand,formatter:typeof prop.labelsMaxFormatter==='function'?prop.labelsMaxFormatter:prop.scaleFormatter});RG.SVG.text({object:this,parent:this.svg.all,text:typeof prop.labelsMaxSpecific==='string'?prop.labelsMaxSpecific:max,x:this.centerx+this.radius-(this.progressWidth/2),y:this.height-prop.gutterBottom+5,valign:'top',halign:'center',font:prop.labelsMaxFont||prop.textFont,size:prop.labelsMaxSize||prop.textSize,bold:typeof prop.labelsMaxBold==='boolean'?prop.labelsMaxBold:prop.textBold,italic:typeof prop.labelsMaxItalic==='boolean'?prop.labelsMaxItalic:prop.textItalic,color:prop.labelsMaxColor||prop.textColor});}
16
- if(prop.labelsCenter){var center=RG.SVG.numberFormat({object:this,num:this.value.toFixed(typeof prop.labelsCenterDecimals==='number'?prop.labelsCenterDecimals:prop.scaleDecimals),prepend:typeof prop.labelsCenterUnitsPre==='string'?prop.labelsCenterUnitsPre:prop.unitsPre,append:typeof prop.labelsCenterUnitsPost==='string'?prop.labelsCenterUnitsPost:prop.unitsPost,point:typeof prop.labelsCenterPoint==='string'?prop.labelsCenterPoint:prop.scalePoint,thousand:typeof prop.labelsCenterThousand==='string'?prop.labelsCenterThousand:prop.scaleThousand,formatter:typeof prop.labelsCenterFormatter==='function'?prop.labelsCenterFormatter:prop.scaleFormatter});RG.SVG.text({object:this,parent:this.svg.all,text:typeof prop.labelsCenterSpecific==='string'?prop.labelsCenterSpecific:center,x:this.centerx,y:this.centery,valign:'bottom',halign:'center',font:prop.labelsCenterFont||prop.textFont,size:prop.labelsCenterSize||prop.textSize,bold:typeof prop.labelsCenterBold==='boolean'?prop.labelsCenterBold:prop.textBold,italic:typeof prop.labelsCenterItalic==='boolean'?prop.labelsCenterItalic:prop.textItalic,color:prop.labelsCenterColor||prop.textColor});}};this.highlight=function(segment)
17
- {this.removeHighlight();var highlight=RG.SVG.create({svg:this.svg,type:'path',parent:this.svg.all,attr:{d:this.path.getAttribute('d'),fill:prop.highlightFill,stroke:prop.highlightStroke,'stroke-width':prop.highlightLinewidth}});RG.SVG.REG.set('highlight',highlight);var obj=this;doc.body.addEventListener('mousedown',function(e)
13
+ {var path=RG.SVG.TRIG.getArcPath({cx:this.centerx,cy:this.centery,r:this.radius,start:RG.SVG.TRIG.PI+RG.SVG.TRIG.HALFPI,end:RG.SVG.TRIG.HALFPI,anticlockwise:false});var path2=RG.SVG.TRIG.getArcPath({cx:this.centerx,cy:this.centery,r:this.radius-this.progressWidth,end:RG.SVG.TRIG.PI+RG.SVG.TRIG.HALFPI,start:RG.SVG.TRIG.HALFPI,anticlockwise:true,moveto:false});var background=RG.SVG.create({svg:this.svg,type:'path',parent:this.svg.all,attr:{d:path+" L "+(this.centerx+this.radius-this.progressWidth)+" "+this.centery+path2+" L "+(this.centerx-this.radius)+" "+this.centery,fill:prop.backgroundFill||prop.colors[0],stroke:prop.backgroundStroke,'stroke-width':prop.backgroundStrokeLinewidth,'fill-opacity':prop.backgroundFillOpacity}});this.nodes.background=background;var angle=((this.value-this.min)/(this.max-this.min))*RG.SVG.TRIG.PI;angle-=RG.SVG.TRIG.HALFPI;var path=RG.SVG.TRIG.getArcPath({cx:this.centerx,cy:this.centery,r:this.radius,start:RG.SVG.TRIG.PI+RG.SVG.TRIG.HALFPI,end:angle,anticlockwise:false});var path2=RG.SVG.TRIG.getArcPath({cx:this.centerx,cy:this.centery,r:this.radius-this.progressWidth,start:angle,end:angle,anticlockwise:false,array:true});var path3=RG.SVG.TRIG.getArcPath({cx:this.centerx,cy:this.centery,r:this.radius-this.progressWidth,start:angle,end:RG.SVG.TRIG.PI+RG.SVG.TRIG.HALFPI,anticlockwise:true,moveto:false});var path=RG.SVG.create({svg:this.svg,type:'path',parent:this.svg.all,attr:{d:path+" L{1} {2} ".format(path2[1],path2[2])+path3+' z',fill:prop.colors[0],stroke:'black','stroke-width':prop.linewidth}});this.nodes.bar=path;return path;};this.drawLabels=function()
14
+ {if(prop.labelsMin){var min=RG.SVG.numberFormat({object:this,num:this.min.toFixed(typeof prop.labelsMinDecimals==='number'?prop.labelsMinDecimals:prop.scaleDecimals),prepend:typeof prop.labelsMinUnitsPre==='string'?prop.labelsMinUnitsPre:prop.unitsPre,append:typeof prop.labelsMinUnitsPost==='string'?prop.labelsMinUnitsPost:prop.unitsPost,point:typeof prop.labelsMinPoint==='string'?prop.labelsMinPoint:prop.scalePoint,thousand:typeof prop.labelsMinThousand==='string'?prop.labelsMinThousand:prop.scaleThousand,formatter:typeof prop.labelsMinFormatter==='function'?prop.labelsMinFormatter:prop.scaleFormatter});var text=RG.SVG.text({object:this,parent:this.svg.all,tag:'labels.min',text:typeof prop.labelsMinSpecific==='string'?prop.labelsMinSpecific:min,x:this.centerx-this.radius+(this.progressWidth/2),y:this.height-prop.gutterBottom+5,valign:'top',halign:'center',font:prop.labelsMinFont||prop.textFont,size:prop.labelsMinSize||prop.textSize,bold:typeof prop.labelsMinBold==='boolean'?prop.labelsMinBold:prop.textBold,italic:typeof prop.labelsMinItalic==='boolean'?prop.labelsMinItalic:prop.textItalic,color:prop.labelsMinColor||prop.textColor});this.nodes.labelsMin=text;}
15
+ if(prop.labelsMax){var max=RG.SVG.numberFormat({object:this,num:this.max.toFixed(typeof prop.labelsMaxDecimals==='number'?prop.labelsMaxDecimals:prop.scaleDecimals),prepend:typeof prop.labelsMaxUnitsPre==='string'?prop.labelsMaxUnitsPre:prop.unitsPre,append:typeof prop.labelsMaxUnitsPost==='string'?prop.labelsMaxUnitsPost:prop.unitsPost,point:typeof prop.labelsMaxPoint==='string'?prop.labelsMaxPoint:prop.scalePoint,thousand:typeof prop.labelsMaxThousand==='string'?prop.labelsMaxThousand:prop.scaleThousand,formatter:typeof prop.labelsMaxFormatter==='function'?prop.labelsMaxFormatter:prop.scaleFormatter});var text=RG.SVG.text({object:this,parent:this.svg.all,tag:'labels.max',text:typeof prop.labelsMaxSpecific==='string'?prop.labelsMaxSpecific:max,x:this.centerx+this.radius-(this.progressWidth/2),y:this.height-prop.gutterBottom+5,valign:'top',halign:'center',font:prop.labelsMaxFont||prop.textFont,size:prop.labelsMaxSize||prop.textSize,bold:typeof prop.labelsMaxBold==='boolean'?prop.labelsMaxBold:prop.textBold,italic:typeof prop.labelsMaxItalic==='boolean'?prop.labelsMaxItalic:prop.textItalic,color:prop.labelsMaxColor||prop.textColor});this.nodes.labelsMax=text;}
16
+ if(prop.labelsCenter){var center=RG.SVG.numberFormat({object:this,num:this.value.toFixed(typeof prop.labelsCenterDecimals==='number'?prop.labelsCenterDecimals:prop.scaleDecimals),prepend:typeof prop.labelsCenterUnitsPre==='string'?prop.labelsCenterUnitsPre:prop.unitsPre,append:typeof prop.labelsCenterUnitsPost==='string'?prop.labelsCenterUnitsPost:prop.unitsPost,point:typeof prop.labelsCenterPoint==='string'?prop.labelsCenterPoint:prop.scalePoint,thousand:typeof prop.labelsCenterThousand==='string'?prop.labelsCenterThousand:prop.scaleThousand,formatter:typeof prop.labelsCenterFormatter==='function'?prop.labelsCenterFormatter:prop.scaleFormatter});var text=RG.SVG.text({object:this,parent:this.svg.all,tag:'labels.center',text:typeof prop.labelsCenterSpecific==='string'?prop.labelsCenterSpecific:center,x:this.centerx,y:this.centery,valign:'bottom',halign:'center',font:prop.labelsCenterFont||prop.textFont,size:prop.labelsCenterSize||prop.textSize,bold:typeof prop.labelsCenterBold==='boolean'?prop.labelsCenterBold:prop.textBold,italic:typeof prop.labelsCenterItalic==='boolean'?prop.labelsCenterItalic:prop.textItalic,color:prop.labelsCenterColor||prop.textColor});this.nodes.labelsCenter=text;}};this.highlight=function(segment)
17
+ {this.removeHighlight();var highlight=RG.SVG.create({svg:this.svg,type:'path',parent:this.svg.all,attr:{d:this.path.getAttribute('d'),fill:prop.highlightFill,stroke:prop.highlightStroke,'stroke-width':prop.highlightLinewidth},style:{pointerEvents:'none'}});RG.SVG.REG.set('highlight',highlight);var obj=this;doc.body.addEventListener('mousedown',function(e)
18
18
  {obj.removeHighlight();},false);};this.removeHighlight=function()
19
19
  {var highlight=RG.SVG.REG.get('highlight');if(highlight){highlight.parentNode.removeChild(highlight);highlight=null;}};this.parseColors=function()
20
20
  {if(!Object.keys(this.originalColors).length){this.originalColors={colors:RG.SVG.arrayClone(prop.colors),highlightFill:RG.SVG.arrayClone(prop.highlightFill),backgroundColor:RG.SVG.arrayClone(prop.backgroundColor)}}
@@ -3,40 +3,43 @@ RGraph=window.RGraph||{isRGraph:true};RGraph.SVG=RGraph.SVG||{};(function(win,do
3
3
  {var RG=RGraph,ua=navigator.userAgent,ma=Math,win=window,doc=document;RG.SVG.Waterfall=function(conf)
4
4
  {this.set=function(name,value)
5
5
  {if(arguments.length===1&&typeof name==='object'){for(i in arguments[0]){if(typeof i==='string'){var ret=RG.SVG.commonSetter({object:this,name:i,value:arguments[0][i]});name=ret.name;value=ret.value;this.set(name,value);}}}else{var ret=RG.SVG.commonSetter({object:this,name:name,value:value});name=ret.name;value=ret.value;this.properties[name]=value;if(name==='colors'){this.originalColors=RG.SVG.arrayClone(value);this.colorsParsed=false;}}
6
- return this;};this.id=conf.id;this.uid=RG.SVG.createUID();this.container=document.getElementById(this.id);this.layers={};this.svg=RG.SVG.createSVG({object:this,container:this.container});this.isRGraph=true;this.width=Number(this.svg.getAttribute('width'));this.height=Number(this.svg.getAttribute('height'));this.data=conf.data;this.type='waterfall';this.coords=[];this.colorsParsed=false;this.originalColors={};this.gradientCounter=1;RG.SVG.OR.add(this);this.container.style.display='inline-block';this.properties={gutterLeft:35,gutterRight:35,gutterTop:35,gutterBottom:35,backgroundColor:null,backgroundImage:null,backgroundImageAspect:'none',backgroundImageStretch:true,backgroundImageOpacity:null,backgroundImageX:null,backgroundImageY:null,backgroundImageW:null,backgroundImageH:null,backgroundGrid:true,backgroundGridColor:'#ddd',backgroundGridLinewidth:1,backgroundGridHlines:true,backgroundGridHlinesCount:null,backgroundGridVlines:true,backgroundGridVlinesCount:null,backgroundGridBorder:true,backgroundGridDashed:false,backgroundGridDotted:false,backgroundGridDashArray:null,colors:['black','red','blue'],colorsSequential:false,strokestyle:'#aaa',strokestyleConnector:null,total:true,hmargin:5,linewidth:1,yaxis:true,yaxisTickmarks:true,yaxisTickmarksLength:5,yaxisColor:'black',yaxisScale:true,yaxisLabels:null,yaxisLabelsOffsetx:0,yaxisLabelsOffsety:0,yaxisLabelsCount:5,yaxisUnitsPre:'',yaxisUnitsPost:'',yaxisStrict:false,yaxisDecimals:0,yaxisPoint:'.',yaxisThousand:',',yaxisRound:false,yaxisMax:null,yaxisMin:0,yaxisFormatter:null,yaxisTextColor:null,yaxisTextBold:null,yaxisTextItalic:null,yaxisTextFont:null,yaxisTextSize:null,xaxis:true,xaxisTickmarks:true,xaxisTickmarksLength:5,xaxisLabels:null,xaxisLabelsPosition:'section',xaxisLabelsPositionEdgeTickmarksCount:null,xaxisColor:'black',xaxisLabelsOffsetx:0,xaxisLabelsOffsety:0,labelsAbove:false,labelsAboveFont:null,labelsAboveSize:null,labelsAboveBold:null,labelsAboveItalic:null,labelsAboveColor:null,labelsAboveBackground:'rgba(255,255,255,0.5)',labelsAboveBackgroundPadding:2,labelsAboveUnitsPre:null,labelsAboveUnitsPost:null,labelsAbovePoint:null,labelsAboveThousand:null,labelsAboveFormatter:null,labelsAboveDecimals:null,labelsAboveOffsetx:0,labelsAboveOffsety:0,labelsAboveHalign:'center',labelsAboveValign:'bottom',labelsAboveSpecific:null,textColor:'black',textFont:'sans-serif',textSize:12,textBold:false,textItalic:false,tooltips:null,tooltipsOverride:null,tooltipsEffect:'fade',tooltipsCssClass:'RGraph_tooltip',tooltipsEvent:'click',highlightStroke:'rgba(0,0,0,0)',highlightFill:'rgba(255,255,255,0.7)',highlightLinewidth:1,title:'',titleSize:16,titleX:null,titleY:null,titleHalign:'center',titleValign:null,titleColor:'black',titleFont:null,titleBold:false,titleItalic:false,titleSubtitle:'',titleSubtitleSize:10,titleSubtitleX:null,titleSubtitleY:null,titleSubtitleHalign:'center',titleSubtitleValign:null,titleSubtitleColor:'#aaa',titleSubtitleFont:null,titleSubtitleBold:false,titleSubtitleItalic:false,key:null,keyColors:null,keyOffsetx:0,keyOffsety:0,keyTextOffsetx:0,keyTextOffsety:-1,keyTextSize:null,keyTextBold:null,keyTextItalic:null};RG.SVG.getGlobals(this);if(RG.SVG.FX&&typeof RG.SVG.FX.decorate==='function'){RG.SVG.FX.decorate(this);}
6
+ return this;};this.id=conf.id;this.uid=RG.SVG.createUID();this.container=document.getElementById(this.id);this.layers={};this.svg=RG.SVG.createSVG({object:this,container:this.container});this.isRGraph=true;this.data=conf.data;this.type='waterfall';this.coords=[];this.colorsParsed=false;this.originalColors={};this.gradientCounter=1;RG.SVG.OR.add(this);this.container.style.display='inline-block';this.properties={gutterLeft:35,gutterRight:35,gutterTop:35,gutterBottom:35,backgroundColor:null,backgroundImage:null,backgroundImageAspect:'none',backgroundImageStretch:true,backgroundImageOpacity:null,backgroundImageX:null,backgroundImageY:null,backgroundImageW:null,backgroundImageH:null,backgroundGrid:true,backgroundGridColor:'#ddd',backgroundGridLinewidth:1,backgroundGridHlines:true,backgroundGridHlinesCount:null,backgroundGridVlines:true,backgroundGridVlinesCount:null,backgroundGridBorder:true,backgroundGridDashed:false,backgroundGridDotted:false,backgroundGridDashArray:null,colors:['black','red','blue'],colorsSequential:false,strokestyle:'#aaa',strokestyleConnector:null,total:true,hmargin:5,linewidth:1,yaxis:true,yaxisTickmarks:true,yaxisTickmarksLength:5,yaxisColor:'black',yaxisScale:true,yaxisLabels:null,yaxisLabelsOffsetx:0,yaxisLabelsOffsety:0,yaxisLabelsCount:5,yaxisUnitsPre:'',yaxisUnitsPost:'',yaxisStrict:false,yaxisDecimals:0,yaxisPoint:'.',yaxisThousand:',',yaxisRound:false,yaxisMax:null,yaxisMin:0,yaxisFormatter:null,yaxisTextColor:null,yaxisTextBold:null,yaxisTextItalic:null,yaxisTextFont:null,yaxisTextSize:null,xaxis:true,xaxisTickmarks:true,xaxisTickmarksLength:5,xaxisLabels:null,xaxisLabelsPosition:'section',xaxisLabelsPositionEdgeTickmarksCount:null,xaxisColor:'black',xaxisLabelsOffsetx:0,xaxisLabelsOffsety:0,labelsAbove:false,labelsAboveFont:null,labelsAboveSize:null,labelsAboveBold:null,labelsAboveItalic:null,labelsAboveColor:null,labelsAboveBackground:'rgba(255,255,255,0.5)',labelsAboveBackgroundPadding:2,labelsAboveUnitsPre:null,labelsAboveUnitsPost:null,labelsAbovePoint:null,labelsAboveThousand:null,labelsAboveFormatter:null,labelsAboveDecimals:null,labelsAboveOffsetx:0,labelsAboveOffsety:0,labelsAboveHalign:'center',labelsAboveValign:'bottom',labelsAboveSpecific:null,labelsAboveLastFont:null,labelsAboveLastBold:null,labelsAboveLastItalic:null,labelsAboveLastSize:null,labelsAboveLastColor:null,labelsAboveLastBackground:null,labelsAboveLastBackgroundPadding:null,textColor:'black',textFont:'sans-serif',textSize:12,textBold:false,textItalic:false,tooltips:null,tooltipsOverride:null,tooltipsEffect:'fade',tooltipsCssClass:'RGraph_tooltip',tooltipsEvent:'click',highlightStroke:'rgba(0,0,0,0)',highlightFill:'rgba(255,255,255,0.7)',highlightLinewidth:1,title:null,titleSize:16,titleX:null,titleY:null,titleHalign:'center',titleValign:null,titleColor:'black',titleFont:null,titleBold:false,titleItalic:false,titleSubtitle:null,titleSubtitleSize:10,titleSubtitleX:null,titleSubtitleY:null,titleSubtitleHalign:'center',titleSubtitleValign:null,titleSubtitleColor:'#aaa',titleSubtitleFont:null,titleSubtitleBold:false,titleSubtitleItalic:false,key:null,keyColors:null,keyOffsetx:0,keyOffsety:0,keyTextOffsetx:0,keyTextOffsety:-1,keyTextSize:null,keyTextBold:null,keyTextItalic:null};RG.SVG.getGlobals(this);if(RG.SVG.FX&&typeof RG.SVG.FX.decorate==='function'){RG.SVG.FX.decorate(this);}
7
7
  var prop=this.properties;this.draw=function()
8
- {RG.SVG.fireCustomEvent(this,'onbeforedraw');RG.SVG.createDefs(this);this.graphWidth=this.width-prop.gutterLeft-prop.gutterRight;this.graphHeight=this.height-prop.gutterTop-prop.gutterBottom;RG.SVG.resetColorsToOriginalValues({object:this});this.parseColors();if(prop.total){var sum=RG.SVG.arraySum(this.data);this.data.push(sum);if(prop.xaxisLabels&&prop.xaxisLabels.length===(this.data.length-1)){prop.xaxisLabels.push('');}}
8
+ {RG.SVG.fireCustomEvent(this,'onbeforedraw');this.width=Number(this.svg.getAttribute('width'));this.height=Number(this.svg.getAttribute('height'));RG.SVG.createDefs(this);this.coords=[];this.graphWidth=this.width-prop.gutterLeft-prop.gutterRight;this.graphHeight=this.height-prop.gutterTop-prop.gutterBottom;RG.SVG.resetColorsToOriginalValues({object:this});this.parseColors();if(prop.total){var sum=RG.SVG.arraySum(this.data);this.data.push(sum);if(prop.xaxisLabels&&prop.xaxisLabels.length===(this.data.length-1)){prop.xaxisLabels.push('');}}
9
9
  for(var i=0,max=0,runningTotal=0;i<this.data.length-(prop.total?1:0);++i){runningTotal+=this.data[i]
10
- max=ma.max(max,runningTotal);}
10
+ max=ma.max(ma.abs(max),ma.abs(runningTotal));}
11
11
  if(typeof prop.yaxisMax==='number'){max=prop.yaxisMax;}
12
12
  if(prop.yaxisMin==='mirror'||prop.yaxisMin==='middle'||prop.yaxisMin==='center'){var mirrorScale=true;prop.yaxisMin=0;}
13
13
  this.scale=RG.SVG.getScale({object:this,numlabels:prop.yaxisLabelsCount,unitsPre:prop.yaxisUnitsPre,unitsPost:prop.yaxisUnitsPost,max:max,min:prop.yaxisMin,point:prop.yaxisPoint,round:prop.yaxisRound,thousand:prop.yaxisThousand,decimals:prop.yaxisDecimals,strict:typeof prop.yaxisMax==='number',formatter:prop.yaxisFormatter});if(mirrorScale){this.scale=RG.SVG.getScale({object:this,numlabels:prop.yaxisLabelsCount,unitsPre:prop.yaxisUnitsPre,unitsPost:prop.yaxisUnitsPost,max:this.scale.max,min:this.scale.max* -1,point:prop.yaxisPoint,round:false,thousand:prop.yaxisThousand,decimals:prop.yaxisDecimals,strict:typeof prop.yaxisMax==='number',formatter:prop.yaxisFormatter});}
14
14
  this.max=this.scale.max;this.min=this.scale.min;prop.yaxisMax=this.scale.max;prop.yaxisMin=this.scale.min;RG.SVG.drawBackground(this);RG.SVG.drawXAxis(this);RG.SVG.drawYAxis(this);this.drawBars();this.drawLabelsAbove();if(typeof prop.key!==null&&RG.SVG.drawKey){RG.SVG.drawKey(this);}else if(!RGraph.SVG.isNull(prop.key)){alert('The drawKey() function does not exist - have you forgotten to include the key library?');}
15
15
  RG.SVG.attribution(this);RG.SVG.fireCustomEvent(this,'ondraw');return this;};this.drawBars=function()
16
- {this.graphWidth=this.width-prop.gutterLeft-prop.gutterRight;this.graphHeight=this.height-prop.gutterTop-prop.gutterBottom;var innerWidth=(this.graphWidth/this.data.length)-(2*prop.hmargin),outerWidth=(this.graphWidth/this.data.length);var y=this.getYCoord(0),total=0;for(var i=0;i<(this.data.length);++i){var prevValue=this.data[i-1],nextValue=this.data[i+1],currentValue=this.data[i],prevTotal=total;total+=parseFloat(this.data[i])||0;var height=ma.abs((this.data[i]/(this.scale.max-this.scale.min))*this.graphHeight);if(prevValue===null){if(currentValue>0){y=this.getYCoord(prevTotal)-height;}else{y=this.getYCoord(prevTotal);}}else{if(i==0&&this.data[i]>0){y=y-height;}else if(this.data[i]>0&&this.data[i-1]>0){y=y-height;}else if(this.data[i]>0&&this.data[i-1]<0){y=y+prevHeight-height;}else if(this.data[i]<0&&this.data[i-1]>0){}else if(this.data[i]<0&&this.data[i-1]<0){y=y+prevHeight;}}
16
+ {this.graphWidth=this.width-prop.gutterLeft-prop.gutterRight;this.graphHeight=this.height-prop.gutterTop-prop.gutterBottom;var innerWidth=(this.graphWidth/this.data.length)-(2*prop.hmargin),outerWidth=(this.graphWidth/this.data.length);var y=this.getYCoord(0),total=0;for(var i=0;i<(this.data.length);++i){var prevValue=this.data[i-1],nextValue=this.data[i+1],currentValue=this.data[i],prevTotal=total;total+=parseFloat(this.data[i])||0;var height=ma.abs((this.data[i]/(this.scale.max-this.scale.min))*this.graphHeight);if(RG.SVG.isNull(prevValue)){if(currentValue>0){y=this.getYCoord(prevTotal)-height;}else{y=this.getYCoord(prevTotal);}}else{if(i==0&&this.data[i]>0){y=y-height;}else if(this.data[i]>0&&this.data[i-1]>0){y=y-height;}else if(this.data[i]>0&&this.data[i-1]<0){y=y+prevHeight-height;}else if(this.data[i]<0&&this.data[i-1]>0){}else if(this.data[i]<0&&this.data[i-1]<0){y=y+prevHeight;}}
17
17
  var fill=this.data[i]>0?prop.colors[0]:prop.colors[1];if(prop.colorsSequential){fill=prop.colors[i];}
18
- if(i===(this.data.length-1)&&this.data[this.data.length-1]>=0){y=this.getYCoord(0)-height;if(!prop.colorsSequential){fill=prop.colors[2];}}else if(i===(this.data.length-1)&&this.data[this.data.length-1]<0){y=this.getYCoord(0);if(!prop.colorsSequential){fill=prop.colors[2];}}
18
+ if(prop.total){if(i===(this.data.length-1)&&this.data[this.data.length-1]>=0){y=this.getYCoord(0)-height;if(!prop.colorsSequential){fill=prop.colors[2];}}else if(i===(this.data.length-1)&&this.data[this.data.length-1]<0){y=this.getYCoord(0);if(!prop.colorsSequential){fill=prop.colors[2];}}}
19
19
  var x=prop.gutterLeft+(outerWidth*i)+prop.hmargin;if(this.data[i]===null||typeof this.data[i]==='undefined'){var axisY=this.getYCoord(0);if(prevValue<0){y=prevY+prevHeight;}else{y=prevY;}
20
20
  height=this.getYCoord(0)-this.getYCoord(total);if(!prop.colorsSequential){fill=prop.colors[3]||prop.colors[2];}
21
21
  if(height<0){y+=height;height*=-1;}}
22
- var rect=RG.SVG.create({svg:this.svg,type:'rect',parent:this.svg.all,attr:{x:x,y:y,width:innerWidth,height:height,stroke:prop.strokestyle,fill:fill,'stroke-width':prop.linewidth,'shape-rendering':'crispEdges','data-index':i,'data-original-x':x,'data-original-y':y,'data-original-width':innerWidth,'data-original-height':height,'data-original-stroke':prop.strokestyle,'data-original-fill':fill,'data-value':String(this.data[i])}});this.coords[i]={object:rect,x:x,y:y,width:innerWidth,height:height};if(!RG.SVG.isNull(prop.tooltips)&&prop.tooltips[i]){var obj=this;(function(idx)
22
+ var rect=RG.SVG.create({svg:this.svg,type:'rect',parent:this.svg.all,attr:{x:x,y:y,width:innerWidth,height:height,stroke:prop.strokestyle,fill:fill,'stroke-width':prop.linewidth,'shape-rendering':'crispEdges','data-index':i,'data-original-x':x,'data-original-y':y,'data-original-width':innerWidth,'data-original-height':height,'data-original-stroke':prop.strokestyle,'data-original-fill':fill,'data-value':String(this.data[i])}});this.coords.push({object:this,element:rect,x:x,y:y,width:innerWidth,height:height});if(!RG.SVG.isNull(prop.tooltips)&&prop.tooltips[i]){var obj=this;(function(idx)
23
23
  {rect.addEventListener(prop.tooltipsEvent.replace(/^on/,''),function(e)
24
24
  {obj.removeHighlight();RG.SVG.tooltip({object:obj,index:idx,text:prop.tooltips[idx],event:e});obj.highlight(e.target);},false);rect.addEventListener('mousemove',function(e)
25
25
  {e.target.style.cursor='pointer'},false);})(i);}
26
26
  var prevX=x,prevY=y,prevWidth=innerWidth,prevHeight=height,prevValue=this.data[i];}
27
- for(var i=0;i<this.coords.length;++i){if(this.coords[i+1]&&this.coords[i+1].object){var x1=Number(this.coords[i].object.getAttribute('x'))+Number(this.coords[i].object.getAttribute('width')),y1=parseInt(this.coords[i].object.getAttribute('y'))+(this.data[i]>0?0:parseInt(this.coords[i].object.getAttribute('height'))),x2=x1+(2*prop.hmargin),y2=parseInt(this.coords[i].object.getAttribute('y'))+(this.data[i]>0?0:parseInt(this.coords[i].object.getAttribute('height')));if(this.coords[i].object.getAttribute('data-value')==='null'){y1=parseFloat(this.coords[i].object.getAttribute('y'));y2=parseFloat(y1);}
27
+ for(var i=0;i<this.coords.length;++i){if(this.coords[i+1]&&this.coords[i+1].element){var x1=Number(this.coords[i].element.getAttribute('x'))+Number(this.coords[i].element.getAttribute('width')),y1=parseInt(this.coords[i].element.getAttribute('y'))+(this.data[i]>0?0:parseInt(this.coords[i].element.getAttribute('height'))),x2=x1+(2*prop.hmargin),y2=parseInt(this.coords[i].element.getAttribute('y'))+(this.data[i]>0?0:parseInt(this.coords[i].element.getAttribute('height')));if(this.coords[i].element.getAttribute('data-value')==='null'){y1=parseFloat(this.coords[i].element.getAttribute('y'));y2=parseFloat(y1);}
28
28
  var line=RG.SVG.create({svg:this.svg,type:'line',parent:this.svg.all,attr:{x1:x1,y1:y1+0.5,x2:x2,y2:y2+0.5,stroke:prop.strokestyleConnector||prop.strokestyle,'stroke-width':prop.linewidth,'data-index':i,'data-original-x1':x1,'data-original-y1':y1+0.5,'data-original-x2':x2,'data-original-y2':y2+0.5}});}}};this.getYCoord=function(value)
29
29
  {var prop=this.properties;if(value>this.scale.max){return null;}
30
30
  var y,xaxispos=prop.xaxispos;if(value<this.scale.min){return null;}
31
31
  y=((value-this.scale.min)/(this.scale.max-this.scale.min));y*=(this.height-prop.gutterTop-prop.gutterBottom);y=this.height-prop.gutterBottom-y;return y;};this.highlight=function(rect)
32
- {var x=rect.getAttribute('x'),y=rect.getAttribute('y'),width=rect.getAttribute('width'),height=rect.getAttribute('height');var highlight=RG.SVG.create({svg:this.svg,type:'rect',parent:this.svg.all,attr:{stroke:prop.highlightStroke,fill:prop.highlightFill,x:x,y:y,width:width,height:height,'stroke-width':prop.highlightLinewidth}});RG.SVG.REG.set('highlight',highlight);};this.parseColors=function()
32
+ {var x=rect.getAttribute('x'),y=rect.getAttribute('y'),width=rect.getAttribute('width'),height=rect.getAttribute('height');var highlight=RG.SVG.create({svg:this.svg,type:'rect',parent:this.svg.all,attr:{stroke:prop.highlightStroke,fill:prop.highlightFill,x:x,y:y,width:width,height:height,'stroke-width':prop.highlightLinewidth},style:{pointerEvents:'none'}});RG.SVG.REG.set('highlight',highlight);};this.parseColors=function()
33
33
  {if(!Object.keys(this.originalColors).length){this.originalColors={colors:RG.SVG.arrayClone(prop.colors),backgroundGridColor:RG.SVG.arrayClone(prop.backgroundGridColor),highlightFill:RG.SVG.arrayClone(prop.highlightFill),backgroundColor:RG.SVG.arrayClone(prop.backgroundColor)}}
34
34
  var colors=prop.colors;if(colors){for(var i=0;i<colors.length;++i){colors[i]=RG.SVG.parseColorLinear({object:this,color:colors[i]});}}
35
35
  prop.backgroundGridColor=RG.SVG.parseColorLinear({object:this,color:prop.backgroundGridColor});prop.highlightFill=RG.SVG.parseColorLinear({object:this,color:prop.highlightFill});prop.backgroundColor=RG.SVG.parseColorLinear({object:this,color:prop.backgroundColor});};this.drawLabelsAbove=function()
36
36
  {if(prop.labelsAbove){var total=0;for(var i=0;i<this.coords.length;++i){var num=this.data[i],total=total+num;if(typeof num==='number'||RG.SVG.isNull(num)){if(RG.SVG.isNull(num)){num=total;}
37
37
  var str=RG.SVG.numberFormat({object:this,num:num.toFixed(prop.labelsAboveDecimals),prepend:typeof prop.labelsAboveUnitsPre==='string'?prop.labelsAboveUnitsPre:null,append:typeof prop.labelsAboveUnitsPost==='string'?prop.labelsAboveUnitsPost:null,point:typeof prop.labelsAbovePoint==='string'?prop.labelsAbovePoint:null,thousand:typeof prop.labelsAboveThousand==='string'?prop.labelsAboveThousand:null,formatter:typeof prop.labelsAboveFormatter==='function'?prop.labelsAboveFormatter:null});if(prop.labelsAboveSpecific&&prop.labelsAboveSpecific.length&&(typeof prop.labelsAboveSpecific[i]==='string'||typeof prop.labelsAboveSpecific[i]==='number')){str=prop.labelsAboveSpecific[i];}else if(prop.labelsAboveSpecific&&prop.labelsAboveSpecific.length&&typeof prop.labelsAboveSpecific[i]!=='string'&&typeof prop.labelsAboveSpecific[i]!=='number'){continue;}
38
- var x=parseFloat(this.coords[i].object.getAttribute('x'))+parseFloat(this.coords[i].object.getAttribute('width')/2)+prop.labelsAboveOffsetx;if(this.data[i]>=0){var y=parseFloat(this.coords[i].object.getAttribute('y'))-7+prop.labelsAboveOffsety;var valign=prop.labelsAboveValign;}else{var y=parseFloat(this.coords[i].object.getAttribute('y'))+parseFloat(this.coords[i].object.getAttribute('height'))+7-prop.labelsAboveOffsety;var valign=prop.labelsAboveValign==='top'?'bottom':'top';}
39
- RG.SVG.text({object:this,parent:this.svg.all,text:str,x:x,y:y,halign:prop.labelsAboveHalign,valign:valign,font:prop.labelsAboveFont||prop.textFont,size:prop.labelsAboveSize||prop.textSize,bold:prop.labelsAboveBold||prop.textBold,italic:prop.labelsAboveItalic||prop.textItalic,color:prop.labelsAboveColor||prop.textColor,background:prop.labelsAboveBackground||null,padding:prop.labelsAboveBackgroundPadding||0});}}}};this.on=function(type,func)
38
+ var x=parseFloat(this.coords[i].element.getAttribute('x'))+parseFloat(this.coords[i].element.getAttribute('width')/2)+prop.labelsAboveOffsetx;if(this.data[i]>=0){var y=parseFloat(this.coords[i].element.getAttribute('y'))-7+prop.labelsAboveOffsety;var valign=prop.labelsAboveValign;}else{var y=parseFloat(this.coords[i].element.getAttribute('y'))+parseFloat(this.coords[i].element.getAttribute('height'))+7-prop.labelsAboveOffsety;var valign=prop.labelsAboveValign==='top'?'bottom':'top';}
39
+ if(i===(this.coords.length-1)){var font=prop.labelsAboveLastFont||prop.labelsAboveFont||prop.textFont,size=prop.labelsAboveLastSize||prop.labelsAboveSize||prop.textSize,color=prop.labelsAboveLastColor||prop.labelsAboveColor||prop.textColor,background=prop.labelsAboveLastBackground||prop.labelsAboveBackground||null,padding=(typeof prop.labelsAboveLastBackgroundPadding==='number'?prop.labelsAboveLastBackgroundPadding:prop.labelsAboveBackgroundPadding)||0;if(typeof prop.labelsAboveLastBold==='boolean'){var bold=prop.labelsAboveLastBold;}else if(typeof prop.labelsAboveBold==='boolean'){var bold=prop.labelsAboveBold;}else{var bold=prop.textBold;}
40
+ if(typeof prop.labelsAboveLastItalic==='boolean'){var italic=prop.labelsAboveLastItalic;}else if(typeof prop.labelsAboveItalic==='boolean'){var italic=prop.labelsAboveItalic;}else{var italic=prop.textItalic;}}else{var font=prop.labelsAboveFont||prop.textFont,size=prop.labelsAboveSize||prop.textSize,color=prop.labelsAboveColor||prop.textColor,background=prop.labelsAboveBackground||null,padding=prop.labelsAboveBackgroundPadding||0;if(typeof prop.labelsAboveBold==='boolean'){var bold=prop.labelsAboveBold;}else{var bold=prop.textBold;}
41
+ if(typeof prop.labelsAboveItalic==='boolean'){var italic=prop.labelsAboveItalic;}else{var italic=prop.textItalic;}}
42
+ RG.SVG.text({object:this,parent:this.svg.all,tag:'labels.above',text:str,x:x,y:y,halign:prop.labelsAboveHalign,valign:valign,font:font,size:size,bold:bold,italic:italic,color:color,background:background,padding:padding});}}}};this.on=function(type,func)
40
43
  {if(type.substr(0,2)!=='on'){type='on'+type;}
41
44
  RG.SVG.addCustomEventListener(this,type,func);return this;};this.exec=function(func)
42
45
  {func(this);return this;};this.removeHighlight=function()
@@ -1,7 +1,7 @@
1
1
 
2
2
  RGraph=window.RGraph||{isRGraph:true};RGraph.Thermometer=function(conf)
3
3
  {if(typeof conf==='object'&&typeof conf.id==='string'){var parseConfObjectForOptions=true;}else{var conf={id:arguments[0],min:arguments[1],max:arguments[2],value:arguments[3]}}
4
- this.id=conf.id;this.canvas=document.getElementById(this.id);this.context=this.canvas.getContext?this.canvas.getContext('2d'):null;this.canvas.__object__=this;this.uid=RGraph.CreateUID();this.canvas.uid=this.canvas.uid?this.canvas.uid:RGraph.CreateUID();this.colorsParsed=false;this.type='thermometer';this.isRGraph=true;this.min=RGraph.stringsToNumbers(conf.min);this.max=RGraph.stringsToNumbers(conf.max);this.value=RGraph.stringsToNumbers(conf.value);this.coords=[];this.graphArea=[];this.currentValue=null;this.coordsText=[];this.original_colors=[];this.firstDraw=true;this.properties={'chart.linewidth':1,'chart.background.color':'white','chart.strokestyle':'black','chart.colors':['Gradient(#c00:red:#f66:#fcc)'],'chart.gutter.left':25,'chart.gutter.right':25,'chart.gutter.top':25,'chart.gutter.bottom':25,'chart.ticksize':2,'chart.text.color':'black','chart.text.font':'Segoe UI, Arial, Verdana, sans-serif','chart.text.size':12,'chart.text.accessible':true,'chart.text.accessible.overflow':'visible','chart.text.accessible.pointerevents':true,'chart.numticks':10,'chart.units.pre':'','chart.units.post':'','chart.zoom.factor':1.5,'chart.zoom.fade.in':true,'chart.zoom.fade.out':true,'chart.zoom.hdir':'right','chart.zoom.vdir':'down','chart.zoom.frames':25,'chart.zoom.delay':16.666,'chart.zoom.shadow':true,'chart.zoom.background':true,'chart.title':'','chart.title.side':'','chart.title.side.bold':true,'chart.title.side.font':null,'chart.shadow':true,'chart.shadow.offsetx':0,'chart.shadow.offsety':0,'chart.shadow.blur':15,'chart.shadow.color':'#ddd','chart.resizable':false,'chart.contextmenu':null,'chart.adjustable':false,'chart.value.label':true,'chart.value.label.decimals':null,'chart.value.label.thousand':',','chart.value.label.point':'.','chart.labels.count':5,'chart.scale.visible':false,'chart.scale.decimals':0,'chart.annotatable':false,'chart.annotate.color':'black','chart.scale.decimals':0,'chart.scale.point':'.','chart.scale.thousand':',','chart.tooltips':null,'chart.tooltips.highlight':true,'chart.tooltips.effect':'fade','chart.tooltips.event':'onclick','chart.highlight.stroke':'rgba(0,0,0,0)','chart.highlight.fill':'rgba(255,255,255,0.7)','chart.clearto':'rgba(0,0,0,0)','chart.bulb.bottom.radius.adjust':0,'chart.bulb.bottom.radius':null}
4
+ this.id=conf.id;this.canvas=document.getElementById(this.id);this.context=this.canvas.getContext?this.canvas.getContext('2d'):null;this.canvas.__object__=this;this.uid=RGraph.CreateUID();this.canvas.uid=this.canvas.uid?this.canvas.uid:RGraph.CreateUID();this.colorsParsed=false;this.type='thermometer';this.isRGraph=true;this.min=RGraph.stringsToNumbers(conf.min);this.max=RGraph.stringsToNumbers(conf.max);this.value=RGraph.stringsToNumbers(conf.value);this.coords=[];this.graphArea=[];this.currentValue=null;this.coordsText=[];this.original_colors=[];this.firstDraw=true;this.properties={'chart.linewidth':1,'chart.background.color':'white','chart.strokestyle':'black','chart.colors':['Gradient(#c00:red:#f66:#fcc)'],'chart.gutter.left':25,'chart.gutter.right':25,'chart.gutter.top':25,'chart.gutter.bottom':25,'chart.ticksize':2,'chart.text.color':'black','chart.text.font':'Arial, Verdana, sans-serif','chart.text.size':12,'chart.text.accessible':true,'chart.text.accessible.overflow':'visible','chart.text.accessible.pointerevents':false,'chart.numticks':10,'chart.units.pre':'','chart.units.post':'','chart.zoom.factor':1.5,'chart.zoom.fade.in':true,'chart.zoom.fade.out':true,'chart.zoom.hdir':'right','chart.zoom.vdir':'down','chart.zoom.frames':25,'chart.zoom.delay':16.666,'chart.zoom.shadow':true,'chart.zoom.background':true,'chart.title':'','chart.title.side':'','chart.title.side.bold':true,'chart.title.side.font':null,'chart.shadow':true,'chart.shadow.offsetx':0,'chart.shadow.offsety':0,'chart.shadow.blur':15,'chart.shadow.color':'#ddd','chart.resizable':false,'chart.contextmenu':null,'chart.adjustable':false,'chart.value.label':true,'chart.value.label.decimals':null,'chart.value.label.thousand':',','chart.value.label.point':'.','chart.labels.count':5,'chart.scale.visible':false,'chart.scale.decimals':0,'chart.annotatable':false,'chart.annotate.color':'black','chart.scale.decimals':0,'chart.scale.point':'.','chart.scale.thousand':',','chart.tooltips':null,'chart.tooltips.highlight':true,'chart.tooltips.effect':'fade','chart.tooltips.event':'onclick','chart.highlight.stroke':'rgba(0,0,0,0)','chart.highlight.fill':'rgba(255,255,255,0.7)','chart.clearto':'rgba(0,0,0,0)','chart.bulb.bottom.radius.adjust':0,'chart.bulb.bottom.radius':null}
5
5
  if(!this.canvas){alert('[THERMOMETER] No canvas support');return;}
6
6
  this.$0={};if(!this.canvas.__rgraph_aa_translated__){this.context.translate(0.5,0.5);this.canvas.__rgraph_aa_translated__=true;}
7
7
  var RG=RGraph,ca=this.canvas,co=ca.getContext('2d'),prop=this.properties,pa2=RG.path2,win=window,doc=document,ma=Math
@@ -1,7 +1,7 @@
1
1
 
2
2
  RGraph=window.RGraph||{isRGraph:true};RGraph.VProgress=function(conf)
3
3
  {if(typeof conf==='object'&&typeof conf.id==='string'){var parseConfObjectForOptions=true;}else{var conf={id:arguments[0],min:arguments[1],max:arguments[2],value:arguments[3]}}
4
- this.id=conf.id;this.canvas=document.getElementById(this.id);this.context=this.canvas.getContext('2d');this.canvas.__object__=this;this.min=RGraph.stringsToNumbers(conf.min);this.max=RGraph.stringsToNumbers(conf.max);this.value=RGraph.stringsToNumbers(conf.value);this.type='vprogress';this.coords=[];this.isRGraph=true;this.currentValue=null;this.uid=RGraph.CreateUID();this.canvas.uid=this.canvas.uid?this.canvas.uid:RGraph.CreateUID();this.colorsParsed=false;this.coordsText=[];this.original_colors=[];this.firstDraw=true;this.properties={'chart.colors':['Gradient(white:#0c0)','Gradient(white:red)','Gradient(white:green)','yellow','pink','cyan','black','white','gray'],'chart.strokestyle.inner':'#999','chart.strokestyle.outer':'#999','chart.tickmarks':true,'chart.tickmarks.zerostart':true,'chart.tickmarks.color':'#999','chart.tickmarks.inner':false,'chart.gutter.left':25,'chart.gutter.right':25,'chart.gutter.top':25,'chart.gutter.bottom':25,'chart.numticks':10,'chart.numticks.inner':50,'chart.background.color':'Gradient(#ccc:#eee:#efefef)','chart.shadow':false,'chart.shadow.color':'rgba(0,0,0,0.5)','chart.shadow.blur':3,'chart.shadow.offsetx':3,'chart.shadow.offsety':3,'chart.title':'','chart.title.bold':true,'chart.title.font':null,'chart.title.size':null,'chart.title.color':'black','chart.title.side':null,'chart.title.side.font':'Segoe UI, Arial, Verdana, sans-serif','chart.title.side.size':12,'chart.title.side.color':'black','chart.title.side.bold':true,'chart.text.size':12,'chart.text.color':'black','chart.text.font':'Segoe UI, Arial, Verdana, sans-serif','chart.text.accessible':true,'chart.text.accessible.overflow':'visible','chart.text.accessible.pointerevents':true,'chart.contextmenu':null,'chart.units.pre':'','chart.units.post':'','chart.tooltips':null,'chart.tooltips.effect':'fade','chart.tooltips.css.class':'RGraph_tooltip','chart.tooltips.highlight':true,'chart.tooltips.event':'onclick','chart.highlight.stroke':'rgba(0,0,0,0)','chart.highlight.fill':'rgba(255,255,255,0.7)','chart.annotatable':false,'chart.annotate.color':'black','chart.zoom.factor':1.5,'chart.zoom.fade.in':true,'chart.zoom.fade.out':true,'chart.zoom.hdir':'right','chart.zoom.vdir':'down','chart.zoom.frames':25,'chart.zoom.delay':16.666,'chart.zoom.shadow':true,'chart.zoom.background':true,'chart.zoom.action':'zoom','chart.arrows':false,'chart.margin':0,'chart.resizable':false,'chart.resize.handle.adjust':[0,0],'chart.resize.handle.background':null,'chart.label.inner':false,'chart.labels.count':10,'chart.labels.position':'right','chart.labels.offsetx':0,'chart.labels.offsety':0,'chart.adjustable':false,'chart.scale.decimals':0,'chart.scale.thousand':',','chart.scale.point':'.','chart.key':null,'chart.key.background':'white','chart.key.position':'graph','chart.key.halign':'right','chart.key.shadow':false,'chart.key.shadow.color':'#666','chart.key.shadow.blur':3,'chart.key.shadow.offsetx':2,'chart.key.shadow.offsety':2,'chart.key.position.gutter.boxed':false,'chart.key.position.x':null,'chart.key.position.y':null,'chart.key.color.shape':'square','chart.key.rounded':true,'chart.key.linewidth':1,'chart.key.colors':null,'chart.key.interactive':false,'chart.key.interactive.highlight.chart.stroke':'#000','chart.key.interactive.highlight.chart.fill':'rgba(255,255,255,0.7)','chart.key.interactive.highlight.label':'rgba(255,0,0,0.2)','chart.key.text.color':'black','chart.events.click':null,'chart.events.mousemove':null,'chart.border.inner':true,'chart.clearto':'rgba(0,0,0,0)'}
4
+ this.id=conf.id;this.canvas=document.getElementById(this.id);this.context=this.canvas.getContext('2d');this.canvas.__object__=this;this.min=RGraph.stringsToNumbers(conf.min);this.max=RGraph.stringsToNumbers(conf.max);this.value=RGraph.stringsToNumbers(conf.value);this.type='vprogress';this.coords=[];this.isRGraph=true;this.currentValue=null;this.uid=RGraph.CreateUID();this.canvas.uid=this.canvas.uid?this.canvas.uid:RGraph.CreateUID();this.colorsParsed=false;this.coordsText=[];this.original_colors=[];this.firstDraw=true;this.properties={'chart.colors':['Gradient(white:#0c0)','Gradient(white:red)','Gradient(white:green)','yellow','pink','cyan','black','white','gray'],'chart.strokestyle.inner':'#999','chart.strokestyle.outer':'#999','chart.tickmarks':true,'chart.tickmarks.zerostart':true,'chart.tickmarks.color':'#999','chart.tickmarks.inner':false,'chart.gutter.left':25,'chart.gutter.right':25,'chart.gutter.top':25,'chart.gutter.bottom':25,'chart.numticks':10,'chart.numticks.inner':50,'chart.background.color':'Gradient(#ccc:#eee:#efefef)','chart.shadow':false,'chart.shadow.color':'rgba(0,0,0,0.5)','chart.shadow.blur':3,'chart.shadow.offsetx':3,'chart.shadow.offsety':3,'chart.title':'','chart.title.bold':true,'chart.title.font':null,'chart.title.size':null,'chart.title.color':'black','chart.title.side':null,'chart.title.side.font':'Arial, Verdana, sans-serif','chart.title.side.size':12,'chart.title.side.color':'black','chart.title.side.bold':true,'chart.text.size':12,'chart.text.color':'black','chart.text.font':'Segoe UI, Arial, Verdana, sans-serif','chart.text.accessible':true,'chart.text.accessible.overflow':'visible','chart.text.accessible.pointerevents':false,'chart.contextmenu':null,'chart.units.pre':'','chart.units.post':'','chart.tooltips':null,'chart.tooltips.effect':'fade','chart.tooltips.css.class':'RGraph_tooltip','chart.tooltips.highlight':true,'chart.tooltips.event':'onclick','chart.highlight.stroke':'rgba(0,0,0,0)','chart.highlight.fill':'rgba(255,255,255,0.7)','chart.annotatable':false,'chart.annotate.color':'black','chart.zoom.factor':1.5,'chart.zoom.fade.in':true,'chart.zoom.fade.out':true,'chart.zoom.hdir':'right','chart.zoom.vdir':'down','chart.zoom.frames':25,'chart.zoom.delay':16.666,'chart.zoom.shadow':true,'chart.zoom.background':true,'chart.zoom.action':'zoom','chart.arrows':false,'chart.margin':0,'chart.resizable':false,'chart.resize.handle.adjust':[0,0],'chart.resize.handle.background':null,'chart.label.inner':false,'chart.labels.count':10,'chart.labels.position':'right','chart.labels.offsetx':0,'chart.labels.offsety':0,'chart.adjustable':false,'chart.scale.decimals':0,'chart.scale.thousand':',','chart.scale.point':'.','chart.key':null,'chart.key.background':'white','chart.key.position':'graph','chart.key.halign':'right','chart.key.shadow':false,'chart.key.shadow.color':'#666','chart.key.shadow.blur':3,'chart.key.shadow.offsetx':2,'chart.key.shadow.offsety':2,'chart.key.position.gutter.boxed':false,'chart.key.position.x':null,'chart.key.position.y':null,'chart.key.color.shape':'square','chart.key.rounded':true,'chart.key.linewidth':1,'chart.key.colors':null,'chart.key.interactive':false,'chart.key.interactive.highlight.chart.stroke':'#000','chart.key.interactive.highlight.chart.fill':'rgba(255,255,255,0.7)','chart.key.interactive.highlight.label':'rgba(255,0,0,0.2)','chart.key.text.color':'black','chart.events.click':null,'chart.events.mousemove':null,'chart.border.inner':true,'chart.clearto':'rgba(0,0,0,0)'}
5
5
  if(!this.canvas){alert('[PROGRESS] No canvas support');return;}
6
6
  var linear_data=RGraph.arrayLinearize(this.value);for(var i=0;i<linear_data.length;++i){this['$'+i]={};}
7
7
  if(!this.canvas.__rgraph_aa_translated__){this.context.translate(0.5,0.5);this.canvas.__rgraph_aa_translated__=true;}
@@ -1,7 +1,7 @@
1
1
 
2
2
  RGraph=window.RGraph||{isRGraph:true};RGraph.Waterfall=function(conf)
3
3
  {if(typeof conf==='object'&&typeof conf.data==='object'&&typeof conf.id==='string'){var parseConfObjectForOptions=true;}else{var conf={id:conf,data:arguments[1]};}
4
- this.id=conf.id;this.canvas=document.getElementById(this.id);this.context=this.canvas.getContext?this.canvas.getContext("2d"):null;this.canvas.__object__=this;this.type='waterfall';this.max=0;this.data=conf.data;this.isRGraph=true;this.coords=[];this.uid=RGraph.CreateUID();this.canvas.uid=this.canvas.uid?this.canvas.uid:RGraph.CreateUID();this.colorsParsed=false;this.coordsText=[];this.original_colors=[];this.firstDraw=true;this.properties={'chart.background.barcolor1':'rgba(0,0,0,0)','chart.background.barcolor2':'rgba(0,0,0,0)','chart.background.grid':true,'chart.background.grid.color':'#ddd','chart.background.grid.width':1,'chart.background.grid.hsize':20,'chart.background.grid.vsize':20,'chart.background.grid.vlines':true,'chart.background.grid.hlines':true,'chart.background.grid.border':true,'chart.background.grid.autofit':true,'chart.background.grid.autofit.align':true,'chart.background.grid.autofit.numhlines':5,'chart.background.grid.autofit.numvlines':20,'chart.background.image':null,'chart.background.hbars':null,'chart.linewidth':1,'chart.axis.linewidth':1,'chart.xaxispos':'bottom','chart.numxticks':null,'chart.numyticks':10,'chart.hmargin':5,'chart.strokestyle':'#666','chart.axis.color':'black','chart.gutter.left':25,'chart.gutter.right':25,'chart.gutter.top':25,'chart.gutter.bottom':25,'chart.labels':[],'chart.labels.bold':false,'chart.labels.offsetx':0,'chart.labels.offsety':0,'chart.ylabels.offsetx':0,'chart.ylabels.offsety':0,'chart.ylabels':true,'chart.text.color':'black','chart.text.size':12,'chart.text.angle':0,'chart.text.font':'Segoe UI, Arial, Verdana, sans-serif','chart.text.accessible':true,'chart.text.accessible.overflow':'visible','chart.text.accessible.pointerevents':true,'chart.ymax':null,'chart.title':'','chart.title.color':'black','chart.title.background':null,'chart.title.hpos':null,'chart.title.vpos':null,'chart.title.bold':true,'chart.title.font':null,'chart.title.xaxis':'','chart.title.yaxis':'','chart.title.yaxis.bold':true,'chart.title.yaxis.size':null,'chart.title.yaxis.font':null,'chart.title.yaxis.color':null,'chart.title.xaxis.pos':null,'chart.title.yaxis.pos':null,'chart.title.yaxis.align':'left','chart.title.xaxis.bold':true,'chart.title.xaxis.size':null,'chart.title.xaxis.font':null,'chart.title.xaxis.color':null,'chart.title.yaxis.x':null,'chart.title.yaxis.y':null,'chart.title.xaxis.x':null,'chart.title.xaxis.y':null,'chart.title.x':null,'chart.title.y':null,'chart.title.halign':null,'chart.title.valign':null,'chart.colors':['green','red','blue'],'chart.colors.sequential':false,'chart.shadow':false,'chart.shadow.color':'#666','chart.shadow.offsetx':3,'chart.shadow.offsety':3,'chart.shadow.blur':3,'chart.tooltips':null,'chart.tooltips.effect':'fade','chart.tooltips.css.class':'RGraph_tooltip','chart.tooltips.event':'onclick','chart.tooltips.highlight':true,'chart.tooltips.override':null,'chart.highlight.stroke':'rgba(0,0,0,0)','chart.highlight.fill':'rgba(255,255,255,0.7)','chart.contextmenu':null,'chart.units.pre':'','chart.units.post':'','chart.scale.decimals':0,'chart.scale.point':'.','chart.scale.thousand':',','chart.scale.zerostart':true,'chart.crosshairs':false,'chart.crosshairs.color':'#333','chart.crosshairs.hline':true,'chart.crosshairs.vline':true,'chart.annotatable':false,'chart.annotate.color':'black','chart.zoom.factor':1.5,'chart.zoom.fade.in':true,'chart.zoom.fade.out':true,'chart.zoom.hdir':'right','chart.zoom.vdir':'down','chart.zoom.frames':25,'chart.zoom.delay':16.666,'chart.zoom.shadow':true,'chart.zoom.background':true,'chart.resizable':false,'chart.resize.handle.background':null,'chart.noaxes':false,'chart.noxaxis':false,'chart.noyaxis':false,'chart.axis.color':'black','chart.total':true,'chart.multiplier.x':1,'chart.multiplier.w':1,'chart.events.click':null,'chart.events.mousemove':null,'chart.ylabels.count':5,'chart.ymin':0,'chart.clearto':'rgba(0,0,0,0)','chart.key':null,'chart.key.background':'white','chart.key.position':'graph','chart.key.halign':'right','chart.key.shadow':false,'chart.key.shadow.color':'#666','chart.key.shadow.blur':3,'chart.key.shadow.offsetx':2,'chart.key.shadow.offsety':2,'chart.key.position.gutter.boxed':false,'chart.key.position.x':null,'chart.key.position.y':null,'chart.key.color.shape':'square','chart.key.rounded':true,'chart.key.linewidth':1,'chart.key.colors':null,'chart.key.interactive':false,'chart.key.interactive.highlight.chart.stroke':'#000','chart.key.interactive.highlight.chart.fill':'rgba(255,255,255,0.7)','chart.key.interactive.highlight.label':'rgba(255,0,0,0.2)','chart.key.text.color':'black',}
4
+ this.id=conf.id;this.canvas=document.getElementById(this.id);this.context=this.canvas.getContext?this.canvas.getContext("2d"):null;this.canvas.__object__=this;this.type='waterfall';this.max=0;this.data=conf.data;this.isRGraph=true;this.coords=[];this.uid=RGraph.CreateUID();this.canvas.uid=this.canvas.uid?this.canvas.uid:RGraph.CreateUID();this.colorsParsed=false;this.coordsText=[];this.original_colors=[];this.firstDraw=true;this.properties={'chart.background.barcolor1':'rgba(0,0,0,0)','chart.background.barcolor2':'rgba(0,0,0,0)','chart.background.grid':true,'chart.background.grid.color':'#ddd','chart.background.grid.width':1,'chart.background.grid.hsize':20,'chart.background.grid.vsize':20,'chart.background.grid.vlines':true,'chart.background.grid.hlines':true,'chart.background.grid.border':true,'chart.background.grid.autofit':true,'chart.background.grid.autofit.align':true,'chart.background.grid.autofit.numhlines':5,'chart.background.grid.autofit.numvlines':20,'chart.background.image':null,'chart.background.hbars':null,'chart.linewidth':1,'chart.axis.linewidth':1,'chart.xaxispos':'bottom','chart.numxticks':null,'chart.numyticks':10,'chart.hmargin':5,'chart.strokestyle':'#666','chart.axis.color':'black','chart.gutter.left':25,'chart.gutter.right':25,'chart.gutter.top':25,'chart.gutter.bottom':25,'chart.labels':[],'chart.labels.bold':false,'chart.labels.offsetx':0,'chart.labels.offsety':0,'chart.ylabels.offsetx':0,'chart.ylabels.offsety':0,'chart.ylabels':true,'chart.text.color':'black','chart.text.size':12,'chart.text.angle':0,'chart.text.font':'Arial, Verdana, sans-serif','chart.text.accessible':true,'chart.text.accessible.overflow':'visible','chart.text.accessible.pointerevents':false,'chart.ymax':null,'chart.title':'','chart.title.color':'black','chart.title.background':null,'chart.title.hpos':null,'chart.title.vpos':null,'chart.title.bold':true,'chart.title.font':null,'chart.title.xaxis':'','chart.title.yaxis':'','chart.title.yaxis.bold':true,'chart.title.yaxis.size':null,'chart.title.yaxis.font':null,'chart.title.yaxis.color':null,'chart.title.xaxis.pos':null,'chart.title.yaxis.pos':null,'chart.title.yaxis.align':'left','chart.title.xaxis.bold':true,'chart.title.xaxis.size':null,'chart.title.xaxis.font':null,'chart.title.xaxis.color':null,'chart.title.yaxis.x':null,'chart.title.yaxis.y':null,'chart.title.xaxis.x':null,'chart.title.xaxis.y':null,'chart.title.x':null,'chart.title.y':null,'chart.title.halign':null,'chart.title.valign':null,'chart.colors':['green','red','blue'],'chart.colors.sequential':false,'chart.shadow':false,'chart.shadow.color':'#666','chart.shadow.offsetx':3,'chart.shadow.offsety':3,'chart.shadow.blur':3,'chart.tooltips':null,'chart.tooltips.effect':'fade','chart.tooltips.css.class':'RGraph_tooltip','chart.tooltips.event':'onclick','chart.tooltips.highlight':true,'chart.tooltips.override':null,'chart.highlight.stroke':'rgba(0,0,0,0)','chart.highlight.fill':'rgba(255,255,255,0.7)','chart.contextmenu':null,'chart.units.pre':'','chart.units.post':'','chart.scale.decimals':0,'chart.scale.point':'.','chart.scale.thousand':',','chart.scale.zerostart':true,'chart.crosshairs':false,'chart.crosshairs.color':'#333','chart.crosshairs.hline':true,'chart.crosshairs.vline':true,'chart.annotatable':false,'chart.annotate.color':'black','chart.zoom.factor':1.5,'chart.zoom.fade.in':true,'chart.zoom.fade.out':true,'chart.zoom.hdir':'right','chart.zoom.vdir':'down','chart.zoom.frames':25,'chart.zoom.delay':16.666,'chart.zoom.shadow':true,'chart.zoom.background':true,'chart.resizable':false,'chart.resize.handle.background':null,'chart.noaxes':false,'chart.noxaxis':false,'chart.noyaxis':false,'chart.axis.color':'black','chart.total':true,'chart.multiplier.x':1,'chart.multiplier.w':1,'chart.events.click':null,'chart.events.mousemove':null,'chart.ylabels.count':5,'chart.ymin':0,'chart.clearto':'rgba(0,0,0,0)','chart.key':null,'chart.key.background':'white','chart.key.position':'graph','chart.key.halign':'right','chart.key.shadow':false,'chart.key.shadow.color':'#666','chart.key.shadow.blur':3,'chart.key.shadow.offsetx':2,'chart.key.shadow.offsety':2,'chart.key.position.gutter.boxed':false,'chart.key.position.x':null,'chart.key.position.y':null,'chart.key.color.shape':'square','chart.key.rounded':true,'chart.key.linewidth':1,'chart.key.colors':null,'chart.key.interactive':false,'chart.key.interactive.highlight.chart.stroke':'#000','chart.key.interactive.highlight.chart.fill':'rgba(255,255,255,0.7)','chart.key.interactive.highlight.label':'rgba(255,0,0,0.2)','chart.key.text.color':'black',}
5
5
  if(!this.canvas){alert('[WATERFALL] No canvas support');return;}
6
6
  for(var i=0,len=this.data.length;i<=len;++i){this['$'+i]={}
7
7
  if(typeof this.data[i]==='string'){this.data[i]=parseFloat(this.data[i]);}}
@@ -39,9 +39,9 @@ co.stroke();};this.drawLabels=this.DrawLabels=function()
39
39
  {var context=co,numYLabels=5,interval=this.grapharea/numYLabels,font=prop['chart.text.font'],size=prop['chart.text.size'],color=prop['chart.text.color'],units_pre=prop['chart.units.pre'],units_post=prop['chart.units.post'],offsetx=prop['chart.ylabels.offsetx'],offsety=prop['chart.ylabels.offsety'];co.beginPath();co.fillStyle=color;if(prop['chart.ylabels']){if(prop['chart.xaxispos']=='center'){var halfInterval=interval/2;var halfWay=((ca.height-this.gutterTop-this.gutterBottom)/2)+this.gutterTop;for(var i=0,len=this.scale2.labels.length;i<len;++i){RG.text2(this,{font:font,size:size,x:this.gutterLeft-5+offsetx,y:this.gutterTop+(((this.grapharea/2)/len)*i)+offsety,text:this.scale2.labels[len-i-1],valign:'center',halign:'right',tag:'scale'});RG.text2(this,{font:font,size:size,x:this.gutterLeft-5+offsetx,y:halfWay+(((this.grapharea/2)/len)*(i+1))+offsety,text:this.scale2.labels[i],valign:'center',halign:'right',tag:'scale'});}
40
40
  if(prop['chart.scale.zerostart']){RG.text2(co,{x:this.gutterLeft-5+offsetx,y:halfWay,text:'0',font:font,size:size,valign:'center',halign:'right',tag:'scale'});}}else{for(var i=0,len=this.scale2.values.length;i<len;++i){var y=this.getYCoord(this.scale2.values[i])+offsety;RG.text2(this,{font:font,size:size,x:this.gutterLeft-5+offsetx,y:y,text:this.scale2.labels[i],valign:'center',halign:'right',tag:'scale'});}
41
41
  if(prop['chart.scale.zerostart']||prop['chart.ymin']!==0){RG.text2(co,{x:this.gutterLeft-5+offsetx,y:this.getYCoord(prop['chart.ymin']||0),text:RG.numberFormat(this,String(Number(prop['chart.ymin']||0).toFixed(prop['chart.ymin']===0?0:prop['chart.scale.decimals'])),prop['chart.units.pre'],prop['chart.units.post']),font:font,size:size,valign:'center',halign:'right',tag:'scale'});}}}
42
- if(prop['chart.labels'].length>0){interval=(ca.width-this.gutterLeft-this.gutterRight)/prop['chart.labels'].length;var halign='center';var angle=prop['chart.text.angle'];if(angle){halign='right';angle*=-1;}
42
+ if(prop['chart.labels'].length>0){interval=(ca.width-this.gutterLeft-this.gutterRight)/prop['chart.labels'].length;var halign='center',valign='top',angle=prop['chart.text.angle'];if(angle){halign='right';angle*=-1;}
43
43
  var labels=prop['chart.labels'],labelsColor=prop['chart.labels.color'],bold=prop['chart.labels.bold'],offsetx=prop['chart.labels.offsetx'],offsety=prop['chart.labels.offsety']
44
- for(var i=0,len=labels.length;i<len;i+=1){RG.text2(this,{'color':labelsColor,'font':font,'size':size,'bold':bold,'x':this.gutterLeft+(i*interval)+(interval/2)+offsetx,'y':ca.height-this.gutterBottom+5+this.halfTextHeight+offsety,'text':labels[i],'valign':'center','halign':halign,'angle':angle,'tag':'labels'});}}
44
+ for(var i=0,len=labels.length;i<len;i+=1){RG.text2(this,{color:labelsColor,font:font,size:size,bold:bold,x:this.gutterLeft+(i*interval)+(interval/2)+offsetx,y:ca.height-this.gutterBottom+this.halfTextHeight+offsety,text:labels[i],valign:valign,halign:halign,angle:angle,tag:'labels'});}}
45
45
  co.stroke();co.fill();};this.drawbars=this.Drawbars=function()
46
46
  {var context=co,canvas=ca,hmargin=prop['chart.hmargin'],runningTotal=0;co.lineWidth=prop['chart.linewidth']+0.001;for(var i=0,len=this.data.length,seq=0;i<len;++i,++seq){co.beginPath();co.strokeStyle=prop['chart.strokestyle'];var x=ma.round(this.gutterLeft+hmargin+(((this.graphwidth/(this.data.length+(prop['chart.total']?1:0)))*i)*prop['chart.multiplier.x']));var h=this.getYCoord(0)-this.getYCoord(ma.abs(this.data[i]));if(i===0){y=this.getYCoord(0)-h;}else{y=this.getYCoord(runningTotal)-h;}
47
47
  y=ma.round(y);var w=((ca.width-this.gutterLeft-this.gutterRight)/(this.data.length+(prop['chart.total']?1:0)))-(2*prop['chart.hmargin']);w=w*prop['chart.multiplier.w'];if(this.data[i]<0){y+=h;}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rgraph-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: '4.64'
4
+ version: '4.67'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Griffin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-25 00:00:00.000000000 Z
11
+ date: 2018-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -130,6 +130,7 @@ files:
130
130
  - vendor/assets/javascripts/RGraph.scatter.js
131
131
  - vendor/assets/javascripts/RGraph.semicircularprogress.js
132
132
  - vendor/assets/javascripts/RGraph.svg.bar.js
133
+ - vendor/assets/javascripts/RGraph.svg.bipolar.js
133
134
  - vendor/assets/javascripts/RGraph.svg.common.ajax.js
134
135
  - vendor/assets/javascripts/RGraph.svg.common.core.js
135
136
  - vendor/assets/javascripts/RGraph.svg.common.csv.js
@@ -138,6 +139,7 @@ files:
138
139
  - vendor/assets/javascripts/RGraph.svg.common.sheets.js
139
140
  - vendor/assets/javascripts/RGraph.svg.common.tooltips.js
140
141
  - vendor/assets/javascripts/RGraph.svg.funnel.js
142
+ - vendor/assets/javascripts/RGraph.svg.gauge.js
141
143
  - vendor/assets/javascripts/RGraph.svg.hbar.js
142
144
  - vendor/assets/javascripts/RGraph.svg.line.js
143
145
  - vendor/assets/javascripts/RGraph.svg.pie.js