hqchart 1.1.15816 → 1.1.15821

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.
@@ -4074,14 +4074,15 @@ var xText=ptMax.Y;var yText=ptMax.X;if(IFrameSplitOperator.IsNumber(highYOffset)
4074
4074
  if(ptMax.Align=='left')text=leftArrow+text;else text=text+rightArrow;this.Canvas.fillText(text,0,0);this.Canvas.restore();var xText=ptMin.Y;var yText=ptMin.X;if(IFrameSplitOperator.IsNumber(lowYOffset))xText+=lowYOffset;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);var text=title.Low;this.Canvas.font=this.TextFont;if(title.LowColor)this.Canvas.fillStyle=title.LowColor;else this.Canvas.fillStyle=this.TextColor;this.Canvas.textAlign=ptMin.Align;this.Canvas.textBaseline='top';//var text=ptMin.Value.toFixed(defaultfloatPrecision);
4075
4075
  if(ptMin.Align=='left')text=leftArrow+text;else text=text+rightArrow;this.Canvas.fillText(text,0,0);this.Canvas.restore();};//画某一天的信息地雷
4076
4076
  this.DrawInfo=function(item){if(!this.InfoData||this.InfoData.size<=0)return;var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var bottom=this.ChartBorder.GetBottom();var top=this.ChartBorder.GetTop();var topTitle=this.ChartBorder.GetTopTitle();var key=''+item.DayData.Date;if(this.Data.DataType==1)key=item.DayData.Date+'-'+item.DayData.Time;if(!this.InfoData.has(key))return;var infoData=this.InfoData.get(key);if(!infoData||infoData.Data.length<=0)return;this.Canvas.restore();this.Canvas.save();this.ClipWindow(isHScreen);var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
4077
- var iconDySize=dataWidth+distanceWidth;var minIconSize=18*pixelTatio;var maxIconSize=25*pixelTatio;if(g_JSChartResource.KLine.Info&&IFrameSplitOperator.IsNumber(g_JSChartResource.KLine.Info.MaxSize))maxIconSize=g_JSChartResource.KLine.Info.MaxSize;if(g_JSChartResource.KLine.Info&&IFrameSplitOperator.IsNumber(g_JSChartResource.KLine.Info.MinSize))minIconSize=g_JSChartResource.KLine.Info.MinSize;var bShowNum=true;if(iconDySize<=15)bShowNum=false;if(iconDySize<minIconSize)iconDySize=minIconSize;else if(iconDySize>maxIconSize)iconDySize=maxIconSize;var text='',title='';var mapImage=new _map2.default();var iconTop=item.YMax+1*pixelTatio;var iconBottom=item.YMin+1*pixelTatio+iconSize;var drawTop=true;var yOffset=0;for(var i in infoData.Data){var infoItem=infoData.Data[i];var imageInfo=mapImage.get(infoItem.InfoType);if(!imageInfo){var icon=JSKLineInfoMap.GetIconFont(infoItem.InfoType);this.Canvas.fillStyle=icon.Color;var iconSize=iconDySize;if(IFrameSplitOperator.IsNumber(icon.Size))iconSize=icon.Size;//固定大小
4077
+ var iconDySize=dataWidth+distanceWidth;var minIconSize=18*pixelTatio;var maxIconSize=25*pixelTatio;if(g_JSChartResource.KLine.Info&&IFrameSplitOperator.IsNumber(g_JSChartResource.KLine.Info.MaxSize))maxIconSize=g_JSChartResource.KLine.Info.MaxSize;if(g_JSChartResource.KLine.Info&&IFrameSplitOperator.IsNumber(g_JSChartResource.KLine.Info.MinSize))minIconSize=g_JSChartResource.KLine.Info.MinSize;var bShowNum=true;if(iconDySize<=15)bShowNum=false;if(iconDySize<minIconSize)iconDySize=minIconSize;else if(iconDySize>maxIconSize)iconDySize=maxIconSize;var text='',title='';var mapImage=new _map2.default();var iconTop=item.YMax+1*pixelTatio;var iconBottom=item.YMin+1*pixelTatio+iconSize;var drawTop=true;var yOffset=0,yTopOffset=0;for(var i in infoData.Data){var infoItem=infoData.Data[i];var imageInfo=mapImage.get(infoItem.InfoType);if(!imageInfo){var icon=JSKLineInfoMap.GetIconFont(infoItem.InfoType);this.Canvas.fillStyle=icon.Color;var iconSize=iconDySize;if(IFrameSplitOperator.IsNumber(icon.Size))iconSize=icon.Size;//固定大小
4078
4078
  this.Canvas.font=iconSize+'px '+icon.Family;var infoPosition=this.InfoPosition;if(IFrameSplitOperator.IsNumber(icon.Position))infoPosition=icon.Position;//固定输出位置
4079
4079
  var bShowNumber=true;if(IFrameSplitOperator.IsBool(icon.IsShowNumber))bShowNumber=icon.IsShowNumber;if(isHScreen){this.Canvas.textBaseline="middle";this.Canvas.textAlign="left";this.Canvas.fillText(icon.HScreenText,iconTop,item.XCenter,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,iconTop-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:iconTop,Y:item.XCenter},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);iconTop+=iconSize;}else{this.Canvas.textBaseline="bottom";this.Canvas.textAlign="center";if(infoPosition===1)//底部
4080
- {var yBottom=bottom+yOffset;this.Canvas.fillText(icon.Text,item.XCenter,yBottom,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:yBottom},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);yOffset-=iconSize;}else if(infoPosition===2)//顶部
4081
- {var yBottom=topTitle+iconSize+1;this.Canvas.fillText(icon.Text,item.XCenter,yBottom,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:yBottom},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);}else{if(drawTop){this.Canvas.fillText(icon.Text,item.XCenter,iconTop,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,iconTop-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:iconTop},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);iconTop-=iconSize;if(iconTop-iconSize<top)drawTop=false;}else//上面显示不下,就显示在下面
4082
- {this.Canvas.fillText(icon.Text,item.XCenter,iconBottom,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,iconBottom-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:iconBottom},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);iconBottom+=iconSize;}}}}else{imageInfo.Data.push(infoItem);}}var numText;if(g_JSChartResource.KLine.NumIcon){if(isHScreen)numText=g_JSChartResource.KLine.NumIcon.HScreenText;else numText=g_JSChartResource.KLine.NumIcon.Text;}var _iteratorNormalCompletion5=true;var _didIteratorError5=false;var _iteratorError5=undefined;try{for(var _iterator5=(0,_getIterator3.default)(mapImage),_step5;!(_iteratorNormalCompletion5=(_step5=_iterator5.next()).done);_iteratorNormalCompletion5=true){var item=_step5.value;var value=item[1];if(value.Data.length>=2&&numText&&bShowNum&&value.IsShowNumber)//太小了 就不显示了
4080
+ {var yBottom=bottom+yOffset;var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);this.DrawInfoIcon(item,icon,iconRect);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:yBottom},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);yOffset-=iconSize;}else if(infoPosition===2)//顶部
4081
+ {var yBottom=topTitle+iconSize+1+yTopOffset;var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);this.DrawInfoIcon(item,icon,iconRect);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:yBottom},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);yTopOffset+=iconSize;}else{if(drawTop)//K线上面
4082
+ {var iconRect=new Rect(item.XCenter-iconSize/2,iconTop-iconSize,iconSize,iconSize);this.DrawInfoIcon(item,icon,iconRect);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:iconTop},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);iconTop-=iconSize;if(iconTop-iconSize<top)drawTop=false;}else//上面显示不下,就显示在K线下面
4083
+ {var iconRect=new Rect(item.XCenter-iconSize/2,iconBottom-iconSize,iconSize,iconSize);this.DrawInfoIcon(item,icon,iconRect);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:iconBottom},IsShowNumber:bShowNumber};mapImage.set(infoItem.InfoType,infoCache);iconBottom+=iconSize;}}}}else{imageInfo.Data.push(infoItem);}}var numText;if(g_JSChartResource.KLine.NumIcon){if(isHScreen)numText=g_JSChartResource.KLine.NumIcon.HScreenText;else numText=g_JSChartResource.KLine.NumIcon.Text;}var _iteratorNormalCompletion5=true;var _didIteratorError5=false;var _iteratorError5=undefined;try{for(var _iterator5=(0,_getIterator3.default)(mapImage),_step5;!(_iteratorNormalCompletion5=(_step5=_iterator5.next()).done);_iteratorNormalCompletion5=true){var item=_step5.value;var value=item[1];if(value.Data.length>=2&&numText&&bShowNum&&value.IsShowNumber)//太小了 就不显示了
4083
4084
  {var iconID=value.Data.length;if(iconID>=numText.length)iconID=0;this.Canvas.fillStyle=g_JSChartResource.KLine.NumIcon.Color;var text=numText[iconID];this.Canvas.fillText(text,value.TextRect.X,value.TextRect.Y,iconSize);}if(!isHScreen)this.InfoTooltipRect.push(value);//横屏没有tooltip
4084
- }}catch(err){_didIteratorError5=true;_iteratorError5=err;}finally{try{if(!_iteratorNormalCompletion5&&_iterator5.return){_iterator5.return();}}finally{if(_didIteratorError5){throw _iteratorError5;}}}this.Canvas.restore();this.Canvas.save();this.ClipClient(isHScreen);};//画交易图标
4085
+ }}catch(err){_didIteratorError5=true;_iteratorError5=err;}finally{try{if(!_iteratorNormalCompletion5&&_iterator5.return){_iterator5.return();}}finally{if(_didIteratorError5){throw _iteratorError5;}}}this.Canvas.restore();this.Canvas.save();this.ClipClient(isHScreen);};this.DrawInfoIcon=function(item,iconItem,rtIcon){if(iconItem.BGColor){this.Canvas.fillStyle=iconItem.BGColor;this.Canvas.fillRect(rtIcon.X,rtIcon.Y,rtIcon.Width,rtIcon.Height);}this.Canvas.fillStyle=iconItem.Color;this.Canvas.fillText(iconItem.Text,item.XCenter,rtIcon.Y+rtIcon.Height,rtIcon.Width);};//画交易图标
4085
4086
  this.DrawTradeIcon=function(){if(!this.TradeData)return;var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+2.0;var chartright=this.ChartBorder.GetRight();var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+2.0;chartright=this.ChartBorder.GetBottom();}var sellData=this.TradeData.Sell;var buyData=this.TradeData.Buy;var iconSize=dataWidth+distanceWidth;var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
4086
4087
  var iconSizeMax=24*pixelTatio,iconSizeMin=12*pixelTatio;if(iconSize<iconSizeMin)iconSize=iconSizeMin;else if(iconSize>iconSizeMax)iconSize=iconSizeMax;this.Canvas.font=iconSize+'px '+this.TradeIcon.Family;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var data=this.Data.Data[i];if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var buy=false,sell=false;if(sellData&&i<sellData.length)sell=sellData[i]>0;if(buyData&&i<buyData.length)buy=buyData[i]>0;if(!sell&&!buy)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);var y=yHigh;if(buy){this.Canvas.fillStyle=this.TradeIcon.Buy.Color;if(isHScreen){this.Canvas.textAlign='right';this.Canvas.textBaseline='middle';this.Canvas.fillText(this.TradeIcon.Buy.HScreenText,yLow,x);}else{this.Canvas.textAlign='center';this.Canvas.textBaseline='top';this.Canvas.fillText(this.TradeIcon.Buy.Text,x,yLow);var iconRect=new Rect(x-iconSize/2,yLow,iconSize,iconSize);var iconData={Data:{Type:1,KData:data,Name:this.TradeData.Name,Param:this.TradeData.Param},Rect:iconRect,TextRect:{X:x,Y:yLow}};this.TradeIconTooltipRect.push(iconData);}}if(sell){this.Canvas.fillStyle=this.TradeIcon.Sell.Color;if(isHScreen){this.Canvas.textAlign='left';this.Canvas.textBaseline='middle';this.Canvas.fillText(this.TradeIcon.Sell.HScreenText,yHigh,x);}else{this.Canvas.textAlign='center';this.Canvas.textBaseline='bottom';this.Canvas.fillText(this.TradeIcon.Sell.Text,x,yHigh);var iconRect=new Rect(x-iconSize/2,yHigh-iconSize,iconSize,iconSize);var iconData={Data:{Type:2,KData:data,Name:this.TradeData.Name,Param:this.TradeData.Param},Rect:iconRect,TextRect:{X:x,Y:yHigh}};this.TradeIconTooltipRect.push(iconData);}}}};this.GetTooltipData=function(x,y,tooltip){if(!this.IsShow)return false;for(var i in this.TradeIconTooltipRect){var item=this.TradeIconTooltipRect[i];if(!item.Rect)continue;var rect=item.Rect;var left=rect.X,top=rect.Y;var right=left+rect.Width;var bottom=top+rect.Height;if(x>=left&&x<=right&&y>=top&&y<=bottom){JSConsole.Chart.Log('[ChartKLine::GetTooltipData] trade icon ',item);tooltip.Data=item;tooltip.ChartPaint=this;tooltip.Type=2;//指标
4087
4088
  return true;}}for(var i in this.InfoTooltipRect){var item=this.InfoTooltipRect[i];if(!item.Rect)continue;var rect=item.Rect;var left=rect.X,top=rect.Y;var right=left+rect.Width;var bottom=top+rect.Height;if(x>=left&&x<=right&&y>=top&&y<=bottom){//JSConsole.Chart.Log('[ChartKLine::GetTooltipData] info ', item);
@@ -8723,11 +8724,12 @@ var item=windows[i];if(!item)continue;if(item.Script){this.WindowIndex[i]=new Sc
8723
8724
  {obj.Update=true;}else{if(this.ChartPaint.length>0){var klinePaint=this.ChartPaint[0];klinePaint.InfoData=new _map2.default();}obj.Update=false;}//信息地雷信息
8724
8725
  if(!IFrameSplitOperator.IsNonEmptyArray(this.ChartInfo))return;for(var i=0;i<this.ChartInfo.length;++i){this.ChartInfo[i].RequestData(this,obj);}};//设置K线信息地雷
8725
8726
  this.SetKLineInfo=function(aryInfo,bUpdate){this.ChartInfo=[];//先清空
8726
- for(var i in aryInfo){var infoItem=JSKLineInfoMap.Get(aryInfo[i]);if(!infoItem)continue;var item=infoItem.Create();item.MaxRequestDataCount=this.MaxRequestDataCount;this.ChartInfo.push(item);}if(bUpdate==true)this.ReqeustKLineInfoData({FunctionName:"SetKLineInfo"});};//添加信息地雷
8727
- this.AddKLineInfo=function(infoName,bUpdate){var classInfo=JSKLineInfoMap.GetClassInfo(infoName);if(!classInfo){console.warn("[KLineChartContainer::AddKLineInfo] can't find infoname=",infoName);return;}for(var i in this.ChartInfo){var item=this.ChartInfo[i];if(item.ClassName==classInfo.ClassName)//已经存在
8728
- return;}var infoItem=JSKLineInfoMap.Get(infoName);if(!infoItem)return;var item=infoItem.Create();item.MaxRequestDataCount=this.MaxRequestDataCount;this.ChartInfo.push(item);if(bUpdate==true){item.RequestData(this);//信息地雷信息
8729
- }};//更新信息地雷数据 Option :{ InsertNew:, 如果没有找到对应的地雷,是否插入新的地雷, Update:是否立即请求数据 }
8730
- this.UpdateKLineInfo=function(infoName,option){var classInfo=JSKLineInfoMap.GetClassInfo(infoName);if(!classInfo){console.warn("[KLineChartContainer::UpdateKLineInfo] can't find infoname=",infoName);return;}var bInsertNew=false,bUpdate=false;if(option){if(IFrameSplitOperator.IsBoolean(option.InsertNew))bInsertNew=option.InsertNew;if(IFrameSplitOperator.IsBoolean(option.Update))bUpdate=option.Update;}var finder=null;for(var i=0;i<this.ChartInfo.length;++i){var item=this.ChartInfo[i];if(item.ClassName==classInfo.ClassName){finder=item;break;}}if(!finder){if(bInsertNew===true){var infoItem=JSKLineInfoMap.Get(infoName);if(!infoItem)return;var item=infoItem.Create();item.MaxRequestDataCount=this.MaxRequestDataCount;this.ChartInfo.push(item);finder=item;}else{return;}}if(bUpdate==true)finder.RequestData(this);//信息地雷信息
8727
+ for(var i in aryInfo){var infoItem=JSKLineInfoMap.Get(aryInfo[i]);if(!infoItem)continue;var item=infoItem.Create();item.MaxRequestDataCount=this.MaxRequestDataCount;this.ChartInfo.push(item);}if(bUpdate==true)this.ReqeustKLineInfoData({FunctionName:"SetKLineInfo"});};//option={ ClassName:, Name: }
8728
+ this.GetKLineInfo=function(option){if(!option)return null;if(!IFrameSplitOperator.IsNonEmptyArray(this.ChartInfo))return null;var className=null;if(option.Name){var classInfo=JSKLineInfoMap.GetClassInfo(option.Name);if(classInfo)className=classInfo.ClassName;}if(!className)return null;for(var i=0;i<this.ChartInfo.length;++i){var item=this.ChartInfo[i];if(item.ClassName==className)//已经存在
8729
+ return item;}return null;};//添加信息地雷
8730
+ this.AddKLineInfo=function(infoName,bUpdate){var item=this.GetKLineInfo({Name:infoName});if(item)return;var infoItem=JSKLineInfoMap.Get(infoName);if(!infoItem){console.warn('[KLineChartContainer::AddKLineInfo] can\'t find infoName='+infoName);return;}var item=infoItem.Create();item.MaxRequestDataCount=this.MaxRequestDataCount;this.ChartInfo.push(item);if(bUpdate==true){item.RequestData(this);//信息地雷信息
8731
+ }};//更新信息地雷列表 Option :{ InsertNew:, 如果没有找到对应的地雷,是否插入新的地雷, Update:是否立即请求数据 }
8732
+ this.UpdateKLineInfo=function(infoName,option){var bInsertNew=false,bUpdate=false;if(option){if(IFrameSplitOperator.IsBoolean(option.InsertNew))bInsertNew=option.InsertNew;if(IFrameSplitOperator.IsBoolean(option.Update))bUpdate=option.Update;}var finder=this.GetKLineInfo({Name:infoName});if(!finder){if(bInsertNew===true){var infoItem=JSKLineInfoMap.Get(infoName);if(!infoItem){console.warn('[KLineChartContainer::UpdateKLineInfo] can\'t find infoname='+infoName);return;}var item=infoItem.Create();item.MaxRequestDataCount=this.MaxRequestDataCount;this.ChartInfo.push(item);finder=item;}else{return;}}if(bUpdate==true)finder.RequestData(this);//信息地雷信息
8731
8733
  };//删除信息地理
8732
8734
  this.DeleteKLineInfo=function(infoName){var classInfo=JSKLineInfoMap.GetClassInfo(infoName);if(!classInfo){console.warn("[KLineChartContainer::DeleteKLineInfo] can't find infoname=",infoName);return;}for(var i=0;i<this.ChartInfo.length;++i){var item=this.ChartInfo[i];if(item.ClassName==classInfo.ClassName){this.ChartInfo.splice(i,1);this.UpdataChartInfo();this.Draw();break;}}};//清空所有的信息地理
8733
8735
  this.ClearKLineInfo=function(){if(!this.ChartInfo||this.ChartInfo.length<=0)return;this.ChartInfo=[];var klinePaint=this.ChartPaint[0];klinePaint.InfoData=null;this.Draw();};//增加叠加股票
@@ -16396,7 +16398,7 @@ if(this.MouseOnItem){if(this.MouseOnItem.Data==item)color=this.TextConfig.MouseO
16396
16398
  */this.Canvas.restore();this.ResizeDataCount(endIndex);};this.ResizeDataCount=function(startIndex){if(!IFrameSplitOperator.IsNumber(startIndex))return;if(startIndex<=0)return;if(this.LimitCount<=0)return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.AryText))return;if(this.Data.AryText.length<=this.LimitCount)return;var delCount=this.Data.AryText.length-this.LimitCount;for(var i=0;i<delCount&&i<startIndex;++i){this.Data.AryText.shift();}};this.GetTooltipData=function(x,y,tooltip){var rtClient=this.GetClientRect();if(x>=rtClient.Left&&x<=rtClient.Right){for(var i=0;i<this.AryRect.length;++i){var item=this.AryRect[i];if(Path2DHelper.PtInRect(x,y,item.Rect)){tooltip.Data=item;tooltip.ChartPaint=this;tooltip.Type=1;return true;}}}return false;};this.ScrollStep=function(defaultStep){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.AryText))return false;if(!this.FirstItem)return false;var moveStep=this.MoveStep;if(IFrameSplitOperator.IsNumber(defaultStep))moveStep=defaultStep;var rtClient=this.GetClientRect();var left=rtClient.Left;var right=rtClient.Right;var width=this.FirstItem.Move.Width;var xOffset=this.FirstItem.Move.XOffset+moveStep;if(right-xOffset+width<left){var startIndex=this.GetDataIndex(this.FirstItem);nextIndex=startIndex-1;if(nextIndex<0){var index=this.Data.AryText.length-1;this.FirstItem=this.Data.AryText[index];this.FirstItem.Move={XOffset:0};}else{this.FirstItem=this.Data.AryText[nextIndex];this.FirstItem.Move={XOffset:xOffset-width};}}else{this.FirstItem.Move.XOffset=xOffset;}return true;};}/********************************************************************************
16397
16399
  * 版本信息输出
16398
16400
  *
16399
- */var HQCHART_VERSION="1.1.15815";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();//把给外界调用的方法暴露出来
16401
+ */var HQCHART_VERSION="1.1.15820";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();//把给外界调用的方法暴露出来
16400
16402
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
16401
16403
  // BaseIndex:BaseIndex,
16402
16404
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.15816",
3
+ "version": "1.1.15821",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -36035,7 +36035,7 @@ function ChartKLine()
36035
36035
  var iconTop=item.YMax+1*pixelTatio;
36036
36036
  var iconBottom=item.YMin+1*pixelTatio+iconSize;
36037
36037
  var drawTop=true;
36038
- var yOffset=0;
36038
+ var yOffset=0, yTopOffset=0;
36039
36039
  for(var i in infoData.Data)
36040
36040
  {
36041
36041
  var infoItem=infoData.Data[i];
@@ -36071,35 +36071,41 @@ function ChartKLine()
36071
36071
  if (infoPosition===1) //底部
36072
36072
  {
36073
36073
  var yBottom=bottom+yOffset;
36074
- this.Canvas.fillText(icon.Text,item.XCenter,yBottom,iconSize);
36075
36074
  var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);
36075
+ this.DrawInfoIcon(item, icon, iconRect);
36076
+
36076
36077
  var infoCache={ Data:new Array(infoItem), Rect:iconRect, Type:infoItem.InfoType, TextRect:{X:item.XCenter, Y:yBottom}, IsShowNumber:bShowNumber };
36077
36078
  mapImage.set(infoItem.InfoType,infoCache);
36078
36079
  yOffset-=iconSize;
36079
36080
  }
36080
36081
  else if (infoPosition===2) //顶部
36081
36082
  {
36082
- var yBottom=topTitle+iconSize+1;
36083
- this.Canvas.fillText(icon.Text,item.XCenter,yBottom,iconSize);
36083
+ var yBottom=topTitle+iconSize+1+yTopOffset;
36084
36084
  var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);
36085
+ this.DrawInfoIcon(item, icon, iconRect);
36086
+
36085
36087
  var infoCache={ Data:new Array(infoItem), Rect:iconRect, Type:infoItem.InfoType, TextRect:{X:item.XCenter, Y:yBottom}, IsShowNumber:bShowNumber };
36086
36088
  mapImage.set(infoItem.InfoType,infoCache);
36089
+
36090
+ yTopOffset+=iconSize;
36087
36091
  }
36088
36092
  else
36089
36093
  {
36090
- if (drawTop)
36094
+ if (drawTop) //K线上面
36091
36095
  {
36092
- this.Canvas.fillText(icon.Text,item.XCenter,iconTop,iconSize);
36093
36096
  var iconRect=new Rect(item.XCenter-iconSize/2,iconTop-iconSize,iconSize,iconSize);
36097
+ this.DrawInfoIcon(item, icon, iconRect);
36098
+
36094
36099
  var infoCache={ Data:new Array(infoItem), Rect:iconRect, Type:infoItem.InfoType, TextRect:{X:item.XCenter, Y:iconTop}, IsShowNumber:bShowNumber };
36095
36100
  mapImage.set(infoItem.InfoType,infoCache);
36096
36101
  iconTop-=iconSize;
36097
36102
  if (iconTop-iconSize<top ) drawTop=false;
36098
36103
  }
36099
- else //上面显示不下,就显示在下面
36104
+ else //上面显示不下,就显示在K线下面
36100
36105
  {
36101
- this.Canvas.fillText(icon.Text,item.XCenter,iconBottom,iconSize);
36102
36106
  var iconRect=new Rect(item.XCenter-iconSize/2,iconBottom-iconSize,iconSize,iconSize);
36107
+ this.DrawInfoIcon(item, icon, iconRect);
36108
+
36103
36109
  var infoCache={ Data:new Array(infoItem), Rect:iconRect, Type:infoItem.InfoType, TextRect:{X:item.XCenter, Y:iconBottom} , IsShowNumber:bShowNumber};
36104
36110
  mapImage.set(infoItem.InfoType,infoCache);
36105
36111
  iconBottom+=iconSize;
@@ -36139,6 +36145,18 @@ function ChartKLine()
36139
36145
  this.ClipClient(isHScreen);
36140
36146
  }
36141
36147
 
36148
+ this.DrawInfoIcon=function(item, iconItem, rtIcon)
36149
+ {
36150
+ if (iconItem.BGColor)
36151
+ {
36152
+ this.Canvas.fillStyle=iconItem.BGColor;
36153
+ this.Canvas.fillRect(rtIcon.X, rtIcon.Y, rtIcon.Width, rtIcon.Height);
36154
+ }
36155
+
36156
+ this.Canvas.fillStyle=iconItem.Color;
36157
+ this.Canvas.fillText(iconItem.Text,item.XCenter,rtIcon.Y+rtIcon.Height, rtIcon.Width);
36158
+ }
36159
+
36142
36160
  //画交易图标
36143
36161
  this.DrawTradeIcon=function()
36144
36162
  {
@@ -94991,25 +95009,44 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
94991
95009
  if (bUpdate==true) this.ReqeustKLineInfoData({ FunctionName:"SetKLineInfo" });
94992
95010
  }
94993
95011
 
94994
- //添加信息地雷
94995
- this.AddKLineInfo=function(infoName,bUpdate)
95012
+
95013
+ //option={ ClassName:, Name: }
95014
+ this.GetKLineInfo=function(option)
94996
95015
  {
94997
- var classInfo=JSKLineInfoMap.GetClassInfo(infoName);
94998
- if (!classInfo)
95016
+ if (!option) return null;
95017
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.ChartInfo)) return null;
95018
+
95019
+ var className=null;
95020
+ if (option.Name)
94999
95021
  {
95000
- console.warn("[KLineChartContainer::AddKLineInfo] can't find infoname=", infoName);
95001
- return;
95022
+ var classInfo=JSKLineInfoMap.GetClassInfo(option.Name);
95023
+ if (classInfo) className=classInfo.ClassName;
95002
95024
  }
95003
95025
 
95004
- for(var i in this.ChartInfo)
95026
+ if (!className) return null;
95027
+
95028
+ for(var i=0; i<this.ChartInfo.length; ++i)
95005
95029
  {
95006
95030
  var item=this.ChartInfo[i];
95007
- if (item.ClassName==classInfo.ClassName) //已经存在
95008
- return;
95031
+ if (item.ClassName==className) //已经存在
95032
+ return item;
95009
95033
  }
95010
95034
 
95035
+ return null;
95036
+ }
95037
+
95038
+ //添加信息地雷
95039
+ this.AddKLineInfo=function(infoName,bUpdate)
95040
+ {
95041
+ var item=this.GetKLineInfo({ Name:infoName });
95042
+ if (item) return;
95043
+
95011
95044
  var infoItem=JSKLineInfoMap.Get(infoName);
95012
- if (!infoItem) return;
95045
+ if (!infoItem)
95046
+ {
95047
+ console.warn(`[KLineChartContainer::AddKLineInfo] can't find infoName=${infoName}`);
95048
+ return;
95049
+ }
95013
95050
 
95014
95051
  var item=infoItem.Create();
95015
95052
  item.MaxRequestDataCount=this.MaxRequestDataCount;
@@ -95021,39 +95058,28 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
95021
95058
  }
95022
95059
  }
95023
95060
 
95024
- //更新信息地雷数据 Option :{ InsertNew:, 如果没有找到对应的地雷,是否插入新的地雷, Update:是否立即请求数据 }
95061
+ //更新信息地雷列表 Option :{ InsertNew:, 如果没有找到对应的地雷,是否插入新的地雷, Update:是否立即请求数据 }
95025
95062
  this.UpdateKLineInfo=function(infoName, option)
95026
95063
  {
95027
- var classInfo=JSKLineInfoMap.GetClassInfo(infoName);
95028
- if (!classInfo)
95029
- {
95030
- console.warn("[KLineChartContainer::UpdateKLineInfo] can't find infoname=", infoName);
95031
- return;
95032
- }
95033
-
95034
95064
  var bInsertNew=false, bUpdate=false;
95035
95065
  if (option)
95036
95066
  {
95037
95067
  if (IFrameSplitOperator.IsBoolean(option.InsertNew)) bInsertNew=option.InsertNew;
95038
95068
  if (IFrameSplitOperator.IsBoolean(option.Update)) bUpdate=option.Update;
95039
95069
  }
95040
- var finder=null;
95041
- for(var i=0;i<this.ChartInfo.length; ++i)
95042
- {
95043
- var item=this.ChartInfo[i];
95044
- if (item.ClassName==classInfo.ClassName)
95045
- {
95046
- finder=item;
95047
- break;
95048
- }
95049
- }
95050
95070
 
95071
+ var finder=this.GetKLineInfo({ Name:infoName });
95072
+
95051
95073
  if (!finder)
95052
95074
  {
95053
95075
  if (bInsertNew===true)
95054
95076
  {
95055
95077
  var infoItem=JSKLineInfoMap.Get(infoName);
95056
- if (!infoItem) return;
95078
+ if (!infoItem)
95079
+ {
95080
+ console.warn(`[KLineChartContainer::UpdateKLineInfo] can't find infoname=${infoName}`);
95081
+ return;
95082
+ }
95057
95083
 
95058
95084
  var item=infoItem.Create();
95059
95085
  item.MaxRequestDataCount=this.MaxRequestDataCount;
@@ -177301,7 +177327,7 @@ function ChartScrollText()
177301
177327
 
177302
177328
 
177303
177329
 
177304
- var HQCHART_VERSION="1.1.15815";
177330
+ var HQCHART_VERSION="1.1.15820";
177305
177331
 
177306
177332
  function PrintHQChartVersion()
177307
177333
  {