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.
package/lib/umychart.vue.js
CHANGED
|
@@ -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
|
|
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.
|
|
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.
|
|
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
package/src/jscommon/umychart.js
CHANGED
|
@@ -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
|
-
|
|
35648
|
+
if (data && IFrameSplitOperator.IsNonEmptyArray(data.Data))
|
|
35645
35649
|
{
|
|
35646
|
-
var
|
|
35647
|
-
|
|
35648
|
-
|
|
35649
|
-
|
|
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
|
-
|
|
35652
|
-
|
|
35653
|
-
|
|
35654
|
-
|
|
35657
|
+
vol=item.Vol/unit;
|
|
35658
|
+
price=item.Close;
|
|
35659
|
+
|
|
35660
|
+
if (!vol) continue;
|
|
35655
35661
|
|
|
35656
|
-
|
|
35657
|
-
|
|
35658
|
-
|
|
35662
|
+
var y=this.ChartFrame.GetYFromData(vol);
|
|
35663
|
+
var x=this.ChartFrame.GetXFromIndex(j);
|
|
35664
|
+
if (x>chartright) break;
|
|
35659
35665
|
|
|
35660
|
-
|
|
35661
|
-
|
|
35666
|
+
//价格>=上一分钟价格 红色 否则绿色
|
|
35667
|
+
if (!bShowColorBar) this.Canvas.strokeStyle = this.GetMinuteBarColor(price, yPrice);
|
|
35662
35668
|
|
|
35663
|
-
|
|
35664
|
-
|
|
35665
|
-
|
|
35666
|
-
|
|
35667
|
-
|
|
35668
|
-
|
|
35669
|
-
|
|
35670
|
-
|
|
35671
|
-
|
|
35672
|
-
|
|
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
|
|
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.
|
|
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="
|
|
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
|
-
|
|
39744
|
+
if (data && IFrameSplitOperator.IsNonEmptyArray(data.Data))
|
|
39741
39745
|
{
|
|
39742
|
-
var
|
|
39743
|
-
|
|
39744
|
-
|
|
39745
|
-
|
|
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
|
-
|
|
39748
|
-
|
|
39749
|
-
|
|
39750
|
-
|
|
39753
|
+
vol=item.Vol/unit;
|
|
39754
|
+
price=item.Close;
|
|
39755
|
+
|
|
39756
|
+
if (!vol) continue;
|
|
39751
39757
|
|
|
39752
|
-
|
|
39753
|
-
|
|
39754
|
-
|
|
39758
|
+
var y=this.ChartFrame.GetYFromData(vol);
|
|
39759
|
+
var x=this.ChartFrame.GetXFromIndex(j);
|
|
39760
|
+
if (x>chartright) break;
|
|
39755
39761
|
|
|
39756
|
-
|
|
39757
|
-
|
|
39762
|
+
//价格>=上一分钟价格 红色 否则绿色
|
|
39763
|
+
if (!bShowColorBar) this.Canvas.strokeStyle = this.GetMinuteBarColor(price, yPrice);
|
|
39758
39764
|
|
|
39759
|
-
|
|
39760
|
-
|
|
39761
|
-
|
|
39762
|
-
|
|
39763
|
-
|
|
39764
|
-
|
|
39765
|
-
|
|
39766
|
-
|
|
39767
|
-
|
|
39768
|
-
|
|
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
|
|
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.
|
|
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="
|
|
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.
|
|
154266
|
+
var HQCHART_VERSION="1.1.15236";
|
|
154244
154267
|
|
|
154245
154268
|
function PrintHQChartVersion()
|
|
154246
154269
|
{
|
|
@@ -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
|
-
|
|
39788
|
+
if (data && IFrameSplitOperator.IsNonEmptyArray(data.Data))
|
|
39785
39789
|
{
|
|
39786
|
-
var
|
|
39787
|
-
|
|
39788
|
-
|
|
39789
|
-
|
|
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
|
-
|
|
39792
|
-
|
|
39793
|
-
|
|
39794
|
-
|
|
39797
|
+
vol=item.Vol/unit;
|
|
39798
|
+
price=item.Close;
|
|
39799
|
+
|
|
39800
|
+
if (!vol) continue;
|
|
39795
39801
|
|
|
39796
|
-
|
|
39797
|
-
|
|
39798
|
-
|
|
39802
|
+
var y=this.ChartFrame.GetYFromData(vol);
|
|
39803
|
+
var x=this.ChartFrame.GetXFromIndex(j);
|
|
39804
|
+
if (x>chartright) break;
|
|
39799
39805
|
|
|
39800
|
-
|
|
39801
|
-
|
|
39806
|
+
//价格>=上一分钟价格 红色 否则绿色
|
|
39807
|
+
if (!bShowColorBar) this.Canvas.strokeStyle = this.GetMinuteBarColor(price, yPrice);
|
|
39802
39808
|
|
|
39803
|
-
|
|
39804
|
-
|
|
39805
|
-
|
|
39806
|
-
|
|
39807
|
-
|
|
39808
|
-
|
|
39809
|
-
|
|
39810
|
-
|
|
39811
|
-
|
|
39812
|
-
|
|
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
|
|
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.
|
|
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="
|
|
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.
|
|
166323
|
+
var HQCHART_VERSION="1.1.15236";
|
|
166301
166324
|
|
|
166302
166325
|
function PrintHQChartVersion()
|
|
166303
166326
|
{
|