hqchart 1.1.14408 → 1.1.14416
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 +27 -22
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +1 -1
- package/src/jscommon/umychart.js +140 -86
- package/src/jscommon/umychart.style.js +3 -3
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +145 -91
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +145 -91
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行 3=多行输出(json格式)
|
|
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;//每天的分钟个数
|
|
@@ -5339,7 +5345,7 @@ this.DefaultSplitType=0;this.DefaultYMaxMin;//{ Max:null, Min:null }; //指
|
|
|
5339
5345
|
this.FixedYMaxMin;//{ Max, Min} 固定Y轴最大最小值
|
|
5340
5346
|
this.EnableZoomUpDown=false;//上下左右拖拽
|
|
5341
5347
|
this.LastMaxMin;//当前显示的最高最低范围
|
|
5342
|
-
this.PercentageTextFormat=0;//0=显示第1行 1=显示2行 2
|
|
5348
|
+
this.PercentageTextFormat=0;//0=显示第1行 1=单行格式: 价格/百分比, 2=显示2行 3=2行显示(json格式)
|
|
5343
5349
|
this.IsEnableDragY=function(){return this.CoordinateType==0||this.CoordinateType==1;};this.Operator=function(){var splitData={};splitData.Max=this.Frame.HorizontalMax;splitData.Min=this.Frame.HorizontalMin;splitData.Count=this.SplitCount;if(this.Frame.YMaxMin)//原始的数据范围
|
|
5344
5350
|
{var item=this.Frame.YMaxMin;if(IFrameSplitOperator.IsNumber(item.Max)&&IFrameSplitOperator.IsNumber(item.Min)){splitData.Max=item.Max;splitData.Min=item.Min;}}if(splitData.Max==splitData.Min)//如果一样上下扩大下
|
|
5345
5351
|
{splitData.Max+=splitData.Max*0.01;splitData.Min-=splitData.Min*0.01;}var isFixedMaxMin=this.FixedYMaxMin&&IFrameSplitOperator.IsNumber(this.FixedYMaxMin.Max)&&IFrameSplitOperator.IsNumber(this.FixedYMaxMin.Min);if(isFixedMaxMin){splitData.Max=this.FixedYMaxMin.Max;splitData.Min=this.FixedYMaxMin.Min;//JSConsole.Chart.Log(`[FrameSplitKLinePriceY::Operator] FixedYMaxMin.Max=${this.FixedYMaxMin.Max} FixedYMaxMin.Min=${this.FixedYMaxMin.Min} `);
|
|
@@ -5361,12 +5367,11 @@ if(this.SplitLogarithmic(splitData,defaultfloatPrecision)){bFilter=false;}else{t
|
|
|
5361
5367
|
*/this.ReservedHeight(splitData);//预留高度
|
|
5362
5368
|
JSConsole.Chart.Log('[FrameSplitKLinePriceY::Operator] fixed . Max='+splitData.Max+' Min='+splitData.Min+' Count='+splitData.Count);if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};event.Callback(event,data,this);}}};this.SplitTickData=function(splitData,floatPrecision){switch(this.CoordinateType){case 1://百分比
|
|
5363
5369
|
if(!this.SplitPercentage(splitData,floatPrecision,splitData.IsFixedMaxMin)){this.SplitDefault(splitData,floatPrecision,splitData.IsFixedMaxMin);}else{this.Frame.MultiTextFormat=this.PercentageTextFormat;splitData.IsFilter=false;}break;default:if(this.SplitType==3){this.SplitTickPrice(splitData,floatPrecision);}else{this.SplitDefault(splitData,floatPrecision,splitData.IsFixedMaxMin);}}};this.SplitTickPrice=function(splitData,floatPrecision){var aryPrice=this.KLineChart.GetAllPrice();this.Frame.HorizontalInfo=[];for(var i in aryPrice){var value=aryPrice[i];this.Frame.HorizontalInfo[i]=new CoordinateInfo();this.Frame.HorizontalInfo[i].Value=value;if(this.IsShowLeftText)this.Frame.HorizontalInfo[i].Message[0]=value.toFixed(floatPrecision);if(this.IsShowRightText)this.Frame.HorizontalInfo[i].Message[1]=value.toFixed(floatPrecision);}};this.SplitPercentage=function(splitData,floatPrecision,isFixedMaxMin)//百分比坐标
|
|
5364
|
-
{var firstOpenPrice=this.GetFirstOpenPrice();if(!IFrameSplitOperator.IsNumber(firstOpenPrice))return false;splitData.Max=(splitData.Max-firstOpenPrice)/firstOpenPrice;splitData.Min=(splitData.Min-firstOpenPrice)/firstOpenPrice;splitData.Interval=(splitData.Max-splitData.Min)/(splitData.Count-1);if(!isFixedMaxMin)this.IntegerCoordinateSplit2(splitData);var minValue=(1+splitData.Min)*firstOpenPrice;var maxValue=(1+splitData.Max)*firstOpenPrice;var textColor;if(g_JSChartResource.Frame&&g_JSChartResource.Frame.PercentageText){var item=g_JSChartResource.Frame.PercentageText;textColor={PriceColor:item.PriceColor,PercentageColor:item.PercentageColor,SplitColor:item.SplitColor,Font:item.Font};}var aryHorizontal=[];for(var value=0;value<=splitData.Max;value+=splitData.Interval){var price=(value+1)*firstOpenPrice;var item=new CoordinateInfo();item.Value=price;
|
|
5365
|
-
|
|
5366
|
-
|
|
5367
|
-
|
|
5368
|
-
|
|
5369
|
-
splitData.Max=maxValue;return true;};//等比坐标 当前屏最后第2根K线的收盘加为基准, 上下涨幅10%分割
|
|
5370
|
+
{var firstOpenPrice=this.GetFirstOpenPrice();if(!IFrameSplitOperator.IsNumber(firstOpenPrice))return false;splitData.Max=(splitData.Max-firstOpenPrice)/firstOpenPrice;splitData.Min=(splitData.Min-firstOpenPrice)/firstOpenPrice;splitData.Interval=(splitData.Max-splitData.Min)/(splitData.Count-1);if(!isFixedMaxMin)this.IntegerCoordinateSplit2(splitData);var minValue=(1+splitData.Min)*firstOpenPrice;var maxValue=(1+splitData.Max)*firstOpenPrice;var textColor;if(g_JSChartResource.Frame&&g_JSChartResource.Frame.PercentageText){var item=g_JSChartResource.Frame.PercentageText;textColor={PriceColor:item.PriceColor,PercentageColor:item.PercentageColor,SplitColor:item.SplitColor,Font:item.Font};}var aryHorizontal=[];for(var value=0;value<=splitData.Max;value+=splitData.Interval){var price=(value+1)*firstOpenPrice;var item=new CoordinateInfo();item.Value=price;this.FormatPercentageItem(item,value,floatPrecision,textColor);aryHorizontal.push(item);}for(var value=-splitData.Interval;value>=splitData.Min;value-=splitData.Interval){var price=(value+1)*firstOpenPrice;if(price<minValue||price>maxValue)continue;var item=new CoordinateInfo();item.Value=price;this.FormatPercentageItem(item,value,floatPrecision,textColor);aryHorizontal.push(item);}aryHorizontal.sort(function(left,right){return left.Value-right.Value;});this.Frame.HorizontalInfo=aryHorizontal;splitData.Min=minValue;//最大最小值调整
|
|
5371
|
+
splitData.Max=maxValue;return true;};this.FormatPercentageItem=function(item,percentage,floatPrecision,textColor){var price=item.Value;var strPrice=price.toFixed(floatPrecision);if(this.IsShowLeftText)item.Message[0]=strPrice;//左边价格坐标
|
|
5372
|
+
if(this.IsShowRightText)//右侧 价格/百分比
|
|
5373
|
+
{var strPrcentage=IFrameSplitOperator.RemoveZero(percentage.toFixed(2))+'%';//右边百分比
|
|
5374
|
+
if(this.PercentageTextFormat==1)item.Message[1]=[{Text:strPrice,Color:textColor.PriceColor},{Text:"/",Color:textColor.PercentageColor},{Text:strPrcentage,Color:textColor.SplitColor}];else if(this.PercentageTextFormat==3)item.Message[1]=[{Text:strPrice,Color:textColor.PriceColor},{Text:strPrcentage,Color:textColor.PercentageColor}];else if(this.PercentageTextFormat==2)item.Message[1]=[strPrcentage,strPrice];else item.Message[1]=strPrcentage;}};//等比坐标 当前屏最后第2根K线的收盘加为基准, 上下涨幅10%分割
|
|
5370
5375
|
this.SplitIncrease=function(splitData,floatPrecision){var basePrice=this.GetLast2ndClose();if(!IFrameSplitOperator.IsNumber(basePrice))return false;this.IntegerCoordinateSplit(splitData);this.Frame.HorizontalInfo=[];var increase=g_JSChartResource.FrameSplitIncrease.Increase;var aryHorizontal=[];for(var price=basePrice;price<splitData.Max;price=price*(1+increase)){var item=new CoordinateInfo();item.Value=price;var text=price.toFixed(floatPrecision);if(this.IsShowLeftText)item.Message[0]=text;if(this.IsShowRightText)item.Message[1]=text;aryHorizontal.push(item);}for(var price=basePrice*0.9;price>splitData.Min;price=price*(1-increase)){var item=new CoordinateInfo();item.Value=price;var text=price.toFixed(floatPrecision);if(this.IsShowLeftText)item.Message[0]=text;if(this.IsShowRightText)item.Message[1]=text;aryHorizontal.push(item);}this.Frame.HorizontalInfo=aryHorizontal;return true;};//等分坐标:以画面显示的最高价、最低价为基准,对这个区域N等分,显示分割的数值线
|
|
5371
5376
|
this.SplitAverage=function(splitData,floatPrecision){var max=splitData.Max;var min=splitData.Min;//this.IntegerCoordinateSplit(splitData);
|
|
5372
5377
|
this.Frame.HorizontalInfo=[];var count=g_JSChartResource.FrameSplitAverage.Count;var interval=(max-min)/count;for(var i=0;i<=count;++i){var item=new CoordinateInfo();item.Value=min+interval*i;var text=item.Value.toFixed(floatPrecision);if(this.IsShowLeftText)item.Message[0]=text;if(this.IsShowRightText)item.Message[1]=text;this.Frame.HorizontalInfo[i]=item;}};this.SplitGoldenSection=function(splitData,floatPrecision){var max=splitData.Max;var min=splitData.Min;//this.IntegerCoordinateSplit(splitData);
|
|
@@ -5497,7 +5502,7 @@ var width=this.Frame.ChartBorder.GetChartWidth();//画布的宽度
|
|
|
5497
5502
|
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
5503
|
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
5504
|
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
|
|
5505
|
+
{coordinate.Message[1]=[{Text:strPrice},{Text:"/"},{Text:strPer}];}else{coordinate.Message[1]=strPer;//百分比
|
|
5501
5506
|
}}if(Math.abs(price-this.YClose)<0.00000000001)//小数有精度问题 使用差值
|
|
5502
5507
|
{coordinate.LineType=2;//中间的线画虚线
|
|
5503
5508
|
coordinate.TextColor=g_JSChartResource.UnchagneTextColor;if(g_JSChartResource.FrameDotSplitPen)coordinate.LineColor=g_JSChartResource.FrameDotSplitPen;}}};}function FrameSplitMinuteX(){this.newMethod=IFrameSplitOperator;//派生
|
|
@@ -12012,7 +12017,7 @@ var result=[];if(ChartData.IsDayPeriod(hqChart.Period,true))//日线
|
|
|
12012
12017
|
var result=[];if(ChartData.IsDayPeriod(hqChart.Period,true))//日线
|
|
12013
12018
|
{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
12019
|
{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
|
|
12020
|
+
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
12021
|
{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
12022
|
{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
12023
|
{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
|
|
@@ -12162,7 +12167,7 @@ FrameTitleBGColor:"rgb(0,0,0)",//标题栏背景色
|
|
|
12162
12167
|
OverlayIndexTitleBGColor:'rgba(0,0,0,0.7)',//叠加指标背景色
|
|
12163
12168
|
Frame:{XBottomOffset:2*GetDevicePixelRatio(),//X轴文字向下偏移
|
|
12164
12169
|
PercentageText://百分比坐标文字颜色
|
|
12165
|
-
{PriceColor:'rgb(
|
|
12170
|
+
{PriceColor:'rgb(220,220,220)',PercentageColor:"rgb(220,220,220)",SplitColor:"rgb(220,220,220)",Font:14*GetDevicePixelRatio()+"px 微软雅黑"}},//叠加指标框架
|
|
12166
12171
|
OverlayFrame:{BolderPen:'rgb(130,130,130)',//指标边框线
|
|
12167
12172
|
TitleColor:'rgb(181,181,181)',//指标名字颜色
|
|
12168
12173
|
TitleFont:11*GetDevicePixelRatio()+'px arial'//指标名字字体
|
|
@@ -14322,7 +14327,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
14322
14327
|
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
14328
|
* 版本信息输出
|
|
14324
14329
|
*
|
|
14325
|
-
*/var HQCHART_VERSION="1.1.
|
|
14330
|
+
*/var HQCHART_VERSION="1.1.14415";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
14331
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
14327
14332
|
// BaseIndex:BaseIndex,
|
|
14328
14333
|
// 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行 3=多行输出(json格式)
|
|
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
|
{
|
|
@@ -50791,7 +50844,7 @@ function FrameSplitKLinePriceY()
|
|
|
50791
50844
|
this.EnableZoomUpDown=false; //上下左右拖拽
|
|
50792
50845
|
this.LastMaxMin; //当前显示的最高最低范围
|
|
50793
50846
|
|
|
50794
|
-
this.PercentageTextFormat=0; //0=显示第1行 1=显示2行 2
|
|
50847
|
+
this.PercentageTextFormat=0; //0=显示第1行 1=单行格式: 价格/百分比, 2=显示2行 3=2行显示(json格式)
|
|
50795
50848
|
|
|
50796
50849
|
this.IsEnableDragY=function()
|
|
50797
50850
|
{
|
|
@@ -51023,17 +51076,7 @@ function FrameSplitKLinePriceY()
|
|
|
51023
51076
|
var price=(value+1)*firstOpenPrice;
|
|
51024
51077
|
var item=new CoordinateInfo();
|
|
51025
51078
|
item.Value=price;
|
|
51026
|
-
|
|
51027
|
-
|
|
51028
|
-
if (this.IsShowRightText)
|
|
51029
|
-
{
|
|
51030
|
-
var strPrice=price.toFixed(floatPrecision);
|
|
51031
|
-
var text=(value*100).toFixed(2); //右边百分比
|
|
51032
|
-
text=IFrameSplitOperator.RemoveZero(text);
|
|
51033
|
-
text+='%';
|
|
51034
|
-
item.Message[1]=[text,strPrice];
|
|
51035
|
-
item.ExtendData=textColor;
|
|
51036
|
-
}
|
|
51079
|
+
this.FormatPercentageItem(item, value, floatPrecision,textColor);
|
|
51037
51080
|
aryHorizontal.push(item);
|
|
51038
51081
|
}
|
|
51039
51082
|
|
|
@@ -51044,16 +51087,7 @@ function FrameSplitKLinePriceY()
|
|
|
51044
51087
|
|
|
51045
51088
|
var item=new CoordinateInfo();
|
|
51046
51089
|
item.Value=price;
|
|
51047
|
-
|
|
51048
|
-
if (this.IsShowRightText)
|
|
51049
|
-
{
|
|
51050
|
-
var strPrice=price.toFixed(floatPrecision);
|
|
51051
|
-
var text=(value*100).toFixed(2); //右边百分比
|
|
51052
|
-
text=IFrameSplitOperator.RemoveZero(text);
|
|
51053
|
-
text+='%';
|
|
51054
|
-
item.Message[1]=[text,strPrice];
|
|
51055
|
-
item.ExtendData=textColor;
|
|
51056
|
-
}
|
|
51090
|
+
this.FormatPercentageItem(item, value, floatPrecision,textColor);
|
|
51057
51091
|
aryHorizontal.push(item);
|
|
51058
51092
|
}
|
|
51059
51093
|
|
|
@@ -51069,6 +51103,26 @@ function FrameSplitKLinePriceY()
|
|
|
51069
51103
|
return true;
|
|
51070
51104
|
}
|
|
51071
51105
|
|
|
51106
|
+
this.FormatPercentageItem=function(item, percentage, floatPrecision, textColor)
|
|
51107
|
+
{
|
|
51108
|
+
var price=item.Value;
|
|
51109
|
+
var strPrice=price.toFixed(floatPrecision);
|
|
51110
|
+
if (this.IsShowLeftText) item.Message[0]=strPrice; //左边价格坐标
|
|
51111
|
+
|
|
51112
|
+
if (this.IsShowRightText) //右侧 价格/百分比
|
|
51113
|
+
{
|
|
51114
|
+
var strPrcentage=`${IFrameSplitOperator.RemoveZero(percentage.toFixed(2))}%`; //右边百分比
|
|
51115
|
+
if (this.PercentageTextFormat==1)
|
|
51116
|
+
item.Message[1]=[{ Text:strPrice, Color:textColor.PriceColor }, {Text:"/", Color:textColor.PercentageColor}, {Text:strPrcentage, Color:textColor.SplitColor}];
|
|
51117
|
+
else if (this.PercentageTextFormat==3)
|
|
51118
|
+
item.Message[1]=[{ Text:strPrice, Color:textColor.PriceColor }, {Text:strPrcentage, Color:textColor.PercentageColor}];
|
|
51119
|
+
else if (this.PercentageTextFormat==2)
|
|
51120
|
+
item.Message[1]=[strPrcentage, strPrice];
|
|
51121
|
+
else
|
|
51122
|
+
item.Message[1]=strPrcentage;
|
|
51123
|
+
}
|
|
51124
|
+
}
|
|
51125
|
+
|
|
51072
51126
|
//等比坐标 当前屏最后第2根K线的收盘加为基准, 上下涨幅10%分割
|
|
51073
51127
|
this.SplitIncrease=function(splitData,floatPrecision)
|
|
51074
51128
|
{
|
|
@@ -52907,7 +52961,7 @@ function FrameSplitMinutePriceY()
|
|
|
52907
52961
|
}
|
|
52908
52962
|
else if (this.RightTextFormat==2) //价格/百分比
|
|
52909
52963
|
{
|
|
52910
|
-
coordinate.Message[1]=[strPer
|
|
52964
|
+
coordinate.Message[1]=[ {Text:strPrice}, {Text:"/"}, { Text:strPer} ];
|
|
52911
52965
|
}
|
|
52912
52966
|
else
|
|
52913
52967
|
{
|
|
@@ -151,9 +151,9 @@ function GetBlackStyle()
|
|
|
151
151
|
|
|
152
152
|
PercentageText: //百分比坐标文字颜色
|
|
153
153
|
{
|
|
154
|
-
PriceColor:'rgb(
|
|
155
|
-
PercentageColor:"rgb(
|
|
156
|
-
SplitColor:"rgb(
|
|
154
|
+
PriceColor:'rgb(220,220,220)',
|
|
155
|
+
PercentageColor:"rgb(220,220,220)",
|
|
156
|
+
SplitColor:"rgb(220,220,220)",
|
|
157
157
|
Font:14*GetDevicePixelRatio() +"px 微软雅黑"
|
|
158
158
|
}
|
|
159
159
|
},
|