hqchart 1.1.13395 → 1.1.13403
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/umychart.vue.js
CHANGED
|
@@ -3250,7 +3250,9 @@ UpColor:g_JSChartResource.OrderFlow_Style2.UpColor,DownColor:g_JSChartResource.O
|
|
|
3250
3250
|
UpColor:g_JSChartResource.OrderFlow_Style3.UpColor,DownColor:g_JSChartResource.OrderFlow_Style3.DownColor,UnchagneColor:g_JSChartResource.OrderFlow_Style3.UnchagneColor};this.OrderFlow_Style4={//柱子颜色
|
|
3251
3251
|
UpColor:g_JSChartResource.OrderFlow_Style4.UpColor,DownColor:g_JSChartResource.OrderFlow_Style4.DownColor,UnchagneColor:g_JSChartResource.OrderFlow_Style4.UnchagneColor,KBarType:1,//0=不显示K线柱子 1=左侧显示K线
|
|
3252
3252
|
VolBarSpace:g_JSChartResource.OrderFlow_Style4.VolBarSpace,//间距
|
|
3253
|
-
KBarWidth:g_JSChartResource.OrderFlow_Style4.KBarWidth,LeftMargin:g_JSChartResource.OrderFlow_Style4.LeftMargin,RightMargin:g_JSChartResource.OrderFlow_Style4.RightMargin};this.
|
|
3253
|
+
KBarWidth:g_JSChartResource.OrderFlow_Style4.KBarWidth,LeftMargin:g_JSChartResource.OrderFlow_Style4.LeftMargin,RightMargin:g_JSChartResource.OrderFlow_Style4.RightMargin};this.OrderFlow_Style5={AskBarColor:g_JSChartResource.OrderFlow_Style5.AskBarColor,//左
|
|
3254
|
+
BidBarColor:g_JSChartResource.OrderFlow_Style5.BidBarColor,//右
|
|
3255
|
+
LeftMargin:g_JSChartResource.OrderFlow_Style5.LeftMargin,RightMargin:g_JSChartResource.OrderFlow_Style5.RightMargin};this.IsShowOrderText=false;this.AryOrderFlowBorder=[];//订单流边框 临时变量
|
|
3254
3256
|
this.ChartHeatMap;//=new ChartHeatMap();
|
|
3255
3257
|
//未回补的价格缺口
|
|
3256
3258
|
this.PriceGap={Enable:false,Count:1};this.PriceGapStyple={Line:{Color:g_JSChartResource.PriceGapStyple.Line.Color},Text:{Color:g_JSChartResource.PriceGapStyple.Text.Color,Font:g_JSChartResource.PriceGapStyple.Text.Font}};this.AryPriceGapCache=[];//缺口数据 { }
|
|
@@ -3516,7 +3518,8 @@ var max=orderFlow.Summary.VolMaxMin.Max,min=orderFlow.Summary.VolMaxMin.Min;for(
|
|
|
3516
3518
|
{this.Canvas.strokeStyle=item.Vol.BorderColor;this.Canvas.strokeRect(ToFixedPoint(rtDraw.Left),ToFixedPoint(rtDraw.Top),rtDraw.Width,rtDraw.Height);}if(item.Vol.Text&&this.IsShowOrderText)//文字
|
|
3517
3519
|
{this.Canvas.fillStyle=item.Vol.Color;if(item.Vol.Font){var itemFont=this.GetDynamicOrderFlowFont(cellHeight,barWidth/2,item.Vol.Font);this.Canvas.font=itemFont;this.Canvas.fillText(text,xKLine.Center+textXOffset,yPrice);this.Canvas.font=textFont;}else{this.Canvas.fillText(item.Vol.Text,rtDraw.Left+2,yPrice);}}preItem={Price:item.Price,Rect:rtDraw};}else{continue;}}}};////////////////////////////////////////////////////////////////////////////////
|
|
3518
3520
|
//订单流样式5
|
|
3519
|
-
this.DrawOrderFlow_Style5=function(){}
|
|
3521
|
+
this.DrawOrderFlow_Style5=function(){var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;this.AryOrderFlowBorder=[];if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;chartright=border.BottomEx;}var upColor=this.OrderFlow_Style2.UpColor;var downColor=this.OrderFlow_Style2.DownColor;var unchagneColor=this.OrderFlow_Style2.UnchagneColor;var barWidth=ToFixedRect(this.OrderFlow_Style2.BarWidth);var textWidth=dataWidth-barWidth;if(textWidth/7<barWidth)barWidth=textWidth/7;if(barWidth<=1)barWidth=2;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;this.DrawOrderFlowHBar();//横向柱子
|
|
3522
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);var y=yHigh;this.DrawKRange.End=i;var barTop=Math.min(yOpen,yClose);var barBottom=Math.max(yOpen,yClose);var barLeft=ToFixedRect(left);var barRight=barLeft+barWidth;if(data.Open<data.Close)this.Canvas.fillStyle=upColor;else if(data.Open>data.Close)this.Canvas.fillStyle=downColor;else this.Canvas.fillStyle=unchagneColor;var cellHeight=0;if(data.OrderFlow&&IFrameSplitOperator.IsNumber(data.OrderFlow.PriceOffset))cellHeight=this.GetPriceYOffset(data.OrderFlow.PriceOffset);this.Canvas.fillRect(barLeft,ToFixedRect(barTop-cellHeight/2),barWidth,ToFixedRect(barBottom-barTop+cellHeight));var yKline={Low:yLow,High:yHigh,Open:yOpen,Close:yClose};var xKLine={Left:barRight,Center:x,Right:right,DataWidth:right-barRight};xKLine.Center=xKLine.Left+xKLine.DataWidth/2;this.DrawOrderFlowBar_Style5(data.OrderFlow,data,xKLine,yKline,isHScreen);}};this.DrawOrderFlowBar_Style5=function(orderFlow,kItem,xKLine,yKline,isHScreen){var top=Math.min(yKline.Open,yKline.Close);var bottom=Math.max(yKline.Open,yKline.Close);var barHeight=Math.abs(yKline.Open-yKline.Close);var cellHeight=0;if(orderFlow&&IFrameSplitOperator.IsNumber(orderFlow.PriceOffset))cellHeight=this.GetPriceYOffset(orderFlow.PriceOffset);var textFont=this.GetDynamicOrderFlowFont(cellHeight,xKLine.DataWidth/2);this.IsShowOrderText=cellHeight>5&&xKLine.DataWidth>10;if(this.OrderFlow.AlwaysShowOrderText)this.IsShowOrderText=true;this.Canvas.textBaseline='middle';this.Canvas.font=textFont;var textWidth=xKLine.DataWidth/2;if(orderFlow&&IFrameSplitOperator.IsNonEmptyArray(orderFlow.Order)){var maxValue=orderFlow.MaxValue;for(var i=0;i<orderFlow.Order.length;++i){var item=orderFlow.Order[i];var yPrice=this.GetYFromData(item.Price,false);var rect={Left:xKLine.Left,Right:xKLine.Center,Bottom:yPrice+cellHeight/2,Top:yPrice-cellHeight/2};rect.Width=rect.Right-rect.Left;rect.Height=rect.Bottom-rect.Top;if(IFrameSplitOperator.IsNumber(item.Ask.Value)){var color=this.OrderFlow_Style5.AskBarColor;if(item.Ask.BG)color=item.Ask.BG;this.Canvas.fillStyle=color;var barWidth=rect.Width*item.Ask.Value/maxValue;this.Canvas.fillRect(ToFixedRect(rect.Right),ToFixedRect(rect.Top),ToFixedRect(-barWidth),ToFixedRect(rect.Height));var text=null;if(IFrameSplitOperator.IsString(item.Ask.Text))text=item.Ask.Text;else text=item.Ask.Value.toString();if(text&&this.IsShowOrderText){var textColor=this.OrderFlow.Text.Color;if(item.Ask.Color)textColor=item.Ask.Color;this.Canvas.fillStyle=textColor;this.Canvas.textAlign='right';var xText=rect.Right-this.OrderFlow_Style5.LeftMargin;if(item.Ask.Font){var itemFont=this.GetDynamicOrderFlowFont(cellHeight,xKLine.DataWidth/2,item.Ask.Font);this.Canvas.font=itemFont;this.Canvas.fillText(text,xText,yPrice);this.Canvas.font=textFont;}else{this.Canvas.fillText(text,xText,yPrice);}}}var rect={Left:xKLine.Center,Right:xKLine.Right,Bottom:yPrice+cellHeight/2,Top:yPrice-cellHeight/2};rect.Width=rect.Right-rect.Left;rect.Height=rect.Bottom-rect.Top;if(IFrameSplitOperator.IsNumber(item.Bid.Value)){var color=this.OrderFlow_Style5.BidBarColor;if(item.Bid.BG)color=item.Bid.BG;this.Canvas.fillStyle=color;var barWidth=rect.Width*item.Bid.Value/maxValue;this.Canvas.fillRect(ToFixedRect(rect.Left),ToFixedRect(rect.Top),ToFixedRect(barWidth),ToFixedRect(rect.Height));var text=null;if(IFrameSplitOperator.IsString(item.Bid.Text))text=item.Bid.Text;else text=item.Bid.Value.toString();if(text&&this.IsShowOrderText){var textColor=this.OrderFlow.Text.Color;if(item.Bid.Color)textColor=item.Bid.Color;this.Canvas.fillStyle=textColor;this.Canvas.textAlign='left';var xText=rect.Left+this.OrderFlow_Style5.RightMargin;if(item.Bid.Font){var itemFont=this.GetDynamicOrderFlowFont(cellHeight,xKLine.DataWidth/2,item.Bid.Font);this.Canvas.font=itemFont;this.Canvas.fillText(text,xText,yPrice);this.Canvas.font=textFont;}else{this.Canvas.fillText(text,xText,yPrice);}}}}}};//////////////////////////////////////////////////////////////
|
|
3520
3523
|
// high low bar
|
|
3521
3524
|
//
|
|
3522
3525
|
///////////////////////////////////////////////////////////////
|
|
@@ -4058,10 +4061,10 @@ function ChartMultiText(){this.newMethod=IChartPainting;//派生
|
|
|
4058
4061
|
this.newMethod();delete this.newMethod;this.ClassName="ChartMultiText";this.Texts=[];//[ {Index:, Value:, Text:, Color:, Font: , Baseline:, Line:{ Color:, Dash:[虚线点], KData:"H/L", Offset:[5,10], Width:线粗细 }} ]
|
|
4059
4062
|
this.Font=g_JSChartResource.DefaultTextFont;this.Color=g_JSChartResource.DefaultTextColor;this.IsHScreen=false;//是否横屏
|
|
4060
4063
|
this.BuildKey=function(item){if(IFrameSplitOperator.IsNumber(item.Time)){var key=item.Date+'-'+item.Time;}else{var key=''+item.Date;}return key;};this.GetShowTextData=function(){var xPointCount=this.ChartFrame.XPointCount;var offset=this.Data.DataOffset;var mapText=new _map2.default();//key='date-time' value={ Data:[] }
|
|
4061
|
-
for(var i=0;i<this.Texts.length;++i){var item=this.Texts[i];if(!item.Text)continue;if(!IFrameSplitOperator.IsNumber(item.Index))continue;var index=item.Index-offset;if(index>=0&&index<xPointCount){var key=this.BuildKey(item);if(mapText.has(key)){var textItem=mapText.get(key);textItem.Data.push(item);}else{var textItem={Data:[item]};mapText.set(key,textItem);}}}return mapText;};this.DrawAllText=function(mapText){var bHScreen=this.ChartFrame.IsHScreen===true;var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(bHScreen){var border=this.ChartBorder.GetHScreenBorder();var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var left=this.ChartBorder.GetTop();var right=this.ChartBorder.GetBottom();}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();}for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];if(!kItem)continue;var key=this.BuildKey(kItem);if(!mapText.has(key))continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var textItem=mapText.get(key);for(var k=0;k<textItem.Data.length;++k){var item=textItem.Data[k];var y=top;if(item.Value=="TOP")y=top;else if(item.Value=="BOTTOM")y=bottom;else y=this.ChartFrame.GetYFromData(item.Value,false);if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.Color;if(item.Font)this.Canvas.font=item.Font;else this.Canvas.font=this.Font;var textWidth=this.Canvas.measureText(item.Text).width;this.Canvas.textAlign='center';if(x+textWidth/2>=right){this.Canvas.textAlign='right';x=right;}else if(x-textWidth/2<left){this.Canvas.textAlign='left';x=left;}if(item.Baseline==1)this.Canvas.textBaseline='top';else if(item.Baseline==2)this.Canvas.textBaseline='bottom';else this.Canvas.textBaseline='middle';if(this.IsHScreen){this.Canvas.save();this.Canvas.translate(y,x);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(item.Text,0,0);this.Canvas.restore();}else{if(IFrameSplitOperator.IsNumber(item.YMove))y+=item.YMove;this.Canvas.fillText(item.Text,x,y);}if(item.Line){var kItem=this.Data.Data[item.Index];var price=item.Line.KData=="H"?kItem.High:kItem.Low;var yPrice=this.ChartFrame.GetYFromData(price,false);var yText=y;if(Array.isArray(item.Line.Offset)&&item.Line.Offset.length==2){if(yText>yPrice)//文字在下方
|
|
4064
|
+
for(var i=0;i<this.Texts.length;++i){var item=this.Texts[i];if(!item.Text)continue;if(!IFrameSplitOperator.IsNumber(item.Index))continue;var index=item.Index-offset;if(index>=0&&index<xPointCount){var key=this.BuildKey(item);if(mapText.has(key)){var textItem=mapText.get(key);textItem.Data.push(item);}else{var textItem={Data:[item]};mapText.set(key,textItem);}}}return mapText;};this.DrawAllText=function(mapText){var bHScreen=this.ChartFrame.IsHScreen===true;var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(bHScreen){var border=this.ChartBorder.GetHScreenBorder();var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var left=this.ChartBorder.GetTop();var right=this.ChartBorder.GetBottom();var top=border.RightEx;var bottom=border.LeftEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var top=border.TopEx;var bottom=border.BottomEx;}for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];if(!kItem)continue;var key=this.BuildKey(kItem);if(!mapText.has(key))continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var textItem=mapText.get(key);for(var k=0;k<textItem.Data.length;++k){var item=textItem.Data[k];var y=top;if(item.Value=="TOP")y=top;else if(item.Value=="BOTTOM")y=bottom;else y=this.ChartFrame.GetYFromData(item.Value,false);if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.Color;if(item.Font)this.Canvas.font=item.Font;else this.Canvas.font=this.Font;var textWidth=this.Canvas.measureText(item.Text).width;this.Canvas.textAlign='center';if(x+textWidth/2>=right){this.Canvas.textAlign='right';x=right;}else if(x-textWidth/2<left){this.Canvas.textAlign='left';x=left;}if(item.Baseline==1)this.Canvas.textBaseline='top';else if(item.Baseline==2)this.Canvas.textBaseline='bottom';else this.Canvas.textBaseline='middle';if(this.IsHScreen){this.Canvas.save();this.Canvas.translate(y,x);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(item.Text,0,0);this.Canvas.restore();}else{if(IFrameSplitOperator.IsNumber(item.YMove))y+=item.YMove;this.Canvas.fillText(item.Text,x,y);}if(item.Line){var kItem=this.Data.Data[item.Index];var price=item.Line.KData=="H"?kItem.High:kItem.Low;var yPrice=this.ChartFrame.GetYFromData(price,false);var yText=y;if(Array.isArray(item.Line.Offset)&&item.Line.Offset.length==2){if(yText>yPrice)//文字在下方
|
|
4062
4065
|
{yText-=item.Line.Offset[1];yPrice+=item.Line.Offset[0];}else if(yText<yPrice){yText+=item.Line.Offset[1];yPrice-=item.Line.Offset[0];}}this.Canvas.save();if(item.Line.Dash)this.Canvas.setLineDash(item.Line.Dash);//虚线
|
|
4063
4066
|
if(item.Line.Width>0)this.Canvas.lineWidth=item.Line.Width;//线宽
|
|
4064
|
-
this.Canvas.strokeStyle=item.Line.Color;this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(yText,ToFixedPoint(x));this.Canvas.lineTo(yPrice,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yText);this.Canvas.lineTo(ToFixedPoint(x),yPrice);}this.Canvas.stroke();this.Canvas.restore();}}}};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!this.Data||this.Data.length<=0)return;if(!this.Texts)return;this.IsHScreen=this.ChartFrame.IsHScreen===true;var mapText=this.GetShowTextData();if(mapText.size<=0)return;this.Canvas.save();this.ClipClient(this.IsHScreen);this.DrawAllText(mapText);this.Canvas.restore();};this.GetMaxMin=function(){var range={Min:null,Max:null};if(!this.Texts)return range;var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;var end=start+xPointCount;for(var i in this.Texts){var item=this.Texts[i];if(item.Index>=start&&item.Index<end){if(range.Max==null)range.Max=item.Value;else if(range.Max<item.Value)range.Max=item.Value;if(range.Min==null)range.Min=item.Value;else if(range.Min>item.Value)range.Min=item.Value;}}return range;};}// 图标集合 支持横屏
|
|
4067
|
+
this.Canvas.strokeStyle=item.Line.Color;this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(yText,ToFixedPoint(x));this.Canvas.lineTo(yPrice,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yText);this.Canvas.lineTo(ToFixedPoint(x),yPrice);}this.Canvas.stroke();this.Canvas.restore();}}}};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!this.Data||this.Data.length<=0)return;if(!this.Texts)return;this.IsHScreen=this.ChartFrame.IsHScreen===true;var mapText=this.GetShowTextData();if(mapText.size<=0)return;this.Canvas.save();this.ClipClient(this.IsHScreen);this.DrawAllText(mapText);this.Canvas.restore();};this.GetMaxMin=function(){var range={Min:null,Max:null};if(!this.Texts)return range;var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;var end=start+xPointCount;for(var i in this.Texts){var item=this.Texts[i];if(!IFrameSplitOperator.IsNumber(item.Value))continue;if(item.Index>=start&&item.Index<end){if(range.Max==null)range.Max=item.Value;else if(range.Max<item.Value)range.Max=item.Value;if(range.Min==null)range.Min=item.Value;else if(range.Min>item.Value)range.Min=item.Value;}}return range;};}// 图标集合 支持横屏
|
|
4065
4068
|
function ChartMultiSVGIcon(){this.newMethod=IChartPainting;//派生
|
|
4066
4069
|
this.newMethod();delete this.newMethod;this.ClassName="ChartMultiSVGIcon";this.Icon;//[ {Index:, Value:, Symbol:, Color:, Baseline:, Line:{ Color:, Dash:[虚线点], KData:"H/L", Offset:[5,10], Width:线粗细 } } ]
|
|
4067
4070
|
this.IconSize={Max:g_JSChartResource.DRAWICON.Icon.MaxSize,Min:g_JSChartResource.DRAWICON.Icon.MinSize,//图标的最大最小值
|
|
@@ -5872,14 +5875,15 @@ this.LineWidth=1;this.Precision=2;//小数位数
|
|
|
5872
5875
|
this.ValueTextColor='rgb(250,250,250)';this.IsShowCorssCursor=true;//画的时候是否显示十字光标
|
|
5873
5876
|
this.GetLabelCallback;//绘制标题回调函数
|
|
5874
5877
|
this.PointCount=1;this.ClassName='ChartDrawHLine';this.Font=14*GetDevicePixelRatio()+"px 微软雅黑";this.TextFont=12*GetDevicePixelRatio()+"px 微软雅黑";this.RightSpaceWidth=50;this.ButtonPosition=0;//按钮位置, 0=价格后面, 1=价格上面 2=价格上面 左对齐 3=垂直排列
|
|
5875
|
-
this.ButtonBGColor='rgb(190,190,190)';this.ButtonSpace=3;this.TextMargin={Left:0,Right:0};this.
|
|
5878
|
+
this.ButtonBGColor='rgb(190,190,190)';this.ButtonSpace=3;this.TextMargin={Left:0,Right:0};this.AlwaysShowLab=false;//总是显示标签
|
|
5879
|
+
this.Button={CloseIcon:{Text:'\uE62B',Color:'rgb(255,255,255)',Family:"iconfont",Size:16,ID:JSCHART_BUTTON_ID.DRAW_PICTURE_DELETE,TooltipText:null,Margin:{Left:2,Right:2}},SettingIcon:{Text:'\uE623',Color:'rgb(255,255,255)',Family:"iconfont",Size:16,ID:JSCHART_BUTTON_ID.DRAW_PICTURE_SETTING,TooltipText:null,Margin:{Left:2,Right:2}//修改ID, Text , TooltipText 可以外部定制按钮
|
|
5876
5880
|
}};this.CustomButton=[];//自定义的按钮 { Text:'\ue62b', Color:'rgb(255,255,255)', Family:"iconfont", Size:16, ID:JSCHART_BUTTON_ID.DRAW_PICTURE_BUTTON_1, TooltipText:null, Data:null }
|
|
5877
5881
|
this.AryShowButton=[];//需要显示的按钮 { Data:, Width }
|
|
5878
5882
|
this.AryButton=[];this.ExtendData;//扩展数据
|
|
5879
5883
|
this.ShowPriceTextConfig={IsShow:[false,false,true],//[0]=left内 [1]=right内 [2]=right外
|
|
5880
5884
|
Font:[12*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1',12*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1']};//内部变量
|
|
5881
5885
|
this.ColseButtonSize=0;this.SettingButtonSize=0;this.ButtonBGWidth=0;this.VerticalButtonInfo={Width:0,Height:0};//垂直按钮信息
|
|
5882
|
-
this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(option);if(option){if(option.GetLabelCallback){this.GetLabelCallback=option.GetLabelCallback;}if(IFrameSplitOperator.IsNumber(option.Precision))this.Precision=option.Precision;if(option.Font)this.Font=option.Font;if(option.ValueTextColor)this.ValueTextColor=option.ValueTextColor;if(option.ButtonBGColor)this.ButtonBGColor=option.ButtonBGColor;if(IFrameSplitOperator.IsNumber(option.ButtonPosition))this.ButtonPosition=option.ButtonPosition;if(IFrameSplitOperator.IsNumber(option.RightSpaceWidth))this.RightSpaceWidth=option.RightSpaceWidth;if(option.Button){var item=option.Button;if(item.CloseIcon){this.Button.CloseIcon=CloneData(item.CloseIcon);if(!this.Button.CloseIcon.ID)this.Button.CloseIcon.ID=JSCHART_BUTTON_ID.DRAW_PICTURE_DELETE;}else if(item.CloseIcon===null){this.Button.CloseIcon=null;}if(item.SettingIcon){this.Button.SettingIcon=CloneData(item.SettingIcon);if(!this.Button.SettingIcon.ID)this.Button.SettingIcon.ID=JSCHART_BUTTON_ID.DRAW_PICTURE_SETTING;}else if(item.SettingIcon===null){this.Button.SettingIcon=null;}}if(option.ExtendData)this.ExtendData=option.ExtendData;if(IFrameSplitOperator.IsNonEmptyArray(option.IsShowPriceText)){for(var i=0;i<option.IsShowPriceText.length&&i<3;++i){var value=option.IsShowPriceText[i];if(IFrameSplitOperator.IsBool(value))this.ShowPriceTextConfig.IsShow[i]=value;}}if(option.TextMargin){var item=option.TextMargin;if(IFrameSplitOperator.IsNumber(item.Left))this.TextMargin.Left=item.Left;if(IFrameSplitOperator.IsNumber(item.Right))this.TextMargin.Right=item.Right;}}};this.ExportStorageData=function(){var storageData;if(this.Super_ExportStorageData){storageData=this.Super_ExportStorageData();if(this.Label)storageData.Label=this.Label;}return storageData;};this.IsPointIn=this.IsPointIn_XYValue_Line;/*
|
|
5886
|
+
this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(option);if(option){if(option.GetLabelCallback){this.GetLabelCallback=option.GetLabelCallback;}if(IFrameSplitOperator.IsNumber(option.Precision))this.Precision=option.Precision;if(option.Font)this.Font=option.Font;if(option.ValueTextColor)this.ValueTextColor=option.ValueTextColor;if(option.ButtonBGColor)this.ButtonBGColor=option.ButtonBGColor;if(IFrameSplitOperator.IsNumber(option.ButtonPosition))this.ButtonPosition=option.ButtonPosition;if(IFrameSplitOperator.IsNumber(option.RightSpaceWidth))this.RightSpaceWidth=option.RightSpaceWidth;if(IFrameSplitOperator.IsBool(option.AlwaysShowLab))this.AlwaysShowLab=option.AlwaysShowLab;if(option.Button){var item=option.Button;if(item.CloseIcon){this.Button.CloseIcon=CloneData(item.CloseIcon);if(!this.Button.CloseIcon.ID)this.Button.CloseIcon.ID=JSCHART_BUTTON_ID.DRAW_PICTURE_DELETE;}else if(item.CloseIcon===null){this.Button.CloseIcon=null;}if(item.SettingIcon){this.Button.SettingIcon=CloneData(item.SettingIcon);if(!this.Button.SettingIcon.ID)this.Button.SettingIcon.ID=JSCHART_BUTTON_ID.DRAW_PICTURE_SETTING;}else if(item.SettingIcon===null){this.Button.SettingIcon=null;}}if(option.ExtendData)this.ExtendData=option.ExtendData;if(IFrameSplitOperator.IsNonEmptyArray(option.IsShowPriceText)){for(var i=0;i<option.IsShowPriceText.length&&i<3;++i){var value=option.IsShowPriceText[i];if(IFrameSplitOperator.IsBool(value))this.ShowPriceTextConfig.IsShow[i]=value;}}if(option.TextMargin){var item=option.TextMargin;if(IFrameSplitOperator.IsNumber(item.Left))this.TextMargin.Left=item.Left;if(IFrameSplitOperator.IsNumber(item.Right))this.TextMargin.Right=item.Right;}}};this.ExportStorageData=function(){var storageData;if(this.Super_ExportStorageData){storageData=this.Super_ExportStorageData();if(this.Label)storageData.Label=this.Label;}return storageData;};this.IsPointIn=this.IsPointIn_XYValue_Line;/*
|
|
5883
5887
|
this.GetXYCoordinate=function()
|
|
5884
5888
|
{
|
|
5885
5889
|
if (this.IsFrameMinSize()) return null;
|
|
@@ -5889,18 +5893,20 @@ this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(opt
|
|
|
5889
5893
|
}
|
|
5890
5894
|
*/this.IsDrawMain=function()//选中绘制在动态绘图上, 没有选中绘制在背景上
|
|
5891
5895
|
{if(!this.GetActiveDrawPicture)return true;var active=this.GetActiveDrawPicture();if(active.Select.Guid==this.Guid)return false;return true;};this.MainDraw=function(){this.Draw();};//获取需要显示的按钮 系统按钮+自定义按钮
|
|
5892
|
-
this.GetShowButton=function(){var aryButton=[];var item=this.Button.SettingIcon;if(item&&item.Text)aryButton.push({Data:item,Width:null});item=this.Button.CloseIcon;if(item&&item.Text)aryButton.push({Data:item,Width:null});if(IFrameSplitOperator.IsNonEmptyArray(this.CustomButton)){for(var i=0;i<this.CustomButton.length;++i){item=this.CustomButton[i];if(item&&item.Text)aryButton.push({Data:item,Width:null});}}return aryButton;};this.Draw=function(moveonPoint,mouseStatus){this.AryShowButton=[];this.LinePoint=[];this.AryButton=[];this.ColseButtonSize=0;this.SettingButtonSize=0;this.ButtonBGWidth=0;this.VerticalButtonInfo.Width=0;this.VerticalButtonInfo.Height=0;if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint||drawPoint.length!=1)return;if(!this.Frame)return;if(this.Value.length!=1)return;
|
|
5893
|
-
this.
|
|
5894
|
-
|
|
5895
|
-
|
|
5896
|
-
|
|
5897
|
-
|
|
5898
|
-
if(
|
|
5896
|
+
this.GetShowButton=function(){var aryButton=[];var item=this.Button.SettingIcon;if(item&&item.Text)aryButton.push({Data:item,Width:null});item=this.Button.CloseIcon;if(item&&item.Text)aryButton.push({Data:item,Width:null});if(IFrameSplitOperator.IsNonEmptyArray(this.CustomButton)){for(var i=0;i<this.CustomButton.length;++i){item=this.CustomButton[i];if(item&&item.Text)aryButton.push({Data:item,Width:null});}}return aryButton;};this.Draw=function(moveonPoint,mouseStatus){this.AryShowButton=[];this.LinePoint=[];this.AryButton=[];this.ColseButtonSize=0;this.SettingButtonSize=0;this.ButtonBGWidth=0;this.VerticalButtonInfo.Width=0;this.VerticalButtonInfo.Height=0;if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint||drawPoint.length!=1)return;if(!this.Frame)return;if(this.Value.length!=1)return;var bVisibleRange=this.IsYValueInFrame(this.Value[0].YValue);//是否在可视范围
|
|
5897
|
+
if(!this.AlwaysShowLab&&!bVisibleRange)return;var isHScreen=this.Frame.IsHScreen;var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();if(isHScreen){left=this.Frame.ChartBorder.GetTop();right=this.Frame.ChartBorder.GetBottom();}this.ClipFrame();//画线段
|
|
5898
|
+
if(bVisibleRange){this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(drawPoint[0].X,left);this.Canvas.lineTo(drawPoint[0].X,right);}else{this.Canvas.moveTo(left,ToFixedPoint(drawPoint[0].Y));this.Canvas.lineTo(right,ToFixedPoint(drawPoint[0].Y));}this.Canvas.stroke();this.RestoreLineWidth();}//画水平线段
|
|
5899
|
+
var line={Start:new Point(),End:new Point()};if(isHScreen){line.Start.X=drawPoint[0].X;line.Start.Y=left;line.End.X=drawPoint[0].X;line.End.Y=right;}else{line.Start.X=left;line.Start.Y=drawPoint[0].Y;line.End.X=right;line.End.Y=drawPoint[0].Y;}this.LinePoint.push(line);if(bVisibleRange){var yValue=this.Frame.GetYData(drawPoint[0].Y,false);var strPrice=yValue.toFixed(this.Precision);if(this.ShowPriceTextConfig.IsShow[0]){this.DrawPriceText(strPrice,line.Start,line.End,0);}if(this.ShowPriceTextConfig.IsShow[1]){this.DrawPriceText(strPrice,line.Start,line.End,1);}}var labInfo;if(this.GetLabelCallback)labInfo=this.GetLabelCallback(this);this.AryShowButton=this.GetShowButton();//获取按钮
|
|
5900
|
+
//框架内的描述信息
|
|
5901
|
+
if(labInfo&&bVisibleRange)this.DrawLab(labInfo,drawPoint[0].Y);//画中心点
|
|
5902
|
+
if(bVisibleRange){var xCenter=left+(right-left)/2;var point={X:xCenter,Y:drawPoint[0].Y};this.DrawPoint([point]);}this.Canvas.restore();//外部右侧显示价格
|
|
5903
|
+
if(this.ShowPriceTextConfig.IsShow[2]){var rtDraw={};this.CalculateButtonSize();this.DrawValueText(drawPoint[0].Y,rtDraw,labInfo);if(labInfo)this.DrawRightLab(labInfo,rtDraw);if(labInfo&&bVisibleRange)this.DrawCustomHLine(labInfo,drawPoint[0].Y);}//鼠标是否在按钮上
|
|
5899
5904
|
if(moveonPoint&&mouseStatus){for(var i=0;i<this.AryButton.length;++i){var item=this.AryButton[i];var rtButton=item.Rect;if(moveonPoint.X>=rtButton.Left&&moveonPoint.X<rtButton.Right&&moveonPoint.Y>=rtButton.Top&&moveonPoint.Y<=rtButton.Bottom){mouseStatus.MouseOnToolbar={Rect:rtButton,Item:item,Frame:this.Frame,Point:{X:moveonPoint.X,Y:moveonPoint.Y}};break;}}}};this.CalculateLabSize=function(labInfo){this.Canvas.textAlign="left";this.Canvas.textBaseline="top";this.Canvas.font=this.TextFont;var lineHeight=this.Canvas.measureText("擎").width+2;var maxNameWidth=0,maxTextWidth=0;var lineCount=0;var lineSpace=0;if(IFrameSplitOperator.IsNumber(labInfo.LineSpace))lineSpace=labInfo.LineSpace;var maxNameWidth=0,maxTextWidth=0;var lineCount=0;var maxWidth=0;for(var i=0;i<labInfo.AryText.length;++i){var item=labInfo.AryText[i];item.NameWidth=0;item.TextWidth=0;if(item.Name)item.NameWidth=this.Canvas.measureText(item.Name).width+2;if(item.Text)item.TextWidth=this.Canvas.measureText(item.Text).width+2;if(maxNameWidth<item.NameWidth)maxNameWidth=item.NameWidth;if(maxTextWidth<item.TextWidth)maxTextWidth=item.TextWidth;var itemWidth=item.NameWidth+item.TextWidth;if(maxWidth<itemWidth)maxWidth=itemWidth;++lineCount;}var size={Width:maxWidth,Height:lineCount*(lineHeight+lineSpace)+lineSpace,NameWidth:maxNameWidth,TextWidth:maxTextWidth,LineHeight:lineHeight};return size;};this.DrawLab=function(labInfo,y){if(!labInfo)return;if(!IFrameSplitOperator.IsNonEmptyArray(labInfo.AryText))return;if(labInfo.Position===2)return;var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();var labSize=this.CalculateLabSize(labInfo);var drawLeft=right-labSize.Width;var drawTop=y-labSize.Height-1;//背景色
|
|
5900
5905
|
if(labInfo.BGColor){this.Canvas.fillStyle=labInfo.BGColor;var rtTop=y-labSize.Height-4;this.Canvas.fillRect(ToFixedRect(drawLeft),ToFixedRect(rtTop),ToFixedRect(right+drawLeft),ToFixedRect(y-rtTop));}var yText=drawTop;for(var i=0;i<labInfo.AryText.length;++i){var item=labInfo.AryText[i];if(item.Name){this.Canvas.fillStyle=item.NameColor;this.Canvas.fillText(item.Name,drawLeft+1,yText+1);}if(item.Text){this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(item.Text,drawLeft+labSize.NameWidth+1,yText+1);}yText+=labSize.LineHeight;}};this.DrawRightLab=function(labInfo,rtLeftDraw){if(!labInfo)return;if(!IFrameSplitOperator.IsNonEmptyArray(labInfo.AryText))return;if(labInfo.Position!=2)return;var labSize=this.CalculateLabSize(labInfo);var drawLeft=rtLeftDraw.Right-labSize.Width;if(drawLeft<rtLeftDraw.Left)drawLeft=rtLeftDraw.Left;var drawRight=drawLeft+labSize.Width;var drawTop=rtLeftDraw.Bottom;var lineSpace=0;if(IFrameSplitOperator.IsNumber(labInfo.LineSpace))lineSpace=labInfo.LineSpace;//背景色
|
|
5901
5906
|
var rtLab={Left:drawLeft,Top:drawTop,Width:labSize.Width,Height:labSize.Height};rtLab.Right=rtLab.Left+rtLab.Width;rtLab.Bottom=rtLab.Top+rtLab.Height;if(labInfo.BGColor){this.Canvas.fillStyle=labInfo.BGColor;this.Canvas.fillRect(ToFixedRect(rtLab.Left),ToFixedRect(rtLab.Top),ToFixedRect(rtLab.Width),ToFixedRect(rtLab.Height));}var yText=drawTop+1+lineSpace;this.Canvas.textBaseline="top";for(var i=0;i<labInfo.AryText.length;++i){var item=labInfo.AryText[i];if(item.Name){this.Canvas.textAlign="left";this.Canvas.fillStyle=item.NameColor;this.Canvas.fillText(item.Name,drawLeft+1,yText+1);}if(item.Text){this.Canvas.textAlign="right";this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(item.Text,drawRight-1,yText+1);}yText+=labSize.LineHeight+lineSpace;}this.DrawVerticalButton(rtLab);};this.DrawCustomHLine=function(labInfo,yLine){if(!labInfo)return;if(!IFrameSplitOperator.IsNonEmptyArray(labInfo.AryLine))return;var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();var pixelRatio=GetDevicePixelRatio();var yMax=yLine,yMin=yLine;for(var i=0;i<labInfo.AryLine.length;++i){var item=labInfo.AryLine[i];if(!IFrameSplitOperator.IsNumber(item.Value))continue;if(item.Width<0)continue;var y=this.Frame.GetYFromData(item.Value);var yFixed=ToFixedPoint(y);var xRight=right;if(IFrameSplitOperator.IsPlusNumber(item.Width)){if(item.Width<1)xRight=left+item.Width*(right-left);//0.3 百分比
|
|
5902
5907
|
else xRight=left+item.Width*pixelRatio;//>1 实际数值就是长度
|
|
5903
|
-
}if(item.Color)this.Canvas.strokeStyle=item.Color;else this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(left,yFixed);this.Canvas.lineTo(xRight,yFixed);this.Canvas.stroke();if(yMax<yFixed)yMax=yFixed;if(yMin>yFixed)yMin=yFixed;}if(yMax!=yMin&&labInfo.VLine){var item=labInfo.VLine;var x=left+20*pixelRatio;if(IFrameSplitOperator.IsNumber(item.XOffset))x=left+item.XOffset*pixelRatio;x=ToFixedPoint(x);if(item.Color)this.Canvas.strokeStyle=item.Color;else this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(x,yMax);this.Canvas.lineTo(x,yMin);this.Canvas.stroke();}};this.DrawValueText=function(y,rtDraw,labInfo){var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();
|
|
5908
|
+
}if(item.Color)this.Canvas.strokeStyle=item.Color;else this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(left,yFixed);this.Canvas.lineTo(xRight,yFixed);this.Canvas.stroke();if(yMax<yFixed)yMax=yFixed;if(yMin>yFixed)yMin=yFixed;}if(yMax!=yMin&&labInfo.VLine){var item=labInfo.VLine;var x=left+20*pixelRatio;if(IFrameSplitOperator.IsNumber(item.XOffset))x=left+item.XOffset*pixelRatio;x=ToFixedPoint(x);if(item.Color)this.Canvas.strokeStyle=item.Color;else this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(x,yMax);this.Canvas.lineTo(x,yMin);this.Canvas.stroke();}};this.DrawValueText=function(y,rtDraw,labInfo){var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();var top=this.Frame.ChartBorder.GetTopEx();var bottom=this.Frame.ChartBorder.GetBottomEx();var pixelTatio=GetDevicePixelRatio();if(IFrameSplitOperator.IsNumber(labInfo.TopOffset))top-=labInfo.TopOffset;if(IFrameSplitOperator.IsNumber(labInfo.BottomOffset))bottom+=labInfo.BottomOffset;var yValue=this.Frame.GetYData(y,false);var strValue=yValue.toFixed(this.Precision);if(labInfo&&labInfo.PriceSuffixText)strValue+=labInfo.PriceSuffixText;var bVisibleRange=true;if(y<top){y=top;bVisibleRange=false;}else if(y>bottom){y=bottom;bVisibleRange=false;}if(this.RightSpaceWidth>0){if(!bVisibleRange)this.Canvas.setLineDash([2*pixelTatio,3*pixelTatio]);//虚线
|
|
5909
|
+
this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(right,ToFixedPoint(y));this.Canvas.lineTo(right+this.RightSpaceWidth,ToFixedPoint(y));this.Canvas.stroke();if(!bVisibleRange)this.Canvas.setLineDash([]);}this.Canvas.fillStyle=this.LineColor;this.Canvas.font=this.Font;var textWidth=this.Canvas.measureText(strValue).width;var lineHeight=this.GetFontHeight();var rtBG={Left:right+this.RightSpaceWidth,Top:y-lineHeight/2,Width:textWidth+4,Height:lineHeight};//rtBG.Right=rtBG.Left+rtBG.Width;
|
|
5904
5910
|
rtBG.Bottom=rtBG.Top+rtBG.Height;rtBG.Width+=this.TextMargin.Left+this.TextMargin.Right;rtBG.Right=rtBG.Left+rtBG.Width;var xText=rtBG.Left+this.TextMargin.Left+2;if(this.ButtonPosition==1){this.Canvas.fillRect(ToFixedRect(rtBG.Left),ToFixedRect(rtBG.Top),ToFixedRect(rtBG.Width+this.ButtonBGWidth),ToFixedRect(rtBG.Height));}else{this.Canvas.fillRect(ToFixedRect(rtBG.Left),ToFixedRect(rtBG.Top),ToFixedRect(rtBG.Width),ToFixedRect(rtBG.Height));}this.Canvas.fillStyle=this.ValueTextColor;this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.fillText(strValue,xText,y);rtDraw.Left=rtBG.Left;rtDraw.Top=rtBG.Top;rtDraw.Bottom=rtBG.Bottom;rtDraw.Right=rtBG.Right;this.DrawButton(rtBG.Top,rtBG.Right,lineHeight,rtDraw);};this.DrawPriceText=function(text,ptStart,ptEnd,position){if(position!=1&&position!=0)return;var font=this.ShowPriceTextConfig.Font[position];this.Canvas.fillStyle=this.LineColor;this.Canvas.font=font;var textWidth=this.Canvas.measureText(text).width;var lineHeight=this.GetFontHeight();var rtBG=null;if(position==1){var rtBG={Left:ptStart.X,Top:ptStart.Y-lineHeight/2,Width:textWidth+4,Height:lineHeight};rtBG.Right=rtBG.Left+rtBG.Width;rtBG.Bottom=rtBG.Top+rtBG.Height;}else if(position==0){var rtBG={Right:ptEnd.X,Top:ptEnd.Y-lineHeight/2,Width:textWidth+4,Height:lineHeight};rtBG.Left=rtBG.Right-rtBG.Width;rtBG.Bottom=rtBG.Top+rtBG.Height;}this.Canvas.fillRect(ToFixedRect(rtBG.Left),ToFixedRect(rtBG.Top),ToFixedRect(rtBG.Width+this.ButtonBGWidth),ToFixedRect(rtBG.Height));this.Canvas.fillStyle=this.ValueTextColor;this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.fillText(text,rtBG.Left+2,ptStart.Y);};this.CalculateButtonSize=function(){var pixelRatio=GetDevicePixelRatio();if(!IFrameSplitOperator.IsNonEmptyArray(this.AryShowButton))return;var totalWidth=0;for(var i=0;i<this.AryShowButton.length;++i){var item=this.AryShowButton[i];var icon=item.Data;var font=icon.Size*pixelRatio+'px '+icon.Family;this.Canvas.font=font;item.Width=this.Canvas.measureText(icon.Text).width+2;item.Height=item.Width;if(icon.Margin){var margin=icon.Margin;if(IFrameSplitOperator.IsNumber(margin.Left))item.Width+=margin.Left;if(IFrameSplitOperator.IsNumber(margin.Right))item.Width+=margin.Right;if(IFrameSplitOperator.IsNumber(margin.Top))item.Height+=margin.Top;if(IFrameSplitOperator.IsNumber(margin.Bottom))item.Height+=margin.Bottom;}if(this.VerticalButtonInfo.Width<item.Width)this.VerticalButtonInfo.Width=item.Width;this.VerticalButtonInfo.Height+=item.Height;totalWidth+=item.Width;}this.ButtonBGWidth=totalWidth;};//垂直排列按钮
|
|
5905
5911
|
this.DrawVerticalButton=function(rtLab){if(this.ButtonPosition!=3)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryShowButton))return;if(this.VerticalButtonInfo.Height<=0)return;var rtBG={Left:rtLab.Right,Top:rtLab.Top,Width:this.VerticalButtonInfo.Width,Height:this.VerticalButtonInfo.Height};rtBG.Right=rtBG.Left+rtBG.Width;rtBG.Bottom=rtBG.Top+rtBG.Height;this.Canvas.fillStyle=this.ButtonBGColor;this.Canvas.fillRect(ToFixedRect(rtBG.Left),ToFixedRect(rtBG.Top),ToFixedRect(rtBG.Width),ToFixedRect(rtBG.Height));var pixelRatio=GetDevicePixelRatio();var yTop=rtLab.Top;for(var i=0;i<this.AryShowButton.length;++i){var item=this.AryShowButton[i];var icon=item.Data;var rtButton={Left:rtBG.Left,Top:yTop,Width:this.VerticalButtonInfo.Width,Height:item.Height};rtButton.Right=rtButton.Left+rtButton.Width;rtButton.Bottom=rtButton.Top+rtButton.Height;var yCenter=rtButton.Top+rtButton.Height/2;var xCenter=rtButton.Left+rtButton.Width/2;var font=icon.Size*pixelRatio+'px '+icon.Family;this.Canvas.font=font;this.Canvas.textAlign="center";this.Canvas.textBaseline="middle";this.Canvas.fillStyle=icon.Color;this.Canvas.fillText(icon.Text,xCenter,yCenter);this.AryButton.push({Rect:rtButton,ID:icon.ID,TooltipText:icon.TooltipText,Data:icon.Data});yTop=rtButton.Bottom;}};this.DrawButton=function(drawTop,drawLeft,drawHeight,rtDraw){if(!IFrameSplitOperator.IsNonEmptyArray(this.AryShowButton))return;if(this.ButtonPosition==3)return;//垂直按钮在DrawVerticalButton()调用
|
|
5906
5912
|
if(this.ButtonPosition==1){drawTop-=drawHeight;var chartWidth=this.Frame.ChartBorder.GetChartWidth();var chartLeft=this.Frame.ChartBorder.GetRight()+this.RightSpaceWidth;if(drawLeft+this.ButtonBGWidth>chartWidth)//右边不够了 往左移动
|
|
@@ -6474,7 +6480,9 @@ UnchagneColor:{BG:"rgb(216,221,177)",Border:"rgb(209,172,129)"},//平盘
|
|
|
6474
6480
|
Text:{Color:"rgb(92,96,89)",Family:'Arial',FontMaxSize:18,MaxValue:"8888"},//文字(风格 2,3共用)
|
|
6475
6481
|
Line:{UpDownColor:"rgb(0,0,0)",MiddleColor:"rgb(211,211,211)"},//最大, 最低,中间 竖线
|
|
6476
6482
|
AlwaysShowOrderText:true,//总是显示订单流文字
|
|
6477
|
-
POCGBColor:"rgba(178,34,34,0.8)",AskBarColor:'rgb(14,209,69)',BidBarColor:'rgb(236,28,36)'};this.OrderFlow_Style2={BarWidth:10,UpColor:'rgb(241,55,63)',DownColor:"rgb(75,105,150)",UnchagneColor:"rgb(79,79,79)"};this.OrderFlow_Style3={BarWidth:20,UpColor:'rgb(241,55,63)',DownColor:"rgb(75,105,150)",UnchagneColor:"rgb(79,79,79)"};this.OrderFlow_Style4={KBarWidth:5,UpColor:'rgb(241,55,63)',DownColor:"rgb(75,105,150)",UnchagneColor:"rgb(79,79,79)",VolBarSpace:1,LeftMargin:1,RightMargin:1};this.
|
|
6483
|
+
POCGBColor:"rgba(178,34,34,0.8)",AskBarColor:'rgb(14,209,69)',BidBarColor:'rgb(236,28,36)'};this.OrderFlow_Style2={BarWidth:10,UpColor:'rgb(241,55,63)',DownColor:"rgb(75,105,150)",UnchagneColor:"rgb(79,79,79)"};this.OrderFlow_Style3={BarWidth:20,UpColor:'rgb(241,55,63)',DownColor:"rgb(75,105,150)",UnchagneColor:"rgb(79,79,79)"};this.OrderFlow_Style4={KBarWidth:5,UpColor:'rgb(241,55,63)',DownColor:"rgb(75,105,150)",UnchagneColor:"rgb(79,79,79)",VolBarSpace:1,LeftMargin:1,RightMargin:1};this.OrderFlow_Style5={AskBarColor:"rgb(176,22,22)",//左
|
|
6484
|
+
BidBarColor:"rgb(98,126,176)",//右
|
|
6485
|
+
LeftMargin:3,RightMargin:2};this.Index={};//指标线段颜色
|
|
6478
6486
|
this.Index.LineColor=["rgb(255,174,0)","rgb(25,199,255)","rgb(175,95,162)","rgb(236,105,65)","rgb(68,114,196)","rgb(229,0,79)","rgb(0,128,255)","rgb(252,96,154)","rgb(42,230,215)","rgb(24,71,178)"];this.OverlaySymbol={Random:0};//Random 颜色的随机数
|
|
6479
6487
|
this.OverlaySymbol.Color=//叠加股票颜色
|
|
6480
6488
|
["rgb(38,198,218)","rgb(103,58,183)","rgb(0,191,165)","rgb(130,177,255)"];//历史数据api
|
|
@@ -13152,7 +13160,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
13152
13160
|
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);};}/********************************************************************************
|
|
13153
13161
|
* 版本信息输出
|
|
13154
13162
|
*
|
|
13155
|
-
*/var HQCHART_VERSION="1.1.
|
|
13163
|
+
*/var HQCHART_VERSION="1.1.13402";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();//把给外界调用的方法暴露出来
|
|
13156
13164
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
13157
13165
|
// BaseIndex:BaseIndex,
|
|
13158
13166
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -23612,6 +23612,14 @@ function ChartKLine()
|
|
|
23612
23612
|
RightMargin:g_JSChartResource.OrderFlow_Style4.RightMargin,
|
|
23613
23613
|
}
|
|
23614
23614
|
|
|
23615
|
+
this.OrderFlow_Style5=
|
|
23616
|
+
{
|
|
23617
|
+
AskBarColor:g_JSChartResource.OrderFlow_Style5.AskBarColor, //左
|
|
23618
|
+
BidBarColor:g_JSChartResource.OrderFlow_Style5.BidBarColor, //右
|
|
23619
|
+
LeftMargin:g_JSChartResource.OrderFlow_Style5.LeftMargin,
|
|
23620
|
+
RightMargin:g_JSChartResource.OrderFlow_Style5.RightMargin,
|
|
23621
|
+
}
|
|
23622
|
+
|
|
23615
23623
|
this.IsShowOrderText=false;
|
|
23616
23624
|
|
|
23617
23625
|
this.AryOrderFlowBorder=[]; //订单流边框 临时变量
|
|
@@ -27790,7 +27798,175 @@ function ChartKLine()
|
|
|
27790
27798
|
//订单流样式5
|
|
27791
27799
|
this.DrawOrderFlow_Style5=function()
|
|
27792
27800
|
{
|
|
27801
|
+
var isHScreen=(this.ChartFrame.IsHScreen===true);
|
|
27802
|
+
var dataWidth=this.ChartFrame.DataWidth;
|
|
27803
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
27804
|
+
var border=this.ChartBorder.GetBorder();
|
|
27805
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
27806
|
+
var chartright=border.RightEx;
|
|
27807
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
27808
|
+
this.AryOrderFlowBorder=[];
|
|
27809
|
+
|
|
27810
|
+
if (isHScreen)
|
|
27811
|
+
{
|
|
27812
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
27813
|
+
xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
27814
|
+
chartright=border.BottomEx;
|
|
27815
|
+
}
|
|
27816
|
+
|
|
27817
|
+
var upColor=this.OrderFlow_Style2.UpColor;
|
|
27818
|
+
var downColor=this.OrderFlow_Style2.DownColor;
|
|
27819
|
+
var unchagneColor=this.OrderFlow_Style2.UnchagneColor;
|
|
27820
|
+
var barWidth=ToFixedRect(this.OrderFlow_Style2.BarWidth);
|
|
27821
|
+
var textWidth=dataWidth-barWidth;
|
|
27822
|
+
if (textWidth/7<barWidth) barWidth=textWidth/7;
|
|
27823
|
+
if (barWidth<=1) barWidth=2;
|
|
27824
|
+
|
|
27825
|
+
this.ShowRange.Start=this.Data.DataOffset;
|
|
27826
|
+
this.ShowRange.End=this.ShowRange.Start;
|
|
27827
|
+
this.ShowRange.DataCount=0;
|
|
27828
|
+
this.ShowRange.ShowCount=xPointCount;
|
|
27829
|
+
this.DrawKRange.Start=this.Data.DataOffset;
|
|
27830
|
+
|
|
27831
|
+
this.DrawOrderFlowHBar(); //横向柱子
|
|
27832
|
+
|
|
27833
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth),++this.ShowRange.DataCount)
|
|
27834
|
+
{
|
|
27835
|
+
var data=this.Data.Data[i];
|
|
27836
|
+
this.ShowRange.End=i;
|
|
27837
|
+
if (data.Open==null || data.High==null || data.Low==null || data.Close==null) continue;
|
|
27838
|
+
|
|
27839
|
+
var left=xOffset;
|
|
27840
|
+
var right=xOffset+dataWidth;
|
|
27841
|
+
if (right>chartright) break;
|
|
27842
|
+
var x=left+(right-left)/2;
|
|
27843
|
+
var yLow=this.GetYFromData(data.Low, false);
|
|
27844
|
+
var yHigh=this.GetYFromData(data.High, false);
|
|
27845
|
+
var yOpen=this.GetYFromData(data.Open, false);
|
|
27846
|
+
var yClose=this.GetYFromData(data.Close, false);
|
|
27847
|
+
var y=yHigh;
|
|
27848
|
+
|
|
27849
|
+
this.DrawKRange.End=i;
|
|
27850
|
+
|
|
27851
|
+
var barTop=Math.min(yOpen,yClose);
|
|
27852
|
+
var barBottom=Math.max(yOpen,yClose);
|
|
27853
|
+
var barLeft=ToFixedRect(left);
|
|
27854
|
+
var barRight=barLeft+barWidth
|
|
27855
|
+
if (data.Open<data.Close) this.Canvas.fillStyle=upColor;
|
|
27856
|
+
else if (data.Open>data.Close) this.Canvas.fillStyle=downColor;
|
|
27857
|
+
else this.Canvas.fillStyle=unchagneColor;
|
|
27858
|
+
|
|
27859
|
+
var cellHeight=0;
|
|
27860
|
+
if (data.OrderFlow && IFrameSplitOperator.IsNumber(data.OrderFlow.PriceOffset)) cellHeight=this.GetPriceYOffset(data.OrderFlow.PriceOffset);
|
|
27861
|
+
|
|
27862
|
+
this.Canvas.fillRect(barLeft,ToFixedRect(barTop-cellHeight/2),barWidth,ToFixedRect(barBottom-barTop+cellHeight));
|
|
27863
|
+
var yKline={ Low:yLow, High:yHigh, Open:yOpen, Close:yClose };
|
|
27864
|
+
var xKLine={ Left:barRight, Center:x, Right:right, DataWidth:(right-barRight) };
|
|
27865
|
+
xKLine.Center=xKLine.Left+xKLine.DataWidth/2;
|
|
27866
|
+
this.DrawOrderFlowBar_Style5(data.OrderFlow, data, xKLine, yKline, isHScreen);
|
|
27867
|
+
}
|
|
27868
|
+
}
|
|
27869
|
+
|
|
27870
|
+
this.DrawOrderFlowBar_Style5=function(orderFlow, kItem, xKLine, yKline, isHScreen)
|
|
27871
|
+
{
|
|
27872
|
+
var top=Math.min(yKline.Open, yKline.Close)
|
|
27873
|
+
var bottom=Math.max(yKline.Open, yKline.Close);
|
|
27874
|
+
var barHeight=Math.abs(yKline.Open-yKline.Close);
|
|
27875
|
+
var cellHeight=0;
|
|
27876
|
+
if (orderFlow && IFrameSplitOperator.IsNumber(orderFlow.PriceOffset)) cellHeight=this.GetPriceYOffset(orderFlow.PriceOffset);
|
|
27877
|
+
var textFont=this.GetDynamicOrderFlowFont(cellHeight, xKLine.DataWidth/2);
|
|
27878
|
+
this.IsShowOrderText=(cellHeight>5 && xKLine.DataWidth>10);
|
|
27879
|
+
if (this.OrderFlow.AlwaysShowOrderText) this.IsShowOrderText=true;
|
|
27880
|
+
|
|
27881
|
+
this.Canvas.textBaseline='middle';
|
|
27882
|
+
|
|
27883
|
+
this.Canvas.font=textFont;
|
|
27884
|
+
var textWidth=xKLine.DataWidth/2;
|
|
27885
|
+
if (orderFlow && IFrameSplitOperator.IsNonEmptyArray(orderFlow.Order))
|
|
27886
|
+
{
|
|
27887
|
+
var maxValue=orderFlow.MaxValue;
|
|
27888
|
+
for(var i=0;i<orderFlow.Order.length;++i)
|
|
27889
|
+
{
|
|
27890
|
+
var item=orderFlow.Order[i];
|
|
27891
|
+
var yPrice=this.GetYFromData(item.Price, false);
|
|
27892
|
+
|
|
27893
|
+
var rect={ Left:xKLine.Left, Right:xKLine.Center, Bottom:yPrice+cellHeight/2, Top:yPrice-cellHeight/2 };
|
|
27894
|
+
rect.Width=rect.Right-rect.Left;
|
|
27895
|
+
rect.Height=rect.Bottom-rect.Top;
|
|
27896
|
+
|
|
27897
|
+
if (IFrameSplitOperator.IsNumber(item.Ask.Value))
|
|
27898
|
+
{
|
|
27899
|
+
var color=this.OrderFlow_Style5.AskBarColor;
|
|
27900
|
+
if (item.Ask.BG) color=item.Ask.BG;
|
|
27901
|
+
this.Canvas.fillStyle=color;
|
|
27902
|
+
var barWidth=rect.Width*item.Ask.Value/maxValue;
|
|
27903
|
+
this.Canvas.fillRect(ToFixedRect(rect.Right),ToFixedRect(rect.Top),ToFixedRect(-barWidth),ToFixedRect(rect.Height));
|
|
27904
|
+
|
|
27905
|
+
var text=null;
|
|
27906
|
+
if (IFrameSplitOperator.IsString(item.Ask.Text)) text=item.Ask.Text;
|
|
27907
|
+
else text=item.Ask.Value.toString();
|
|
27908
|
+
if (text && this.IsShowOrderText)
|
|
27909
|
+
{
|
|
27910
|
+
var textColor=this.OrderFlow.Text.Color;
|
|
27911
|
+
if (item.Ask.Color) textColor=item.Ask.Color;
|
|
27793
27912
|
|
|
27913
|
+
this.Canvas.fillStyle=textColor;
|
|
27914
|
+
this.Canvas.textAlign='right';
|
|
27915
|
+
var xText=rect.Right-this.OrderFlow_Style5.LeftMargin;
|
|
27916
|
+
if (item.Ask.Font)
|
|
27917
|
+
{
|
|
27918
|
+
var itemFont=this.GetDynamicOrderFlowFont(cellHeight, xKLine.DataWidth/2, item.Ask.Font);
|
|
27919
|
+
this.Canvas.font=itemFont;
|
|
27920
|
+
this.Canvas.fillText(text,xText,yPrice);
|
|
27921
|
+
this.Canvas.font=textFont;
|
|
27922
|
+
}
|
|
27923
|
+
else
|
|
27924
|
+
{
|
|
27925
|
+
this.Canvas.fillText(text,xText,yPrice);
|
|
27926
|
+
}
|
|
27927
|
+
}
|
|
27928
|
+
}
|
|
27929
|
+
|
|
27930
|
+
|
|
27931
|
+
var rect={ Left:xKLine.Center, Right:xKLine.Right, Bottom:yPrice+cellHeight/2, Top:yPrice-cellHeight/2 };
|
|
27932
|
+
rect.Width=rect.Right-rect.Left;
|
|
27933
|
+
rect.Height=rect.Bottom-rect.Top;
|
|
27934
|
+
|
|
27935
|
+
if (IFrameSplitOperator.IsNumber(item.Bid.Value))
|
|
27936
|
+
{
|
|
27937
|
+
var color=this.OrderFlow_Style5.BidBarColor;
|
|
27938
|
+
if (item.Bid.BG) color=item.Bid.BG;
|
|
27939
|
+
this.Canvas.fillStyle=color;
|
|
27940
|
+
var barWidth=rect.Width*item.Bid.Value/maxValue;
|
|
27941
|
+
this.Canvas.fillRect(ToFixedRect(rect.Left),ToFixedRect(rect.Top),ToFixedRect(barWidth),ToFixedRect(rect.Height));
|
|
27942
|
+
|
|
27943
|
+
var text=null;
|
|
27944
|
+
if (IFrameSplitOperator.IsString(item.Bid.Text)) text=item.Bid.Text;
|
|
27945
|
+
else text=item.Bid.Value.toString();
|
|
27946
|
+
if (text && this.IsShowOrderText)
|
|
27947
|
+
{
|
|
27948
|
+
var textColor=this.OrderFlow.Text.Color;
|
|
27949
|
+
if (item.Bid.Color)textColor=item.Bid.Color;
|
|
27950
|
+
|
|
27951
|
+
this.Canvas.fillStyle=textColor;
|
|
27952
|
+
this.Canvas.textAlign='left';
|
|
27953
|
+
var xText=rect.Left+this.OrderFlow_Style5.RightMargin
|
|
27954
|
+
if (item.Bid.Font)
|
|
27955
|
+
{
|
|
27956
|
+
var itemFont=this.GetDynamicOrderFlowFont(cellHeight, xKLine.DataWidth/2, item.Bid.Font);
|
|
27957
|
+
this.Canvas.font=itemFont;
|
|
27958
|
+
this.Canvas.fillText(text,xText,yPrice);
|
|
27959
|
+
this.Canvas.font=textFont;
|
|
27960
|
+
}
|
|
27961
|
+
else
|
|
27962
|
+
{
|
|
27963
|
+
this.Canvas.fillText(text,xText,yPrice);
|
|
27964
|
+
}
|
|
27965
|
+
|
|
27966
|
+
}
|
|
27967
|
+
}
|
|
27968
|
+
}
|
|
27969
|
+
}
|
|
27794
27970
|
}
|
|
27795
27971
|
|
|
27796
27972
|
//////////////////////////////////////////////////////////////
|
|
@@ -37570,6 +37746,8 @@ function ChartMultiText()
|
|
|
37570
37746
|
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
37571
37747
|
var left=this.ChartBorder.GetTop();
|
|
37572
37748
|
var right=this.ChartBorder.GetBottom();
|
|
37749
|
+
var top=border.RightEx;
|
|
37750
|
+
var bottom=border.LeftEx;
|
|
37573
37751
|
}
|
|
37574
37752
|
else
|
|
37575
37753
|
{
|
|
@@ -37578,6 +37756,8 @@ function ChartMultiText()
|
|
|
37578
37756
|
var chartright=border.RightEx;
|
|
37579
37757
|
var left=this.ChartBorder.GetLeft();
|
|
37580
37758
|
var right=this.ChartBorder.GetRight();
|
|
37759
|
+
var top=border.TopEx;
|
|
37760
|
+
var bottom=border.BottomEx;
|
|
37581
37761
|
}
|
|
37582
37762
|
|
|
37583
37763
|
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
@@ -37712,6 +37892,8 @@ function ChartMultiText()
|
|
|
37712
37892
|
for(var i in this.Texts)
|
|
37713
37893
|
{
|
|
37714
37894
|
var item=this.Texts[i];
|
|
37895
|
+
if (!IFrameSplitOperator.IsNumber(item.Value)) continue;
|
|
37896
|
+
|
|
37715
37897
|
if (item.Index>=start && item.Index<end)
|
|
37716
37898
|
{
|
|
37717
37899
|
if (range.Max==null) range.Max=item.Value;
|
|
@@ -46317,7 +46499,7 @@ function FrameSplitKLinePriceY()
|
|
|
46317
46499
|
this.Frame.HorizontalInfo[i]= new CoordinateInfo();
|
|
46318
46500
|
this.Frame.HorizontalInfo[i].Value=value;
|
|
46319
46501
|
if (this.IsShowLeftText) this.Frame.HorizontalInfo[i].Message[0]=value.toFixed(floatPrecision);
|
|
46320
|
-
if (this.IsShowRightText)
|
|
46502
|
+
if (this.IsShowRightText) this.Frame.HorizontalInfo[i].Message[1]=value.toFixed(floatPrecision);
|
|
46321
46503
|
}
|
|
46322
46504
|
}
|
|
46323
46505
|
|
|
@@ -56751,6 +56933,8 @@ function ChartDrawHLine()
|
|
|
56751
56933
|
|
|
56752
56934
|
this.TextMargin={ Left:0, Right:0 };
|
|
56753
56935
|
|
|
56936
|
+
this.AlwaysShowLab=false; //总是显示标签
|
|
56937
|
+
|
|
56754
56938
|
this.Button=
|
|
56755
56939
|
{
|
|
56756
56940
|
CloseIcon: { Text:'\ue62b', Color:'rgb(255,255,255)', Family:"iconfont", Size:16, ID:JSCHART_BUTTON_ID.DRAW_PICTURE_DELETE, TooltipText:null, Margin:{ Left:2, Right:2 } },
|
|
@@ -56797,7 +56981,9 @@ function ChartDrawHLine()
|
|
|
56797
56981
|
if (option.ButtonBGColor) this.ButtonBGColor=option.ButtonBGColor;
|
|
56798
56982
|
if (IFrameSplitOperator.IsNumber(option.ButtonPosition)) this.ButtonPosition=option.ButtonPosition;
|
|
56799
56983
|
if (IFrameSplitOperator.IsNumber(option.RightSpaceWidth)) this.RightSpaceWidth=option.RightSpaceWidth;
|
|
56984
|
+
if (IFrameSplitOperator.IsBool(option.AlwaysShowLab)) this.AlwaysShowLab=option.AlwaysShowLab;
|
|
56800
56985
|
|
|
56986
|
+
|
|
56801
56987
|
if (option.Button)
|
|
56802
56988
|
{
|
|
56803
56989
|
var item=option.Button;
|
|
@@ -56925,7 +57111,8 @@ function ChartDrawHLine()
|
|
|
56925
57111
|
if (!drawPoint || drawPoint.length!=1) return;
|
|
56926
57112
|
if (!this.Frame) return;
|
|
56927
57113
|
if (this.Value.length!=1) return;
|
|
56928
|
-
|
|
57114
|
+
var bVisibleRange=this.IsYValueInFrame(this.Value[0].YValue); //是否在可视范围
|
|
57115
|
+
if (!this.AlwaysShowLab && !bVisibleRange) return;
|
|
56929
57116
|
|
|
56930
57117
|
var isHScreen=this.Frame.IsHScreen;
|
|
56931
57118
|
var left=this.Frame.ChartBorder.GetLeft();
|
|
@@ -56935,24 +57122,28 @@ function ChartDrawHLine()
|
|
|
56935
57122
|
left=this.Frame.ChartBorder.GetTop();
|
|
56936
57123
|
right=this.Frame.ChartBorder.GetBottom();
|
|
56937
57124
|
}
|
|
57125
|
+
|
|
56938
57126
|
this.ClipFrame();
|
|
56939
57127
|
|
|
56940
57128
|
//画线段
|
|
56941
|
-
|
|
56942
|
-
this.SetLineWidth();
|
|
56943
|
-
this.Canvas.beginPath();
|
|
56944
|
-
if (isHScreen)
|
|
57129
|
+
if (bVisibleRange)
|
|
56945
57130
|
{
|
|
56946
|
-
this.Canvas.
|
|
56947
|
-
this.
|
|
56948
|
-
|
|
56949
|
-
|
|
56950
|
-
|
|
56951
|
-
|
|
56952
|
-
|
|
57131
|
+
this.Canvas.strokeStyle=this.LineColor;
|
|
57132
|
+
this.SetLineWidth();
|
|
57133
|
+
this.Canvas.beginPath();
|
|
57134
|
+
if (isHScreen)
|
|
57135
|
+
{
|
|
57136
|
+
this.Canvas.moveTo(drawPoint[0].X,left);
|
|
57137
|
+
this.Canvas.lineTo(drawPoint[0].X,right);
|
|
57138
|
+
}
|
|
57139
|
+
else
|
|
57140
|
+
{
|
|
57141
|
+
this.Canvas.moveTo(left,ToFixedPoint(drawPoint[0].Y));
|
|
57142
|
+
this.Canvas.lineTo(right,ToFixedPoint(drawPoint[0].Y));
|
|
57143
|
+
}
|
|
57144
|
+
this.Canvas.stroke();
|
|
57145
|
+
this.RestoreLineWidth();
|
|
56953
57146
|
}
|
|
56954
|
-
this.Canvas.stroke();
|
|
56955
|
-
this.RestoreLineWidth();
|
|
56956
57147
|
|
|
56957
57148
|
//画水平线段
|
|
56958
57149
|
var line={Start:new Point(), End:new Point()};
|
|
@@ -56972,34 +57163,39 @@ function ChartDrawHLine()
|
|
|
56972
57163
|
}
|
|
56973
57164
|
this.LinePoint.push(line);
|
|
56974
57165
|
|
|
56975
|
-
|
|
56976
|
-
var strPrice=yValue.toFixed(this.Precision);
|
|
56977
|
-
if (this.ShowPriceTextConfig.IsShow[0])
|
|
56978
|
-
{
|
|
56979
|
-
this.DrawPriceText(strPrice, line.Start, line.End, 0);
|
|
56980
|
-
}
|
|
56981
|
-
|
|
56982
|
-
if (this.ShowPriceTextConfig.IsShow[1])
|
|
57166
|
+
if (bVisibleRange)
|
|
56983
57167
|
{
|
|
56984
|
-
this.
|
|
57168
|
+
var yValue=this.Frame.GetYData(drawPoint[0].Y, false);
|
|
57169
|
+
var strPrice=yValue.toFixed(this.Precision);
|
|
57170
|
+
if (this.ShowPriceTextConfig.IsShow[0])
|
|
57171
|
+
{
|
|
57172
|
+
this.DrawPriceText(strPrice, line.Start, line.End, 0);
|
|
57173
|
+
}
|
|
57174
|
+
|
|
57175
|
+
if (this.ShowPriceTextConfig.IsShow[1])
|
|
57176
|
+
{
|
|
57177
|
+
this.DrawPriceText(strPrice, line.Start, line.End, 1);
|
|
57178
|
+
}
|
|
56985
57179
|
}
|
|
56986
|
-
|
|
57180
|
+
|
|
56987
57181
|
var labInfo;
|
|
56988
57182
|
if (this.GetLabelCallback) labInfo=this.GetLabelCallback(this);
|
|
56989
57183
|
|
|
56990
57184
|
this.AryShowButton=this.GetShowButton(); //获取按钮
|
|
56991
57185
|
|
|
56992
|
-
|
|
56993
|
-
if (labInfo)
|
|
57186
|
+
//框架内的描述信息
|
|
57187
|
+
if (labInfo && bVisibleRange)
|
|
56994
57188
|
this.DrawLab(labInfo, drawPoint[0].Y);
|
|
56995
57189
|
|
|
56996
57190
|
//画中心点
|
|
56997
|
-
|
|
56998
|
-
|
|
56999
|
-
|
|
57191
|
+
if (bVisibleRange)
|
|
57192
|
+
{
|
|
57193
|
+
var xCenter=left+(right-left)/2;
|
|
57194
|
+
var point={ X:xCenter, Y: drawPoint[0].Y };
|
|
57195
|
+
this.DrawPoint([point]);
|
|
57196
|
+
}
|
|
57000
57197
|
|
|
57001
57198
|
this.Canvas.restore();
|
|
57002
|
-
|
|
57003
57199
|
|
|
57004
57200
|
//外部右侧显示价格
|
|
57005
57201
|
if (this.ShowPriceTextConfig.IsShow[2])
|
|
@@ -57008,9 +57204,8 @@ function ChartDrawHLine()
|
|
|
57008
57204
|
this.CalculateButtonSize();
|
|
57009
57205
|
this.DrawValueText(drawPoint[0].Y, rtDraw, labInfo);
|
|
57010
57206
|
if (labInfo) this.DrawRightLab(labInfo, rtDraw);
|
|
57011
|
-
if (labInfo) this.DrawCustomHLine(labInfo, drawPoint[0].Y);
|
|
57207
|
+
if (labInfo && bVisibleRange) this.DrawCustomHLine(labInfo, drawPoint[0].Y);
|
|
57012
57208
|
}
|
|
57013
|
-
|
|
57014
57209
|
|
|
57015
57210
|
//鼠标是否在按钮上
|
|
57016
57211
|
if (moveonPoint && mouseStatus)
|
|
@@ -57210,20 +57405,40 @@ function ChartDrawHLine()
|
|
|
57210
57405
|
{
|
|
57211
57406
|
var left=this.Frame.ChartBorder.GetLeft();
|
|
57212
57407
|
var right=this.Frame.ChartBorder.GetRight();
|
|
57408
|
+
var top=this.Frame.ChartBorder.GetTopEx();
|
|
57409
|
+
var bottom=this.Frame.ChartBorder.GetBottomEx();
|
|
57410
|
+
var pixelTatio = GetDevicePixelRatio();
|
|
57411
|
+
|
|
57412
|
+
if (IFrameSplitOperator.IsNumber(labInfo.TopOffset)) top-=labInfo.TopOffset;
|
|
57413
|
+
if (IFrameSplitOperator.IsNumber(labInfo.BottomOffset)) bottom+=labInfo.BottomOffset;
|
|
57414
|
+
|
|
57415
|
+
var yValue=this.Frame.GetYData(y,false);
|
|
57416
|
+
var strValue=yValue.toFixed(this.Precision);
|
|
57417
|
+
if (labInfo &&labInfo.PriceSuffixText) strValue+=labInfo.PriceSuffixText;
|
|
57418
|
+
|
|
57419
|
+
var bVisibleRange=true;
|
|
57420
|
+
if (y<top)
|
|
57421
|
+
{
|
|
57422
|
+
y=top;
|
|
57423
|
+
bVisibleRange=false;
|
|
57424
|
+
}
|
|
57425
|
+
else if (y>bottom)
|
|
57426
|
+
{
|
|
57427
|
+
y=bottom;
|
|
57428
|
+
bVisibleRange=false;
|
|
57429
|
+
}
|
|
57213
57430
|
|
|
57214
57431
|
if (this.RightSpaceWidth>0)
|
|
57215
57432
|
{
|
|
57433
|
+
if (!bVisibleRange) this.Canvas.setLineDash([2*pixelTatio,3*pixelTatio]); //虚线
|
|
57216
57434
|
this.Canvas.strokeStyle=this.LineColor;
|
|
57217
57435
|
this.Canvas.beginPath();
|
|
57218
57436
|
this.Canvas.moveTo(right,ToFixedPoint(y));
|
|
57219
57437
|
this.Canvas.lineTo(right+this.RightSpaceWidth,ToFixedPoint(y));
|
|
57220
57438
|
this.Canvas.stroke();
|
|
57439
|
+
if (!bVisibleRange) this.Canvas.setLineDash([]);
|
|
57221
57440
|
}
|
|
57222
57441
|
|
|
57223
|
-
var yValue=this.Frame.GetYData(y);
|
|
57224
|
-
var strValue=yValue.toFixed(this.Precision);
|
|
57225
|
-
if (labInfo &&labInfo.PriceSuffixText) strValue+=labInfo.PriceSuffixText;
|
|
57226
|
-
|
|
57227
57442
|
this.Canvas.fillStyle=this.LineColor;
|
|
57228
57443
|
this.Canvas.font=this.Font;
|
|
57229
57444
|
var textWidth=this.Canvas.measureText(strValue).width;
|
|
@@ -65719,6 +65934,15 @@ function JSChartResource()
|
|
|
65719
65934
|
LeftMargin:1,
|
|
65720
65935
|
RightMargin:1
|
|
65721
65936
|
};
|
|
65937
|
+
|
|
65938
|
+
|
|
65939
|
+
this.OrderFlow_Style5=
|
|
65940
|
+
{
|
|
65941
|
+
AskBarColor:"rgb(176,22,22)", //左
|
|
65942
|
+
BidBarColor:"rgb(98,126,176)", //右
|
|
65943
|
+
LeftMargin:3,
|
|
65944
|
+
RightMargin:2,
|
|
65945
|
+
};
|
|
65722
65946
|
|
|
65723
65947
|
|
|
65724
65948
|
this.Index={};
|