hqchart 1.1.14591 → 1.1.14593

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.
@@ -2058,9 +2058,11 @@ if(item.SecondKeyID==1&&e.shiftKey||item.SecondKeyID==2&&e.ctrlKey||item.SecondK
2058
2058
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYDOWN);if(event&&event.Callback){var sendData={e:e,KeyID:keyID,PreventDefault:false};event.Callback(event,sendData,this);if(sendData.PreventDefault)return;}var draw=false;if(keyID==27&&this.PopMinuteChart&&this.PopMinuteChart.IsShow()){this.PopMinuteChart.Close();draw=true;}else if(this.ChartCorssCursor&&this.ChartCorssCursor.OnKeyDown)//十字光标 隐藏显示
2059
2059
  {var sendData={e:e,KeyID:keyID,Draw:false,PreventDefault:false};this.ChartCorssCursor.OnKeyDown(sendData);draw=sendData.Draw;}if(this.OnHotKeyDown(keyID,e)){//不让滚动条滚动
2060
2060
  if(e.preventDefault)e.preventDefault();else e.returnValue=false;return;}switch(keyID){case 37://left
2061
- if((e.ctrlKey||e.shiftKey)&&this.OnCustomKeyDown){if(this.OnCustomKeyDown(keyID,e))break;}if(this.CursorIndex<=0.99999){if(!this.DataMoveLeft()){//左移数据到头了 触发下载新数据
2061
+ if((e.ctrlKey||e.shiftKey)&&this.OnCustomKeyDown){if(this.OnCustomKeyDown(keyID,e))break;}//K线 如果超出K线数据了 调整到最后一个数据
2062
+ if(this.FixCursorIndexValid&&this.FixCursorIndexValid()){this.UpdatePointByCursorIndex();this.DrawDynamicInfo();this.ShowTooltipByKeyDown();break;}if(this.CursorIndex<=0.99999){if(!this.DataMoveLeft()){//左移数据到头了 触发下载新数据
2062
2063
  if(this.DragDownloadData)this.DragDownloadData();break;}this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.ResetFrameXSplit();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");}else{--this.CursorIndex;this.UpdatePointByCursorIndex();this.DrawDynamicInfo();this.ShowTooltipByKeyDown();}break;case 39://right
2063
- if((e.ctrlKey||e.shiftKey)&&this.OnCustomKeyDown){if(this.OnCustomKeyDown(keyID,e))break;}var xPointcount=0;if(this.Frame.XPointCount)xPointcount=this.Frame.XPointCount;else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;if(this.CursorIndex+1>=xPointcount){if(!this.DataMoveRight())break;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.ResetFrameXSplit();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");}else{//判断是否在最后一个数据上
2064
+ if((e.ctrlKey||e.shiftKey)&&this.OnCustomKeyDown){if(this.OnCustomKeyDown(keyID,e))break;}//K线 如果超出K线数据了 调整到最后一个数据
2065
+ if(this.FixCursorIndexValid&&this.FixCursorIndexValid()){this.UpdatePointByCursorIndex();this.DrawDynamicInfo();this.ShowTooltipByKeyDown();break;}var xPointcount=0;if(this.Frame.XPointCount)xPointcount=this.Frame.XPointCount;else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;if(this.CursorIndex+1>=xPointcount){if(!this.DataMoveRight())break;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.ResetFrameXSplit();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");}else{//判断是否在最后一个数据上
2064
2066
  var data=null;if(this.Frame.Data)data=this.Frame.Data;else data=this.Frame.SubFrame[0].Frame.Data;if(!data)break;if(this.CursorIndex+data.DataOffset+1>=data.Data.length)break;++this.CursorIndex;this.UpdatePointByCursorIndex();this.DrawDynamicInfo();this.ShowTooltipByKeyDown();}break;case 38://up
2065
2067
  if((e.ctrlKey||e.shiftKey)&&this.OnCustomKeyDown){if(this.OnCustomKeyDown(keyID,e))break;}if(this.EnableZoomUpDown&&this.EnableZoomUpDown.Keyboard===false)break;var cursorIndex={ZoomType:this.ZoomType,IsLockRight:this.IsZoomLockRight};if(e.ctrlKey)cursorIndex.ZoomType=1;//ctrl 十字中心缩放
2066
2068
  cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(!this.Frame.ZoomUp(cursorIndex))break;this.CursorIndex=cursorIndex.Index;this.UpdatePointByCursorIndex();this.UpdataDataoffset();this.UpdateFrameMaxMin();this.ResetFrameXSplit();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");break;case 40://down
@@ -2087,7 +2089,7 @@ this.Canvas.beginPath();this.Canvas.rect(client.RightEx,border.TopEx,client.Righ
2087
2089
  this.Frame.SetFrameBorderSizeChange();this.Frame.ReDrawToolbar();this.Draw();return true;};this.OnZoomUpDownFrameY=function(obj,yMove){if(!this.Frame)return;if(!this.Frame.OnZoomUpDownFrameY(obj,yMove))return;this.Frame.SetSizeChage(true);this.Draw();};this.OnUpDonwFrameY=function(obj,yMove){if(!this.Frame)return false;if(!this.Frame.OnUpDonwFrameY(obj,yMove))return false;this.Frame.SetSizeChage(true);return true;};this.CancelZoomUpDownFrameY=function(obj){if(!this.Frame)return;if(!this.Frame.CancelZoomUpDownFrameY(obj))return;this.UpdateFrameMaxMin();this.Frame.SetSizeChage(true);this.Draw();};this.IsKLineContainer=function(){if(this.ClassName=='KLineChartContainer'||this.ClassName=='KLineChartHScreenContainer'||this.ClassName=="KLineTrainChartContainer"||this.ClassName=="CustomKLineChartContainer")return true;return false;};this.IsMinuteContainer=function(){if(this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenContainer")return true;return false;};this.UpdatePointByCursorIndex=function(type)//type 1=根据十字光标更新 2=强制取消十字光标
2088
2090
  {var pt={X:null,Y:null};pt.X=this.Frame.GetXFromIndex(this.CursorIndex);var index=Math.abs(this.CursorIndex-0.5);if(this.IsKLineContainer())index=this.CursorIndex;var data=this.Frame.Data;if(data.DataOffset+index<data.Data.length){var close=data.Data[data.DataOffset+index].Close;pt.Y=this.Frame.GetYFromData(close);}if(type==1&&this.ChartCorssCursor){if(this.ChartCorssCursor.Status==1)//十字光标显示中, 不调整位置
2089
2091
  {}else{this.LastPoint.X=this.Frame.GetXFromIndex(this.CursorIndex);var index=Math.abs(this.CursorIndex-0.5);index=parseInt(index.toFixed(0));if(this.IsKLineContainer())index=this.CursorIndex;this.LastPoint.Y=null;}}else if(type==2&&this.ChartCorssCursor)//取消鼠标位置,十字光标就不显示了
2090
- {this.LastPoint.Y=null;this.LastPoint.X=null;}else{this.LastPoint.X=pt.X;this.LastPoint.Y=pt.Y;}};this.ShowTooltipByKeyDown=function(){if(!this.KLineTooltipConfig.Enable||!this.KLineTooltipConfig.EnableKeyDown){this.HideFloatTooltip();return;}var index=Math.abs(this.CursorIndex-0.5);index=parseInt(index.toFixed(0));if(this.ClassName=='KLineChartContainer'||this.ClassName=='KLineTrainChartContainer')index=this.CursorIndex;var data=this.Frame.Data;var toolTip=new TooltipData();toolTip.Data=data.Data[data.DataOffset+index];toolTip.ChartPaint=this.ChartPaint[0];var pixelTatio=GetDevicePixelRatio();if(pixelTatio===0)pixelTatio=1;//div 缩放还是使用原始坐标
2092
+ {this.LastPoint.Y=null;this.LastPoint.X=null;}else{this.LastPoint.X=pt.X;this.LastPoint.Y=pt.Y;}};this.ShowTooltipByKeyDown=function(){if(!this.KLineTooltipConfig.Enable||!this.KLineTooltipConfig.EnableKeyDown){this.HideFloatTooltip();return;}var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return;var index=Math.abs(this.CursorIndex-0.5);index=parseInt(index.toFixed(0));if(this.ClassName=='KLineChartContainer'||this.ClassName=='KLineTrainChartContainer')index=this.CursorIndex;var dataIndex=kData.DataOffset+index;if(dataIndex<0||dataIndex>=kData.Data.length)return;var kItem=kData.Data[dataIndex];if(!kItem)return;var data=this.Frame.Data;var toolTip=new TooltipData();toolTip.Data=kItem;toolTip.ChartPaint=this.ChartPaint[0];var pixelTatio=GetDevicePixelRatio();if(pixelTatio===0)pixelTatio=1;//div 缩放还是使用原始坐标
2091
2093
  this.ShowTooltip(this.LastPoint.X/pixelTatio,this.LastPoint.Y/pixelTatio,toolTip);};this.DrawTooltipDialog=function(){};this.DrawFloatTooltip=function(point,toolTip){if(!this.FloatTooltip)return;this.UpdateFloatTooltip(point,toolTip);};this.UpdateFloatTooltip=function(point,toolTip){if(!this.FloatTooltip)return;var sendData={Tooltip:toolTip,Point:point,Symbol:this.Symbol,Name:this.Name,DataType:1};this.FloatTooltip.Update(sendData);};//更新实时行情到浮动tooltip
2092
2094
  this.UpdateHQFloatTooltip=function(item){};this.ShowTooltip=function(x,y,toolTip){var _this13=this;if(!this.IsShowTooltip)return;var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
2093
2095
  var xMove=15/pixelTatio;//顶部坐标偏移位置
@@ -8363,7 +8365,8 @@ var x,y;if(data&&IFrameSplitOperator.IsNumber(data.X)&&IFrameSplitOperator.IsNum
8363
8365
  this.UnlockCorssCursor=function(option){var xItem=this.GlobalOption.LockCorssCursor.X;xItem.Enable=false;xItem.KLine=null;if(option&&option.Draw)this.Draw();};//option={ KItem:{ Date:, Time:}}
8364
8366
  this.LockCorssCursor=function(option){if(option&&option.KItem)//指定日期时间
8365
8367
  {var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;var kItem={Date:option.KItem.Date,Time:option.KItem.Time,Index:-1};kData.FindDataIndexByDateTime([kItem]);if(kItem.Index<0)return false;var xItem=this.GlobalOption.LockCorssCursor.X;xItem.KLine={DataIndex:kItem.Index,Date:kItem.Date,Time:kItem.Time};xItem.Enable=true;}else{if(this.CursorIndex<0)return false;var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;var dataIndex=kData.DataOffset+parseInt(this.CursorIndex.toFixed(0));var kItem=kData.Data[dataIndex];if(!kItem)return false;var xItem=this.GlobalOption.LockCorssCursor.X;xItem.KLine={DataIndex:dataIndex,Date:kItem.Date,Time:kItem.Time};xItem.Enable=true;}if(option&&option.Draw)this.Draw();return true;};this.GetCorssCursorPosition=function(){var position={LastPoint:{X:this.LastPoint.X,Y:this.LastPoint.Y},CursorIndex:this.CursorIndex};if(!this.GlobalOption||!this.GlobalOption.LockCorssCursor)return position;var xItem=this.GlobalOption.LockCorssCursor.X;if(xItem.Enable&&xItem.KLine){var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return position;position.CursorIndex=xItem.KLine.DataIndex-kData.DataOffset;position.LastPoint.X=this.Frame.GetXFromIndex(position.CursorIndex,false);var border=this.Frame.ChartBorder.GetBorder();if(position.LastPoint.Y<border.Top||position.LastPoint.Y>border.Bottom)//超出图形框子, 调整为收盘价
8366
- {var kItem=kData.Data[xItem.KLine.DataIndex];var y=this.Frame.SubFrame[0].Frame.GetYFromData(kItem.Close);position.LastPoint.Y=y;}}return position;};this.GetDateTimeByPoint=function(x,y){var clientPos=this.PtInClient(x,y);if(clientPos<0)return null;if(!IFrameSplitOperator.IsNumber(x))return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame))return null;var frame=this.Frame.SubFrame[0].Frame;if(!frame)return null;var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return null;var index=parseInt(frame.GetXData(x));var dataIndex=index+kData.DataOffset;if(dataIndex<0||dataIndex>=kData.Data.length)return null;var kItem=kData.Data[dataIndex];if(!kItem)return null;var result={Date:kItem.Date,Time:kItem.Time,DataIndex:dataIndex,Index:index,ClientPos:clientPos};return result;};}//API 返回数据 转化为array[]
8368
+ {var kItem=kData.Data[xItem.KLine.DataIndex];var y=this.Frame.SubFrame[0].Frame.GetYFromData(kItem.Close);position.LastPoint.Y=y;}}return position;};this.GetDateTimeByPoint=function(x,y){var clientPos=this.PtInClient(x,y);if(clientPos<0)return null;if(!IFrameSplitOperator.IsNumber(x))return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame))return null;var frame=this.Frame.SubFrame[0].Frame;if(!frame)return null;var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return null;var index=parseInt(frame.GetXData(x));var dataIndex=index+kData.DataOffset;if(dataIndex<0||dataIndex>=kData.Data.length)return null;var kItem=kData.Data[dataIndex];if(!kItem)return null;var result={Date:kItem.Date,Time:kItem.Time,DataIndex:dataIndex,Index:index,ClientPos:clientPos};return result;};//修正十字光标位置有效的K线
8369
+ this.FixCursorIndexValid=function(){var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;var dataIndex=this.CursorIndex+kData.DataOffset;if(dataIndex>=kData.Data.length){this.CursorIndex=kData.Data.length-kData.DataOffset-1;return true;}return false;};}//API 返回数据 转化为array[]
8367
8370
  KLineChartContainer.JsonDataToHistoryData=function(data){var aryDayData=[];if(!data.data)return aryDayData;var upperSymbol=null;if(data.symbol)upperSymbol=data.symbol.toUpperCase();var isFutures=false;//是否是期货
8368
8371
  if(upperSymbol)isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);var list=data.data;var date=0,yclose=1,open=2,high=3,low=4,close=5,vol=6,amount=7,position=8;var fclose=9,yfclose=10;//结算价, 前结算价
8369
8372
  var bfactor=11,afactor=12;//前, 后复权因子
@@ -14831,7 +14834,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
14831
14834
  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);};}/********************************************************************************
14832
14835
  * 版本信息输出
14833
14836
  *
14834
- */var HQCHART_VERSION="1.1.14590";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();//把给外界调用的方法暴露出来
14837
+ */var HQCHART_VERSION="1.1.14592";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();//把给外界调用的方法暴露出来
14835
14838
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
14836
14839
  // BaseIndex:BaseIndex,
14837
14840
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.14591",
3
+ "version": "1.1.14593",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -7173,6 +7173,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7173
7173
  if (this.OnCustomKeyDown(keyID, e))
7174
7174
  break;
7175
7175
  }
7176
+
7177
+ //K线 如果超出K线数据了 调整到最后一个数据
7178
+ if (this.FixCursorIndexValid && this.FixCursorIndexValid())
7179
+ {
7180
+ this.UpdatePointByCursorIndex();
7181
+ this.DrawDynamicInfo();
7182
+ this.ShowTooltipByKeyDown();
7183
+ break;
7184
+ }
7176
7185
 
7177
7186
  if (this.CursorIndex<=0.99999)
7178
7187
  {
@@ -7204,6 +7213,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7204
7213
  break;
7205
7214
  }
7206
7215
 
7216
+ //K线 如果超出K线数据了 调整到最后一个数据
7217
+ if (this.FixCursorIndexValid && this.FixCursorIndexValid())
7218
+ {
7219
+ this.UpdatePointByCursorIndex();
7220
+ this.DrawDynamicInfo();
7221
+ this.ShowTooltipByKeyDown();
7222
+ break;
7223
+ }
7224
+
7207
7225
  var xPointcount=0;
7208
7226
  if (this.Frame.XPointCount) xPointcount=this.Frame.XPointCount;
7209
7227
  else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;
@@ -7624,13 +7642,21 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7624
7642
  return;
7625
7643
  }
7626
7644
 
7645
+ var kData=this.GetKData();
7646
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
7647
+
7627
7648
  var index=Math.abs(this.CursorIndex-0.5);
7628
7649
  index=parseInt(index.toFixed(0));
7629
7650
  if (this.ClassName=='KLineChartContainer' || this.ClassName=='KLineTrainChartContainer') index=this.CursorIndex;
7630
7651
 
7652
+ var dataIndex=kData.DataOffset+index;
7653
+ if (dataIndex<0 || dataIndex>=kData.Data.length) return;
7654
+ var kItem=kData.Data[dataIndex];
7655
+ if (!kItem) return;
7656
+
7631
7657
  var data=this.Frame.Data;
7632
7658
  var toolTip=new TooltipData();
7633
- toolTip.Data=data.Data[data.DataOffset+index];
7659
+ toolTip.Data=kItem;
7634
7660
  toolTip.ChartPaint=this.ChartPaint[0];
7635
7661
 
7636
7662
  var pixelTatio = GetDevicePixelRatio();
@@ -84558,6 +84584,22 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
84558
84584
 
84559
84585
  return result;
84560
84586
  }
84587
+
84588
+ //修正十字光标位置有效的K线
84589
+ this.FixCursorIndexValid=function()
84590
+ {
84591
+ var kData=this.GetKData();
84592
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
84593
+
84594
+ var dataIndex=this.CursorIndex+kData.DataOffset;
84595
+ if (dataIndex>=kData.Data.length)
84596
+ {
84597
+ this.CursorIndex=kData.Data.length-kData.DataOffset-1;
84598
+ return true;
84599
+ }
84600
+
84601
+ return false;
84602
+ }
84561
84603
  }
84562
84604
 
84563
84605
  //API 返回数据 转化为array[]
@@ -11269,6 +11269,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11269
11269
  if (this.OnCustomKeyDown(keyID, e))
11270
11270
  break;
11271
11271
  }
11272
+
11273
+ //K线 如果超出K线数据了 调整到最后一个数据
11274
+ if (this.FixCursorIndexValid && this.FixCursorIndexValid())
11275
+ {
11276
+ this.UpdatePointByCursorIndex();
11277
+ this.DrawDynamicInfo();
11278
+ this.ShowTooltipByKeyDown();
11279
+ break;
11280
+ }
11272
11281
 
11273
11282
  if (this.CursorIndex<=0.99999)
11274
11283
  {
@@ -11300,6 +11309,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11300
11309
  break;
11301
11310
  }
11302
11311
 
11312
+ //K线 如果超出K线数据了 调整到最后一个数据
11313
+ if (this.FixCursorIndexValid && this.FixCursorIndexValid())
11314
+ {
11315
+ this.UpdatePointByCursorIndex();
11316
+ this.DrawDynamicInfo();
11317
+ this.ShowTooltipByKeyDown();
11318
+ break;
11319
+ }
11320
+
11303
11321
  var xPointcount=0;
11304
11322
  if (this.Frame.XPointCount) xPointcount=this.Frame.XPointCount;
11305
11323
  else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;
@@ -11720,13 +11738,21 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11720
11738
  return;
11721
11739
  }
11722
11740
 
11741
+ var kData=this.GetKData();
11742
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
11743
+
11723
11744
  var index=Math.abs(this.CursorIndex-0.5);
11724
11745
  index=parseInt(index.toFixed(0));
11725
11746
  if (this.ClassName=='KLineChartContainer' || this.ClassName=='KLineTrainChartContainer') index=this.CursorIndex;
11726
11747
 
11748
+ var dataIndex=kData.DataOffset+index;
11749
+ if (dataIndex<0 || dataIndex>=kData.Data.length) return;
11750
+ var kItem=kData.Data[dataIndex];
11751
+ if (!kItem) return;
11752
+
11727
11753
  var data=this.Frame.Data;
11728
11754
  var toolTip=new TooltipData();
11729
- toolTip.Data=data.Data[data.DataOffset+index];
11755
+ toolTip.Data=kItem;
11730
11756
  toolTip.ChartPaint=this.ChartPaint[0];
11731
11757
 
11732
11758
  var pixelTatio = GetDevicePixelRatio();
@@ -88654,6 +88680,22 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
88654
88680
 
88655
88681
  return result;
88656
88682
  }
88683
+
88684
+ //修正十字光标位置有效的K线
88685
+ this.FixCursorIndexValid=function()
88686
+ {
88687
+ var kData=this.GetKData();
88688
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
88689
+
88690
+ var dataIndex=this.CursorIndex+kData.DataOffset;
88691
+ if (dataIndex>=kData.Data.length)
88692
+ {
88693
+ this.CursorIndex=kData.Data.length-kData.DataOffset-1;
88694
+ return true;
88695
+ }
88696
+
88697
+ return false;
88698
+ }
88657
88699
  }
88658
88700
 
88659
88701
  //API 返回数据 转化为array[]
@@ -145656,7 +145698,7 @@ function ScrollBarBGChart()
145656
145698
 
145657
145699
 
145658
145700
 
145659
- var HQCHART_VERSION="1.1.14590";
145701
+ var HQCHART_VERSION="1.1.14592";
145660
145702
 
145661
145703
  function PrintHQChartVersion()
145662
145704
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.14590";
8
+ var HQCHART_VERSION="1.1.14592";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -11313,6 +11313,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11313
11313
  if (this.OnCustomKeyDown(keyID, e))
11314
11314
  break;
11315
11315
  }
11316
+
11317
+ //K线 如果超出K线数据了 调整到最后一个数据
11318
+ if (this.FixCursorIndexValid && this.FixCursorIndexValid())
11319
+ {
11320
+ this.UpdatePointByCursorIndex();
11321
+ this.DrawDynamicInfo();
11322
+ this.ShowTooltipByKeyDown();
11323
+ break;
11324
+ }
11316
11325
 
11317
11326
  if (this.CursorIndex<=0.99999)
11318
11327
  {
@@ -11344,6 +11353,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11344
11353
  break;
11345
11354
  }
11346
11355
 
11356
+ //K线 如果超出K线数据了 调整到最后一个数据
11357
+ if (this.FixCursorIndexValid && this.FixCursorIndexValid())
11358
+ {
11359
+ this.UpdatePointByCursorIndex();
11360
+ this.DrawDynamicInfo();
11361
+ this.ShowTooltipByKeyDown();
11362
+ break;
11363
+ }
11364
+
11347
11365
  var xPointcount=0;
11348
11366
  if (this.Frame.XPointCount) xPointcount=this.Frame.XPointCount;
11349
11367
  else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;
@@ -11764,13 +11782,21 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11764
11782
  return;
11765
11783
  }
11766
11784
 
11785
+ var kData=this.GetKData();
11786
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
11787
+
11767
11788
  var index=Math.abs(this.CursorIndex-0.5);
11768
11789
  index=parseInt(index.toFixed(0));
11769
11790
  if (this.ClassName=='KLineChartContainer' || this.ClassName=='KLineTrainChartContainer') index=this.CursorIndex;
11770
11791
 
11792
+ var dataIndex=kData.DataOffset+index;
11793
+ if (dataIndex<0 || dataIndex>=kData.Data.length) return;
11794
+ var kItem=kData.Data[dataIndex];
11795
+ if (!kItem) return;
11796
+
11771
11797
  var data=this.Frame.Data;
11772
11798
  var toolTip=new TooltipData();
11773
- toolTip.Data=data.Data[data.DataOffset+index];
11799
+ toolTip.Data=kItem;
11774
11800
  toolTip.ChartPaint=this.ChartPaint[0];
11775
11801
 
11776
11802
  var pixelTatio = GetDevicePixelRatio();
@@ -88698,6 +88724,22 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
88698
88724
 
88699
88725
  return result;
88700
88726
  }
88727
+
88728
+ //修正十字光标位置有效的K线
88729
+ this.FixCursorIndexValid=function()
88730
+ {
88731
+ var kData=this.GetKData();
88732
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
88733
+
88734
+ var dataIndex=this.CursorIndex+kData.DataOffset;
88735
+ if (dataIndex>=kData.Data.length)
88736
+ {
88737
+ this.CursorIndex=kData.Data.length-kData.DataOffset-1;
88738
+ return true;
88739
+ }
88740
+
88741
+ return false;
88742
+ }
88701
88743
  }
88702
88744
 
88703
88745
  //API 返回数据 转化为array[]
@@ -156356,7 +156398,7 @@ function HQChartScriptWorker()
156356
156398
 
156357
156399
 
156358
156400
 
156359
- var HQCHART_VERSION="1.1.14590";
156401
+ var HQCHART_VERSION="1.1.14592";
156360
156402
 
156361
156403
  function PrintHQChartVersion()
156362
156404
  {