hqchart 1.1.13276 → 1.1.13280

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.
@@ -2001,7 +2001,10 @@ this.OnClickRightMenu=function(data){JSConsole.Chart.Log('[JSChartContainer::OnC
2001
2001
  var aryArgs=data.Data.Args;//参数
2002
2002
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MENU_COMMAND);//回调通知外部
2003
2003
  if(event&&event.Callback){var data={PreventDefault:false,CommandID:cmdID,Args:aryArgs,SrcData:data};event.Callback(event,data,this);if(data.PreventDefault)return;}this.ExecuteMenuCommand(cmdID,aryArgs);};this.PopupRightMenuV2=function(data,e){var _this15=this;if(!this.JSPopMenu)return;var x=data.X,y=data.Y;var frameID=data.FrameID;var menuData={Menu:this.GetRightMenuData(frameID),Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID};menuData.ClickCallback=function(data){_this15.OnClickRightMenu(data);};var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_RIGHT_MENU);if(event&&event.Callback){var sendData={MenuData:menuData,FrameID:frameID};event.Callback(event,sendData,this);}this.PopupMenuByRClick(menuData,x,y);};//指标窗口扩展图形
2004
- this.CreateChartPaintExtend=function(chart,windowIndex){if(windowIndex<0)return false;var subFrame=this.Frame.SubFrame[windowIndex];if(!subFrame||!subFrame.Frame)return false;var frame=subFrame.Frame;chart.Canvas=this.Canvas;chart.ChartBorder=frame.ChartBorder;chart.ChartFrame=frame;this.ChartPaintEx.push(chart);return true;};}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)//键盘事件
2004
+ this.CreateChartPaintExtend=function(chart,windowIndex){if(windowIndex<0)return false;var subFrame=this.Frame.SubFrame[windowIndex];if(!subFrame||!subFrame.Frame)return false;var frame=subFrame.Frame;chart.Canvas=this.Canvas;chart.ChartBorder=frame.ChartBorder;chart.ChartFrame=frame;this.ChartPaintEx.push(chart);return true;};//删除指标窗口扩展图形 option={ ChartID:图形ID, WindowIndex:窗口 }
2005
+ this.DeleteChartPaintExtend=function(option,bCallDestroy){if(!option)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.ChartPaintEx))return;if(IFrameSplitOperator.IsNumber(option.WindowIndex)){var windowIndex=option.WindowIndex;if(!this.Frame.SubFrame[windowIndex])return;var subFrame=this.Frame.SubFrame[windowIndex].Frame;if(!subFrame)return;var paint=[];//踢出当前窗口的指标画法
2006
+ var deleteCount=0;for(var i=0;i<this.ChartPaintEx.length;++i){var item=this.ChartPaintEx[i];var bFind=item.ChartFrame.Guid==subFrame.Guid||item.ChartFrame==subFrame;if(!bFind){paint.push(item);}else{++deleteCount;if(bCallDestroy===true){if(item&&item.OnDestroy)item.OnDestroy();//图形销毁
2007
+ }}}if(deleteCount>0)this.ChartPaintEx=paint;}};}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)//键盘事件
2005
2008
  {if(this.JSChartContainer&&this.JSChartContainer.OnKeyDown)this.JSChartContainer.OnKeyDown(e);}function OnWheel(e)//上下滚动事件
2006
2009
  {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;}Number.prototype.toFixed2=Number.prototype.toFixed;//备份下老的
2007
2010
  Number.prototype.toFixed=function(precision){return ToFixed(this,precision);};function Guid(){function S4(){return((1+Math.random())*0x10000|0).toString(16).substring(1);}return"guid"+(S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());}function GetScrollPosition(){var scrollPos={};var scrollTop=0;var scrollLeft=0;if(document.documentElement&&(document.documentElement.scrollTop||document.documentElement.scrollLeft)){scrollTop=document.documentElement.scrollTop;scrollLeft=document.documentElement.scrollLeft;}else if(document.body){scrollTop=document.body.scrollTop;scrollLeft=document.body.scrollLeft;}scrollPos.Top=scrollTop;scrollPos.Left=scrollLeft;return scrollPos;}//修正线段有毛刺
@@ -2791,7 +2794,7 @@ if(x>=left&&x<=right&&y>bottom&&y<chartHeight)return-3;return-1;};this.PtInChart
2791
2794
  }}return-1;};this.PtInButtons=function(x,y){for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Height<=0)continue;var button=item.Frame.PtInButtons(x,y);if(button){button.Frame=item.Frame;button.FrameID=i;return button;}for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];var overlayFrame=overlayItem.Frame;if(!overlayFrame||!overlayFrame.PtInButtons)continue;var button=overlayFrame.PtInButtons(x,y);if(button){button.IndexID=overlayItem.Identify;button.FrameID=i;button.OverlayFrame=overlayFrame;button.Frame=item.Frame;return button;}}}return null;};//是否在X轴坐标上
2792
2795
  this.PtInFrameBottom=function(x,y){var left=this.ChartBorder.GetLeft();var top=this.ChartBorder.GetBottom();var width=this.ChartBorder.GetWidth();var height=this.ChartBorder.Bottom;this.Canvas.beginPath();this.Canvas.rect(left,top,width,height);if(this.Canvas.isPointInPath(x,y))return true;return false;};this.PtInFrameVertical=function(x,y){for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Height<=0)continue;if(!item.Frame.PtInVertical)continue;if(item.Frame.PtInVertical(x,y)){return{Frame:item.Frame};}}return null;};this.GetXFromIndex=function(index){return this.SubFrame[0].Frame.GetXFromIndex(index);};this.GetYFromData=function(value){return this.SubFrame[0].Frame.GetYFromData(value);};this.ZoomUp=function(cursorIndex){var result=this.SubFrame[0].Frame.ZoomUp(cursorIndex);this.UpdateAllFrame();return result;};this.ZoomDown=function(cursorIndex,option){var result=this.SubFrame[0].Frame.ZoomDown(cursorIndex,option);this.UpdateAllFrame();return result;};this.SetXShowCount=function(showCount){var result=this.SubFrame[0].Frame.SetXShowCount(showCount);this.UpdateAllFrame();return result;};this.GetXShowCount=function(){var xPointcount=-1;if(!IFrameSplitOperator.IsNonEmptyArray(this.SubFrame))return xPointcount;var subFrame=this.SubFrame[0];if(!subFrame.Frame)return xPointcount;xPointcount=subFrame.Frame.XPointCount;return xPointcount;};this.XCoordinateZoom=function(step,isMoveLeft){var result=this.SubFrame[0].Frame.XCoordinateZoom(step,isMoveLeft);this.UpdateAllFrame();return result;};//设置重新计算刻度坐标
2793
2796
  this.ResetXYSplit=function(){for(var _i in this.SubFrame){this.SubFrame[_i].Frame.XYSplit=true;}};this.ResetXSplit=function(){for(var _i2 in this.SubFrame){this.SubFrame[_i2].Frame.XSplit=true;}};//清空Y轴坐标的最大最小值
2794
- this.ClearYCoordinateMaxMin=function(){for(var i=0;i<this.SubFrame.length;++i){var subItem=this.SubFrame[i];var frame=subItem.Frame;if(frame.YMaxMin){frame.YMaxMin.Max=null;frame.YMaxMin.Min=null;}}};this.SetLanguage=function(languageID){for(var _i3 in this.SubFrame){var item=this.SubFrame[_i3];if(item&&item.Frame){if(item.Frame.YSplitOperator)item.Frame.YSplitOperator.LanguageID=languageID;if(item.Frame.XSplitOperator)item.Frame.XSplitOperator.LanguageID=languageID;}}};this.GetCurrentPageSize=function()//获取当前页显示的数据个数
2797
+ this.ClearYCoordinateMaxMin=function(windowIndex){if(IFrameSplitOperator.IsNumber(windowIndex)){var subItem=this.SubFrame[windowIndex];if(!subItem||!subItem.Frame)return;if(frame.YMaxMin){frame.YMaxMin.Max=null;frame.YMaxMin.Min=null;}}else{for(var i=0;i<this.SubFrame.length;++i){var subItem=this.SubFrame[i];var frame=subItem.Frame;if(frame.YMaxMin){frame.YMaxMin.Max=null;frame.YMaxMin.Min=null;}}}};this.SetLanguage=function(languageID){for(var _i3 in this.SubFrame){var item=this.SubFrame[_i3];if(item&&item.Frame){if(item.Frame.YSplitOperator)item.Frame.YSplitOperator.LanguageID=languageID;if(item.Frame.XSplitOperator)item.Frame.XSplitOperator.LanguageID=languageID;}}};this.GetCurrentPageSize=function()//获取当前页显示的数据个数
2795
2798
  {if(this.SubFrame.length<=0)return null;var item=this.SubFrame[0];if(!item||!item.Frame)return null;return item.Frame.XPointCount;};this.OnSize=function(){var obj={};this.SubFrame[0].Frame.OnSize(obj);this.UpdateAllFrame();return obj;};this.SetDataWidth=function(dataWidth){var obj=this.SubFrame[0].Frame.SetDataWidth(dataWidth);this.UpdateAllFrame();return obj;};this.UpdateAllFrame=function(){var mainFrame=this.SubFrame[0].Frame;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(i>0)//第1个窗口主坐标已经算好了
2796
2799
  {item.Frame.XPointCount=mainFrame.XPointCount;item.Frame.ZoomIndex=mainFrame.ZoomIndex;item.Frame.DataWidth=mainFrame.DataWidth;item.Frame.DistanceWidth=mainFrame.DistanceWidth;item.Frame.LastCalculateStatus.Width=mainFrame.LastCalculateStatus.Width;item.Frame.LastCalculateStatus.XPointCount=mainFrame.LastCalculateStatus.XPointCount;}for(var j in item.OverlayIndex){var overlayItem=this.SubFrame[i].OverlayIndex[j];overlayItem.Frame.XPointCount=mainFrame.XPointCount;overlayItem.Frame.ZoomIndex=mainFrame.ZoomIndex;overlayItem.Frame.DataWidth=mainFrame.DataWidth;overlayItem.Frame.DistanceWidth=mainFrame.DistanceWidth;overlayItem.Frame.LastCalculateStatus.Width=mainFrame.LastCalculateStatus.Width;overlayItem.Frame.LastCalculateStatus.XPointCount=mainFrame.LastCalculateStatus.XPointCount;}}};//鼠标是否在边框上
2797
2800
  this.PtInFrameBorder=function(x,y){var height=this.DragBorderHeight;for(var i=0;i<this.SubFrame.length-1;++i){var item=this.SubFrame[i];if(item.Frame.Heigh<=0)continue;var bottom=item.Frame.ChartBorder.GetBottom();var left=item.Frame.ChartBorder.GetLeft();var right=item.Frame.ChartBorder.GetRight();item.Frame.Canvas.beginPath();item.Frame.Canvas.rect(left,bottom-height/2,right-left,height);if(item.Frame.Canvas.isPointInPath(x,y)){return{Index:i,Bottom:true};}}return null;};this.IsEnableDragY=function(index){if(!this.SubFrame)return false;var item=this.SubFrame[index];if(!item||!item.Frame||!item.Frame.YSplitOperator)return false;var split=item.Frame.YSplitOperator;if(typeof split.IsEnableDragY!='function')return false;return split.IsEnableDragY();};this.IsEnableOverlayDragY=function(index,overlayIndex){if(!this.SubFrame)return false;var item=this.SubFrame[index];var overlayItem=item.OverlayIndex[overlayIndex];if(!overlayItem||!overlayItem.Frame)return false;var split=overlayItem.Frame.YSplitOperator;if(overlayItem.Frame.IsShareY)split=overlayItem.Frame.MainFrame.YSplitOperator;if(!split||typeof split.IsEnableDragY!='function')return false;return split.IsEnableDragY();};this.PtInFrameY=function(x,y){var rightExtendWith=0;if(this.GetExtendChartByClassName){var finder=this.GetExtendChartByClassName("StockChip");if(finder&&finder.Chart)rightExtendWith=finder.Chart.Width;}for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Frame.Heigh<=0)continue;var rightWidth=item.Frame.ChartBorder.Right;rightWidth-=rightExtendWith;var border=item.Frame.ChartBorder.GetBorder();var bottom=border.Bottom;var top=border.TopTitle;var left=border.Left;var right=border.Right;var maxTopHegith=30;var barHegith=bottom-top;if(barHegith/3>maxTopHegith){var barTop=top+maxTopHegith;var barBottom=bottom-maxTopHegith;}else{var internal=barHegith/3;var barTop=top+internal;var barBottom=bottom-internal;}var position=0;if(y<barTop)position=1;else if(y>barBottom)position=2;if(rightWidth>=10){if(IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex)){var overlayItem=item.OverlayIndex[0];var rightOffset=overlayItem.Frame.RightOffset;item.Frame.Canvas.beginPath();item.Frame.Canvas.rect(right,top,rightOffset,bottom-top);if(item.Frame.Canvas.isPointInPath(x,y)){return{Index:i,Right:true,Left:false,Position:position,IsOverlay:false};//Position 1=上面 2 下面 0=中间(TODO)
@@ -7364,7 +7367,7 @@ this.ChangeCoordinateType=function(obj){if(!this.Frame)return;if(!IFrameSplitOpe
7364
7367
  {frame.Frame.YSplitOperator.CoordinateType=2;}else{return;}}else{if(obj.Type>=0&&obj.Type<=5)frame.YSplitOperator.CoordinateType=obj.Type;if(obj.IsReverse===true)frame.CoordinateType=1;else if(obj.IsReverse==false)frame.CoordinateType=0;}//请求缓存的最大最小值
7365
7368
  frame.YMaxMin.Max=null;frame.YMaxMin.Min=null;this.UpdateFrameMaxMin();//调整坐标最大 最小值
7366
7369
  this.Frame.SetSizeChage(true);this.Draw();};//设置指标窗口个数
7367
- this.ChangeIndexWindowCount=function(count,option){var _this22=this;if(count<=0)return;if(this.Frame.SubFrame.length==count)return;this.Frame.RestoreIndexWindows();var currentLength=this.Frame.SubFrame.length;if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.DeleteIndexPaint(i);this.Frame.SubFrame[i].Frame.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);this.TitlePaint.splice(count+1,currentLength-count);//最后一个显示X轴坐标
7370
+ this.ChangeIndexWindowCount=function(count,option){var _this22=this;if(count<=0)return;if(this.Frame.SubFrame.length==count)return;this.Frame.RestoreIndexWindows();var currentLength=this.Frame.SubFrame.length;if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.DeleteIndexPaint(i);this.DeleteChartPaintExtend({WindowIndex:i});this.Frame.SubFrame[i].Frame.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);this.TitlePaint.splice(count+1,currentLength-count);//最后一个显示X轴坐标
7368
7371
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}this.Frame.SetSizeChage(true);this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
7369
7372
  this.Draw();}else{//创建新的指标窗口
7370
7373
  var pixelRatio=GetDevicePixelRatio();for(var i=currentLength;i<count;++i){var subFrame=this.CreateSubFrameItem(i);subFrame.Frame.ChartBorder.TitleHeight*=pixelRatio;this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this22.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}//最后一个显示X轴坐标
@@ -7394,7 +7397,7 @@ var aryOverlayIndex=[];if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayInde
7394
7397
  {this.BindIndexData(i,bindData);}for(var i=0;i<aryOverlayIndex.length;++i){var item=aryOverlayIndex[i];this.BindOverlayIndexData(item.Overlay,item.WindowsIndex,bindData);}this.UpdataDataoffset();//更新数据偏移
7395
7398
  this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
7396
7399
  this.Draw();}else{if(!symbol)symbol=this.Symbol;var optionData={KLine:{}};if(IFrameSplitOperator.IsNumber(period))optionData.KLine.Period=period;if(IFrameSplitOperator.IsNumber(right))optionData.KLine.Right=right;this.ChangeSymbol(symbol,optionData);}};this.RemoveIndexWindow=function(id,option){JSConsole.Chart.Log('[KLineChartContainer::RemoveIndexWindow] remove id',id);if(id==0){if(option&&option.DeleteMainIndex)//删除指标
7397
- {this.DeleteIndexPaint(id);this.WindowIndex[id]=null;this.Frame.SetSizeChage(true);this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();}return;}if(!this.Frame.SubFrame)return;if(id>=this.Frame.SubFrame.length)return;this.Frame.RestoreIndexWindows();var delFrame=this.Frame.SubFrame[id].Frame;this.DeleteIndexPaint(id);this.Frame.SubFrame[id].Frame.ClearToolbar();var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[id],WindowIndex:id};event.Callback(event,sendData,this);}this.Frame.SubFrame.splice(id,1);this.WindowIndex.splice(id,1);this.TitlePaint.splice(id+1,1);//删除对应的动态标题
7400
+ {this.DeleteIndexPaint(id);this.WindowIndex[id]=null;this.Frame.SetSizeChage(true);this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();}return;}if(!this.Frame.SubFrame)return;if(id>=this.Frame.SubFrame.length)return;this.Frame.RestoreIndexWindows();var delFrame=this.Frame.SubFrame[id].Frame;this.DeleteIndexPaint(id);this.DeleteChartPaintExtend({WindowIndex:id});this.Frame.SubFrame[id].Frame.ClearToolbar();var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[id],WindowIndex:id};event.Callback(event,sendData,this);}this.Frame.SubFrame.splice(id,1);this.WindowIndex.splice(id,1);this.TitlePaint.splice(id+1,1);//删除对应的动态标题
7398
7401
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;item.Identify=i;}if(this.ChartDrawPicture.length>0){var aryDrawPicture=[];for(var i in this.ChartDrawPicture){var item=this.ChartDrawPicture[i];if(item.Frame==delFrame)continue;aryDrawPicture.push(item);}this.ChartDrawPicture=aryDrawPicture;}this.Frame.SetSizeChage(true);this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();};this.CreateExtendChart=function(name,option)//创建扩展图形
7399
7402
  {var chart;switch(name){case'筹码分布':chart=new StockChip();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.Left=this.Frame.ChartBorder.Right;//左边间距使用当前框架间距
7400
7403
  chart.SetOption(option);this.ExtendChartPaint.push(chart);this.Frame.ChartBorder.Right+=chart.Width;//创建筹码需要增加右边的间距
@@ -7904,7 +7907,7 @@ this.UpdateFrameMaxMin();//调整坐标最大 最小值
7904
7907
  this.Draw();};this.ChangeIndex=function(windowIndex,indexName,option){if(this.Frame.SubFrame.length<3)return;if(option&&option.API)return this.ChangeAPIIndex(windowIndex,option);//查找系统指标
7905
7908
  var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;if(windowIndex<2)windowIndex=2;if(windowIndex>=this.Frame.SubFrame.length)windowIndex=2;JSIndexScript.ModifyAttribute(indexInfo,option);return this.ChangeScriptIndex(windowIndex,indexInfo,option);};//设置指标窗口个数
7906
7909
  this.ChangeIndexWindowCount=function(count){var _this32=this;if(count<2)return;//1,2个窗口固定的不能动
7907
- if(this.Frame.SubFrame.length==count)return;var currentLength=this.Frame.SubFrame.length;if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.DeleteIndexPaint(i);var item=this.Frame.SubFrame[i].Frame;if(item.ClearToolbar)item.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);this.TitlePaint.splice(count+1,currentLength-count);}else{//创建新的指标窗口
7910
+ if(this.Frame.SubFrame.length==count)return;var currentLength=this.Frame.SubFrame.length;if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.DeleteIndexPaint(i);this.DeleteChartPaintExtend({WindowIndex:i});var item=this.Frame.SubFrame[i].Frame;if(item.ClearToolbar)item.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);this.TitlePaint.splice(count+1,currentLength-count);}else{//创建新的指标窗口
7908
7911
  var mainFrame=this.Frame.SubFrame[0].Frame;for(var i=currentLength;i<count;++i){var subFrame=this.CreateSubFrameItem(i,mainFrame);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this32.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}//创建指标
7909
7912
  var indexName=["RSI","MACD","DMA","DMI","KDJ","WR"];var scriptData=new JSIndexScript();for(var i=currentLength;i<count;++i){var name=indexName[i%indexName.length];var indexInfo=scriptData.Get(name);this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7910
7913
  var bindData=this.SourceData;this.BindIndexData(i,bindData);//执行脚本
@@ -7925,7 +7928,7 @@ for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Fr
7925
7928
  var aryOverlayIndex=[];if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<option.OverlayIndex.length;++i){var item=option.OverlayIndex[i];if(item.Index)item.IndexName=item.Index;if(item.Windows>=0)item.WindowIndex=item.Windows;var overlay=this.CreateOverlayWindowsIndex(item);if(!overlay)continue;aryOverlayIndex.push({WindowsIndex:item.WindowIndex,Overlay:overlay});}}this.Frame.SetSizeChage(true);if(!bRefreshData){var bindData=this.SourceData;for(var i=0;i<count;++i){this.BindIndexData(i,bindData);//执行脚本
7926
7929
  }for(var i=0;i<aryOverlayIndex.length;++i){var item=aryOverlayIndex[i];this.BindOverlayIndexData(item.Overlay,item.WindowsIndex,bindData);}this.UpdataDataoffset();//更新数据偏移
7927
7930
  if(this.UpdateXShowText)this.UpdateXShowText();this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
7928
- this.Draw();}else{if(!symbol)symbol=this.Symbol;var option={};if(IFrameSplitOperator.IsNumber(dayCount))option.DayCount=dayCount;this.ChangeSymbol(symbol,option);}};this.RemoveIndexWindow=function(id){JSConsole.Chart.Log('[MinuteChartContainer::RemoveIndexWindow] remove id',id);if(id<2)return;if(!this.Frame.SubFrame)return;if(id>=this.Frame.SubFrame.length)return;this.Frame.RestoreIndexWindows();var delFrame=this.Frame.SubFrame[id].Frame;this.DeleteIndexPaint(id);this.Frame.SubFrame[id].Frame.ClearToolbar();var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[id],WindowIndex:id};event.Callback(event,sendData,this);}this.Frame.SubFrame.splice(id,1);this.WindowIndex.splice(id,1);this.TitlePaint.splice(id+1,1);//删除对应的动态标题
7931
+ this.Draw();}else{if(!symbol)symbol=this.Symbol;var option={};if(IFrameSplitOperator.IsNumber(dayCount))option.DayCount=dayCount;this.ChangeSymbol(symbol,option);}};this.RemoveIndexWindow=function(id){JSConsole.Chart.Log('[MinuteChartContainer::RemoveIndexWindow] remove id',id);if(id<2)return;if(!this.Frame.SubFrame)return;if(id>=this.Frame.SubFrame.length)return;this.Frame.RestoreIndexWindows();var delFrame=this.Frame.SubFrame[id].Frame;this.DeleteIndexPaint(id);this.DeleteChartPaintExtend({WindowIndex:id});this.Frame.SubFrame[id].Frame.ClearToolbar();var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[id],WindowIndex:id};event.Callback(event,sendData,this);}this.Frame.SubFrame.splice(id,1);this.WindowIndex.splice(id,1);this.TitlePaint.splice(id+1,1);//删除对应的动态标题
7929
7932
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;item.Identify=i;}/*
7930
7933
  if (this.ChartDrawPicture.length>0)
7931
7934
  {
@@ -7975,7 +7978,7 @@ this.DeleteOverlaySymbol=function(symbol){for(var i in this.OverlayChartPaint){v
7975
7978
  this.ClearOverlaySymbol=function(){for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];item.IsDelete=true;}this.OverlayChartPaint=[];this.Frame.SubFrame[0].Frame.YSplitOperator.OverlayChartPaint=this.OverlayChartPaint;this.TitlePaint[0].OverlayChartPaint=this.OverlayChartPaint;//绑定叠加
7976
7979
  this.UpdateFrameMaxMin();this.Draw();};this.ShowBeforeData=function(isShow,option){this.ShowCallAuctionData({Left:isShow},option);};//集合竞价设置 obj={ Left:, Right: }
7977
7980
  this.ShowCallAuctionData=function(obj,option){if(!obj)return;var optionChanged=false;//配置修改
7978
- if(IFrameSplitOperator.IsBool(obj.Left)&&this.IsShowBeforeData!=obj.Left){this.IsShowBeforeData=obj.Left;optionChanged=true;}if(IFrameSplitOperator.IsBool(obj.Right)&&this.IsShowAfterData!=obj.Right){this.IsShowAfterData=obj.Right;optionChanged=true;}if(obj.MultiDay){var item=obj.MultiDay;if(IFrameSplitOperator.IsBool(item.Left)&&this.IsShowMultiDayBeforeData!=item.Left){this.IsShowMultiDayBeforeData=item.Left;optionChanged=true;}if(IFrameSplitOperator.IsBool(item.Right)&&this.IsShowMultiDayAfterData!=item.Right){this.IsShowMultiDayAfterData=item.Right;optionChanged=true;}}if(option){if(option.BeforeOpen){var item=option.BeforeOpen;if(IFrameSplitOperator.IsNumber(item.Left)&&this.ExtendWidth.Left!=item.Left){this.ExtendWidth.Left=item.Left;optionChanged=true;}}if(option.AfterClose){var item=option.AfterClose;if(IFrameSplitOperator.IsNumber(item.Right)&&this.ExtendWidth.Right!=item.Right){this.ExtendWidth.Right=item.Right;optionChanged=true;}}if(option.MultiDay){var item=option.MultiDay;if(IFrameSplitOperator.IsNumber(item.Left)&&this.MultiDayExtendWidth.Left!=item.Left){this.MultiDayExtendWidth.Left=item.Left;optionChanged=true;}if(IFrameSplitOperator.IsNumber(item.Right)&&this.MultiDayExtendWidth.Right!=item.Right){this.MultiDayExtendWidth.Right=item.Right;optionChanged=true;}}}if(optionChanged)this.RequestData();};this.RequestData=function(){if(this.DayCount<=1)this.RequestMinuteData();else this.RequestHistoryMinuteData();};this.ChangeDrawType=function(type){if(this.ChartPaint.length<=0)return;if(type==0)this.ChartPaint[0].IsDrawArea=true;else if(type==1)this.ChartPaint[0].IsDrawArea=false;else return;this.Draw();};this.UpdateDataOffset=function(){this.SourceData.DataOffset=this.DayOffset.DataOffset;for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.Data)continue;item.Data.DataOffset=this.DayOffset.DataOffset;if(item.ClassName=="ChartMinuteVolumBar"||item.ClassName=="ChartMinutePriceLine")item.DayOffset=this.DayOffset;}for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Data)continue;item.Data.DataOffset=this.DayOffset.DataOffset;}//叠加指标当前显示的数据偏移
7981
+ if(IFrameSplitOperator.IsBool(obj.Left)&&this.IsShowBeforeData!=obj.Left){this.IsShowBeforeData=obj.Left;optionChanged=true;}if(IFrameSplitOperator.IsBool(obj.Right)&&this.IsShowAfterData!=obj.Right){this.IsShowAfterData=obj.Right;optionChanged=true;}if(obj.MultiDay){var item=obj.MultiDay;if(IFrameSplitOperator.IsBool(item.Left)&&this.IsShowMultiDayBeforeData!=item.Left){this.IsShowMultiDayBeforeData=item.Left;optionChanged=true;}if(IFrameSplitOperator.IsBool(item.Right)&&this.IsShowMultiDayAfterData!=item.Right){this.IsShowMultiDayAfterData=item.Right;optionChanged=true;}}if(option){if(option.BeforeOpen){var item=option.BeforeOpen;if(IFrameSplitOperator.IsNumber(item.Left)&&this.ExtendWidth.Left!=item.Left){this.ExtendWidth.Left=item.Left;optionChanged=true;}}if(option.AfterClose){var item=option.AfterClose;if(IFrameSplitOperator.IsNumber(item.Right)&&this.ExtendWidth.Right!=item.Right){this.ExtendWidth.Right=item.Right;optionChanged=true;}}if(option.MultiDay){var item=option.MultiDay;if(IFrameSplitOperator.IsNumber(item.Left)&&this.MultiDayExtendWidth.Left!=item.Left){this.MultiDayExtendWidth.Left=item.Left;optionChanged=true;}if(IFrameSplitOperator.IsNumber(item.Right)&&this.MultiDayExtendWidth.Right!=item.Right){this.MultiDayExtendWidth.Right=item.Right;optionChanged=true;}}}if(optionChanged){this.Frame.ClearYCoordinateMaxMin();this.RequestData();}};this.RequestData=function(){if(this.DayCount<=1)this.RequestMinuteData();else this.RequestHistoryMinuteData();};this.ChangeDrawType=function(type){if(this.ChartPaint.length<=0)return;if(type==0)this.ChartPaint[0].IsDrawArea=true;else if(type==1)this.ChartPaint[0].IsDrawArea=false;else return;this.Draw();};this.UpdateDataOffset=function(){this.SourceData.DataOffset=this.DayOffset.DataOffset;for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.Data)continue;item.Data.DataOffset=this.DayOffset.DataOffset;if(item.ClassName=="ChartMinuteVolumBar"||item.ClassName=="ChartMinutePriceLine")item.DayOffset=this.DayOffset;}for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Data)continue;item.Data.DataOffset=this.DayOffset.DataOffset;}//叠加指标当前显示的数据偏移
7979
7982
  for(var i=0;i<this.Frame.SubFrame.length;++i){var subFrame=this.Frame.SubFrame[i];for(var j=0;j<subFrame.OverlayIndex.length;++j){var overlayItem=subFrame.OverlayIndex[j];for(var k=0;k<overlayItem.ChartPaint.length;++k){var item=overlayItem.ChartPaint[k];if(!item.Data)continue;item.Data.DataOffset=this.DayOffset.DataOffset;}}}};//请求历史分钟数据
7980
7983
  this.RequestHistoryMinuteData=function(){var self=this;this.IsBeforeData=false;this.IsAfterData=false;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.EnableSplash(true);this.Draw();if(this.NetworkFilter){var callCation={Before:this.IsShowMultiDayBeforeData,After:this.IsShowMultiDayAfterData//集合竞价
7981
7984
  };var obj={Name:'MinuteChartContainer::RequestHistoryMinuteData',//类名::函数
@@ -13211,7 +13214,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
13211
13214
  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);};}/********************************************************************************
13212
13215
  * 版本信息输出
13213
13216
  *
13214
- */var HQCHART_VERSION="1.1.13275";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13217
+ */var HQCHART_VERSION="1.1.13279";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13215
13218
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
13216
13219
  // BaseIndex:BaseIndex,
13217
13220
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.13276",
3
+ "version": "1.1.13280",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -9489,6 +9489,44 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9489
9489
 
9490
9490
  return true;
9491
9491
  }
9492
+
9493
+ //删除指标窗口扩展图形 option={ ChartID:图形ID, WindowIndex:窗口 }
9494
+ this.DeleteChartPaintExtend=function(option, bCallDestroy)
9495
+ {
9496
+ if (!option) return;
9497
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.ChartPaintEx)) return;
9498
+
9499
+ if (IFrameSplitOperator.IsNumber(option.WindowIndex))
9500
+ {
9501
+ var windowIndex=option.WindowIndex;
9502
+ if (!this.Frame.SubFrame[windowIndex]) return;
9503
+ var subFrame=this.Frame.SubFrame[windowIndex].Frame;
9504
+ if (!subFrame) return;
9505
+
9506
+ var paint=[]; //踢出当前窗口的指标画法
9507
+ var deleteCount=0;
9508
+ for(var i=0;i<this.ChartPaintEx.length; ++i)
9509
+ {
9510
+ var item=this.ChartPaintEx[i];
9511
+ var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
9512
+
9513
+ if (!bFind)
9514
+ {
9515
+ paint.push(item);
9516
+ }
9517
+ else
9518
+ {
9519
+ ++deleteCount;
9520
+ if (bCallDestroy===true)
9521
+ {
9522
+ if (item && item.OnDestroy) item.OnDestroy(); //图形销毁
9523
+ }
9524
+ }
9525
+ }
9526
+
9527
+ if (deleteCount>0) this.ChartPaintEx=paint;
9528
+ }
9529
+ }
9492
9530
  }
9493
9531
 
9494
9532
  function GetDevicePixelRatio()
@@ -18876,18 +18914,31 @@ function HQTradeFrame()
18876
18914
  }
18877
18915
 
18878
18916
  //清空Y轴坐标的最大最小值
18879
- this.ClearYCoordinateMaxMin=function()
18917
+ this.ClearYCoordinateMaxMin=function(windowIndex)
18880
18918
  {
18881
- for(var i=0;i<this.SubFrame.length;++i)
18919
+ if (IFrameSplitOperator.IsNumber(windowIndex))
18882
18920
  {
18883
- var subItem=this.SubFrame[i];
18884
- var frame=subItem.Frame;
18921
+ var subItem=this.SubFrame[windowIndex];
18922
+ if (!subItem || !subItem.Frame) return;
18885
18923
  if (frame.YMaxMin)
18886
18924
  {
18887
18925
  frame.YMaxMin.Max=null;
18888
18926
  frame.YMaxMin.Min=null;
18889
18927
  }
18890
18928
  }
18929
+ else
18930
+ {
18931
+ for(var i=0;i<this.SubFrame.length;++i)
18932
+ {
18933
+ var subItem=this.SubFrame[i];
18934
+ var frame=subItem.Frame;
18935
+ if (frame.YMaxMin)
18936
+ {
18937
+ frame.YMaxMin.Max=null;
18938
+ frame.YMaxMin.Min=null;
18939
+ }
18940
+ }
18941
+ }
18891
18942
  }
18892
18943
 
18893
18944
  this.SetLanguage=function(languageID)
@@ -71339,6 +71390,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
71339
71390
  for(var i=currentLength-1;i>=count;--i)
71340
71391
  {
71341
71392
  this.DeleteIndexPaint(i);
71393
+ this.DeleteChartPaintExtend({WindowIndex:i});
71342
71394
  this.Frame.SubFrame[i].Frame.ClearToolbar();
71343
71395
  if (event && event.Callback)
71344
71396
  {
@@ -71654,6 +71706,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
71654
71706
 
71655
71707
  var delFrame=this.Frame.SubFrame[id].Frame;
71656
71708
  this.DeleteIndexPaint(id);
71709
+ this.DeleteChartPaintExtend({WindowIndex:id});
71657
71710
  this.Frame.SubFrame[id].Frame.ClearToolbar();
71658
71711
 
71659
71712
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);
@@ -77239,6 +77292,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
77239
77292
  for(var i=currentLength-1;i>=count;--i)
77240
77293
  {
77241
77294
  this.DeleteIndexPaint(i);
77295
+ this.DeleteChartPaintExtend({WindowIndex:i});
77242
77296
  var item=this.Frame.SubFrame[i].Frame;
77243
77297
  if (item.ClearToolbar) item.ClearToolbar();
77244
77298
 
@@ -77478,6 +77532,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
77478
77532
 
77479
77533
  var delFrame=this.Frame.SubFrame[id].Frame;
77480
77534
  this.DeleteIndexPaint(id);
77535
+ this.DeleteChartPaintExtend({WindowIndex:id});
77481
77536
  this.Frame.SubFrame[id].Frame.ClearToolbar();
77482
77537
 
77483
77538
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);
@@ -78005,7 +78060,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78005
78060
  }
78006
78061
  }
78007
78062
 
78008
- if (optionChanged) this.RequestData();
78063
+ if (optionChanged)
78064
+ {
78065
+ this.Frame.ClearYCoordinateMaxMin();
78066
+ this.RequestData();
78067
+ }
78009
78068
  }
78010
78069
 
78011
78070
  this.RequestData=function()
@@ -13381,6 +13381,44 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13381
13381
 
13382
13382
  return true;
13383
13383
  }
13384
+
13385
+ //删除指标窗口扩展图形 option={ ChartID:图形ID, WindowIndex:窗口 }
13386
+ this.DeleteChartPaintExtend=function(option, bCallDestroy)
13387
+ {
13388
+ if (!option) return;
13389
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.ChartPaintEx)) return;
13390
+
13391
+ if (IFrameSplitOperator.IsNumber(option.WindowIndex))
13392
+ {
13393
+ var windowIndex=option.WindowIndex;
13394
+ if (!this.Frame.SubFrame[windowIndex]) return;
13395
+ var subFrame=this.Frame.SubFrame[windowIndex].Frame;
13396
+ if (!subFrame) return;
13397
+
13398
+ var paint=[]; //踢出当前窗口的指标画法
13399
+ var deleteCount=0;
13400
+ for(var i=0;i<this.ChartPaintEx.length; ++i)
13401
+ {
13402
+ var item=this.ChartPaintEx[i];
13403
+ var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
13404
+
13405
+ if (!bFind)
13406
+ {
13407
+ paint.push(item);
13408
+ }
13409
+ else
13410
+ {
13411
+ ++deleteCount;
13412
+ if (bCallDestroy===true)
13413
+ {
13414
+ if (item && item.OnDestroy) item.OnDestroy(); //图形销毁
13415
+ }
13416
+ }
13417
+ }
13418
+
13419
+ if (deleteCount>0) this.ChartPaintEx=paint;
13420
+ }
13421
+ }
13384
13422
  }
13385
13423
 
13386
13424
  function GetDevicePixelRatio()
@@ -22768,18 +22806,31 @@ function HQTradeFrame()
22768
22806
  }
22769
22807
 
22770
22808
  //清空Y轴坐标的最大最小值
22771
- this.ClearYCoordinateMaxMin=function()
22809
+ this.ClearYCoordinateMaxMin=function(windowIndex)
22772
22810
  {
22773
- for(var i=0;i<this.SubFrame.length;++i)
22811
+ if (IFrameSplitOperator.IsNumber(windowIndex))
22774
22812
  {
22775
- var subItem=this.SubFrame[i];
22776
- var frame=subItem.Frame;
22813
+ var subItem=this.SubFrame[windowIndex];
22814
+ if (!subItem || !subItem.Frame) return;
22777
22815
  if (frame.YMaxMin)
22778
22816
  {
22779
22817
  frame.YMaxMin.Max=null;
22780
22818
  frame.YMaxMin.Min=null;
22781
22819
  }
22782
22820
  }
22821
+ else
22822
+ {
22823
+ for(var i=0;i<this.SubFrame.length;++i)
22824
+ {
22825
+ var subItem=this.SubFrame[i];
22826
+ var frame=subItem.Frame;
22827
+ if (frame.YMaxMin)
22828
+ {
22829
+ frame.YMaxMin.Max=null;
22830
+ frame.YMaxMin.Min=null;
22831
+ }
22832
+ }
22833
+ }
22783
22834
  }
22784
22835
 
22785
22836
  this.SetLanguage=function(languageID)
@@ -75231,6 +75282,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
75231
75282
  for(var i=currentLength-1;i>=count;--i)
75232
75283
  {
75233
75284
  this.DeleteIndexPaint(i);
75285
+ this.DeleteChartPaintExtend({WindowIndex:i});
75234
75286
  this.Frame.SubFrame[i].Frame.ClearToolbar();
75235
75287
  if (event && event.Callback)
75236
75288
  {
@@ -75546,6 +75598,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
75546
75598
 
75547
75599
  var delFrame=this.Frame.SubFrame[id].Frame;
75548
75600
  this.DeleteIndexPaint(id);
75601
+ this.DeleteChartPaintExtend({WindowIndex:id});
75549
75602
  this.Frame.SubFrame[id].Frame.ClearToolbar();
75550
75603
 
75551
75604
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);
@@ -81131,6 +81184,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
81131
81184
  for(var i=currentLength-1;i>=count;--i)
81132
81185
  {
81133
81186
  this.DeleteIndexPaint(i);
81187
+ this.DeleteChartPaintExtend({WindowIndex:i});
81134
81188
  var item=this.Frame.SubFrame[i].Frame;
81135
81189
  if (item.ClearToolbar) item.ClearToolbar();
81136
81190
 
@@ -81370,6 +81424,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
81370
81424
 
81371
81425
  var delFrame=this.Frame.SubFrame[id].Frame;
81372
81426
  this.DeleteIndexPaint(id);
81427
+ this.DeleteChartPaintExtend({WindowIndex:id});
81373
81428
  this.Frame.SubFrame[id].Frame.ClearToolbar();
81374
81429
 
81375
81430
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);
@@ -81897,7 +81952,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
81897
81952
  }
81898
81953
  }
81899
81954
 
81900
- if (optionChanged) this.RequestData();
81955
+ if (optionChanged)
81956
+ {
81957
+ this.Frame.ClearYCoordinateMaxMin();
81958
+ this.RequestData();
81959
+ }
81901
81960
  }
81902
81961
 
81903
81962
  this.RequestData=function()
@@ -132158,7 +132217,7 @@ function ScrollBarBGChart()
132158
132217
 
132159
132218
 
132160
132219
 
132161
- var HQCHART_VERSION="1.1.13275";
132220
+ var HQCHART_VERSION="1.1.13279";
132162
132221
 
132163
132222
  function PrintHQChartVersion()
132164
132223
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.13275";
8
+ var HQCHART_VERSION="1.1.13279";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -13425,6 +13425,44 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13425
13425
 
13426
13426
  return true;
13427
13427
  }
13428
+
13429
+ //删除指标窗口扩展图形 option={ ChartID:图形ID, WindowIndex:窗口 }
13430
+ this.DeleteChartPaintExtend=function(option, bCallDestroy)
13431
+ {
13432
+ if (!option) return;
13433
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.ChartPaintEx)) return;
13434
+
13435
+ if (IFrameSplitOperator.IsNumber(option.WindowIndex))
13436
+ {
13437
+ var windowIndex=option.WindowIndex;
13438
+ if (!this.Frame.SubFrame[windowIndex]) return;
13439
+ var subFrame=this.Frame.SubFrame[windowIndex].Frame;
13440
+ if (!subFrame) return;
13441
+
13442
+ var paint=[]; //踢出当前窗口的指标画法
13443
+ var deleteCount=0;
13444
+ for(var i=0;i<this.ChartPaintEx.length; ++i)
13445
+ {
13446
+ var item=this.ChartPaintEx[i];
13447
+ var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
13448
+
13449
+ if (!bFind)
13450
+ {
13451
+ paint.push(item);
13452
+ }
13453
+ else
13454
+ {
13455
+ ++deleteCount;
13456
+ if (bCallDestroy===true)
13457
+ {
13458
+ if (item && item.OnDestroy) item.OnDestroy(); //图形销毁
13459
+ }
13460
+ }
13461
+ }
13462
+
13463
+ if (deleteCount>0) this.ChartPaintEx=paint;
13464
+ }
13465
+ }
13428
13466
  }
13429
13467
 
13430
13468
  function GetDevicePixelRatio()
@@ -22812,18 +22850,31 @@ function HQTradeFrame()
22812
22850
  }
22813
22851
 
22814
22852
  //清空Y轴坐标的最大最小值
22815
- this.ClearYCoordinateMaxMin=function()
22853
+ this.ClearYCoordinateMaxMin=function(windowIndex)
22816
22854
  {
22817
- for(var i=0;i<this.SubFrame.length;++i)
22855
+ if (IFrameSplitOperator.IsNumber(windowIndex))
22818
22856
  {
22819
- var subItem=this.SubFrame[i];
22820
- var frame=subItem.Frame;
22857
+ var subItem=this.SubFrame[windowIndex];
22858
+ if (!subItem || !subItem.Frame) return;
22821
22859
  if (frame.YMaxMin)
22822
22860
  {
22823
22861
  frame.YMaxMin.Max=null;
22824
22862
  frame.YMaxMin.Min=null;
22825
22863
  }
22826
22864
  }
22865
+ else
22866
+ {
22867
+ for(var i=0;i<this.SubFrame.length;++i)
22868
+ {
22869
+ var subItem=this.SubFrame[i];
22870
+ var frame=subItem.Frame;
22871
+ if (frame.YMaxMin)
22872
+ {
22873
+ frame.YMaxMin.Max=null;
22874
+ frame.YMaxMin.Min=null;
22875
+ }
22876
+ }
22877
+ }
22827
22878
  }
22828
22879
 
22829
22880
  this.SetLanguage=function(languageID)
@@ -75275,6 +75326,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
75275
75326
  for(var i=currentLength-1;i>=count;--i)
75276
75327
  {
75277
75328
  this.DeleteIndexPaint(i);
75329
+ this.DeleteChartPaintExtend({WindowIndex:i});
75278
75330
  this.Frame.SubFrame[i].Frame.ClearToolbar();
75279
75331
  if (event && event.Callback)
75280
75332
  {
@@ -75590,6 +75642,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
75590
75642
 
75591
75643
  var delFrame=this.Frame.SubFrame[id].Frame;
75592
75644
  this.DeleteIndexPaint(id);
75645
+ this.DeleteChartPaintExtend({WindowIndex:id});
75593
75646
  this.Frame.SubFrame[id].Frame.ClearToolbar();
75594
75647
 
75595
75648
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);
@@ -81175,6 +81228,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
81175
81228
  for(var i=currentLength-1;i>=count;--i)
81176
81229
  {
81177
81230
  this.DeleteIndexPaint(i);
81231
+ this.DeleteChartPaintExtend({WindowIndex:i});
81178
81232
  var item=this.Frame.SubFrame[i].Frame;
81179
81233
  if (item.ClearToolbar) item.ClearToolbar();
81180
81234
 
@@ -81414,6 +81468,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
81414
81468
 
81415
81469
  var delFrame=this.Frame.SubFrame[id].Frame;
81416
81470
  this.DeleteIndexPaint(id);
81471
+ this.DeleteChartPaintExtend({WindowIndex:id});
81417
81472
  this.Frame.SubFrame[id].Frame.ClearToolbar();
81418
81473
 
81419
81474
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);
@@ -81941,7 +81996,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
81941
81996
  }
81942
81997
  }
81943
81998
 
81944
- if (optionChanged) this.RequestData();
81999
+ if (optionChanged)
82000
+ {
82001
+ this.Frame.ClearYCoordinateMaxMin();
82002
+ this.RequestData();
82003
+ }
81945
82004
  }
81946
82005
 
81947
82006
  this.RequestData=function()
@@ -135588,7 +135647,7 @@ function HQChartScriptWorker()
135588
135647
 
135589
135648
 
135590
135649
 
135591
- var HQCHART_VERSION="1.1.13275";
135650
+ var HQCHART_VERSION="1.1.13279";
135592
135651
 
135593
135652
  function PrintHQChartVersion()
135594
135653
  {