hqchart 1.1.12893 → 1.1.12900
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/README.md +3 -0
- package/lib/umychart.vue.js +16 -9
- package/package.json +1 -1
- package/src/jscommon/umychart.js +144 -26
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +145 -27
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +145 -27
package/README.md
CHANGED
|
@@ -31,6 +31,9 @@
|
|
|
31
31
|
源码地址:[https://github.com/jones2000/HQChart-Super](https://github.com/jones2000/HQChart-Super)<br>
|
|
32
32
|
镜像地址:[https://gitee.com/jones2000/HQChart-Super](https://gitee.com/jones2000/HQChart-Super)<br>
|
|
33
33
|
|
|
34
|
+
## 依赖模块
|
|
35
|
+
jquery, babel-runtime.
|
|
36
|
+
|
|
34
37
|
## Environment
|
|
35
38
|
|
|
36
39
|
`Node >= 6`
|
package/lib/umychart.vue.js
CHANGED
|
@@ -1367,7 +1367,8 @@ if(option.SelectedChart){var item=option.SelectedChart;if(IFrameSplitOperator.Is
|
|
|
1367
1367
|
if(IFrameSplitOperator.IsNonEmptyArray(option.KLineCalcOption)){for(var i=0;i<option.KLineCalcOption.length;++i){var item=option.KLineCalcOption[i];if(!item.ClassName||!item.Option)continue;chart.SetKLineCalcOption(item.ClassName,item.Option);}}//创建子窗口
|
|
1368
1368
|
chart.Create(option.Windows.length,option);this.SetChartBorder(chart,option);this.AdjustChartBorder(chart);if(option.KLine){if(option.KLine.PageSize>0)//一屏显示的数据个数
|
|
1369
1369
|
{var pageSize=chart.GetMaxMinPageSize();if(pageSize.Max>10&&pageSize.Max<option.KLine.PageSize)chart.PageSize=pageSize.Max;else if(pageSize.Min>10&&pageSize.Min>option.KLine.PageSize)chart.PageSize=pageSize.Min;else chart.PageSize=option.KLine.PageSize;}}//取消显示十字光标刻度信息
|
|
1370
|
-
if(option.IsCorssOnlyDrawKLine===true)chart.ChartCorssCursor.IsOnlyDrawKLine=option.IsCorssOnlyDrawKLine;if(option.CorssCursorTouchEnd===true)chart.CorssCursorTouchEnd=option.CorssCursorTouchEnd;if(option.IsClickShowCorssCursor==true)chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;if(option.CorssCursorInfo){var item=option.CorssCursorInfo;if(!isNaN(option.CorssCursorInfo.Left))chart.ChartCorssCursor.ShowTextMode.Left=option.CorssCursorInfo.Left;if(!isNaN(option.CorssCursorInfo.Right))chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;if(!isNaN(option.CorssCursorInfo.Bottom))chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;if(option.CorssCursorInfo.IsShowCorss===false)chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;if(
|
|
1370
|
+
if(option.IsCorssOnlyDrawKLine===true)chart.ChartCorssCursor.IsOnlyDrawKLine=option.IsCorssOnlyDrawKLine;if(option.CorssCursorTouchEnd===true)chart.CorssCursorTouchEnd=option.CorssCursorTouchEnd;if(option.IsClickShowCorssCursor==true)chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;if(option.CorssCursorInfo){var item=option.CorssCursorInfo;if(!isNaN(option.CorssCursorInfo.Left))chart.ChartCorssCursor.ShowTextMode.Left=option.CorssCursorInfo.Left;if(!isNaN(option.CorssCursorInfo.Right))chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;if(!isNaN(option.CorssCursorInfo.Bottom))chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;if(option.CorssCursorInfo.IsShowCorss===false)chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;if(IFrameSplitOperator.IsBool(item.IsShowClose))chart.ChartCorssCursor.IsShowClose=item.IsShowClose;//Y轴显示收盘价
|
|
1371
|
+
if(IFrameSplitOperator.IsBool(item.IsOnlyDrawKLine))chart.ChartCorssCursor.IsOnlyDrawKLine=item.IsOnlyDrawKLine;//Y轴显示收盘价
|
|
1371
1372
|
if(option.CorssCursorInfo.PressTime)chart.PressTime=option.CorssCursorInfo.PressTime;//长按显示十字光标的时间
|
|
1372
1373
|
if(IFrameSplitOperator.IsNumber(option.CorssCursorInfo.HPenType))chart.ChartCorssCursor.HPenType=option.CorssCursorInfo.HPenType;if(option.CorssCursorInfo.VPenType>0)chart.ChartCorssCursor.VPenType=option.CorssCursorInfo.VPenType;if(IFrameSplitOperator.IsNumber(item.VLineType))chart.ChartCorssCursor.VLineType=item.VLineType;if(option.CorssCursorInfo.DateFormatType>0)chart.ChartCorssCursor.StringFormatX.DateFormatType=option.CorssCursorInfo.DateFormatType;if(IFrameSplitOperator.IsBool(item.IsDrawXRangeBG))chart.ChartCorssCursor.IsDrawXRangeBG=item.IsDrawXRangeBG;if(IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime))chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;if(IFrameSplitOperator.IsNumber(item.TextHeight))chart.ChartCorssCursor.TextHeight=item.TextHeight;if(item.RightButton){if(IFrameSplitOperator.IsBool(item.RightButton.Enable))chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;}if(IFrameSplitOperator.IsNumber(item.PriceFormatType))chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;if(IFrameSplitOperator.IsNumber(item.DataFormatType))chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;}//保存十字光标文字高度
|
|
1373
1374
|
option.CorssCursor={};option.CorssCursor.TitleHeight=chart.ChartCorssCursor.TextHeight;if(IFrameSplitOperator.IsNumber(option.SplashTitlePosition)){if(chart.ChartSplashPaint)chart.ChartSplashPaint.Position=option.SplashTitlePosition;}if(option.Frame){for(var i=0;i<option.Frame.length;++i){var item=option.Frame[i];if(!chart.Frame.SubFrame[i])continue;var subFrame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsNumber(item.SplitCount))chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;if(item.StringFormat)chart.Frame.SubFrame[i].Frame.YSplitOperator.StringFormat=item.StringFormat;if(IFrameSplitOperator.IsNumber(item.FloatPrecision))chart.Frame.SubFrame[i].Frame.YSplitOperator.FloatPrecision=item.FloatPrecision;if(item.Custom)chart.Frame.SubFrame[i].Frame.YSplitOperator.Custom=item.Custom;if(IFrameSplitOperator.IsNumber(item.SplitType)){chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;}if(!isNaN(item.Height))chart.Frame.SubFrame[i].Height=item.Height;if(item.IsShowLeftText===false||item.IsShowLeftText===true){chart.Frame.SubFrame[i].Frame.IsShowYText[0]=item.IsShowLeftText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
|
|
@@ -2307,13 +2308,19 @@ this.Canvas.beginPath();this.Canvas.moveTo(left,yFixed);this.Canvas.lineTo(right
|
|
|
2307
2308
|
{}else if(item.LineType==8||item.LineType==9)//集合竞价不画线
|
|
2308
2309
|
{}else if(item.LineType>0){if(g_JSChartResource.FrameYLineDash){this.Canvas.save();this.Canvas.setLineDash(g_JSChartResource.FrameYLineDash);//虚线
|
|
2309
2310
|
this.Canvas.beginPath();this.Canvas.moveTo(left,yFixed);this.Canvas.lineTo(right,yFixed);this.Canvas.stroke();this.Canvas.setLineDash([]);this.Canvas.restore();}else{this.Canvas.beginPath();this.Canvas.moveTo(left,yFixed);this.Canvas.lineTo(right,yFixed);this.Canvas.stroke();}}if(bChangeLineWidth){this.Canvas.lineWidth=pixelRatio;}}var yText=y;if(y>=bottom-2){this.Canvas.textBaseline='bottom';textBaseline=2;}else if(y<=top+2){this.Canvas.textBaseline='top';yText+=this.YTextTopOffset;textBaseline=0;}else{this.Canvas.textBaseline="middle";textBaseline=1;}//左边 坐标信息 间距小于10 不画坐标
|
|
2310
|
-
this.Canvas.strokeStyle=item.TextColor;this.Canvas.fillStyle=item.TextColor;if(item.Message[0]!=null&&isDrawLeft){if(item.Font!=null)this.Canvas.font=item.Font;var xText=left;if(leftExtendLine&&leftExtendLine.Width>1){var lineLength=leftExtendLine.Width;if(leftExtendLine.Color)this.Canvas.strokeStyle=leftExtendLine.Color;else this.Canvas.strokeStyle=item.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(xText,yFixed);this.Canvas.lineTo(xText-lineLength,yFixed);this.Canvas.stroke();xText-=lineLength;}rtLeft=this.GetTextTopBottom(textBaseline,yText);if(!rtPreLeft||rtLeft&&!this.IsTextTopBottomOverlap(rtLeft,rtPreLeft)){if(leftExtendText&&leftExtendText.Align===1){this.Canvas.textAlign="left";this.Canvas.fillText(item.Message[0],this.YTextPadding[0],yText);}else{this.Canvas.textAlign="right";this.Canvas.fillText(item.Message[0],xText-this.YTextPadding[0],yText);rtPreLeft=rtLeft;}}}//右边 坐标信息 间距小于10 不画坐标
|
|
2311
|
+
this.Canvas.strokeStyle=item.TextColor;this.Canvas.fillStyle=item.TextColor;if(item.Message[0]!=null&&isDrawLeft){if(Array.isArray(item.Message[0])){if(this.MultiTextFormat==3){var obj={Data:item.Message[0],X:left,Y:yText,TextBaseLine:textBaseline,IsLeft:true,Item:item,TextPadding:this.YTextPadding[0]};this.DrawMultiLineText(obj);}}else{if(item.Font!=null)this.Canvas.font=item.Font;var xText=left;if(leftExtendLine&&leftExtendLine.Width>1){var lineLength=leftExtendLine.Width;if(leftExtendLine.Color)this.Canvas.strokeStyle=leftExtendLine.Color;else this.Canvas.strokeStyle=item.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(xText,yFixed);this.Canvas.lineTo(xText-lineLength,yFixed);this.Canvas.stroke();xText-=lineLength;}rtLeft=this.GetTextTopBottom(textBaseline,yText);if(!rtPreLeft||rtLeft&&!this.IsTextTopBottomOverlap(rtLeft,rtPreLeft)){if(leftExtendText&&leftExtendText.Align===1){this.Canvas.textAlign="left";this.Canvas.fillText(item.Message[0],this.YTextPadding[0],yText);}else{this.Canvas.textAlign="right";this.Canvas.fillText(item.Message[0],xText-this.YTextPadding[0],yText);rtPreLeft=rtLeft;}}}}//右边 坐标信息 间距小于10 不画坐标
|
|
2311
2312
|
if(item.Message[1]!=null&&isDrawRight){if(item.Font!=null)this.Canvas.font=item.Font;var xText=right;if(item.LineType==3){var lineLength=this.ShortYLineLength*GetDevicePixelRatio();this.Canvas.beginPath();this.Canvas.moveTo(xText,yFixed);this.Canvas.lineTo(xText+lineLength,yFixed);this.Canvas.stroke();xText+=lineLength;}//右侧延长线
|
|
2312
2313
|
if(rightExtendLine&&rightExtendLine.Width>1){var lineLength=rightExtendLine.Width;if(rightExtendLine.Color)this.Canvas.strokeStyle=rightExtendLine.Color;else this.Canvas.strokeStyle=item.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(xText,yFixed);this.Canvas.lineTo(xText+lineLength,yFixed);this.Canvas.stroke();xText+=lineLength+2;}this.Canvas.textAlign="left";if(Array.isArray(item.Message[1])){if(this.MultiTextFormat==1)//显示1行 格式:价格/百分比
|
|
2313
2314
|
{if(item.ExtendData){if(item.ExtendData.Font)this.Canvas.font=item.ExtendData.Font;}var textData={Text:[{Text:item.Message[1][0],Width:this.Canvas.measureText(item.Message[1][0]).width},{Text:item.Message[1][1],Width:this.Canvas.measureText(item.Message[1][1]).width}],X:xText+2,Y:yText,TextBaseline:this.Canvas.textBaseline,Item:item};aryMultiText.push(textData);}else if(this.MultiTextFormat==2)//显示2行
|
|
2314
|
-
{this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);var lineHeight=this.Canvas.measureText('M').width;if(itemHeight>lineHeight*2)this.Canvas.fillText(item.Message[1][1],xText+this.YTextPadding[1],yText+lineHeight);}else//显示第1行
|
|
2315
|
+
{this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);var lineHeight=this.Canvas.measureText('M').width;if(itemHeight>lineHeight*2)this.Canvas.fillText(item.Message[1][1],xText+this.YTextPadding[1],yText+lineHeight);}else if(this.MultiTextFormat==3){var obj={Data:item.Message[1],X:xText,Y:yText,TextBaseLine:textBaseline,IsLeft:false,Item:item,TextPadding:this.YTextPadding[1]};this.DrawMultiLineText(obj);}else//显示第1行
|
|
2315
2316
|
{this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);}}else{//计算显示的区域
|
|
2316
|
-
rtRight=this.GetTextTopBottom(textBaseline,yText);if(!rtPreRight||rtRight&&!this.IsTextTopBottomOverlap(rtRight,rtPreRight)){if(item.TextColor2)this.Canvas.fillStyle=item.TextColor2;if(rightExtendText&&rightExtendText.Align===2&&this.YRightTextInfo){this.Canvas.textAlign="right";var xRight=this.YRightTextInfo.MainTextWidth+right-this.YTextPadding[1];this.Canvas.fillText(item.Message[1],xRight,yText);}else{this.Canvas.fillText(item.Message[1],xText+this.YTextPadding[1],yText);}rtPreRight=rtRight;}}}yPrev=y;}if(IFrameSplitOperator.IsNonEmptyArray(aryMultiText)&&this.MultiTextFormat==1)this.DrawHorizontalMuText(aryMultiText);if(isDrawRight&&this.IsDrawRightBorder&&this.YRightTextInfo){var xRight=this.YRightTextInfo.MainTextWidth+right;xLine=ToFixedPoint(xRight);this.Canvas.strokeStyle=this.PenBorder;this.Canvas.beginPath();this.Canvas.moveTo(xLine,top);this.Canvas.lineTo(xLine,bottom);this.Canvas.stroke();if(IFrameSplitOperator.IsNonEmptyArray(this.YRightTextInfo.AryOverlayWidth)){this.Canvas.beginPath();for(var i=0;i<this.YRightTextInfo.AryOverlayWidth.length;++i){var width=this.YRightTextInfo.AryOverlayWidth[i];xRight+=width;xLine=ToFixedPoint(xRight);this.Canvas.moveTo(xLine,top);this.Canvas.lineTo(xLine,bottom);}this.Canvas.stroke();}}}
|
|
2317
|
+
rtRight=this.GetTextTopBottom(textBaseline,yText);if(!rtPreRight||rtRight&&!this.IsTextTopBottomOverlap(rtRight,rtPreRight)){if(item.TextColor2)this.Canvas.fillStyle=item.TextColor2;if(rightExtendText&&rightExtendText.Align===2&&this.YRightTextInfo){this.Canvas.textAlign="right";var xRight=this.YRightTextInfo.MainTextWidth+right-this.YTextPadding[1];this.Canvas.fillText(item.Message[1],xRight,yText);}else{this.Canvas.fillText(item.Message[1],xText+this.YTextPadding[1],yText);}rtPreRight=rtRight;}}}yPrev=y;}if(IFrameSplitOperator.IsNonEmptyArray(aryMultiText)&&this.MultiTextFormat==1)this.DrawHorizontalMuText(aryMultiText);if(isDrawRight&&this.IsDrawRightBorder&&this.YRightTextInfo){var xRight=this.YRightTextInfo.MainTextWidth+right;xLine=ToFixedPoint(xRight);this.Canvas.strokeStyle=this.PenBorder;this.Canvas.beginPath();this.Canvas.moveTo(xLine,top);this.Canvas.lineTo(xLine,bottom);this.Canvas.stroke();if(IFrameSplitOperator.IsNonEmptyArray(this.YRightTextInfo.AryOverlayWidth)){this.Canvas.beginPath();for(var i=0;i<this.YRightTextInfo.AryOverlayWidth.length;++i){var width=this.YRightTextInfo.AryOverlayWidth[i];xRight+=width;xLine=ToFixedPoint(xRight);this.Canvas.moveTo(xLine,top);this.Canvas.lineTo(xLine,bottom);}this.Canvas.stroke();}}};//多行文字刻度输出 obj={ Data:, X:, Y:, TextBaseLine:, IsLeft:, Item:刻度数据 }
|
|
2318
|
+
this.DrawMultiLineText=function(obj){var lineSpacing=2;var lineHeight=this.Canvas.measureText('擎').width;var lineCount=obj.Data.length;var textHeight=lineHeight*lineCount+lineSpacing*(lineCount-1);var yText=obj.Y;if(obj.Item.Font!=null)this.Canvas.font=obj.Item.Font;if(obj.IsLeft){this.Canvas.textAlign="right";var xText=obj.X-obj.TextPadding;}else{this.Canvas.textAlign="left";var xText=obj.X+obj.TextPadding;}var textBaseline=this.Canvas.textBaseline;//备份下原来的对齐方式
|
|
2319
|
+
this.Canvas.textBaseline='top';if(obj.TextBaseLine==1)//middle
|
|
2320
|
+
{yText-=textHeight/2;}else if(obj.TextBaseLine==0)//top
|
|
2321
|
+
{}else if(obj.TextBaseLine==2)//bottom
|
|
2322
|
+
{yText-=textHeight;}for(var i=0;i<obj.Data.length;++i){var item=obj.Data[i];var text=item.Text;var backupTextColor=null;if(item.Color){backupTextColor=this.Canvas.fillStyle;this.Canvas.fillStyle=item.Color;}this.Canvas.fillText(text,xText,yText);yText+=lineHeight+lineSpacing;if(backupTextColor)this.Canvas.fillStyle=backupTextColor;}this.Canvas.textBaseline=textBaseline;//还原对齐方式
|
|
2323
|
+
};//上下区域是否重叠
|
|
2317
2324
|
this.IsTextTopBottomOverlap=function(rt,rt2){if(rt2.Top>=rt.Top&&rt2.Top<=rt.Bottom)return true;if(rt2.Bottom>=rt.Top&&rt2.Bottom<=rt.Bottom)return true;return false;};this.GetTextTopBottom=function(textBaseline,yText){var rtRight=null;var textHeight=this.Canvas.measureText('擎').width;if(textBaseline==0){rtRight={Top:yText,Bottom:yText+textHeight};}else if(textBaseline==1){rtRight={Top:yText-textHeight/2};rtRight.Bottom=rtRight.Top+textHeight;}else if(textBaseline==2){rtRight={Bottom:yText};rtRight.Top=rtRight.Bottom-textHeight;}return rtRight;};this.DrawHorizontalMuText=function(aryText){var maxWidth=[null,null];for(var i=0;i<aryText.length;++i){var item=aryText[i];var width=item.Text[0].Width;if(!IFrameSplitOperator.IsNumber(maxWidth[0]))maxWidth[0]=width;else if(maxWidth[0]<width)maxWidth[0]=width;width=item.Text[1].Width;if(!IFrameSplitOperator.IsNumber(maxWidth[1]))maxWidth[1]=width;else if(maxWidth[1]<width)maxWidth[1]=width;}for(var i=0;i<aryText.length;++i){var item=aryText[i];var message=item.Item;this.Canvas.textBaseline=message.TextBaseline;if(message.ExtendData&&message.ExtendData.Font)this.Canvas.font=message.ExtendData.Font;else if(message.Font)this.Canvas.font=message.Font;if(message.ExtendData&&message.ExtendData.PriceColor)this.Canvas.fillStyle=message.ExtendData.PriceColor;else this.Canvas.fillStyle=message.TextColor;this.Canvas.textAlign="right";var x=item.X+maxWidth[1];this.Canvas.fillText(item.Text[1].Text,x,item.Y);if(message.ExtendData&&message.ExtendData.SplitColor)this.Canvas.fillStyle=message.ExtendData.SplitColor;else this.Canvas.fillStyle=message.TextColor;this.Canvas.textAlign="left";var splitWidth=this.Canvas.measureText('/').width;this.Canvas.fillText('/',x,item.Y);if(message.ExtendData&&message.ExtendData.PercentageColor)this.Canvas.fillStyle=message.ExtendData.PercentageColor;else this.Canvas.fillStyle=message.TextColor;this.Canvas.textAlign="right";var x=item.X+maxWidth[1]+maxWidth[0]+splitWidth;this.Canvas.fillText(item.Text[0].Text,x,item.Y);var textWidth=maxWidth[1]+maxWidth[0]+splitWidth*4;if(this.RightTextMaxWidth<textWidth)this.RightTextMaxWidth=textWidth;}};//画Y轴Message[2,3]两个内部刻度
|
|
2318
2325
|
this.DrawInsideClientHorizontal=function(){var border=this.GetBorder();if(border.DayBorder&&IFrameSplitOperator.IsNonEmptyArray(border.DayBorder)){var item=border.DayBorder[0];var left=item.LeftEx;var item=border.DayBorder[border.DayBorder.length-1];var right=item.RightEx;var bottom=border.Bottom;var top=border.TopTitle;}else{var left=border.LeftEx;var right=border.RightEx;var bottom=border.Bottom;var top=border.TopTitle;}var pixelTatio=GetDevicePixelRatio();var yPrev=null;//上一个坐标y的值
|
|
2319
2326
|
var yInsideText=null;for(var i=this.HorizontalInfo.length-1;i>=0;--i)//从上往下画分割线
|
|
@@ -2349,13 +2356,13 @@ var yText=y;for(var i=0;i<textInfo.Text.length;++i){var itemText=textInfo.Text[i
|
|
|
2349
2356
|
if(itemText.TextColor)this.Canvas.fillStyle=itemText.TextColor;else this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(itemText.Text,textLeft+1*pixelTatio,yText);if(i==0)this.DrawLine(left,textLeft,yText,item.LineColor,item.LineType,item);yText+=textHeight+1*pixelTatio;}}}if(item.Type==3||item.Type==4){if(item.Title){var width=this.Canvas.measureText(item.Title).width+2*pixelTatio;if(this.IsHScreen){var bgTop=bottom-itemText.Width-width;var textLeft=y-textHeight/2-1*pixelTatio;this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(textLeft,bgTop,textHeight,width);this.DrawHScreenText({X:y,Y:bgTop},{Text:item.Title,Color:item.TextColor,XOffset:1*pixelTatio,YOffset:2*pixelTatio});}else{var bgTop=y-textHeight/2-1*pixelTatio;var textLeft=right-textWidth-width-1*pixelTatio;this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(textLeft,bgTop,width,textHeight);this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(item.Title,textLeft+1*pixelTatio,y);}}}}else{if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";var textInfo=this.GetCustomItemTextInfo(item,false,pixelTatio);var textWidth=textInfo.MaxWidth;var fontHeight=this.GetFontHeight();textHeight=fontHeight>defaultTextHeight?fontHeight:defaultTextHeight;var preTextRect=null;if(mapTextRect&&mapTextRect.has(3))preTextRect=mapTextRect.get(3);var yText=y;var rtText={};for(var i=0;i<textInfo.Text.length;++i){var itemText=textInfo.Text[i];if(this.IsHScreen){var bgTop=bottom;//bgTop+=(textWidth-itemText.Width);
|
|
2350
2357
|
var textLeft=yText-textHeight/2-1*pixelTatio;this.Canvas.fillStyle=item.LineColor;this.Canvas.fillRect(textLeft,bgTop,textHeight,itemText.Width);this.DrawHScreenText({X:yText,Y:bgTop},{Text:itemText.Text,Color:item.TextColor,XOffset:1*pixelTatio,YOffset:2*pixelTatio});if(i==0)this.DrawLine(top,bgTop,yText,item.LineColor,item.LineType,item);yText-=textHeight+1*pixelTatio;}else{if(itemText.Type===1){if(this.GetEventCallback){var bgTop=yText-textHeight/2-1*pixelTatio;var sendData={Top:bgTop,Left:right,Right:this.ChartBorder.GetChartWidth(),Height:null,IsShow:true,BGColor:item.LineColor,TextColor:item.TextColor,PixelTatio:pixelTatio,Position:"Right",IsInside:false};if(this.SendDrawCountDownEvent(sendData)){if(IFrameSplitOperator.IsPlusNumber(sendData.Height))yText+=textHeight+1*pixelTatio;}}}else{var bgTop=yText-textHeight/2-1*pixelTatio;if(i==0){var textLeft=right;rtText.Left=textLeft;if(preTextRect&&bgTop<preTextRect.Rect.Bottom){yText=preTextRect.Rect.Bottom;bgTop=yText-textHeight/2-1*pixelTatio;}}else{var textLeft=right+textWidth-itemText.Width;}if(emptyBGColor){this.Canvas.fillStyle=emptyBGColor;this.Canvas.fillRect(textLeft,bgTop,itemText.Width+1,textHeight);this.Canvas.strokeStyle=item.LineColor;this.Canvas.strokeRect(ToFixedPoint(textLeft),ToFixedPoint(bgTop),ToFixedRect(itemText.Width+1),ToFixedRect(textHeight));this.Canvas.fillStyle=item.LineColor;this.Canvas.fillText(itemText.Text,textLeft+2*pixelTatio,yText);}else{this.Canvas.fillStyle=item.LineColor;this.Canvas.fillRect(textLeft,bgTop,itemText.Width,textHeight);if(itemText.TextColor)this.Canvas.fillStyle=itemText.TextColor;else this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(itemText.Text,textLeft+1*pixelTatio,yText);}if(i==0)this.DrawLine(left,right,y,item.LineColor,item.LineType,item);yText+=textHeight+1*pixelTatio;rtText.Bottom=yText;}}}if(mapTextRect&&IFrameSplitOperator.IsNumber(rtText.Left)&&IFrameSplitOperator.IsNumber(rtText.Bottom)){mapTextRect.set(3,{Rect:rtText,Item:item});}if(item.Type==3||item.Type==4){if(item.Title){var bgColor=item.LineColor;var rgb=this.RGBToStruct(item.LineColor);if(rgb)bgColor='rgba('+rgb.R+', '+rgb.G+', '+rgb.B+', '+g_JSChartResource.FrameLatestPrice.BGAlpha+')';//内部刻度 背景增加透明度
|
|
2351
2358
|
var width=this.Canvas.measureText(item.Title).width+2*pixelTatio;if(this.IsHScreen){var bgTop=bottom-width;var textLeft=y-textHeight/2-1*pixelTatio;this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(textLeft,bgTop,textHeight,width);this.DrawHScreenText({X:y,Y:bgTop},{Text:item.Title,Color:item.TextColor,XOffset:1*pixelTatio,YOffset:2*pixelTatio});}else{var bgTop=y-textHeight/2-1*pixelTatio;var textLeft=right-width-1*pixelTatio;this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(textLeft,bgTop,width,textHeight);this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(item.Title,textLeft+1*pixelTatio,y);}}}}}};this.SendDrawCountDownEvent=function(sendData){if(!this.GetEventCallback)return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAW_COUNTDOWN);if(!event||!event.Callback)return false;event.Callback(event,sendData,this);return true;};this.DrawDotLine=function(left,right,y,color,option){var pixelTatio=GetDevicePixelRatio();this.Canvas.save();this.Canvas.strokeStyle=color;if(option&&IFrameSplitOperator.IsPlusNumber(option.LineWidth))this.Canvas.lineWidth=option.LineWidth*pixelTatio;if(option.LineDash)this.Canvas.setLineDash(option.LineDash);else this.Canvas.setLineDash([5*pixelTatio,5*pixelTatio]);//虚线
|
|
2352
|
-
this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(ToFixedPoint(y),left);this.Canvas.lineTo(ToFixedPoint(y),right);}else{this.Canvas.moveTo(left,ToFixedPoint(y));this.Canvas.lineTo(right,ToFixedPoint(y));}this.Canvas.stroke();this.Canvas.restore();};this.DrawLine=function(left,right,y,color,lineType,option){if(lineType==-1)return;if(lineType==0){var pixelRatio=GetDevicePixelRatio();this.Canvas.strokeStyle=color;var bChangeLineWidth=false;if(option&&IFrameSplitOperator.IsPlusNumber(option.LineWidth)){this.Canvas.lineWidth=option.LineWidth*pixelRatio;bChangeLineWidth=true;}this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(ToFixedPoint(y),left);this.Canvas.lineTo(ToFixedPoint(y),right);}else{this.Canvas.moveTo(left,ToFixedPoint(y));this.Canvas.lineTo(right,ToFixedPoint(y));}this.Canvas.stroke();if(bChangeLineWidth){this.Canvas.lineWidth=pixelRatio;}}else{this.DrawDotLine(left,right,y,color,option);}};this.DrawHScreenText=function(center,data){this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.fillStyle=data.Color;this.Canvas.save();this.Canvas.translate(center.X,center.Y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(data.Text,data.XOffset,data.YOffset);this.Canvas.restore();};this.RGBToStruct=function(rgb){if(/^(rgb|RGB)/.test(rgb)){var aColor=rgb.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",");var result={};if(aColor.length!=3)return null;result.R=Number(aColor[0]);result.G=Number(aColor[1]);result.B=Number(aColor[2]);return result;}return null;};this.GetScaleTextWidth=function(){var border=this.ChartBorder.GetBorder();var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
2359
|
+
this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(ToFixedPoint(y),left);this.Canvas.lineTo(ToFixedPoint(y),right);}else{this.Canvas.moveTo(left,ToFixedPoint(y));this.Canvas.lineTo(right,ToFixedPoint(y));}this.Canvas.stroke();this.Canvas.restore();};this.DrawLine=function(left,right,y,color,lineType,option){if(lineType==-1)return;if(lineType==0){var pixelRatio=GetDevicePixelRatio();this.Canvas.strokeStyle=color;var bChangeLineWidth=false;if(option&&IFrameSplitOperator.IsPlusNumber(option.LineWidth)){this.Canvas.lineWidth=option.LineWidth*pixelRatio;bChangeLineWidth=true;}this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(ToFixedPoint(y),left);this.Canvas.lineTo(ToFixedPoint(y),right);}else{this.Canvas.moveTo(left,ToFixedPoint(y));this.Canvas.lineTo(right,ToFixedPoint(y));}this.Canvas.stroke();if(bChangeLineWidth){this.Canvas.lineWidth=pixelRatio;}}else{this.DrawDotLine(left,right,y,color,option);}};this.DrawHScreenText=function(center,data){this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.fillStyle=data.Color;this.Canvas.save();this.Canvas.translate(center.X,center.Y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(data.Text,data.XOffset,data.YOffset);this.Canvas.restore();};this.RGBToStruct=function(rgb){if(/^(rgb|RGB)/.test(rgb)){var aColor=rgb.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",");var result={};if(aColor.length!=3)return null;result.R=Number(aColor[0]);result.G=Number(aColor[1]);result.B=Number(aColor[2]);return result;}return null;};this.GetMulitTextMaxWidth=function(aryData){var width=null;for(var i=0;i<aryData.length;++i){var item=aryData[i];var text=item.Text;if(!text)continue;var value=this.Canvas.measureText(text).width;if(width==null)width=value;else if(width<value)width=value;}return width;};this.GetScaleTextWidth=function(){var border=this.ChartBorder.GetBorder();var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
2353
2360
|
if(this.IsHScreen){var borderTop=this.ChartBorder.Top;var borderBottom=this.ChartBorder.Bottom;var isDrawLeft=borderTop>10*pixelTatio&&this.IsShowYText[0]===true&&this.YTextPosition[0]!=2;var isDrawRight=borderBottom>10*pixelTatio&&this.IsShowYText[1]===true&&this.YTextPosition[1]!=2;}else{var borderRight=this.ChartBorder.Right;var borderLeft=this.ChartBorder.Left;var isDrawLeft=borderLeft>10&&this.IsShowYText[0]===true&&this.YTextPosition[0]!=2;var isDrawRight=borderRight>10&&this.IsShowYText[1]===true&&this.YTextPosition[1]!=2;}if(!isDrawRight&&!isDrawLeft)return null;var width={Left:null,Right:null};var rightExtendWidth=0;var isYPercentage=false;//是否是百分比坐标
|
|
2354
|
-
if(this.YSplitOperator&&this.YSplitOperator.CoordinateType==1)isYPercentage=true;var leftExtendLineWidth=0;var rightExtendLineWidth=0;if(IFrameSplitOperator.IsNonEmptyArray(this.YLineExtend)){if(this.YLineExtend[0]&&this.YLineExtend[0].Width>1)leftExtendLineWidth=this.YLineExtend[0].Width;if(this.YLineExtend[1]&&this.YLineExtend[1].Width>1)rightExtendLineWidth=this.YLineExtend[1].Width;}for(var i=0;i<this.HorizontalInfo.length;++i){var textWidth=null;var item=this.HorizontalInfo[i];if(!item)continue;if(item.Font!=null)this.Canvas.font=item.Font;if(item.Message[0]!=null&&isDrawLeft){textWidth=this.Canvas.measureText(item.Message[0]).width;if(width.Left==null||width.Left<textWidth)width.Left=textWidth;//JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[0]} ${textWidth}`);
|
|
2361
|
+
if(this.YSplitOperator&&this.YSplitOperator.CoordinateType==1)isYPercentage=true;var leftExtendLineWidth=0;var rightExtendLineWidth=0;if(IFrameSplitOperator.IsNonEmptyArray(this.YLineExtend)){if(this.YLineExtend[0]&&this.YLineExtend[0].Width>1)leftExtendLineWidth=this.YLineExtend[0].Width;if(this.YLineExtend[1]&&this.YLineExtend[1].Width>1)rightExtendLineWidth=this.YLineExtend[1].Width;}for(var i=0;i<this.HorizontalInfo.length;++i){var textWidth=null;var item=this.HorizontalInfo[i];if(!item)continue;if(item.Font!=null)this.Canvas.font=item.Font;if(item.Message[0]!=null&&isDrawLeft){if(Array.isArray(item.Message[0])){textWidth=this.GetMulitTextMaxWidth(item.Message[0]);}else{textWidth=this.Canvas.measureText(item.Message[0]).width;}if(width.Left==null||width.Left<textWidth)width.Left=textWidth;//JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[0]} ${textWidth}`);
|
|
2355
2362
|
}if(item.Message[1]!=null&&isDrawRight){if(item.Font!=null)this.Canvas.font=item.Font;if(Array.isArray(item.Message[1])){if(this.MultiTextFormat==1)//显示1行 格式:价格/百分比
|
|
2356
2363
|
{if(item.ExtendData){if(item.ExtendData.Font)this.Canvas.font=item.ExtendData.Font;var width1=this.Canvas.measureText(item.Message[1][0]).width;var width2=this.Canvas.measureText(item.Message[1][1]).width;var width3=this.Canvas.measureText('/').width;textWidth=width1+width3;if(rightExtendWidth<width2)rightExtendWidth=width2;//JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[1][1]}/${item.Message[1][0]} ${textWidth}, ${rightExtendWidth}`);
|
|
2357
2364
|
}}else if(this.MultiTextFormat==2)//显示2行
|
|
2358
|
-
{textWidth=this.Canvas.measureText(item.Message[1][0]).width;var textWidth2=this.Canvas.measureText(item.Message[1][1]).width;if(textWidth<textWidth2)textWidth=textWidth2;}else//显示第1行
|
|
2365
|
+
{textWidth=this.Canvas.measureText(item.Message[1][0]).width;var textWidth2=this.Canvas.measureText(item.Message[1][1]).width;if(textWidth<textWidth2)textWidth=textWidth2;}else if(this.MultiTextFormat==3){textWidth=this.GetMulitTextMaxWidth(item.Message[0]);}else//显示第1行
|
|
2359
2366
|
{textWidth=this.Canvas.measureText(item.Message[1][0]).width;if(isYPercentage){var perTextWidth=this.Canvas.measureText("-00.00%").width;if(perTextWidth>textWidth)textWidth=perTextWidth;}}}else{textWidth=this.Canvas.measureText(item.Message[1]).width;}if(width.Right==null||width.Right<textWidth)width.Right=textWidth;}}if(IFrameSplitOperator.IsNumber(width.Right))width.Right+=rightExtendWidth;if(IFrameSplitOperator.IsNumber(width.Left))width.Left+=this.YTextPadding[0]+leftExtendLineWidth;if(IFrameSplitOperator.IsNumber(width.Right))width.Right+=this.YTextPadding[1]+rightExtendLineWidth;return{TextWidth:width};};this.ClearToolbar=function(){if(!this.ToolbarID)return;var divToolbar=document.getElementById(this.ToolbarID);if(!divToolbar)return;this.ChartBorder.UIElement.parentNode.removeChild(divToolbar);this.ToolbarRect=null;};this.HideToolbar=function(){if(!this.ToolbarID)return;this.ToolbarRect=null;var divToolbar=document.getElementById(this.ToolbarID);if(!divToolbar)return;if(divToolbar.style.display!='none')divToolbar.style.display='none';};}function MinuteFrame(){this.newMethod=AverageWidthFrame;//派生
|
|
2360
2367
|
this.newMethod();delete this.newMethod;this.ClassName="MinuteFrame";this.DataWidth=1*GetDevicePixelRatio();this.DistanceWidth=1*GetDevicePixelRatio();this.MinuteCount=243;//每天的分钟个数
|
|
2361
2368
|
this.BeforeBGColor=g_JSChartResource.Minute.Before.BGColor;//集合竞价背景
|
|
@@ -5317,7 +5324,7 @@ var yValue=item.Frame.GetYData(y);var text=IFrameSplitOperator.FormatValueString
|
|
|
5317
5324
|
*/this.Canvas.fillStyle=this.TextBGColor;this.Canvas.fillRect(overlayLeft+1,y-this.TextHeight/2,textWidth,this.TextHeight);this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(text,overlayLeft+4,y,textWidth);}}this.Status=1;};this.DrawComplexText=function(left,y,complexText){this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";var xText=left+2;for(var i=0;i<complexText.Text.length;++i){var item=complexText.Text[i];var itemWidth=this.Canvas.measureText(item.Text).width+4;//前后各空2个像素
|
|
5318
5325
|
if(item.Color)this.Canvas.fillStyle=item.Color;else is.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(item.Text,xText,y,itemWidth);if(i>0&&IFrameSplitOperator.IsNumber(complexText.Space))xText+=complexText.Space;xText+=itemWidth;}};this.DrawRightButton=function(drawTop,drawRight,drawWidth,drawHeight,data){this.Canvas.fillStyle=this.RightButton.BGColor;var rtButtom={Left:drawRight-drawWidth,Top:drawTop,Width:drawWidth,Height:drawHeight};this.RightButton.Rect=rtButtom;this.RightButton.Data=data;this.Canvas.fillRect(ToFixedPoint(rtButtom.Left+1),ToFixedPoint(rtButtom.Top),ToFixedRect(rtButtom.Width),ToFixedRect(rtButtom.Height));var pixelRatio=GetDevicePixelRatio();var spaceWidth=3;var yCenter=rtButtom.Top+spaceWidth+(rtButtom.Height-spaceWidth*2)/2;var xCenter=rtButtom.Left+spaceWidth+(rtButtom.Width-spaceWidth*2)/2;if(this.RightButton.Icon){var icon=this.RightButton.Icon;this.Canvas.font=icon.Size*pixelRatio+'px '+icon.Family;this.Canvas.textAlign="center";this.Canvas.textBaseline="middle";this.Canvas.fillStyle=icon.Color;this.Canvas.fillText('\uE6A3',xCenter,yCenter);}else{//画加号
|
|
5319
5326
|
this.Canvas.strokeStyle=this.RightButton.PenColor;var x=rtButtom.Left+spaceWidth;var y=rtButtom.Top+spaceWidth;this.Canvas.save();this.Canvas.linewidth=1*pixelRatio;this.Canvas.beginPath();this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(yCenter));this.Canvas.lineTo(ToFixedPoint(x+rtButtom.Width-spaceWidth*2),ToFixedPoint(yCenter));this.Canvas.moveTo(ToFixedPoint(xCenter),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(xCenter),ToFixedPoint(y+rtButtom.Height-spaceWidth*2));this.Canvas.stroke();this.Canvas.restore();}};this.PtInButton=function(x,y){if(!this.RightButton.Enable)return null;if(!this.RightButton.Rect)return null;var rect=this.RightButton.Rect;this.Canvas.beginPath();this.Canvas.rect(rect.Left,rect.Top,rect.Width,rect.Height);if(this.Canvas.isPointInPath(x,y)){return{Data:this.RightButton.Data,Rect:rect};}};this.DrawTextBGRect=function(x,y,height,width){this.Canvas.fillStyle=this.TextBGColor;this.Canvas.fillRect(ToFixedPoint(x),ToFixedPoint(y),ToFixedRect(height),ToFixedRect(width));if(this.BorderColor){this.Canvas.strokeStyle=this.BorderColor;this.Canvas.strokeRect(ToFixedPoint(x),ToFixedPoint(y),ToFixedRect(height),ToFixedRect(width));}};this.HScreenDraw=function(){var x=this.LastPoint.X;var y=this.LastPoint.Y;if(this.IsOnlyDrawKLine)//手机端 十字只能画在K线上
|
|
5320
|
-
y=this.Frame.GetXFromIndex(this.CursorIndex);var border=this.Frame.ChartBorder.GetHScreenBorder();var left=border.Left;var right=border.Right;var top=border.Top;var bottom=border.Bottom;var bottomWidth=this.Frame.ChartBorder.Bottom;if(this.CallAcutionXOperator){this.CallAcutionXOperator.Value=y;this.CallAcutionXOperator.Point={X:x,Y:y};this.CallAcutionXOperator.ClientPos=this.ClientPos;if(this.CallAcutionXOperator.Operator()){y=this.CallAcutionXOperator.X;}}this.PointY=[[left,y],[right,y]];this.PointX=[[x,top],[x,bottom]];//十字线
|
|
5327
|
+
{y=this.Frame.GetXFromIndex(this.CursorIndex);if(this.IsShowClose){var yPoint=this.GetCloseYPoint(this.CursorIndex);if(yPoint!=null)x=yPoint;}}else if(this.IsOnlyDrawMinute){var yPoint=this.GetMinuteCloseYPoint(this.CursorIndex);if(yPoint!=null)x=yPoint;}var border=this.Frame.ChartBorder.GetHScreenBorder();var left=border.Left;var right=border.Right;var top=border.Top;var bottom=border.Bottom;var bottomWidth=this.Frame.ChartBorder.Bottom;if(this.CallAcutionXOperator){this.CallAcutionXOperator.Value=y;this.CallAcutionXOperator.Point={X:x,Y:y};this.CallAcutionXOperator.ClientPos=this.ClientPos;if(this.CallAcutionXOperator.Operator()){y=this.CallAcutionXOperator.X;}}this.PointY=[[left,y],[right,y]];this.PointX=[[x,top],[x,bottom]];//十字线
|
|
5321
5328
|
if(this.IsShowCorss){var pixel=GetDevicePixelRatio();this.Canvas.save();this.Canvas.strokeStyle=this.HPenColor;if(this.HPenType==0)this.Canvas.setLineDash([3*pixel,2*pixel]);//虚线
|
|
5322
5329
|
//画竖线
|
|
5323
5330
|
this.Canvas.beginPath();this.Canvas.moveTo(ToFixedPoint(x),top);this.Canvas.lineTo(ToFixedPoint(x),bottom);this.Canvas.stroke();this.Canvas.restore();//画横线
|
|
@@ -12788,7 +12795,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
12788
12795
|
this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
12789
12796
|
* 版本信息输出
|
|
12790
12797
|
*
|
|
12791
|
-
*/var HQCHART_VERSION="1.1.
|
|
12798
|
+
*/var HQCHART_VERSION="1.1.12899";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();//把给外界调用的方法暴露出来
|
|
12792
12799
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12793
12800
|
// BaseIndex:BaseIndex,
|
|
12794
12801
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -432,7 +432,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
432
432
|
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
433
433
|
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
434
434
|
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
435
|
-
if (
|
|
435
|
+
if (IFrameSplitOperator.IsBool(item.IsShowClose)) chart.ChartCorssCursor.IsShowClose = item.IsShowClose; //Y轴显示收盘价
|
|
436
|
+
if (IFrameSplitOperator.IsBool(item.IsOnlyDrawKLine)) chart.ChartCorssCursor.IsOnlyDrawKLine = item.IsOnlyDrawKLine; //Y轴显示收盘价
|
|
436
437
|
if (option.CorssCursorInfo.PressTime) chart.PressTime=option.CorssCursorInfo.PressTime; //长按显示十字光标的时间
|
|
437
438
|
if (IFrameSplitOperator.IsNumber(option.CorssCursorInfo.HPenType)) chart.ChartCorssCursor.HPenType=option.CorssCursorInfo.HPenType;
|
|
438
439
|
if (option.CorssCursorInfo.VPenType>0) chart.ChartCorssCursor.VPenType=option.CorssCursorInfo.VPenType;
|
|
@@ -10092,35 +10093,46 @@ function AverageWidthFrame()
|
|
|
10092
10093
|
|
|
10093
10094
|
if (item.Message[0]!=null && isDrawLeft)
|
|
10094
10095
|
{
|
|
10095
|
-
if (item.
|
|
10096
|
-
|
|
10097
|
-
var xText=left;
|
|
10098
|
-
if (leftExtendLine && leftExtendLine.Width>1)
|
|
10096
|
+
if (Array.isArray(item.Message[0]))
|
|
10099
10097
|
{
|
|
10100
|
-
|
|
10101
|
-
|
|
10102
|
-
|
|
10103
|
-
|
|
10104
|
-
|
|
10105
|
-
this.Canvas.lineTo(xText-lineLength,yFixed);
|
|
10106
|
-
this.Canvas.stroke();
|
|
10107
|
-
|
|
10108
|
-
xText-=lineLength;
|
|
10098
|
+
if (this.MultiTextFormat==3)
|
|
10099
|
+
{
|
|
10100
|
+
var obj={ Data:item.Message[0], X:left, Y:yText, TextBaseLine:textBaseline, IsLeft:true, Item:item, TextPadding:this.YTextPadding[0] };
|
|
10101
|
+
this.DrawMultiLineText(obj);
|
|
10102
|
+
}
|
|
10109
10103
|
}
|
|
10110
|
-
|
|
10111
|
-
rtLeft=this.GetTextTopBottom(textBaseline,yText);
|
|
10112
|
-
if (!rtPreLeft || (rtLeft && !this.IsTextTopBottomOverlap(rtLeft, rtPreLeft)))
|
|
10104
|
+
else
|
|
10113
10105
|
{
|
|
10114
|
-
if (
|
|
10106
|
+
if (item.Font!=null) this.Canvas.font=item.Font;
|
|
10107
|
+
|
|
10108
|
+
var xText=left;
|
|
10109
|
+
if (leftExtendLine && leftExtendLine.Width>1)
|
|
10115
10110
|
{
|
|
10116
|
-
|
|
10117
|
-
this.Canvas.
|
|
10111
|
+
var lineLength=leftExtendLine.Width;
|
|
10112
|
+
if (leftExtendLine.Color) this.Canvas.strokeStyle=leftExtendLine.Color;
|
|
10113
|
+
else this.Canvas.strokeStyle=item.LineColor;
|
|
10114
|
+
this.Canvas.beginPath();
|
|
10115
|
+
this.Canvas.moveTo(xText,yFixed);
|
|
10116
|
+
this.Canvas.lineTo(xText-lineLength,yFixed);
|
|
10117
|
+
this.Canvas.stroke();
|
|
10118
|
+
|
|
10119
|
+
xText-=lineLength;
|
|
10118
10120
|
}
|
|
10119
|
-
|
|
10121
|
+
|
|
10122
|
+
rtLeft=this.GetTextTopBottom(textBaseline,yText);
|
|
10123
|
+
if (!rtPreLeft || (rtLeft && !this.IsTextTopBottomOverlap(rtLeft, rtPreLeft)))
|
|
10120
10124
|
{
|
|
10121
|
-
|
|
10122
|
-
|
|
10123
|
-
|
|
10125
|
+
if (leftExtendText && leftExtendText.Align===1)
|
|
10126
|
+
{
|
|
10127
|
+
this.Canvas.textAlign="left";
|
|
10128
|
+
this.Canvas.fillText(item.Message[0],this.YTextPadding[0],yText);
|
|
10129
|
+
}
|
|
10130
|
+
else
|
|
10131
|
+
{
|
|
10132
|
+
this.Canvas.textAlign="right";
|
|
10133
|
+
this.Canvas.fillText(item.Message[0],xText-this.YTextPadding[0],yText);
|
|
10134
|
+
rtPreLeft=rtLeft;
|
|
10135
|
+
}
|
|
10124
10136
|
}
|
|
10125
10137
|
}
|
|
10126
10138
|
}
|
|
@@ -10187,6 +10199,11 @@ function AverageWidthFrame()
|
|
|
10187
10199
|
var lineHeight=this.Canvas.measureText('M').width;
|
|
10188
10200
|
if (itemHeight>lineHeight*2) this.Canvas.fillText(item.Message[1][1],xText+this.YTextPadding[1],yText+lineHeight);
|
|
10189
10201
|
}
|
|
10202
|
+
else if (this.MultiTextFormat==3)
|
|
10203
|
+
{
|
|
10204
|
+
var obj={ Data:item.Message[1], X:xText, Y:yText, TextBaseLine:textBaseline, IsLeft:false, Item:item, TextPadding:this.YTextPadding[1] };
|
|
10205
|
+
this.DrawMultiLineText(obj);
|
|
10206
|
+
}
|
|
10190
10207
|
else //显示第1行
|
|
10191
10208
|
{
|
|
10192
10209
|
this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);
|
|
@@ -10247,6 +10264,65 @@ function AverageWidthFrame()
|
|
|
10247
10264
|
}
|
|
10248
10265
|
}
|
|
10249
10266
|
|
|
10267
|
+
//多行文字刻度输出 obj={ Data:, X:, Y:, TextBaseLine:, IsLeft:, Item:刻度数据 }
|
|
10268
|
+
this.DrawMultiLineText=function(obj)
|
|
10269
|
+
{
|
|
10270
|
+
var lineSpacing=2;
|
|
10271
|
+
var lineHeight=this.Canvas.measureText('擎').width;
|
|
10272
|
+
var lineCount=obj.Data.length;
|
|
10273
|
+
var textHeight=lineHeight*lineCount+(lineSpacing*(lineCount-1));
|
|
10274
|
+
var yText=obj.Y;
|
|
10275
|
+
|
|
10276
|
+
if (obj.Item.Font!=null) this.Canvas.font=obj.Item.Font;
|
|
10277
|
+
|
|
10278
|
+
if (obj.IsLeft)
|
|
10279
|
+
{
|
|
10280
|
+
this.Canvas.textAlign="right";
|
|
10281
|
+
var xText=obj.X-obj.TextPadding;
|
|
10282
|
+
}
|
|
10283
|
+
else
|
|
10284
|
+
{
|
|
10285
|
+
this.Canvas.textAlign="left";
|
|
10286
|
+
var xText=obj.X+obj.TextPadding;
|
|
10287
|
+
}
|
|
10288
|
+
|
|
10289
|
+
var textBaseline=this.Canvas.textBaseline; //备份下原来的对齐方式
|
|
10290
|
+
this.Canvas.textBaseline='top';
|
|
10291
|
+
if (obj.TextBaseLine==1) //middle
|
|
10292
|
+
{
|
|
10293
|
+
yText-=textHeight/2;
|
|
10294
|
+
}
|
|
10295
|
+
else if (obj.TextBaseLine==0) //top
|
|
10296
|
+
{
|
|
10297
|
+
|
|
10298
|
+
}
|
|
10299
|
+
else if (obj.TextBaseLine==2) //bottom
|
|
10300
|
+
{
|
|
10301
|
+
yText-=textHeight;
|
|
10302
|
+
}
|
|
10303
|
+
|
|
10304
|
+
|
|
10305
|
+
for(var i=0;i<obj.Data.length;++i)
|
|
10306
|
+
{
|
|
10307
|
+
var item=obj.Data[i];
|
|
10308
|
+
var text=item.Text;
|
|
10309
|
+
|
|
10310
|
+
var backupTextColor=null;
|
|
10311
|
+
if (item.Color)
|
|
10312
|
+
{
|
|
10313
|
+
backupTextColor=this.Canvas.fillStyle;
|
|
10314
|
+
this.Canvas.fillStyle=item.Color;
|
|
10315
|
+
}
|
|
10316
|
+
|
|
10317
|
+
this.Canvas.fillText(text,xText,yText);
|
|
10318
|
+
yText+=lineHeight+lineSpacing;
|
|
10319
|
+
|
|
10320
|
+
if (backupTextColor) this.Canvas.fillStyle=backupTextColor;
|
|
10321
|
+
}
|
|
10322
|
+
|
|
10323
|
+
this.Canvas.textBaseline=textBaseline; //还原对齐方式
|
|
10324
|
+
}
|
|
10325
|
+
|
|
10250
10326
|
//上下区域是否重叠
|
|
10251
10327
|
this.IsTextTopBottomOverlap=function(rt, rt2)
|
|
10252
10328
|
{
|
|
@@ -11456,6 +11532,24 @@ function AverageWidthFrame()
|
|
|
11456
11532
|
return null;
|
|
11457
11533
|
}
|
|
11458
11534
|
|
|
11535
|
+
this.GetMulitTextMaxWidth=function(aryData)
|
|
11536
|
+
{
|
|
11537
|
+
var width=null;
|
|
11538
|
+
|
|
11539
|
+
for(var i=0;i<aryData.length;++i)
|
|
11540
|
+
{
|
|
11541
|
+
var item=aryData[i];
|
|
11542
|
+
var text=item.Text;
|
|
11543
|
+
if (!text) continue;
|
|
11544
|
+
|
|
11545
|
+
var value=this.Canvas.measureText(text).width;
|
|
11546
|
+
if (width==null) width=value;
|
|
11547
|
+
else if(width<value) width=value;
|
|
11548
|
+
}
|
|
11549
|
+
|
|
11550
|
+
return width;
|
|
11551
|
+
}
|
|
11552
|
+
|
|
11459
11553
|
this.GetScaleTextWidth=function()
|
|
11460
11554
|
{
|
|
11461
11555
|
var border=this.ChartBorder.GetBorder();
|
|
@@ -11501,10 +11595,18 @@ function AverageWidthFrame()
|
|
|
11501
11595
|
|
|
11502
11596
|
if (item.Message[0]!=null && isDrawLeft)
|
|
11503
11597
|
{
|
|
11504
|
-
|
|
11598
|
+
if (Array.isArray(item.Message[0]))
|
|
11599
|
+
{
|
|
11600
|
+
textWidth=this.GetMulitTextMaxWidth(item.Message[0]);
|
|
11601
|
+
}
|
|
11602
|
+
else
|
|
11603
|
+
{
|
|
11604
|
+
textWidth=this.Canvas.measureText(item.Message[0]).width;
|
|
11605
|
+
}
|
|
11606
|
+
|
|
11505
11607
|
if (width.Left==null || width.Left<textWidth)
|
|
11506
11608
|
width.Left=textWidth;
|
|
11507
|
-
|
|
11609
|
+
|
|
11508
11610
|
//JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[0]} ${textWidth}`);
|
|
11509
11611
|
}
|
|
11510
11612
|
|
|
@@ -11535,6 +11637,10 @@ function AverageWidthFrame()
|
|
|
11535
11637
|
var textWidth2=this.Canvas.measureText(item.Message[1][1]).width;
|
|
11536
11638
|
if (textWidth<textWidth2) textWidth=textWidth2;
|
|
11537
11639
|
}
|
|
11640
|
+
else if (this.MultiTextFormat==3)
|
|
11641
|
+
{
|
|
11642
|
+
textWidth=this.GetMulitTextMaxWidth(item.Message[0]);
|
|
11643
|
+
}
|
|
11538
11644
|
else //显示第1行
|
|
11539
11645
|
{
|
|
11540
11646
|
textWidth=this.Canvas.measureText(item.Message[1][0]).width;
|
|
@@ -46797,7 +46903,19 @@ function ChartCorssCursor()
|
|
|
46797
46903
|
var y=this.LastPoint.Y;
|
|
46798
46904
|
|
|
46799
46905
|
if (this.IsOnlyDrawKLine) //手机端 十字只能画在K线上
|
|
46906
|
+
{
|
|
46800
46907
|
y=this.Frame.GetXFromIndex(this.CursorIndex);
|
|
46908
|
+
if (this.IsShowClose)
|
|
46909
|
+
{
|
|
46910
|
+
var yPoint = this.GetCloseYPoint(this.CursorIndex);
|
|
46911
|
+
if (yPoint != null) x=yPoint;
|
|
46912
|
+
}
|
|
46913
|
+
}
|
|
46914
|
+
else if (this.IsOnlyDrawMinute)
|
|
46915
|
+
{
|
|
46916
|
+
var yPoint = this.GetMinuteCloseYPoint(this.CursorIndex);
|
|
46917
|
+
if (yPoint != null) x=yPoint;
|
|
46918
|
+
}
|
|
46801
46919
|
|
|
46802
46920
|
var border=this.Frame.ChartBorder.GetHScreenBorder();
|
|
46803
46921
|
var left=border.Left;
|
|
@@ -4599,7 +4599,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4599
4599
|
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
4600
4600
|
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
4601
4601
|
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
4602
|
-
if (
|
|
4602
|
+
if (IFrameSplitOperator.IsBool(item.IsShowClose)) chart.ChartCorssCursor.IsShowClose = item.IsShowClose; //Y轴显示收盘价
|
|
4603
|
+
if (IFrameSplitOperator.IsBool(item.IsOnlyDrawKLine)) chart.ChartCorssCursor.IsOnlyDrawKLine = item.IsOnlyDrawKLine; //Y轴显示收盘价
|
|
4603
4604
|
if (option.CorssCursorInfo.PressTime) chart.PressTime=option.CorssCursorInfo.PressTime; //长按显示十字光标的时间
|
|
4604
4605
|
if (IFrameSplitOperator.IsNumber(option.CorssCursorInfo.HPenType)) chart.ChartCorssCursor.HPenType=option.CorssCursorInfo.HPenType;
|
|
4605
4606
|
if (option.CorssCursorInfo.VPenType>0) chart.ChartCorssCursor.VPenType=option.CorssCursorInfo.VPenType;
|
|
@@ -14259,35 +14260,46 @@ function AverageWidthFrame()
|
|
|
14259
14260
|
|
|
14260
14261
|
if (item.Message[0]!=null && isDrawLeft)
|
|
14261
14262
|
{
|
|
14262
|
-
if (item.
|
|
14263
|
-
|
|
14264
|
-
var xText=left;
|
|
14265
|
-
if (leftExtendLine && leftExtendLine.Width>1)
|
|
14263
|
+
if (Array.isArray(item.Message[0]))
|
|
14266
14264
|
{
|
|
14267
|
-
|
|
14268
|
-
|
|
14269
|
-
|
|
14270
|
-
|
|
14271
|
-
|
|
14272
|
-
this.Canvas.lineTo(xText-lineLength,yFixed);
|
|
14273
|
-
this.Canvas.stroke();
|
|
14274
|
-
|
|
14275
|
-
xText-=lineLength;
|
|
14265
|
+
if (this.MultiTextFormat==3)
|
|
14266
|
+
{
|
|
14267
|
+
var obj={ Data:item.Message[0], X:left, Y:yText, TextBaseLine:textBaseline, IsLeft:true, Item:item, TextPadding:this.YTextPadding[0] };
|
|
14268
|
+
this.DrawMultiLineText(obj);
|
|
14269
|
+
}
|
|
14276
14270
|
}
|
|
14277
|
-
|
|
14278
|
-
rtLeft=this.GetTextTopBottom(textBaseline,yText);
|
|
14279
|
-
if (!rtPreLeft || (rtLeft && !this.IsTextTopBottomOverlap(rtLeft, rtPreLeft)))
|
|
14271
|
+
else
|
|
14280
14272
|
{
|
|
14281
|
-
if (
|
|
14273
|
+
if (item.Font!=null) this.Canvas.font=item.Font;
|
|
14274
|
+
|
|
14275
|
+
var xText=left;
|
|
14276
|
+
if (leftExtendLine && leftExtendLine.Width>1)
|
|
14282
14277
|
{
|
|
14283
|
-
|
|
14284
|
-
this.Canvas.
|
|
14278
|
+
var lineLength=leftExtendLine.Width;
|
|
14279
|
+
if (leftExtendLine.Color) this.Canvas.strokeStyle=leftExtendLine.Color;
|
|
14280
|
+
else this.Canvas.strokeStyle=item.LineColor;
|
|
14281
|
+
this.Canvas.beginPath();
|
|
14282
|
+
this.Canvas.moveTo(xText,yFixed);
|
|
14283
|
+
this.Canvas.lineTo(xText-lineLength,yFixed);
|
|
14284
|
+
this.Canvas.stroke();
|
|
14285
|
+
|
|
14286
|
+
xText-=lineLength;
|
|
14285
14287
|
}
|
|
14286
|
-
|
|
14288
|
+
|
|
14289
|
+
rtLeft=this.GetTextTopBottom(textBaseline,yText);
|
|
14290
|
+
if (!rtPreLeft || (rtLeft && !this.IsTextTopBottomOverlap(rtLeft, rtPreLeft)))
|
|
14287
14291
|
{
|
|
14288
|
-
|
|
14289
|
-
|
|
14290
|
-
|
|
14292
|
+
if (leftExtendText && leftExtendText.Align===1)
|
|
14293
|
+
{
|
|
14294
|
+
this.Canvas.textAlign="left";
|
|
14295
|
+
this.Canvas.fillText(item.Message[0],this.YTextPadding[0],yText);
|
|
14296
|
+
}
|
|
14297
|
+
else
|
|
14298
|
+
{
|
|
14299
|
+
this.Canvas.textAlign="right";
|
|
14300
|
+
this.Canvas.fillText(item.Message[0],xText-this.YTextPadding[0],yText);
|
|
14301
|
+
rtPreLeft=rtLeft;
|
|
14302
|
+
}
|
|
14291
14303
|
}
|
|
14292
14304
|
}
|
|
14293
14305
|
}
|
|
@@ -14354,6 +14366,11 @@ function AverageWidthFrame()
|
|
|
14354
14366
|
var lineHeight=this.Canvas.measureText('M').width;
|
|
14355
14367
|
if (itemHeight>lineHeight*2) this.Canvas.fillText(item.Message[1][1],xText+this.YTextPadding[1],yText+lineHeight);
|
|
14356
14368
|
}
|
|
14369
|
+
else if (this.MultiTextFormat==3)
|
|
14370
|
+
{
|
|
14371
|
+
var obj={ Data:item.Message[1], X:xText, Y:yText, TextBaseLine:textBaseline, IsLeft:false, Item:item, TextPadding:this.YTextPadding[1] };
|
|
14372
|
+
this.DrawMultiLineText(obj);
|
|
14373
|
+
}
|
|
14357
14374
|
else //显示第1行
|
|
14358
14375
|
{
|
|
14359
14376
|
this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);
|
|
@@ -14414,6 +14431,65 @@ function AverageWidthFrame()
|
|
|
14414
14431
|
}
|
|
14415
14432
|
}
|
|
14416
14433
|
|
|
14434
|
+
//多行文字刻度输出 obj={ Data:, X:, Y:, TextBaseLine:, IsLeft:, Item:刻度数据 }
|
|
14435
|
+
this.DrawMultiLineText=function(obj)
|
|
14436
|
+
{
|
|
14437
|
+
var lineSpacing=2;
|
|
14438
|
+
var lineHeight=this.Canvas.measureText('擎').width;
|
|
14439
|
+
var lineCount=obj.Data.length;
|
|
14440
|
+
var textHeight=lineHeight*lineCount+(lineSpacing*(lineCount-1));
|
|
14441
|
+
var yText=obj.Y;
|
|
14442
|
+
|
|
14443
|
+
if (obj.Item.Font!=null) this.Canvas.font=obj.Item.Font;
|
|
14444
|
+
|
|
14445
|
+
if (obj.IsLeft)
|
|
14446
|
+
{
|
|
14447
|
+
this.Canvas.textAlign="right";
|
|
14448
|
+
var xText=obj.X-obj.TextPadding;
|
|
14449
|
+
}
|
|
14450
|
+
else
|
|
14451
|
+
{
|
|
14452
|
+
this.Canvas.textAlign="left";
|
|
14453
|
+
var xText=obj.X+obj.TextPadding;
|
|
14454
|
+
}
|
|
14455
|
+
|
|
14456
|
+
var textBaseline=this.Canvas.textBaseline; //备份下原来的对齐方式
|
|
14457
|
+
this.Canvas.textBaseline='top';
|
|
14458
|
+
if (obj.TextBaseLine==1) //middle
|
|
14459
|
+
{
|
|
14460
|
+
yText-=textHeight/2;
|
|
14461
|
+
}
|
|
14462
|
+
else if (obj.TextBaseLine==0) //top
|
|
14463
|
+
{
|
|
14464
|
+
|
|
14465
|
+
}
|
|
14466
|
+
else if (obj.TextBaseLine==2) //bottom
|
|
14467
|
+
{
|
|
14468
|
+
yText-=textHeight;
|
|
14469
|
+
}
|
|
14470
|
+
|
|
14471
|
+
|
|
14472
|
+
for(var i=0;i<obj.Data.length;++i)
|
|
14473
|
+
{
|
|
14474
|
+
var item=obj.Data[i];
|
|
14475
|
+
var text=item.Text;
|
|
14476
|
+
|
|
14477
|
+
var backupTextColor=null;
|
|
14478
|
+
if (item.Color)
|
|
14479
|
+
{
|
|
14480
|
+
backupTextColor=this.Canvas.fillStyle;
|
|
14481
|
+
this.Canvas.fillStyle=item.Color;
|
|
14482
|
+
}
|
|
14483
|
+
|
|
14484
|
+
this.Canvas.fillText(text,xText,yText);
|
|
14485
|
+
yText+=lineHeight+lineSpacing;
|
|
14486
|
+
|
|
14487
|
+
if (backupTextColor) this.Canvas.fillStyle=backupTextColor;
|
|
14488
|
+
}
|
|
14489
|
+
|
|
14490
|
+
this.Canvas.textBaseline=textBaseline; //还原对齐方式
|
|
14491
|
+
}
|
|
14492
|
+
|
|
14417
14493
|
//上下区域是否重叠
|
|
14418
14494
|
this.IsTextTopBottomOverlap=function(rt, rt2)
|
|
14419
14495
|
{
|
|
@@ -15623,6 +15699,24 @@ function AverageWidthFrame()
|
|
|
15623
15699
|
return null;
|
|
15624
15700
|
}
|
|
15625
15701
|
|
|
15702
|
+
this.GetMulitTextMaxWidth=function(aryData)
|
|
15703
|
+
{
|
|
15704
|
+
var width=null;
|
|
15705
|
+
|
|
15706
|
+
for(var i=0;i<aryData.length;++i)
|
|
15707
|
+
{
|
|
15708
|
+
var item=aryData[i];
|
|
15709
|
+
var text=item.Text;
|
|
15710
|
+
if (!text) continue;
|
|
15711
|
+
|
|
15712
|
+
var value=this.Canvas.measureText(text).width;
|
|
15713
|
+
if (width==null) width=value;
|
|
15714
|
+
else if(width<value) width=value;
|
|
15715
|
+
}
|
|
15716
|
+
|
|
15717
|
+
return width;
|
|
15718
|
+
}
|
|
15719
|
+
|
|
15626
15720
|
this.GetScaleTextWidth=function()
|
|
15627
15721
|
{
|
|
15628
15722
|
var border=this.ChartBorder.GetBorder();
|
|
@@ -15668,10 +15762,18 @@ function AverageWidthFrame()
|
|
|
15668
15762
|
|
|
15669
15763
|
if (item.Message[0]!=null && isDrawLeft)
|
|
15670
15764
|
{
|
|
15671
|
-
|
|
15765
|
+
if (Array.isArray(item.Message[0]))
|
|
15766
|
+
{
|
|
15767
|
+
textWidth=this.GetMulitTextMaxWidth(item.Message[0]);
|
|
15768
|
+
}
|
|
15769
|
+
else
|
|
15770
|
+
{
|
|
15771
|
+
textWidth=this.Canvas.measureText(item.Message[0]).width;
|
|
15772
|
+
}
|
|
15773
|
+
|
|
15672
15774
|
if (width.Left==null || width.Left<textWidth)
|
|
15673
15775
|
width.Left=textWidth;
|
|
15674
|
-
|
|
15776
|
+
|
|
15675
15777
|
//JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[0]} ${textWidth}`);
|
|
15676
15778
|
}
|
|
15677
15779
|
|
|
@@ -15702,6 +15804,10 @@ function AverageWidthFrame()
|
|
|
15702
15804
|
var textWidth2=this.Canvas.measureText(item.Message[1][1]).width;
|
|
15703
15805
|
if (textWidth<textWidth2) textWidth=textWidth2;
|
|
15704
15806
|
}
|
|
15807
|
+
else if (this.MultiTextFormat==3)
|
|
15808
|
+
{
|
|
15809
|
+
textWidth=this.GetMulitTextMaxWidth(item.Message[0]);
|
|
15810
|
+
}
|
|
15705
15811
|
else //显示第1行
|
|
15706
15812
|
{
|
|
15707
15813
|
textWidth=this.Canvas.measureText(item.Message[1][0]).width;
|
|
@@ -50964,7 +51070,19 @@ function ChartCorssCursor()
|
|
|
50964
51070
|
var y=this.LastPoint.Y;
|
|
50965
51071
|
|
|
50966
51072
|
if (this.IsOnlyDrawKLine) //手机端 十字只能画在K线上
|
|
51073
|
+
{
|
|
50967
51074
|
y=this.Frame.GetXFromIndex(this.CursorIndex);
|
|
51075
|
+
if (this.IsShowClose)
|
|
51076
|
+
{
|
|
51077
|
+
var yPoint = this.GetCloseYPoint(this.CursorIndex);
|
|
51078
|
+
if (yPoint != null) x=yPoint;
|
|
51079
|
+
}
|
|
51080
|
+
}
|
|
51081
|
+
else if (this.IsOnlyDrawMinute)
|
|
51082
|
+
{
|
|
51083
|
+
var yPoint = this.GetMinuteCloseYPoint(this.CursorIndex);
|
|
51084
|
+
if (yPoint != null) x=yPoint;
|
|
51085
|
+
}
|
|
50968
51086
|
|
|
50969
51087
|
var border=this.Frame.ChartBorder.GetHScreenBorder();
|
|
50970
51088
|
var left=border.Left;
|
|
@@ -129141,7 +129259,7 @@ function ScrollBarBGChart()
|
|
|
129141
129259
|
|
|
129142
129260
|
|
|
129143
129261
|
|
|
129144
|
-
var HQCHART_VERSION="1.1.
|
|
129262
|
+
var HQCHART_VERSION="1.1.12899";
|
|
129145
129263
|
|
|
129146
129264
|
function PrintHQChartVersion()
|
|
129147
129265
|
{
|
|
@@ -4643,7 +4643,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4643
4643
|
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
4644
4644
|
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
4645
4645
|
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
4646
|
-
if (
|
|
4646
|
+
if (IFrameSplitOperator.IsBool(item.IsShowClose)) chart.ChartCorssCursor.IsShowClose = item.IsShowClose; //Y轴显示收盘价
|
|
4647
|
+
if (IFrameSplitOperator.IsBool(item.IsOnlyDrawKLine)) chart.ChartCorssCursor.IsOnlyDrawKLine = item.IsOnlyDrawKLine; //Y轴显示收盘价
|
|
4647
4648
|
if (option.CorssCursorInfo.PressTime) chart.PressTime=option.CorssCursorInfo.PressTime; //长按显示十字光标的时间
|
|
4648
4649
|
if (IFrameSplitOperator.IsNumber(option.CorssCursorInfo.HPenType)) chart.ChartCorssCursor.HPenType=option.CorssCursorInfo.HPenType;
|
|
4649
4650
|
if (option.CorssCursorInfo.VPenType>0) chart.ChartCorssCursor.VPenType=option.CorssCursorInfo.VPenType;
|
|
@@ -14303,35 +14304,46 @@ function AverageWidthFrame()
|
|
|
14303
14304
|
|
|
14304
14305
|
if (item.Message[0]!=null && isDrawLeft)
|
|
14305
14306
|
{
|
|
14306
|
-
if (item.
|
|
14307
|
-
|
|
14308
|
-
var xText=left;
|
|
14309
|
-
if (leftExtendLine && leftExtendLine.Width>1)
|
|
14307
|
+
if (Array.isArray(item.Message[0]))
|
|
14310
14308
|
{
|
|
14311
|
-
|
|
14312
|
-
|
|
14313
|
-
|
|
14314
|
-
|
|
14315
|
-
|
|
14316
|
-
this.Canvas.lineTo(xText-lineLength,yFixed);
|
|
14317
|
-
this.Canvas.stroke();
|
|
14318
|
-
|
|
14319
|
-
xText-=lineLength;
|
|
14309
|
+
if (this.MultiTextFormat==3)
|
|
14310
|
+
{
|
|
14311
|
+
var obj={ Data:item.Message[0], X:left, Y:yText, TextBaseLine:textBaseline, IsLeft:true, Item:item, TextPadding:this.YTextPadding[0] };
|
|
14312
|
+
this.DrawMultiLineText(obj);
|
|
14313
|
+
}
|
|
14320
14314
|
}
|
|
14321
|
-
|
|
14322
|
-
rtLeft=this.GetTextTopBottom(textBaseline,yText);
|
|
14323
|
-
if (!rtPreLeft || (rtLeft && !this.IsTextTopBottomOverlap(rtLeft, rtPreLeft)))
|
|
14315
|
+
else
|
|
14324
14316
|
{
|
|
14325
|
-
if (
|
|
14317
|
+
if (item.Font!=null) this.Canvas.font=item.Font;
|
|
14318
|
+
|
|
14319
|
+
var xText=left;
|
|
14320
|
+
if (leftExtendLine && leftExtendLine.Width>1)
|
|
14326
14321
|
{
|
|
14327
|
-
|
|
14328
|
-
this.Canvas.
|
|
14322
|
+
var lineLength=leftExtendLine.Width;
|
|
14323
|
+
if (leftExtendLine.Color) this.Canvas.strokeStyle=leftExtendLine.Color;
|
|
14324
|
+
else this.Canvas.strokeStyle=item.LineColor;
|
|
14325
|
+
this.Canvas.beginPath();
|
|
14326
|
+
this.Canvas.moveTo(xText,yFixed);
|
|
14327
|
+
this.Canvas.lineTo(xText-lineLength,yFixed);
|
|
14328
|
+
this.Canvas.stroke();
|
|
14329
|
+
|
|
14330
|
+
xText-=lineLength;
|
|
14329
14331
|
}
|
|
14330
|
-
|
|
14332
|
+
|
|
14333
|
+
rtLeft=this.GetTextTopBottom(textBaseline,yText);
|
|
14334
|
+
if (!rtPreLeft || (rtLeft && !this.IsTextTopBottomOverlap(rtLeft, rtPreLeft)))
|
|
14331
14335
|
{
|
|
14332
|
-
|
|
14333
|
-
|
|
14334
|
-
|
|
14336
|
+
if (leftExtendText && leftExtendText.Align===1)
|
|
14337
|
+
{
|
|
14338
|
+
this.Canvas.textAlign="left";
|
|
14339
|
+
this.Canvas.fillText(item.Message[0],this.YTextPadding[0],yText);
|
|
14340
|
+
}
|
|
14341
|
+
else
|
|
14342
|
+
{
|
|
14343
|
+
this.Canvas.textAlign="right";
|
|
14344
|
+
this.Canvas.fillText(item.Message[0],xText-this.YTextPadding[0],yText);
|
|
14345
|
+
rtPreLeft=rtLeft;
|
|
14346
|
+
}
|
|
14335
14347
|
}
|
|
14336
14348
|
}
|
|
14337
14349
|
}
|
|
@@ -14398,6 +14410,11 @@ function AverageWidthFrame()
|
|
|
14398
14410
|
var lineHeight=this.Canvas.measureText('M').width;
|
|
14399
14411
|
if (itemHeight>lineHeight*2) this.Canvas.fillText(item.Message[1][1],xText+this.YTextPadding[1],yText+lineHeight);
|
|
14400
14412
|
}
|
|
14413
|
+
else if (this.MultiTextFormat==3)
|
|
14414
|
+
{
|
|
14415
|
+
var obj={ Data:item.Message[1], X:xText, Y:yText, TextBaseLine:textBaseline, IsLeft:false, Item:item, TextPadding:this.YTextPadding[1] };
|
|
14416
|
+
this.DrawMultiLineText(obj);
|
|
14417
|
+
}
|
|
14401
14418
|
else //显示第1行
|
|
14402
14419
|
{
|
|
14403
14420
|
this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);
|
|
@@ -14458,6 +14475,65 @@ function AverageWidthFrame()
|
|
|
14458
14475
|
}
|
|
14459
14476
|
}
|
|
14460
14477
|
|
|
14478
|
+
//多行文字刻度输出 obj={ Data:, X:, Y:, TextBaseLine:, IsLeft:, Item:刻度数据 }
|
|
14479
|
+
this.DrawMultiLineText=function(obj)
|
|
14480
|
+
{
|
|
14481
|
+
var lineSpacing=2;
|
|
14482
|
+
var lineHeight=this.Canvas.measureText('擎').width;
|
|
14483
|
+
var lineCount=obj.Data.length;
|
|
14484
|
+
var textHeight=lineHeight*lineCount+(lineSpacing*(lineCount-1));
|
|
14485
|
+
var yText=obj.Y;
|
|
14486
|
+
|
|
14487
|
+
if (obj.Item.Font!=null) this.Canvas.font=obj.Item.Font;
|
|
14488
|
+
|
|
14489
|
+
if (obj.IsLeft)
|
|
14490
|
+
{
|
|
14491
|
+
this.Canvas.textAlign="right";
|
|
14492
|
+
var xText=obj.X-obj.TextPadding;
|
|
14493
|
+
}
|
|
14494
|
+
else
|
|
14495
|
+
{
|
|
14496
|
+
this.Canvas.textAlign="left";
|
|
14497
|
+
var xText=obj.X+obj.TextPadding;
|
|
14498
|
+
}
|
|
14499
|
+
|
|
14500
|
+
var textBaseline=this.Canvas.textBaseline; //备份下原来的对齐方式
|
|
14501
|
+
this.Canvas.textBaseline='top';
|
|
14502
|
+
if (obj.TextBaseLine==1) //middle
|
|
14503
|
+
{
|
|
14504
|
+
yText-=textHeight/2;
|
|
14505
|
+
}
|
|
14506
|
+
else if (obj.TextBaseLine==0) //top
|
|
14507
|
+
{
|
|
14508
|
+
|
|
14509
|
+
}
|
|
14510
|
+
else if (obj.TextBaseLine==2) //bottom
|
|
14511
|
+
{
|
|
14512
|
+
yText-=textHeight;
|
|
14513
|
+
}
|
|
14514
|
+
|
|
14515
|
+
|
|
14516
|
+
for(var i=0;i<obj.Data.length;++i)
|
|
14517
|
+
{
|
|
14518
|
+
var item=obj.Data[i];
|
|
14519
|
+
var text=item.Text;
|
|
14520
|
+
|
|
14521
|
+
var backupTextColor=null;
|
|
14522
|
+
if (item.Color)
|
|
14523
|
+
{
|
|
14524
|
+
backupTextColor=this.Canvas.fillStyle;
|
|
14525
|
+
this.Canvas.fillStyle=item.Color;
|
|
14526
|
+
}
|
|
14527
|
+
|
|
14528
|
+
this.Canvas.fillText(text,xText,yText);
|
|
14529
|
+
yText+=lineHeight+lineSpacing;
|
|
14530
|
+
|
|
14531
|
+
if (backupTextColor) this.Canvas.fillStyle=backupTextColor;
|
|
14532
|
+
}
|
|
14533
|
+
|
|
14534
|
+
this.Canvas.textBaseline=textBaseline; //还原对齐方式
|
|
14535
|
+
}
|
|
14536
|
+
|
|
14461
14537
|
//上下区域是否重叠
|
|
14462
14538
|
this.IsTextTopBottomOverlap=function(rt, rt2)
|
|
14463
14539
|
{
|
|
@@ -15667,6 +15743,24 @@ function AverageWidthFrame()
|
|
|
15667
15743
|
return null;
|
|
15668
15744
|
}
|
|
15669
15745
|
|
|
15746
|
+
this.GetMulitTextMaxWidth=function(aryData)
|
|
15747
|
+
{
|
|
15748
|
+
var width=null;
|
|
15749
|
+
|
|
15750
|
+
for(var i=0;i<aryData.length;++i)
|
|
15751
|
+
{
|
|
15752
|
+
var item=aryData[i];
|
|
15753
|
+
var text=item.Text;
|
|
15754
|
+
if (!text) continue;
|
|
15755
|
+
|
|
15756
|
+
var value=this.Canvas.measureText(text).width;
|
|
15757
|
+
if (width==null) width=value;
|
|
15758
|
+
else if(width<value) width=value;
|
|
15759
|
+
}
|
|
15760
|
+
|
|
15761
|
+
return width;
|
|
15762
|
+
}
|
|
15763
|
+
|
|
15670
15764
|
this.GetScaleTextWidth=function()
|
|
15671
15765
|
{
|
|
15672
15766
|
var border=this.ChartBorder.GetBorder();
|
|
@@ -15712,10 +15806,18 @@ function AverageWidthFrame()
|
|
|
15712
15806
|
|
|
15713
15807
|
if (item.Message[0]!=null && isDrawLeft)
|
|
15714
15808
|
{
|
|
15715
|
-
|
|
15809
|
+
if (Array.isArray(item.Message[0]))
|
|
15810
|
+
{
|
|
15811
|
+
textWidth=this.GetMulitTextMaxWidth(item.Message[0]);
|
|
15812
|
+
}
|
|
15813
|
+
else
|
|
15814
|
+
{
|
|
15815
|
+
textWidth=this.Canvas.measureText(item.Message[0]).width;
|
|
15816
|
+
}
|
|
15817
|
+
|
|
15716
15818
|
if (width.Left==null || width.Left<textWidth)
|
|
15717
15819
|
width.Left=textWidth;
|
|
15718
|
-
|
|
15820
|
+
|
|
15719
15821
|
//JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[0]} ${textWidth}`);
|
|
15720
15822
|
}
|
|
15721
15823
|
|
|
@@ -15746,6 +15848,10 @@ function AverageWidthFrame()
|
|
|
15746
15848
|
var textWidth2=this.Canvas.measureText(item.Message[1][1]).width;
|
|
15747
15849
|
if (textWidth<textWidth2) textWidth=textWidth2;
|
|
15748
15850
|
}
|
|
15851
|
+
else if (this.MultiTextFormat==3)
|
|
15852
|
+
{
|
|
15853
|
+
textWidth=this.GetMulitTextMaxWidth(item.Message[0]);
|
|
15854
|
+
}
|
|
15749
15855
|
else //显示第1行
|
|
15750
15856
|
{
|
|
15751
15857
|
textWidth=this.Canvas.measureText(item.Message[1][0]).width;
|
|
@@ -51008,7 +51114,19 @@ function ChartCorssCursor()
|
|
|
51008
51114
|
var y=this.LastPoint.Y;
|
|
51009
51115
|
|
|
51010
51116
|
if (this.IsOnlyDrawKLine) //手机端 十字只能画在K线上
|
|
51117
|
+
{
|
|
51011
51118
|
y=this.Frame.GetXFromIndex(this.CursorIndex);
|
|
51119
|
+
if (this.IsShowClose)
|
|
51120
|
+
{
|
|
51121
|
+
var yPoint = this.GetCloseYPoint(this.CursorIndex);
|
|
51122
|
+
if (yPoint != null) x=yPoint;
|
|
51123
|
+
}
|
|
51124
|
+
}
|
|
51125
|
+
else if (this.IsOnlyDrawMinute)
|
|
51126
|
+
{
|
|
51127
|
+
var yPoint = this.GetMinuteCloseYPoint(this.CursorIndex);
|
|
51128
|
+
if (yPoint != null) x=yPoint;
|
|
51129
|
+
}
|
|
51012
51130
|
|
|
51013
51131
|
var border=this.Frame.ChartBorder.GetHScreenBorder();
|
|
51014
51132
|
var left=border.Left;
|
|
@@ -129299,7 +129417,7 @@ function HQChartScriptWorker()
|
|
|
129299
129417
|
|
|
129300
129418
|
|
|
129301
129419
|
|
|
129302
|
-
var HQCHART_VERSION="1.1.
|
|
129420
|
+
var HQCHART_VERSION="1.1.12899";
|
|
129303
129421
|
|
|
129304
129422
|
function PrintHQChartVersion()
|
|
129305
129423
|
{
|