hqchart 1.1.15312 → 1.1.15319

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.
@@ -2640,7 +2640,7 @@ this.UpdateTradeStatusData=function(data,option){if(option){//是否清空
2640
2640
  if(option.IsClear===true)this.GlobalOption.TradeStatus=null;}if(!data)return false;if(IFrameSplitOperator.IsNumber(data.Date)&&IFrameSplitOperator.IsNumber(data.Time)&&IFrameSplitOperator.IsNumber(data.Status)){this.GlobalOption.TradeStatus={Date:data.Date,Time:data.Time,Status:data.Status};return true;}return false;};//键盘下按暂停更新
2641
2641
  this.IsPauseUpdateByKeyboard=function(){if(!this.IsPressKeyboard)return false;if(!this.PressKeyboardConfig)return false;if(!this.PressKeyboardConfig.PauseUpdate)return false;return true;},//启动|关闭锁指标 aryIndex=[{ IndexID:指标ID, LockData:{IsLocked:} } ]
2642
2642
  this.EnableLockIndex=function(aryIndex){if(!IFrameSplitOperator.IsNonEmptyArray(aryIndex))return false;var mapIndex=new _map2.default();for(var i=0;i<aryIndex.length;++i){var item=aryIndex[i];if(item.IndexID&&item.LockData)mapIndex.set(item.IndexID,item);}var aryUpdate=[];for(var i=0;i<this.WindowIndex.length;++i){var item=this.WindowIndex[i];if(!item)continue;if(mapIndex.has(item.ID)){var mapItem=mapIndex.get(item.ID);item.SetLock(mapItem.LockData);//设置锁
2643
- aryUpdate.push({ID:i});}}for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))continue;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];var script=overlayItem.Script;if(mapIndex.has(script.ID)){var mapItem=mapIndex.get(script.ID);script.SetLock(mapItem.LockData);aryUpdate.push({OverlayID:overlayItem.Identify});}}}if(!IFrameSplitOperator.IsNonEmptyArray(aryUpdate))return false;this.UpdateWindowIndexV2(aryUpdate);return true;};this.TryClickLock=function(x,y){if(!this.Frame||!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame))return false;for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];var chartLock=item.Frame.LockPaint;if(!chartLock||!chartLock.LockRect)continue;var tooltip=new TooltipData();if(!chartLock.GetTooltipData(x,y,tooltip))continue;tooltip.HQChart=this;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEX_LOCK);if(event&&event.Callback){var sendData={FrameID:item.Frame.Identify,Data:tooltip};event.Callback(event,sendData,this);}if(tooltip.Data.Callback)tooltip.Data.Callback(tooltip);return true;}return false;};}function GetDevicePixelRatio(){if(typeof window=='undefined')return 1;return window.devicePixelRatio||1;}function GetFontHeight(context,font,word){if(!context)return null;if(font)context.font=font;var text='擎';if(IFrameSplitOperator.IsString(word))text=word;var fontInfo=context.measureText(text);var textHeight=fontInfo.fontBoundingBoxAscent+fontInfo.fontBoundingBoxDescent;if(!IFrameSplitOperator.IsNumber(textHeight))textHeight=fontInfo.width+2*GetDevicePixelRatio();return textHeight;}function IsPhoneWeb(){var userAgentInfo=navigator.userAgent;var Agents=new Array("Android","iPhone","SymbianOS","Windows Phone","iPad","iPod");for(var v=0;v<Agents.length;v++){if(userAgentInfo.indexOf(Agents[v])>0)return true;}return false;}function OnKeyDown(e)//键盘事件
2643
+ aryUpdate.push({ID:i});}}for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))continue;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];var script=overlayItem.Script;if(mapIndex.has(script.ID)){var mapItem=mapIndex.get(script.ID);script.SetLock(mapItem.LockData);aryUpdate.push({OverlayID:overlayItem.Identify});}}}if(!IFrameSplitOperator.IsNonEmptyArray(aryUpdate))return false;this.UpdateWindowIndexV2(aryUpdate);return true;};this.TryClickLock=function(x,y){if(!this.Frame||!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame))return false;for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];var chartLock=item.Frame.LockPaint;if(!chartLock||!chartLock.LockRect)continue;var tooltip=new TooltipData();if(!chartLock.GetTooltipData(x,y,tooltip))continue;tooltip.HQChart=this;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEX_LOCK);if(event&&event.Callback){var sendData={FrameID:item.Frame.Identify,Data:tooltip};event.Callback(event,sendData,this);}if(tooltip.Data.Callback)tooltip.Data.Callback(tooltip);return true;}return false;};this.RecvOverlayIndex=function(identify,data){var overlayIndex=this.GetOverlayIndexByIdentify(identify);if(overlayIndex==null){console.warn('[JSChartContainer::RecvOverlayIndex] can\'t find overlay index. [identify='+identify+']');return;}var script=overlayIndex.OverlayItem.Script;if(!script)return;if(typeof script.RecvSubscribeData!="function")return;var kData=this.GetKData();if(!kData)return;script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,kData);};}function GetDevicePixelRatio(){if(typeof window=='undefined')return 1;return window.devicePixelRatio||1;}function GetFontHeight(context,font,word){if(!context)return null;if(font)context.font=font;var text='擎';if(IFrameSplitOperator.IsString(word))text=word;var fontInfo=context.measureText(text);var textHeight=fontInfo.fontBoundingBoxAscent+fontInfo.fontBoundingBoxDescent;if(!IFrameSplitOperator.IsNumber(textHeight))textHeight=fontInfo.width+2*GetDevicePixelRatio();return textHeight;}function IsPhoneWeb(){var userAgentInfo=navigator.userAgent;var Agents=new Array("Android","iPhone","SymbianOS","Windows Phone","iPad","iPod");for(var v=0;v<Agents.length;v++){if(userAgentInfo.indexOf(Agents[v])>0)return true;}return false;}function OnKeyDown(e)//键盘事件
2644
2644
  {if(this.JSChartContainer&&this.JSChartContainer.OnKeyDown)this.JSChartContainer.OnKeyDown(e);}function OnKeyUp(e)//键盘事件
2645
2645
  {if(this.JSChartContainer&&this.JSChartContainer.OnKeyUp)this.JSChartContainer.OnKeyUp(e);}function OnWheel(e)//上下滚动事件
2646
2646
  {if(this.JSChartContainer&&this.JSChartContainer.OnWheel)this.JSChartContainer.OnWheel(e);}function ToFixed(number,precision){var b=1;if(isNaN(number))return number;if(number<0)b=-1;var multiplier=Math.pow(10,precision);var value=Math.round(Math.abs(number)*multiplier)/multiplier*b;if(/^(\d+(?:\.\d+)?)(e)([\-]?\d+)$/.test(value))var s=value.toFixed2(precision);else var s=value.toString();var rs=s.indexOf('.');if(rs<0&&precision>0){rs=s.length;s+='.';}while(s.length<=rs+precision){s+='0';}return s;}function IsRectOverlap(rt,rt2){if(Math.max(rt.Left,rt2.Left)<Math.min(rt.Right,rt2.Right)&&Math.max(rt.Top,rt2.Top)<Math.min(rt.Bottom,rt2.Bottom))return true;return false;}//获取文字高度和宽度
@@ -4485,15 +4485,15 @@ this.newMethod();delete this.newMethod;this.ClassName='ChartScatterPlotV2';//类
4485
4485
  this.Color=g_JSChartResource.ChartScatterPlotV2.Color;//点颜色
4486
4486
  this.TextColor=g_JSChartResource.ChartScatterPlotV2.TextColor;this.Radius=g_JSChartResource.ChartScatterPlotV2.Radius;this.Font=g_JSChartResource.ChartScatterPlotV2.Font;//半径
4487
4487
  this.TooltipData=[];this.MapCache=null;//key=date/date-time value={ Data:[] }
4488
- this.AryPoint=[];//[{ Value:, Radius:半径(可选), Color:颜色(可选),ColorBorder:边框颜色(可选),
4488
+ this.AryPoint=[];//[{ Value:, Radius:半径(可选), Radius2:固定半径(可选), Color:颜色(可选),ColorBorder:边框颜色(可选),
4489
4489
  // Text:{ Text:显示文字, Color:"rgb(0,30,100)", BaseLine:1, YOffset:5, Align:2 }; }]
4490
4490
  // BaseLine: 0=圆点上面 1=圆点下面 Align: 2=居中 1=左 3=右
4491
4491
  this.GetKValue=ChartData.GetKValue;this.TextHeight=10;this.AryDrawRect=[];this.ReloadResource=function(resource){this.Color=g_JSChartResource.ChartScatterPlotV2.Color;//点颜色
4492
- this.TextColor=g_JSChartResource.ChartScatterPlotV2.TextColor;this.Radius=g_JSChartResource.ChartScatterPlotV2.Radius;this.Font=g_JSChartResource.ChartScatterPlotV2.Font;};this.BuildCacheData=function(){var mapData=new _map2.default();this.MapCache=mapData;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryPoint))return;for(var i=0;i<this.AryPoint.length;++i){var item=this.AryPoint[i];var key=this.BuildKey(item);if(mapData.has(key)){var mapItem=mapData.get(key);mapItem.Data.push(item);}else{mapData.set(key,{Data:[item]});}}};this.Draw=function(){this.TooltipData=[];this.AryDrawRect=[];if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryPoint))return;if(!this.MapCache||this.MapCache.size<=0)return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;this.DrawScatterPlot();this.AryDrawRect=[];};this.DrawScatterPlot=function(){var bHScreen=this.ChartFrame.IsHScreen===true;var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(bHScreen){var border=this.ChartBorder.GetHScreenBorder();var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var lockRect=this.GetLockRect();if(lockRect){if(bHScreen)chartright=lockRect.Top;else chartright=lockRect.Left;}this.Canvas.save();this.ClipClient(bHScreen);this.Canvas.font=this.Font;this.Canvas.textAlign="left";this.Canvas.textBaseline="bottom";this.TextHeight=this.GetFontHeight();for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];if(!kItem)continue;var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data))continue;if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}if(x>chartright)break;for(var k=0;k<mapItem.Data.length;++k){var item=mapItem.Data[k];this.DrawItem(kItem,item,x);}}this.Canvas.restore();};this.DrawItem=function(kItem,item,x){var dataWidth=this.ChartFrame.DataWidth;var maxRadius=dataWidth/2;if(!item)return;var price=item.Value;if(IFrameSplitOperator.IsString(item.Value))price=this.GetKValue(kItem,item.Value);if(!IFrameSplitOperator.IsNumber(price))return;var y=this.GetYFromData(price,false);var radius=this.Radius;if(item.Radius)radius=item.Radius;if(!IFrameSplitOperator.IsNumber(radius))return;if(radius>maxRadius)radius=maxRadius;this.Canvas.beginPath();this.Canvas.arc(x,y,radius,0,2*Math.PI);var color=this.Color;if(item.Color)color=item.Color;if(color){this.Canvas.fillStyle=color;this.Canvas.fill();}if(item.ColorBorder){this.Canvas.strokeStyle=item.ColorBorder;this.Canvas.stroke();}if(dataWidth>this.TextHeight){this.DrawText(item.Text,x,y,radius);}var itemTooltip={X:x,Y:y,Radius:radius,Data:item};this.TooltipData.push(itemTooltip);};this.DrawText=function(item,x,y,radius){if(!item||!item.Text)return;var bHScreen=this.ChartFrame.IsHScreen===true;if(bHScreen)return;var text=item.Text;var textWidth=this.Canvas.measureText(text).width;var baseLine=1;//1=上 2=下
4492
+ this.TextColor=g_JSChartResource.ChartScatterPlotV2.TextColor;this.Radius=g_JSChartResource.ChartScatterPlotV2.Radius;this.Font=g_JSChartResource.ChartScatterPlotV2.Font;};this.BuildCacheData=function(){var mapData=new _map2.default();this.MapCache=mapData;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryPoint))return;for(var i=0;i<this.AryPoint.length;++i){var item=this.AryPoint[i];var key=this.BuildKey(item);if(mapData.has(key)){var mapItem=mapData.get(key);mapItem.Data.push(item);}else{mapData.set(key,{Data:[item]});}}};this.Draw=function(){this.TooltipData=[];this.AryDrawRect=[];if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryPoint))return;if(!this.MapCache||this.MapCache.size<=0)return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;this.DrawScatterPlot();this.AryDrawRect=[];};this.DrawScatterPlot=function(){var bHScreen=this.ChartFrame.IsHScreen===true;var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(bHScreen){var border=this.ChartBorder.GetHScreenBorder();var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var lockRect=this.GetLockRect();if(lockRect){if(bHScreen)chartright=lockRect.Top;else chartright=lockRect.Left;}this.Canvas.save();this.ClipClient(bHScreen);this.Canvas.font=this.Font;this.Canvas.textAlign="left";this.Canvas.textBaseline="bottom";this.TextHeight=this.GetFontHeight();for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];if(!kItem)continue;var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data))continue;if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}if(x>chartright)break;for(var k=0;k<mapItem.Data.length;++k){var item=mapItem.Data[k];this.DrawItem(kItem,item,x);}}this.Canvas.restore();};this.DrawItem=function(kItem,item,x){var dataWidth=this.ChartFrame.DataWidth;var maxRadius=dataWidth/2;if(!item)return;var price=item.Value;if(IFrameSplitOperator.IsString(item.Value))price=this.GetKValue(kItem,item.Value);if(!IFrameSplitOperator.IsNumber(price))return;var y=this.GetYFromData(price,false);var radius=this.Radius;if(IFrameSplitOperator.IsNumber(item.Radius2)){radius=item.Radius2;}else{if(IFrameSplitOperator.IsNumber(item.Radius))radius=item.Radius;if(!IFrameSplitOperator.IsNumber(radius))return;if(radius>maxRadius)radius=maxRadius;}this.Canvas.beginPath();this.Canvas.arc(x,y,radius,0,2*Math.PI);var color=this.Color;if(item.Color)color=item.Color;if(color){this.Canvas.fillStyle=color;this.Canvas.fill();}if(item.ColorBorder){this.Canvas.strokeStyle=item.ColorBorder;this.Canvas.stroke();}if(dataWidth>this.TextHeight){this.DrawText(item.Text,x,y,radius);}var itemTooltip={X:x,Y:y,Radius:radius,Data:item};this.TooltipData.push(itemTooltip);};this.DrawText=function(item,x,y,radius){if(!item||!item.Text)return;var bHScreen=this.ChartFrame.IsHScreen===true;if(bHScreen)return;var text=item.Text;var textWidth=this.Canvas.measureText(text).width;var baseLine=1;//1=上 2=下
4493
4493
  var align=2;var yOffset=2;var xText=x;if(IFrameSplitOperator.IsNumber(item.YOffset))yOffset=item.YOffset;//Y偏移
4494
4494
  if(IFrameSplitOperator.IsNumber(item.BaseLine))baseLine=item.BaseLine;var yText=y-radius-yOffset;if(baseLine==2)yText=y+radius+this.TextHeight+yOffset;//下
4495
4495
  if(IFrameSplitOperator.IsNumber(item.Align))align=item.Align;//左中右
4496
- if(align==1)xText=x-textWidth;else if(align==2)xText=x-textWidth/2;var rtText=null;if(item.BG&&item.BG.Color){var bgItem=item.BG;var marginLeft=2,marginRight=2,yBGOffset=1,marginBottom=0,marginTop=0;if(IFrameSplitOperator.IsNumber(bgItem.MarginLeft))marginLeft=bgItem.MarginLeft;if(IFrameSplitOperator.IsNumber(bgItem.MarginRight))marginRight=bgItem.MarginRight;if(IFrameSplitOperator.IsNumber(bgItem.MarginBottom))marginBottom=bgItem.MarginBottom;if(IFrameSplitOperator.IsNumber(bgItem.MarginTop))marginTop=bgItem.MarginTop;if(IFrameSplitOperator.IsNumber(bgItem.YOffset))yBGOffset=bgItem.YOffset;var rtBG={Left:xText-marginLeft,Bottom:yText+yBGOffset+marginBottom,Width:textWidth+marginLeft+marginRight,Height:this.TextHeight+marginBottom+marginTop};rtBG.Right=rtBG.Left+rtBG.Width;rtBG.Top=rtBG.Bottom-rtBG.Height;if(this.IsTextOverlap(rtBG))return;this.Canvas.fillStyle=bgItem.Color;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);rtText=rtBG;}else{rtText={Left:xText,Bottom:yText,Width:textWidth,Height:this.TextHeight};rtText.Right=rtText.Left+rtText.Width;rtText.Top=rtText.Bottom-rtText.Height;if(this.IsTextOverlap(rtText))return;}if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(text,xText,yText);this.AryDrawRect.push(rtText);};this.IsTextOverlap=function(rtText){for(var i=0;i<this.AryDrawRect.length;++i){var item=this.AryDrawRect[i];if(IsRectOverlap(rtText,item))return true;}return false;};this.GetMaxMin=function(){var range={Min:null,Max:null};if(!IFrameSplitOperator.IsNonEmptyArray(this.AryPoint))return range;if(!this.MapCache||this.MapCache.size<=0)return range;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return range;var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;if(this.ChartFrame.GlobalOption&&this.ChartFrame.GlobalOption.IsValueFullRange){start=0;xPointCount=this.Data.Data.length;}for(var i=start,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var kItem=this.Data.Data[i];if(!kItem)continue;var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data))continue;for(k=0;k<mapItem.Data.length;++k){var item=mapItem.Data[k];var value=item.Value;if(IFrameSplitOperator.IsString(item.Value))value=this.GetKValue(kItem,item.Value);if(!IFrameSplitOperator.IsNumber(value))continue;if(range.Max==null)range.Max=value;else if(range.Max<value)range.Max=value;if(range.Min==null)range.Min=value;else if(range.Min>value)range.Min=value;}}return range;};this.GetTooltipData=function(x,y,tooltip){if(!this.IsShow)return false;if(!IFrameSplitOperator.IsNonEmptyArray(this.TooltipData))return false;for(var i=this.TooltipData.length-1;i>=0;--i){var item=this.TooltipData[i];this.Canvas.beginPath();this.Canvas.arc(item.X,item.Y,item.Radius,0,2*Math.PI);if(this.Canvas.isPointInPath(x,y)){JSConsole.Chart.Log('[ChartScatterPlotV2::GetTooltipData] point',item);tooltip.Data=item;tooltip.ChartPaint=this;tooltip.Type=6;//散点图
4496
+ if(align==1)xText=x-textWidth;else if(align==2)xText=x-textWidth/2;var rtText=null;if(item.BG&&item.BG.Color){var bgItem=item.BG;var marginLeft=2,marginRight=2,yBGOffset=1,marginBottom=0,marginTop=0;if(IFrameSplitOperator.IsNumber(bgItem.MarginLeft))marginLeft=bgItem.MarginLeft;if(IFrameSplitOperator.IsNumber(bgItem.MarginRight))marginRight=bgItem.MarginRight;if(IFrameSplitOperator.IsNumber(bgItem.MarginBottom))marginBottom=bgItem.MarginBottom;if(IFrameSplitOperator.IsNumber(bgItem.MarginTop))marginTop=bgItem.MarginTop;if(IFrameSplitOperator.IsNumber(bgItem.YOffset))yBGOffset=bgItem.YOffset;var rtBG={Left:xText-marginLeft,Bottom:yText+yBGOffset+marginBottom,Width:textWidth+marginLeft+marginRight,Height:this.TextHeight+marginBottom+marginTop};rtBG.Right=rtBG.Left+rtBG.Width;rtBG.Top=rtBG.Bottom-rtBG.Height;if(this.IsTextOverlap(rtBG))return;this.Canvas.fillStyle=bgItem.Color;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);rtText=rtBG;}else{rtText={Left:xText,Bottom:yText,Width:textWidth,Height:this.TextHeight};rtText.Right=rtText.Left+rtText.Width;rtText.Top=rtText.Bottom-rtText.Height;if(this.IsTextOverlap(rtText))return;}if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(text,xText,yText);this.AryDrawRect.push(rtText);};this.IsTextOverlap=function(rtText){for(var i=0;i<this.AryDrawRect.length;++i){var item=this.AryDrawRect[i];if(IsRectOverlap(rtText,item))return true;}return false;};this.GetMaxMin=function(){var range={Min:null,Max:null};if(!IFrameSplitOperator.IsNonEmptyArray(this.AryPoint))return range;if(!this.MapCache||this.MapCache.size<=0)return range;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return range;var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;if(this.ChartFrame.GlobalOption&&this.ChartFrame.GlobalOption.IsValueFullRange){start=0;xPointCount=this.Data.Data.length;}for(var i=start,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var kItem=this.Data.Data[i];if(!kItem)continue;var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data))continue;for(var k=0;k<mapItem.Data.length;++k){var item=mapItem.Data[k];var value=item.Value;if(IFrameSplitOperator.IsString(item.Value))value=this.GetKValue(kItem,item.Value);if(!IFrameSplitOperator.IsNumber(value))continue;if(range.Max==null)range.Max=value;else if(range.Max<value)range.Max=value;if(range.Min==null)range.Min=value;else if(range.Min>value)range.Min=value;}}return range;};this.GetTooltipData=function(x,y,tooltip){if(!this.IsShow)return false;if(!IFrameSplitOperator.IsNonEmptyArray(this.TooltipData))return false;for(var i=this.TooltipData.length-1;i>=0;--i){var item=this.TooltipData[i];this.Canvas.beginPath();this.Canvas.arc(item.X,item.Y,item.Radius,0,2*Math.PI);if(this.Canvas.isPointInPath(x,y)){JSConsole.Chart.Log('[ChartScatterPlotV2::GetTooltipData] point',item);tooltip.Data=item;tooltip.ChartPaint=this;tooltip.Type=6;//散点图
4497
4497
  return true;}}};}//子线段
4498
4498
  function ChartSubLine(){this.newMethod=ChartLine;//派生
4499
4499
  this.newMethod();delete this.newMethod;this.ClassName='ChartSubLine';//类名
@@ -8717,7 +8717,7 @@ this.UpdateWindowIndex=function(index){var bindData=new ChartData();bindData.Dat
8717
8717
  {var periodData=bindData.GetPeriodData(bindData.Period);bindData.Data=periodData;}}if(typeof this.WindowIndex[index].ExecuteScript=='function'){var hisData=this.ChartPaint[0].Data;this.WindowIndex[index].ExecuteScript(this,index,hisData);}else if(typeof this.WindowIndex[index].RequestData=="function")//数据需要另外下载的.
8718
8718
  {var hisData=this.ChartPaint[0].Data;this.WindowIndex[index].RequestData(this,index,hisData,null);}else{this.WindowIndex[index].BindData(this,index,bindData);}this.UpdataDataoffset();//更新数据偏移
8719
8719
  this.UpdateFrameMaxMin();//调整坐标最大 最小值
8720
- this.Draw();};this.GetOverlayIndexByIdentify=function(identify){for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))continue;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Identify===identify)return{OverlayItem:overlayItem,WindowIndex:i};}}return null;};this.RecvOverlayIndex=function(identify,data){var overlayIndex=this.GetOverlayIndexByIdentify(identify);if(overlayIndex==null){console.warn('[KLineChartContainer::RecvOverlayIndex] can\'t find overlay index. [identify='+identify+']');return;}if(!overlayIndex.Script)return;if(typeof overlayIndex.RecvSubscribeData!="function")return;if(!this.ChartPaint[0])return;var kData=this.ChartPaint[0].Data;if(!kData)return;overlayIndex.Script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,kData);};//更新叠加指标
8720
+ this.Draw();};this.GetOverlayIndexByIdentify=function(identify){for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))continue;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Identify===identify)return{OverlayItem:overlayItem,WindowIndex:i};}}return null;};//更新叠加指标
8721
8721
  this.UpdateOverlayIndex=function(identify){var overlayIndex=this.GetOverlayIndexByIdentify(identify);if(overlayIndex==null){console.warn('[KLineChartContainer::UpdateOverlayIndex] can\'t find overlay index. [identify='+identify+']');return;}if(!this.ChartPaint[0])return;var kData=this.ChartPaint[0].Data;if(!kData)return;this.BindOverlayIndexData(overlayIndex.OverlayItem,overlayIndex.WindowIndex,kData);};//修改参数指标
8722
8722
  this.ChangeWindowIndexParam=function(index){this.WindowIndex[index].Index[0].Param+=1;this.WindowIndex[index].Index[1].Param+=1;this.UpdateWindowIndex(index);};this.OnDoubleClick=function(x,y,e){var bDraw=false;if(this.ChartCorssCursor){var data={e:e,X:x,Y:y,Draw:false};this.ChartCorssCursor.OnDBClick(data);bDraw=data.Draw;}if(this.EnableYDrag&&(this.EnableYDrag.Left||this.EnableYDrag.Right)&&this.Frame&&this.Frame.PtInFrameY){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var dragY=this.Frame.PtInFrameY(x,y);if(dragY&&dragY.Index>=0){this.CancelZoomUpDownFrameY(dragY);}}var selectedChart;//图形选中
8723
8723
  if(this.SelectedChart.EnableSelected){selectedChart=this.PtInChart(x,y);}var dbClickInfo={SelectedChart:selectedChart};this.DBClickEvent(dbClickInfo,e);if(!selectedChart&&this.EnableZoomIndexWindow)//双击放大缩小
@@ -9530,7 +9530,26 @@ frame.Canvas=this.Canvas;frame.MainFrame=subFrame.Frame;frame.ChartBorder=subFra
9530
9530
  var chart=new ChartMinutePositionLine();chart.Canvas=this.Canvas;chart.Name='Position-Line';chart.ChartBorder=frame.ChartBorder;chart.ChartFrame=frame;chart.Identify=overlayFrame.Identify;chart.Color=g_JSChartResource.Minute.PositionColor;overlayFrame.ChartPaint.push(chart);subFrame.OverlayIndex.push(overlayFrame);subFrame.Frame.RightFrame=frame;//右边坐标绑定到主坐标上
9531
9531
  }else{frame=overlayFrame.Frame;for(var i=0;i<overlayFrame.ChartPaint.length;++i){var item=overlayFrame.ChartPaint[i];if(item.Name=='Position-Line'){chart=item;break;}}if(!chart)//图形不存在就创建一个
9532
9532
  {chart=new ChartMinutePositionLine();chart.Canvas=this.Canvas;chart.Name='Position-Line';chart.ChartBorder=frame.ChartBorder;chart.ChartFrame=frame;chart.Identify=overlayFrame.Identify;chart.Color=g_JSChartResource.Minute.PositionColor;overlayFrame.ChartPaint.push(chart);}}var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;subFrame.Frame.IsShowPositionTitle=true;var bindData=new ChartData();bindData.Data=minuteData.GetPosition();chart.Data=bindData;};this.ClearBindOverlayPositionData=function(){if(this.Frame.SubFrame.length<2)return;var subFrame=this.Frame.SubFrame[1];//第2个窗口
9533
- subFrame.Frame.RightFrame=null;subFrame.Frame.IsShowPositionTitle=false;for(var i in subFrame.OverlayIndex){var item=subFrame.OverlayIndex[i];if(item.Identify=='Position_Line_Frame'){subFrame.OverlayIndex.splice(i,1);break;}}};this.GetOverlayIndexByIdentify=function(identify){for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))continue;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Identify===identify)return{OverlayItem:overlayItem,WindowIndex:i};}}return null;};this.RecvOverlayIndex=function(identify,data){var overlayIndex=this.GetOverlayIndexByIdentify(identify);if(overlayIndex==null){console.warn('[MinuteChartContainer::RecvOverlayIndex] can\'t find overlay index. [identify='+identify+']');return;}if(!overlayIndex.Script)return;if(typeof overlayIndex.RecvSubscribeData!="function")return;var bindData=this.SourceData;if(!bindData)return;overlayIndex.Script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,bindData);};//更新叠加指标
9533
+ subFrame.Frame.RightFrame=null;subFrame.Frame.IsShowPositionTitle=false;for(var i in subFrame.OverlayIndex){var item=subFrame.OverlayIndex[i];if(item.Identify=='Position_Line_Frame'){subFrame.OverlayIndex.splice(i,1);break;}}};this.GetOverlayIndexByIdentify=function(identify){for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))continue;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Identify===identify)return{OverlayItem:overlayItem,WindowIndex:i};}}return null;};/*
9534
+ this.RecvOverlayIndex=function(identify, data)
9535
+ {
9536
+ var overlayIndex=this.GetOverlayIndexByIdentify(identify);
9537
+ if (overlayIndex==null)
9538
+ {
9539
+ console.warn(`[MinuteChartContainer::RecvOverlayIndex] can't find overlay index. [identify=${identify}]`);
9540
+ return;
9541
+ }
9542
+
9543
+ var script=overlayIndex.OverlayItem.Script;
9544
+ if (!script) return;
9545
+ if (typeof(script.RecvSubscribeData)!="function") return;
9546
+
9547
+ var bindData=this.SourceData;
9548
+ if (!bindData) return;
9549
+
9550
+ script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,bindData);
9551
+ }
9552
+ *///更新叠加指标
9534
9553
  this.UpdateOverlayIndex=function(identify){var overlayIndex=this.GetOverlayIndexByIdentify(identify);if(overlayIndex==null){console.warn('[MinuteChartContainer::UpdateOverlayIndex] can\'t find overlay index. [identify='+identify+']');return;}var bindData=this.SourceData;if(!bindData)return;this.BindOverlayIndexData(overlayIndex.OverlayItem,overlayIndex.WindowIndex,bindData);};//添加叠加指标
9535
9554
  this.AddOverlayIndex=function(obj){var overlay=this.CreateOverlayWindowsIndex(obj);if(!overlay)return;var bindData=this.SourceData;this.BindOverlayIndexData(overlay,obj.WindowIndex,bindData);this.UpdataDataoffset();//更新数据偏移
9536
9555
  this.UpdateFrameMaxMin();//调整坐标最大 最小值
@@ -15722,7 +15741,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
15722
15741
  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);};}/********************************************************************************
15723
15742
  * 版本信息输出
15724
15743
  *
15725
- */var HQCHART_VERSION="1.1.15311";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();//把给外界调用的方法暴露出来
15744
+ */var HQCHART_VERSION="1.1.15318";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();//把给外界调用的方法暴露出来
15726
15745
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
15727
15746
  // BaseIndex:BaseIndex,
15728
15747
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.15312",
3
+ "version": "1.1.15319",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -12772,6 +12772,25 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12772
12772
 
12773
12773
  return false;
12774
12774
  }
12775
+
12776
+ this.RecvOverlayIndex=function(identify, data)
12777
+ {
12778
+ var overlayIndex=this.GetOverlayIndexByIdentify(identify);
12779
+ if (overlayIndex==null)
12780
+ {
12781
+ console.warn(`[JSChartContainer::RecvOverlayIndex] can't find overlay index. [identify=${identify}]`);
12782
+ return;
12783
+ }
12784
+
12785
+ var script=overlayIndex.OverlayItem.Script;
12786
+ if (!script) return;
12787
+ if (typeof(script.RecvSubscribeData)!="function") return;
12788
+
12789
+ var kData=this.GetKData();
12790
+ if (!kData) return;
12791
+
12792
+ script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,kData);
12793
+ }
12775
12794
  }
12776
12795
 
12777
12796
  function GetDevicePixelRatio()
@@ -36860,7 +36879,7 @@ function ChartScatterPlotV2()
36860
36879
 
36861
36880
  this.TooltipData=[];
36862
36881
  this.MapCache=null; //key=date/date-time value={ Data:[] }
36863
- this.AryPoint=[ ]; //[{ Value:, Radius:半径(可选), Color:颜色(可选),ColorBorder:边框颜色(可选),
36882
+ this.AryPoint=[ ]; //[{ Value:, Radius:半径(可选), Radius2:固定半径(可选), Color:颜色(可选),ColorBorder:边框颜色(可选),
36864
36883
  // Text:{ Text:显示文字, Color:"rgb(0,30,100)", BaseLine:1, YOffset:5, Align:2 }; }]
36865
36884
  // BaseLine: 0=圆点上面 1=圆点下面 Align: 2=居中 1=左 3=右
36866
36885
 
@@ -36992,11 +37011,17 @@ function ChartScatterPlotV2()
36992
37011
  if (!IFrameSplitOperator.IsNumber(price)) return;
36993
37012
 
36994
37013
  var y=this.GetYFromData(price,false);
36995
-
36996
37014
  var radius=this.Radius;
36997
- if (item.Radius) radius=item.Radius;
36998
- if (!IFrameSplitOperator.IsNumber(radius)) return;
36999
- if (radius>maxRadius) radius=maxRadius;
37015
+ if (IFrameSplitOperator.IsNumber(item.Radius2))
37016
+ {
37017
+ radius=item.Radius2;
37018
+ }
37019
+ else
37020
+ {
37021
+ if (IFrameSplitOperator.IsNumber(item.Radius)) radius=item.Radius;
37022
+ if (!IFrameSplitOperator.IsNumber(radius)) return;
37023
+ if (radius>maxRadius) radius=maxRadius;
37024
+ }
37000
37025
 
37001
37026
  this.Canvas.beginPath();
37002
37027
  this.Canvas.arc(x, y, radius, 0, 2 * Math.PI);
@@ -37121,7 +37146,7 @@ function ChartScatterPlotV2()
37121
37146
  var mapItem=this.MapCache.get(key);
37122
37147
  if (!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data)) continue;
37123
37148
 
37124
- for(k=0;k<mapItem.Data.length;++k)
37149
+ for(var k=0;k<mapItem.Data.length;++k)
37125
37150
  {
37126
37151
  var item=mapItem.Data[k];
37127
37152
  var value=item.Value;
@@ -89082,25 +89107,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
89082
89107
  return null;
89083
89108
  }
89084
89109
 
89085
- this.RecvOverlayIndex=function(identify, data)
89086
- {
89087
- var overlayIndex=this.GetOverlayIndexByIdentify(identify);
89088
- if (overlayIndex==null)
89089
- {
89090
- console.warn(`[KLineChartContainer::RecvOverlayIndex] can't find overlay index. [identify=${identify}]`);
89091
- return;
89092
- }
89093
-
89094
- if (!overlayIndex.Script) return;
89095
- if (typeof(overlayIndex.RecvSubscribeData)!="function") return;
89096
-
89097
- if (!this.ChartPaint[0]) return;
89098
- var kData=this.ChartPaint[0].Data;
89099
- if (!kData) return;
89100
-
89101
- overlayIndex.Script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,kData);
89102
- }
89103
-
89104
89110
  //更新叠加指标
89105
89111
  this.UpdateOverlayIndex=function(identify)
89106
89112
  {
@@ -96254,6 +96260,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96254
96260
  return null;
96255
96261
  }
96256
96262
 
96263
+ /*
96257
96264
  this.RecvOverlayIndex=function(identify, data)
96258
96265
  {
96259
96266
  var overlayIndex=this.GetOverlayIndexByIdentify(identify);
@@ -96263,14 +96270,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96263
96270
  return;
96264
96271
  }
96265
96272
 
96266
- if (!overlayIndex.Script) return;
96267
- if (typeof(overlayIndex.RecvSubscribeData)!="function") return;
96273
+ var script=overlayIndex.OverlayItem.Script;
96274
+ if (!script) return;
96275
+ if (typeof(script.RecvSubscribeData)!="function") return;
96268
96276
 
96269
96277
  var bindData=this.SourceData;
96270
96278
  if (!bindData) return;
96271
96279
 
96272
- overlayIndex.Script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,bindData);
96280
+ script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,bindData);
96273
96281
  }
96282
+ */
96274
96283
 
96275
96284
  //更新叠加指标
96276
96285
  this.UpdateOverlayIndex=function(identify)
@@ -16868,6 +16868,25 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
16868
16868
 
16869
16869
  return false;
16870
16870
  }
16871
+
16872
+ this.RecvOverlayIndex=function(identify, data)
16873
+ {
16874
+ var overlayIndex=this.GetOverlayIndexByIdentify(identify);
16875
+ if (overlayIndex==null)
16876
+ {
16877
+ console.warn(`[JSChartContainer::RecvOverlayIndex] can't find overlay index. [identify=${identify}]`);
16878
+ return;
16879
+ }
16880
+
16881
+ var script=overlayIndex.OverlayItem.Script;
16882
+ if (!script) return;
16883
+ if (typeof(script.RecvSubscribeData)!="function") return;
16884
+
16885
+ var kData=this.GetKData();
16886
+ if (!kData) return;
16887
+
16888
+ script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,kData);
16889
+ }
16871
16890
  }
16872
16891
 
16873
16892
  function GetDevicePixelRatio()
@@ -40956,7 +40975,7 @@ function ChartScatterPlotV2()
40956
40975
 
40957
40976
  this.TooltipData=[];
40958
40977
  this.MapCache=null; //key=date/date-time value={ Data:[] }
40959
- this.AryPoint=[ ]; //[{ Value:, Radius:半径(可选), Color:颜色(可选),ColorBorder:边框颜色(可选),
40978
+ this.AryPoint=[ ]; //[{ Value:, Radius:半径(可选), Radius2:固定半径(可选), Color:颜色(可选),ColorBorder:边框颜色(可选),
40960
40979
  // Text:{ Text:显示文字, Color:"rgb(0,30,100)", BaseLine:1, YOffset:5, Align:2 }; }]
40961
40980
  // BaseLine: 0=圆点上面 1=圆点下面 Align: 2=居中 1=左 3=右
40962
40981
 
@@ -41088,11 +41107,17 @@ function ChartScatterPlotV2()
41088
41107
  if (!IFrameSplitOperator.IsNumber(price)) return;
41089
41108
 
41090
41109
  var y=this.GetYFromData(price,false);
41091
-
41092
41110
  var radius=this.Radius;
41093
- if (item.Radius) radius=item.Radius;
41094
- if (!IFrameSplitOperator.IsNumber(radius)) return;
41095
- if (radius>maxRadius) radius=maxRadius;
41111
+ if (IFrameSplitOperator.IsNumber(item.Radius2))
41112
+ {
41113
+ radius=item.Radius2;
41114
+ }
41115
+ else
41116
+ {
41117
+ if (IFrameSplitOperator.IsNumber(item.Radius)) radius=item.Radius;
41118
+ if (!IFrameSplitOperator.IsNumber(radius)) return;
41119
+ if (radius>maxRadius) radius=maxRadius;
41120
+ }
41096
41121
 
41097
41122
  this.Canvas.beginPath();
41098
41123
  this.Canvas.arc(x, y, radius, 0, 2 * Math.PI);
@@ -41217,7 +41242,7 @@ function ChartScatterPlotV2()
41217
41242
  var mapItem=this.MapCache.get(key);
41218
41243
  if (!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data)) continue;
41219
41244
 
41220
- for(k=0;k<mapItem.Data.length;++k)
41245
+ for(var k=0;k<mapItem.Data.length;++k)
41221
41246
  {
41222
41247
  var item=mapItem.Data[k];
41223
41248
  var value=item.Value;
@@ -93178,25 +93203,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
93178
93203
  return null;
93179
93204
  }
93180
93205
 
93181
- this.RecvOverlayIndex=function(identify, data)
93182
- {
93183
- var overlayIndex=this.GetOverlayIndexByIdentify(identify);
93184
- if (overlayIndex==null)
93185
- {
93186
- console.warn(`[KLineChartContainer::RecvOverlayIndex] can't find overlay index. [identify=${identify}]`);
93187
- return;
93188
- }
93189
-
93190
- if (!overlayIndex.Script) return;
93191
- if (typeof(overlayIndex.RecvSubscribeData)!="function") return;
93192
-
93193
- if (!this.ChartPaint[0]) return;
93194
- var kData=this.ChartPaint[0].Data;
93195
- if (!kData) return;
93196
-
93197
- overlayIndex.Script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,kData);
93198
- }
93199
-
93200
93206
  //更新叠加指标
93201
93207
  this.UpdateOverlayIndex=function(identify)
93202
93208
  {
@@ -100350,6 +100356,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100350
100356
  return null;
100351
100357
  }
100352
100358
 
100359
+ /*
100353
100360
  this.RecvOverlayIndex=function(identify, data)
100354
100361
  {
100355
100362
  var overlayIndex=this.GetOverlayIndexByIdentify(identify);
@@ -100359,14 +100366,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100359
100366
  return;
100360
100367
  }
100361
100368
 
100362
- if (!overlayIndex.Script) return;
100363
- if (typeof(overlayIndex.RecvSubscribeData)!="function") return;
100369
+ var script=overlayIndex.OverlayItem.Script;
100370
+ if (!script) return;
100371
+ if (typeof(script.RecvSubscribeData)!="function") return;
100364
100372
 
100365
100373
  var bindData=this.SourceData;
100366
100374
  if (!bindData) return;
100367
100375
 
100368
- overlayIndex.Script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,bindData);
100376
+ script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,bindData);
100369
100377
  }
100378
+ */
100370
100379
 
100371
100380
  //更新叠加指标
100372
100381
  this.UpdateOverlayIndex=function(identify)
@@ -155138,7 +155147,7 @@ function ScrollBarBGChart()
155138
155147
 
155139
155148
 
155140
155149
 
155141
- var HQCHART_VERSION="1.1.15311";
155150
+ var HQCHART_VERSION="1.1.15318";
155142
155151
 
155143
155152
  function PrintHQChartVersion()
155144
155153
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.15311";
8
+ var HQCHART_VERSION="1.1.15318";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -16912,6 +16912,25 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
16912
16912
 
16913
16913
  return false;
16914
16914
  }
16915
+
16916
+ this.RecvOverlayIndex=function(identify, data)
16917
+ {
16918
+ var overlayIndex=this.GetOverlayIndexByIdentify(identify);
16919
+ if (overlayIndex==null)
16920
+ {
16921
+ console.warn(`[JSChartContainer::RecvOverlayIndex] can't find overlay index. [identify=${identify}]`);
16922
+ return;
16923
+ }
16924
+
16925
+ var script=overlayIndex.OverlayItem.Script;
16926
+ if (!script) return;
16927
+ if (typeof(script.RecvSubscribeData)!="function") return;
16928
+
16929
+ var kData=this.GetKData();
16930
+ if (!kData) return;
16931
+
16932
+ script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,kData);
16933
+ }
16915
16934
  }
16916
16935
 
16917
16936
  function GetDevicePixelRatio()
@@ -41000,7 +41019,7 @@ function ChartScatterPlotV2()
41000
41019
 
41001
41020
  this.TooltipData=[];
41002
41021
  this.MapCache=null; //key=date/date-time value={ Data:[] }
41003
- this.AryPoint=[ ]; //[{ Value:, Radius:半径(可选), Color:颜色(可选),ColorBorder:边框颜色(可选),
41022
+ this.AryPoint=[ ]; //[{ Value:, Radius:半径(可选), Radius2:固定半径(可选), Color:颜色(可选),ColorBorder:边框颜色(可选),
41004
41023
  // Text:{ Text:显示文字, Color:"rgb(0,30,100)", BaseLine:1, YOffset:5, Align:2 }; }]
41005
41024
  // BaseLine: 0=圆点上面 1=圆点下面 Align: 2=居中 1=左 3=右
41006
41025
 
@@ -41132,11 +41151,17 @@ function ChartScatterPlotV2()
41132
41151
  if (!IFrameSplitOperator.IsNumber(price)) return;
41133
41152
 
41134
41153
  var y=this.GetYFromData(price,false);
41135
-
41136
41154
  var radius=this.Radius;
41137
- if (item.Radius) radius=item.Radius;
41138
- if (!IFrameSplitOperator.IsNumber(radius)) return;
41139
- if (radius>maxRadius) radius=maxRadius;
41155
+ if (IFrameSplitOperator.IsNumber(item.Radius2))
41156
+ {
41157
+ radius=item.Radius2;
41158
+ }
41159
+ else
41160
+ {
41161
+ if (IFrameSplitOperator.IsNumber(item.Radius)) radius=item.Radius;
41162
+ if (!IFrameSplitOperator.IsNumber(radius)) return;
41163
+ if (radius>maxRadius) radius=maxRadius;
41164
+ }
41140
41165
 
41141
41166
  this.Canvas.beginPath();
41142
41167
  this.Canvas.arc(x, y, radius, 0, 2 * Math.PI);
@@ -41261,7 +41286,7 @@ function ChartScatterPlotV2()
41261
41286
  var mapItem=this.MapCache.get(key);
41262
41287
  if (!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data)) continue;
41263
41288
 
41264
- for(k=0;k<mapItem.Data.length;++k)
41289
+ for(var k=0;k<mapItem.Data.length;++k)
41265
41290
  {
41266
41291
  var item=mapItem.Data[k];
41267
41292
  var value=item.Value;
@@ -93222,25 +93247,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
93222
93247
  return null;
93223
93248
  }
93224
93249
 
93225
- this.RecvOverlayIndex=function(identify, data)
93226
- {
93227
- var overlayIndex=this.GetOverlayIndexByIdentify(identify);
93228
- if (overlayIndex==null)
93229
- {
93230
- console.warn(`[KLineChartContainer::RecvOverlayIndex] can't find overlay index. [identify=${identify}]`);
93231
- return;
93232
- }
93233
-
93234
- if (!overlayIndex.Script) return;
93235
- if (typeof(overlayIndex.RecvSubscribeData)!="function") return;
93236
-
93237
- if (!this.ChartPaint[0]) return;
93238
- var kData=this.ChartPaint[0].Data;
93239
- if (!kData) return;
93240
-
93241
- overlayIndex.Script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,kData);
93242
- }
93243
-
93244
93250
  //更新叠加指标
93245
93251
  this.UpdateOverlayIndex=function(identify)
93246
93252
  {
@@ -100394,6 +100400,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100394
100400
  return null;
100395
100401
  }
100396
100402
 
100403
+ /*
100397
100404
  this.RecvOverlayIndex=function(identify, data)
100398
100405
  {
100399
100406
  var overlayIndex=this.GetOverlayIndexByIdentify(identify);
@@ -100403,14 +100410,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
100403
100410
  return;
100404
100411
  }
100405
100412
 
100406
- if (!overlayIndex.Script) return;
100407
- if (typeof(overlayIndex.RecvSubscribeData)!="function") return;
100413
+ var script=overlayIndex.OverlayItem.Script;
100414
+ if (!script) return;
100415
+ if (typeof(script.RecvSubscribeData)!="function") return;
100408
100416
 
100409
100417
  var bindData=this.SourceData;
100410
100418
  if (!bindData) return;
100411
100419
 
100412
- overlayIndex.Script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,bindData);
100420
+ script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,bindData);
100413
100421
  }
100422
+ */
100414
100423
 
100415
100424
  //更新叠加指标
100416
100425
  this.UpdateOverlayIndex=function(identify)
@@ -167197,7 +167206,7 @@ function HQChartScriptWorker()
167197
167206
 
167198
167207
 
167199
167208
 
167200
- var HQCHART_VERSION="1.1.15311";
167209
+ var HQCHART_VERSION="1.1.15318";
167201
167210
 
167202
167211
  function PrintHQChartVersion()
167203
167212
  {