hqchart 1.1.12379 → 1.1.12384

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3087,6 +3087,7 @@ this.NotSupportMessage=null;this.MessageFont=g_JSChartResource.Index.NotSupport.
3087
3087
  this.GetEventCallback;this.SelectedLineWidth=g_JSChartResource.SelectedChart.LineWidth;this.SelectedLineColor=g_JSChartResource.SelectedChart.LineColor;this.SelectedRadius=g_JSChartResource.SelectedChart.Radius;this.SelectedPointMinSpace=g_JSChartResource.SelectedChart.MinSpace;//点和点间最小间距
3088
3088
  this.SelectedBGColor=g_JSChartResource.SelectedChart.BGColor;this.DrawSelectedStatus;//function() { } //选中状态
3089
3089
  this.PtInChart;//function(x,y) { }
3090
+ this.IsFullRangeMaxMin=false;//this.GetMaxMin() true=计算全部的最大最小值 false=计算可视范围的最大最小值
3090
3091
  this.Draw=function(){};//数据导出 数据格式 [{ Title:数据名称, Data:[] }]
3091
3092
  //this.ExportData=function(aryKData) { }
3092
3093
  this.GetBorder=function(){if(this.ChartFrame.IsHScreen)return this.ChartBorder.GetHScreenBorder();return this.ChartBorder.GetBorder();};this.ClipClient=function(isHScreen)//裁剪客户端
@@ -4096,8 +4097,8 @@ this.ArrawAngle=35;//三角斜边一直线夹角
4096
4097
  this.ArrawLength=10;//三角斜边长度
4097
4098
  this.ArrawLineWidth=5;//箭头粗细
4098
4099
  this.Arrow={Start:false,End:false};//Start=是否绘制开始箭头 <- End=是否绘制结束箭头 ->
4099
- this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(!this.Data||this.Data.length<=0)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Lines))return;this.IsHScreen=this.ChartFrame.IsHScreen===true;var xPointCount=this.ChartFrame.XPointCount;var offset=this.Data.DataOffset;var drawLines=[];var arrowLines=[];for(var i=0;i<this.Lines.length;++i){var line=this.Lines[i];var drawPoints={Point:[],Color:line.Color};var drawArrowPoints={Start:[],End:[]};if(line.BGColor)drawPoints.BGColor=line.BGColor;var isExtendLine=false;if(IFrameSplitOperator.IsBool(line.IsExtendLine))isExtendLine=line.IsExtendLine;if(isExtendLine)//左右延申
4100
- {var prePoint=null;var bFirstPoint=true;for(var j=0;j<line.Point.length;++j){var point=line.Point[j];if(!IFrameSplitOperator.IsNumber(point.Index))continue;var index=point.Index-offset;if(index>0&&index<xPointCount){if(bFirstPoint){if(prePoint){var preIndex=prePoint.Index-offset;var x=this.ChartFrame.GetXFromIndex(preIndex,false);var y=this.ChartFrame.GetYFromData(prePoint.Value,false);var pointItem={X:x,Y:y,End:false};drawPoints.Point.push(pointItem);}bFirstPoint=false;}var x=this.ChartFrame.GetXFromIndex(index,false);var y=this.ChartFrame.GetYFromData(point.Value,false);var pointItem={X:x,Y:y,End:false};drawPoints.Point.push(pointItem);}else{if(drawPoints.Point.length>0){var x=this.ChartFrame.GetXFromIndex(index,false);var y=this.ChartFrame.GetYFromData(point.Value,false);var pointItem={X:x,Y:y,End:true};drawPoints.Point.push(pointItem);}}prePoint=point;}if(drawPoints.Point.length>=2){drawLines.push(drawPoints);arrowLines.push(drawArrowPoints);}}else{for(var j=0;j<line.Point.length;++j){var point=line.Point[j];if(!IFrameSplitOperator.IsNumber(point.Index))continue;var index=point.Index-offset;if(index>=0&&index<xPointCount){var x=this.ChartFrame.GetXFromIndex(index);var y=this.ChartFrame.GetYFromData(point.Value,false);var pointItem={X:x,Y:y,End:false};drawPoints.Point.push(pointItem);if(j==0||j==1)drawArrowPoints.Start.push(pointItem);//起始点
4100
+ this.IsFullRangeMaxMin=false;this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(!this.Data||this.Data.length<=0)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Lines))return;this.IsHScreen=this.ChartFrame.IsHScreen===true;var xPointCount=this.ChartFrame.XPointCount;var offset=this.Data.DataOffset;var drawLines=[];var arrowLines=[];for(var i=0;i<this.Lines.length;++i){var line=this.Lines[i];var drawPoints={Point:[],Color:line.Color};var drawArrowPoints={Start:[],End:[]};if(line.BGColor)drawPoints.BGColor=line.BGColor;var isExtendLine=false;if(IFrameSplitOperator.IsBool(line.IsExtendLine))isExtendLine=line.IsExtendLine;if(isExtendLine)//左右延申
4101
+ {var prePoint=null;var bFirstPoint=true;for(var j=0;j<line.Point.length;++j){var point=line.Point[j];if(!IFrameSplitOperator.IsNumber(point.Index))continue;var index=point.Index-offset;if(index>0&&index<xPointCount){if(bFirstPoint){if(prePoint){var preIndex=prePoint.Index-offset;var x=this.ChartFrame.GetXFromIndex(preIndex,false);var y=this.ChartFrame.GetYFromData(prePoint.Value,false);var pointItem={X:x,Y:y,End:false};drawPoints.Point.push(pointItem);}bFirstPoint=false;}var x=this.ChartFrame.GetXFromIndex(index,false);var y=this.ChartFrame.GetYFromData(point.Value,false);var pointItem={X:x,Y:y,End:false};drawPoints.Point.push(pointItem);}else{if(drawPoints.Point.length>0){var x=this.ChartFrame.GetXFromIndex(index,false);var y=this.ChartFrame.GetYFromData(point.Value,false);var pointItem={X:x,Y:y,End:true};drawPoints.Point.push(pointItem);bFirstPoint=true;prePoint=null;}}prePoint=point;}if(drawPoints.Point.length>=2){drawLines.push(drawPoints);arrowLines.push(drawArrowPoints);}}else{for(var j=0;j<line.Point.length;++j){var point=line.Point[j];if(!IFrameSplitOperator.IsNumber(point.Index))continue;var index=point.Index-offset;if(index>=0&&index<xPointCount){var x=this.ChartFrame.GetXFromIndex(index);var y=this.ChartFrame.GetYFromData(point.Value,false);var pointItem={X:x,Y:y,End:false};drawPoints.Point.push(pointItem);if(j==0||j==1)drawArrowPoints.Start.push(pointItem);//起始点
4101
4102
  if(j==line.Point.length-1||j==line.Point.length-2)drawArrowPoints.End.push(pointItem);//结束点
4102
4103
  }else{if(drawPoints.Point.length>0)drawPoints.Point[drawPoints.Point.length-1].End=true;//点断开
4103
4104
  }}if(drawPoints.Point.length>=2){drawLines.push(drawPoints);arrowLines.push(drawArrowPoints);}}}var pixelRatio=GetDevicePixelRatio();this.Canvas.save();this.ClipClient(this.IsHScreen);for(var i=0;i<drawLines.length;++i){if(this.LineDash)this.Canvas.setLineDash(this.LineDash);if(IFrameSplitOperator.IsPlusNumber(this.LineWidth))this.Canvas.lineWidth=this.LineWidth*pixelRatio;else this.Canvas.lineWidth=1*pixelRatio;var item=drawLines[i];this.DrawLine(item,arrowLines[i]);}this.Canvas.restore();};this.DrawLine=function(line,arrow){if(line.BGColor)//背景色
@@ -4106,7 +4107,8 @@ if(j==line.Point.length-1||j==line.Point.length-2)drawArrowPoints.End.push(point
4106
4107
  if(arrow.End.length==2&&this.Arrow.End==true)this.DrawArrow(arrow.End[0],arrow.End[1]);if(arrow.Start.length==2&&this.Arrow.Start==true)this.DrawArrow(arrow.Start[1],arrow.Start[0]);};this.DrawArrow=function(ptStart,ptEnd){//计算箭头
4107
4108
  var theta=this.ArrawAngle;//三角斜边一直线夹角
4108
4109
  var headlen=this.ArrawLength;//三角斜边长度
4109
- var angle=Math.atan2(ptStart.Y-ptEnd.Y,ptStart.X-ptEnd.X)*180/Math.PI,angle1=(angle+theta)*Math.PI/180,angle2=(angle-theta)*Math.PI/180,topX=headlen*Math.cos(angle1),topY=headlen*Math.sin(angle1),botX=headlen*Math.cos(angle2),botY=headlen*Math.sin(angle2);this.Canvas.beginPath();var arrowX=ptEnd.X+topX;var arrowY=ptEnd.Y+topY;this.Canvas.moveTo(arrowX,arrowY);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);arrowX=ptEnd.X+botX;arrowY=ptEnd.Y+botY;this.Canvas.lineTo(arrowX,arrowY);this.Canvas.setLineDash([]);this.Canvas.lineWidth=this.ArrawLineWidth*GetDevicePixelRatio();this.Canvas.stroke();};this.GetMaxMin=function(){var range={Min:null,Max:null};var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;var end=start+xPointCount;for(var i in this.Lines){var line=this.Lines[i];for(var j in line.Point){var point=line.Point[j];if(point.Index>=start&&point.Index<end){if(range.Max==null)range.Max=point.Value;else if(range.Max<point.Value)range.Max=point.Value;if(range.Min==null)range.Min=point.Value;else if(range.Min>point.Value)range.Min=point.Value;}}}return range;};}// 线段集合 支持横屏
4110
+ var angle=Math.atan2(ptStart.Y-ptEnd.Y,ptStart.X-ptEnd.X)*180/Math.PI,angle1=(angle+theta)*Math.PI/180,angle2=(angle-theta)*Math.PI/180,topX=headlen*Math.cos(angle1),topY=headlen*Math.sin(angle1),botX=headlen*Math.cos(angle2),botY=headlen*Math.sin(angle2);this.Canvas.beginPath();var arrowX=ptEnd.X+topX;var arrowY=ptEnd.Y+topY;this.Canvas.moveTo(arrowX,arrowY);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);arrowX=ptEnd.X+botX;arrowY=ptEnd.Y+botY;this.Canvas.lineTo(arrowX,arrowY);this.Canvas.setLineDash([]);this.Canvas.lineWidth=this.ArrawLineWidth*GetDevicePixelRatio();this.Canvas.stroke();};this.GetMaxMin=function(){if(this.IsFullRangeMaxMin)return this.GetFullRangeMaxMin();var range={Min:null,Max:null};var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;var end=start+xPointCount;for(var i in this.Lines){var line=this.Lines[i];for(var j in line.Point){var point=line.Point[j];if(point.Index>=start&&point.Index<end){if(range.Max==null)range.Max=point.Value;else if(range.Max<point.Value)range.Max=point.Value;if(range.Min==null)range.Min=point.Value;else if(range.Min>point.Value)range.Min=point.Value;}}}return range;};//全部数据的最大最小值
4111
+ this.GetFullRangeMaxMin=function(){var range={Min:null,Max:null};if(!IFrameSplitOperator.IsNonEmptyArray(this.Lines))return range;for(var i=0;i<this.Lines.length;++i){var line=this.Lines[i];if(!IFrameSplitOperator.IsNonEmptyArray(line.Point))continue;for(var j=0;j<line.Point.length;++j){var point=line.Point[j];if(range.Max==null)range.Max=point.Value;else if(range.Max<point.Value)range.Max=point.Value;if(range.Min==null)range.Min=point.Value;else if(range.Min>point.Value)range.Min=point.Value;}}return range;};}// 线段集合 支持横屏
4110
4112
  function ChartMultiPoint(){this.newMethod=IChartPainting;//派生
4111
4113
  this.newMethod();delete this.newMethod;this.ClassName="ChartMultiPoint";this.PointGroup=[];// [ {Point:[ {Index, Value }, ], Color: }, ]
4112
4114
  this.IsHScreen=false;this.LineWidth=1;this.PointRadius=5;this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(!this.Data||this.Data.length<=0)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.PointGroup))return;this.IsHScreen=this.ChartFrame.IsHScreen===true;var xPointCount=this.ChartFrame.XPointCount;var offset=this.Data.DataOffset;var pixel=GetDevicePixelRatio();this.Canvas.save();this.ClipClient(this.IsHScreen);for(var i=0;i<this.PointGroup.length;++i){var item=this.PointGroup[i];var color=item.Color;var bgColor=item.BGColor;var lineWidth=this.LineWidth;var radius=this.PointRadius;if(IFrameSplitOperator.IsNumber(item.LineWidth))lineWidth=item.LineWidth;if(IFrameSplitOperator.IsNumber(item.PointRadius))radius=item.PointRadius;var path=new Path2D();var count=0;for(var j=0;j<item.Point.length;++j){var point=item.Point[j];if(!IFrameSplitOperator.IsNumber(point.Index))continue;var index=point.Index-offset;if(index>=0&&index<xPointCount){var x=this.ChartFrame.GetXFromIndex(index);var y=this.ChartFrame.GetYFromData(point.Value,false);var pointPath=new Path2D();if(this.IsHScreen)pointPath.arc(y,x,radius*pixel,0,360,false);else pointPath.arc(x,y,radius*pixel,0,360,false);path.addPath(pointPath);++count;}}if(count>0&&(bgColor||color)){this.Canvas.lineWidth=lineWidth*pixel;this.Canvas.fillStyle=bgColor;//背景填充颜色
@@ -4144,7 +4146,9 @@ this.newMethod();delete this.newMethod;this.ClassName="ChartDrawSVG";this.Family
4144
4146
  this.IsHScreen=false;//是否横屏
4145
4147
  this.IsDestroy=false;//是否已销毁
4146
4148
  this.EnableTooltip=true;this.TooltipRect=[];//this.Data; 存K线数据
4147
- this.Draw=function(){this.TooltipRect=[];if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;this.DrawSVG();};this.DrawDetail=function(rtSVG,data){if(!IFrameSplitOperator.IsNonEmptyArray(data.Content))return;var lefMargin=2;var rightMargin=2;var itemSpace=2;var rtBorder={Left:rtSVG.Right,Right:rtSVG.Right,Bottom:rtSVG.Bottom};if(IFrameSplitOperator.IsNumber(data.ItemSpace))itemSpace=data.ItemSpace;if(IFrameSplitOperator.IsNumber(data.YOffset))rtBorder.Bottom+=data.YOffset;if(IFrameSplitOperator.IsNumber(data.XOffset))rtBorder.Left+=data.XOffset;if(IFrameSplitOperator.IsNumber(data.LeftMargin))lefMargin=data.LeftMargin;if(IFrameSplitOperator.IsNumber(data.RightMargin))rightMargin=data.RightMargin;if(data.Font)this.Canvas.font=data.Font;else this.Canvas.font=this.TextFont;this.Canvas.textBaseline='bottom';this.Canvas.textAlign='left';var textHeight=this.Canvas.measureText("擎").width+2;rtBorder.Height=textHeight+5;var yText=rtBorder.Bottom-(rtBorder.Height-textHeight)/2;var xText=rtBorder.Left+lefMargin;var aryText=[];for(var i=0;i<data.Content.length;++i){if(aryText.length>0)xText+=itemSpace;var item=data.Content[i];if(!item.Text)continue;var textWidth=this.Canvas.measureText(item.Text).width+2;aryText.push({X:xText,Y:yText,Width:textWidth,Data:item});xText+=textWidth;rtBorder.Right=xText;}rtBorder.Right+=rightMargin;rtBorder.Width=rtBorder.Right-rtBorder.Left;rtBorder.Top=rtBorder.Bottom-rtBorder.Height;if(data.BGColor){this.Canvas.fillStyle=data.BGColor;this.Canvas.fillRect(rtBorder.Left,rtBorder.Top,rtBorder.Width,rtBorder.Height);}if(data.BorderColor){this.Canvas.strokeStyle=data.BorderColor;this.Canvas.strokeRect(ToFixedPoint(rtBorder.Left),ToFixedPoint(rtBorder.Top),ToFixedRect(rtBorder.Width),ToFixedRect(rtBorder.Height));}for(var i=0;i<aryText.length;++i){var item=aryText[i];this.Canvas.fillStyle=item.Data.Color;this.Canvas.fillText(item.Data.Text,item.X,item.Y);}};this.DrawSVG=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Texts))return;if(!this.Family)return;this.IsHScreen=this.ChartFrame.IsHScreen===true;var xPointCount=this.ChartFrame.XPointCount;var offset=this.Data.DataOffset;var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();var pixelRatio=GetDevicePixelRatio();var x=0,y=0;for(var i=0;i<this.Texts.length;++i){var item=this.Texts[i];if(!item.SVG||!item.SVG.Symbol)continue;if(!IFrameSplitOperator.IsNumber(item.Index))continue;var isMinuteFrame=this.IsMinuteFrame();var index=item.Index-offset;var kItem=this.Data.Data[item.Index];if(index<0||index>=xPointCount)continue;x=this.ChartFrame.GetXFromIndex(index);if(item.Value=="Top")y=top;else if(item.Value=="Bottom")y=bottom;else y=this.ChartFrame.GetYFromData(item.Value);if(IFrameSplitOperator.IsNumber(item.YOffset))y+=item.YOffset;//Y轴偏移
4149
+ this.Draw=function(){this.TooltipRect=[];if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;this.DrawSVG();};this.DrawDetail=function(rtSVG,data){if(!IFrameSplitOperator.IsNonEmptyArray(data.Content))return;var lefMargin=2;var rightMargin=2;var itemSpace=2;var rtBorder={Left:rtSVG.Right,Right:rtSVG.Right,Bottom:rtSVG.Bottom};var rightBorder=0;//右边的边界 0=div的宽度 1=图形框架边框
4150
+ if(IFrameSplitOperator.IsNumber(data.ItemSpace))itemSpace=data.ItemSpace;if(IFrameSplitOperator.IsNumber(data.YOffset))rtBorder.Bottom+=data.YOffset;if(IFrameSplitOperator.IsNumber(data.XOffset))rtBorder.Left+=data.XOffset;if(IFrameSplitOperator.IsNumber(data.LeftMargin))lefMargin=data.LeftMargin;if(IFrameSplitOperator.IsNumber(data.RightMargin))rightMargin=data.RightMargin;if(IFrameSplitOperator.IsNumber(data.RightBorder))rightBorder=data.RightBorder;if(data.Font)this.Canvas.font=data.Font;else this.Canvas.font=this.TextFont;this.Canvas.textBaseline='bottom';this.Canvas.textAlign='left';var textHeight=this.Canvas.measureText("擎").width+2;rtBorder.Height=textHeight+5;var yText=rtBorder.Bottom-(rtBorder.Height-textHeight)/2;var xText=rtBorder.Left+lefMargin;var aryText=[];for(var i=0;i<data.Content.length;++i){if(aryText.length>0)xText+=itemSpace;var item=data.Content[i];if(!item.Text)continue;var textWidth=this.Canvas.measureText(item.Text).width+2;aryText.push({X:xText,Y:yText,Width:textWidth,Data:item});xText+=textWidth;rtBorder.Right=xText;}rtBorder.Right+=rightMargin;rtBorder.Width=rtBorder.Right-rtBorder.Left;rtBorder.Top=rtBorder.Bottom-rtBorder.Height;var right=this.ChartBorder.GetChartWidth()-1;if(rightBorder==1)right=this.ChartBorder.GetRight();if(rtBorder.Right>right)//右边显示不下,显示在左边
4151
+ {rtBorder.Right=rtSVG.Left;if(IFrameSplitOperator.IsNumber(data.XOffset))rtBorder.Right-=data.XOffset;rtBorder.Left=rtBorder.Right-rtBorder.Width;var xText=rtBorder.Left+lefMargin;for(var i=0;i<aryText.length;++i){if(i>0)xText+=itemSpace;var item=aryText[i];item.X=xText;xText+=item.Width;}}if(data.BGColor){this.Canvas.fillStyle=data.BGColor;this.Canvas.fillRect(rtBorder.Left,rtBorder.Top,rtBorder.Width,rtBorder.Height);}if(data.BorderColor){this.Canvas.strokeStyle=data.BorderColor;this.Canvas.strokeRect(ToFixedPoint(rtBorder.Left),ToFixedPoint(rtBorder.Top),ToFixedRect(rtBorder.Width),ToFixedRect(rtBorder.Height));}for(var i=0;i<aryText.length;++i){var item=aryText[i];this.Canvas.fillStyle=item.Data.Color;this.Canvas.fillText(item.Data.Text,item.X,item.Y);}};this.DrawSVG=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Texts))return;if(!this.Family)return;this.IsHScreen=this.ChartFrame.IsHScreen===true;var xPointCount=this.ChartFrame.XPointCount;var offset=this.Data.DataOffset;var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();var pixelRatio=GetDevicePixelRatio();var x=0,y=0;for(var i=0;i<this.Texts.length;++i){var item=this.Texts[i];if(!item.SVG||!item.SVG.Symbol)continue;if(!IFrameSplitOperator.IsNumber(item.Index))continue;var isMinuteFrame=this.IsMinuteFrame();var index=item.Index-offset;var kItem=this.Data.Data[item.Index];if(index<0||index>=xPointCount)continue;x=this.ChartFrame.GetXFromIndex(index);if(item.Value=="Top")y=top;else if(item.Value=="Bottom")y=bottom;else y=this.ChartFrame.GetYFromData(item.Value);if(IFrameSplitOperator.IsNumber(item.YOffset))y+=item.YOffset;//Y轴偏移
4148
4152
  var svgItem=item.SVG;if(IFrameSplitOperator.IsNumber(svgItem.YOffset))y+=svgItem.YOffset;var fontSVG=svgItem.Size+'px '+this.Family;this.Canvas.font=fontSVG;var halfSize=svgItem.Size/2;var textBaseline='bottom';var rtSVG={Left:x-halfSize,Right:x+halfSize,Top:y-svgItem.Size,Bottom:y,Height:svgItem.Size,Width:svgItem.Size};if(svgItem.VAlign===0){textBaseline="top";rtSVG.Top=y;rtSVG.Bottom=rtSVG.Top+svgItem.Size;}else if(svgItem.VAlign===1){textBaseline='middle';rtSVG.Top=y-svgItem.Size/2;rtSVG.Bottom=rtSVG.Top+svgItem.Size;}if(rtSVG.Top<0){rtSVG.Top=0;rtSVG.Bottom=svgItem.Size;y=rtSVG.Bottom;}this.Canvas.textBaseline=textBaseline;this.Canvas.textAlign='center';this.Canvas.fillStyle=svgItem.Color;this.Canvas.fillText(svgItem.Symbol,x,y);if(this.EnableTooltip)this.TooltipRect.push({Rect:rtSVG,Index:i});//文字
4149
4153
  if(item.Text&&item.Text.Content&&this.TextFont){var textItem=item.Text;this.Canvas.font=this.TextFont;this.Canvas.fillStyle=textItem.Color;var yText=y;if(IFrameSplitOperator.IsNumber(textItem.YOffset))yText+=textItem.YOffset;this.Canvas.fillText(textItem.Content,x,yText);}if(item.Detail){this.DrawDetail(rtSVG,item.Detail);}//连线
4150
4154
  if(item.Line){var lineItem=item.Line;var price;var kItem=this.Data.Data[item.Index];switch(lineItem.Value){case"C":price=kItem.Close;break;case"H":price=kItem.High;break;case"L":price=kItem.Low;break;}if(!IFrameSplitOperator.IsNumber(price))continue;var yPrice=this.ChartFrame.GetYFromData(price);if(yPrice>=rtSVG.Top&&yPrice<=rtSVG.Bottom)continue;var yText;if(yPrice<rtSVG.Top){yText=rtSVG.Top;if(IFrameSplitOperator.IsNumber(lineItem.SVGBlank)){//yPrice+=lineItem.Blank;
@@ -11252,7 +11256,7 @@ chart.Family=varItem.Draw.Icon.Family;chart.TextFont=g_JSChartResource.TIPICON.T
11252
11256
  if(IFrameSplitOperator.IsNumber(varItem.YOffset))svgYOffset=varItem.YOffset;if(varItem.Color)svgColor=this.GetColor(varItem.Color);if(varItem.DrawFontSize>0)svgSize=varItem.DrawFontSize;if(varItem.DrawVAlign>=0)svgVAlign=varItem.DrawVAlign;if(varItem.Draw&&IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.DrawData)&&varItem.Draw.Icon){var drawData=varItem.Draw.DrawData;var aryData=[];var isArrayTip=Array.isArray(varItem.Draw.Text);var singleTip=null;if(!isArrayTip&&varItem.Draw.Text)singleTip={Text:varItem.Draw.Text};for(var j=0;j<drawData.length;++j){var item=drawData[j];if(!IFrameSplitOperator.IsNumber(item))continue;var svgItem={Index:j,Value:item,SVG:{Symbol:varItem.Draw.Icon.Symbol,Size:svgSize,Color:svgColor,YOffset:svgYOffset,VAlign:svgVAlign}};if(isArrayTip){var text=varItem.Draw.Text[j];if(text)svgItem.Tooltip={Text:text};}else{svgItem.Tooltip=singleTip;}aryData.push(svgItem);}chart.Texts=aryData;}hqChart.ChartPaint.push(chart);};//创建通道
11253
11257
  this.CreateChannel=function(hqChart,windowIndex,varItem,id){var chart=new ChartChannel();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Draw.AreaColor)chart.AreaColor=varItem.Draw.AreaColor;else if(varItem.Color)chart.AreaColor=this.GetColor(varItem.Color);else chart.AreaColor=this.GetDefaultColor(id);if(varItem.Draw.Border.Color)chart.LineColor=varItem.Draw.Border.Color;else chart.LineColor=null;if(varItem.Draw.Border.Dotted)chart.LineDotted=varItem.Draw.Border.Dotted;if(varItem.Draw.Border.Width>0)chart.LineWidth=varItem.Draw.Border.Width;//let titleIndex=windowIndex+1;
11254
11258
  chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};this.CreatePartLine=function(hqChart,windowIndex,varItem,i){var chart=new ChartPartLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))chart.LineWidth=width;}chart.Data.Data=varItem.Draw.DrawData;this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateMultiLine=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11255
- chart.Lines=varItem.Draw.DrawData;if(varItem.Draw.Name)chart.Name=varItem.Draw.Name;if(varItem.Draw.LineDash)chart.LineDash=varItem.Draw.LineDash;if(IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth))chart.LineWidth=varItem.Draw.LineWidth;if(varItem.Draw.Arrow)//箭头配置
11259
+ chart.Lines=varItem.Draw.DrawData;if(varItem.Draw.Name)chart.Name=varItem.Draw.Name;if(varItem.Draw.LineDash)chart.LineDash=varItem.Draw.LineDash;if(IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth))chart.LineWidth=varItem.Draw.LineWidth;if(IFrameSplitOperator.IsBool(varItem.Draw.IsFullRangeMaxMin))chart.IsFullRangeMaxMin=varItem.Draw.IsFullRangeMaxMin;if(varItem.Draw.Arrow)//箭头配置
11256
11260
  {var item=varItem.Draw.Arrow;if(item.Start==true)chart.Arrow.Start=true;if(item.End==true)chart.Arrow.End=true;if(IFrameSplitOperator.IsNumber(item.Angle))chart.ArrawAngle=item.Angle;if(IFrameSplitOperator.IsNumber(item.Length))chart.ArrawLength=item.Length;if(IFrameSplitOperator.IsNumber(item.LineWidth))chart.ArrawLineWidth=item.LineWidth;}hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,chart.Name,null);titleData.DataType="ChartMultiLine";titleData.Lines=chart.Lines;hqChart.TitlePaint[titleIndex].Data[i]=titleData;};this.CreateMultiPoint=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiPoint();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11257
11261
  chart.PointGroup=varItem.Draw.DrawData;if(varItem.Draw.Name)chart.Name=varItem.Draw.Name;hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,chart.Name,null);titleData.DataType="ChartMultiPoint";titleData.PointGroup=chart.PointGroup;hqChart.TitlePaint[titleIndex].Data[i]=titleData;};this.CreateMultiBar=function(hqChart,windowIndex,varItem,id){var chart=new ChartMultiBar();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11258
11262
  chart.Bars=varItem.Draw.DrawData;var titleIndex=windowIndex+1;var titleData=new DynamicTitleData({KData:chart.Data,BarData:chart.Bars},varItem.Name,null);titleData.IsShow=false;titleData.DataType="MULTI_BAR";hqChart.TitlePaint[titleIndex].Data[id]=titleData;hqChart.ChartPaint.push(chart);};this.CreateMultiText=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiText();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
@@ -11370,7 +11374,7 @@ frame.ChartPaint.push(chart);};//创建通道
11370
11374
  this.CreateChannel=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartChannel();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Draw.AreaColor)chart.AreaColor=varItem.Draw.AreaColor;else if(varItem.Color)chart.AreaColor=this.GetColor(varItem.Color);else chart.AreaColor=this.GetDefaultColor(id);if(varItem.Draw.Border.Color)chart.LineColor=varItem.Draw.Border.Color;else chart.LineColor=null;if(varItem.Draw.Border.Dotted)chart.LineDotted=varItem.Draw.Border.Dotted;if(varItem.Draw.Border.Width>0)chart.LineWidth=varItem.Draw.Border.Width;//let titleIndex=windowIndex+1;
11371
11375
  chart.Data.Data=varItem.Draw.DrawData;frame.ChartPaint.push(chart);};//
11372
11376
  this.CreatePartLine=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartPartLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))chart.LineWidth=width;}chart.Data.Data=varItem.Draw.DrawData;this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateMultiLine=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11373
- chart.Lines=varItem.Draw.DrawData;if(varItem.Draw.LineDash)chart.LineDash=varItem.Draw.LineDash;if(IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth))chart.LineWidth=varItem.Draw.LineWidth;if(varItem.Draw.Arrow)//箭头配置
11377
+ chart.Lines=varItem.Draw.DrawData;if(varItem.Draw.LineDash)chart.LineDash=varItem.Draw.LineDash;if(IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth))chart.LineWidth=varItem.Draw.LineWidth;if(IFrameSplitOperator.IsBool(varItem.Draw.IsFullRangeMaxMin))chart.IsFullRangeMaxMin=varItem.Draw.IsFullRangeMaxMin;if(varItem.Draw.Arrow)//箭头配置
11374
11378
  {var item=varItem.Draw.Arrow;if(item.Start==true)chart.Arrow.Start=true;if(item.End==true)chart.Arrow.End=true;if(IFrameSplitOperator.IsNumber(item.Angle))chart.ArrawAngle=item.Angle;if(IFrameSplitOperator.IsNumber(item.Length))chart.ArrawLength=item.Length;if(IFrameSplitOperator.IsNumber(item.LineWidth))chart.ArrawLineWidth=item.LineWidth;}frame.ChartPaint.push(chart);};this.CreateMultiPoint=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiPoint();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11375
11379
  chart.PointGroup=varItem.Draw.DrawData;frame.ChartPaint.push(chart);};this.CreateBackgroud=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartBackground();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.Color=drawData.Color;chart.ColorAngle=drawData.Angle;if(drawData.Data)chart.Data.Data=drawData.Data;}frame.ChartPaint.push(chart);};this.CreateMultiBar=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiBar();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
11376
11380
  chart.Bars=varItem.Draw.DrawData;var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];var titleData=new DynamicTitleData({KData:chart.Data,BarData:chart.Bars},varItem.Name,null);titleData.IsShow=false;titleData.DataType="MULTI_BAR";titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;frame.ChartPaint.push(chart);};this.CreateMultiText=function(hqChart,windowIndex,varItem,i){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMultiText();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
@@ -11433,7 +11437,7 @@ sourceData.sort(function(a,b){if(a.Date==b.Date)return a.Time-b.Time;return a.Da
11433
11437
  var result=[];if(!outVar)return result;for(var i=0;i<outVar.length;++i){var item=outVar[i];var indexData=[];var outVarItem={Name:item.name,Type:item.type};if(item.color)outVarItem.Color=item.color;if(item.data){outVarItem.Data=this.FittingArray(item.data,date,time,hqChart);if(item.color)outVarItem.Color=item.color;if(item.linewidth)outVarItem.LineWidth=item.linewidth;if(item.isshow==false)outVarItem.IsShow=false;if(item.isexdata==true)outVarItem.IsExData=true;if(item.BreakPoint)outVarItem.BreakPoint=item.BreakPoint;result.push(outVarItem);}else if(item.Draw){var draw=item.Draw;var drawItem={};if(draw.DrawType=='DRAWICON')//图标
11434
11438
  {drawItem.Icon=draw.Icon;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWTEXT')//文本
11435
11439
  {drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='STICKLINE')//柱子
11436
- {drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.Width=draw.Width;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="DRAWBAND"){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);drawItem.Color=draw.Color;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_LINE'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);if(IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData)){for(var k=0;k<drawItem.DrawData.length;++k){this.GetKLineData(drawItem.DrawData[k].Point,hqChart);}}outVarItem.Draw=drawItem;if(draw.LineDash)drawItem.LineDash=draw.LineDash;if(draw.Arrow)drawItem.Arrow=draw.Arrow;if(IFrameSplitOperator.IsNumber(draw.LineWidth))drawItem.LineWidth=draw.LineWidth;result.push(outVarItem);}else if(draw.DrawType=='MULTI_POINT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);if(IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData)){for(var k=0;k<drawItem.DrawData.length;++k){this.GetKLineData(drawItem.DrawData[k].Point,hqChart);}}outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_BAR'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.OVERLAY_BARS){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.BarName=draw.BarName;drawItem.BarColor=draw.BarColor;drawItem.LineWidth=draw.LineWidth;drawItem.BarType=draw.BarType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.SCATTER_PLOT){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);//默认的值
11440
+ {drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.Width=draw.Width;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="DRAWBAND"){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);drawItem.Color=draw.Color;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_LINE'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);if(IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData)){for(var k=0;k<drawItem.DrawData.length;++k){this.GetKLineData(drawItem.DrawData[k].Point,hqChart);}}outVarItem.Draw=drawItem;if(draw.LineDash)drawItem.LineDash=draw.LineDash;if(IFrameSplitOperator.IsBool(draw.IsFullRangeMaxMin))drawItem.IsFullRangeMaxMin=draw.IsFullRangeMaxMin;if(draw.Arrow)drawItem.Arrow=draw.Arrow;if(IFrameSplitOperator.IsNumber(draw.LineWidth))drawItem.LineWidth=draw.LineWidth;result.push(outVarItem);}else if(draw.DrawType=='MULTI_POINT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);if(IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData)){for(var k=0;k<drawItem.DrawData.length;++k){this.GetKLineData(drawItem.DrawData[k].Point,hqChart);}}outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_BAR'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.OVERLAY_BARS){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.BarName=draw.BarName;drawItem.BarColor=draw.BarColor;drawItem.LineWidth=draw.LineWidth;drawItem.BarType=draw.BarType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.SCATTER_PLOT){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);//默认的值
11437
11441
  drawItem.Color=draw.Color;drawItem.Radius=draw.Radius;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.KLINE_TABLE){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);drawItem.RowCount=draw.RowCount;drawItem.RowName=draw.RowName;drawItem.IsShowRowName=draw.IsShowRowName;drawItem.BGColor=draw.BGColor;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_TEXT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiText(draw.DrawData,date,time,hqChart);this.GetKLineData(drawItem.DrawData,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_SVGICON'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={Icon:this.FittingMultiText(draw.DrawData.Icon,date,time,hqChart),Family:draw.DrawData.Family};this.GetKLineData(drawItem.DrawData.Icon,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWSVG'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={Data:this.FittingMultiText(draw.Data,date,time,hqChart),Family:draw.Family,TextFont:draw.TextFont,EnableTooltip:draw.EnableTooltip,IsDrawFirst:draw.IsDrawFirst};this.GetKLineData(drawItem.DrawData.Data,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="MULTI_HTMLDOM")//外部自己创建dom
11438
11442
  {drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.Callback=draw.Callback;drawItem.DrawData=this.FittingMultiText(draw.DrawData,date,time,hqChart);this.GetKLineData(drawItem.DrawData,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="COLOR_KLINE"){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;var klineOption=this.FittingMultiText(draw.DrawData.KLine,date,time,hqChart);var mapKLineOption=new _map2.default();for(var i in klineOption){var item=klineOption[i];mapKLineOption.set(item.Index,item);}drawItem.DrawData={KLine:mapKLineOption};if(draw.Color)outVarItem.Color=draw.Color;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="KLINE_BG"){drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={};drawItem.DrawData.Color=draw.Color;drawItem.DrawData.Angle=draw.Angle;if(draw.Ver==2.0)drawItem.DrawData.Data=this.FittingKLineBG_V2(draw.DrawData,hqChart);else drawItem.DrawData.Data=this.FittingKLineBG(draw.DrawData,hqChart);outVarItem.Draw=drawItem;outVarItem.Name=draw.DrawType;result.push(outVarItem);}else if(draw.DrawType=='MULTI_POINT_LINE'){drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={};drawItem.DrawData.Color=draw.Color;drawItem.DrawData.PointRadius=draw.PointRadius;drawItem.DrawData.PointColor=draw.PointColor;drawItem.DrawData.LineWidth=draw.LineWidth;drawItem.DrawData.Data=this.FittingMultiPointLine(draw.DrawData,hqChart);outVarItem.Draw=drawItem;//outVarItem.Name=draw.DrawType;
11439
11443
  result.push(outVarItem);}else if(draw.DrawType=="PARTLINE"){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;if(draw.LineWidth)outVarItem.LineWidth=draw.LineWidth;result.push(outVarItem);}else{var find=g_ScriptIndexChartFactory.Get(draw.DrawType);//外部挂接
@@ -12559,7 +12563,7 @@ this.AreaColor=g_JSChartResource.ScrollBar.BGChart.AreaColor;//面积图颜色
12559
12563
  };this.Draw=function(){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;this.Canvas.save();if(this.LineWidth>0)this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();var bottom=this.ChartBorder.GetBottom();this.Canvas.strokeStyle=this.Color;var bFirstPoint=true;var drawCount=0,x,y;var firstPoint={};for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];var value=item.Close;if(!IFrameSplitOperator.IsNumber(value))continue;x=this.ChartFrame.GetXFromIndex(i);y=this.ChartFrame.GetYFromData(value);if(bFirstPoint){this.Canvas.beginPath();this.Canvas.moveTo(x,y);bFirstPoint=false;firstPoint={X:x,Y:y};}else{this.Canvas.lineTo(x,y);}++drawCount;}if(drawCount>0){this.Canvas.stroke();this.Canvas.lineTo(x,bottom);this.Canvas.lineTo(firstPoint.X,bottom);this.Canvas.closePath();this.Canvas.fillStyle=this.AreaColor;this.Canvas.fill();}this.Canvas.restore();};this.GetMaxMin=function(){var range={Max:null,Min:null};if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return range;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];var value=item.Close;if(!IFrameSplitOperator.IsNumber(value))continue;if(range.Max==null||range.Max<value)range.Max=value;if(range.Min==null||range.Min>value)range.Min=value;}return range;};}/********************************************************************************
12560
12564
  * 版本信息输出
12561
12565
  *
12562
- */var HQCHART_VERSION="1.1.12378";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
12566
+ */var HQCHART_VERSION="1.1.12383";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
12563
12567
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12564
12568
  // BaseIndex:BaseIndex,
12565
12569
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "hqchart",
3
3
  "description": "stock chart",
4
4
  "author": "jones2000",
5
- "version": "1.1.12379",
5
+ "version": "1.1.12384",
6
6
  "main": "lib/main.js",
7
7
  "private": false,
8
8
  "license": "Apache License 2.0",
@@ -20264,6 +20264,8 @@ function ScriptIndex(name,script,args,option)
20264
20264
  if (varItem.Draw.Name) chart.Name=varItem.Draw.Name;
20265
20265
  if (varItem.Draw.LineDash) chart.LineDash=varItem.Draw.LineDash;
20266
20266
  if (IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth)) chart.LineWidth=varItem.Draw.LineWidth;
20267
+ if (IFrameSplitOperator.IsBool(varItem.Draw.IsFullRangeMaxMin)) chart.IsFullRangeMaxMin=varItem.Draw.IsFullRangeMaxMin;
20268
+
20267
20269
  if(varItem.Draw.Arrow) //箭头配置
20268
20270
  {
20269
20271
  var item=varItem.Draw.Arrow;
@@ -21752,6 +21754,8 @@ function OverlayScriptIndex(name,script,args,option)
21752
21754
  chart.Lines=varItem.Draw.DrawData;
21753
21755
  if (varItem.Draw.LineDash) chart.LineDash=varItem.Draw.LineDash;
21754
21756
  if (IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth)) chart.LineWidth=varItem.Draw.LineWidth;
21757
+ if (IFrameSplitOperator.IsBool(varItem.Draw.IsFullRangeMaxMin)) chart.IsFullRangeMaxMin=varItem.Draw.IsFullRangeMaxMin;
21758
+
21755
21759
  if(varItem.Draw.Arrow) //箭头配置
21756
21760
  {
21757
21761
  var item=varItem.Draw.Arrow;
@@ -22849,6 +22853,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
22849
22853
 
22850
22854
  outVarItem.Draw=drawItem;
22851
22855
  if (draw.LineDash) drawItem.LineDash=draw.LineDash;
22856
+ if (IFrameSplitOperator.IsBool(draw.IsFullRangeMaxMin)) drawItem.IsFullRangeMaxMin=draw.IsFullRangeMaxMin;
22852
22857
  if (draw.Arrow) drawItem.Arrow=draw.Arrow;
22853
22858
  if (IFrameSplitOperator.IsNumber(draw.LineWidth)) drawItem.LineWidth=draw.LineWidth;
22854
22859
 
@@ -20366,6 +20366,8 @@ function IChartPainting()
20366
20366
  this.DrawSelectedStatus; //function() { } //选中状态
20367
20367
  this.PtInChart; //function(x,y) { }
20368
20368
 
20369
+ this.IsFullRangeMaxMin=false; //this.GetMaxMin() true=计算全部的最大最小值 false=计算可视范围的最大最小值
20370
+
20369
20371
  this.Draw=function()
20370
20372
  {
20371
20373
 
@@ -34027,6 +34029,8 @@ function ChartMultiLine()
34027
34029
  this.ArrawLineWidth=5; //箭头粗细
34028
34030
  this.Arrow={ Start:false, End:false }; //Start=是否绘制开始箭头 <- End=是否绘制结束箭头 ->
34029
34031
 
34032
+ this.IsFullRangeMaxMin=false;
34033
+
34030
34034
  this.Draw=function()
34031
34035
  {
34032
34036
  if (!this.IsShow || this.ChartFrame.IsMinSize) return;
@@ -34090,6 +34094,9 @@ function ChartMultiLine()
34090
34094
 
34091
34095
  var pointItem={X:x, Y:y, End:true};
34092
34096
  drawPoints.Point.push(pointItem);
34097
+
34098
+ bFirstPoint=true;
34099
+ prePoint=null;
34093
34100
  }
34094
34101
  }
34095
34102
 
@@ -34240,6 +34247,8 @@ function ChartMultiLine()
34240
34247
 
34241
34248
  this.GetMaxMin=function()
34242
34249
  {
34250
+ if (this.IsFullRangeMaxMin) return this.GetFullRangeMaxMin();
34251
+
34243
34252
  var range={ Min:null, Max:null };
34244
34253
  var xPointCount=this.ChartFrame.XPointCount;
34245
34254
  var start=this.Data.DataOffset;
@@ -34263,6 +34272,31 @@ function ChartMultiLine()
34263
34272
 
34264
34273
  return range;
34265
34274
  }
34275
+
34276
+ //全部数据的最大最小值
34277
+ this.GetFullRangeMaxMin=function()
34278
+ {
34279
+ var range={ Min:null, Max:null };
34280
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Lines)) return range;
34281
+
34282
+ for(var i=0; i<this.Lines.length; ++i)
34283
+ {
34284
+ var line=this.Lines[i];
34285
+ if (!IFrameSplitOperator.IsNonEmptyArray(line.Point)) continue;
34286
+
34287
+ for(var j=0; j<line.Point.length; ++j)
34288
+ {
34289
+ var point=line.Point[j];
34290
+
34291
+ if (range.Max==null) range.Max=point.Value;
34292
+ else if (range.Max<point.Value) range.Max=point.Value;
34293
+ if (range.Min==null) range.Min=point.Value;
34294
+ else if (range.Min>point.Value) range.Min=point.Value;
34295
+ }
34296
+ }
34297
+
34298
+ return range;
34299
+ }
34266
34300
  }
34267
34301
 
34268
34302
  // 线段集合 支持横屏
@@ -34924,7 +34958,7 @@ function ChartDrawSVG()
34924
34958
  var rightMargin=2;
34925
34959
  var itemSpace=2;
34926
34960
  var rtBorder={ Left:rtSVG.Right, Right:rtSVG.Right, Bottom:rtSVG.Bottom };
34927
-
34961
+ var rightBorder=0; //右边的边界 0=div的宽度 1=图形框架边框
34928
34962
  if (IFrameSplitOperator.IsNumber(data.ItemSpace)) itemSpace=data.ItemSpace;
34929
34963
  if (IFrameSplitOperator.IsNumber(data.YOffset)) rtBorder.Bottom+=data.YOffset;
34930
34964
  if (IFrameSplitOperator.IsNumber(data.XOffset)) rtBorder.Left+=data.XOffset;
@@ -34932,6 +34966,8 @@ function ChartDrawSVG()
34932
34966
  if (IFrameSplitOperator.IsNumber(data.LeftMargin)) lefMargin=data.LeftMargin;
34933
34967
  if (IFrameSplitOperator.IsNumber(data.RightMargin)) rightMargin=data.RightMargin;
34934
34968
 
34969
+ if (IFrameSplitOperator.IsNumber(data.RightBorder)) rightBorder=data.RightBorder;
34970
+
34935
34971
  if (data.Font) this.Canvas.font=data.Font;
34936
34972
  else this.Canvas.font=this.TextFont;
34937
34973
  this.Canvas.textBaseline='bottom';
@@ -34960,6 +34996,24 @@ function ChartDrawSVG()
34960
34996
  rtBorder.Width=rtBorder.Right-rtBorder.Left;
34961
34997
  rtBorder.Top=rtBorder.Bottom-rtBorder.Height;
34962
34998
 
34999
+ var right=this.ChartBorder.GetChartWidth()-1;
35000
+ if (rightBorder==1) right=this.ChartBorder.GetRight();
35001
+ if (rtBorder.Right>right) //右边显示不下,显示在左边
35002
+ {
35003
+ rtBorder.Right=rtSVG.Left;
35004
+ if (IFrameSplitOperator.IsNumber(data.XOffset)) rtBorder.Right-=data.XOffset;
35005
+ rtBorder.Left=rtBorder.Right-rtBorder.Width;
35006
+ var xText=rtBorder.Left+lefMargin;
35007
+ for(var i=0;i<aryText.length;++i)
35008
+ {
35009
+ if (i>0) xText+=itemSpace;
35010
+
35011
+ var item=aryText[i];
35012
+ item.X=xText;
35013
+ xText+=item.Width;
35014
+ }
35015
+ }
35016
+
34963
35017
  if (data.BGColor)
34964
35018
  {
34965
35019
  this.Canvas.fillStyle=data.BGColor;
@@ -24446,6 +24446,8 @@ function IChartPainting()
24446
24446
  this.DrawSelectedStatus; //function() { } //选中状态
24447
24447
  this.PtInChart; //function(x,y) { }
24448
24448
 
24449
+ this.IsFullRangeMaxMin=false; //this.GetMaxMin() true=计算全部的最大最小值 false=计算可视范围的最大最小值
24450
+
24449
24451
  this.Draw=function()
24450
24452
  {
24451
24453
 
@@ -38107,6 +38109,8 @@ function ChartMultiLine()
38107
38109
  this.ArrawLineWidth=5; //箭头粗细
38108
38110
  this.Arrow={ Start:false, End:false }; //Start=是否绘制开始箭头 <- End=是否绘制结束箭头 ->
38109
38111
 
38112
+ this.IsFullRangeMaxMin=false;
38113
+
38110
38114
  this.Draw=function()
38111
38115
  {
38112
38116
  if (!this.IsShow || this.ChartFrame.IsMinSize) return;
@@ -38170,6 +38174,9 @@ function ChartMultiLine()
38170
38174
 
38171
38175
  var pointItem={X:x, Y:y, End:true};
38172
38176
  drawPoints.Point.push(pointItem);
38177
+
38178
+ bFirstPoint=true;
38179
+ prePoint=null;
38173
38180
  }
38174
38181
  }
38175
38182
 
@@ -38320,6 +38327,8 @@ function ChartMultiLine()
38320
38327
 
38321
38328
  this.GetMaxMin=function()
38322
38329
  {
38330
+ if (this.IsFullRangeMaxMin) return this.GetFullRangeMaxMin();
38331
+
38323
38332
  var range={ Min:null, Max:null };
38324
38333
  var xPointCount=this.ChartFrame.XPointCount;
38325
38334
  var start=this.Data.DataOffset;
@@ -38343,6 +38352,31 @@ function ChartMultiLine()
38343
38352
 
38344
38353
  return range;
38345
38354
  }
38355
+
38356
+ //全部数据的最大最小值
38357
+ this.GetFullRangeMaxMin=function()
38358
+ {
38359
+ var range={ Min:null, Max:null };
38360
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Lines)) return range;
38361
+
38362
+ for(var i=0; i<this.Lines.length; ++i)
38363
+ {
38364
+ var line=this.Lines[i];
38365
+ if (!IFrameSplitOperator.IsNonEmptyArray(line.Point)) continue;
38366
+
38367
+ for(var j=0; j<line.Point.length; ++j)
38368
+ {
38369
+ var point=line.Point[j];
38370
+
38371
+ if (range.Max==null) range.Max=point.Value;
38372
+ else if (range.Max<point.Value) range.Max=point.Value;
38373
+ if (range.Min==null) range.Min=point.Value;
38374
+ else if (range.Min>point.Value) range.Min=point.Value;
38375
+ }
38376
+ }
38377
+
38378
+ return range;
38379
+ }
38346
38380
  }
38347
38381
 
38348
38382
  // 线段集合 支持横屏
@@ -39004,7 +39038,7 @@ function ChartDrawSVG()
39004
39038
  var rightMargin=2;
39005
39039
  var itemSpace=2;
39006
39040
  var rtBorder={ Left:rtSVG.Right, Right:rtSVG.Right, Bottom:rtSVG.Bottom };
39007
-
39041
+ var rightBorder=0; //右边的边界 0=div的宽度 1=图形框架边框
39008
39042
  if (IFrameSplitOperator.IsNumber(data.ItemSpace)) itemSpace=data.ItemSpace;
39009
39043
  if (IFrameSplitOperator.IsNumber(data.YOffset)) rtBorder.Bottom+=data.YOffset;
39010
39044
  if (IFrameSplitOperator.IsNumber(data.XOffset)) rtBorder.Left+=data.XOffset;
@@ -39012,6 +39046,8 @@ function ChartDrawSVG()
39012
39046
  if (IFrameSplitOperator.IsNumber(data.LeftMargin)) lefMargin=data.LeftMargin;
39013
39047
  if (IFrameSplitOperator.IsNumber(data.RightMargin)) rightMargin=data.RightMargin;
39014
39048
 
39049
+ if (IFrameSplitOperator.IsNumber(data.RightBorder)) rightBorder=data.RightBorder;
39050
+
39015
39051
  if (data.Font) this.Canvas.font=data.Font;
39016
39052
  else this.Canvas.font=this.TextFont;
39017
39053
  this.Canvas.textBaseline='bottom';
@@ -39040,6 +39076,24 @@ function ChartDrawSVG()
39040
39076
  rtBorder.Width=rtBorder.Right-rtBorder.Left;
39041
39077
  rtBorder.Top=rtBorder.Bottom-rtBorder.Height;
39042
39078
 
39079
+ var right=this.ChartBorder.GetChartWidth()-1;
39080
+ if (rightBorder==1) right=this.ChartBorder.GetRight();
39081
+ if (rtBorder.Right>right) //右边显示不下,显示在左边
39082
+ {
39083
+ rtBorder.Right=rtSVG.Left;
39084
+ if (IFrameSplitOperator.IsNumber(data.XOffset)) rtBorder.Right-=data.XOffset;
39085
+ rtBorder.Left=rtBorder.Right-rtBorder.Width;
39086
+ var xText=rtBorder.Left+lefMargin;
39087
+ for(var i=0;i<aryText.length;++i)
39088
+ {
39089
+ if (i>0) xText+=itemSpace;
39090
+
39091
+ var item=aryText[i];
39092
+ item.X=xText;
39093
+ xText+=item.Width;
39094
+ }
39095
+ }
39096
+
39043
39097
  if (data.BGColor)
39044
39098
  {
39045
39099
  this.Canvas.fillStyle=data.BGColor;
@@ -112088,6 +112142,8 @@ function ScriptIndex(name,script,args,option)
112088
112142
  if (varItem.Draw.Name) chart.Name=varItem.Draw.Name;
112089
112143
  if (varItem.Draw.LineDash) chart.LineDash=varItem.Draw.LineDash;
112090
112144
  if (IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth)) chart.LineWidth=varItem.Draw.LineWidth;
112145
+ if (IFrameSplitOperator.IsBool(varItem.Draw.IsFullRangeMaxMin)) chart.IsFullRangeMaxMin=varItem.Draw.IsFullRangeMaxMin;
112146
+
112091
112147
  if(varItem.Draw.Arrow) //箭头配置
112092
112148
  {
112093
112149
  var item=varItem.Draw.Arrow;
@@ -113576,6 +113632,8 @@ function OverlayScriptIndex(name,script,args,option)
113576
113632
  chart.Lines=varItem.Draw.DrawData;
113577
113633
  if (varItem.Draw.LineDash) chart.LineDash=varItem.Draw.LineDash;
113578
113634
  if (IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth)) chart.LineWidth=varItem.Draw.LineWidth;
113635
+ if (IFrameSplitOperator.IsBool(varItem.Draw.IsFullRangeMaxMin)) chart.IsFullRangeMaxMin=varItem.Draw.IsFullRangeMaxMin;
113636
+
113579
113637
  if(varItem.Draw.Arrow) //箭头配置
113580
113638
  {
113581
113639
  var item=varItem.Draw.Arrow;
@@ -114673,6 +114731,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
114673
114731
 
114674
114732
  outVarItem.Draw=drawItem;
114675
114733
  if (draw.LineDash) drawItem.LineDash=draw.LineDash;
114734
+ if (IFrameSplitOperator.IsBool(draw.IsFullRangeMaxMin)) drawItem.IsFullRangeMaxMin=draw.IsFullRangeMaxMin;
114676
114735
  if (draw.Arrow) drawItem.Arrow=draw.Arrow;
114677
114736
  if (IFrameSplitOperator.IsNumber(draw.LineWidth)) drawItem.LineWidth=draw.LineWidth;
114678
114737
 
@@ -127299,7 +127358,7 @@ function ScrollBarBGChart()
127299
127358
 
127300
127359
 
127301
127360
 
127302
- var HQCHART_VERSION="1.1.12378";
127361
+ var HQCHART_VERSION="1.1.12383";
127303
127362
 
127304
127363
  function PrintHQChartVersion()
127305
127364
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.12378";
8
+ var HQCHART_VERSION="1.1.12383";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -24490,6 +24490,8 @@ function IChartPainting()
24490
24490
  this.DrawSelectedStatus; //function() { } //选中状态
24491
24491
  this.PtInChart; //function(x,y) { }
24492
24492
 
24493
+ this.IsFullRangeMaxMin=false; //this.GetMaxMin() true=计算全部的最大最小值 false=计算可视范围的最大最小值
24494
+
24493
24495
  this.Draw=function()
24494
24496
  {
24495
24497
 
@@ -38151,6 +38153,8 @@ function ChartMultiLine()
38151
38153
  this.ArrawLineWidth=5; //箭头粗细
38152
38154
  this.Arrow={ Start:false, End:false }; //Start=是否绘制开始箭头 <- End=是否绘制结束箭头 ->
38153
38155
 
38156
+ this.IsFullRangeMaxMin=false;
38157
+
38154
38158
  this.Draw=function()
38155
38159
  {
38156
38160
  if (!this.IsShow || this.ChartFrame.IsMinSize) return;
@@ -38214,6 +38218,9 @@ function ChartMultiLine()
38214
38218
 
38215
38219
  var pointItem={X:x, Y:y, End:true};
38216
38220
  drawPoints.Point.push(pointItem);
38221
+
38222
+ bFirstPoint=true;
38223
+ prePoint=null;
38217
38224
  }
38218
38225
  }
38219
38226
 
@@ -38364,6 +38371,8 @@ function ChartMultiLine()
38364
38371
 
38365
38372
  this.GetMaxMin=function()
38366
38373
  {
38374
+ if (this.IsFullRangeMaxMin) return this.GetFullRangeMaxMin();
38375
+
38367
38376
  var range={ Min:null, Max:null };
38368
38377
  var xPointCount=this.ChartFrame.XPointCount;
38369
38378
  var start=this.Data.DataOffset;
@@ -38387,6 +38396,31 @@ function ChartMultiLine()
38387
38396
 
38388
38397
  return range;
38389
38398
  }
38399
+
38400
+ //全部数据的最大最小值
38401
+ this.GetFullRangeMaxMin=function()
38402
+ {
38403
+ var range={ Min:null, Max:null };
38404
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Lines)) return range;
38405
+
38406
+ for(var i=0; i<this.Lines.length; ++i)
38407
+ {
38408
+ var line=this.Lines[i];
38409
+ if (!IFrameSplitOperator.IsNonEmptyArray(line.Point)) continue;
38410
+
38411
+ for(var j=0; j<line.Point.length; ++j)
38412
+ {
38413
+ var point=line.Point[j];
38414
+
38415
+ if (range.Max==null) range.Max=point.Value;
38416
+ else if (range.Max<point.Value) range.Max=point.Value;
38417
+ if (range.Min==null) range.Min=point.Value;
38418
+ else if (range.Min>point.Value) range.Min=point.Value;
38419
+ }
38420
+ }
38421
+
38422
+ return range;
38423
+ }
38390
38424
  }
38391
38425
 
38392
38426
  // 线段集合 支持横屏
@@ -39048,7 +39082,7 @@ function ChartDrawSVG()
39048
39082
  var rightMargin=2;
39049
39083
  var itemSpace=2;
39050
39084
  var rtBorder={ Left:rtSVG.Right, Right:rtSVG.Right, Bottom:rtSVG.Bottom };
39051
-
39085
+ var rightBorder=0; //右边的边界 0=div的宽度 1=图形框架边框
39052
39086
  if (IFrameSplitOperator.IsNumber(data.ItemSpace)) itemSpace=data.ItemSpace;
39053
39087
  if (IFrameSplitOperator.IsNumber(data.YOffset)) rtBorder.Bottom+=data.YOffset;
39054
39088
  if (IFrameSplitOperator.IsNumber(data.XOffset)) rtBorder.Left+=data.XOffset;
@@ -39056,6 +39090,8 @@ function ChartDrawSVG()
39056
39090
  if (IFrameSplitOperator.IsNumber(data.LeftMargin)) lefMargin=data.LeftMargin;
39057
39091
  if (IFrameSplitOperator.IsNumber(data.RightMargin)) rightMargin=data.RightMargin;
39058
39092
 
39093
+ if (IFrameSplitOperator.IsNumber(data.RightBorder)) rightBorder=data.RightBorder;
39094
+
39059
39095
  if (data.Font) this.Canvas.font=data.Font;
39060
39096
  else this.Canvas.font=this.TextFont;
39061
39097
  this.Canvas.textBaseline='bottom';
@@ -39084,6 +39120,24 @@ function ChartDrawSVG()
39084
39120
  rtBorder.Width=rtBorder.Right-rtBorder.Left;
39085
39121
  rtBorder.Top=rtBorder.Bottom-rtBorder.Height;
39086
39122
 
39123
+ var right=this.ChartBorder.GetChartWidth()-1;
39124
+ if (rightBorder==1) right=this.ChartBorder.GetRight();
39125
+ if (rtBorder.Right>right) //右边显示不下,显示在左边
39126
+ {
39127
+ rtBorder.Right=rtSVG.Left;
39128
+ if (IFrameSplitOperator.IsNumber(data.XOffset)) rtBorder.Right-=data.XOffset;
39129
+ rtBorder.Left=rtBorder.Right-rtBorder.Width;
39130
+ var xText=rtBorder.Left+lefMargin;
39131
+ for(var i=0;i<aryText.length;++i)
39132
+ {
39133
+ if (i>0) xText+=itemSpace;
39134
+
39135
+ var item=aryText[i];
39136
+ item.X=xText;
39137
+ xText+=item.Width;
39138
+ }
39139
+ }
39140
+
39087
39141
  if (data.BGColor)
39088
39142
  {
39089
39143
  this.Canvas.fillStyle=data.BGColor;
@@ -112132,6 +112186,8 @@ function ScriptIndex(name,script,args,option)
112132
112186
  if (varItem.Draw.Name) chart.Name=varItem.Draw.Name;
112133
112187
  if (varItem.Draw.LineDash) chart.LineDash=varItem.Draw.LineDash;
112134
112188
  if (IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth)) chart.LineWidth=varItem.Draw.LineWidth;
112189
+ if (IFrameSplitOperator.IsBool(varItem.Draw.IsFullRangeMaxMin)) chart.IsFullRangeMaxMin=varItem.Draw.IsFullRangeMaxMin;
112190
+
112135
112191
  if(varItem.Draw.Arrow) //箭头配置
112136
112192
  {
112137
112193
  var item=varItem.Draw.Arrow;
@@ -113620,6 +113676,8 @@ function OverlayScriptIndex(name,script,args,option)
113620
113676
  chart.Lines=varItem.Draw.DrawData;
113621
113677
  if (varItem.Draw.LineDash) chart.LineDash=varItem.Draw.LineDash;
113622
113678
  if (IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth)) chart.LineWidth=varItem.Draw.LineWidth;
113679
+ if (IFrameSplitOperator.IsBool(varItem.Draw.IsFullRangeMaxMin)) chart.IsFullRangeMaxMin=varItem.Draw.IsFullRangeMaxMin;
113680
+
113623
113681
  if(varItem.Draw.Arrow) //箭头配置
113624
113682
  {
113625
113683
  var item=varItem.Draw.Arrow;
@@ -114717,6 +114775,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
114717
114775
 
114718
114776
  outVarItem.Draw=drawItem;
114719
114777
  if (draw.LineDash) drawItem.LineDash=draw.LineDash;
114778
+ if (IFrameSplitOperator.IsBool(draw.IsFullRangeMaxMin)) drawItem.IsFullRangeMaxMin=draw.IsFullRangeMaxMin;
114720
114779
  if (draw.Arrow) drawItem.Arrow=draw.Arrow;
114721
114780
  if (IFrameSplitOperator.IsNumber(draw.LineWidth)) drawItem.LineWidth=draw.LineWidth;
114722
114781
 
@@ -127343,7 +127402,7 @@ function ScrollBarBGChart()
127343
127402
 
127344
127403
 
127345
127404
 
127346
- var HQCHART_VERSION="1.1.12378";
127405
+ var HQCHART_VERSION="1.1.12383";
127347
127406
 
127348
127407
  function PrintHQChartVersion()
127349
127408
  {