hqchart 1.1.14408 → 1.1.14412
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 +20 -14
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +1 -1
- package/src/jscommon/umychart.js +117 -64
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +119 -66
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +119 -66
package/lib/umychart.vue.js
CHANGED
|
@@ -2352,7 +2352,7 @@ this.YTextPosition=[0,0],//是坐标否强制画在内部 [0=左侧] [1=右侧]
|
|
|
2352
2352
|
this.YTextPadding=[g_JSChartResource.Frame.YTextPadding[0],g_JSChartResource.Frame.YTextPadding[1]],//Y轴文字和边框间距 [0=左侧] [1=右侧]
|
|
2353
2353
|
this.IsShowXLine=true;//是否显示X轴刻度线
|
|
2354
2354
|
this.IsShowYLine=true;this.YInsideOffset=0;this.YTextBaseline=0;//0=居中 1=上部 (目前就支持内部刻度)
|
|
2355
|
-
this.MultiTextFormat=0;//多行刻度信息显示模式 0=显示第1行 1
|
|
2355
|
+
this.MultiTextFormat=0;//多行刻度信息显示模式 0=显示第1行 1=单行多个文本 2=显示2行
|
|
2356
2356
|
this.RightTextMaxWidth=0;this.ShortYLineLength=5;this.ShortXLineLength=5;this.BeforeDrawXYCallback;//坐标绘制前回调,绘制深度图
|
|
2357
2357
|
this.GetEventCallback;//事件回调
|
|
2358
2358
|
//工具栏的按钮样式
|
|
@@ -2377,7 +2377,7 @@ var leftExtendLine=null;//左侧延长线
|
|
|
2377
2377
|
if(IFrameSplitOperator.IsNonEmptyArray(this.YLineExtend)){rightExtendLine=this.YLineExtend[1];leftExtendLine=this.YLineExtend[0];}var rightExtendText=null;//右侧文字设置
|
|
2378
2378
|
var leftExtendText=null;//左侧文字设置
|
|
2379
2379
|
if(IFrameSplitOperator.IsNonEmptyArray(this.YTextExtend)){leftExtendText=this.YTextExtend[0];rightExtendText=this.YTextExtend[1];}var yPrev=null;//上一个坐标y的值
|
|
2380
|
-
var pixelRatio=GetDevicePixelRatio();var itemHeight=(border.BottomEx-border.TopEx)/this.HorizontalInfo.length;var aryMultiText=[];var rtPreRight,rtRight,rtLeft,rtPreLeft;var textBaseline=0;//0=上 1=中 2=下
|
|
2380
|
+
var pixelRatio=GetDevicePixelRatio();var itemHeight=(border.BottomEx-border.TopEx)/this.HorizontalInfo.length;var aryMultiText=[];var aryLeftMulitText=[];var rtPreRight,rtRight,rtLeft,rtPreLeft;var textBaseline=0;//0=上 1=中 2=下
|
|
2381
2381
|
for(var i=this.HorizontalInfo.length-1;i>=0;--i)//从上往下画分割线
|
|
2382
2382
|
{var item=this.HorizontalInfo[i];if(!IFrameSplitOperator.IsNumber(item.Value))continue;if(NumberCompare.GT(item.Value,this.HorizontalMax)||NumberCompare.LT(item.Value,this.HorizontalMin))continue;var y=this.GetYFromData(item.Value);if(y!=null&&yPrev!=null&&Math.abs(y-yPrev)<this.MinYDistance)continue;//两个坐标在近了 就不画了
|
|
2383
2383
|
var yFixed=ToFixedPoint(y);//绘制刻度线
|
|
@@ -2388,23 +2388,30 @@ this.Canvas.beginPath();this.Canvas.moveTo(left,yFixed);this.Canvas.lineTo(right
|
|
|
2388
2388
|
{}else if(item.LineType>0){if(g_JSChartResource.FrameYLineDash){this.Canvas.save();this.Canvas.setLineDash(g_JSChartResource.FrameYLineDash);//虚线
|
|
2389
2389
|
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 不画坐标
|
|
2390
2390
|
this.Canvas.strokeStyle=item.TextColor;this.Canvas.fillStyle=item.TextColor;if(item.Message[0]!=null&&isDrawLeft){var yOffset=0;if(IFrameSplitOperator.IsNonEmptyArray(item.YOffset))//文字Y轴偏移
|
|
2391
|
-
{var offsetItem=item.YOffset[0];if(offsetItem&&IFrameSplitOperator.IsNumber(offsetItem.Offset))yOffset=offsetItem.Offset;}if(Array.isArray(item.Message[0])){if(this.MultiTextFormat==
|
|
2391
|
+
{var offsetItem=item.YOffset[0];if(offsetItem&&IFrameSplitOperator.IsNumber(offsetItem.Offset))yOffset=offsetItem.Offset;}if(Array.isArray(item.Message[0])){if(this.MultiTextFormat==1)//显示1行 格式如:价格/百分比
|
|
2392
|
+
{var textData=this.CreateMulitCoordinateItem(item.Message[0],left-2,yText,this.Canvas.textBaseline,item);aryLeftMulitText.push(textData);}else 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+yOffset);}else{this.Canvas.textAlign="right";this.Canvas.fillText(item.Message[0],xText-this.YTextPadding[0],yText+yOffset);rtPreLeft=rtLeft;}}}}//右边 坐标信息 间距小于10 不画坐标
|
|
2392
2393
|
if(item.Message[1]!=null&&isDrawRight){var yOffset=0;if(IFrameSplitOperator.IsNonEmptyArray(item.YOffset))//文字Y轴偏移
|
|
2393
2394
|
{var offsetItem=item.YOffset[1];if(offsetItem&&IFrameSplitOperator.IsNumber(offsetItem.Offset))yOffset=offsetItem.Offset;}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;}//右侧延长线
|
|
2394
|
-
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行
|
|
2395
|
-
{
|
|
2395
|
+
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行 格式如:价格/百分比
|
|
2396
|
+
{var textData=this.CreateMulitCoordinateItem(item.Message[1],xText+2,yText,this.Canvas.textBaseline,item);aryMultiText.push(textData);}else if(this.MultiTextFormat==2)//显示2行
|
|
2396
2397
|
{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行
|
|
2397
2398
|
{var text=item.Message[1][0];if(item.TextColor2)this.Canvas.fillStyle=item.TextColor2;if(rightExtendText&&rightExtendText.Align===2&&this.YRightTextInfo)//右对齐
|
|
2398
2399
|
{this.Canvas.textAlign="right";var xRight=this.YRightTextInfo.MainTextWidth+right-this.YTextPadding[1];this.Canvas.fillText(text,xRight,yText);}else{this.Canvas.fillText(text,xText+this.YTextPadding[1],yText);}}}else{//计算显示的区域
|
|
2399
2400
|
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)//右对齐
|
|
2400
|
-
{this.Canvas.textAlign="right";var xRight=this.YRightTextInfo.MainTextWidth+right-this.YTextPadding[1];this.Canvas.fillText(item.Message[1],xRight,yText+yOffset);}else{this.Canvas.fillText(item.Message[1],xText+this.YTextPadding[1],yText+yOffset);}rtPreRight=rtRight;}}}yPrev=y;}if(IFrameSplitOperator.IsNonEmptyArray(aryMultiText)&&this.MultiTextFormat==1)this.
|
|
2401
|
+
{this.Canvas.textAlign="right";var xRight=this.YRightTextInfo.MainTextWidth+right-this.YTextPadding[1];this.Canvas.fillText(item.Message[1],xRight,yText+yOffset);}else{this.Canvas.fillText(item.Message[1],xText+this.YTextPadding[1],yText+yOffset);}rtPreRight=rtRight;}}}yPrev=y;}if(IFrameSplitOperator.IsNonEmptyArray(aryLeftMulitText)&&this.MultiTextFormat==1)this.DrawMultiCoordinateLeftText(aryLeftMulitText);if(IFrameSplitOperator.IsNonEmptyArray(aryMultiText)&&this.MultiTextFormat==1)this.DrawMultiCoordinateRightText(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();}}};this.CreateMulitCoordinateItem=function(aryData,x,y,textBaseline,data){var coordinateItem={AryText:[],X:x,Y:y,TextBaseline:textBaseline,Item:data};for(var i=0;i<aryData.length;++i){var item=aryData[i];if(item.Font)this.Canvas.font=item.Font;var textWidth=0;if(item.Text)textWidth=this.Canvas.measureText(item.Text).width;coordinateItem.AryText.push({Width:textWidth,Item:item});}return coordinateItem;};this.GetMulitCoordinateItemTextWidth=function(aryData){var total=0;for(var i=0;i<aryData.length;++i){var item=aryData[i];if(item.Font)this.Canvas.font=item.Font;var width=this.Canvas.measureText(item.Text).width;total+=width;}return total;};//多行文字刻度输出 obj={ Data:, X:, Y:, TextBaseLine:, IsLeft:, Item:刻度数据 }
|
|
2401
2402
|
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;//备份下原来的对齐方式
|
|
2402
2403
|
this.Canvas.textBaseline='top';if(obj.TextBaseLine==1)//middle
|
|
2403
2404
|
{yText-=textHeight/2;}else if(obj.TextBaseLine==0)//top
|
|
2404
2405
|
{}else if(obj.TextBaseLine==2)//bottom
|
|
2405
2406
|
{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;//还原对齐方式
|
|
2406
2407
|
};//上下区域是否重叠
|
|
2407
|
-
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;}
|
|
2408
|
+
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;};//绘制多重坐标刻度文字 左侧
|
|
2409
|
+
this.DrawMultiCoordinateLeftText=function(aryText){var aryMaxWidth=[];for(var i=0,j=0;i<aryText.length;++i){var item=aryText[i];for(var j=0;j<item.AryText.length;++j){var textItem=item.AryText[j];if(!IFrameSplitOperator.IsNumber(aryMaxWidth[j])||aryMaxWidth[j]<textItem.Width)aryMaxWidth[j]=textItem.Width;}}this.Canvas.textAlign="right";for(var i=0;i<aryText.length;++i){var item=aryText[i];var message=item.Item;var x=item.X;this.Canvas.textBaseline=item.TextBaseline;for(var j=0;j<item.AryText.length;++j){var textItem=item.AryText[j];var subText=textItem.Item;if(subText&&subText.Text){if(subText.Font)this.Canvas.font=subText.Font;//字体
|
|
2410
|
+
else if(message.Font)this.Canvas.font=message.Font;if(subText.Color)this.Canvas.fillStyle=subText.Color;//颜色
|
|
2411
|
+
else this.Canvas.fillStyle=message.TextColor;this.Canvas.fillText(subText.Text,x,item.Y);}x-=aryMaxWidth[j];}}};//绘制多重坐标刻度文字 右侧
|
|
2412
|
+
this.DrawMultiCoordinateRightText=function(aryText){var aryMaxWidth=[];for(var i=0,j=0;i<aryText.length;++i){var item=aryText[i];for(var j=0;j<item.AryText.length;++j){var textItem=item.AryText[j];if(!IFrameSplitOperator.IsNumber(aryMaxWidth[j])||aryMaxWidth[j]<textItem.Width)aryMaxWidth[j]=textItem.Width;}}this.Canvas.textAlign="right";for(var i=0;i<aryText.length;++i){var item=aryText[i];var message=item.Item;var x=item.X;this.Canvas.textBaseline=item.TextBaseline;for(var j=0;j<item.AryText.length;++j){var textItem=item.AryText[j];var subText=textItem.Item;if(subText&&subText.Text){if(subText.Font)this.Canvas.font=subText.Font;//字体
|
|
2413
|
+
else if(message.Font)this.Canvas.font=message.Font;if(subText.Color)this.Canvas.fillStyle=subText.Color;//颜色
|
|
2414
|
+
else this.Canvas.fillStyle=message.TextColor;x+=aryMaxWidth[j];this.Canvas.fillText(subText.Text,x,item.Y);}}}};//画Y轴Message[2,3]两个内部刻度
|
|
2408
2415
|
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的值
|
|
2409
2416
|
var yInsideText=null;for(var i=this.HorizontalInfo.length-1;i>=0;--i)//从上往下画分割线
|
|
2410
2417
|
{var item=this.HorizontalInfo[i];var y=this.GetYFromData(item.Value);if(y!=null&&yPrev!=null&&Math.abs(y-yPrev)<this.MinYDistance)continue;//两个坐标在近了 就不画了
|
|
@@ -2471,10 +2478,9 @@ this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(ToFixedPoint(y),le
|
|
|
2471
2478
|
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;
|
|
2472
2479
|
var isDrawRight=this.IsShowRightHorizontal();}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;
|
|
2473
2480
|
var isDrawRight=this.IsShowRightHorizontal();}if(!isDrawRight&&!isDrawLeft)return null;var width={Left:null,Right:null};var rightExtendWidth=0;var isYPercentage=false;//是否是百分比坐标
|
|
2474
|
-
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}`);
|
|
2475
|
-
}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
|
|
2476
|
-
{
|
|
2477
|
-
}else if(this.MultiTextFormat==2)//显示2行
|
|
2481
|
+
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])){if(this.MultiTextFormat==1)textWidth=this.GetMulitCoordinateItemTextWidth(item.Message[0]);else 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}`);
|
|
2482
|
+
}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行 格式:价格/百分比
|
|
2483
|
+
{textWidth=this.GetMulitCoordinateItemTextWidth(item.Message[1]);}else if(this.MultiTextFormat==2)//显示2行
|
|
2478
2484
|
{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[1]);}else//显示第1行
|
|
2479
2485
|
{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';};this.GetMainOverlayFrame=function(){if(!this.FrameData||!this.FrameData.SubFrameItem)return null;var subFrame=this.FrameData.SubFrameItem;var leftFrame=null,rightFrame=null;for(var i=0;i<subFrame.OverlayIndex.length;++i){var item=subFrame.OverlayIndex[i];var overlayFrame=item.Frame;if(overlayFrame.IsShowMainFrame==2)rightFrame=overlayFrame;else if(overlayFrame.IsShowMainFrame==1)leftFrame=overlayFrame;}if(!leftFrame&&!rightFrame)return null;return[leftFrame,rightFrame];};}function MinuteFrame(){this.newMethod=AverageWidthFrame;//派生
|
|
2480
2486
|
this.newMethod();delete this.newMethod;this.ClassName="MinuteFrame";this.DataWidth=1*GetDevicePixelRatio();this.DistanceWidth=1*GetDevicePixelRatio();this.MinuteCount=243;//每天的分钟个数
|
|
@@ -5497,7 +5503,7 @@ var width=this.Frame.ChartBorder.GetChartWidth();//画布的宽度
|
|
|
5497
5503
|
var isPhoneModel=width<450*pixelTatio;JSConsole.Chart.Log('[FrameSplitMinutePriceY]'+'max='+max+' min='+min+' isPhoneModel='+isPhoneModel);var showCount=this.SplitCount;var distance=(max-min)/(showCount-1);var minDistance=[1,0.1,0.01,0.001,0.0001];var defaultfloatPrecision=GetfloatPrecision(this.Symbol);if(isPhoneModel&&MARKET_SUFFIX_NAME.IsSHSZIndex(this.Symbol))defaultfloatPrecision=0;//手机端指数不显示小数位数,太长了
|
|
5498
5504
|
if(distance<minDistance[defaultfloatPrecision]&&!isFixedMaxMin){distance=minDistance[defaultfloatPrecision];max=this.YClose+distance*(showCount-1)/2;min=this.YClose-distance*(showCount-1)/2;}var aryCoordinate=[];var extendValue=distance*0.5;for(var price=this.YClose,i=0;price<=max+extendValue&&i<30;price+=distance,++i){var coordinate=new CoordinateInfo();coordinate.Value=price;this.FormatCoordinate(coordinate,defaultfloatPrecision);aryCoordinate.push(coordinate);}for(var price=this.YClose-distance,i=0;price>=min-extendValue&&i<30;price-=distance,++i){var coordinate=new CoordinateInfo();coordinate.Value=price;this.FormatCoordinate(coordinate,defaultfloatPrecision);aryCoordinate.push(coordinate);}aryCoordinate.sort(function(left,right){return left.Value-right.Value;});this.Frame.HorizontalInfo=aryCoordinate;this.Frame.HorizontalMax=max;this.Frame.HorizontalMin=min;};this.FormatCoordinate=function(coordinate,defaultfloatPrecision){var price=coordinate.Value;var strPrice=price.toFixed(defaultfloatPrecision);//价格刻度字符串
|
|
5499
5505
|
if(this.IsShowLeftText)coordinate.Message[0]=strPrice;if(IFrameSplitOperator.IsNumber(this.YClose)&&this.YClose!=0){var per=(price/this.YClose-1)*100;if(per>0)coordinate.TextColor=g_JSChartResource.UpTextColor;else if(per<0)coordinate.TextColor=g_JSChartResource.DownTextColor;var strPer=IFrameSplitOperator.FormatValueString(per,2)+'%';if(this.IsShowRightText){if(this.RightTextFormat==1){coordinate.Message[1]=strPrice;}else if(this.RightTextFormat==2)//价格/百分比
|
|
5500
|
-
{coordinate.Message[1]=[strPer
|
|
5506
|
+
{coordinate.Message[1]=[{Text:strPrice},{Text:"/"},{Text:strPer}];}else{coordinate.Message[1]=strPer;//百分比
|
|
5501
5507
|
}}if(Math.abs(price-this.YClose)<0.00000000001)//小数有精度问题 使用差值
|
|
5502
5508
|
{coordinate.LineType=2;//中间的线画虚线
|
|
5503
5509
|
coordinate.TextColor=g_JSChartResource.UnchagneTextColor;if(g_JSChartResource.FrameDotSplitPen)coordinate.LineColor=g_JSChartResource.FrameDotSplitPen;}}};}function FrameSplitMinuteX(){this.newMethod=IFrameSplitOperator;//派生
|
|
@@ -12012,7 +12018,7 @@ var result=[];if(ChartData.IsDayPeriod(hqChart.Period,true))//日线
|
|
|
12012
12018
|
var result=[];if(ChartData.IsDayPeriod(hqChart.Period,true))//日线
|
|
12013
12019
|
{var bFill=false;for(var i=0,j=0;i<kData.Data.length;++i){result[i]=0;var kItem=kData.Data[i];var date=kItem.Date;for(j=0;j<data.length;++j){var rangeItem=data[j];if(date>=rangeItem.Start.Date&&date<=rangeItem.End.Date){result[i]=1;bFill=true;break;}}}if(bFill)return result;}else if(ChartData.IsMinutePeriod(hqChart.Period,true))//分钟线
|
|
12014
12020
|
{var aryRange=[];for(var i=0;i<data.length;++i){var item=data[i];var startDatetime=item.Start.Date*10000;if(IFrameSplitOperator.IsNumber(item.Start.Time))startDatetime+=item.Start.Time;var endDatetime=item.End.Date*10000;if(IFrameSplitOperator.IsNumber(item.End.Time))endDatetime+=item.End.Time;aryRange.push({Start:startDatetime,End:endDatetime});}var bFill=false;for(var i=0,j=0;i<kData.Data.length;++i){result[i]=0;var kItem=kData.Data[i];var date=kItem.Date*10000+kItem.Time;for(j=0;j<aryRange.length;++j){var rangeItem=aryRange[j];if(date>=rangeItem.Start&&date<=rangeItem.End){result[i]=1;bFill=true;break;}}}if(bFill)return result;}return null;};this.FittingMinuteData=function(jsonData,hqChart){var outVar=jsonData.outvar;var date=jsonData.date;var time=jsonData.time;var result=[];for(var i=0;i<outVar.length;++i){var item=outVar[i];var outVarItem={Name:item.name,Type:item.type};if(IFrameSplitOperator.IsBool(item.IsShowTitle))outVarItem.IsShowTitle=item.IsShowTitle;//是否显示指标标题
|
|
12015
|
-
if(item.data){outVarItem.Data=this.FittingMinuteArray(item.data,date,time,hqChart);if(item.color)outVarItem.Color=item.color;if(item.linewidth
|
|
12021
|
+
if(item.data){outVarItem.Data=this.FittingMinuteArray(item.data,date,time,hqChart);if(item.color)outVarItem.Color=item.color;if(item.linewidth)outVarItem.LineWidth=item.linewidth;if(item.isshow==false)outVarItem.IsShow=false;if(item.isexdata==true)outVarItem.IsExData=true;if(item.BreakPoint)outVarItem.BreakPoint=item.BreakPoint;if(item.UpColor)outVarItem.UpColor=item.UpColor;if(item.DownColor)outVarItem.DownColor=item.DownColor;if(IFrameSplitOperator.IsBool(item.isDotLine))outVarItem.IsDotLine=item.isDotLine;if(IFrameSplitOperator.IsNonEmptyArray(item.lineDash))outVarItem.LineDash=item.lineDash;if(IFrameSplitOperator.IsBool(item.isSingleLine))outVarItem.IsSingleLine=item.isSingleLine;if(IFrameSplitOperator.IsNonEmptyArray(item.AryBreakPoint))outVarItem.AryBreakPoint=item.AryBreakPoint;result.push(outVarItem);}else if(item.Draw){var draw=item.Draw;var drawItem={};if(draw.DrawType=='DRAWICON')//图标
|
|
12016
12022
|
{drawItem.Icon=draw.Icon;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWTEXT')//文本
|
|
12017
12023
|
{drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='STICKLINE')//柱子
|
|
12018
12024
|
{drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.Width=draw.Width;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.OVERLAY_BARS){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.BarName=draw.BarName;drawItem.BarColor=draw.BarColor;drawItem.LineWidth=draw.LineWidth;drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.CLIP_COLOR_STICK){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMinuteArray(draw.Data,date,time,hqChart);outVarItem.Draw=drawItem;if(draw.Option)outVarItem.Option=draw.Option;result.push(outVarItem);}else if(draw.DrawType=='MULTI_LINE'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);for(var k in drawItem.DrawData){this.GetKLineData(drawItem.DrawData[k].Point,hqChart);}outVarItem.Draw=drawItem;if(draw.LineDash)drawItem.LineDash=draw.LineDash;if(draw.Arrow)drawItem.Arrow=draw.Arrow;result.push(outVarItem);}else if(draw.DrawType=='MULTI_POINT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=draw.DrawData;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_TEXT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=draw.DrawData;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_SVGICON'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={Icon:draw.DrawData.Icon,Family:draw.DrawData.Family};outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWSVG'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;if(draw.AutoPosition)drawItem.AutoPosition=draw.AutoPosition;if(draw.BuildKeyCallback)drawItem.BuildKeyCallback=draw.BuildKeyCallback;drawItem.DrawData={Data:draw.Data,Family:draw.Family,TextFont:draw.TextFont,EnableTooltip:draw.EnableTooltip,IsDrawFirst:draw.IsDrawFirst};outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="MULTI_HTMLDOM")//外部自己创建dom
|
|
@@ -14322,7 +14328,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
14322
14328
|
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);};}/********************************************************************************
|
|
14323
14329
|
* 版本信息输出
|
|
14324
14330
|
*
|
|
14325
|
-
*/var HQCHART_VERSION="1.1.
|
|
14331
|
+
*/var HQCHART_VERSION="1.1.14410";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
14326
14332
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
14327
14333
|
// BaseIndex:BaseIndex,
|
|
14328
14334
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -25470,7 +25470,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
25470
25470
|
{
|
|
25471
25471
|
outVarItem.Data=this.FittingMinuteArray(item.data,date,time,hqChart);
|
|
25472
25472
|
if (item.color) outVarItem.Color=item.color;
|
|
25473
|
-
if (item.linewidth
|
|
25473
|
+
if (item.linewidth) outVarItem.LineWidth=item.linewidth;
|
|
25474
25474
|
if (item.isshow==false) outVarItem.IsShow = false;
|
|
25475
25475
|
if (item.isexdata==true) outVarItem.IsExData = true;
|
|
25476
25476
|
if (item.BreakPoint) outVarItem.BreakPoint=item.BreakPoint;
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -11712,7 +11712,7 @@ function AverageWidthFrame()
|
|
|
11712
11712
|
this.IsShowYLine=true;
|
|
11713
11713
|
this.YInsideOffset=0;
|
|
11714
11714
|
this.YTextBaseline=0; //0=居中 1=上部 (目前就支持内部刻度)
|
|
11715
|
-
this.MultiTextFormat=0; //多行刻度信息显示模式 0=显示第1行 1
|
|
11715
|
+
this.MultiTextFormat=0; //多行刻度信息显示模式 0=显示第1行 1=单行多个文本 2=显示2行
|
|
11716
11716
|
this.RightTextMaxWidth=0;
|
|
11717
11717
|
|
|
11718
11718
|
this.ShortYLineLength=5;
|
|
@@ -12047,6 +12047,7 @@ function AverageWidthFrame()
|
|
|
12047
12047
|
var pixelRatio=GetDevicePixelRatio();
|
|
12048
12048
|
var itemHeight=(border.BottomEx-border.TopEx)/this.HorizontalInfo.length;
|
|
12049
12049
|
var aryMultiText=[];
|
|
12050
|
+
var aryLeftMulitText=[];
|
|
12050
12051
|
var rtPreRight, rtRight, rtLeft, rtPreLeft;
|
|
12051
12052
|
var textBaseline=0; //0=上 1=中 2=下
|
|
12052
12053
|
for(var i=this.HorizontalInfo.length-1; i>=0; --i) //从上往下画分割线
|
|
@@ -12153,7 +12154,12 @@ function AverageWidthFrame()
|
|
|
12153
12154
|
|
|
12154
12155
|
if (Array.isArray(item.Message[0]))
|
|
12155
12156
|
{
|
|
12156
|
-
if (this.MultiTextFormat==
|
|
12157
|
+
if (this.MultiTextFormat==1) //显示1行 格式如:价格/百分比
|
|
12158
|
+
{
|
|
12159
|
+
var textData=this.CreateMulitCoordinateItem(item.Message[0], left-2, yText, this.Canvas.textBaseline, item);
|
|
12160
|
+
aryLeftMulitText.push(textData);
|
|
12161
|
+
}
|
|
12162
|
+
else if (this.MultiTextFormat==3)
|
|
12157
12163
|
{
|
|
12158
12164
|
var obj={ Data:item.Message[0], X:left, Y:yText, TextBaseLine:textBaseline, IsLeft:true, Item:item, TextPadding:this.YTextPadding[0] };
|
|
12159
12165
|
this.DrawMultiLineText(obj);
|
|
@@ -12239,25 +12245,9 @@ function AverageWidthFrame()
|
|
|
12239
12245
|
this.Canvas.textAlign="left";
|
|
12240
12246
|
if (Array.isArray(item.Message[1]))
|
|
12241
12247
|
{
|
|
12242
|
-
if (this.MultiTextFormat==1) //显示1行
|
|
12248
|
+
if (this.MultiTextFormat==1) //显示1行 格式如:价格/百分比
|
|
12243
12249
|
{
|
|
12244
|
-
|
|
12245
|
-
{
|
|
12246
|
-
if (item.ExtendData.Font) this.Canvas.font=item.ExtendData.Font;
|
|
12247
|
-
}
|
|
12248
|
-
|
|
12249
|
-
var textData=
|
|
12250
|
-
{
|
|
12251
|
-
Text:
|
|
12252
|
-
[
|
|
12253
|
-
{Text:item.Message[1][0], Width:this.Canvas.measureText(item.Message[1][0]).width },
|
|
12254
|
-
{Text:item.Message[1][1], Width:this.Canvas.measureText(item.Message[1][1]).width }
|
|
12255
|
-
],
|
|
12256
|
-
X:xText+2,
|
|
12257
|
-
Y:yText,
|
|
12258
|
-
TextBaseline:this.Canvas.textBaseline,
|
|
12259
|
-
Item:item
|
|
12260
|
-
}
|
|
12250
|
+
var textData=this.CreateMulitCoordinateItem(item.Message[1], xText+2, yText, this.Canvas.textBaseline, item);
|
|
12261
12251
|
aryMultiText.push(textData);
|
|
12262
12252
|
}
|
|
12263
12253
|
else if (this.MultiTextFormat==2) //显示2行
|
|
@@ -12314,7 +12304,9 @@ function AverageWidthFrame()
|
|
|
12314
12304
|
yPrev=y;
|
|
12315
12305
|
}
|
|
12316
12306
|
|
|
12317
|
-
if (IFrameSplitOperator.IsNonEmptyArray(
|
|
12307
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryLeftMulitText) && this.MultiTextFormat==1) this.DrawMultiCoordinateLeftText(aryLeftMulitText);
|
|
12308
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryMultiText) && this.MultiTextFormat==1) this.DrawMultiCoordinateRightText(aryMultiText);
|
|
12309
|
+
|
|
12318
12310
|
|
|
12319
12311
|
if (isDrawRight && this.IsDrawRightBorder && this.YRightTextInfo)
|
|
12320
12312
|
{
|
|
@@ -12343,6 +12335,41 @@ function AverageWidthFrame()
|
|
|
12343
12335
|
}
|
|
12344
12336
|
}
|
|
12345
12337
|
|
|
12338
|
+
this.CreateMulitCoordinateItem=function(aryData, x, y, textBaseline, data)
|
|
12339
|
+
{
|
|
12340
|
+
var coordinateItem=
|
|
12341
|
+
{
|
|
12342
|
+
AryText:[], X:x,Y:y, TextBaseline:textBaseline, Item:data
|
|
12343
|
+
};
|
|
12344
|
+
|
|
12345
|
+
for(var i=0;i<aryData.length;++i)
|
|
12346
|
+
{
|
|
12347
|
+
var item=aryData[i];
|
|
12348
|
+
if (item.Font) this.Canvas.font=item.Font;
|
|
12349
|
+
var textWidth=0;
|
|
12350
|
+
if (item.Text) textWidth=this.Canvas.measureText(item.Text).width;
|
|
12351
|
+
|
|
12352
|
+
coordinateItem.AryText.push({ Width:textWidth, Item:item });
|
|
12353
|
+
}
|
|
12354
|
+
|
|
12355
|
+
return coordinateItem;
|
|
12356
|
+
}
|
|
12357
|
+
|
|
12358
|
+
this.GetMulitCoordinateItemTextWidth=function(aryData)
|
|
12359
|
+
{
|
|
12360
|
+
var total=0;
|
|
12361
|
+
for(var i=0;i<aryData.length;++i)
|
|
12362
|
+
{
|
|
12363
|
+
var item=aryData[i];
|
|
12364
|
+
if (item.Font) this.Canvas.font=item.Font;
|
|
12365
|
+
var width=this.Canvas.measureText(item.Text).width;
|
|
12366
|
+
|
|
12367
|
+
total+=width;
|
|
12368
|
+
}
|
|
12369
|
+
|
|
12370
|
+
return total;
|
|
12371
|
+
}
|
|
12372
|
+
|
|
12346
12373
|
//多行文字刻度输出 obj={ Data:, X:, Y:, TextBaseLine:, IsLeft:, Item:刻度数据 }
|
|
12347
12374
|
this.DrawMultiLineText=function(obj)
|
|
12348
12375
|
{
|
|
@@ -12433,53 +12460,86 @@ function AverageWidthFrame()
|
|
|
12433
12460
|
return rtRight;
|
|
12434
12461
|
}
|
|
12435
12462
|
|
|
12436
|
-
|
|
12463
|
+
//绘制多重坐标刻度文字 左侧
|
|
12464
|
+
this.DrawMultiCoordinateLeftText=function(aryText)
|
|
12437
12465
|
{
|
|
12438
|
-
var
|
|
12439
|
-
for(var i=0;i<aryText.length;++i)
|
|
12466
|
+
var aryMaxWidth=[];
|
|
12467
|
+
for(var i=0, j=0;i<aryText.length;++i)
|
|
12440
12468
|
{
|
|
12441
12469
|
var item=aryText[i];
|
|
12442
|
-
var
|
|
12443
|
-
|
|
12444
|
-
|
|
12445
|
-
|
|
12446
|
-
|
|
12447
|
-
|
|
12448
|
-
else if (maxWidth[1]<width) maxWidth[1]=width;
|
|
12470
|
+
for(var j=0;j<item.AryText.length;++j)
|
|
12471
|
+
{
|
|
12472
|
+
var textItem=item.AryText[j];
|
|
12473
|
+
if (!IFrameSplitOperator.IsNumber(aryMaxWidth[j]) || aryMaxWidth[j]<textItem.Width) aryMaxWidth[j]=textItem.Width;
|
|
12474
|
+
}
|
|
12475
|
+
|
|
12449
12476
|
}
|
|
12450
12477
|
|
|
12478
|
+
this.Canvas.textAlign="right";
|
|
12451
12479
|
for(var i=0;i<aryText.length;++i)
|
|
12452
12480
|
{
|
|
12453
12481
|
var item=aryText[i];
|
|
12454
12482
|
var message=item.Item;
|
|
12455
|
-
|
|
12483
|
+
var x=item.X;
|
|
12456
12484
|
this.Canvas.textBaseline=item.TextBaseline;
|
|
12457
|
-
|
|
12458
|
-
|
|
12459
|
-
|
|
12460
|
-
|
|
12461
|
-
|
|
12485
|
+
for(var j=0;j<item.AryText.length;++j)
|
|
12486
|
+
{
|
|
12487
|
+
var textItem=item.AryText[j];
|
|
12488
|
+
var subText=textItem.Item;
|
|
12489
|
+
if (subText && subText.Text)
|
|
12490
|
+
{
|
|
12491
|
+
if (subText.Font) this.Canvas.font=subText.Font; //字体
|
|
12492
|
+
else if (message.Font) this.Canvas.font=message.Font;
|
|
12493
|
+
|
|
12494
|
+
if (subText.Color) this.Canvas.fillStyle=subText.Color; //颜色
|
|
12495
|
+
else this.Canvas.fillStyle=message.TextColor;
|
|
12462
12496
|
|
|
12463
|
-
|
|
12464
|
-
|
|
12465
|
-
this.Canvas.fillText(item.Text[1].Text,x,item.Y);
|
|
12497
|
+
this.Canvas.fillText(subText.Text,x,item.Y);
|
|
12498
|
+
}
|
|
12466
12499
|
|
|
12467
|
-
|
|
12468
|
-
|
|
12500
|
+
x-=aryMaxWidth[j];
|
|
12501
|
+
}
|
|
12502
|
+
}
|
|
12503
|
+
}
|
|
12469
12504
|
|
|
12470
|
-
|
|
12471
|
-
|
|
12472
|
-
|
|
12505
|
+
//绘制多重坐标刻度文字 右侧
|
|
12506
|
+
this.DrawMultiCoordinateRightText=function(aryText)
|
|
12507
|
+
{
|
|
12508
|
+
var aryMaxWidth=[];
|
|
12509
|
+
for(var i=0, j=0;i<aryText.length;++i)
|
|
12510
|
+
{
|
|
12511
|
+
var item=aryText[i];
|
|
12512
|
+
for(var j=0;j<item.AryText.length;++j)
|
|
12513
|
+
{
|
|
12514
|
+
var textItem=item.AryText[j];
|
|
12515
|
+
if (!IFrameSplitOperator.IsNumber(aryMaxWidth[j]) || aryMaxWidth[j]<textItem.Width) aryMaxWidth[j]=textItem.Width;
|
|
12516
|
+
}
|
|
12473
12517
|
|
|
12474
|
-
|
|
12475
|
-
else this.Canvas.fillStyle=message.TextColor;
|
|
12518
|
+
}
|
|
12476
12519
|
|
|
12477
|
-
|
|
12478
|
-
|
|
12479
|
-
|
|
12520
|
+
this.Canvas.textAlign="right";
|
|
12521
|
+
for(var i=0;i<aryText.length;++i)
|
|
12522
|
+
{
|
|
12523
|
+
var item=aryText[i];
|
|
12524
|
+
var message=item.Item;
|
|
12525
|
+
var x=item.X;
|
|
12526
|
+
this.Canvas.textBaseline=item.TextBaseline;
|
|
12527
|
+
for(var j=0;j<item.AryText.length;++j)
|
|
12528
|
+
{
|
|
12529
|
+
var textItem=item.AryText[j];
|
|
12530
|
+
var subText=textItem.Item;
|
|
12531
|
+
if (subText && subText.Text)
|
|
12532
|
+
{
|
|
12533
|
+
if (subText.Font) this.Canvas.font=subText.Font; //字体
|
|
12534
|
+
else if (message.Font) this.Canvas.font=message.Font;
|
|
12535
|
+
|
|
12536
|
+
if (subText.Color) this.Canvas.fillStyle=subText.Color; //颜色
|
|
12537
|
+
else this.Canvas.fillStyle=message.TextColor;
|
|
12480
12538
|
|
|
12481
|
-
|
|
12482
|
-
|
|
12539
|
+
x+=aryMaxWidth[j];
|
|
12540
|
+
this.Canvas.fillText(subText.Text,x,item.Y);
|
|
12541
|
+
}
|
|
12542
|
+
}
|
|
12483
12543
|
}
|
|
12484
12544
|
}
|
|
12485
12545
|
|
|
@@ -14057,7 +14117,8 @@ function AverageWidthFrame()
|
|
|
14057
14117
|
{
|
|
14058
14118
|
if (Array.isArray(item.Message[0]))
|
|
14059
14119
|
{
|
|
14060
|
-
textWidth=this.
|
|
14120
|
+
if (this.MultiTextFormat==1) textWidth=this.GetMulitCoordinateItemTextWidth(item.Message[0]);
|
|
14121
|
+
else textWidth=this.GetMulitTextMaxWidth(item.Message[0]);
|
|
14061
14122
|
}
|
|
14062
14123
|
else
|
|
14063
14124
|
{
|
|
@@ -14076,17 +14137,9 @@ function AverageWidthFrame()
|
|
|
14076
14137
|
|
|
14077
14138
|
if (Array.isArray(item.Message[1]))
|
|
14078
14139
|
{
|
|
14079
|
-
if (this.MultiTextFormat==1
|
|
14140
|
+
if (this.MultiTextFormat==1) //显示1行 格式:价格/百分比
|
|
14080
14141
|
{
|
|
14081
|
-
|
|
14082
|
-
|
|
14083
|
-
var width1=this.Canvas.measureText(item.Message[1][0]).width;
|
|
14084
|
-
var width2=this.Canvas.measureText(item.Message[1][1]).width;
|
|
14085
|
-
var width3=this.Canvas.measureText('/').width;
|
|
14086
|
-
textWidth=width1+width3;
|
|
14087
|
-
if (rightExtendWidth<width2) rightExtendWidth=width2;
|
|
14088
|
-
|
|
14089
|
-
//JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[1][1]}/${item.Message[1][0]} ${textWidth}, ${rightExtendWidth}`);
|
|
14142
|
+
textWidth=this.GetMulitCoordinateItemTextWidth(item.Message[1]);
|
|
14090
14143
|
}
|
|
14091
14144
|
else if (this.MultiTextFormat==2) //显示2行
|
|
14092
14145
|
{
|
|
@@ -52907,7 +52960,7 @@ function FrameSplitMinutePriceY()
|
|
|
52907
52960
|
}
|
|
52908
52961
|
else if (this.RightTextFormat==2) //价格/百分比
|
|
52909
52962
|
{
|
|
52910
|
-
coordinate.Message[1]=[strPer
|
|
52963
|
+
coordinate.Message[1]=[ {Text:strPrice}, {Text:"/"}, { Text:strPer} ];
|
|
52911
52964
|
}
|
|
52912
52965
|
else
|
|
52913
52966
|
{
|
|
@@ -15637,7 +15637,7 @@ function AverageWidthFrame()
|
|
|
15637
15637
|
this.IsShowYLine=true;
|
|
15638
15638
|
this.YInsideOffset=0;
|
|
15639
15639
|
this.YTextBaseline=0; //0=居中 1=上部 (目前就支持内部刻度)
|
|
15640
|
-
this.MultiTextFormat=0; //多行刻度信息显示模式 0=显示第1行 1
|
|
15640
|
+
this.MultiTextFormat=0; //多行刻度信息显示模式 0=显示第1行 1=单行多个文本 2=显示2行
|
|
15641
15641
|
this.RightTextMaxWidth=0;
|
|
15642
15642
|
|
|
15643
15643
|
this.ShortYLineLength=5;
|
|
@@ -15972,6 +15972,7 @@ function AverageWidthFrame()
|
|
|
15972
15972
|
var pixelRatio=GetDevicePixelRatio();
|
|
15973
15973
|
var itemHeight=(border.BottomEx-border.TopEx)/this.HorizontalInfo.length;
|
|
15974
15974
|
var aryMultiText=[];
|
|
15975
|
+
var aryLeftMulitText=[];
|
|
15975
15976
|
var rtPreRight, rtRight, rtLeft, rtPreLeft;
|
|
15976
15977
|
var textBaseline=0; //0=上 1=中 2=下
|
|
15977
15978
|
for(var i=this.HorizontalInfo.length-1; i>=0; --i) //从上往下画分割线
|
|
@@ -16078,7 +16079,12 @@ function AverageWidthFrame()
|
|
|
16078
16079
|
|
|
16079
16080
|
if (Array.isArray(item.Message[0]))
|
|
16080
16081
|
{
|
|
16081
|
-
if (this.MultiTextFormat==
|
|
16082
|
+
if (this.MultiTextFormat==1) //显示1行 格式如:价格/百分比
|
|
16083
|
+
{
|
|
16084
|
+
var textData=this.CreateMulitCoordinateItem(item.Message[0], left-2, yText, this.Canvas.textBaseline, item);
|
|
16085
|
+
aryLeftMulitText.push(textData);
|
|
16086
|
+
}
|
|
16087
|
+
else if (this.MultiTextFormat==3)
|
|
16082
16088
|
{
|
|
16083
16089
|
var obj={ Data:item.Message[0], X:left, Y:yText, TextBaseLine:textBaseline, IsLeft:true, Item:item, TextPadding:this.YTextPadding[0] };
|
|
16084
16090
|
this.DrawMultiLineText(obj);
|
|
@@ -16164,25 +16170,9 @@ function AverageWidthFrame()
|
|
|
16164
16170
|
this.Canvas.textAlign="left";
|
|
16165
16171
|
if (Array.isArray(item.Message[1]))
|
|
16166
16172
|
{
|
|
16167
|
-
if (this.MultiTextFormat==1) //显示1行
|
|
16173
|
+
if (this.MultiTextFormat==1) //显示1行 格式如:价格/百分比
|
|
16168
16174
|
{
|
|
16169
|
-
|
|
16170
|
-
{
|
|
16171
|
-
if (item.ExtendData.Font) this.Canvas.font=item.ExtendData.Font;
|
|
16172
|
-
}
|
|
16173
|
-
|
|
16174
|
-
var textData=
|
|
16175
|
-
{
|
|
16176
|
-
Text:
|
|
16177
|
-
[
|
|
16178
|
-
{Text:item.Message[1][0], Width:this.Canvas.measureText(item.Message[1][0]).width },
|
|
16179
|
-
{Text:item.Message[1][1], Width:this.Canvas.measureText(item.Message[1][1]).width }
|
|
16180
|
-
],
|
|
16181
|
-
X:xText+2,
|
|
16182
|
-
Y:yText,
|
|
16183
|
-
TextBaseline:this.Canvas.textBaseline,
|
|
16184
|
-
Item:item
|
|
16185
|
-
}
|
|
16175
|
+
var textData=this.CreateMulitCoordinateItem(item.Message[1], xText+2, yText, this.Canvas.textBaseline, item);
|
|
16186
16176
|
aryMultiText.push(textData);
|
|
16187
16177
|
}
|
|
16188
16178
|
else if (this.MultiTextFormat==2) //显示2行
|
|
@@ -16239,7 +16229,9 @@ function AverageWidthFrame()
|
|
|
16239
16229
|
yPrev=y;
|
|
16240
16230
|
}
|
|
16241
16231
|
|
|
16242
|
-
if (IFrameSplitOperator.IsNonEmptyArray(
|
|
16232
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryLeftMulitText) && this.MultiTextFormat==1) this.DrawMultiCoordinateLeftText(aryLeftMulitText);
|
|
16233
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryMultiText) && this.MultiTextFormat==1) this.DrawMultiCoordinateRightText(aryMultiText);
|
|
16234
|
+
|
|
16243
16235
|
|
|
16244
16236
|
if (isDrawRight && this.IsDrawRightBorder && this.YRightTextInfo)
|
|
16245
16237
|
{
|
|
@@ -16268,6 +16260,41 @@ function AverageWidthFrame()
|
|
|
16268
16260
|
}
|
|
16269
16261
|
}
|
|
16270
16262
|
|
|
16263
|
+
this.CreateMulitCoordinateItem=function(aryData, x, y, textBaseline, data)
|
|
16264
|
+
{
|
|
16265
|
+
var coordinateItem=
|
|
16266
|
+
{
|
|
16267
|
+
AryText:[], X:x,Y:y, TextBaseline:textBaseline, Item:data
|
|
16268
|
+
};
|
|
16269
|
+
|
|
16270
|
+
for(var i=0;i<aryData.length;++i)
|
|
16271
|
+
{
|
|
16272
|
+
var item=aryData[i];
|
|
16273
|
+
if (item.Font) this.Canvas.font=item.Font;
|
|
16274
|
+
var textWidth=0;
|
|
16275
|
+
if (item.Text) textWidth=this.Canvas.measureText(item.Text).width;
|
|
16276
|
+
|
|
16277
|
+
coordinateItem.AryText.push({ Width:textWidth, Item:item });
|
|
16278
|
+
}
|
|
16279
|
+
|
|
16280
|
+
return coordinateItem;
|
|
16281
|
+
}
|
|
16282
|
+
|
|
16283
|
+
this.GetMulitCoordinateItemTextWidth=function(aryData)
|
|
16284
|
+
{
|
|
16285
|
+
var total=0;
|
|
16286
|
+
for(var i=0;i<aryData.length;++i)
|
|
16287
|
+
{
|
|
16288
|
+
var item=aryData[i];
|
|
16289
|
+
if (item.Font) this.Canvas.font=item.Font;
|
|
16290
|
+
var width=this.Canvas.measureText(item.Text).width;
|
|
16291
|
+
|
|
16292
|
+
total+=width;
|
|
16293
|
+
}
|
|
16294
|
+
|
|
16295
|
+
return total;
|
|
16296
|
+
}
|
|
16297
|
+
|
|
16271
16298
|
//多行文字刻度输出 obj={ Data:, X:, Y:, TextBaseLine:, IsLeft:, Item:刻度数据 }
|
|
16272
16299
|
this.DrawMultiLineText=function(obj)
|
|
16273
16300
|
{
|
|
@@ -16358,53 +16385,86 @@ function AverageWidthFrame()
|
|
|
16358
16385
|
return rtRight;
|
|
16359
16386
|
}
|
|
16360
16387
|
|
|
16361
|
-
|
|
16388
|
+
//绘制多重坐标刻度文字 左侧
|
|
16389
|
+
this.DrawMultiCoordinateLeftText=function(aryText)
|
|
16362
16390
|
{
|
|
16363
|
-
var
|
|
16364
|
-
for(var i=0;i<aryText.length;++i)
|
|
16391
|
+
var aryMaxWidth=[];
|
|
16392
|
+
for(var i=0, j=0;i<aryText.length;++i)
|
|
16365
16393
|
{
|
|
16366
16394
|
var item=aryText[i];
|
|
16367
|
-
var
|
|
16368
|
-
|
|
16369
|
-
|
|
16370
|
-
|
|
16371
|
-
|
|
16372
|
-
|
|
16373
|
-
else if (maxWidth[1]<width) maxWidth[1]=width;
|
|
16395
|
+
for(var j=0;j<item.AryText.length;++j)
|
|
16396
|
+
{
|
|
16397
|
+
var textItem=item.AryText[j];
|
|
16398
|
+
if (!IFrameSplitOperator.IsNumber(aryMaxWidth[j]) || aryMaxWidth[j]<textItem.Width) aryMaxWidth[j]=textItem.Width;
|
|
16399
|
+
}
|
|
16400
|
+
|
|
16374
16401
|
}
|
|
16375
16402
|
|
|
16403
|
+
this.Canvas.textAlign="right";
|
|
16376
16404
|
for(var i=0;i<aryText.length;++i)
|
|
16377
16405
|
{
|
|
16378
16406
|
var item=aryText[i];
|
|
16379
16407
|
var message=item.Item;
|
|
16380
|
-
|
|
16408
|
+
var x=item.X;
|
|
16381
16409
|
this.Canvas.textBaseline=item.TextBaseline;
|
|
16382
|
-
|
|
16383
|
-
|
|
16384
|
-
|
|
16385
|
-
|
|
16386
|
-
|
|
16410
|
+
for(var j=0;j<item.AryText.length;++j)
|
|
16411
|
+
{
|
|
16412
|
+
var textItem=item.AryText[j];
|
|
16413
|
+
var subText=textItem.Item;
|
|
16414
|
+
if (subText && subText.Text)
|
|
16415
|
+
{
|
|
16416
|
+
if (subText.Font) this.Canvas.font=subText.Font; //字体
|
|
16417
|
+
else if (message.Font) this.Canvas.font=message.Font;
|
|
16418
|
+
|
|
16419
|
+
if (subText.Color) this.Canvas.fillStyle=subText.Color; //颜色
|
|
16420
|
+
else this.Canvas.fillStyle=message.TextColor;
|
|
16387
16421
|
|
|
16388
|
-
|
|
16389
|
-
|
|
16390
|
-
this.Canvas.fillText(item.Text[1].Text,x,item.Y);
|
|
16422
|
+
this.Canvas.fillText(subText.Text,x,item.Y);
|
|
16423
|
+
}
|
|
16391
16424
|
|
|
16392
|
-
|
|
16393
|
-
|
|
16425
|
+
x-=aryMaxWidth[j];
|
|
16426
|
+
}
|
|
16427
|
+
}
|
|
16428
|
+
}
|
|
16394
16429
|
|
|
16395
|
-
|
|
16396
|
-
|
|
16397
|
-
|
|
16430
|
+
//绘制多重坐标刻度文字 右侧
|
|
16431
|
+
this.DrawMultiCoordinateRightText=function(aryText)
|
|
16432
|
+
{
|
|
16433
|
+
var aryMaxWidth=[];
|
|
16434
|
+
for(var i=0, j=0;i<aryText.length;++i)
|
|
16435
|
+
{
|
|
16436
|
+
var item=aryText[i];
|
|
16437
|
+
for(var j=0;j<item.AryText.length;++j)
|
|
16438
|
+
{
|
|
16439
|
+
var textItem=item.AryText[j];
|
|
16440
|
+
if (!IFrameSplitOperator.IsNumber(aryMaxWidth[j]) || aryMaxWidth[j]<textItem.Width) aryMaxWidth[j]=textItem.Width;
|
|
16441
|
+
}
|
|
16398
16442
|
|
|
16399
|
-
|
|
16400
|
-
else this.Canvas.fillStyle=message.TextColor;
|
|
16443
|
+
}
|
|
16401
16444
|
|
|
16402
|
-
|
|
16403
|
-
|
|
16404
|
-
|
|
16445
|
+
this.Canvas.textAlign="right";
|
|
16446
|
+
for(var i=0;i<aryText.length;++i)
|
|
16447
|
+
{
|
|
16448
|
+
var item=aryText[i];
|
|
16449
|
+
var message=item.Item;
|
|
16450
|
+
var x=item.X;
|
|
16451
|
+
this.Canvas.textBaseline=item.TextBaseline;
|
|
16452
|
+
for(var j=0;j<item.AryText.length;++j)
|
|
16453
|
+
{
|
|
16454
|
+
var textItem=item.AryText[j];
|
|
16455
|
+
var subText=textItem.Item;
|
|
16456
|
+
if (subText && subText.Text)
|
|
16457
|
+
{
|
|
16458
|
+
if (subText.Font) this.Canvas.font=subText.Font; //字体
|
|
16459
|
+
else if (message.Font) this.Canvas.font=message.Font;
|
|
16460
|
+
|
|
16461
|
+
if (subText.Color) this.Canvas.fillStyle=subText.Color; //颜色
|
|
16462
|
+
else this.Canvas.fillStyle=message.TextColor;
|
|
16405
16463
|
|
|
16406
|
-
|
|
16407
|
-
|
|
16464
|
+
x+=aryMaxWidth[j];
|
|
16465
|
+
this.Canvas.fillText(subText.Text,x,item.Y);
|
|
16466
|
+
}
|
|
16467
|
+
}
|
|
16408
16468
|
}
|
|
16409
16469
|
}
|
|
16410
16470
|
|
|
@@ -17982,7 +18042,8 @@ function AverageWidthFrame()
|
|
|
17982
18042
|
{
|
|
17983
18043
|
if (Array.isArray(item.Message[0]))
|
|
17984
18044
|
{
|
|
17985
|
-
textWidth=this.
|
|
18045
|
+
if (this.MultiTextFormat==1) textWidth=this.GetMulitCoordinateItemTextWidth(item.Message[0]);
|
|
18046
|
+
else textWidth=this.GetMulitTextMaxWidth(item.Message[0]);
|
|
17986
18047
|
}
|
|
17987
18048
|
else
|
|
17988
18049
|
{
|
|
@@ -18001,17 +18062,9 @@ function AverageWidthFrame()
|
|
|
18001
18062
|
|
|
18002
18063
|
if (Array.isArray(item.Message[1]))
|
|
18003
18064
|
{
|
|
18004
|
-
if (this.MultiTextFormat==1
|
|
18065
|
+
if (this.MultiTextFormat==1) //显示1行 格式:价格/百分比
|
|
18005
18066
|
{
|
|
18006
|
-
|
|
18007
|
-
|
|
18008
|
-
var width1=this.Canvas.measureText(item.Message[1][0]).width;
|
|
18009
|
-
var width2=this.Canvas.measureText(item.Message[1][1]).width;
|
|
18010
|
-
var width3=this.Canvas.measureText('/').width;
|
|
18011
|
-
textWidth=width1+width3;
|
|
18012
|
-
if (rightExtendWidth<width2) rightExtendWidth=width2;
|
|
18013
|
-
|
|
18014
|
-
//JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[1][1]}/${item.Message[1][0]} ${textWidth}, ${rightExtendWidth}`);
|
|
18067
|
+
textWidth=this.GetMulitCoordinateItemTextWidth(item.Message[1]);
|
|
18015
18068
|
}
|
|
18016
18069
|
else if (this.MultiTextFormat==2) //显示2行
|
|
18017
18070
|
{
|
|
@@ -56832,7 +56885,7 @@ function FrameSplitMinutePriceY()
|
|
|
56832
56885
|
}
|
|
56833
56886
|
else if (this.RightTextFormat==2) //价格/百分比
|
|
56834
56887
|
{
|
|
56835
|
-
coordinate.Message[1]=[strPer
|
|
56888
|
+
coordinate.Message[1]=[ {Text:strPrice}, {Text:"/"}, { Text:strPer} ];
|
|
56836
56889
|
}
|
|
56837
56890
|
else
|
|
56838
56891
|
{
|
|
@@ -127387,7 +127440,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
127387
127440
|
{
|
|
127388
127441
|
outVarItem.Data=this.FittingMinuteArray(item.data,date,time,hqChart);
|
|
127389
127442
|
if (item.color) outVarItem.Color=item.color;
|
|
127390
|
-
if (item.linewidth
|
|
127443
|
+
if (item.linewidth) outVarItem.LineWidth=item.linewidth;
|
|
127391
127444
|
if (item.isshow==false) outVarItem.IsShow = false;
|
|
127392
127445
|
if (item.isexdata==true) outVarItem.IsExData = true;
|
|
127393
127446
|
if (item.BreakPoint) outVarItem.BreakPoint=item.BreakPoint;
|
|
@@ -143351,7 +143404,7 @@ function ScrollBarBGChart()
|
|
|
143351
143404
|
|
|
143352
143405
|
|
|
143353
143406
|
|
|
143354
|
-
var HQCHART_VERSION="1.1.
|
|
143407
|
+
var HQCHART_VERSION="1.1.14410";
|
|
143355
143408
|
|
|
143356
143409
|
function PrintHQChartVersion()
|
|
143357
143410
|
{
|
|
@@ -15681,7 +15681,7 @@ function AverageWidthFrame()
|
|
|
15681
15681
|
this.IsShowYLine=true;
|
|
15682
15682
|
this.YInsideOffset=0;
|
|
15683
15683
|
this.YTextBaseline=0; //0=居中 1=上部 (目前就支持内部刻度)
|
|
15684
|
-
this.MultiTextFormat=0; //多行刻度信息显示模式 0=显示第1行 1
|
|
15684
|
+
this.MultiTextFormat=0; //多行刻度信息显示模式 0=显示第1行 1=单行多个文本 2=显示2行
|
|
15685
15685
|
this.RightTextMaxWidth=0;
|
|
15686
15686
|
|
|
15687
15687
|
this.ShortYLineLength=5;
|
|
@@ -16016,6 +16016,7 @@ function AverageWidthFrame()
|
|
|
16016
16016
|
var pixelRatio=GetDevicePixelRatio();
|
|
16017
16017
|
var itemHeight=(border.BottomEx-border.TopEx)/this.HorizontalInfo.length;
|
|
16018
16018
|
var aryMultiText=[];
|
|
16019
|
+
var aryLeftMulitText=[];
|
|
16019
16020
|
var rtPreRight, rtRight, rtLeft, rtPreLeft;
|
|
16020
16021
|
var textBaseline=0; //0=上 1=中 2=下
|
|
16021
16022
|
for(var i=this.HorizontalInfo.length-1; i>=0; --i) //从上往下画分割线
|
|
@@ -16122,7 +16123,12 @@ function AverageWidthFrame()
|
|
|
16122
16123
|
|
|
16123
16124
|
if (Array.isArray(item.Message[0]))
|
|
16124
16125
|
{
|
|
16125
|
-
if (this.MultiTextFormat==
|
|
16126
|
+
if (this.MultiTextFormat==1) //显示1行 格式如:价格/百分比
|
|
16127
|
+
{
|
|
16128
|
+
var textData=this.CreateMulitCoordinateItem(item.Message[0], left-2, yText, this.Canvas.textBaseline, item);
|
|
16129
|
+
aryLeftMulitText.push(textData);
|
|
16130
|
+
}
|
|
16131
|
+
else if (this.MultiTextFormat==3)
|
|
16126
16132
|
{
|
|
16127
16133
|
var obj={ Data:item.Message[0], X:left, Y:yText, TextBaseLine:textBaseline, IsLeft:true, Item:item, TextPadding:this.YTextPadding[0] };
|
|
16128
16134
|
this.DrawMultiLineText(obj);
|
|
@@ -16208,25 +16214,9 @@ function AverageWidthFrame()
|
|
|
16208
16214
|
this.Canvas.textAlign="left";
|
|
16209
16215
|
if (Array.isArray(item.Message[1]))
|
|
16210
16216
|
{
|
|
16211
|
-
if (this.MultiTextFormat==1) //显示1行
|
|
16217
|
+
if (this.MultiTextFormat==1) //显示1行 格式如:价格/百分比
|
|
16212
16218
|
{
|
|
16213
|
-
|
|
16214
|
-
{
|
|
16215
|
-
if (item.ExtendData.Font) this.Canvas.font=item.ExtendData.Font;
|
|
16216
|
-
}
|
|
16217
|
-
|
|
16218
|
-
var textData=
|
|
16219
|
-
{
|
|
16220
|
-
Text:
|
|
16221
|
-
[
|
|
16222
|
-
{Text:item.Message[1][0], Width:this.Canvas.measureText(item.Message[1][0]).width },
|
|
16223
|
-
{Text:item.Message[1][1], Width:this.Canvas.measureText(item.Message[1][1]).width }
|
|
16224
|
-
],
|
|
16225
|
-
X:xText+2,
|
|
16226
|
-
Y:yText,
|
|
16227
|
-
TextBaseline:this.Canvas.textBaseline,
|
|
16228
|
-
Item:item
|
|
16229
|
-
}
|
|
16219
|
+
var textData=this.CreateMulitCoordinateItem(item.Message[1], xText+2, yText, this.Canvas.textBaseline, item);
|
|
16230
16220
|
aryMultiText.push(textData);
|
|
16231
16221
|
}
|
|
16232
16222
|
else if (this.MultiTextFormat==2) //显示2行
|
|
@@ -16283,7 +16273,9 @@ function AverageWidthFrame()
|
|
|
16283
16273
|
yPrev=y;
|
|
16284
16274
|
}
|
|
16285
16275
|
|
|
16286
|
-
if (IFrameSplitOperator.IsNonEmptyArray(
|
|
16276
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryLeftMulitText) && this.MultiTextFormat==1) this.DrawMultiCoordinateLeftText(aryLeftMulitText);
|
|
16277
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryMultiText) && this.MultiTextFormat==1) this.DrawMultiCoordinateRightText(aryMultiText);
|
|
16278
|
+
|
|
16287
16279
|
|
|
16288
16280
|
if (isDrawRight && this.IsDrawRightBorder && this.YRightTextInfo)
|
|
16289
16281
|
{
|
|
@@ -16312,6 +16304,41 @@ function AverageWidthFrame()
|
|
|
16312
16304
|
}
|
|
16313
16305
|
}
|
|
16314
16306
|
|
|
16307
|
+
this.CreateMulitCoordinateItem=function(aryData, x, y, textBaseline, data)
|
|
16308
|
+
{
|
|
16309
|
+
var coordinateItem=
|
|
16310
|
+
{
|
|
16311
|
+
AryText:[], X:x,Y:y, TextBaseline:textBaseline, Item:data
|
|
16312
|
+
};
|
|
16313
|
+
|
|
16314
|
+
for(var i=0;i<aryData.length;++i)
|
|
16315
|
+
{
|
|
16316
|
+
var item=aryData[i];
|
|
16317
|
+
if (item.Font) this.Canvas.font=item.Font;
|
|
16318
|
+
var textWidth=0;
|
|
16319
|
+
if (item.Text) textWidth=this.Canvas.measureText(item.Text).width;
|
|
16320
|
+
|
|
16321
|
+
coordinateItem.AryText.push({ Width:textWidth, Item:item });
|
|
16322
|
+
}
|
|
16323
|
+
|
|
16324
|
+
return coordinateItem;
|
|
16325
|
+
}
|
|
16326
|
+
|
|
16327
|
+
this.GetMulitCoordinateItemTextWidth=function(aryData)
|
|
16328
|
+
{
|
|
16329
|
+
var total=0;
|
|
16330
|
+
for(var i=0;i<aryData.length;++i)
|
|
16331
|
+
{
|
|
16332
|
+
var item=aryData[i];
|
|
16333
|
+
if (item.Font) this.Canvas.font=item.Font;
|
|
16334
|
+
var width=this.Canvas.measureText(item.Text).width;
|
|
16335
|
+
|
|
16336
|
+
total+=width;
|
|
16337
|
+
}
|
|
16338
|
+
|
|
16339
|
+
return total;
|
|
16340
|
+
}
|
|
16341
|
+
|
|
16315
16342
|
//多行文字刻度输出 obj={ Data:, X:, Y:, TextBaseLine:, IsLeft:, Item:刻度数据 }
|
|
16316
16343
|
this.DrawMultiLineText=function(obj)
|
|
16317
16344
|
{
|
|
@@ -16402,53 +16429,86 @@ function AverageWidthFrame()
|
|
|
16402
16429
|
return rtRight;
|
|
16403
16430
|
}
|
|
16404
16431
|
|
|
16405
|
-
|
|
16432
|
+
//绘制多重坐标刻度文字 左侧
|
|
16433
|
+
this.DrawMultiCoordinateLeftText=function(aryText)
|
|
16406
16434
|
{
|
|
16407
|
-
var
|
|
16408
|
-
for(var i=0;i<aryText.length;++i)
|
|
16435
|
+
var aryMaxWidth=[];
|
|
16436
|
+
for(var i=0, j=0;i<aryText.length;++i)
|
|
16409
16437
|
{
|
|
16410
16438
|
var item=aryText[i];
|
|
16411
|
-
var
|
|
16412
|
-
|
|
16413
|
-
|
|
16414
|
-
|
|
16415
|
-
|
|
16416
|
-
|
|
16417
|
-
else if (maxWidth[1]<width) maxWidth[1]=width;
|
|
16439
|
+
for(var j=0;j<item.AryText.length;++j)
|
|
16440
|
+
{
|
|
16441
|
+
var textItem=item.AryText[j];
|
|
16442
|
+
if (!IFrameSplitOperator.IsNumber(aryMaxWidth[j]) || aryMaxWidth[j]<textItem.Width) aryMaxWidth[j]=textItem.Width;
|
|
16443
|
+
}
|
|
16444
|
+
|
|
16418
16445
|
}
|
|
16419
16446
|
|
|
16447
|
+
this.Canvas.textAlign="right";
|
|
16420
16448
|
for(var i=0;i<aryText.length;++i)
|
|
16421
16449
|
{
|
|
16422
16450
|
var item=aryText[i];
|
|
16423
16451
|
var message=item.Item;
|
|
16424
|
-
|
|
16452
|
+
var x=item.X;
|
|
16425
16453
|
this.Canvas.textBaseline=item.TextBaseline;
|
|
16426
|
-
|
|
16427
|
-
|
|
16428
|
-
|
|
16429
|
-
|
|
16430
|
-
|
|
16454
|
+
for(var j=0;j<item.AryText.length;++j)
|
|
16455
|
+
{
|
|
16456
|
+
var textItem=item.AryText[j];
|
|
16457
|
+
var subText=textItem.Item;
|
|
16458
|
+
if (subText && subText.Text)
|
|
16459
|
+
{
|
|
16460
|
+
if (subText.Font) this.Canvas.font=subText.Font; //字体
|
|
16461
|
+
else if (message.Font) this.Canvas.font=message.Font;
|
|
16462
|
+
|
|
16463
|
+
if (subText.Color) this.Canvas.fillStyle=subText.Color; //颜色
|
|
16464
|
+
else this.Canvas.fillStyle=message.TextColor;
|
|
16431
16465
|
|
|
16432
|
-
|
|
16433
|
-
|
|
16434
|
-
this.Canvas.fillText(item.Text[1].Text,x,item.Y);
|
|
16466
|
+
this.Canvas.fillText(subText.Text,x,item.Y);
|
|
16467
|
+
}
|
|
16435
16468
|
|
|
16436
|
-
|
|
16437
|
-
|
|
16469
|
+
x-=aryMaxWidth[j];
|
|
16470
|
+
}
|
|
16471
|
+
}
|
|
16472
|
+
}
|
|
16438
16473
|
|
|
16439
|
-
|
|
16440
|
-
|
|
16441
|
-
|
|
16474
|
+
//绘制多重坐标刻度文字 右侧
|
|
16475
|
+
this.DrawMultiCoordinateRightText=function(aryText)
|
|
16476
|
+
{
|
|
16477
|
+
var aryMaxWidth=[];
|
|
16478
|
+
for(var i=0, j=0;i<aryText.length;++i)
|
|
16479
|
+
{
|
|
16480
|
+
var item=aryText[i];
|
|
16481
|
+
for(var j=0;j<item.AryText.length;++j)
|
|
16482
|
+
{
|
|
16483
|
+
var textItem=item.AryText[j];
|
|
16484
|
+
if (!IFrameSplitOperator.IsNumber(aryMaxWidth[j]) || aryMaxWidth[j]<textItem.Width) aryMaxWidth[j]=textItem.Width;
|
|
16485
|
+
}
|
|
16442
16486
|
|
|
16443
|
-
|
|
16444
|
-
else this.Canvas.fillStyle=message.TextColor;
|
|
16487
|
+
}
|
|
16445
16488
|
|
|
16446
|
-
|
|
16447
|
-
|
|
16448
|
-
|
|
16489
|
+
this.Canvas.textAlign="right";
|
|
16490
|
+
for(var i=0;i<aryText.length;++i)
|
|
16491
|
+
{
|
|
16492
|
+
var item=aryText[i];
|
|
16493
|
+
var message=item.Item;
|
|
16494
|
+
var x=item.X;
|
|
16495
|
+
this.Canvas.textBaseline=item.TextBaseline;
|
|
16496
|
+
for(var j=0;j<item.AryText.length;++j)
|
|
16497
|
+
{
|
|
16498
|
+
var textItem=item.AryText[j];
|
|
16499
|
+
var subText=textItem.Item;
|
|
16500
|
+
if (subText && subText.Text)
|
|
16501
|
+
{
|
|
16502
|
+
if (subText.Font) this.Canvas.font=subText.Font; //字体
|
|
16503
|
+
else if (message.Font) this.Canvas.font=message.Font;
|
|
16504
|
+
|
|
16505
|
+
if (subText.Color) this.Canvas.fillStyle=subText.Color; //颜色
|
|
16506
|
+
else this.Canvas.fillStyle=message.TextColor;
|
|
16449
16507
|
|
|
16450
|
-
|
|
16451
|
-
|
|
16508
|
+
x+=aryMaxWidth[j];
|
|
16509
|
+
this.Canvas.fillText(subText.Text,x,item.Y);
|
|
16510
|
+
}
|
|
16511
|
+
}
|
|
16452
16512
|
}
|
|
16453
16513
|
}
|
|
16454
16514
|
|
|
@@ -18026,7 +18086,8 @@ function AverageWidthFrame()
|
|
|
18026
18086
|
{
|
|
18027
18087
|
if (Array.isArray(item.Message[0]))
|
|
18028
18088
|
{
|
|
18029
|
-
textWidth=this.
|
|
18089
|
+
if (this.MultiTextFormat==1) textWidth=this.GetMulitCoordinateItemTextWidth(item.Message[0]);
|
|
18090
|
+
else textWidth=this.GetMulitTextMaxWidth(item.Message[0]);
|
|
18030
18091
|
}
|
|
18031
18092
|
else
|
|
18032
18093
|
{
|
|
@@ -18045,17 +18106,9 @@ function AverageWidthFrame()
|
|
|
18045
18106
|
|
|
18046
18107
|
if (Array.isArray(item.Message[1]))
|
|
18047
18108
|
{
|
|
18048
|
-
if (this.MultiTextFormat==1
|
|
18109
|
+
if (this.MultiTextFormat==1) //显示1行 格式:价格/百分比
|
|
18049
18110
|
{
|
|
18050
|
-
|
|
18051
|
-
|
|
18052
|
-
var width1=this.Canvas.measureText(item.Message[1][0]).width;
|
|
18053
|
-
var width2=this.Canvas.measureText(item.Message[1][1]).width;
|
|
18054
|
-
var width3=this.Canvas.measureText('/').width;
|
|
18055
|
-
textWidth=width1+width3;
|
|
18056
|
-
if (rightExtendWidth<width2) rightExtendWidth=width2;
|
|
18057
|
-
|
|
18058
|
-
//JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[1][1]}/${item.Message[1][0]} ${textWidth}, ${rightExtendWidth}`);
|
|
18111
|
+
textWidth=this.GetMulitCoordinateItemTextWidth(item.Message[1]);
|
|
18059
18112
|
}
|
|
18060
18113
|
else if (this.MultiTextFormat==2) //显示2行
|
|
18061
18114
|
{
|
|
@@ -56876,7 +56929,7 @@ function FrameSplitMinutePriceY()
|
|
|
56876
56929
|
}
|
|
56877
56930
|
else if (this.RightTextFormat==2) //价格/百分比
|
|
56878
56931
|
{
|
|
56879
|
-
coordinate.Message[1]=[strPer
|
|
56932
|
+
coordinate.Message[1]=[ {Text:strPrice}, {Text:"/"}, { Text:strPer} ];
|
|
56880
56933
|
}
|
|
56881
56934
|
else
|
|
56882
56935
|
{
|
|
@@ -127431,7 +127484,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
127431
127484
|
{
|
|
127432
127485
|
outVarItem.Data=this.FittingMinuteArray(item.data,date,time,hqChart);
|
|
127433
127486
|
if (item.color) outVarItem.Color=item.color;
|
|
127434
|
-
if (item.linewidth
|
|
127487
|
+
if (item.linewidth) outVarItem.LineWidth=item.linewidth;
|
|
127435
127488
|
if (item.isshow==false) outVarItem.IsShow = false;
|
|
127436
127489
|
if (item.isexdata==true) outVarItem.IsExData = true;
|
|
127437
127490
|
if (item.BreakPoint) outVarItem.BreakPoint=item.BreakPoint;
|
|
@@ -153146,7 +153199,7 @@ function HQChartScriptWorker()
|
|
|
153146
153199
|
|
|
153147
153200
|
|
|
153148
153201
|
|
|
153149
|
-
var HQCHART_VERSION="1.1.
|
|
153202
|
+
var HQCHART_VERSION="1.1.14410";
|
|
153150
153203
|
|
|
153151
153204
|
function PrintHQChartVersion()
|
|
153152
153205
|
{
|