hqchart 1.1.12375 → 1.1.12382
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.
package/lib/umychart.vue.js
CHANGED
|
@@ -2398,7 +2398,7 @@ if(this.CloseIndex&&this.Identify!==0)aryButton.push({ID:JSCHART_BUTTON_ID.CLOSE
|
|
|
2398
2398
|
for(var i=0;i<this.CustomToolbar.length;++i){var item=this.CustomToolbar[i];if(item.ID&&item.Style){var btnItem={ID:item.ID,Style:item.Style,TooltipText:item.TooltipText};if(item.IsLeft===true)aryLeftButton.push(btnItem);//左侧按钮
|
|
2399
2399
|
}}return aryLeftButton;};this.DrawFrame=function(){if(!this.IsMinSize){this.SplitXYCoordinate();if(this.SizeChange==true){this.CalculateDataWidth();if(this.Logarithmic)this.SplitLogarithmicXYCoordinate();}if(this.BeforeDrawXYCallback)this.BeforeDrawXYCallback(this);this.DrawTitleBG();this.DrawHorizontal();this.DrawVertical();}if(this.SizeChange==true||this.ReDrawToolbar==true){this.DrawToolbar();//大小变动才画工具条
|
|
2400
2400
|
this.ReDrawToolbar=false;}};//isLimit 是否限制在当前屏坐标下
|
|
2401
|
-
this.GetXFromIndex=function(index,isLimit){if(isLimit===false){if(index>=0){var offset=this.ChartBorder.GetLeft()+g_JSChartResource.FrameLeftMargin+this.DistanceWidth/2+this.DataWidth/2;for(var i=1;i<=index;++i){offset+=this.DistanceWidth+this.DataWidth;}}else{var offset=this.ChartBorder.GetLeft()-(this.DistanceWidth/2+this.DataWidth+this.DistanceWidth);var absIndex=Math.abs(index);for(var i=1;i<absIndex;++i){offset-=this.DistanceWidth+this.DataWidth;}}}else{if(index<0)index=0;if(index>this.xPointCount-1)index=this.xPointCount-1;var offset=this.ChartBorder.GetLeft()+g_JSChartResource.FrameLeftMargin+this.DistanceWidth/2+this.DataWidth/2;for(var i=1;i<=index;++i){offset+=this.DistanceWidth+this.DataWidth;}}return offset;};//X坐标转x轴数值 isLimit=是否限制在当前屏坐标下
|
|
2401
|
+
this.GetXFromIndex=function(index,isLimit){if(isLimit===false){if(index>=0){var offset=this.ChartBorder.GetLeft()+g_JSChartResource.FrameLeftMargin+this.DistanceWidth/2+this.DataWidth/2;for(var i=1;i<=index;++i){offset+=this.DistanceWidth+this.DataWidth;}}else{var offset=this.ChartBorder.GetLeft()+g_JSChartResource.FrameLeftMargin-(this.DistanceWidth/2+this.DataWidth+this.DistanceWidth);var absIndex=Math.abs(index);for(var i=1;i<absIndex;++i){offset-=this.DistanceWidth+this.DataWidth;}}}else{if(index<0)index=0;if(index>this.xPointCount-1)index=this.xPointCount-1;var offset=this.ChartBorder.GetLeft()+g_JSChartResource.FrameLeftMargin+this.DistanceWidth/2+this.DataWidth/2;for(var i=1;i<=index;++i){offset+=this.DistanceWidth+this.DataWidth;}}return offset;};//X坐标转x轴数值 isLimit=是否限制在当前屏坐标下
|
|
2402
2402
|
this.GetXData=function(x,isLimit){var distanceWidth=this.DistanceWidth;var dataWidth=this.DataWidth;var left=this.ChartBorder.GetLeft()+g_JSChartResource.FrameLeftMargin;if(isLimit==false){if(x<this.ChartBorder.GetLeft()){var index=-1;var xPoint=this.ChartBorder.GetLeft()-(distanceWidth/2+dataWidth+distanceWidth);while(index>-10000){if(xPoint<=x)break;xPoint-=dataWidth+distanceWidth;--index;}return index;}else{var index=0;var xPoint=left+distanceWidth/2+dataWidth+distanceWidth;while(index<10000)//自己算x的数值
|
|
2403
2403
|
{if(xPoint>=x)break;xPoint+=dataWidth+distanceWidth;++index;}return index;}}else{if(x<=this.ChartBorder.GetLeft())return 0;if(x>=this.ChartBorder.GetRight())return this.XPointCount-1;var right=this.ChartBorder.GetRight()-g_JSChartResource.FrameRightMargin;var index=0;var xPoint=left+distanceWidth/2+dataWidth+distanceWidth;while(xPoint<right&&index<10000&&index+1<this.XPointCount)//自己算x的数值
|
|
2404
2404
|
{if(xPoint>=x)break;xPoint+=dataWidth+distanceWidth;++index;}//var test=(x-this.ChartBorder.GetLeft())*(this.XPointCount*1.0/this.ChartBorder.GetWidth());
|
|
@@ -4096,11 +4096,12 @@ this.ArrawAngle=35;//三角斜边一直线夹角
|
|
|
4096
4096
|
this.ArrawLength=10;//三角斜边长度
|
|
4097
4097
|
this.ArrawLineWidth=5;//箭头粗细
|
|
4098
4098
|
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;this.IsHScreen=this.ChartFrame.IsHScreen===true;var xPointCount=this.ChartFrame.XPointCount;var offset=this.Data.DataOffset;var drawLines=[];var arrowLines=[];for(var i
|
|
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);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);//起始点
|
|
4100
4101
|
if(j==line.Point.length-1||j==line.Point.length-2)drawArrowPoints.End.push(pointItem);//结束点
|
|
4101
4102
|
}else{if(drawPoints.Point.length>0)drawPoints.Point[drawPoints.Point.length-1].End=true;//点断开
|
|
4102
|
-
}}if(drawPoints.Point.length>=2){drawLines.push(drawPoints);arrowLines.push(drawArrowPoints);}}var pixelRatio=GetDevicePixelRatio();this.Canvas.save();for(var i
|
|
4103
|
-
{this.Canvas.fillStyle=line.BGColor;for(var i
|
|
4103
|
+
}}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)//背景色
|
|
4104
|
+
{this.Canvas.fillStyle=line.BGColor;for(var i=0;i<line.Point.length;++i){var item=line.Point[i];if(i==0){this.Canvas.beginPath();if(this.IsHScreen)this.Canvas.moveTo(item.Y,item.X);else this.Canvas.moveTo(item.X,item.Y);}else{if(this.IsHScreen)this.Canvas.lineTo(item.Y,item.X);else this.Canvas.lineTo(item.X,item.Y);}}this.Canvas.closePath();this.Canvas.fill();}this.Canvas.strokeStyle=line.Color;var drawCount=0;for(var i=0;i<line.Point.length;++i){var item=line.Point[i];if(drawCount==0){this.Canvas.beginPath();if(this.IsHScreen)this.Canvas.moveTo(item.Y,item.X);else this.Canvas.moveTo(item.X,item.Y);++drawCount;}else{if(this.IsHScreen)this.Canvas.lineTo(item.Y,item.X);else this.Canvas.lineTo(item.X,item.Y);++drawCount;}if(item.End==true)//点断了 要重新画
|
|
4104
4105
|
{if(drawCount>0)this.Canvas.stroke();drawCount=0;}}if(drawCount>0)this.Canvas.stroke();//绘制箭头
|
|
4105
4106
|
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){//计算箭头
|
|
4106
4107
|
var theta=this.ArrawAngle;//三角斜边一直线夹角
|
|
@@ -4143,7 +4144,9 @@ this.newMethod();delete this.newMethod;this.ClassName="ChartDrawSVG";this.Family
|
|
|
4143
4144
|
this.IsHScreen=false;//是否横屏
|
|
4144
4145
|
this.IsDestroy=false;//是否已销毁
|
|
4145
4146
|
this.EnableTooltip=true;this.TooltipRect=[];//this.Data; 存K线数据
|
|
4146
|
-
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};
|
|
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};var rightBorder=0;//右边的边界 0=div的宽度 1=图形框架边框
|
|
4148
|
+
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)//右边显示不下,显示在左边
|
|
4149
|
+
{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轴偏移
|
|
4147
4150
|
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});//文字
|
|
4148
4151
|
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);}//连线
|
|
4149
4152
|
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;
|
|
@@ -12558,7 +12561,7 @@ this.AreaColor=g_JSChartResource.ScrollBar.BGChart.AreaColor;//面积图颜色
|
|
|
12558
12561
|
};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;};}/********************************************************************************
|
|
12559
12562
|
* 版本信息输出
|
|
12560
12563
|
*
|
|
12561
|
-
*/var HQCHART_VERSION="1.1.
|
|
12564
|
+
*/var HQCHART_VERSION="1.1.12381";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();//把给外界调用的方法暴露出来
|
|
12562
12565
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12563
12566
|
// BaseIndex:BaseIndex,
|
|
12564
12567
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -13289,7 +13289,7 @@ function KLineFrame()
|
|
|
13289
13289
|
}
|
|
13290
13290
|
else
|
|
13291
13291
|
{
|
|
13292
|
-
var offset=this.ChartBorder.GetLeft()-(this.DistanceWidth/2+this.DataWidth+this.DistanceWidth);
|
|
13292
|
+
var offset=(this.ChartBorder.GetLeft()+g_JSChartResource.FrameLeftMargin)-(this.DistanceWidth/2+this.DataWidth+this.DistanceWidth);
|
|
13293
13293
|
var absIndex=Math.abs(index);
|
|
13294
13294
|
for(var i=1;i<absIndex;++i)
|
|
13295
13295
|
{
|
|
@@ -34031,6 +34031,7 @@ function ChartMultiLine()
|
|
|
34031
34031
|
{
|
|
34032
34032
|
if (!this.IsShow || this.ChartFrame.IsMinSize) return;
|
|
34033
34033
|
if (!this.Data || this.Data.length<=0) return;
|
|
34034
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.Lines)) return;
|
|
34034
34035
|
|
|
34035
34036
|
this.IsHScreen=(this.ChartFrame.IsHScreen===true);
|
|
34036
34037
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
@@ -34038,44 +34039,108 @@ function ChartMultiLine()
|
|
|
34038
34039
|
|
|
34039
34040
|
var drawLines=[];
|
|
34040
34041
|
var arrowLines=[];
|
|
34041
|
-
for(var i
|
|
34042
|
+
for(var i=0; i<this.Lines.length; ++i)
|
|
34042
34043
|
{
|
|
34043
34044
|
var line=this.Lines[i];
|
|
34044
34045
|
var drawPoints={ Point:[], Color:line.Color };
|
|
34045
34046
|
var drawArrowPoints={ Start:[], End:[] };
|
|
34046
34047
|
if (line.BGColor) drawPoints.BGColor=line.BGColor;
|
|
34047
|
-
|
|
34048
|
+
var isExtendLine=false;
|
|
34049
|
+
if (IFrameSplitOperator.IsBool(line.IsExtendLine)) isExtendLine=line.IsExtendLine;
|
|
34050
|
+
if (isExtendLine) //左右延申
|
|
34048
34051
|
{
|
|
34049
|
-
var
|
|
34050
|
-
|
|
34051
|
-
|
|
34052
|
-
var index=point.Index-offset;
|
|
34053
|
-
if (index>=0 && index<xPointCount)
|
|
34052
|
+
var prePoint=null;
|
|
34053
|
+
var bFirstPoint=true;
|
|
34054
|
+
for(var j=0; j<line.Point.length; ++j)
|
|
34054
34055
|
{
|
|
34055
|
-
var
|
|
34056
|
-
|
|
34057
|
-
|
|
34058
|
-
|
|
34056
|
+
var point=line.Point[j];
|
|
34057
|
+
if (!IFrameSplitOperator.IsNumber(point.Index)) continue;
|
|
34058
|
+
|
|
34059
|
+
var index=point.Index-offset;
|
|
34060
|
+
if (index>0 && index<xPointCount)
|
|
34061
|
+
{
|
|
34062
|
+
if (bFirstPoint)
|
|
34063
|
+
{
|
|
34064
|
+
if (prePoint)
|
|
34065
|
+
{
|
|
34066
|
+
var preIndex=prePoint.Index-offset;
|
|
34067
|
+
|
|
34068
|
+
var x=this.ChartFrame.GetXFromIndex(preIndex, false);
|
|
34069
|
+
var y=this.ChartFrame.GetYFromData(prePoint.Value, false);
|
|
34070
|
+
|
|
34071
|
+
var pointItem={X:x, Y:y, End:false};
|
|
34072
|
+
drawPoints.Point.push(pointItem);
|
|
34073
|
+
}
|
|
34074
|
+
|
|
34075
|
+
bFirstPoint=false;
|
|
34076
|
+
}
|
|
34077
|
+
|
|
34078
|
+
var x=this.ChartFrame.GetXFromIndex(index, false);
|
|
34079
|
+
var y=this.ChartFrame.GetYFromData(point.Value, false);
|
|
34080
|
+
|
|
34081
|
+
var pointItem={X:x, Y:y, End:false};
|
|
34082
|
+
drawPoints.Point.push(pointItem);
|
|
34083
|
+
}
|
|
34084
|
+
else
|
|
34085
|
+
{
|
|
34086
|
+
if (drawPoints.Point.length>0)
|
|
34087
|
+
{
|
|
34088
|
+
var x=this.ChartFrame.GetXFromIndex(index, false);
|
|
34089
|
+
var y=this.ChartFrame.GetYFromData(point.Value, false);
|
|
34090
|
+
|
|
34091
|
+
var pointItem={X:x, Y:y, End:true};
|
|
34092
|
+
drawPoints.Point.push(pointItem);
|
|
34093
|
+
|
|
34094
|
+
bFirstPoint=true;
|
|
34095
|
+
prePoint=null;
|
|
34096
|
+
}
|
|
34097
|
+
}
|
|
34059
34098
|
|
|
34060
|
-
|
|
34061
|
-
if (j==line.Point.length-1 || j==line.Point.length-2) drawArrowPoints.End.push(pointItem); //结束点
|
|
34099
|
+
prePoint=point;
|
|
34062
34100
|
}
|
|
34063
|
-
|
|
34101
|
+
|
|
34102
|
+
if (drawPoints.Point.length>=2)
|
|
34064
34103
|
{
|
|
34065
|
-
|
|
34104
|
+
drawLines.push(drawPoints);
|
|
34105
|
+
arrowLines.push(drawArrowPoints);
|
|
34066
34106
|
}
|
|
34067
34107
|
}
|
|
34068
|
-
|
|
34069
|
-
if (drawPoints.Point.length>=2)
|
|
34108
|
+
else
|
|
34070
34109
|
{
|
|
34071
|
-
|
|
34072
|
-
|
|
34110
|
+
for(var j=0; j<line.Point.length; ++j)
|
|
34111
|
+
{
|
|
34112
|
+
var point=line.Point[j];
|
|
34113
|
+
if (!IFrameSplitOperator.IsNumber(point.Index)) continue;
|
|
34114
|
+
|
|
34115
|
+
var index=point.Index-offset;
|
|
34116
|
+
if (index>=0 && index<xPointCount)
|
|
34117
|
+
{
|
|
34118
|
+
var x=this.ChartFrame.GetXFromIndex(index);
|
|
34119
|
+
var y=this.ChartFrame.GetYFromData(point.Value, false);
|
|
34120
|
+
var pointItem={X:x, Y:y, End:false};
|
|
34121
|
+
drawPoints.Point.push(pointItem);
|
|
34122
|
+
|
|
34123
|
+
if (j==0 || j==1) drawArrowPoints.Start.push(pointItem); //起始点
|
|
34124
|
+
if (j==line.Point.length-1 || j==line.Point.length-2) drawArrowPoints.End.push(pointItem); //结束点
|
|
34125
|
+
}
|
|
34126
|
+
else
|
|
34127
|
+
{
|
|
34128
|
+
if (drawPoints.Point.length>0) drawPoints.Point[drawPoints.Point.length-1].End=true; //点断开
|
|
34129
|
+
}
|
|
34130
|
+
}
|
|
34131
|
+
|
|
34132
|
+
if (drawPoints.Point.length>=2)
|
|
34133
|
+
{
|
|
34134
|
+
drawLines.push(drawPoints);
|
|
34135
|
+
arrowLines.push(drawArrowPoints);
|
|
34136
|
+
}
|
|
34073
34137
|
}
|
|
34074
34138
|
}
|
|
34075
34139
|
|
|
34076
34140
|
var pixelRatio=GetDevicePixelRatio();
|
|
34077
34141
|
this.Canvas.save();
|
|
34078
|
-
|
|
34142
|
+
this.ClipClient(this.IsHScreen);
|
|
34143
|
+
for(var i=0; i<drawLines.length; ++i)
|
|
34079
34144
|
{
|
|
34080
34145
|
if (this.LineDash) this.Canvas.setLineDash(this.LineDash);
|
|
34081
34146
|
if (IFrameSplitOperator.IsPlusNumber(this.LineWidth)) this.Canvas.lineWidth=this.LineWidth*pixelRatio;
|
|
@@ -34091,7 +34156,7 @@ function ChartMultiLine()
|
|
|
34091
34156
|
if (line.BGColor) //背景色
|
|
34092
34157
|
{
|
|
34093
34158
|
this.Canvas.fillStyle=line.BGColor;
|
|
34094
|
-
for(var i
|
|
34159
|
+
for(var i=0; i<line.Point.length; ++i)
|
|
34095
34160
|
{
|
|
34096
34161
|
var item=line.Point[i];
|
|
34097
34162
|
if (i==0)
|
|
@@ -34112,7 +34177,7 @@ function ChartMultiLine()
|
|
|
34112
34177
|
|
|
34113
34178
|
this.Canvas.strokeStyle=line.Color;
|
|
34114
34179
|
var drawCount=0;
|
|
34115
|
-
for(var i
|
|
34180
|
+
for(var i=0; i<line.Point.length; ++i)
|
|
34116
34181
|
{
|
|
34117
34182
|
var item=line.Point[i];
|
|
34118
34183
|
if (drawCount==0)
|
|
@@ -34862,7 +34927,7 @@ function ChartDrawSVG()
|
|
|
34862
34927
|
var rightMargin=2;
|
|
34863
34928
|
var itemSpace=2;
|
|
34864
34929
|
var rtBorder={ Left:rtSVG.Right, Right:rtSVG.Right, Bottom:rtSVG.Bottom };
|
|
34865
|
-
|
|
34930
|
+
var rightBorder=0; //右边的边界 0=div的宽度 1=图形框架边框
|
|
34866
34931
|
if (IFrameSplitOperator.IsNumber(data.ItemSpace)) itemSpace=data.ItemSpace;
|
|
34867
34932
|
if (IFrameSplitOperator.IsNumber(data.YOffset)) rtBorder.Bottom+=data.YOffset;
|
|
34868
34933
|
if (IFrameSplitOperator.IsNumber(data.XOffset)) rtBorder.Left+=data.XOffset;
|
|
@@ -34870,6 +34935,8 @@ function ChartDrawSVG()
|
|
|
34870
34935
|
if (IFrameSplitOperator.IsNumber(data.LeftMargin)) lefMargin=data.LeftMargin;
|
|
34871
34936
|
if (IFrameSplitOperator.IsNumber(data.RightMargin)) rightMargin=data.RightMargin;
|
|
34872
34937
|
|
|
34938
|
+
if (IFrameSplitOperator.IsNumber(data.RightBorder)) rightBorder=data.RightBorder;
|
|
34939
|
+
|
|
34873
34940
|
if (data.Font) this.Canvas.font=data.Font;
|
|
34874
34941
|
else this.Canvas.font=this.TextFont;
|
|
34875
34942
|
this.Canvas.textBaseline='bottom';
|
|
@@ -34898,6 +34965,24 @@ function ChartDrawSVG()
|
|
|
34898
34965
|
rtBorder.Width=rtBorder.Right-rtBorder.Left;
|
|
34899
34966
|
rtBorder.Top=rtBorder.Bottom-rtBorder.Height;
|
|
34900
34967
|
|
|
34968
|
+
var right=this.ChartBorder.GetChartWidth()-1;
|
|
34969
|
+
if (rightBorder==1) right=this.ChartBorder.GetRight();
|
|
34970
|
+
if (rtBorder.Right>right) //右边显示不下,显示在左边
|
|
34971
|
+
{
|
|
34972
|
+
rtBorder.Right=rtSVG.Left;
|
|
34973
|
+
if (IFrameSplitOperator.IsNumber(data.XOffset)) rtBorder.Right-=data.XOffset;
|
|
34974
|
+
rtBorder.Left=rtBorder.Right-rtBorder.Width;
|
|
34975
|
+
var xText=rtBorder.Left+lefMargin;
|
|
34976
|
+
for(var i=0;i<aryText.length;++i)
|
|
34977
|
+
{
|
|
34978
|
+
if (i>0) xText+=itemSpace;
|
|
34979
|
+
|
|
34980
|
+
var item=aryText[i];
|
|
34981
|
+
item.X=xText;
|
|
34982
|
+
xText+=item.Width;
|
|
34983
|
+
}
|
|
34984
|
+
}
|
|
34985
|
+
|
|
34901
34986
|
if (data.BGColor)
|
|
34902
34987
|
{
|
|
34903
34988
|
this.Canvas.fillStyle=data.BGColor;
|
|
@@ -17369,7 +17369,7 @@ function KLineFrame()
|
|
|
17369
17369
|
}
|
|
17370
17370
|
else
|
|
17371
17371
|
{
|
|
17372
|
-
var offset=this.ChartBorder.GetLeft()-(this.DistanceWidth/2+this.DataWidth+this.DistanceWidth);
|
|
17372
|
+
var offset=(this.ChartBorder.GetLeft()+g_JSChartResource.FrameLeftMargin)-(this.DistanceWidth/2+this.DataWidth+this.DistanceWidth);
|
|
17373
17373
|
var absIndex=Math.abs(index);
|
|
17374
17374
|
for(var i=1;i<absIndex;++i)
|
|
17375
17375
|
{
|
|
@@ -38111,6 +38111,7 @@ function ChartMultiLine()
|
|
|
38111
38111
|
{
|
|
38112
38112
|
if (!this.IsShow || this.ChartFrame.IsMinSize) return;
|
|
38113
38113
|
if (!this.Data || this.Data.length<=0) return;
|
|
38114
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.Lines)) return;
|
|
38114
38115
|
|
|
38115
38116
|
this.IsHScreen=(this.ChartFrame.IsHScreen===true);
|
|
38116
38117
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
@@ -38118,44 +38119,108 @@ function ChartMultiLine()
|
|
|
38118
38119
|
|
|
38119
38120
|
var drawLines=[];
|
|
38120
38121
|
var arrowLines=[];
|
|
38121
|
-
for(var i
|
|
38122
|
+
for(var i=0; i<this.Lines.length; ++i)
|
|
38122
38123
|
{
|
|
38123
38124
|
var line=this.Lines[i];
|
|
38124
38125
|
var drawPoints={ Point:[], Color:line.Color };
|
|
38125
38126
|
var drawArrowPoints={ Start:[], End:[] };
|
|
38126
38127
|
if (line.BGColor) drawPoints.BGColor=line.BGColor;
|
|
38127
|
-
|
|
38128
|
+
var isExtendLine=false;
|
|
38129
|
+
if (IFrameSplitOperator.IsBool(line.IsExtendLine)) isExtendLine=line.IsExtendLine;
|
|
38130
|
+
if (isExtendLine) //左右延申
|
|
38128
38131
|
{
|
|
38129
|
-
var
|
|
38130
|
-
|
|
38131
|
-
|
|
38132
|
-
var index=point.Index-offset;
|
|
38133
|
-
if (index>=0 && index<xPointCount)
|
|
38132
|
+
var prePoint=null;
|
|
38133
|
+
var bFirstPoint=true;
|
|
38134
|
+
for(var j=0; j<line.Point.length; ++j)
|
|
38134
38135
|
{
|
|
38135
|
-
var
|
|
38136
|
-
|
|
38137
|
-
|
|
38138
|
-
|
|
38136
|
+
var point=line.Point[j];
|
|
38137
|
+
if (!IFrameSplitOperator.IsNumber(point.Index)) continue;
|
|
38138
|
+
|
|
38139
|
+
var index=point.Index-offset;
|
|
38140
|
+
if (index>0 && index<xPointCount)
|
|
38141
|
+
{
|
|
38142
|
+
if (bFirstPoint)
|
|
38143
|
+
{
|
|
38144
|
+
if (prePoint)
|
|
38145
|
+
{
|
|
38146
|
+
var preIndex=prePoint.Index-offset;
|
|
38147
|
+
|
|
38148
|
+
var x=this.ChartFrame.GetXFromIndex(preIndex, false);
|
|
38149
|
+
var y=this.ChartFrame.GetYFromData(prePoint.Value, false);
|
|
38150
|
+
|
|
38151
|
+
var pointItem={X:x, Y:y, End:false};
|
|
38152
|
+
drawPoints.Point.push(pointItem);
|
|
38153
|
+
}
|
|
38154
|
+
|
|
38155
|
+
bFirstPoint=false;
|
|
38156
|
+
}
|
|
38157
|
+
|
|
38158
|
+
var x=this.ChartFrame.GetXFromIndex(index, false);
|
|
38159
|
+
var y=this.ChartFrame.GetYFromData(point.Value, false);
|
|
38160
|
+
|
|
38161
|
+
var pointItem={X:x, Y:y, End:false};
|
|
38162
|
+
drawPoints.Point.push(pointItem);
|
|
38163
|
+
}
|
|
38164
|
+
else
|
|
38165
|
+
{
|
|
38166
|
+
if (drawPoints.Point.length>0)
|
|
38167
|
+
{
|
|
38168
|
+
var x=this.ChartFrame.GetXFromIndex(index, false);
|
|
38169
|
+
var y=this.ChartFrame.GetYFromData(point.Value, false);
|
|
38170
|
+
|
|
38171
|
+
var pointItem={X:x, Y:y, End:true};
|
|
38172
|
+
drawPoints.Point.push(pointItem);
|
|
38173
|
+
|
|
38174
|
+
bFirstPoint=true;
|
|
38175
|
+
prePoint=null;
|
|
38176
|
+
}
|
|
38177
|
+
}
|
|
38139
38178
|
|
|
38140
|
-
|
|
38141
|
-
if (j==line.Point.length-1 || j==line.Point.length-2) drawArrowPoints.End.push(pointItem); //结束点
|
|
38179
|
+
prePoint=point;
|
|
38142
38180
|
}
|
|
38143
|
-
|
|
38181
|
+
|
|
38182
|
+
if (drawPoints.Point.length>=2)
|
|
38144
38183
|
{
|
|
38145
|
-
|
|
38184
|
+
drawLines.push(drawPoints);
|
|
38185
|
+
arrowLines.push(drawArrowPoints);
|
|
38146
38186
|
}
|
|
38147
38187
|
}
|
|
38148
|
-
|
|
38149
|
-
if (drawPoints.Point.length>=2)
|
|
38188
|
+
else
|
|
38150
38189
|
{
|
|
38151
|
-
|
|
38152
|
-
|
|
38190
|
+
for(var j=0; j<line.Point.length; ++j)
|
|
38191
|
+
{
|
|
38192
|
+
var point=line.Point[j];
|
|
38193
|
+
if (!IFrameSplitOperator.IsNumber(point.Index)) continue;
|
|
38194
|
+
|
|
38195
|
+
var index=point.Index-offset;
|
|
38196
|
+
if (index>=0 && index<xPointCount)
|
|
38197
|
+
{
|
|
38198
|
+
var x=this.ChartFrame.GetXFromIndex(index);
|
|
38199
|
+
var y=this.ChartFrame.GetYFromData(point.Value, false);
|
|
38200
|
+
var pointItem={X:x, Y:y, End:false};
|
|
38201
|
+
drawPoints.Point.push(pointItem);
|
|
38202
|
+
|
|
38203
|
+
if (j==0 || j==1) drawArrowPoints.Start.push(pointItem); //起始点
|
|
38204
|
+
if (j==line.Point.length-1 || j==line.Point.length-2) drawArrowPoints.End.push(pointItem); //结束点
|
|
38205
|
+
}
|
|
38206
|
+
else
|
|
38207
|
+
{
|
|
38208
|
+
if (drawPoints.Point.length>0) drawPoints.Point[drawPoints.Point.length-1].End=true; //点断开
|
|
38209
|
+
}
|
|
38210
|
+
}
|
|
38211
|
+
|
|
38212
|
+
if (drawPoints.Point.length>=2)
|
|
38213
|
+
{
|
|
38214
|
+
drawLines.push(drawPoints);
|
|
38215
|
+
arrowLines.push(drawArrowPoints);
|
|
38216
|
+
}
|
|
38153
38217
|
}
|
|
38154
38218
|
}
|
|
38155
38219
|
|
|
38156
38220
|
var pixelRatio=GetDevicePixelRatio();
|
|
38157
38221
|
this.Canvas.save();
|
|
38158
|
-
|
|
38222
|
+
this.ClipClient(this.IsHScreen);
|
|
38223
|
+
for(var i=0; i<drawLines.length; ++i)
|
|
38159
38224
|
{
|
|
38160
38225
|
if (this.LineDash) this.Canvas.setLineDash(this.LineDash);
|
|
38161
38226
|
if (IFrameSplitOperator.IsPlusNumber(this.LineWidth)) this.Canvas.lineWidth=this.LineWidth*pixelRatio;
|
|
@@ -38171,7 +38236,7 @@ function ChartMultiLine()
|
|
|
38171
38236
|
if (line.BGColor) //背景色
|
|
38172
38237
|
{
|
|
38173
38238
|
this.Canvas.fillStyle=line.BGColor;
|
|
38174
|
-
for(var i
|
|
38239
|
+
for(var i=0; i<line.Point.length; ++i)
|
|
38175
38240
|
{
|
|
38176
38241
|
var item=line.Point[i];
|
|
38177
38242
|
if (i==0)
|
|
@@ -38192,7 +38257,7 @@ function ChartMultiLine()
|
|
|
38192
38257
|
|
|
38193
38258
|
this.Canvas.strokeStyle=line.Color;
|
|
38194
38259
|
var drawCount=0;
|
|
38195
|
-
for(var i
|
|
38260
|
+
for(var i=0; i<line.Point.length; ++i)
|
|
38196
38261
|
{
|
|
38197
38262
|
var item=line.Point[i];
|
|
38198
38263
|
if (drawCount==0)
|
|
@@ -38942,7 +39007,7 @@ function ChartDrawSVG()
|
|
|
38942
39007
|
var rightMargin=2;
|
|
38943
39008
|
var itemSpace=2;
|
|
38944
39009
|
var rtBorder={ Left:rtSVG.Right, Right:rtSVG.Right, Bottom:rtSVG.Bottom };
|
|
38945
|
-
|
|
39010
|
+
var rightBorder=0; //右边的边界 0=div的宽度 1=图形框架边框
|
|
38946
39011
|
if (IFrameSplitOperator.IsNumber(data.ItemSpace)) itemSpace=data.ItemSpace;
|
|
38947
39012
|
if (IFrameSplitOperator.IsNumber(data.YOffset)) rtBorder.Bottom+=data.YOffset;
|
|
38948
39013
|
if (IFrameSplitOperator.IsNumber(data.XOffset)) rtBorder.Left+=data.XOffset;
|
|
@@ -38950,6 +39015,8 @@ function ChartDrawSVG()
|
|
|
38950
39015
|
if (IFrameSplitOperator.IsNumber(data.LeftMargin)) lefMargin=data.LeftMargin;
|
|
38951
39016
|
if (IFrameSplitOperator.IsNumber(data.RightMargin)) rightMargin=data.RightMargin;
|
|
38952
39017
|
|
|
39018
|
+
if (IFrameSplitOperator.IsNumber(data.RightBorder)) rightBorder=data.RightBorder;
|
|
39019
|
+
|
|
38953
39020
|
if (data.Font) this.Canvas.font=data.Font;
|
|
38954
39021
|
else this.Canvas.font=this.TextFont;
|
|
38955
39022
|
this.Canvas.textBaseline='bottom';
|
|
@@ -38978,6 +39045,24 @@ function ChartDrawSVG()
|
|
|
38978
39045
|
rtBorder.Width=rtBorder.Right-rtBorder.Left;
|
|
38979
39046
|
rtBorder.Top=rtBorder.Bottom-rtBorder.Height;
|
|
38980
39047
|
|
|
39048
|
+
var right=this.ChartBorder.GetChartWidth()-1;
|
|
39049
|
+
if (rightBorder==1) right=this.ChartBorder.GetRight();
|
|
39050
|
+
if (rtBorder.Right>right) //右边显示不下,显示在左边
|
|
39051
|
+
{
|
|
39052
|
+
rtBorder.Right=rtSVG.Left;
|
|
39053
|
+
if (IFrameSplitOperator.IsNumber(data.XOffset)) rtBorder.Right-=data.XOffset;
|
|
39054
|
+
rtBorder.Left=rtBorder.Right-rtBorder.Width;
|
|
39055
|
+
var xText=rtBorder.Left+lefMargin;
|
|
39056
|
+
for(var i=0;i<aryText.length;++i)
|
|
39057
|
+
{
|
|
39058
|
+
if (i>0) xText+=itemSpace;
|
|
39059
|
+
|
|
39060
|
+
var item=aryText[i];
|
|
39061
|
+
item.X=xText;
|
|
39062
|
+
xText+=item.Width;
|
|
39063
|
+
}
|
|
39064
|
+
}
|
|
39065
|
+
|
|
38981
39066
|
if (data.BGColor)
|
|
38982
39067
|
{
|
|
38983
39068
|
this.Canvas.fillStyle=data.BGColor;
|
|
@@ -127237,7 +127322,7 @@ function ScrollBarBGChart()
|
|
|
127237
127322
|
|
|
127238
127323
|
|
|
127239
127324
|
|
|
127240
|
-
var HQCHART_VERSION="1.1.
|
|
127325
|
+
var HQCHART_VERSION="1.1.12381";
|
|
127241
127326
|
|
|
127242
127327
|
function PrintHQChartVersion()
|
|
127243
127328
|
{
|
|
@@ -17413,7 +17413,7 @@ function KLineFrame()
|
|
|
17413
17413
|
}
|
|
17414
17414
|
else
|
|
17415
17415
|
{
|
|
17416
|
-
var offset=this.ChartBorder.GetLeft()-(this.DistanceWidth/2+this.DataWidth+this.DistanceWidth);
|
|
17416
|
+
var offset=(this.ChartBorder.GetLeft()+g_JSChartResource.FrameLeftMargin)-(this.DistanceWidth/2+this.DataWidth+this.DistanceWidth);
|
|
17417
17417
|
var absIndex=Math.abs(index);
|
|
17418
17418
|
for(var i=1;i<absIndex;++i)
|
|
17419
17419
|
{
|
|
@@ -38155,6 +38155,7 @@ function ChartMultiLine()
|
|
|
38155
38155
|
{
|
|
38156
38156
|
if (!this.IsShow || this.ChartFrame.IsMinSize) return;
|
|
38157
38157
|
if (!this.Data || this.Data.length<=0) return;
|
|
38158
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.Lines)) return;
|
|
38158
38159
|
|
|
38159
38160
|
this.IsHScreen=(this.ChartFrame.IsHScreen===true);
|
|
38160
38161
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
@@ -38162,44 +38163,108 @@ function ChartMultiLine()
|
|
|
38162
38163
|
|
|
38163
38164
|
var drawLines=[];
|
|
38164
38165
|
var arrowLines=[];
|
|
38165
|
-
for(var i
|
|
38166
|
+
for(var i=0; i<this.Lines.length; ++i)
|
|
38166
38167
|
{
|
|
38167
38168
|
var line=this.Lines[i];
|
|
38168
38169
|
var drawPoints={ Point:[], Color:line.Color };
|
|
38169
38170
|
var drawArrowPoints={ Start:[], End:[] };
|
|
38170
38171
|
if (line.BGColor) drawPoints.BGColor=line.BGColor;
|
|
38171
|
-
|
|
38172
|
+
var isExtendLine=false;
|
|
38173
|
+
if (IFrameSplitOperator.IsBool(line.IsExtendLine)) isExtendLine=line.IsExtendLine;
|
|
38174
|
+
if (isExtendLine) //左右延申
|
|
38172
38175
|
{
|
|
38173
|
-
var
|
|
38174
|
-
|
|
38175
|
-
|
|
38176
|
-
var index=point.Index-offset;
|
|
38177
|
-
if (index>=0 && index<xPointCount)
|
|
38176
|
+
var prePoint=null;
|
|
38177
|
+
var bFirstPoint=true;
|
|
38178
|
+
for(var j=0; j<line.Point.length; ++j)
|
|
38178
38179
|
{
|
|
38179
|
-
var
|
|
38180
|
-
|
|
38181
|
-
|
|
38182
|
-
|
|
38180
|
+
var point=line.Point[j];
|
|
38181
|
+
if (!IFrameSplitOperator.IsNumber(point.Index)) continue;
|
|
38182
|
+
|
|
38183
|
+
var index=point.Index-offset;
|
|
38184
|
+
if (index>0 && index<xPointCount)
|
|
38185
|
+
{
|
|
38186
|
+
if (bFirstPoint)
|
|
38187
|
+
{
|
|
38188
|
+
if (prePoint)
|
|
38189
|
+
{
|
|
38190
|
+
var preIndex=prePoint.Index-offset;
|
|
38191
|
+
|
|
38192
|
+
var x=this.ChartFrame.GetXFromIndex(preIndex, false);
|
|
38193
|
+
var y=this.ChartFrame.GetYFromData(prePoint.Value, false);
|
|
38194
|
+
|
|
38195
|
+
var pointItem={X:x, Y:y, End:false};
|
|
38196
|
+
drawPoints.Point.push(pointItem);
|
|
38197
|
+
}
|
|
38198
|
+
|
|
38199
|
+
bFirstPoint=false;
|
|
38200
|
+
}
|
|
38201
|
+
|
|
38202
|
+
var x=this.ChartFrame.GetXFromIndex(index, false);
|
|
38203
|
+
var y=this.ChartFrame.GetYFromData(point.Value, false);
|
|
38204
|
+
|
|
38205
|
+
var pointItem={X:x, Y:y, End:false};
|
|
38206
|
+
drawPoints.Point.push(pointItem);
|
|
38207
|
+
}
|
|
38208
|
+
else
|
|
38209
|
+
{
|
|
38210
|
+
if (drawPoints.Point.length>0)
|
|
38211
|
+
{
|
|
38212
|
+
var x=this.ChartFrame.GetXFromIndex(index, false);
|
|
38213
|
+
var y=this.ChartFrame.GetYFromData(point.Value, false);
|
|
38214
|
+
|
|
38215
|
+
var pointItem={X:x, Y:y, End:true};
|
|
38216
|
+
drawPoints.Point.push(pointItem);
|
|
38217
|
+
|
|
38218
|
+
bFirstPoint=true;
|
|
38219
|
+
prePoint=null;
|
|
38220
|
+
}
|
|
38221
|
+
}
|
|
38183
38222
|
|
|
38184
|
-
|
|
38185
|
-
if (j==line.Point.length-1 || j==line.Point.length-2) drawArrowPoints.End.push(pointItem); //结束点
|
|
38223
|
+
prePoint=point;
|
|
38186
38224
|
}
|
|
38187
|
-
|
|
38225
|
+
|
|
38226
|
+
if (drawPoints.Point.length>=2)
|
|
38188
38227
|
{
|
|
38189
|
-
|
|
38228
|
+
drawLines.push(drawPoints);
|
|
38229
|
+
arrowLines.push(drawArrowPoints);
|
|
38190
38230
|
}
|
|
38191
38231
|
}
|
|
38192
|
-
|
|
38193
|
-
if (drawPoints.Point.length>=2)
|
|
38232
|
+
else
|
|
38194
38233
|
{
|
|
38195
|
-
|
|
38196
|
-
|
|
38234
|
+
for(var j=0; j<line.Point.length; ++j)
|
|
38235
|
+
{
|
|
38236
|
+
var point=line.Point[j];
|
|
38237
|
+
if (!IFrameSplitOperator.IsNumber(point.Index)) continue;
|
|
38238
|
+
|
|
38239
|
+
var index=point.Index-offset;
|
|
38240
|
+
if (index>=0 && index<xPointCount)
|
|
38241
|
+
{
|
|
38242
|
+
var x=this.ChartFrame.GetXFromIndex(index);
|
|
38243
|
+
var y=this.ChartFrame.GetYFromData(point.Value, false);
|
|
38244
|
+
var pointItem={X:x, Y:y, End:false};
|
|
38245
|
+
drawPoints.Point.push(pointItem);
|
|
38246
|
+
|
|
38247
|
+
if (j==0 || j==1) drawArrowPoints.Start.push(pointItem); //起始点
|
|
38248
|
+
if (j==line.Point.length-1 || j==line.Point.length-2) drawArrowPoints.End.push(pointItem); //结束点
|
|
38249
|
+
}
|
|
38250
|
+
else
|
|
38251
|
+
{
|
|
38252
|
+
if (drawPoints.Point.length>0) drawPoints.Point[drawPoints.Point.length-1].End=true; //点断开
|
|
38253
|
+
}
|
|
38254
|
+
}
|
|
38255
|
+
|
|
38256
|
+
if (drawPoints.Point.length>=2)
|
|
38257
|
+
{
|
|
38258
|
+
drawLines.push(drawPoints);
|
|
38259
|
+
arrowLines.push(drawArrowPoints);
|
|
38260
|
+
}
|
|
38197
38261
|
}
|
|
38198
38262
|
}
|
|
38199
38263
|
|
|
38200
38264
|
var pixelRatio=GetDevicePixelRatio();
|
|
38201
38265
|
this.Canvas.save();
|
|
38202
|
-
|
|
38266
|
+
this.ClipClient(this.IsHScreen);
|
|
38267
|
+
for(var i=0; i<drawLines.length; ++i)
|
|
38203
38268
|
{
|
|
38204
38269
|
if (this.LineDash) this.Canvas.setLineDash(this.LineDash);
|
|
38205
38270
|
if (IFrameSplitOperator.IsPlusNumber(this.LineWidth)) this.Canvas.lineWidth=this.LineWidth*pixelRatio;
|
|
@@ -38215,7 +38280,7 @@ function ChartMultiLine()
|
|
|
38215
38280
|
if (line.BGColor) //背景色
|
|
38216
38281
|
{
|
|
38217
38282
|
this.Canvas.fillStyle=line.BGColor;
|
|
38218
|
-
for(var i
|
|
38283
|
+
for(var i=0; i<line.Point.length; ++i)
|
|
38219
38284
|
{
|
|
38220
38285
|
var item=line.Point[i];
|
|
38221
38286
|
if (i==0)
|
|
@@ -38236,7 +38301,7 @@ function ChartMultiLine()
|
|
|
38236
38301
|
|
|
38237
38302
|
this.Canvas.strokeStyle=line.Color;
|
|
38238
38303
|
var drawCount=0;
|
|
38239
|
-
for(var i
|
|
38304
|
+
for(var i=0; i<line.Point.length; ++i)
|
|
38240
38305
|
{
|
|
38241
38306
|
var item=line.Point[i];
|
|
38242
38307
|
if (drawCount==0)
|
|
@@ -38986,7 +39051,7 @@ function ChartDrawSVG()
|
|
|
38986
39051
|
var rightMargin=2;
|
|
38987
39052
|
var itemSpace=2;
|
|
38988
39053
|
var rtBorder={ Left:rtSVG.Right, Right:rtSVG.Right, Bottom:rtSVG.Bottom };
|
|
38989
|
-
|
|
39054
|
+
var rightBorder=0; //右边的边界 0=div的宽度 1=图形框架边框
|
|
38990
39055
|
if (IFrameSplitOperator.IsNumber(data.ItemSpace)) itemSpace=data.ItemSpace;
|
|
38991
39056
|
if (IFrameSplitOperator.IsNumber(data.YOffset)) rtBorder.Bottom+=data.YOffset;
|
|
38992
39057
|
if (IFrameSplitOperator.IsNumber(data.XOffset)) rtBorder.Left+=data.XOffset;
|
|
@@ -38994,6 +39059,8 @@ function ChartDrawSVG()
|
|
|
38994
39059
|
if (IFrameSplitOperator.IsNumber(data.LeftMargin)) lefMargin=data.LeftMargin;
|
|
38995
39060
|
if (IFrameSplitOperator.IsNumber(data.RightMargin)) rightMargin=data.RightMargin;
|
|
38996
39061
|
|
|
39062
|
+
if (IFrameSplitOperator.IsNumber(data.RightBorder)) rightBorder=data.RightBorder;
|
|
39063
|
+
|
|
38997
39064
|
if (data.Font) this.Canvas.font=data.Font;
|
|
38998
39065
|
else this.Canvas.font=this.TextFont;
|
|
38999
39066
|
this.Canvas.textBaseline='bottom';
|
|
@@ -39022,6 +39089,24 @@ function ChartDrawSVG()
|
|
|
39022
39089
|
rtBorder.Width=rtBorder.Right-rtBorder.Left;
|
|
39023
39090
|
rtBorder.Top=rtBorder.Bottom-rtBorder.Height;
|
|
39024
39091
|
|
|
39092
|
+
var right=this.ChartBorder.GetChartWidth()-1;
|
|
39093
|
+
if (rightBorder==1) right=this.ChartBorder.GetRight();
|
|
39094
|
+
if (rtBorder.Right>right) //右边显示不下,显示在左边
|
|
39095
|
+
{
|
|
39096
|
+
rtBorder.Right=rtSVG.Left;
|
|
39097
|
+
if (IFrameSplitOperator.IsNumber(data.XOffset)) rtBorder.Right-=data.XOffset;
|
|
39098
|
+
rtBorder.Left=rtBorder.Right-rtBorder.Width;
|
|
39099
|
+
var xText=rtBorder.Left+lefMargin;
|
|
39100
|
+
for(var i=0;i<aryText.length;++i)
|
|
39101
|
+
{
|
|
39102
|
+
if (i>0) xText+=itemSpace;
|
|
39103
|
+
|
|
39104
|
+
var item=aryText[i];
|
|
39105
|
+
item.X=xText;
|
|
39106
|
+
xText+=item.Width;
|
|
39107
|
+
}
|
|
39108
|
+
}
|
|
39109
|
+
|
|
39025
39110
|
if (data.BGColor)
|
|
39026
39111
|
{
|
|
39027
39112
|
this.Canvas.fillStyle=data.BGColor;
|
|
@@ -127281,7 +127366,7 @@ function ScrollBarBGChart()
|
|
|
127281
127366
|
|
|
127282
127367
|
|
|
127283
127368
|
|
|
127284
|
-
var HQCHART_VERSION="1.1.
|
|
127369
|
+
var HQCHART_VERSION="1.1.12381";
|
|
127285
127370
|
|
|
127286
127371
|
function PrintHQChartVersion()
|
|
127287
127372
|
{
|