hqchart 1.1.15229 → 1.1.15237

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.
@@ -2018,7 +2018,7 @@ if(drag.CurrentMove){drag.CurrentMove.X=e.clientX;drag.CurrentMove.Y=e.clientY;}
2018
2018
  JSConsole.Chart.Log("[JSChartContainer::DocOnMouseMove] YDrag ",this.YDrag,yMove);this.OnZoomUpDownFrameY(this.YDrag,yMove);drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.IndexChartDrag&&this.IndexChartDrag.SelectedChart)//选中图形移动
2019
2019
  {if(Math.abs(drag.LastMove.Y-e.clientY)<2&&Math.abs(drag.LastMove.X-e.clientX)<2)return;var chartMove=this.GetExtendChartByClassName("DragMovePaint");if(chartMove&&chartMove.Chart){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;chartMove.Chart.Point={X:x,Y:y};chartMove.Chart.IsShow=true;chartMove.Chart.Info=this.IndexChartDrag.Info;this.DrawDynamicInfo();}this.IndexChartDrag.LastMove.X=x;this.IndexChartDrag.LastMove.Y=y;drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.CustomChartDrag){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var sendData={X:x,Y:y,e:e,ChartDrag:this.CustomChartDrag,Drag:drag};this.TryDragMove_CustomChartDrag(sendData);}else if(this.CurrentChartDrawPicture&&this.CurrentChartDrawPicture.EnableMove===true)//画图工具移动
2020
2020
  {var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==1||drawPicture.Status==2){if(Math.abs(drag.LastMove.X-e.clientX)<5&&Math.abs(drag.LastMove.Y-e.clientY)<5)return;if(this.SetChartDrawPictureSecondPoint(e.clientX,e.clientY)){this.DrawDynamicInfo();}}else if(drawPicture.Status==3){if(this.SetChartDrawPictureThirdPoint(e.clientX,e.clientY)){this.DrawDynamicInfo();}}else if(drawPicture.Status==20)//画图工具移动
2021
- {if(Math.abs(drag.LastMove.X-e.clientX)<5&&Math.abs(drag.LastMove.Y-e.clientY)<1)return;if(this.SelectChartDrawPicture){if(this.SelectChartDrawPicture.EnableCtrlMove){if(!e.ctrlKey)return;}}if(this.SelectChartDrawPicture&&this.SelectChartDrawPicture.DragInfo)this.SelectChartDrawPicture.DragInfo.Move={X:e.clientX,Y:e.client};if(this.MoveChartDrawPicture(e.clientX-drag.LastMove.X,e.clientY-drag.LastMove.Y,false,drag)){this.DrawDynamicInfo();}}drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(drag.Click&&drag.Click.IsInFrameBottom){var dragType=this.GetDragXCoordinateType(e,"DocOnMouseMove");if(dragType==2)this.OnDragXCoordinateZoom(drag,{X:moveSetp,Y:moveSetpY},e);else if(dragType==1)this.OnDragXCoordinateKLine(drag,{X:moveSetp,Y:moveSetpY},e);}else if((bLButtonSelectRect||bRButtonSelectRect)&&!isDragSelectRect&&!isDragSubSelectRect&&!bShfitDragKLine)//左右键区间选择
2021
+ {if(Math.abs(drag.LastMove.X-e.clientX)<5&&Math.abs(drag.LastMove.Y-e.clientY)<1)return;if(this.SelectChartDrawPicture){if(this.SelectChartDrawPicture.EnableCtrlMove){if(!e.ctrlKey)return;}}if(this.SelectChartDrawPicture&&this.SelectChartDrawPicture.DragInfo)this.SelectChartDrawPicture.DragInfo.Move={X:e.clientX,Y:e.client};if(this.MoveChartDrawPicture(e.clientX-drag.LastMove.X,e.clientY-drag.LastMove.Y,false,drag)){this.DrawDynamicInfo();}else{return;}}drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(drag.Click&&drag.Click.IsInFrameBottom){var dragType=this.GetDragXCoordinateType(e,"DocOnMouseMove");if(dragType==2)this.OnDragXCoordinateZoom(drag,{X:moveSetp,Y:moveSetpY},e);else if(dragType==1)this.OnDragXCoordinateKLine(drag,{X:moveSetp,Y:moveSetpY},e);}else if((bLButtonSelectRect||bRButtonSelectRect)&&!isDragSelectRect&&!isDragSubSelectRect&&!bShfitDragKLine)//左右键区间选择
2022
2022
  {var yMoveSetp=Math.abs(drag.LastMove.Y-e.clientY);if(moveSetp<5&&yMoveSetp<5)return;this.SetCursor({Cursor:"default"});var ptStart=this.PointAbsoluteToRelative(drag.Click.X,drag.Click.Y);var ptEnd=this.PointAbsoluteToRelative(e.clientX,e.clientY);this.ShowDragSelectRect(ptStart,ptEnd);drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.DragMode==1||isDragSelectRect||isDragSubSelectRect)//数据上下左右拖拽 区间选择框左右拖动
2023
2023
  {if(this.DataMoveConfig.Mouse.EnableLR)this.OnDragMode_One({X:moveSetp,Y:moveSetpY},e);}};//X轴坐标拖动 缩放K线
2024
2024
  this.OnDragXCoordinateZoom=function(drag,moveData,e){var moveSetp=moveData.X;var moveSetpY=moveData.Y;if(moveSetp<5)return;var isLeft=true;if(drag.LastMove.X<e.clientX)isLeft=false;//右移数据
@@ -2389,7 +2389,7 @@ var pt=this.PointAbsoluteToRelative(x,y,isPhone);drawPicture.Point[2]=new Point(
2389
2389
  return true;};//xStep,yStep 移动的偏移量
2390
2390
  this.MoveChartDrawPicture=function(x,y,isPhone,drag){var drawPicture=this.CurrentChartDrawPicture;if(!drawPicture)return false;var pixelTatio=GetDevicePixelRatio();//x,y 需要乘以放大倍速
2391
2391
  if(isPhone)pixelTatio=1;var xStep=x*pixelTatio;var yStep=y*pixelTatio;//JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
2392
- drawPicture.Move(xStep,yStep,drag);return true;};this.FinishChartDrawPicturePoint=function(){var drawPicture=this.CurrentChartDrawPicture;if(!drawPicture)return false;if(drawPicture.PointCount!=drawPicture.Point.length)return false;if(drawPicture.ClassName=="ChartDrawRuler")//尺子不用保存的
2392
+ if(!drawPicture.Move(xStep,yStep,drag))return false;return true;};this.FinishChartDrawPicturePoint=function(){var drawPicture=this.CurrentChartDrawPicture;if(!drawPicture)return false;if(drawPicture.PointCount!=drawPicture.Point.length)return false;if(drawPicture.ClassName=="ChartDrawRuler")//尺子不用保存的
2393
2393
  {if(drawPicture.FinishedCallback)drawPicture.FinishedCallback(drawPicture);this.CurrentChartDrawPicture=null;return true;}drawPicture.PointMagnetKLine();drawPicture.Status=10;//完成
2394
2394
  drawPicture.PointToValue();this.ChartDrawPicture.push(drawPicture);this.CurrentChartDrawPicture=null;//通知上层画好了
2395
2395
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FINISH_DRAWPICTURE);//完成画图工具事件
@@ -4416,8 +4416,8 @@ this.AfterCloseData;//盘后数据
4416
4416
  this.BeforeVolColor=g_JSChartResource.Minute.Before.VolColor;this.ShareAfterVol=0;this.MultiDayBeforeOpenData;//多日分时图 盘前数据 数组 1天一个
4417
4417
  this.MultiDayAfterCloseData;//多日分时图 盘后数据 数组 1天一个
4418
4418
  this.PtInChart=function(x,y){var option={MinuteVolBar:true,VolUnit:this.GetVolUnit()};return this.PtInBar(x,y,option);};this.DrawSelectedStatus=function(){return this.DrawLinePoint({MinuteVolBar:true});};this.GetVolUnit=function(){var upperSymbol=this.Symbol?this.Symbol.toUpperCase():null;var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);return unit;};this.Draw=function(){var isHScreen=this.ChartFrame.IsHScreen===true;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var chartright=border.BottomEx;}else{var border=this.ChartBorder.GetBorder();var chartright=border.RightEx;}this.DrawBeforeOpen();this.DrawMultiDayBeforeOpen();var xPointCount=this.ChartFrame.XPointCount;var yBottom=this.ChartFrame.GetYFromData(0);var yPrice=this.YClose;//上一分钟的价格
4419
- var data=this.Data;var bShowColorBar=MARKET_SUFFIX_NAME.IsShowMinuteColorVolBar(this.Symbol);if(bShowColorBar)this.Canvas.strokeStyle=this.CustomColor;var unit=this.GetVolUnit();for(var i=data.DataOffset,j=0;i<data.Data.length&&j<xPointCount;++i,++j){var item=data.Data[i];var vol=null;if(!item)continue;var price=null;vol=item.Vol/unit;price=item.Close;if(!vol)continue;var y=this.ChartFrame.GetYFromData(vol);var x=this.ChartFrame.GetXFromIndex(j);if(x>chartright)break;//价格>=上一分钟价格 红色 否则绿色
4420
- if(!bShowColorBar)this.Canvas.strokeStyle=this.GetMinuteBarColor(price,yPrice);this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(y,ToFixedPoint(x));this.Canvas.lineTo(yBottom,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),y);this.Canvas.lineTo(ToFixedPoint(x),yBottom);}this.Canvas.stroke();if(price)yPrice=price;}this.DrawAfterClose();this.DrawMultiDayAfterClose();};//连续交易成交量柱子颜色
4419
+ var data=this.Data;var bShowColorBar=MARKET_SUFFIX_NAME.IsShowMinuteColorVolBar(this.Symbol);if(bShowColorBar)this.Canvas.strokeStyle=this.CustomColor;var unit=this.GetVolUnit();if(data&&IFrameSplitOperator.IsNonEmptyArray(data.Data)){for(var i=data.DataOffset,j=0;i<data.Data.length&&j<xPointCount;++i,++j){var item=data.Data[i];var vol=null;if(!item)continue;var price=null;vol=item.Vol/unit;price=item.Close;if(!vol)continue;var y=this.ChartFrame.GetYFromData(vol);var x=this.ChartFrame.GetXFromIndex(j);if(x>chartright)break;//价格>=上一分钟价格 红色 否则绿色
4420
+ if(!bShowColorBar)this.Canvas.strokeStyle=this.GetMinuteBarColor(price,yPrice);this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(y,ToFixedPoint(x));this.Canvas.lineTo(yBottom,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),y);this.Canvas.lineTo(ToFixedPoint(x),yBottom);}this.Canvas.stroke();if(price)yPrice=price;}}this.DrawAfterClose();this.DrawMultiDayAfterClose();};//连续交易成交量柱子颜色
4421
4421
  this.GetMinuteBarColor=function(price,yPrice){if(this.BarColorType==1)//通达信模式
4422
4422
  {if(price>yPrice)return this.UpColor;else if(price<yPrice)return this.DownColor;else return this.UnchangeColor;}else//东方财富模式
4423
4423
  {return price>=yPrice?this.UpColor:this.DownColor;}};this.DrawBeforeOpen=function(){if(this.ChartBorder.LeftExtendWidth<10)return;if(!this.BeforeOpenData)return;this.DrawCallAuction(-1,this.BeforeOpenData,true);};this.DrawAfterClose=function(){if(this.ChartBorder.RightExtendWidth<10)return;if(!this.AfterCloseData)return;this.DrawCallAuction(-1,this.AfterCloseData,false);};this.DrawMultiDayBeforeOpen=function(){if(this.ChartBorder.MultiDayMinute.Count<=1||this.ChartBorder.MultiDayMinute.Left<=0)return;if(!this.MultiDayBeforeOpenData)return;var offset=0,showDayCount=this.MultiDayBeforeOpenData.length;if(this.DayOffset){if(IFrameSplitOperator.IsNumber(this.DayOffset.Offset))offset=this.DayOffset.Offset;if(IFrameSplitOperator.IsNumber(this.DayOffset.ShowDayCount))showDayCount=this.DayOffset.ShowDayCount;}for(var i=offset,j=0;i<this.MultiDayBeforeOpenData.length&&j<showDayCount;++i,++j){var dayItem=this.MultiDayBeforeOpenData[i];this.DrawCallAuction(j,dayItem,true);}};this.DrawMultiDayAfterClose=function(){if(this.ChartBorder.MultiDayMinute.Count<=1||this.ChartBorder.MultiDayMinute.Right<=0)return;if(!this.MultiDayAfterCloseData)return;var offset=0,showDayCount=this.MultiDayAfterCloseData.length;if(this.DayOffset){if(IFrameSplitOperator.IsNumber(this.DayOffset.Offset))offset=this.DayOffset.Offset;if(IFrameSplitOperator.IsNumber(this.DayOffset.ShowDayCount))showDayCount=this.DayOffset.ShowDayCount;}for(var i=offset,j=0;i<this.MultiDayAfterCloseData.length&&j<showDayCount;++i,++j){var dayItem=this.MultiDayAfterCloseData[i];this.DrawCallAuction(j,dayItem,false);}};this.DrawCallAuction=function(indexDay,callAutionData,isBeforeOpen){if(!callAutionData)return;callAutionData.Index=indexDay;var border=this.GetBorder();var isHScreen=this.ChartFrame.IsHScreen===true;var yPrice=this.YClose;//上一分钟的价格
@@ -6653,9 +6653,9 @@ this.ChangePeriod=function(period){var kData=this.GetKData();if(!kData)return;va
6653
6653
  {var data=this.GetKData();if(!data)return false;var aryDateTime=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];if(!item.DateTime)break;var dateTime={Date:item.DateTime.Date};if(IFrameSplitOperator.IsNumber(item.DateTime.Time))dateTime.Time=item.DateTime.Time;aryDateTime[i]=dateTime;}data.FindDataIndexByDateTime(aryDateTime);for(var i=0;i<aryDateTime.length;++i){var findItem=aryDateTime[i];var valueItem=this.Value[i];if(findItem.Index>=0)valueItem.XValue=findItem.Index;}};//重置X索引数据
6654
6654
  this.ResetXValue=function(){for(var i=0;i<this.Value.length;++i){var item=this.Value[i];item.XValue=null;}return true;};//xStep,yStep 移动的偏移量
6655
6655
  this.Move=function(xStep,yStep){if(this.Status!=20)return false;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==null)return false;var index=parseInt(this.MovePointIndex);if(index===100)//整体移动
6656
- {if(this.IsMoveOutOfBounds(this.Point,xStep,yStep))return false;for(var i in this.Point){this.Point[i].X+=xStep;this.Point[i].Y+=yStep;}}else if(index===0||index===1||index===2||index===3||index===4||index===5){if(index<this.Point.length){this.Point[index].X+=xStep;this.Point[index].Y+=yStep;}}else{return false;}};//是否超出边界了
6656
+ {if(this.IsMoveOutOfBounds(this.Point,xStep,yStep))return false;for(var i in this.Point){this.Point[i].X+=xStep;this.Point[i].Y+=yStep;}}else if(index===0||index===1||index===2||index===3||index===4||index===5){if(index<this.Point.length){this.Point[index].X+=xStep;this.Point[index].Y+=yStep;}}else{return false;}return true;};//是否超出边界了
6657
6657
  this.IsMoveOutOfBounds=function(aryPoint,xStep,yStep){if(!this.EnableMoveCheck)return false;if(!this.Frame)return false;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame")return false;var data=this.Frame.Data;if(!data)return false;if(!IFrameSplitOperator.IsNonEmptyArray(data.Data))return false;if(!IFrameSplitOperator.IsNonEmptyArray(aryPoint))return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){//TODO:横屏以后再做
6658
- return false;}else{var offset=data.DataOffset;var startIndex=0-offset;var endIndex=data.Data.length-offset;if(xStep>0){var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(item.X+xStep>xEnd)return true;}}else if(xStep<0){var xStart=this.Frame.GetXFromIndex(startIndex,false);for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(item.X+xStep<xStart)return true;}}return false;}};this.ClipFrame=function(){if(this.Frame.IsHScreen){var left=this.Frame.ChartBorder.GetLeftEx();var top=this.Frame.ChartBorder.GetTop();var width=this.Frame.ChartBorder.GetWidthEx();var height=this.Frame.ChartBorder.GetHeight();}else{var left=this.Frame.ChartBorder.GetLeft();var top=this.Frame.ChartBorder.GetTopEx();var width=this.Frame.ChartBorder.GetWidth();var height=this.Frame.ChartBorder.GetHeightEx();}this.Canvas.save();this.Canvas.beginPath();this.Canvas.rect(left,top,width,height);this.Canvas.clip();};//计算需要画的点的坐标option:{IsCheckX:是否检测X值, IsCheckY:是否检测Y值}
6658
+ return false;}else{var offset=data.DataOffset;var startIndex=0-offset;var endIndex=data.Data.length-offset;if(this.ClassName=="ChartDrawHLine")return false;if(xStep>0){var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(item.X+xStep>xEnd)return true;}}else if(xStep<0){var xStart=this.Frame.GetXFromIndex(startIndex,false);for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(item.X+xStep<xStart)return true;}}return false;}};this.ClipFrame=function(){if(this.Frame.IsHScreen){var left=this.Frame.ChartBorder.GetLeftEx();var top=this.Frame.ChartBorder.GetTop();var width=this.Frame.ChartBorder.GetWidthEx();var height=this.Frame.ChartBorder.GetHeight();}else{var left=this.Frame.ChartBorder.GetLeft();var top=this.Frame.ChartBorder.GetTopEx();var width=this.Frame.ChartBorder.GetWidth();var height=this.Frame.ChartBorder.GetHeightEx();}this.Canvas.save();this.Canvas.beginPath();this.Canvas.rect(left,top,width,height);this.Canvas.clip();};//计算需要画的点的坐标option:{IsCheckX:是否检测X值, IsCheckY:是否检测Y值}
6659
6659
  this.CalculateDrawPoint=function(option){if(this.Status<2)return null;if(!this.Point.length||!this.Frame)return null;var drawPoint=[];if(this.Status==10){var data=this.Frame.Data;if(!data)return null;var showCount=this.Frame.XPointCount;var invaildX=0;//超出范围的x点个数
6660
6660
  var isHScreen=this.Frame.IsHScreen;for(var i=0;i<this.Value.length;++i){var item=this.Value[i];if(!IFrameSplitOperator.IsNumber(item.XValue))return null;//无效索引 不显示
6661
6661
  var dataIndex=item.XValue-data.DataOffset;if(dataIndex<0||dataIndex>=showCount)++invaildX;var pt=new Point();if(isHScreen)//横屏X,Y对调
@@ -6854,7 +6854,7 @@ this.LineWidth=1;this.Precision=2;//小数位数
6854
6854
  this.ValueTextColor='rgb(250,250,250)';this.IsShowCorssCursor=true;//画的时候是否显示十字光标
6855
6855
  this.GetLabelCallback;//绘制标题回调函数
6856
6856
  this.PointCount=1;this.ClassName='ChartDrawHLine';this.Font=14*GetDevicePixelRatio()+"px 微软雅黑";this.TextFont=12*GetDevicePixelRatio()+"px 微软雅黑";this.RightSpaceWidth=50;this.PriceBGColor;this.ButtonPosition=0;//按钮位置, 0=价格后面, 1=价格上面 2=价格上面 左对齐 3=垂直排列
6857
- this.ButtonBGColor='rgb(190,190,190)';this.ButtonSpace=3;this.TopOffset=3;this.TextMargin={Left:0,Right:0,Top:0,Bottom:0,YOffset:4*GetDevicePixelRatio()};this.AlwaysShowLab=false;//总是显示标签
6857
+ this.ButtonBGColor='rgb(190,190,190)';this.ButtonSpace=3;this.TopOffset=3;this.TextMargin={Left:0,Right:0,Top:0,Bottom:0,YOffset:-1*GetDevicePixelRatio()};this.AlwaysShowLab=false;//总是显示标签
6858
6858
  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 可以外部定制按钮
6859
6859
  }};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 }
6860
6860
  this.AryShowButton=[];//需要显示的按钮 { Data:, Width }
@@ -6890,7 +6890,7 @@ if(labelInfo.BGColor){this.Canvas.fillStyle=labelInfo.BGColor;this.Canvas.fillRe
6890
6890
  {yBottom=border.Bottom;yTop=yBottom-totalHeight;if(yTop<this.TopOffset){yTop=this.TopOffset;yBottom=yTop+totalHeight;}option.Top=yTop;}this.DrawValueText(y,rtDraw,option);var drawLeft=rtDraw.Right-labSize.Width;if(drawLeft<rtDraw.Left)drawLeft=rtDraw.Left;var drawRight=drawLeft+labSize.Width;var drawTop=rtDraw.Bottom;var rtLabel={Left:drawLeft,Right:drawRight,Top:drawTop,Width:labSize.Width,Height:labSize.Height};rtLabel.Bottom=rtLabel.Top+rtLabel.Height;this.DrawLabel(this.LableInfo,labSize,rtLabel);this.DrawVerticalButton(rtLabel);};this.DrawCustomHLine=function(yLine){if(!this.LableInfo)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.LableInfo.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<this.LableInfo.AryLine.length;++i){var item=this.LableInfo.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 百分比
6891
6891
  else xRight=left+item.Width*pixelRatio;//>1 实际数值就是长度
6892
6892
  }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&&this.LableInfo.VLine){var item=this.LableInfo.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,option){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();var labInfo=this.LabelInfo;if(labInfo&&IFrameSplitOperator.IsNumber(labInfo.TopOffset))top-=labInfo.TopOffset;if(labInfo&&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]);//虚线
6893
- 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([]);}if(this.PriceBGColor)this.Canvas.fillStyle=this.PriceBGColor;else 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,YCenter:y,Width:textWidth,Height:lineHeight};rtBG.Height+=this.TextMargin.Top+this.TextMargin.Bottom;rtBG.Width+=this.TextMargin.Left+this.TextMargin.Right;rtBG.Right=rtBG.Left+rtBG.Width;rtBG.Top=rtBG.YCenter-rtBG.Height/2;rtBG.Bottom=rtBG.Top+rtBG.Height;if(option&&IFrameSplitOperator.IsNumber(option.Top)){rtBG.Top=option.Top;rtBG.Bottom=rtBG.Top+rtBG.Height;}var xText=rtBG.Left+this.TextMargin.Left;var yText=rtBG.Top+this.TextMargin.Top+this.TextMargin.YOffset;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="top";this.Canvas.fillText(strValue,xText,yText);rtDraw.Left=rtBG.Left;rtDraw.Top=rtBG.Top;rtDraw.Bottom=rtBG.Bottom;rtDraw.Right=rtBG.Right;this.DrawButton(rtBG.Top,rtBG.Right,lineHeight,rtDraw);};//计算右侧价格标签大小
6893
+ 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([]);}if(this.PriceBGColor)this.Canvas.fillStyle=this.PriceBGColor;else 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,YCenter:y,Width:textWidth,Height:lineHeight};rtBG.Height+=this.TextMargin.Top+this.TextMargin.Bottom;rtBG.Width+=this.TextMargin.Left+this.TextMargin.Right;rtBG.Right=rtBG.Left+rtBG.Width;rtBG.Top=rtBG.YCenter-rtBG.Height/2;rtBG.Bottom=rtBG.Top+rtBG.Height;if(option&&IFrameSplitOperator.IsNumber(option.Top)){rtBG.Top=option.Top;rtBG.Bottom=rtBG.Top+rtBG.Height;}var xText=rtBG.Left+this.TextMargin.Left;var yText=rtBG.Bottom-this.TextMargin.Bottom+this.TextMargin.YOffset;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="bottom";this.Canvas.fillText(strValue,xText,yText);rtDraw.Left=rtBG.Left;rtDraw.Top=rtBG.Top;rtDraw.Bottom=rtBG.Bottom;rtDraw.Right=rtBG.Right;this.DrawButton(rtBG.Top,rtBG.Right,lineHeight,rtDraw);};//计算右侧价格标签大小
6894
6894
  this.CalculateValueText=function(y){var yValue=this.Frame.GetYData(y,false);var strValue=yValue.toFixed(this.Precision);if(this.LableInfo&&this.LableInfo.PriceSuffixText)strValue+=this.LableInfo.PriceSuffixText;this.Canvas.font=this.Font;var textWidth=this.Canvas.measureText(strValue).width;var lineHeight=this.GetFontHeight();var size={Width:textWidth,Height:lineHeight};size.Height+=this.TextMargin.Top+this.TextMargin.Bottom;size.Width+=this.TextMargin.Left+this.TextMargin.Right;return size;};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;};//垂直排列按钮
6895
6895
  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()调用
6896
6896
  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)//右边不够了 往左移动
@@ -6993,7 +6993,7 @@ linePoint={Start:new Point(),End:new Point()};linePoint.Start.X=drawPoint[0].X;l
6993
6993
  };//xStep,yStep 移动的偏移量
6994
6994
  this.Move=function(xStep,yStep){if(this.Status!=20)return false;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==100)//整体移动
6995
6995
  {for(var i=0;i<this.Point.length;++i){this.Point[i].X+=xStep;this.Point[i].Y+=yStep;}}else if(this.MovePointIndex==0||this.MovePointIndex==1){if(this.MovePointIndex<this.Point.length){this.Point[this.MovePointIndex].X+=xStep;this.Point[this.MovePointIndex].Y+=yStep;}}else if(this.MovePointIndex==2)//宽度的点要计算
6996
- {this.Point[this.MovePointIndex].X+=xStep;this.Point[this.MovePointIndex].Y+=yStep;var x=this.Point[1].X-this.Point[0].X;var y=this.Point[1].Y-this.Point[0].Y;var angle=Math.atan(Math.abs(x/y));var yMove=this.ChannelWidth/Math.sin(angle)-yStep;this.ChannelWidth=Math.sin(angle)*yMove;}};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
6996
+ {this.Point[this.MovePointIndex].X+=xStep;this.Point[this.MovePointIndex].Y+=yStep;var x=this.Point[1].X-this.Point[0].X;var y=this.Point[1].Y-this.Point[0].Y;var angle=Math.atan(Math.abs(x/y));var yMove=this.ChannelWidth/Math.sin(angle)-yStep;this.ChannelWidth=Math.sin(angle)*yMove;}else{return false;}return true;};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
6997
6997
  this.IsPointIn=function(x,y){if(!this.Frame||this.Status!=10)return-1;var data=this.Frame.Data;if(!data)return-1;//是否在点上
6998
6998
  for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var pt=new Point();if(i<2){pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset);pt.Y=this.Frame.GetYFromData(item.YValue);}else//第3个点使用实际坐标
6999
6999
  {if(i>=this.Point.length)continue;pt.X=this.Point[i].X;pt.Y=this.Point[i].Y;}this.Canvas.beginPath();this.Canvas.arc(pt.X,pt.Y,5,0,360);if(this.Canvas.isPointInPath(x,y))return i;}//是否在线段上
@@ -7341,7 +7341,7 @@ this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveT
7341
7341
  var aryLabel=this.FormatLabelText(drawPoint);if(!IFrameSplitOperator.IsNonEmptyArray(aryLabel))return;this.TextFontHeight=this.GetFontHeight(this.LabelConfig.Font,"擎");for(var i=0;i<aryLabel.length;++i){var item=aryLabel[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.AryText))continue;this.CalculateLabelSize(item);this.DrawLabelItem(item,drawPoint);}};this.DrawLabelItem=function(lableItem,drawPoint){var ptCenter=drawPoint[0];var ptRight=drawPoint[1];var ptTop=drawPoint[2];var ptBottom=drawPoint[3];var clientWidth=ptRight.X-ptCenter.X;var config=this.LabelConfig;var margin=config.Margin;var rtText={Width:lableItem.Width+margin.Left+margin.Right,Height:lableItem.Height+margin.Top+margin.Bottom};if(lableItem.Type==0)//中间
7342
7342
  {rtText.Left=ptCenter.X+clientWidth/2-rtText.Width/2;rtText.Right=rtText.Left+rtText.Width;rtText.Top=ptCenter.Y-rtText.Height/2;rtText.Bottom=rtText.Top+rtText.Height;}else if(lableItem.Type==1)//顶部
7343
7343
  {rtText.Left=ptCenter.X+clientWidth/2-rtText.Width/2;rtText.Right=rtText.Left+rtText.Width;rtText.Top=ptTop.Y-rtText.Height;rtText.Bottom=rtText.Top+rtText.Height;}else if(lableItem.Type==2){rtText.Left=ptCenter.X+clientWidth/2-rtText.Width/2;rtText.Right=rtText.Left+rtText.Width;rtText.Top=ptBottom.Y;rtText.Bottom=rtText.Top+rtText.Height;}else{return;}this.Canvas.fillStyle=lableItem.BGColor;this.Canvas.fillRect(rtText.Left,rtText.Top,rtText.Width,rtText.Height);this.Canvas.textAlign='left';this.Canvas.textBaseline='bottom';this.Canvas.fillStyle=lableItem.TextColor;var x=rtText.Left+margin.Left;var y=rtText.Top+margin.Top+this.TextFontHeight;for(var i=0;i<lableItem.AryText.length;++i){var item=lableItem.AryText[i];var xText=x;var yText=y;if(IFrameSplitOperator.IsNumber(item.YOffset))yText+=item.YOffset;this.Canvas.fillText(item.Text,xText,yText);y+=this.TextFontHeight;}};this.FormatLabelText=function(drawPoint){if(this.HQChart){var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_TVLONGPOSITION_LABEL);if(event&&event.Callback){var sendData={Frame:this.Frame,AryLabel:null,AryPoint:drawPoint,PreventDefault:false};event.Callback(event,sendData,this);if(sendData.PreventDefault)return sendData.AryLabel;}}var ptCenter=drawPoint[0];var ptTop=drawPoint[2];var ptBottom=drawPoint[3];var aryData=[];var yValue=this.Frame.GetYData(ptCenter.Y,false);aryData.push({Type:0,AryText:[{Text:'Open: '+yValue.toFixed(2)}],BGColor:"rgb(112,128,144)",TextColor:"rgb(255,255,255)"});var yValue=this.Frame.GetYData(ptTop.Y,false);aryData.push({Type:1,AryText:[{Text:'Target: '+yValue.toFixed(2),YOffset:-1}],BGColor:this.TopAreaConfig.TextBGColor,TextColor:this.TopAreaConfig.TextColor});var yValue=this.Frame.GetYData(ptBottom.Y,false);aryData.push({Type:2,AryText:[{Text:'Stop: '+yValue.toFixed(2),YOffset:-1}],BGColor:this.BottomAreaConfig.TextBGColor,TextColor:this.BottomAreaConfig.TextColor});return aryData;};this.CalculateLabelSize=function(lableItem){lableItem.Width=0;lableItem.Height=0;for(var i=0;i<lableItem.AryText.length;++i){var item=lableItem.AryText[i];var textWidth=this.Canvas.measureText(item.Text).width;item.TextWidth=textWidth;if(lableItem.Width<textWidth)lableItem.Width=textWidth;lableItem.Height+=this.TextFontHeight;}};this.Move=function(xStep,yStep){if(this.Status!=20)return false;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==100)//整体移动
7344
- {for(var i=0;i<this.Point.length;++i){var item=this.Point[i];item.X+=xStep;item.Y+=yStep;}}else if(this.MovePointIndex===0){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];if(i==0){item.X+=xStep;item.Y+=yStep;}else if(i==1){item.Y+=yStep;}else if(i==2||i==3){item.X+=xStep;}}}else if(this.MovePointIndex==1){this.Point[1].X+=xStep;}else if(this.MovePointIndex==2){var ptCenter=this.Point[0];var item=this.Point[2];if(item.Y+yStep<ptCenter.Y)item.Y+=yStep;}else if(this.MovePointIndex==3){var ptCenter=this.Point[0];var item=this.Point[3];if(item.Y+yStep>ptCenter.Y)item.Y+=yStep;}};}function ChartDrawTVShortPosition(){this.newMethod=ChartDrawTVLongPosition;//派生
7344
+ {for(var i=0;i<this.Point.length;++i){var item=this.Point[i];item.X+=xStep;item.Y+=yStep;}}else if(this.MovePointIndex===0){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];if(i==0){item.X+=xStep;item.Y+=yStep;}else if(i==1){item.Y+=yStep;}else if(i==2||i==3){item.X+=xStep;}}}else if(this.MovePointIndex==1){this.Point[1].X+=xStep;}else if(this.MovePointIndex==2){var ptCenter=this.Point[0];var item=this.Point[2];if(item.Y+yStep<ptCenter.Y)item.Y+=yStep;}else if(this.MovePointIndex==3){var ptCenter=this.Point[0];var item=this.Point[3];if(item.Y+yStep>ptCenter.Y)item.Y+=yStep;}else{return false;}return true;};}function ChartDrawTVShortPosition(){this.newMethod=ChartDrawTVLongPosition;//派生
7345
7345
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawTVShortPosition';this.TopAreaConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.BottomArea);this.BottomAreaConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.TopArea);}function ChartDrawStorage(){//this.DrawData=new Map(); //画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
7346
7346
  this.DrawDataV2=new _map2.default();//画图工具数据 key=symbol, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
7347
7347
  this.StorageKey;this.GetEventCallback;//事件回调
@@ -8642,7 +8642,7 @@ if(this.ChartDrawStorage)this.ChartDrawStorage.SaveDrawData(drawPicture);this.Dr
8642
8642
  this.RandomDrawPictureValue=function(chart,data){if(!IFrameSplitOperator.IsNonEmptyArray(data.Value))return;var kData=this.GetKLineChart();if(!kData||!kData.Data||!IFrameSplitOperator.IsNumber(kData.Data.DataOffset)||kData.Data.DataOffset<0)return null;if(!IFrameSplitOperator.IsNonEmptyArray(kData.Data.Data))return null;var aryKData=kData.Data.Data;var startIndex=kData.Data.DataOffset;var endIndex=kData.Data.DataOffset+kData.ChartFrame.XPointCount-1;if(endIndex>=aryKData.length)endIndex=aryKData.length-1;var frameHeight=chart.Frame.ChartBorder.GetHeight();var max=chart.Frame.HorizontalMax;var min=chart.Frame.HorizontalMin;var y=chart.Frame.ChartBorder.GetBottomEx()-frameHeight*data.YFristScale;var range={Max:5,Min:2};var xRandomOffset=Math.floor(Math.random()*(range.Max-range.Min+1))+range.Min;var xValue=data.Value[0].XIndex+xRandomOffset;var firstPoint=null;chart.Value=[];for(var i=0;i<data.Value.length;++i){var item=data.Value[i];chart.Value[i]={XValue:xValue+item.XOffset};chart.Point[i]={Y:y+item.YOffset,X:chart.Frame.GetXFromIndex(xValue+item.XOffset,false)};}};//xStep,yStep 移动的偏移量
8643
8643
  this.MoveChartDrawPicture=function(x,y,isPhone,drag){var drawPicture=this.CurrentChartDrawPicture;if(!drawPicture)return false;var pixelTatio=GetDevicePixelRatio();//x,y 需要乘以放大倍速
8644
8644
  if(isPhone)pixelTatio=1;var xStep=x*pixelTatio;var yStep=y*pixelTatio;//JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
8645
- drawPicture.Move(xStep,yStep,drag);return true;};//数据长度变化 需要更新画图工具X轴索引
8645
+ if(!drawPicture.Move(xStep,yStep,drag))return false;return true;};//数据长度变化 需要更新画图工具X轴索引
8646
8646
  this.UpdateChartDrawXValue=function(){for(var i in this.ChartDrawPicture){var item=this.ChartDrawPicture[i];item.UpdateXValue();}};//注册鼠标右键事件
8647
8647
  this.OnRightMenu=function(x,y,e){var pixelTatio=GetDevicePixelRatio();//x,y 需要乘以放大倍速
8648
8648
  var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);this.PopupRightMenuV2({X:e.offsetX,Y:e.offsetY,FrameID:frameId,CursorIndex:this.CursorIndex,Point:{X:x*pixelTatio,Y:y*pixelTatio}},e);var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);if(event){var data={X:x,Y:y,Event:e,FrameID:frameId,Point:{X:x*pixelTatio,Y:y*pixelTatio},CursorIndex:this.CursorIndex};event.Callback(event,data,this);}};//右键菜单数据
@@ -15645,7 +15645,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
15645
15645
  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);};}/********************************************************************************
15646
15646
  * 版本信息输出
15647
15647
  *
15648
- */var HQCHART_VERSION="1.1.15228";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();//把给外界调用的方法暴露出来
15648
+ */var HQCHART_VERSION="1.1.15236";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();//把给外界调用的方法暴露出来
15649
15649
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
15650
15650
  // BaseIndex:BaseIndex,
15651
15651
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.15229",
3
+ "version": "1.1.15237",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -4913,6 +4913,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
4913
4913
  {
4914
4914
  this.DrawDynamicInfo();
4915
4915
  }
4916
+ else
4917
+ {
4918
+ return;
4919
+ }
4916
4920
  }
4917
4921
 
4918
4922
  drag.LastMove.X=e.clientX;
@@ -10070,7 +10074,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10070
10074
  var xStep=x*pixelTatio;
10071
10075
  var yStep=y*pixelTatio;
10072
10076
  //JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
10073
- drawPicture.Move(xStep,yStep,drag);
10077
+ if (!drawPicture.Move(xStep,yStep,drag)) return false;
10074
10078
 
10075
10079
  return true;
10076
10080
  }
@@ -35641,38 +35645,41 @@ function ChartMinuteVolumBar()
35641
35645
  if (bShowColorBar) this.Canvas.strokeStyle=this.CustomColor;
35642
35646
  var unit=this.GetVolUnit();
35643
35647
 
35644
- for(var i=data.DataOffset,j=0;i<data.Data.length && j<xPointCount;++i,++j)
35648
+ if (data && IFrameSplitOperator.IsNonEmptyArray(data.Data))
35645
35649
  {
35646
- var item = data.Data[i];
35647
- var vol=null;
35648
- if (!item) continue;
35649
- var price=null;
35650
+ for(var i=data.DataOffset,j=0;i<data.Data.length && j<xPointCount;++i,++j)
35651
+ {
35652
+ var item = data.Data[i];
35653
+ var vol=null;
35654
+ if (!item) continue;
35655
+ var price=null;
35650
35656
 
35651
- vol=item.Vol/unit;
35652
- price=item.Close;
35653
-
35654
- if (!vol) continue;
35657
+ vol=item.Vol/unit;
35658
+ price=item.Close;
35659
+
35660
+ if (!vol) continue;
35655
35661
 
35656
- var y=this.ChartFrame.GetYFromData(vol);
35657
- var x=this.ChartFrame.GetXFromIndex(j);
35658
- if (x>chartright) break;
35662
+ var y=this.ChartFrame.GetYFromData(vol);
35663
+ var x=this.ChartFrame.GetXFromIndex(j);
35664
+ if (x>chartright) break;
35659
35665
 
35660
- //价格>=上一分钟价格 红色 否则绿色
35661
- if (!bShowColorBar) this.Canvas.strokeStyle = this.GetMinuteBarColor(price, yPrice);
35666
+ //价格>=上一分钟价格 红色 否则绿色
35667
+ if (!bShowColorBar) this.Canvas.strokeStyle = this.GetMinuteBarColor(price, yPrice);
35662
35668
 
35663
- this.Canvas.beginPath();
35664
- if (isHScreen)
35665
- {
35666
- this.Canvas.moveTo(y,ToFixedPoint(x));
35667
- this.Canvas.lineTo(yBottom,ToFixedPoint(x));
35668
- }
35669
- else
35670
- {
35671
- this.Canvas.moveTo(ToFixedPoint(x),y);
35672
- this.Canvas.lineTo(ToFixedPoint(x),yBottom);
35669
+ this.Canvas.beginPath();
35670
+ if (isHScreen)
35671
+ {
35672
+ this.Canvas.moveTo(y,ToFixedPoint(x));
35673
+ this.Canvas.lineTo(yBottom,ToFixedPoint(x));
35674
+ }
35675
+ else
35676
+ {
35677
+ this.Canvas.moveTo(ToFixedPoint(x),y);
35678
+ this.Canvas.lineTo(ToFixedPoint(x),yBottom);
35679
+ }
35680
+ this.Canvas.stroke();
35681
+ if (price) yPrice=price;
35673
35682
  }
35674
- this.Canvas.stroke();
35675
- if (price) yPrice=price;
35676
35683
  }
35677
35684
 
35678
35685
  this.DrawAfterClose();
@@ -65165,6 +65172,8 @@ function IChartDrawPicture()
65165
65172
  {
65166
65173
  return false;
65167
65174
  }
65175
+
65176
+ return true;
65168
65177
  }
65169
65178
 
65170
65179
  //是否超出边界了
@@ -65194,6 +65203,8 @@ function IChartDrawPicture()
65194
65203
  var startIndex=0-offset;
65195
65204
  var endIndex=data.Data.length-offset;
65196
65205
 
65206
+ if (this.ClassName=="ChartDrawHLine") return false;
65207
+
65197
65208
  if (xStep>0)
65198
65209
  {
65199
65210
  var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);
@@ -67618,7 +67629,7 @@ function ChartDrawHLine()
67618
67629
  this.ButtonSpace=3;
67619
67630
  this.TopOffset=3;
67620
67631
 
67621
- this.TextMargin={ Left:0, Right:0, Top:0, Bottom:0, YOffset:4*GetDevicePixelRatio() };
67632
+ this.TextMargin={ Left:0, Right:0, Top:0, Bottom:0, YOffset:-1*GetDevicePixelRatio() };
67622
67633
 
67623
67634
  this.AlwaysShowLab=false; //总是显示标签
67624
67635
 
@@ -68192,7 +68203,7 @@ function ChartDrawHLine()
68192
68203
  }
68193
68204
 
68194
68205
  var xText=rtBG.Left+this.TextMargin.Left;
68195
- var yText=rtBG.Top+this.TextMargin.Top+this.TextMargin.YOffset;
68206
+ var yText=rtBG.Bottom-this.TextMargin.Bottom+this.TextMargin.YOffset;
68196
68207
 
68197
68208
  if (this.ButtonPosition==1)
68198
68209
  {
@@ -68205,7 +68216,7 @@ function ChartDrawHLine()
68205
68216
 
68206
68217
  this.Canvas.fillStyle=this.ValueTextColor
68207
68218
  this.Canvas.textAlign="left";
68208
- this.Canvas.textBaseline="top";
68219
+ this.Canvas.textBaseline="bottom";
68209
68220
  this.Canvas.fillText(strValue,xText,yText);
68210
68221
 
68211
68222
  rtDraw.Left=rtBG.Left;
@@ -69672,6 +69683,12 @@ function ChartDrawPictureParallelChannel()
69672
69683
  var yMove=this.ChannelWidth/Math.sin(angle)-yStep;
69673
69684
  this.ChannelWidth=Math.sin(angle)*yMove;
69674
69685
  }
69686
+ else
69687
+ {
69688
+ return false;
69689
+ }
69690
+
69691
+ return true;
69675
69692
  }
69676
69693
 
69677
69694
  //0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
@@ -76870,6 +76887,12 @@ function ChartDrawTVLongPosition()
76870
76887
  var item=this.Point[3];
76871
76888
  if (item.Y+yStep>ptCenter.Y) item.Y+=yStep;
76872
76889
  }
76890
+ else
76891
+ {
76892
+ return false;
76893
+ }
76894
+
76895
+ return true;
76873
76896
 
76874
76897
  }
76875
76898
  }
@@ -87813,7 +87836,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
87813
87836
  var xStep=x*pixelTatio;
87814
87837
  var yStep=y*pixelTatio;
87815
87838
  //JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
87816
- drawPicture.Move(xStep,yStep,drag);
87839
+ if (!drawPicture.Move(xStep,yStep,drag)) return false;
87817
87840
 
87818
87841
  return true;
87819
87842
  }
@@ -9009,6 +9009,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9009
9009
  {
9010
9010
  this.DrawDynamicInfo();
9011
9011
  }
9012
+ else
9013
+ {
9014
+ return;
9015
+ }
9012
9016
  }
9013
9017
 
9014
9018
  drag.LastMove.X=e.clientX;
@@ -14166,7 +14170,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
14166
14170
  var xStep=x*pixelTatio;
14167
14171
  var yStep=y*pixelTatio;
14168
14172
  //JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
14169
- drawPicture.Move(xStep,yStep,drag);
14173
+ if (!drawPicture.Move(xStep,yStep,drag)) return false;
14170
14174
 
14171
14175
  return true;
14172
14176
  }
@@ -39737,38 +39741,41 @@ function ChartMinuteVolumBar()
39737
39741
  if (bShowColorBar) this.Canvas.strokeStyle=this.CustomColor;
39738
39742
  var unit=this.GetVolUnit();
39739
39743
 
39740
- for(var i=data.DataOffset,j=0;i<data.Data.length && j<xPointCount;++i,++j)
39744
+ if (data && IFrameSplitOperator.IsNonEmptyArray(data.Data))
39741
39745
  {
39742
- var item = data.Data[i];
39743
- var vol=null;
39744
- if (!item) continue;
39745
- var price=null;
39746
+ for(var i=data.DataOffset,j=0;i<data.Data.length && j<xPointCount;++i,++j)
39747
+ {
39748
+ var item = data.Data[i];
39749
+ var vol=null;
39750
+ if (!item) continue;
39751
+ var price=null;
39746
39752
 
39747
- vol=item.Vol/unit;
39748
- price=item.Close;
39749
-
39750
- if (!vol) continue;
39753
+ vol=item.Vol/unit;
39754
+ price=item.Close;
39755
+
39756
+ if (!vol) continue;
39751
39757
 
39752
- var y=this.ChartFrame.GetYFromData(vol);
39753
- var x=this.ChartFrame.GetXFromIndex(j);
39754
- if (x>chartright) break;
39758
+ var y=this.ChartFrame.GetYFromData(vol);
39759
+ var x=this.ChartFrame.GetXFromIndex(j);
39760
+ if (x>chartright) break;
39755
39761
 
39756
- //价格>=上一分钟价格 红色 否则绿色
39757
- if (!bShowColorBar) this.Canvas.strokeStyle = this.GetMinuteBarColor(price, yPrice);
39762
+ //价格>=上一分钟价格 红色 否则绿色
39763
+ if (!bShowColorBar) this.Canvas.strokeStyle = this.GetMinuteBarColor(price, yPrice);
39758
39764
 
39759
- this.Canvas.beginPath();
39760
- if (isHScreen)
39761
- {
39762
- this.Canvas.moveTo(y,ToFixedPoint(x));
39763
- this.Canvas.lineTo(yBottom,ToFixedPoint(x));
39764
- }
39765
- else
39766
- {
39767
- this.Canvas.moveTo(ToFixedPoint(x),y);
39768
- this.Canvas.lineTo(ToFixedPoint(x),yBottom);
39765
+ this.Canvas.beginPath();
39766
+ if (isHScreen)
39767
+ {
39768
+ this.Canvas.moveTo(y,ToFixedPoint(x));
39769
+ this.Canvas.lineTo(yBottom,ToFixedPoint(x));
39770
+ }
39771
+ else
39772
+ {
39773
+ this.Canvas.moveTo(ToFixedPoint(x),y);
39774
+ this.Canvas.lineTo(ToFixedPoint(x),yBottom);
39775
+ }
39776
+ this.Canvas.stroke();
39777
+ if (price) yPrice=price;
39769
39778
  }
39770
- this.Canvas.stroke();
39771
- if (price) yPrice=price;
39772
39779
  }
39773
39780
 
39774
39781
  this.DrawAfterClose();
@@ -69261,6 +69268,8 @@ function IChartDrawPicture()
69261
69268
  {
69262
69269
  return false;
69263
69270
  }
69271
+
69272
+ return true;
69264
69273
  }
69265
69274
 
69266
69275
  //是否超出边界了
@@ -69290,6 +69299,8 @@ function IChartDrawPicture()
69290
69299
  var startIndex=0-offset;
69291
69300
  var endIndex=data.Data.length-offset;
69292
69301
 
69302
+ if (this.ClassName=="ChartDrawHLine") return false;
69303
+
69293
69304
  if (xStep>0)
69294
69305
  {
69295
69306
  var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);
@@ -71714,7 +71725,7 @@ function ChartDrawHLine()
71714
71725
  this.ButtonSpace=3;
71715
71726
  this.TopOffset=3;
71716
71727
 
71717
- this.TextMargin={ Left:0, Right:0, Top:0, Bottom:0, YOffset:4*GetDevicePixelRatio() };
71728
+ this.TextMargin={ Left:0, Right:0, Top:0, Bottom:0, YOffset:-1*GetDevicePixelRatio() };
71718
71729
 
71719
71730
  this.AlwaysShowLab=false; //总是显示标签
71720
71731
 
@@ -72288,7 +72299,7 @@ function ChartDrawHLine()
72288
72299
  }
72289
72300
 
72290
72301
  var xText=rtBG.Left+this.TextMargin.Left;
72291
- var yText=rtBG.Top+this.TextMargin.Top+this.TextMargin.YOffset;
72302
+ var yText=rtBG.Bottom-this.TextMargin.Bottom+this.TextMargin.YOffset;
72292
72303
 
72293
72304
  if (this.ButtonPosition==1)
72294
72305
  {
@@ -72301,7 +72312,7 @@ function ChartDrawHLine()
72301
72312
 
72302
72313
  this.Canvas.fillStyle=this.ValueTextColor
72303
72314
  this.Canvas.textAlign="left";
72304
- this.Canvas.textBaseline="top";
72315
+ this.Canvas.textBaseline="bottom";
72305
72316
  this.Canvas.fillText(strValue,xText,yText);
72306
72317
 
72307
72318
  rtDraw.Left=rtBG.Left;
@@ -73768,6 +73779,12 @@ function ChartDrawPictureParallelChannel()
73768
73779
  var yMove=this.ChannelWidth/Math.sin(angle)-yStep;
73769
73780
  this.ChannelWidth=Math.sin(angle)*yMove;
73770
73781
  }
73782
+ else
73783
+ {
73784
+ return false;
73785
+ }
73786
+
73787
+ return true;
73771
73788
  }
73772
73789
 
73773
73790
  //0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
@@ -80966,6 +80983,12 @@ function ChartDrawTVLongPosition()
80966
80983
  var item=this.Point[3];
80967
80984
  if (item.Y+yStep>ptCenter.Y) item.Y+=yStep;
80968
80985
  }
80986
+ else
80987
+ {
80988
+ return false;
80989
+ }
80990
+
80991
+ return true;
80969
80992
 
80970
80993
  }
80971
80994
  }
@@ -91909,7 +91932,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91909
91932
  var xStep=x*pixelTatio;
91910
91933
  var yStep=y*pixelTatio;
91911
91934
  //JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
91912
- drawPicture.Move(xStep,yStep,drag);
91935
+ if (!drawPicture.Move(xStep,yStep,drag)) return false;
91913
91936
 
91914
91937
  return true;
91915
91938
  }
@@ -154240,7 +154263,7 @@ function ScrollBarBGChart()
154240
154263
 
154241
154264
 
154242
154265
 
154243
- var HQCHART_VERSION="1.1.15228";
154266
+ var HQCHART_VERSION="1.1.15236";
154244
154267
 
154245
154268
  function PrintHQChartVersion()
154246
154269
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.15228";
8
+ var HQCHART_VERSION="1.1.15236";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -9053,6 +9053,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9053
9053
  {
9054
9054
  this.DrawDynamicInfo();
9055
9055
  }
9056
+ else
9057
+ {
9058
+ return;
9059
+ }
9056
9060
  }
9057
9061
 
9058
9062
  drag.LastMove.X=e.clientX;
@@ -14210,7 +14214,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
14210
14214
  var xStep=x*pixelTatio;
14211
14215
  var yStep=y*pixelTatio;
14212
14216
  //JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
14213
- drawPicture.Move(xStep,yStep,drag);
14217
+ if (!drawPicture.Move(xStep,yStep,drag)) return false;
14214
14218
 
14215
14219
  return true;
14216
14220
  }
@@ -39781,38 +39785,41 @@ function ChartMinuteVolumBar()
39781
39785
  if (bShowColorBar) this.Canvas.strokeStyle=this.CustomColor;
39782
39786
  var unit=this.GetVolUnit();
39783
39787
 
39784
- for(var i=data.DataOffset,j=0;i<data.Data.length && j<xPointCount;++i,++j)
39788
+ if (data && IFrameSplitOperator.IsNonEmptyArray(data.Data))
39785
39789
  {
39786
- var item = data.Data[i];
39787
- var vol=null;
39788
- if (!item) continue;
39789
- var price=null;
39790
+ for(var i=data.DataOffset,j=0;i<data.Data.length && j<xPointCount;++i,++j)
39791
+ {
39792
+ var item = data.Data[i];
39793
+ var vol=null;
39794
+ if (!item) continue;
39795
+ var price=null;
39790
39796
 
39791
- vol=item.Vol/unit;
39792
- price=item.Close;
39793
-
39794
- if (!vol) continue;
39797
+ vol=item.Vol/unit;
39798
+ price=item.Close;
39799
+
39800
+ if (!vol) continue;
39795
39801
 
39796
- var y=this.ChartFrame.GetYFromData(vol);
39797
- var x=this.ChartFrame.GetXFromIndex(j);
39798
- if (x>chartright) break;
39802
+ var y=this.ChartFrame.GetYFromData(vol);
39803
+ var x=this.ChartFrame.GetXFromIndex(j);
39804
+ if (x>chartright) break;
39799
39805
 
39800
- //价格>=上一分钟价格 红色 否则绿色
39801
- if (!bShowColorBar) this.Canvas.strokeStyle = this.GetMinuteBarColor(price, yPrice);
39806
+ //价格>=上一分钟价格 红色 否则绿色
39807
+ if (!bShowColorBar) this.Canvas.strokeStyle = this.GetMinuteBarColor(price, yPrice);
39802
39808
 
39803
- this.Canvas.beginPath();
39804
- if (isHScreen)
39805
- {
39806
- this.Canvas.moveTo(y,ToFixedPoint(x));
39807
- this.Canvas.lineTo(yBottom,ToFixedPoint(x));
39808
- }
39809
- else
39810
- {
39811
- this.Canvas.moveTo(ToFixedPoint(x),y);
39812
- this.Canvas.lineTo(ToFixedPoint(x),yBottom);
39809
+ this.Canvas.beginPath();
39810
+ if (isHScreen)
39811
+ {
39812
+ this.Canvas.moveTo(y,ToFixedPoint(x));
39813
+ this.Canvas.lineTo(yBottom,ToFixedPoint(x));
39814
+ }
39815
+ else
39816
+ {
39817
+ this.Canvas.moveTo(ToFixedPoint(x),y);
39818
+ this.Canvas.lineTo(ToFixedPoint(x),yBottom);
39819
+ }
39820
+ this.Canvas.stroke();
39821
+ if (price) yPrice=price;
39813
39822
  }
39814
- this.Canvas.stroke();
39815
- if (price) yPrice=price;
39816
39823
  }
39817
39824
 
39818
39825
  this.DrawAfterClose();
@@ -69305,6 +69312,8 @@ function IChartDrawPicture()
69305
69312
  {
69306
69313
  return false;
69307
69314
  }
69315
+
69316
+ return true;
69308
69317
  }
69309
69318
 
69310
69319
  //是否超出边界了
@@ -69334,6 +69343,8 @@ function IChartDrawPicture()
69334
69343
  var startIndex=0-offset;
69335
69344
  var endIndex=data.Data.length-offset;
69336
69345
 
69346
+ if (this.ClassName=="ChartDrawHLine") return false;
69347
+
69337
69348
  if (xStep>0)
69338
69349
  {
69339
69350
  var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);
@@ -71758,7 +71769,7 @@ function ChartDrawHLine()
71758
71769
  this.ButtonSpace=3;
71759
71770
  this.TopOffset=3;
71760
71771
 
71761
- this.TextMargin={ Left:0, Right:0, Top:0, Bottom:0, YOffset:4*GetDevicePixelRatio() };
71772
+ this.TextMargin={ Left:0, Right:0, Top:0, Bottom:0, YOffset:-1*GetDevicePixelRatio() };
71762
71773
 
71763
71774
  this.AlwaysShowLab=false; //总是显示标签
71764
71775
 
@@ -72332,7 +72343,7 @@ function ChartDrawHLine()
72332
72343
  }
72333
72344
 
72334
72345
  var xText=rtBG.Left+this.TextMargin.Left;
72335
- var yText=rtBG.Top+this.TextMargin.Top+this.TextMargin.YOffset;
72346
+ var yText=rtBG.Bottom-this.TextMargin.Bottom+this.TextMargin.YOffset;
72336
72347
 
72337
72348
  if (this.ButtonPosition==1)
72338
72349
  {
@@ -72345,7 +72356,7 @@ function ChartDrawHLine()
72345
72356
 
72346
72357
  this.Canvas.fillStyle=this.ValueTextColor
72347
72358
  this.Canvas.textAlign="left";
72348
- this.Canvas.textBaseline="top";
72359
+ this.Canvas.textBaseline="bottom";
72349
72360
  this.Canvas.fillText(strValue,xText,yText);
72350
72361
 
72351
72362
  rtDraw.Left=rtBG.Left;
@@ -73812,6 +73823,12 @@ function ChartDrawPictureParallelChannel()
73812
73823
  var yMove=this.ChannelWidth/Math.sin(angle)-yStep;
73813
73824
  this.ChannelWidth=Math.sin(angle)*yMove;
73814
73825
  }
73826
+ else
73827
+ {
73828
+ return false;
73829
+ }
73830
+
73831
+ return true;
73815
73832
  }
73816
73833
 
73817
73834
  //0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
@@ -81010,6 +81027,12 @@ function ChartDrawTVLongPosition()
81010
81027
  var item=this.Point[3];
81011
81028
  if (item.Y+yStep>ptCenter.Y) item.Y+=yStep;
81012
81029
  }
81030
+ else
81031
+ {
81032
+ return false;
81033
+ }
81034
+
81035
+ return true;
81013
81036
 
81014
81037
  }
81015
81038
  }
@@ -91953,7 +91976,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91953
91976
  var xStep=x*pixelTatio;
91954
91977
  var yStep=y*pixelTatio;
91955
91978
  //JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
91956
- drawPicture.Move(xStep,yStep,drag);
91979
+ if (!drawPicture.Move(xStep,yStep,drag)) return false;
91957
91980
 
91958
91981
  return true;
91959
91982
  }
@@ -166297,7 +166320,7 @@ function HQChartScriptWorker()
166297
166320
 
166298
166321
 
166299
166322
 
166300
- var HQCHART_VERSION="1.1.15228";
166323
+ var HQCHART_VERSION="1.1.15236";
166301
166324
 
166302
166325
  function PrintHQChartVersion()
166303
166326
  {