hqchart 1.1.12669 → 1.1.12678

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.
@@ -1427,7 +1427,7 @@ chart.EnableBorderDrag=false;if(option.Frame){for(var i=0;i<option.Frame.length;
1427
1427
  }if(IFrameSplitOperator.IsBool(item.IsShowRightText)){chart.Frame.SubFrame[i].Frame.IsShowYText[1]=item.IsShowRightText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
1428
1428
  }if(item.Height>=0)chart.Frame.SubFrame[i].Height=item.Height;if(item.Custom)chart.Frame.SubFrame[i].Frame.YSplitOperator.Custom=item.Custom;if(item.RightTextFormat>0)chart.Frame.SubFrame[i].Frame.YSplitOperator.RightTextFormat=item.RightTextFormat;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsNumber(item.BorderLine))chart.Frame.SubFrame[i].Frame.BorderLine=item.BorderLine;if(IFrameSplitOperator.IsBool(item.EnableRemoveZero))chart.Frame.SubFrame[i].Frame.YSplitOperator.EnableRemoveZero=item.EnableRemoveZero;if(IFrameSplitOperator.IsNumber(item.FloatPrecision))chart.Frame.SubFrame[i].Frame.YSplitOperator.FloatPrecision=item.FloatPrecision;if(IFrameSplitOperator.IsBool(item.IsShowXLine))chart.Frame.SubFrame[i].Frame.IsShowXLine=item.IsShowXLine;if(IFrameSplitOperator.IsBool(item.IsShowYLine))chart.Frame.SubFrame[i].Frame.IsShowYLine=item.IsShowYLine;if(IFrameSplitOperator.IsNumber(item.YTextBaseline))chart.Frame.SubFrame[i].Frame.YTextBaseline=item.YTextBaseline;}}chart.UpdateXShowText();if(option.MinuteLine){if(option.MinuteLine.IsDrawAreaPrice==false)chart.ChartPaint[0].IsDrawArea=false;if(option.MinuteLine.IsShowLead==false)chart.IsShowLead=false;if(option.MinuteLine.IsShowAveragePrice==false){chart.ChartPaint[1].IsShow=false;chart.TitlePaint[0].IsShowAveragePrice=false;//标题栏均线也不显示
1429
1429
  for(var i=0;i<chart.ExtendChartPaint.length;++i){var item=chart.ExtendChartPaint[i];if(item.ClassName=="MinuteTooltipPaint")item.IsShowAveragePrice=false;}}if(option.MinuteLine.SplitType>0)chart.Frame.SubFrame[0].Frame.YSplitOperator.SplitType=option.MinuteLine.SplitType;}this.AdjustTitleHeight(chart);if(option.DisableMouseEvent===true){//取消鼠标事件
1430
- this.CanvasElement.onmousemove=function(e){};this.CanvasElement.oncontextmenu=function(e){};this.CanvasElement.ondblclick=function(e){};this.CanvasElement.onmousedown=function(e){};this.CanvasElement.onmouseout=function(e){};this.CanvasElement.onmouseleave=function(e){};}return chart;};//历史分钟走势图
1430
+ this.CanvasElement.onmousemove=function(e){};this.CanvasElement.oncontextmenu=function(e){};this.CanvasElement.ondblclick=function(e){};this.CanvasElement.onmousedown=function(e){};this.CanvasElement.onmouseout=function(e){};this.CanvasElement.onmouseleave=function(e){};}if(option.ExtendChart){for(var i=0;i<option.ExtendChart.length;++i){var item=option.ExtendChart[i];chart.CreateExtendChart(item.Name,item);}}return chart;};//历史分钟走势图
1431
1431
  this.CreateHistoryMinuteChartContainer=function(option){var chart=new HistoryMinuteChartContainer(this.CanvasElement);var windowsCount=2;if(option.Windows&&option.Windows.length>0)windowsCount+=option.Windows.length;//指标窗口从第3个窗口开始
1432
1432
  chart.Create(windowsCount);//创建子窗口
1433
1433
  if(option.IsShowCorssCursorInfo==false)//取消显示十字光标刻度信息
@@ -1972,7 +1972,15 @@ this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.To
1972
1972
  {var left=x;var top=y;var format=g_DivTooltipDataForamt.Create('ScatterPlotDataStringFormat');format.Value=toolTip;format.Symbol=this.Symbol;format.Period=this.Period;format.LanguageID=this.LanguageID;if(!format.Operator())return;var width=format.Width;this.Tooltip.className='jchart-charscatterplot-tooltip';//OX指标数据
1973
1973
  this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.Tooltip.style.top=top+xMove+"px";this.Tooltip.style.width=width+"px";this.Tooltip.style.height=null;this.Tooltip.innerHTML=format.Text;;this.Tooltip.style.display="block";}else if(toolTip.Type==7)//ChartDrawSVG
1974
1974
  {var left=x;var top=y;var format=g_DivTooltipDataForamt.Create('ChartDrawSVGDataStringFormat');format.Value=toolTip;format.Symbol=this.Symbol;format.Period=this.Period;format.LanguageID=this.LanguageID;if(!format.Operator())return;var width=format.Width;this.Tooltip.className='jchart-chartdrawsvg-tooltip';//ChartDrawSVG指标数据
1975
- this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.Tooltip.style.top=top+xMove+"px";this.Tooltip.style.width=width+"px";this.Tooltip.style.height=null;this.Tooltip.innerHTML=format.Text;;this.Tooltip.style.display="block";}};this.HideTooltip=function(){if(this.Tooltip.style.display!="none")this.Tooltip.style.display="none";};this.ShowSelectRect=function(x,y,x2,y2){var left=x;var top=y;var border=this.Frame.ChartBorder.GetBorder();var borderRight=border.Right;var borderLeft=border.Left;if(x>borderRight)x=borderRight;if(x2>borderRight)x2=borderRight;if(x<borderLeft)x=borderLeft;if(x2<borderLeft)x2=borderLeft;if(x>x2)left=x2;if(y>y2)top=y2;var width=Math.abs(x-x2);var height=Math.abs(y-y2);this.SelectRect.style.width=width+"px";this.SelectRect.style.height=height+"px";this.SelectRect.style.position="absolute";this.SelectRect.style.left=left+"px";this.SelectRect.style.top=top+"px";this.SelectRect.style.display="block";};this.UpdateSelectRect=function(start,end){if(!this.ChartPaint[0].Data)return;var paint=this.GetRectSelectPaint();if(!paint)return;var data=this.ChartPaint[0].Data;var startItem=data.Data[start];var endItem=data.Data[end];JSConsole.Chart.Log('[JSChartContainer::UpdateSelectRect]',startItem,endItem);paint.SetPoint(startItem,{Index:0,DataIndex:start});paint.SetPoint(endItem,{Index:1,DataIndex:end});this.Draw();};this.HideSelectRect=function(){this.SelectRect.style.display="none";};this.ResetFrameXYSplit=function(){if(typeof this.Frame.ResetXYSplit=='function')this.Frame.ResetXYSplit();};this.UpdateFrameMaxMin=function(){var frameMaxMinData=new Array();var chartPaint=new Array();for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsShow==false)continue;//隐藏的图形不计算
1975
+ this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.Tooltip.style.top=top+xMove+"px";this.Tooltip.style.width=width+"px";this.Tooltip.style.height=null;this.Tooltip.innerHTML=format.Text;;this.Tooltip.style.display="block";}};this.HideTooltip=function(){if(this.Tooltip.style.display!="none")this.Tooltip.style.display="none";};this.ShowSelectRect=function(x,y,x2,y2){var left=x;var top=y;var border=this.Frame.ChartBorder.GetBorder();var borderRight=border.Right;var borderLeft=border.Left;if(x>borderRight)x=borderRight;if(x2>borderRight)x2=borderRight;if(x<borderLeft)x=borderLeft;if(x2<borderLeft)x2=borderLeft;if(x>x2)left=x2;if(y>y2)top=y2;var width=Math.abs(x-x2);var height=Math.abs(y-y2);this.SelectRect.style.width=width+"px";this.SelectRect.style.height=height+"px";this.SelectRect.style.position="absolute";this.SelectRect.style.left=left+"px";this.SelectRect.style.top=top+"px";this.SelectRect.style.display="block";};this.UpdateSelectRect=function(start,end){if(!this.ChartPaint[0].Data)return;var paint=this.GetRectSelectPaint();if(!paint)return;var data=this.ChartPaint[0].Data;var startItem=data.Data[start];var endItem=data.Data[end];JSConsole.Chart.Log('[JSChartContainer::UpdateSelectRect]',startItem,endItem);paint.SetPoint(startItem,{Index:0,DataIndex:start});paint.SetPoint(endItem,{Index:1,DataIndex:end});this.Draw();};this.HideSelectRect=function(){this.SelectRect.style.display="none";};this.ResetFrameXYSplit=function(){if(typeof this.Frame.ResetXYSplit=='function')this.Frame.ResetXYSplit();};this.UpdateFrameMaxMinV2=function(){var mapFrame=new _map2.default();//key=frameid, value:{ ChartPaint:[] }
1976
+ for(var i=0;i<this.Frame.SubFrame.length;++i){var subItem=this.Frame.SubFrame[i];if(!subItem||!subItem.Frame)continue;var frame=subItem.Frame;var key=frame.Identify;var item={ID:key,Frame:frame,ChartPaint:[],Max:null,Min:null,OverlayFrame:[],//共享坐标
1977
+ SingleOverlay:[]//独立坐标
1978
+ };for(var j=0;j<subItem.OverlayIndex.length;++j){var overlayItem=subItem.OverlayIndex[j];var overlayFrame=overlayItem.Frame;if(overlayFrame.IsShareY){if(!overlayFrame.MainFrame)continue;if(overlayFrame.IsCalculateYMaxMin===false)continue;//叠加坐标Y轴不调整
1979
+ item.OverlayFrame.push(overlayFrame);for(var k=0;k<overlayItem.ChartPaint.length;++k){var chart=overlayItem.ChartPaint[k];item.ChartPaint.push(chart);}}else{item.SingleOverlay.push(overlayItem);}}mapFrame.set(key,item);}for(var i=0;i<this.ChartPaint.length;++i){var chart=this.ChartPaint[i];var key=chart.ChartFrame.Identify;if(!mapFrame.has(key))continue;var finder=mapFrame.get(key);finder.ChartPaint.push(chart);}for(var i=0;i<this.OverlayChartPaint.length;++i){var chart=this.OverlayChartPaint[i];if(!chart.ChartFrame)continue;var key=chart.ChartFrame.Identify;if(!mapFrame.has(key))continue;var finder=mapFrame.get(key);finder.ChartPaint.push(chart);}var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{for(var _iterator3=(0,_getIterator3.default)(mapFrame),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){var mapItem=_step3.value;var item=mapItem[1];var frame=item.Frame;//计算主框架最大最小
1980
+ for(var i=0;i<item.ChartPaint.length;++i){var chart=item.ChartPaint[i];if(chart.IsShow==false)continue;//隐藏的图形不计算
1981
+ if(chart.NotSupportMessage)continue;if(!chart.ChartFrame)continue;var range=chart.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;if(item.Max==null||item.Max<range.Max)item.Max=range.Max;if(item.Min==null||item.Min>range.Min)item.Min=range.Min;}if(item.Frame.YSpecificMaxMin)//固定坐标
1982
+ {item.Min=item.Frame.YSpecificMaxMin.Max;item.Max=item.Frame.YSpecificMaxMin.Min;}if(!IFrameSplitOperator.IsNumber(frame.YMaxMin.Max)||frame.YMaxMin.Max!=item.Max){frame.YMaxMin.Max=item.Max;frame.XYSplit=true;}if(!IFrameSplitOperator.IsNumber(frame.YMaxMin.Min)||frame.YMaxMin.Min!=item.Min){frame.YMaxMin.Min=item.Min;frame.XYSplit=true;}if(frame.XYSplit){var max=10,min=0;if(item.Max!=null)max=item.Max;if(item.Min!=null)min=item.Min;frame.HorizontalMax=max;frame.HorizontalMin=min;for(var j=0;j<item.OverlayFrame.length;++j){item.OverlayFrame[j].XYSplit=true;}}//独立坐标叠加指标
1983
+ for(var i=0;i<item.SingleOverlay.length;++i){var overlayItem=item.SingleOverlay[i];overlayItem.UpdateFrameMaxMin();}}}catch(err){_didIteratorError3=true;_iteratorError3=err;}finally{try{if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return();}}finally{if(_didIteratorError3){throw _iteratorError3;}}}};this.UpdateFrameMaxMin=function(){this.UpdateFrameMaxMinV2();return;var frameMaxMinData=new Array();var chartPaint=new Array();for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsShow==false)continue;//隐藏的图形不计算
1976
1984
  chartPaint.push(this.ChartPaint[i]);}for(var i=0;i<this.OverlayChartPaint.length;++i){chartPaint.push(this.OverlayChartPaint[i]);}var aryNotSupport=[];for(var i=0;i<chartPaint.length;++i){var paint=chartPaint[i];if(paint.NotSupportMessage){aryNotSupport.push(paint);continue;}var range=paint.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;var frameItem=null;for(var j=0;j<frameMaxMinData.length;++j){if(frameMaxMinData[j].Frame==paint.ChartFrame){frameItem=frameMaxMinData[j];break;}}if(frameItem){if(frameItem.Range.Max<range.Max)frameItem.Range.Max=range.Max;if(frameItem.Range.Min>range.Min)frameItem.Range.Min=range.Min;}else{frameItem={OverlayFrame:[]};frameItem.Frame=paint.ChartFrame;frameItem.Range=range;frameMaxMinData.push(frameItem);}}//当前计算
1977
1985
  for(var i=0;i<aryNotSupport.length;++i){var paint=aryNotSupport[i];var range={Max:10,Min:1};var frameItem=null;for(var j=0;j<frameMaxMinData.length;++j){if(frameMaxMinData[j].Frame==paint.ChartFrame){frameItem=frameMaxMinData[j];break;}}if(frameItem)continue;frameItem={OverlayFrame:[]};frameItem.Frame=paint.ChartFrame;frameItem.Range=range;frameMaxMinData.push(frameItem);}var mapFrame=new _map2.default();for(var i=0;i<frameMaxMinData.length;++i){var item=frameMaxMinData[i];mapFrame.set(item.Frame.Identify,item);}//叠加坐标Y轴使用主图指标, 最大最小值
1978
1986
  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];var overlayFrame=overlayItem.Frame;if(overlayFrame.IsShareY!=true)continue;if(!overlayFrame.MainFrame)continue;if(!mapFrame.has(overlayFrame.MainFrame.Identify))continue;var frameItem=mapFrame.get(overlayFrame.MainFrame.Identify);if(!frameItem)continue;frameItem.OverlayFrame.push(overlayFrame);if(overlayFrame.IsCalculateYMaxMin===false)continue;//叠加坐标Y轴不调整
@@ -2183,7 +2191,8 @@ this.XYSplit=true;//XY轴坐标信息改变
2183
2191
  this.HorizontalMax;//Y轴最大值
2184
2192
  this.HorizontalMin;//Y轴最小值
2185
2193
  this.XPointCount=10;//X轴数据个数
2186
- this.YSplitOperator;//Y轴分割
2194
+ //Y轴原始的最大值 最小值
2195
+ this.YMaxMin={Max:null,Min:null};this.YSplitOperator;//Y轴分割
2187
2196
  this.XSplitOperator;//X轴分割
2188
2197
  this.Data;//主数据
2189
2198
  this.IsLocked=false;//是否上锁
@@ -3588,9 +3597,9 @@ this.DrawHeatMap();if(!this.IsShow)return;if(this.ChartFrame.IsMinSize&&this.Nam
3588
3597
  {if(ptMax.X==null||ptMax.Y==null||ptMax.Value==null)return;if(ptMin.X==null||ptMin.Y==null||ptMin.Value==null)return;var leftArrow=g_JSChartResource.KLine.MaxMin.LeftArrow;var rightArrow=g_JSChartResource.KLine.MaxMin.RightArrow;var highYOffset=g_JSChartResource.KLine.MaxMin.HighYOffset;var lowYOffset=g_JSChartResource.KLine.MaxMin.LowYOffset;var defaultfloatPrecision=GetfloatPrecision(this.Symbol);var xText=ptMax.Y;var yText=ptMax.X;if(IFrameSplitOperator.IsNumber(highYOffset))xText+=highYOffset;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.font=this.TextFont;this.Canvas.fillStyle=this.TextColor;this.Canvas.textAlign=ptMax.Align;this.Canvas.textBaseline='bottom';var text=ptMax.Value.toFixed(defaultfloatPrecision);if(ptMax.Align=='left')text=leftArrow+text;else text=text+rightArrow;this.Canvas.fillText(text,0,0);this.Canvas.restore();var xText=ptMin.Y;var yText=ptMin.X;if(IFrameSplitOperator.IsNumber(lowYOffset))xText+=lowYOffset;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.font=this.TextFont;this.Canvas.fillStyle=this.TextColor;this.Canvas.textAlign=ptMin.Align;this.Canvas.textBaseline='top';var text=ptMin.Value.toFixed(defaultfloatPrecision);if(ptMin.Align=='left')text=leftArrow+text;else text=text+rightArrow;this.Canvas.fillText(text,0,0);this.Canvas.restore();};//画某一天的信息地雷
3589
3598
  this.DrawInfo=function(item){if(!this.InfoData||this.InfoData.size<=0)return;var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var bottom=this.ChartBorder.GetBottom();var top=this.ChartBorder.GetTop();var key=''+item.DayData.Date;if(this.Data.DataType==1)key=item.DayData.Date+'-'+item.DayData.Time;if(!this.InfoData.has(key))return;var infoData=this.InfoData.get(key);if(!infoData||infoData.Data.length<=0)return;this.Canvas.restore();this.Canvas.save();this.ClipWindow(isHScreen);var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
3590
3599
  var iconSize=dataWidth+distanceWidth;var minIconSize=18*pixelTatio;var bShowNum=true;if(iconSize<=15)bShowNum=false;if(iconSize<minIconSize)iconSize=minIconSize;var text='',title='';var mapImage=new _map2.default();var iconTop=item.YMax+1*pixelTatio;var iconBottom=item.YMin+1*pixelTatio+iconSize;var drawTop=true;var yOffset=0;for(var i in infoData.Data){var infoItem=infoData.Data[i];var imageInfo=mapImage.get(infoItem.InfoType);if(!imageInfo){var icon=JSKLineInfoMap.GetIconFont(infoItem.InfoType);this.Canvas.fillStyle=icon.Color;this.Canvas.font=iconSize+'px '+icon.Family;if(isHScreen){this.Canvas.textBaseline="middle";this.Canvas.textAlign="left";this.Canvas.fillText(icon.HScreenText,iconTop,item.XCenter,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,iconTop-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:iconTop,Y:item.XCenter}};mapImage.set(infoItem.InfoType,infoCache);iconTop+=iconSize;}else{this.Canvas.textBaseline="bottom";this.Canvas.textAlign="center";if(this.InfoPosition===1){var yBottom=bottom+yOffset;this.Canvas.fillText(icon.Text,item.XCenter,yBottom,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,yBottom-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:yBottom}};mapImage.set(infoItem.InfoType,infoCache);yOffset-=iconSize;}else{if(drawTop){this.Canvas.fillText(icon.Text,item.XCenter,iconTop,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,iconTop-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:iconTop}};mapImage.set(infoItem.InfoType,infoCache);iconTop-=iconSize;if(iconTop-iconSize<top)drawTop=false;}else//上面显示不下,就显示在下面
3591
- {this.Canvas.fillText(icon.Text,item.XCenter,iconBottom,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,iconBottom-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:iconBottom}};mapImage.set(infoItem.InfoType,infoCache);iconBottom+=iconSize;}}}}else{imageInfo.Data.push(infoItem);}}var numText;if(g_JSChartResource.KLine.NumIcon){if(isHScreen)numText=g_JSChartResource.KLine.NumIcon.HScreenText;else numText=g_JSChartResource.KLine.NumIcon.Text;}var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{for(var _iterator3=(0,_getIterator3.default)(mapImage),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){var item=_step3.value;var value=item[1];if(value.Data.length>=2&&numText&&bShowNum)//太小了 就不显示了
3600
+ {this.Canvas.fillText(icon.Text,item.XCenter,iconBottom,iconSize);var iconRect=new Rect(item.XCenter-iconSize/2,iconBottom-iconSize,iconSize,iconSize);var infoCache={Data:new Array(infoItem),Rect:iconRect,Type:infoItem.InfoType,TextRect:{X:item.XCenter,Y:iconBottom}};mapImage.set(infoItem.InfoType,infoCache);iconBottom+=iconSize;}}}}else{imageInfo.Data.push(infoItem);}}var numText;if(g_JSChartResource.KLine.NumIcon){if(isHScreen)numText=g_JSChartResource.KLine.NumIcon.HScreenText;else numText=g_JSChartResource.KLine.NumIcon.Text;}var _iteratorNormalCompletion4=true;var _didIteratorError4=false;var _iteratorError4=undefined;try{for(var _iterator4=(0,_getIterator3.default)(mapImage),_step4;!(_iteratorNormalCompletion4=(_step4=_iterator4.next()).done);_iteratorNormalCompletion4=true){var item=_step4.value;var value=item[1];if(value.Data.length>=2&&numText&&bShowNum)//太小了 就不显示了
3592
3601
  {var iconID=value.Data.length;if(iconID>=numText.length)iconID=0;this.Canvas.fillStyle=g_JSChartResource.KLine.NumIcon.Color;var text=numText[iconID];this.Canvas.fillText(text,value.TextRect.X,value.TextRect.Y,iconSize);}if(!isHScreen)this.InfoTooltipRect.push(value);//横屏没有tooltip
3593
- }}catch(err){_didIteratorError3=true;_iteratorError3=err;}finally{try{if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return();}}finally{if(_didIteratorError3){throw _iteratorError3;}}}this.Canvas.restore();this.Canvas.save();this.ClipClient(isHScreen);};//画交易图标
3602
+ }}catch(err){_didIteratorError4=true;_iteratorError4=err;}finally{try{if(!_iteratorNormalCompletion4&&_iterator4.return){_iterator4.return();}}finally{if(_didIteratorError4){throw _iteratorError4;}}}this.Canvas.restore();this.Canvas.save();this.ClipClient(isHScreen);};//画交易图标
3594
3603
  this.DrawTradeIcon=function(){if(!this.TradeData)return;var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+2.0;var chartright=this.ChartBorder.GetRight();var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+2.0;chartright=this.ChartBorder.GetBottom();}var sellData=this.TradeData.Sell;var buyData=this.TradeData.Buy;var iconSize=dataWidth+distanceWidth;var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
3595
3604
  var iconSizeMax=24*pixelTatio,iconSizeMin=12*pixelTatio;if(iconSize<iconSizeMin)iconSize=iconSizeMin;else if(iconSize>iconSizeMax)iconSize=iconSizeMax;this.Canvas.font=iconSize+'px '+this.TradeIcon.Family;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var data=this.Data.Data[i];if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var buy=false,sell=false;if(sellData&&i<sellData.length)sell=sellData[i]>0;if(buyData&&i<buyData.length)buy=buyData[i]>0;if(!sell&&!buy)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);var y=yHigh;if(buy){this.Canvas.fillStyle=this.TradeIcon.Buy.Color;if(isHScreen){this.Canvas.textAlign='right';this.Canvas.textBaseline='middle';this.Canvas.fillText(this.TradeIcon.Buy.HScreenText,yLow,x);}else{this.Canvas.textAlign='center';this.Canvas.textBaseline='top';this.Canvas.fillText(this.TradeIcon.Buy.Text,x,yLow);var iconRect=new Rect(x-iconSize/2,yLow,iconSize,iconSize);var iconData={Data:{Type:1,KData:data,Name:this.TradeData.Name,Param:this.TradeData.Param},Rect:iconRect,TextRect:{X:x,Y:yLow}};this.TradeIconTooltipRect.push(iconData);}}if(sell){this.Canvas.fillStyle=this.TradeIcon.Sell.Color;if(isHScreen){this.Canvas.textAlign='left';this.Canvas.textBaseline='middle';this.Canvas.fillText(this.TradeIcon.Sell.HScreenText,yHigh,x);}else{this.Canvas.textAlign='center';this.Canvas.textBaseline='bottom';this.Canvas.fillText(this.TradeIcon.Sell.Text,x,yHigh);var iconRect=new Rect(x-iconSize/2,yHigh-iconSize,iconSize,iconSize);var iconData={Data:{Type:2,KData:data,Name:this.TradeData.Name,Param:this.TradeData.Param},Rect:iconRect,TextRect:{X:x,Y:yHigh}};this.TradeIconTooltipRect.push(iconData);}}}};this.GetTooltipData=function(x,y,tooltip){if(!this.IsShow)return false;for(var i in this.TradeIconTooltipRect){var item=this.TradeIconTooltipRect[i];if(!item.Rect)continue;var rect=item.Rect;this.Canvas.beginPath();this.Canvas.rect(rect.X,rect.Y,rect.Width,rect.Height);if(this.Canvas.isPointInPath(x,y)){JSConsole.Chart.Log('[ChartKLine::GetTooltipData] trade icon ',item);tooltip.Data=item;tooltip.ChartPaint=this;tooltip.Type=2;//指标
3596
3605
  return true;}}for(var i in this.InfoTooltipRect){var item=this.InfoTooltipRect[i];if(!item.Rect)continue;var rect=item.Rect;this.Canvas.beginPath();this.Canvas.rect(rect.X,rect.Y,rect.Width,rect.Height);if(this.Canvas.isPointInPath(x,y)){//JSConsole.Chart.Log('[ChartKLine::GetTooltipData] info ', item);
@@ -3599,7 +3608,7 @@ return true;}}for(var i in this.TooltipRect){var rect=this.TooltipRect[i][1];thi
3599
3608
  return true;}}return false;};//计算当天显示数据的最大最小值
3600
3609
  this.GetMaxMin=function(){if(this.DrawType==14){if(this.FFKChart&&this.FFKChart.GetMaxMin){return this.FFKChart.GetMaxMin(this);}}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;}var range={Max:null,Min:null};if(this.DrawType==1||this.DrawType==4)// 1=收盘价线 4=收盘价面积图
3601
3610
  {for(var i=start,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var data=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(data.Close))continue;if(range.Max==null)range.Max=data.Close;if(range.Min==null)range.Min=data.Close;if(range.Max<data.Close)range.Max=data.Close;if(range.Min>data.Close)range.Min=data.Close;}}else{for(var i=start,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var data=this.Data.Data[i];if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;if(this.DrawType==5&&data.OrderFlow&&IFrameSplitOperator.IsNumber(data.OrderFlow.PriceOffset)){var high=data.High;var low=data.Low;if(IFrameSplitOperator.IsNonEmptyArray(data.OrderFlow.High)){for(var k=0;k<data.OrderFlow.High.length;++k){var item=data.OrderFlow.High[k];if(high<item.Price)high=item.Price;}}if(IFrameSplitOperator.IsNonEmptyArray(data.OrderFlow.Low)){for(var k=0;k<data.OrderFlow.Low.length;++k){var item=data.OrderFlow.Low[k];if(low>item.Price)low=item.Price;}}high+=data.OrderFlow.PriceOffset;low-=data.OrderFlow.PriceOffset;if(range.Max==null)range.Max=high;if(range.Min==null)range.Min=low;if(range.Max<high)range.Max=high;if(range.Min>low)range.Min=low;}else{if(range.Max==null)range.Max=data.High;if(range.Min==null)range.Min=data.Low;if(range.Max<data.High)range.Max=data.High;if(range.Min>data.Low)range.Min=data.Low;}}}return range;};//获取所有的价格
3602
- this.GetAllPrice=function(){var xPointCount=this.ChartFrame.XPointCount;var setPrice=new _set2.default();for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var data=this.Data.Data[i];if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var value=data.Close;setPrice.add(value);}var aryPrice=[];var _iteratorNormalCompletion4=true;var _didIteratorError4=false;var _iteratorError4=undefined;try{for(var _iterator4=(0,_getIterator3.default)(setPrice),_step4;!(_iteratorNormalCompletion4=(_step4=_iterator4.next()).done);_iteratorNormalCompletion4=true){var item=_step4.value;aryPrice.push(item);}}catch(err){_didIteratorError4=true;_iteratorError4=err;}finally{try{if(!_iteratorNormalCompletion4&&_iterator4.return){_iterator4.return();}}finally{if(_didIteratorError4){throw _iteratorError4;}}}aryPrice.sort(function(a,b){return a-b;});//排序 升序
3611
+ this.GetAllPrice=function(){var xPointCount=this.ChartFrame.XPointCount;var setPrice=new _set2.default();for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var data=this.Data.Data[i];if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var value=data.Close;setPrice.add(value);}var aryPrice=[];var _iteratorNormalCompletion5=true;var _didIteratorError5=false;var _iteratorError5=undefined;try{for(var _iterator5=(0,_getIterator3.default)(setPrice),_step5;!(_iteratorNormalCompletion5=(_step5=_iterator5.next()).done);_iteratorNormalCompletion5=true){var item=_step5.value;aryPrice.push(item);}}catch(err){_didIteratorError5=true;_iteratorError5=err;}finally{try{if(!_iteratorNormalCompletion5&&_iterator5.return){_iterator5.return();}}finally{if(_didIteratorError5){throw _iteratorError5;}}}aryPrice.sort(function(a,b){return a-b;});//排序 升序
3603
3612
  return aryPrice;};this.DrawLastPointEvent=function(ptLast){if(!this.GetEventCallback)return;//通知外部绘制最后一个点
3604
3613
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAW_KLINE_LAST_POINT);if(event){var kWidth={Data:this.ChartFrame.DataWidth,Distance:this.ChartFrame.DistanceWidth};if(ptLast)var data={LastPoint:{X:ptLast.X,Y:ptLast.Y,XLeft:ptLast.XLeft,XRight:ptLast.XRight},KItem:ptLast.KItem,DrawType:this.DrawType,KWidth:kWidth,ChartRight:ptLast.ChartRight};else var data={LastPoint:null,KItem:null,KWidth:kWidth};event.Callback(event,data,this);}};this.DrawOrderFlow=function(){var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;chartright=border.BottomEx;}var upColor=this.UpColor;var downColor=this.DownColor;var unchagneColor=this.UnchagneColor;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var ptLast=null;this.DrawOrderFlowHBar();//横向柱子
3605
3614
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);var y=yHigh;this.DrawKRange.End=i;var yKline={Low:yLow,High:yHigh,Open:yOpen,Close:yClose};var xKLine={Left:left,Center:x,Right:right,DataWidth:dataWidth};this.DrawOrderFlowBar(data.OrderFlow,data,xKLine,yKline,isHScreen);if(this.IsShowKTooltip&&!isHScreen)//添加tooltip区域
@@ -3670,10 +3679,12 @@ this.DrawOrderFlow_Style4=function(){var isHScreen=this.ChartFrame.IsHScreen===t
3670
3679
  var kBarWidth=this.OrderFlow_Style4.KBarWidth;if(dataWidth+distanceWidth<kBarWidth*3)kBarWidth=1;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);var y=yHigh;this.DrawKRange.End=i;var barLeft=left+this.OrderFlow_Style4.LeftMargin;var barRight=right+distanceWidth-this.OrderFlow_Style4.RightMargin;if(this.OrderFlow_Style4.KBarType==1){var kbarTop=Math.min(yOpen,yClose);var kbarBottom=Math.max(yOpen,yClose);var kbarLeft=ToFixedRect(left)+this.OrderFlow_Style4.LeftMargin;var kbarRight=barLeft+kBarWidth;if(data.Open<data.Close)this.Canvas.fillStyle=upColor;else if(data.Open>data.Close)this.Canvas.fillStyle=downColor;else this.Canvas.fillStyle=unchagneColor;var cellHeight=0;if(data.OrderFlow&&IFrameSplitOperator.IsNumber(data.OrderFlow.PriceOffset))cellHeight=this.GetPriceYOffset(data.OrderFlow.PriceOffset);this.Canvas.fillRect(kbarLeft,ToFixedRect(kbarTop-cellHeight/2),kBarWidth,ToFixedRect(kbarBottom-kbarTop+cellHeight));barLeft=kbarRight+1;}var yKline={Low:yLow,High:yHigh,Open:yOpen,Close:yClose};var xKLine={Left:barLeft,Center:x,Right:barRight,DataWidth:barRight-barLeft};xKLine.Center=xKLine.Left+xKLine.DataWidth/2;this.DrawOrderFlowBar_Style4(data.OrderFlow,data,xKLine,yKline,isHScreen);}};this.DrawOrderFlowBar_Style4=function(orderFlow,kItem,xKLine,yKline,isHScreen){var top=Math.min(yKline.Open,yKline.Close);var bottom=Math.max(yKline.Open,yKline.Close);var barHeight=Math.abs(yKline.Open-yKline.Close);var cellHeight=0;if(orderFlow&&IFrameSplitOperator.IsNumber(orderFlow.PriceOffset))cellHeight=this.GetPriceYOffset(orderFlow.PriceOffset);var textFont=this.GetDynamicOrderFlowFont(cellHeight,xKLine.DataWidth/2);this.IsShowOrderText=cellHeight>5&&xKLine.DataWidth>10;if(this.OrderFlow.AlwaysShowOrderText)this.IsShowOrderText=true;this.Canvas.textBaseline='middle';this.Canvas.textAlign='left';this.Canvas.font=textFont;var volBarSpace=this.OrderFlow_Style4.VolBarSpace;if(cellHeight<=4)volBarSpace=0;//太细了 间距就不要了
3671
3680
  if(orderFlow&&IFrameSplitOperator.IsNonEmptyArray(orderFlow.Order)){if(!orderFlow.Summary)orderFlow.Summary={};if(!orderFlow.Summary.VolMaxMin)//计算最大最小值
3672
3681
  {var volMaxMin={Max:null,Min:null};for(var i=0;i<orderFlow.Order.length;++i){var item=orderFlow.Order.length[i];if(volMaxMin.Max==null||volMaxMin.Max<item.Vol.Value)volMaxMin.Max=item.Vol.Value;if(volMaxMin.Min==null||volMaxMin.Min>item.Vol.Value)volMaxMin.Min=item.Vol.Value;}orderFlow.Summary.VolMaxMin=volMaxMin;}var preItem=null;//上一个矩形框
3673
- var max=orderFlow.Summary.VolMaxMin.Max,min=orderFlow.Summary.VolMaxMin.Min;for(var i=0;i<orderFlow.Order.length;++i){var item=orderFlow.Order[i];var yPrice=this.GetYFromData(item.Price,false);if(!item.Vol)continue;if(!IFrameSplitOperator.IsNumber(item.Vol.Value))continue;var barWidth=xKLine.Right-xKLine.Left;var volWidth=barWidth*(item.Vol.Value-min)/(max-min);var rect={Left:xKLine.Left,Right:xKLine.Right,Bottom:yPrice+cellHeight/2,Top:yPrice-cellHeight/2};rect.Right=rect.Left+volWidth;if(preItem&&item.Price>preItem.Price){rect.Bottom=preItem.Rect.Top-volBarSpace;}rect.Width=rect.Right-rect.Left;rect.Height=rect.Bottom-rect.Top;var rtDraw={Left:ToFixedRect(rect.Left),Top:ToFixedRect(rect.Top),Width:ToFixedRect(rect.Width),Height:ToFixedRect(rect.Height)};rtDraw.Bottom=rtDraw.Top+rtDraw.Height;rtDraw.Right=rtDraw.Left+rtDraw.Width;if(rtDraw.Width<1)rtDraw.Width=1;if(item.Vol.BG)//背景色
3682
+ var max=orderFlow.Summary.VolMaxMin.Max,min=orderFlow.Summary.VolMaxMin.Min;for(var i=0;i<orderFlow.Order.length;++i){var item=orderFlow.Order[i];var yPrice=this.GetYFromData(item.Price,false);if(!item.Vol)continue;if(IFrameSplitOperator.IsNonEmptyArray(item.AryVol)){var barWidth=xKLine.Right-xKLine.Left;var xVolLeft=xKLine.Left;var xVolRight=xVolLeft;var totalVol=0;var rtDraw={Bottom:yPrice+cellHeight/2,Top:yPrice-cellHeight/2};for(var j=0;j<item.AryVol.length;++j){var itemVol=item.AryVol[j];if(!IFrameSplitOperator.IsNumber(itemVol.Value))continue;totalVol+=itemVol.Value;xVolRight=barWidth*(totalVol-min)/(max-min)+xKLine.Left;var rtBar={Left:xVolLeft,Right:xVolRight,Bottom:yPrice+cellHeight/2,Top:yPrice-cellHeight/2};if(preItem&&item.Price>preItem.Price){rtBar.Bottom=preItem.Rect.Top-volBarSpace;}rtBar.Width=rtBar.Right-rtBar.Left;rtBar.Height=rtBar.Bottom-rtBar.Top;rtDraw={Left:ToFixedRect(rtBar.Left),Top:ToFixedRect(rtBar.Top),Width:ToFixedRect(rtBar.Width),Height:ToFixedRect(rtBar.Height)};rtDraw.Bottom=rtDraw.Top+rtDraw.Height;rtDraw.Right=rtDraw.Left+rtDraw.Width;if(rtDraw.Width<1)rtDraw.Width=1;if(itemVol.BG)//背景色
3683
+ {this.Canvas.fillStyle=itemVol.BG;this.Canvas.fillRect(rtDraw.Left,rtDraw.Top,rtDraw.Width,rtDraw.Height);}xVolLeft=rtDraw.Right;}rtDraw.Left=xKLine.Left;rtDraw.Width=rtDraw.Right-rtDraw.Left;if(item.Vol.Text&&this.IsShowOrderText)//文字
3684
+ {this.Canvas.fillStyle=item.Vol.Color;if(item.Vol.Font){var itemFont=this.GetDynamicOrderFlowFont(cellHeight,barWidth/2,item.Vol.Font);this.Canvas.font=itemFont;this.Canvas.fillText(text,xKLine.Center+textXOffset,yPrice);this.Canvas.font=textFont;}else{this.Canvas.fillText(item.Vol.Text,rtDraw.Left+2,yPrice);}}preItem={Price:item.Price,Rect:rtDraw};}else if(IFrameSplitOperator.IsNumber(item.Vol.Value)){var barWidth=xKLine.Right-xKLine.Left;var volWidth=barWidth*(item.Vol.Value-min)/(max-min);var rect={Left:xKLine.Left,Right:xKLine.Right,Bottom:yPrice+cellHeight/2,Top:yPrice-cellHeight/2};rect.Right=rect.Left+volWidth;if(preItem&&item.Price>preItem.Price){rect.Bottom=preItem.Rect.Top-volBarSpace;}rect.Width=rect.Right-rect.Left;rect.Height=rect.Bottom-rect.Top;var rtDraw={Left:ToFixedRect(rect.Left),Top:ToFixedRect(rect.Top),Width:ToFixedRect(rect.Width),Height:ToFixedRect(rect.Height)};rtDraw.Bottom=rtDraw.Top+rtDraw.Height;rtDraw.Right=rtDraw.Left+rtDraw.Width;if(rtDraw.Width<1)rtDraw.Width=1;if(item.Vol.BG)//背景色
3674
3685
  {this.Canvas.fillStyle=item.Vol.BG;this.Canvas.fillRect(rtDraw.Left,rtDraw.Top,rtDraw.Width,rtDraw.Height);}if(item.Vol.BorderColor)//边框
3675
3686
  {this.Canvas.strokeStyle=item.Vol.BorderColor;this.Canvas.strokeRect(ToFixedPoint(rtDraw.Left),ToFixedPoint(rtDraw.Top),rtDraw.Width,rtDraw.Height);}if(item.Vol.Text&&this.IsShowOrderText)//文字
3676
- {this.Canvas.fillStyle=item.Vol.Color;if(item.Vol.Font){var itemFont=this.GetDynamicOrderFlowFont(cellHeight,barWidth/2,item.Vol.Font);this.Canvas.font=itemFont;this.Canvas.fillText(text,xKLine.Center+textXOffset,yPrice);this.Canvas.font=textFont;}else{this.Canvas.fillText(item.Vol.Text,rtDraw.Left+2,yPrice);}}preItem={Price:item.Price,Rect:rtDraw};}}};//////////////////////////////////////////////////////////////
3687
+ {this.Canvas.fillStyle=item.Vol.Color;if(item.Vol.Font){var itemFont=this.GetDynamicOrderFlowFont(cellHeight,barWidth/2,item.Vol.Font);this.Canvas.font=itemFont;this.Canvas.fillText(text,xKLine.Center+textXOffset,yPrice);this.Canvas.font=textFont;}else{this.Canvas.fillText(item.Vol.Text,rtDraw.Left+2,yPrice);}}preItem={Price:item.Price,Rect:rtDraw};}else{continue;}}}};//////////////////////////////////////////////////////////////
3677
3688
  // high low bar
3678
3689
  //
3679
3690
  ///////////////////////////////////////////////////////////////
@@ -4879,7 +4890,7 @@ this.ID=Guid();//唯一的ID
4879
4890
  return aryData;};this.BuildKLineMap=function(){var isHScreen=this.ChartSubFrame.IsHScreen===true;var dataWidth=this.ChartSubFrame.DataWidth;var distanceWidth=this.ChartSubFrame.DistanceWidth;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;if(isHScreen)xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=this.ChartBorder.GetRight();if(isHScreen)chartright=this.ChartBorder.GetBottom();var mapKLine={Data:new _map2.default(),Start:null,End:null};//Key: date / date time, Value:索引
4880
4891
  for(var i=this.KData.DataOffset,j=0;i<this.KData.Data.length&&j<this.XPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.KData.Data[i];var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;if(j==0)mapKLine.XLeft=left;mapKLine.XRight=right;var value={Index:i,ShowIndex:j,X:x,Right:right,Left:left,Date:kItem.Date};if(ChartData.IsMinutePeriod(this.Period,true)){var key='Date:'+kItem.Date+' Time:'+kItem.Time;value.Time=kItem.Time;}else{var key='Date:'+kItem.Date;}mapKLine.Data.set(key,value);//保存下起始和结束位置
4881
4892
  if(j==0)mapKLine.Start=value;mapKLine.End=value;}return mapKLine;};this.GetBGCoordinate=function(item,kLineMap){var xLeft=null,xRight=null;var isMinutePeriod=ChartData.IsMinutePeriod(this.Period,true);var bSingleDate=false;//JSConsole.Chart.Log('[BackgroundPaint::GetBGCoordinate] item ', item);
4882
- if(isMinutePeriod){if(item.Start&&item.End&&item.Start.Date==item.End.Date&&item.Start.Time==item.End.Time)bSingleDate=true;}else{if(item.Start&&item.End&&item.Start.Date==item.End.Date)bSingleDate=true;}if(bSingleDate){if(isMinutePeriod)var key='Date:'+item.Start.Date+' Time:'+item.Start.Time;else var key='Date:'+item.Start.Date;if(!kLineMap.Data.has(key))return null;var findItem=kLineMap.Data.get(key);xLeft=findItem.Left;xRight=findItem.Right;return{Left:xLeft,Right:xRight,Width:xRight-xLeft};}if(item.Start){if(isMinutePeriod)var key='Date:'+item.Start.Date+' Time:'+item.Start.Time;else var key='Date:'+item.Start.Date;if(kLineMap.Data.has(key)){var findItem=kLineMap.Data.get(key);xLeft=findItem.Left;}else{if(isMinutePeriod){if(item.Start.Date<kLineMap.Start.Date||item.Start.Date==kLineMap.Start.Date&&item.Start.Time<=kLineMap.Start.Time){xLeft=kLineMap.Start.Left;}else{var _iteratorNormalCompletion5=true;var _didIteratorError5=false;var _iteratorError5=undefined;try{for(var _iterator5=(0,_getIterator3.default)(kLineMap.Data),_step5;!(_iteratorNormalCompletion5=(_step5=_iterator5.next()).done);_iteratorNormalCompletion5=true){var kItem=_step5.value;var value=kItem[1];if(value.Date>item.Start.Date||value.Date==item.Start.Date&&value.Time>item.Start.Time){xLeft=value.Left;break;}}}catch(err){_didIteratorError5=true;_iteratorError5=err;}finally{try{if(!_iteratorNormalCompletion5&&_iterator5.return){_iterator5.return();}}finally{if(_didIteratorError5){throw _iteratorError5;}}}}}else{if(item.Start.Date<=kLineMap.Start.Date){xLeft=kLineMap.Start.Left;}else{var _iteratorNormalCompletion6=true;var _didIteratorError6=false;var _iteratorError6=undefined;try{for(var _iterator6=(0,_getIterator3.default)(kLineMap.Data),_step6;!(_iteratorNormalCompletion6=(_step6=_iterator6.next()).done);_iteratorNormalCompletion6=true){var kItem=_step6.value;var value=kItem[1];if(value.Date>item.Start.Date){xLeft=value.Left;break;}}}catch(err){_didIteratorError6=true;_iteratorError6=err;}finally{try{if(!_iteratorNormalCompletion6&&_iterator6.return){_iterator6.return();}}finally{if(_didIteratorError6){throw _iteratorError6;}}}}}}}else{xLeft=kLineMap.XLeft;}if(item.End){if(isMinutePeriod)var key='Date:'+item.End.Date+' Time:'+item.End.Time;else var key='Date:'+item.End.Date;if(kLineMap.Data.has(key)){var findItem=kLineMap.Data.get(key);xRight=findItem.Right;}else{if(isMinutePeriod){if(item.End.Date<kLineMap.Start.Date||item.End.Date==kLineMap.Start.Date&&item.End.Time<kLineMap.Start.Time)return null;if(item.End.Date<kLineMap.End.Date||item.End.Date==kLineMap.End.Date&&item.End.Time>=kLineMap.End.Time){xRight=kLineMap.End.Right;}else{var previousX=null;var _iteratorNormalCompletion7=true;var _didIteratorError7=false;var _iteratorError7=undefined;try{for(var _iterator7=(0,_getIterator3.default)(kLineMap.Data),_step7;!(_iteratorNormalCompletion7=(_step7=_iterator7.next()).done);_iteratorNormalCompletion7=true){var kItem=_step7.value;var value=kItem[1];if(value.Date>item.End.Date||value.Date==item.End.Date&&value.Time>item.End.Time){xRight=previousX;break;}previousX=value.Right;}}catch(err){_didIteratorError7=true;_iteratorError7=err;}finally{try{if(!_iteratorNormalCompletion7&&_iterator7.return){_iterator7.return();}}finally{if(_didIteratorError7){throw _iteratorError7;}}}}}else{if(item.End.Date<kLineMap.Start.Date)return null;if(item.End.Date<=kLineMap.End.Date){xRight=kLineMap.End.Right;}else{var previousX=null;var _iteratorNormalCompletion8=true;var _didIteratorError8=false;var _iteratorError8=undefined;try{for(var _iterator8=(0,_getIterator3.default)(kLineMap.Data),_step8;!(_iteratorNormalCompletion8=(_step8=_iterator8.next()).done);_iteratorNormalCompletion8=true){var kItem=_step8.value;var value=kItem[1];if(value.Date>item.End.Date){xRight=previousX;break;}previousX=value.Right;}}catch(err){_didIteratorError8=true;_iteratorError8=err;}finally{try{if(!_iteratorNormalCompletion8&&_iterator8.return){_iterator8.return();}}finally{if(_didIteratorError8){throw _iteratorError8;}}}}}}}else{xRight=kLineMap.XRight;}if(xLeft==null||xRight==null)return null;return{Left:xLeft,Right:xRight,Width:xRight-xLeft};};}function MinuteBackgroundPaint(){this.newMethod=IExtendChartPainting;//派生
4893
+ if(isMinutePeriod){if(item.Start&&item.End&&item.Start.Date==item.End.Date&&item.Start.Time==item.End.Time)bSingleDate=true;}else{if(item.Start&&item.End&&item.Start.Date==item.End.Date)bSingleDate=true;}if(bSingleDate){if(isMinutePeriod)var key='Date:'+item.Start.Date+' Time:'+item.Start.Time;else var key='Date:'+item.Start.Date;if(!kLineMap.Data.has(key))return null;var findItem=kLineMap.Data.get(key);xLeft=findItem.Left;xRight=findItem.Right;return{Left:xLeft,Right:xRight,Width:xRight-xLeft};}if(item.Start){if(isMinutePeriod)var key='Date:'+item.Start.Date+' Time:'+item.Start.Time;else var key='Date:'+item.Start.Date;if(kLineMap.Data.has(key)){var findItem=kLineMap.Data.get(key);xLeft=findItem.Left;}else{if(isMinutePeriod){if(item.Start.Date<kLineMap.Start.Date||item.Start.Date==kLineMap.Start.Date&&item.Start.Time<=kLineMap.Start.Time){xLeft=kLineMap.Start.Left;}else{var _iteratorNormalCompletion6=true;var _didIteratorError6=false;var _iteratorError6=undefined;try{for(var _iterator6=(0,_getIterator3.default)(kLineMap.Data),_step6;!(_iteratorNormalCompletion6=(_step6=_iterator6.next()).done);_iteratorNormalCompletion6=true){var kItem=_step6.value;var value=kItem[1];if(value.Date>item.Start.Date||value.Date==item.Start.Date&&value.Time>item.Start.Time){xLeft=value.Left;break;}}}catch(err){_didIteratorError6=true;_iteratorError6=err;}finally{try{if(!_iteratorNormalCompletion6&&_iterator6.return){_iterator6.return();}}finally{if(_didIteratorError6){throw _iteratorError6;}}}}}else{if(item.Start.Date<=kLineMap.Start.Date){xLeft=kLineMap.Start.Left;}else{var _iteratorNormalCompletion7=true;var _didIteratorError7=false;var _iteratorError7=undefined;try{for(var _iterator7=(0,_getIterator3.default)(kLineMap.Data),_step7;!(_iteratorNormalCompletion7=(_step7=_iterator7.next()).done);_iteratorNormalCompletion7=true){var kItem=_step7.value;var value=kItem[1];if(value.Date>item.Start.Date){xLeft=value.Left;break;}}}catch(err){_didIteratorError7=true;_iteratorError7=err;}finally{try{if(!_iteratorNormalCompletion7&&_iterator7.return){_iterator7.return();}}finally{if(_didIteratorError7){throw _iteratorError7;}}}}}}}else{xLeft=kLineMap.XLeft;}if(item.End){if(isMinutePeriod)var key='Date:'+item.End.Date+' Time:'+item.End.Time;else var key='Date:'+item.End.Date;if(kLineMap.Data.has(key)){var findItem=kLineMap.Data.get(key);xRight=findItem.Right;}else{if(isMinutePeriod){if(item.End.Date<kLineMap.Start.Date||item.End.Date==kLineMap.Start.Date&&item.End.Time<kLineMap.Start.Time)return null;if(item.End.Date<kLineMap.End.Date||item.End.Date==kLineMap.End.Date&&item.End.Time>=kLineMap.End.Time){xRight=kLineMap.End.Right;}else{var previousX=null;var _iteratorNormalCompletion8=true;var _didIteratorError8=false;var _iteratorError8=undefined;try{for(var _iterator8=(0,_getIterator3.default)(kLineMap.Data),_step8;!(_iteratorNormalCompletion8=(_step8=_iterator8.next()).done);_iteratorNormalCompletion8=true){var kItem=_step8.value;var value=kItem[1];if(value.Date>item.End.Date||value.Date==item.End.Date&&value.Time>item.End.Time){xRight=previousX;break;}previousX=value.Right;}}catch(err){_didIteratorError8=true;_iteratorError8=err;}finally{try{if(!_iteratorNormalCompletion8&&_iterator8.return){_iterator8.return();}}finally{if(_didIteratorError8){throw _iteratorError8;}}}}}else{if(item.End.Date<kLineMap.Start.Date)return null;if(item.End.Date<=kLineMap.End.Date){xRight=kLineMap.End.Right;}else{var previousX=null;var _iteratorNormalCompletion9=true;var _didIteratorError9=false;var _iteratorError9=undefined;try{for(var _iterator9=(0,_getIterator3.default)(kLineMap.Data),_step9;!(_iteratorNormalCompletion9=(_step9=_iterator9.next()).done);_iteratorNormalCompletion9=true){var kItem=_step9.value;var value=kItem[1];if(value.Date>item.End.Date){xRight=previousX;break;}previousX=value.Right;}}catch(err){_didIteratorError9=true;_iteratorError9=err;}finally{try{if(!_iteratorNormalCompletion9&&_iterator9.return){_iterator9.return();}}finally{if(_didIteratorError9){throw _iteratorError9;}}}}}}}else{xRight=kLineMap.XRight;}if(xLeft==null||xRight==null)return null;return{Left:xLeft,Right:xRight,Width:xRight-xLeft};};}function MinuteBackgroundPaint(){this.newMethod=IExtendChartPainting;//派生
4883
4894
  this.newMethod();delete this.newMethod;this.ClassName='MinuteBackgroundPaint';this.IsDynamic=true;this.IsCallbackDraw=false;//在回调函数里绘制, 不在Draw()中绘制
4884
4895
  this.HQChart;this.Data;//背景数据 { [Date:, Text:, TextColor:, Font: }
4885
4896
  //this.Data=[ {Date:20210421, Text:"测试测试测试!!!!!"}];
@@ -5743,17 +5754,17 @@ var value=null;var preVaildItem=null;if(item.DataType=="StraightLine")//直线
5743
5754
  {preVaildItem=this.GetPreVaildItem(item.Data.Data,dataIndex);if(!preVaildItem)return null;preText=this.FormatValue(preVaildItem.Item,item);if(item.Name){var dyValue=this.GetDynamicOutValue(item.Name,preText);if(dyValue)preText=dyValue;}valueText='--('+preText+')';return{Text:valueText,ArrayText:aryText};}if(value==null)return null;if(item.DataType=="HistoryData-Vol"){value=value.Vol;valueText=this.FormatValue(value,item);}else if(item.DataType=="MultiReport"){valueText=this.FormatMultiReport(value,item);}else if(item.DataType=="MULTI_POINT_LINE"){valueText=this.FromatMultiDataLine(value,item);if(!valueText)return null;}else if(item.DataType=="ChartStackedBar"){aryText=this.FromatStackedBarTitle(value,item);if(!aryText)return null;return{Text:null,ArrayText:aryText};}else if(g_ScriptIndexChartFactory.Has(item.DataType))//外部挂接
5744
5755
  {var find=g_ScriptIndexChartFactory.Get(item.DataType);if(find&&find.FormatTitleCallback)return find.FormatTitleCallback(value,item,dataIndex);}else{if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_INDEX_OUT_TEXT);if(event){var data={Item:item,Index:titleIndex,Data:this.Data,FrameID:this.Frame.Identify,DataIndex:dataIndex,Value:value,Out:null};event.Callback(event,data,this);if(data.Out)return data.Out;}}var arrow=null;if(this.IsShowUpDownArrow){var preValue=null;if(dataIndex-1>=0)preValue=item.Data.Data[dataIndex-1];if(IFrameSplitOperator.IsNumber(preValue)){if(preValue>value)arrow='↓';else if(preValue<value)arrow='↑';else arrow='→';}}valueText=this.FormatValue(value,item);if(item.Name){var dyValue=this.GetDynamicOutValue(item.Name,valueText);if(dyValue)valueText=dyValue;}if(arrow)valueText+=arrow;}}return{Text:valueText,ArrayText:aryText};};//获取上一个有效数据
5745
5756
  this.GetPreVaildItem=function(data,start){for(var i=start;i>=0;--i){var item=data[i];if(item)return{Item:item,Index:i};}return null;};this.DrawSelectedLine=function(left,bottom,textWidth){this.Canvas.save();var fontHeight=this.GetFontHeight();this.Canvas.strokeStyle=this.SelectedColor;var lineWidth=4;var lineBottom=ToFixedPoint2(lineWidth,bottom+fontHeight/2);this.Canvas.lineWidth=lineWidth;this.Canvas.beginPath();this.Canvas.moveTo(left,lineBottom);this.Canvas.lineTo(left+textWidth,lineBottom);this.Canvas.stroke();this.Canvas.restore();};this.DrawOverlayIndexSingleLine=function(moveonPoint,mouseStatus)//叠加指标1个指标一行
5746
- {var pixelRatio=GetDevicePixelRatio();var border=this.Frame.GetBorder();if(this.Frame.IsHScreen===true){var left=1;var top=2*pixelRatio;var right=this.Frame.ChartBorder.GetHeight();var bottom=this.Frame.ChartBorder.GetWidthEx();}else{var top=border.TopTitle+2*pixelRatio;var left=this.Frame.ChartBorder.GetLeft()+this.MerginLeft;var right=border.Right;var bottom=border.Bottom;}var lineSpace=this.OverlayIndexType.LineSpace*pixelRatio;var x=left,y=top;var fontHeight=GetFontHeight(this.Canvas,this.Font,"擎");y=top+fontHeight/2;var _iteratorNormalCompletion9=true;var _didIteratorError9=false;var _iteratorError9=undefined;try{for(var _iterator9=(0,_getIterator3.default)(this.OverlayIndex),_step9;!(_iteratorNormalCompletion9=(_step9=_iterator9.next()).done);_iteratorNormalCompletion9=true){item=_step9.value;var overlayItem=item[1];var overlayID=item[0];var toolbarInfo={Width:0,YCenter:y,ID:overlayID};this.DrawOverlayToolbar(overlayItem,toolbarInfo,moveonPoint,mouseStatus);if(!overlayItem.Frame.IsShowIndexTitle)continue;x=left+toolbarInfo.Width;this.Canvas.font=this.Font;this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";if(overlayItem.Title&&this.IsShowOverlayIndexName){var textWidth=this.Canvas.measureText(overlayItem.Title).width+2;if(x+textWidth<right){if(this.OverlayIndexType.BGColor){this.Canvas.fillStyle=this.OverlayIndexType.BGColor;var rtBG={Left:x,Top:y-fontHeight/2,Width:textWidth,Height:fontHeight+lineSpace};//保存下标题的坐标
5757
+ {var pixelRatio=GetDevicePixelRatio();var border=this.Frame.GetBorder();if(this.Frame.IsHScreen===true){var left=1;var top=2*pixelRatio;var right=this.Frame.ChartBorder.GetHeight();var bottom=this.Frame.ChartBorder.GetWidthEx();}else{var top=border.TopTitle+2*pixelRatio;var left=this.Frame.ChartBorder.GetLeft()+this.MerginLeft;var right=border.Right;var bottom=border.Bottom;}var lineSpace=this.OverlayIndexType.LineSpace*pixelRatio;var x=left,y=top;var fontHeight=GetFontHeight(this.Canvas,this.Font,"擎");y=top+fontHeight/2;var _iteratorNormalCompletion10=true;var _didIteratorError10=false;var _iteratorError10=undefined;try{for(var _iterator10=(0,_getIterator3.default)(this.OverlayIndex),_step10;!(_iteratorNormalCompletion10=(_step10=_iterator10.next()).done);_iteratorNormalCompletion10=true){item=_step10.value;var overlayItem=item[1];var overlayID=item[0];var toolbarInfo={Width:0,YCenter:y,ID:overlayID};this.DrawOverlayToolbar(overlayItem,toolbarInfo,moveonPoint,mouseStatus);if(!overlayItem.Frame.IsShowIndexTitle)continue;x=left+toolbarInfo.Width;this.Canvas.font=this.Font;this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";if(overlayItem.Title&&this.IsShowOverlayIndexName){var textWidth=this.Canvas.measureText(overlayItem.Title).width+2;if(x+textWidth<right){if(this.OverlayIndexType.BGColor){this.Canvas.fillStyle=this.OverlayIndexType.BGColor;var rtBG={Left:x,Top:y-fontHeight/2,Width:textWidth,Height:fontHeight+lineSpace};//保存下标题的坐标
5747
5758
  this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}if(this.IsSelectedChart(overlayID))this.DrawSelectedLine(x,y,textWidth,overlayItem.Title);this.Canvas.fillStyle=this.TitleColor;this.Canvas.fillText(overlayItem.Title,x,y,textWidth);}x+=textWidth;}for(var i=0;i<overlayItem.Data.length;++i){var item=overlayItem.Data[i];if(!item||!item.Data||!item.Data.Data||!item.Name)continue;if(item.IsVisible===false)continue;if(item.Data.Data.length<=0)continue;var value=null;var valueText=null;var aryText=null;if(item.DataType=="StraightLine")//直线只有1个数据
5748
5759
  {value=item.Data.Data[0];valueText=this.FormatValue(value,item);}else{var index=Math.abs(this.CursorIndex-0.5);index=parseInt(index.toFixed(0));if(this.IsKLineFrame)index=this.CursorIndex;var dataIndex=item.Data.DataOffset+index;if(dataIndex>=item.Data.Data.length)dataIndex=item.Data.Data.length-1;if(dataIndex<0)continue;value=item.Data.Data[dataIndex];if(value==null)continue;if(item.DataType=="HistoryData-Vol"){value=value.Vol;valueText=this.FormatValue(value,item);}else if(item.DataType=="MultiReport"){valueText=this.FormatMultiReport(value,item);}else if(item.DataType=="ChartStackedBar"){aryText=this.FromatStackedBarTitle(value,item);if(!aryText)continue;}else{valueText=this.FormatValue(value,item);}}if(aryText){var text;for(var k=0;k<aryText.length;++k){var titleItem=aryText[k];if(titleItem.Name)text=titleItem.Name+":"+titleItem.Text;else text=titleItem.Text;var textWidth=this.Canvas.measureText(text).width+2;//后空2个像素
5749
5760
  if(x+textWidth>right)break;if(this.OverlayIndexType.BGColor){this.Canvas.fillStyle=this.OverlayIndexType.BGColor;var rtBG={Left:x,Top:y-fontHeight/2,Width:textWidth,Height:fontHeight+lineSpace};//保存下标题的坐标
5750
5761
  this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}this.Canvas.fillStyle=titleItem.Color;this.Canvas.fillText(text,x,y,textWidth);x+=textWidth;}}else{var text=valueText;if(item.Name){var dyTitle=this.GetDynamicOutName(item.Name,overlayID);if(dyTitle)text=dyTitle+":"+valueText;else text=item.Name+":"+valueText;}var textWidth=this.Canvas.measureText(text).width+2;//后空2个像素
5751
5762
  if(x+textWidth>right)break;if(this.OverlayIndexType.BGColor){this.Canvas.fillStyle=this.OverlayIndexType.BGColor;var rtBG={Left:x,Top:y-fontHeight/2,Width:textWidth,Height:fontHeight+lineSpace};//保存下标题的坐标
5752
- this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}this.Canvas.fillStyle=item.Color;this.Canvas.fillText(text,x,y,textWidth);x+=textWidth;}}y+=fontHeight+lineSpace;if(y+fontHeight+lineSpace>=bottom)break;}}catch(err){_didIteratorError9=true;_iteratorError9=err;}finally{try{if(!_iteratorNormalCompletion9&&_iterator9.return){_iterator9.return();}}finally{if(_didIteratorError9){throw _iteratorError9;}}}};this.DrawOverlayIndex=function(left)//叠加指标标题
5763
+ this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}this.Canvas.fillStyle=item.Color;this.Canvas.fillText(text,x,y,textWidth);x+=textWidth;}}y+=fontHeight+lineSpace;if(y+fontHeight+lineSpace>=bottom)break;}}catch(err){_didIteratorError10=true;_iteratorError10=err;}finally{try{if(!_iteratorNormalCompletion10&&_iterator10.return){_iterator10.return();}}finally{if(_didIteratorError10){throw _iteratorError10;}}}};this.DrawOverlayIndex=function(left)//叠加指标标题
5753
5764
  {var bottom=this.Frame.ChartBorder.GetTop()+this.Frame.ChartBorder.TitleHeight/2;//上下居中显示
5754
- var right=this.Frame.ChartBorder.GetRight();if(this.Frame.IsHScreen===true){bottom=-this.Frame.ChartBorder.TitleHeight/2;right=this.Frame.ChartBorder.GetHeight();}if(left>right)return;var spaceWidth=5*GetDevicePixelRatio();var drawLeft=left;var _iteratorNormalCompletion10=true;var _didIteratorError10=false;var _iteratorError10=undefined;try{for(var _iterator10=(0,_getIterator3.default)(this.OverlayIndex),_step10;!(_iteratorNormalCompletion10=(_step10=_iterator10.next()).done);_iteratorNormalCompletion10=true){item=_step10.value;left+=spaceWidth;var overlayItem=item[1];var overlayID=item[0];if(overlayItem.Title&&this.IsShowOverlayIndexName){this.Canvas.fillStyle=this.TitleColor;var textWidth=this.Canvas.measureText(overlayItem.Title).width+2;drawLeft=left;left+=textWidth;if(left>right)break;this.Canvas.fillText(overlayItem.Title,drawLeft,bottom,textWidth);if(this.IsSelectedChart(overlayID))this.DrawSelectedLine(drawLeft,bottom,textWidth);}for(var i in overlayItem.Data){var item=overlayItem.Data[i];if(!item||!item.Data||!item.Data.Data||!item.Name)continue;if(item.Data.Data.length<=0)continue;var value=null;var valueText=null;if(item.DataType=="StraightLine")//直线只有1个数据
5765
+ var right=this.Frame.ChartBorder.GetRight();if(this.Frame.IsHScreen===true){bottom=-this.Frame.ChartBorder.TitleHeight/2;right=this.Frame.ChartBorder.GetHeight();}if(left>right)return;var spaceWidth=5*GetDevicePixelRatio();var drawLeft=left;var _iteratorNormalCompletion11=true;var _didIteratorError11=false;var _iteratorError11=undefined;try{for(var _iterator11=(0,_getIterator3.default)(this.OverlayIndex),_step11;!(_iteratorNormalCompletion11=(_step11=_iterator11.next()).done);_iteratorNormalCompletion11=true){item=_step11.value;left+=spaceWidth;var overlayItem=item[1];var overlayID=item[0];if(overlayItem.Title&&this.IsShowOverlayIndexName){this.Canvas.fillStyle=this.TitleColor;var textWidth=this.Canvas.measureText(overlayItem.Title).width+2;drawLeft=left;left+=textWidth;if(left>right)break;this.Canvas.fillText(overlayItem.Title,drawLeft,bottom,textWidth);if(this.IsSelectedChart(overlayID))this.DrawSelectedLine(drawLeft,bottom,textWidth);}for(var i in overlayItem.Data){var item=overlayItem.Data[i];if(!item||!item.Data||!item.Data.Data||!item.Name)continue;if(item.Data.Data.length<=0)continue;var value=null;var valueText=null;if(item.DataType=="StraightLine")//直线只有1个数据
5755
5766
  {value=item.Data.Data[0];valueText=this.FormatValue(value,item);}else{var index=Math.abs(this.CursorIndex-0.5);index=parseInt(index.toFixed(0));if(this.IsKLineFrame)index=this.CursorIndex;var dataIndex=item.Data.DataOffset+index;if(dataIndex>=item.Data.Data.length)dataIndex=item.Data.Data.length-1;if(dataIndex<0)continue;value=item.Data.Data[dataIndex];if(value==null)continue;if(item.DataType=="HistoryData-Vol"){value=value.Vol;valueText=this.FormatValue(value,item);}else if(item.DataType=="MultiReport"){valueText=this.FormatMultiReport(value,item);}else{valueText=this.FormatValue(value,item);}}this.Canvas.fillStyle=item.Color;var text=item.Name+":"+valueText;var textWidth=this.Canvas.measureText(text).width+2;//后空2个像素
5756
- drawLeft=left;left+=textWidth;if(left>right)break;this.Canvas.fillText(text,drawLeft,bottom,textWidth);}if(left>right)break;}}catch(err){_didIteratorError10=true;_iteratorError10=err;}finally{try{if(!_iteratorNormalCompletion10&&_iterator10.return){_iterator10.return();}}finally{if(_didIteratorError10){throw _iteratorError10;}}}};this.HScreenDraw=function(){var border=this.Frame.ChartBorder.GetHScreenBorder();var xText=this.Frame.ChartBorder.GetRightTitle();var yText=border.TopEx;this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);var left=1;var bottom=-this.Frame.ChartBorder.TitleHeight/2;//上下居中显示
5767
+ drawLeft=left;left+=textWidth;if(left>right)break;this.Canvas.fillText(text,drawLeft,bottom,textWidth);}if(left>right)break;}}catch(err){_didIteratorError11=true;_iteratorError11=err;}finally{try{if(!_iteratorNormalCompletion11&&_iterator11.return){_iterator11.return();}}finally{if(_didIteratorError11){throw _iteratorError11;}}}};this.HScreenDraw=function(){var border=this.Frame.ChartBorder.GetHScreenBorder();var xText=this.Frame.ChartBorder.GetRightTitle();var yText=border.TopEx;this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);var left=1;var bottom=-this.Frame.ChartBorder.TitleHeight/2;//上下居中显示
5757
5768
  var right=this.Frame.ChartBorder.GetHeight();this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.font=this.Font;var pixelRatio=GetDevicePixelRatio();if(this.Title&&this.IsShowIndexName){var textWidth=this.Canvas.measureText(this.Title).width+2;if(this.IsDrawTitleBG){var title=this.Title;if(this.IsShowNameArrow)title+='▼';var textWidth=this.Canvas.measureText(title).width;var bgHeight=this.Canvas.measureText("擎").width+4*pixelRatio;var bgWidth=textWidth+4*pixelRatio;this.TitleRect={Top:border.Top,Left:this.Frame.ChartBorder.GetRightTitle()+this.Frame.ChartBorder.TitleHeight/2-bgHeight/2,Width:bgHeight,Height:bgWidth};//保存下标题的坐标
5758
5769
  this.Canvas.fillStyle=this.BGColor;var drawRect={Left:left,Top:bottom-bgHeight/2,Width:bgWidth,Height:bgHeight};this.Canvas.fillRect(drawRect.Left,drawRect.Top,drawRect.Width,drawRect.Height);if(this.BGBorderColor){this.Canvas.strokeStyle=this.BGBorderColor;this.Canvas.strokeRect(ToFixedPoint(drawRect.Left),ToFixedPoint(drawRect.Top),ToFixedRect(drawRect.Width),ToFixedRect(drawRect.Height));}this.Canvas.fillStyle=this.TitleColor;this.Canvas.fillText(title,left+2*pixelRatio,bottom,textWidth);left+=bgWidth+2*pixelRatio;left+=this.TitleSpace;}else{this.Canvas.fillStyle=this.TitleColor;this.Canvas.fillText(this.Title,left,bottom,textWidth);left+=textWidth;left+=this.TitleSpace;}}if(this.ArgumentsText&&this.IsShowIndexName){var textWidth=this.Canvas.measureText(this.ArgumentsText).width+2;this.Canvas.fillStyle=this.TitleColor;this.Canvas.fillText(this.ArgumentsText,left,bottom,textWidth);left+=textWidth;left+=this.TitleSpace;}var isShowLastData=this.IsShowLastData();var lockRect=this.Frame.GetLockRect();if(lockRect)//指标上锁区域不显示动态标题
5759
5770
  {var index=Math.abs(this.CursorIndex-0.5);if(this.IsKLineFrame)index=this.CursorIndex;var x=this.Frame.GetXFromIndex(index.toFixed(0));if(x>=lockRect.Top)return;if(isShowLastData)return;}for(var i in this.Data){var item=this.Data[i];var outText=this.GetTitleItem(item,isShowLastData);if(!outText)continue;var valueText=outText.Text;var aryText=outText.ArrayText;if(aryText){var text;for(var k=0;k<aryText.length;++k){var titleItem=aryText[k];if(titleItem.Name)text=titleItem.Name+":"+titleItem.Text;else text=titleItem.Text;var space=this.ParamSpace*GetDevicePixelRatio();var textWidth=this.Canvas.measureText(text).width+space;if(left+textWidth>right)break;this.Canvas.fillStyle=titleItem.Color;this.Canvas.fillText(text,left,bottom,textWidth);left+=textWidth;}}else{this.Canvas.fillStyle=item.Color;var text=valueText;if(item.Name){var dyTitle=this.GetDynamicOutName(item.Name);if(dyTitle)text=dyTitle+":"+valueText;else text=item.Name+":"+valueText;}var space=this.ParamSpace*GetDevicePixelRatio();var textWidth=this.Canvas.measureText(text).width+space;//后空2个像素
@@ -6371,13 +6382,13 @@ var startIndex=this.Frame.GetXData(ptStart.X,false);var endIndex=this.Frame.GetX
6371
6382
  this.StorageKey;this.GetEventCallback;//事件回调
6372
6383
  this.Load=function(key)//从本地读取画图工具
6373
6384
  {if(!key)return;this.StorageKey=key;var cacheValue=localStorage[this.StorageKey];JSConsole.Chart.Log('[ChartDrawStorage::Load] Load to localStorage, key='+this.StorageKey+', cache='+cacheValue);if(!cacheValue)return;if(typeof cacheValue!="string")return;var saveData=JSON.parse(cacheValue);for(var i in saveData){var item=saveData[i];var drawMap=new _map2.default();for(var j in item.Value){var drawItem=item.Value[j];drawMap.set(drawItem.Key,drawItem.Value);}this.DrawData.set(item.Key,drawMap);}};this.Save=function()//把数据保存到本地
6374
- {if(!this.StorageKey)return;var saveData=[];var _iteratorNormalCompletion11=true;var _didIteratorError11=false;var _iteratorError11=undefined;try{for(var _iterator11=(0,_getIterator3.default)(this.DrawData),_step11;!(_iteratorNormalCompletion11=(_step11=_iterator11.next()).done);_iteratorNormalCompletion11=true){var stock=_step11.value;var key=stock[0];var value=stock[1];var itemData={Key:key,Value:[]};var _iteratorNormalCompletion12=true;var _didIteratorError12=false;var _iteratorError12=undefined;try{for(var _iterator12=(0,_getIterator3.default)(value),_step12;!(_iteratorNormalCompletion12=(_step12=_iterator12.next()).done);_iteratorNormalCompletion12=true){var drawItem=_step12.value;if(drawItem[1]&&drawItem[1].EnableSave===false)continue;itemData.Value.push({Key:drawItem[0],Value:drawItem[1]});}}catch(err){_didIteratorError12=true;_iteratorError12=err;}finally{try{if(!_iteratorNormalCompletion12&&_iterator12.return){_iterator12.return();}}finally{if(_didIteratorError12){throw _iteratorError12;}}}if(IFrameSplitOperator.IsNonEmptyArray(itemData.Value))saveData.push(itemData);}}catch(err){_didIteratorError11=true;_iteratorError11=err;}finally{try{if(!_iteratorNormalCompletion11&&_iterator11.return){_iterator11.return();}}finally{if(_didIteratorError11){throw _iteratorError11;}}}JSConsole.Chart.Log('[ChartDrawStorage::Save] save to localStorage, key='+this.StorageKey);var strData=(0,_stringify2.default)(saveData);localStorage[this.StorageKey]=strData;};this.GetItemKey=function(obj)//生成每个画图工具的key
6385
+ {if(!this.StorageKey)return;var saveData=[];var _iteratorNormalCompletion12=true;var _didIteratorError12=false;var _iteratorError12=undefined;try{for(var _iterator12=(0,_getIterator3.default)(this.DrawData),_step12;!(_iteratorNormalCompletion12=(_step12=_iterator12.next()).done);_iteratorNormalCompletion12=true){var stock=_step12.value;var key=stock[0];var value=stock[1];var itemData={Key:key,Value:[]};var _iteratorNormalCompletion13=true;var _didIteratorError13=false;var _iteratorError13=undefined;try{for(var _iterator13=(0,_getIterator3.default)(value),_step13;!(_iteratorNormalCompletion13=(_step13=_iterator13.next()).done);_iteratorNormalCompletion13=true){var drawItem=_step13.value;if(drawItem[1]&&drawItem[1].EnableSave===false)continue;itemData.Value.push({Key:drawItem[0],Value:drawItem[1]});}}catch(err){_didIteratorError13=true;_iteratorError13=err;}finally{try{if(!_iteratorNormalCompletion13&&_iterator13.return){_iterator13.return();}}finally{if(_didIteratorError13){throw _iteratorError13;}}}if(IFrameSplitOperator.IsNonEmptyArray(itemData.Value))saveData.push(itemData);}}catch(err){_didIteratorError12=true;_iteratorError12=err;}finally{try{if(!_iteratorNormalCompletion12&&_iterator12.return){_iterator12.return();}}finally{if(_didIteratorError12){throw _iteratorError12;}}}JSConsole.Chart.Log('[ChartDrawStorage::Save] save to localStorage, key='+this.StorageKey);var strData=(0,_stringify2.default)(saveData);localStorage[this.StorageKey]=strData;};this.GetItemKey=function(obj)//生成每个画图工具的key
6375
6386
  {var strKey=obj.Symbol+'-'+obj.Period;return strKey;};this.SaveDrawData=function(drawPicture)//保存一个画图工具
6376
6387
  {var strKey=this.GetItemKey(drawPicture);var data=drawPicture.ExportStorageData();if(!data)return;if(this.DrawData.has(strKey))//更新
6377
6388
  {JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate: key, drawPicture, data',strKey,drawPicture,data);this.DrawData.get(strKey).set(data.Guid,data);}else//新增
6378
6389
  {JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: key, drawPicture, data',strKey,drawPicture,data);var newData=new _map2.default();newData.set(data.Guid,data);this.DrawData.set(strKey,newData);}JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ',this.DrawData);this.Save();};this.DeleteDrawData=function(drawPicture)//删除一个画图工具
6379
6390
  {var strKey=this.GetItemKey(drawPicture);if(!this.DrawData.has(strKey))return;var mapDraw=this.DrawData.get(strKey);if(!mapDraw.has(drawPicture.Guid))return;mapDraw.delete(drawPicture.Guid);this.Save();};this.Clear=function(){this.DrawData=new _map2.default();this.Save();};this.GetDrawData=function(obj)//获取已有的画图工具数据{Symbol: , Period:, }
6380
- {var data=[];var strKey=this.GetItemKey(obj);if(!this.DrawData.has(strKey))return data;var stockData=this.DrawData.get(strKey);var _iteratorNormalCompletion13=true;var _didIteratorError13=false;var _iteratorError13=undefined;try{for(var _iterator13=(0,_getIterator3.default)(stockData),_step13;!(_iteratorNormalCompletion13=(_step13=_iterator13.next()).done);_iteratorNormalCompletion13=true){var item=_step13.value;data.push(item[1]);}}catch(err){_didIteratorError13=true;_iteratorError13=err;}finally{try{if(!_iteratorNormalCompletion13&&_iterator13.return){_iterator13.return();}}finally{if(_didIteratorError13){throw _iteratorError13;}}}return data;};}/////////////////////////////////////////////////////////////////////////////////////////////////////////
6391
+ {var data=[];var strKey=this.GetItemKey(obj);if(!this.DrawData.has(strKey))return data;var stockData=this.DrawData.get(strKey);var _iteratorNormalCompletion14=true;var _didIteratorError14=false;var _iteratorError14=undefined;try{for(var _iterator14=(0,_getIterator3.default)(stockData),_step14;!(_iteratorNormalCompletion14=(_step14=_iterator14.next()).done);_iteratorNormalCompletion14=true){var item=_step14.value;data.push(item[1]);}}catch(err){_didIteratorError14=true;_iteratorError14=err;}finally{try{if(!_iteratorNormalCompletion14&&_iterator14.return){_iterator14.return();}}finally{if(_didIteratorError14){throw _iteratorError14;}}}return data;};}/////////////////////////////////////////////////////////////////////////////////////////////////////////
6381
6392
  // 数据分割
6382
6393
  // [0]=Start起始 [1]=End结束 [2]=FixInterval修正的间隔 [3]=Increase
6383
6394
  //
@@ -8485,7 +8496,7 @@ this.newMethod('财务粉饰');delete this.newMethod;this.Index=new Array(new In
8485
8496
  this.ApiUrl=g_JSChartResource.Index.StockHistoryDayApiUrl;this.Index[0].LineColor=g_JSChartResource.Index.LineColor[0];this.Index[1].LineColor='rgb(105,105,105)';this.CreateChart=function(id){if(id==0)return new ChartStraightArea();return new ChartLineMultiData();};this.GetOutData=function(){return{Data:this.Data};};//请求数据
8486
8497
  this.RequestData=function(hqChart,windowIndex,hisData){var self=this;var param={HQChart:hqChart,WindowIndex:windowIndex,HistoryData:hisData};this.Data=[];if(param.HQChart.Period!=2)//周期数据
8487
8498
  {this.NotSupport(param.HQChart,param.WindowIndex,"只支持月线");param.HQChart.Draw();this.SendEvent(hqChart,windowIndex,hisData,"只支持月线");return false;}var aryField=["finance.benford","announcement2.quarter","announcement1.quarter","announcement3.quarter","announcement4.quarter"];var aryCondition=[{item:["date","int32","gte","20130101"]},{item:["announcement1.year","int32","gte",0,"announcement2.year","int32","gte",0,"announcement3.year","int32","gte",0,"announcement4.year","int32","gte",0,"or"]}];//请求数据
8488
- JSNetwork.HttpRequest({url:this.ApiUrl,data:{"symbol":[param.HQChart.Symbol],"field":aryField,"condition":aryCondition},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvData(recvData,param);self.SendEvent(hqChart,windowIndex,hisData);}});return true;};this.JsonDataToMapSingleData=function(recvData){var stockData=recvData.stock[0].stockday;var mapData=new _map2.default();for(var i in stockData){var item=stockData[i];var indexData=new SingleData();indexData.Date=item.date;indexData.Value=new Array();if(item.finance1!=null&&item.announcement1!=null){var year=item.announcement1.year;var quarter=item.announcement1.quarter;var value=item.finance1.benford;indexData.Value.push({Year:year,Quarter:quarter,Value:value});}if(item.finance2!=null&&item.announcement2!=null){var _year=item.announcement2.year;var _quarter=item.announcement2.quarter;var _value=item.finance2.benford;indexData.Value.push({Year:_year,Quarter:_quarter,Value:_value});}if(item.finance3!=null&&item.announcement3!=null){var _year2=item.announcement3.year;var _quarter2=item.announcement3.quarter;var _value2=item.finance3.benford;indexData.Value.push({Year:_year2,Quarter:_quarter2,Value:_value2});}if(item.finance4!=null&&item.announcement4!=null){var _year3=item.announcement4.year;var _quarter3=item.announcement4.quarter;var _value3=item.finance4.benford;indexData.Value.push({Year:_year3,Quarter:_quarter3,Value:_value3});}mapData.set(indexData.Date,indexData);}var aryData=new Array();var _iteratorNormalCompletion14=true;var _didIteratorError14=false;var _iteratorError14=undefined;try{for(var _iterator14=(0,_getIterator3.default)(mapData),_step14;!(_iteratorNormalCompletion14=(_step14=_iterator14.next()).done);_iteratorNormalCompletion14=true){var item=_step14.value;aryData.push(item[1]);}}catch(err){_didIteratorError14=true;_iteratorError14=err;}finally{try{if(!_iteratorNormalCompletion14&&_iterator14.return){_iterator14.return();}}finally{if(_didIteratorError14){throw _iteratorError14;}}}return aryData;};this.RecvData=function(recvData,param){JSConsole.Chart.Log(recvData);if(recvData.stock==null||recvData.stock.length<=0)return;var aryData=this.JsonDataToMapSingleData(recvData);var aryFittingData=param.HistoryData.GetFittingMonthData(aryData);var bindData=new ChartData();bindData.Data=aryFittingData;bindData.Period=param.HQChart.Period;//周期
8499
+ JSNetwork.HttpRequest({url:this.ApiUrl,data:{"symbol":[param.HQChart.Symbol],"field":aryField,"condition":aryCondition},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvData(recvData,param);self.SendEvent(hqChart,windowIndex,hisData);}});return true;};this.JsonDataToMapSingleData=function(recvData){var stockData=recvData.stock[0].stockday;var mapData=new _map2.default();for(var i in stockData){var item=stockData[i];var indexData=new SingleData();indexData.Date=item.date;indexData.Value=new Array();if(item.finance1!=null&&item.announcement1!=null){var year=item.announcement1.year;var quarter=item.announcement1.quarter;var value=item.finance1.benford;indexData.Value.push({Year:year,Quarter:quarter,Value:value});}if(item.finance2!=null&&item.announcement2!=null){var _year=item.announcement2.year;var _quarter=item.announcement2.quarter;var _value=item.finance2.benford;indexData.Value.push({Year:_year,Quarter:_quarter,Value:_value});}if(item.finance3!=null&&item.announcement3!=null){var _year2=item.announcement3.year;var _quarter2=item.announcement3.quarter;var _value2=item.finance3.benford;indexData.Value.push({Year:_year2,Quarter:_quarter2,Value:_value2});}if(item.finance4!=null&&item.announcement4!=null){var _year3=item.announcement4.year;var _quarter3=item.announcement4.quarter;var _value3=item.finance4.benford;indexData.Value.push({Year:_year3,Quarter:_quarter3,Value:_value3});}mapData.set(indexData.Date,indexData);}var aryData=new Array();var _iteratorNormalCompletion15=true;var _didIteratorError15=false;var _iteratorError15=undefined;try{for(var _iterator15=(0,_getIterator3.default)(mapData),_step15;!(_iteratorNormalCompletion15=(_step15=_iterator15.next()).done);_iteratorNormalCompletion15=true){var item=_step15.value;aryData.push(item[1]);}}catch(err){_didIteratorError15=true;_iteratorError15=err;}finally{try{if(!_iteratorNormalCompletion15&&_iterator15.return){_iterator15.return();}}finally{if(_didIteratorError15){throw _iteratorError15;}}}return aryData;};this.RecvData=function(recvData,param){JSConsole.Chart.Log(recvData);if(recvData.stock==null||recvData.stock.length<=0)return;var aryData=this.JsonDataToMapSingleData(recvData);var aryFittingData=param.HistoryData.GetFittingMonthData(aryData);var bindData=new ChartData();bindData.Data=aryFittingData;bindData.Period=param.HQChart.Period;//周期
8489
8500
  bindData.Right=param.HQChart.Right;//复权
8490
8501
  this.Data=bindData.GetValue();this.BindData(param.HQChart,param.WindowIndex,param.HistoryData);param.HQChart.UpdataDataoffset();//更新数据偏移
8491
8502
  param.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
@@ -9603,11 +9614,11 @@ this.ErrorHandler=ErrorHandler;this.GetDataJobList=function()//下载数据任
9603
9614
  {var jobs=[];if(this.IsNeedSymbolData)jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_DATA});if(this.IsNeedIndexData)jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_DATA});if(this.IsNeedLatestIndexData)jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_LATEST_INDEX_DATA});//最新的个股行情数据
9604
9615
  for(var i=0;i<this.Dynainfo.length;++i){var item=this.Dynainfo[i];jobs.push(item);}//涨跌停家数统计
9605
9616
  for(var i in this.NeedBlockIncreaseData){jobs.push(this.NeedBlockIncreaseData[i]);}//加载融资融券
9606
- var _iteratorNormalCompletion15=true;var _didIteratorError15=false;var _iteratorError15=undefined;try{for(var _iterator15=(0,_getIterator3.default)(this.IsNeedMarginData),_step15;!(_iteratorNormalCompletion15=(_step15=_iterator15.next()).done);_iteratorNormalCompletion15=true){var jobID=_step15.value;jobs.push({ID:jobID});}//加载北上资金
9607
- }catch(err){_didIteratorError15=true;_iteratorError15=err;}finally{try{if(!_iteratorNormalCompletion15&&_iterator15.return){_iterator15.return();}}finally{if(_didIteratorError15){throw _iteratorError15;}}}for(var i in this.NeedHK2SHSZData){jobs.push(this.NeedHK2SHSZData[i]);}//加载新闻统计
9608
- var _iteratorNormalCompletion16=true;var _didIteratorError16=false;var _iteratorError16=undefined;try{for(var _iterator16=(0,_getIterator3.default)(this.IsNeedNewsAnalysisData),_step16;!(_iteratorNormalCompletion16=(_step16=_iterator16.next()).done);_iteratorNormalCompletion16=true){var jobID=_step16.value;jobs.push({ID:jobID});}//行情其他数据
9609
- }catch(err){_didIteratorError16=true;_iteratorError16=err;}finally{try{if(!_iteratorNormalCompletion16&&_iterator16.return){_iterator16.return();}}finally{if(_didIteratorError16){throw _iteratorError16;}}}var _iteratorNormalCompletion17=true;var _didIteratorError17=false;var _iteratorError17=undefined;try{for(var _iterator17=(0,_getIterator3.default)(this.IsNeedSymbolExData),_step17;!(_iteratorNormalCompletion17=(_step17=_iterator17.next()).done);_iteratorNormalCompletion17=true){var jobID=_step17.value;jobs.push({ID:jobID});}//获取截面数据下载任务
9610
- }catch(err){_didIteratorError17=true;_iteratorError17=err;}finally{try{if(!_iteratorNormalCompletion17&&_iterator17.return){_iterator17.return();}}finally{if(_didIteratorError17){throw _iteratorError17;}}}var _iteratorNormalCompletion18=true;var _didIteratorError18=false;var _iteratorError18=undefined;try{for(var _iterator18=(0,_getIterator3.default)(this.IsNeedSectionFinance),_step18;!(_iteratorNormalCompletion18=(_step18=_iterator18.next()).done);_iteratorNormalCompletion18=true){var item=_step18.value;jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_SF,SF:item});}}catch(err){_didIteratorError18=true;_iteratorError18=err;}finally{try{if(!_iteratorNormalCompletion18&&_iterator18.return){_iterator18.return();}}finally{if(_didIteratorError18){throw _iteratorError18;}}}for(var i in this.IsAPIData){var item=this.IsAPIData[i];jobs.push(item);}for(var i in this.ExecuteIndex){var item=this.ExecuteIndex[i];jobs.push(item);}for(var i in this.OtherSymbolData){var item=this.OtherSymbolData[i];jobs.push(item);}for(var i in this.PeriodSymbolData){var item=this.PeriodSymbolData[i];jobs.push(item);}for(var i in this.FunctionData){var item=this.FunctionData[i];jobs.push(item);}return jobs;};this.VerifySymbolVariable=function(varName,token){var setIndexName=new _set2.default(['INDEXA','INDEXC','INDEXH','INDEXL',"INDEXO","INDEXV",'INDEXDEC','INDEXADV']);if(setIndexName.has(varName)){this.IsNeedIndexData=true;return;}var setSymbolDataName=new _set2.default(['CLOSE','C','VOL','V','OPEN','O','HIGH','H','LOW','L','AMOUNT','AMO','VOLINSTK']);if(setSymbolDataName.has(varName)){this.IsNeedSymbolData=true;return;}if(varName==='VOLR'){if(!this.IsNeedSymbolExData.has(JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA))this.IsNeedSymbolExData.add(JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA);}//CAPITAL流通股本(手), EXCHANGE 换手率, TOTALCAPITAL 总股本(手)
9617
+ var _iteratorNormalCompletion16=true;var _didIteratorError16=false;var _iteratorError16=undefined;try{for(var _iterator16=(0,_getIterator3.default)(this.IsNeedMarginData),_step16;!(_iteratorNormalCompletion16=(_step16=_iterator16.next()).done);_iteratorNormalCompletion16=true){var jobID=_step16.value;jobs.push({ID:jobID});}//加载北上资金
9618
+ }catch(err){_didIteratorError16=true;_iteratorError16=err;}finally{try{if(!_iteratorNormalCompletion16&&_iterator16.return){_iterator16.return();}}finally{if(_didIteratorError16){throw _iteratorError16;}}}for(var i in this.NeedHK2SHSZData){jobs.push(this.NeedHK2SHSZData[i]);}//加载新闻统计
9619
+ var _iteratorNormalCompletion17=true;var _didIteratorError17=false;var _iteratorError17=undefined;try{for(var _iterator17=(0,_getIterator3.default)(this.IsNeedNewsAnalysisData),_step17;!(_iteratorNormalCompletion17=(_step17=_iterator17.next()).done);_iteratorNormalCompletion17=true){var jobID=_step17.value;jobs.push({ID:jobID});}//行情其他数据
9620
+ }catch(err){_didIteratorError17=true;_iteratorError17=err;}finally{try{if(!_iteratorNormalCompletion17&&_iterator17.return){_iterator17.return();}}finally{if(_didIteratorError17){throw _iteratorError17;}}}var _iteratorNormalCompletion18=true;var _didIteratorError18=false;var _iteratorError18=undefined;try{for(var _iterator18=(0,_getIterator3.default)(this.IsNeedSymbolExData),_step18;!(_iteratorNormalCompletion18=(_step18=_iterator18.next()).done);_iteratorNormalCompletion18=true){var jobID=_step18.value;jobs.push({ID:jobID});}//获取截面数据下载任务
9621
+ }catch(err){_didIteratorError18=true;_iteratorError18=err;}finally{try{if(!_iteratorNormalCompletion18&&_iterator18.return){_iterator18.return();}}finally{if(_didIteratorError18){throw _iteratorError18;}}}var _iteratorNormalCompletion19=true;var _didIteratorError19=false;var _iteratorError19=undefined;try{for(var _iterator19=(0,_getIterator3.default)(this.IsNeedSectionFinance),_step19;!(_iteratorNormalCompletion19=(_step19=_iterator19.next()).done);_iteratorNormalCompletion19=true){var item=_step19.value;jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_SF,SF:item});}}catch(err){_didIteratorError19=true;_iteratorError19=err;}finally{try{if(!_iteratorNormalCompletion19&&_iterator19.return){_iterator19.return();}}finally{if(_didIteratorError19){throw _iteratorError19;}}}for(var i in this.IsAPIData){var item=this.IsAPIData[i];jobs.push(item);}for(var i in this.ExecuteIndex){var item=this.ExecuteIndex[i];jobs.push(item);}for(var i in this.OtherSymbolData){var item=this.OtherSymbolData[i];jobs.push(item);}for(var i in this.PeriodSymbolData){var item=this.PeriodSymbolData[i];jobs.push(item);}for(var i in this.FunctionData){var item=this.FunctionData[i];jobs.push(item);}return jobs;};this.VerifySymbolVariable=function(varName,token){var setIndexName=new _set2.default(['INDEXA','INDEXC','INDEXH','INDEXL',"INDEXO","INDEXV",'INDEXDEC','INDEXADV']);if(setIndexName.has(varName)){this.IsNeedIndexData=true;return;}var setSymbolDataName=new _set2.default(['CLOSE','C','VOL','V','OPEN','O','HIGH','H','LOW','L','AMOUNT','AMO','VOLINSTK']);if(setSymbolDataName.has(varName)){this.IsNeedSymbolData=true;return;}if(varName==='VOLR'){if(!this.IsNeedSymbolExData.has(JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA))this.IsNeedSymbolExData.add(JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA);}//CAPITAL流通股本(手), EXCHANGE 换手率, TOTALCAPITAL 总股本(手)
9611
9622
  var setVariantName=new _set2.default(["CAPITAL","TOTALCAPITAL","EXCHANGE","HYBLOCK","DYBLOCK","GNBLOCK","FGBLOCK","ZSBLOCK","ZHBLOCK","ZDBLOCK","HYZSCODE","GNBLOCKNUM","FGBLOCKNUM","ZSBLOCKNUM","ZHBLOCKNUM","ZDBLOCKNUM","HYSYL","HYSJL"]);if(setVariantName.has(varName)){var item={ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VARIANT,VariantName:varName};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.FunctionData.push(item);return;}if(varName=='FROMOPEN'){this.IsNeedLatestIndexData=true;return;}if(varName=='ADVANCE'||varName=="DECLINE"){var item={ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_INCREASE_DATA,IsSelfSymbol:true,FunctionName:varName};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.NeedBlockIncreaseData.push(item);return;}if(varName.indexOf('#')>0){var aryWrods=varName.split('#');if(aryWrods.length!=2){var errorMessage=varName+', \u8DE8\u5468\u671F\u8BED\u6CD5\u9519\u8BEF, \u53D8\u91CF\u540D#\u5468\u671F';this.ThrowUnexpectedToken(token,errorMessage);}else{var VAR_NAME=["C","CLOSE","O","OPEN","H","HIGH","L","LOW","AMOUNT","AMO","VOL","V","VOLINSTK"];if(VAR_NAME.indexOf(aryWrods[0])<0){var errorMessage=varName+', \u8DE8\u5468\u671F\u8BED\u6CD5\u9519\u8BEF, \u6570\u636E\u53EA\u652F\u6301\'OPEN,HIGH,LOW,CLOSE,VOL,AMOUNT,VOLINSTK\'';this.ThrowUnexpectedToken(token,errorMessage);}var VAR_PERIOD_NAME=["MIN1","MIN5","MIN15","MIN30","MIN60","MIN120","MIN240","DAY","WEEK","MONTH","SEASON","YEAR","HALFYEAR","WEEK2","MULTIDAY","DAY2","DAY3","DAY4","DAY5","DAY6","DAY7","DAY8","DAY9","DAY10","DAY11","DAY12","DAY13","DAY14","DAY15"];if(VAR_PERIOD_NAME.indexOf(aryWrods[1])<0){var errorMessage=varName+', \u8DE8\u5468\u671F\u8BED\u6CD5\u9519\u8BEF\uFF0C \u5468\u671F\u53EA\u652F\u6301\'MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH,SEASON,YEAR\'';this.ThrowUnexpectedToken(token,errorMessage);}var item={ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_PERIOD_DATA,VarName:varName,ValueName:aryWrods[0],PeriodName:aryWrods[1]};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.PeriodSymbolData.push(item);}return;}if(g_JSComplierResource.IsCustomVariant(varName))//自定义函数
9612
9623
  {var item={VariantName:varName,ID:JS_EXECUTE_JOB_ID.JOB_CUSTOM_VARIANT_DATA};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.FunctionData.push(item);return;}};this.VerifySymbolLiteral=function(value,token){if(IFrameSplitOperator.IsString(value)){if(value.indexOf('$')>0){var aryValue=value.split('$');if(aryValue.length!=2)return;var item={Literal:value,ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_OTHER_SYMBOL_DATA};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.OtherSymbolData.push(item);}}};this.VerifySymbolFunction=function(callee,args,token){//自定义函数 可以覆盖系统内置函数
9613
9624
  if(g_JSComplierResource.IsCustomFunction(callee.Name)){var item={FunctionName:callee.Name,ID:JS_EXECUTE_JOB_ID.JOB_CUSTOM_FUNCTION_DATA,Args:args};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.FunctionData.push(item);return;}if(callee.Name=='DYNAINFO'){var item={ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA,Args:args,FunctionName:callee.Name};this.Dynainfo.push(item);return;}//财务函数
@@ -10435,7 +10446,7 @@ this.ALL=function(data,n){if(n<=0)n=1;var result=[];if(Array.isArray(data)){if(n
10435
10446
  }return result;};//格式化字符串 "{0}-{1}", C, O; 小数位数 {0:0.00}
10436
10447
  this.STRFORMAT=function(strFormat,args,node){var aryParam=strFormat.match(/{[0-9.:]+}/g);if(!IFrameSplitOperator.IsNonEmptyArray(aryParam))return null;var mapParam=new _map2.default();//key=index, value={Text}
10437
10448
  var maxIndex=-1;for(var i=0;i<aryParam.length;++i){var item=aryParam[i];if(item.length<3)continue;var value=item.slice(1,item.length-1);var index=-1,decimal=-1;if(value.indexOf(":")>0){var aryTemp=value.split(":");if(aryTemp){if(aryTemp[0])index=parseInt(aryTemp[0]);if(aryTemp[1]){if(aryTemp[1].indexOf(".")>=0){var zeroCount=0;var strTemp=aryTemp[1];for(var j=strTemp.length-1;j>=0;--j){if(strTemp[j]=="0")++zeroCount;else break;}if(zeroCount>0)decimal=zeroCount;}else if(aryTemp[1]=="0"){decimal=0;}}}}else{index=parseInt(value);}if(index<0)continue;var paramItem={Src:item,Index:index,Text:null,Decimal:null};if(decimal>=0)paramItem.Decimal=decimal;if(maxIndex<index)maxIndex=index;mapParam.set(index,paramItem);}var isArray=false;//是否输出数组字符串
10438
- var maxCount=0;for(var i=1;i<args.length;++i){var item=args[i];if(Array.isArray(item)){isArray=true;if(maxCount<item.length)maxCount=item.length;}}if(isArray){var result=[];for(var i=0;i<maxCount;++i){var strItem=strFormat;var _iteratorNormalCompletion19=true;var _didIteratorError19=false;var _iteratorError19=undefined;try{for(var _iterator19=(0,_getIterator3.default)(mapParam),_step19;!(_iteratorNormalCompletion19=(_step19=_iterator19.next()).done);_iteratorNormalCompletion19=true){var item=_step19.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){if(Array.isArray(paramItem)){var value=paramItem[i];if(value){if(IFrameSplitOperator.IsNumber(paramInfo.Decimal))text=''+value.toFixed(paramInfo.Decimal);else text=''+value;}}else{text=''+paramItem;}}strItem=strItem.replace(paramInfo.Src,text);}}catch(err){_didIteratorError19=true;_iteratorError19=err;}finally{try{if(!_iteratorNormalCompletion19&&_iterator19.return){_iterator19.return();}}finally{if(_didIteratorError19){throw _iteratorError19;}}}result[i]=strItem;}return result;}else{var result=strFormat;var _iteratorNormalCompletion20=true;var _didIteratorError20=false;var _iteratorError20=undefined;try{for(var _iterator20=(0,_getIterator3.default)(mapParam),_step20;!(_iteratorNormalCompletion20=(_step20=_iterator20.next()).done);_iteratorNormalCompletion20=true){var item=_step20.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){text=''+paramItem;}result=result.replace(paramInfo.Src,text);}}catch(err){_didIteratorError20=true;_iteratorError20=err;}finally{try{if(!_iteratorNormalCompletion20&&_iterator20.return){_iterator20.return();}}finally{if(_didIteratorError20){throw _iteratorError20;}}}return result;}};//函数调用
10449
+ var maxCount=0;for(var i=1;i<args.length;++i){var item=args[i];if(Array.isArray(item)){isArray=true;if(maxCount<item.length)maxCount=item.length;}}if(isArray){var result=[];for(var i=0;i<maxCount;++i){var strItem=strFormat;var _iteratorNormalCompletion20=true;var _didIteratorError20=false;var _iteratorError20=undefined;try{for(var _iterator20=(0,_getIterator3.default)(mapParam),_step20;!(_iteratorNormalCompletion20=(_step20=_iterator20.next()).done);_iteratorNormalCompletion20=true){var item=_step20.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){if(Array.isArray(paramItem)){var value=paramItem[i];if(value){if(IFrameSplitOperator.IsNumber(paramInfo.Decimal))text=''+value.toFixed(paramInfo.Decimal);else text=''+value;}}else{text=''+paramItem;}}strItem=strItem.replace(paramInfo.Src,text);}}catch(err){_didIteratorError20=true;_iteratorError20=err;}finally{try{if(!_iteratorNormalCompletion20&&_iterator20.return){_iterator20.return();}}finally{if(_didIteratorError20){throw _iteratorError20;}}}result[i]=strItem;}return result;}else{var result=strFormat;var _iteratorNormalCompletion21=true;var _didIteratorError21=false;var _iteratorError21=undefined;try{for(var _iterator21=(0,_getIterator3.default)(mapParam),_step21;!(_iteratorNormalCompletion21=(_step21=_iterator21.next()).done);_iteratorNormalCompletion21=true){var item=_step21.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){text=''+paramItem;}result=result.replace(paramInfo.Src,text);}}catch(err){_didIteratorError21=true;_iteratorError21=err;}finally{try{if(!_iteratorNormalCompletion21&&_iterator21.return){_iterator21.return();}}finally{if(_didIteratorError21){throw _iteratorError21;}}}return result;}};//函数调用
10439
10450
  this.CallFunction=function(name,args,node,symbolData){switch(name){case'MAX':case"MAX6":return this.MAX(args,node);case'MIN':case"MIN6":return this.MIN(args,node);case'REF':return this.REF(args[0],args[1]);case"REFV":return this.REFV(args[0],args[1]);case'REFX':return this.REFX(args[0],args[1]);case"REFXV":return this.REFXV(args[0],args[1]);case"REFX1"://文华函数
10440
10451
  return this.REFX(args[0],args[1]);case'ABS':return this.ABS(args[0]);case'MA':return this.MA(args[0],args[1]);case"EMA":return this.EMA(args[0],args[1]);case"SMA":return this.SMA(args[0],args[1],args[2]);case"DMA":return this.DMA(args[0],args[1]);case"XMA":return this.XMA(args[0],args[1]);case'EXPMA':return this.EXPMA(args[0],args[1]);case'EXPMEMA':return this.EXPMEMA(args[0],args[1]);case'COUNT':return this.COUNT(args[0],args[1]);case'LLV':return this.LLV(args[0],args[1]);case"LV":return this.LV(args[0],args[1]);case'LLVBARS':return this.LLVBARS(args[0],args[1]);case'HHV':return this.HHV(args[0],args[1]);case'HV':return this.HV(args[0],args[1]);case'HHVBARS':return this.HHVBARS(args[0],args[1]);case'MULAR':return this.MULAR(args[0],args[1]);case'CROSS':return this.CROSS(args[0],args[1]);case'LONGCROSS':return this.LONGCROSS(args[0],args[1],args[2]);case"ISVALID":return this.ISVALID(args[0]);case"CROSSDOWN":return this.CROSSDOWN(args[0],args[1]);case"CROSSUP":return this.CROSSUP(args[0],args[1]);case'AVEDEV':return this.AVEDEV(args[0],args[1]);case'STD':return this.STD(args[0],args[1]);case"STDDEV":return this.STDDEV(args[0],args[1]);case'IF':case'IFF':case"IFELSE":return this.IF(args[0],args[1],args[2]);case'IFN':return this.IFN(args[0],args[1],args[2]);case'NOT':return this.NOT(args[0]);case'SUM':return this.SUM(args[0],args[1]);case'RANGE':return this.RANGE(args[0],args[1],args[2]);case'EXIST':return this.EXIST(args[0],args[1]);case'EXISTR':return this.EXISTR(args[0],args[1],args[2]);case'FILTER':return this.FILTER(args[0],args[1]);case'TFILTER':return this.TFILTER(args[0],args[1],args[2]);case'SLOPE':return this.SLOPE(args[0],args[1]);case'BARSLAST':return this.BARSLAST(args[0]);case'BARSCOUNT':return this.BARSCOUNT(args[0]);case'BARSSINCEN':return this.BARSSINCEN(args[0],args[1]);case'BARSSINCE':return this.BARSSINCE(args[0]);case'LAST':return this.LAST(args[0],args[1],args[2]);case'EVERY':return this.EVERY(args[0],args[1]);case'DEVSQ':return this.DEVSQ(args[0],args[1]);case'ZIG':return this.ZIG(args[0],args[1]);case'TROUGHBARS':return this.TROUGHBARS(args[0],args[1],args[2]);case"TROUGH":return this.TROUGH(args[0],args[1],args[2]);case'PEAKBARS':return this.PEAKBARS(args[0],args[1],args[2]);case'PEAK':return this.PEAK(args[0],args[1],args[2]);case'COST':return this.COST(args[0]);case'WINNER':return this.WINNER(args[0],node);case'PPART':return this.PPART(args[0],node);case"COSTEX":return this.COSTEX(args[0],args[1],node);case"LWINNER":return this.LWINNER(args[0],args[1],node);case"PWINNER":return this.PWINNER(args[0],args[1],node);case'FORCAST':return this.FORCAST(args[0],args[1]);case"TSMA":return this.TSMA(args[0],args[1]);case'STDP':return this.STDP(args[0],args[1]);case'VAR':return this.VAR(args[0],args[1]);case'VARP':return this.VARP(args[0],args[1]);case'UPNDAY':return this.UPNDAY(args[0],args[1]);case'DOWNNDAY':return this.DOWNNDAY(args[0],args[1]);case'NDAY':return this.NDAY(args[0],args[1],args[2]);case'RELATE':return this.RELATE(args[0],args[1],args[2]);case'COVAR':return this.COVAR(args[0],args[1],args[2]);case'BETA':return this.BETA(args[0]);case'BETA2':return this.BETA2(args[0],args[1],args[2]);case'WMA':return this.WMA(args[0],args[1]);case'MEMA':return this.MEMA(args[0],args[1]);case'SUMBARS':return this.SUMBARS(args[0],args[1]);case'REVERSE':return this.REVERSE(args[0]);case'SAR':return this.SAR(args[0],args[1],args[2]);case'SARTURN':return this.SARTURN(args[0],args[1],args[2]);case'BACKSET':return this.BACKSET(args[0],args[1]);case'BETWEEN':return this.BETWEEN(args[0],args[1],args[2]);case'STRCAT':return this.STRCAT(args[0],args[1]);case'CON2STR':return this.CON2STR(args[0],args[1]);case"VAR2STR":return this.VAR2STR(args[0],args[1]);case"VARCAT":return this.VARCAT(args[0],args[1]);case"STRSPACE":return this.STRSPACE(args[0]);case"FINDSTR":return this.FINDSTR(args[0],args[1]);case"STRCMP":return this.STRCMP(args[0],args[1]);case"STRLEN":return this.STRLEN(args[0]);case"STRFORMAT":return this.STRFORMAT(args[0],args,node);case'DTPRICE':return this.DTPRICE(args[0],args[1]);case'ZTPRICE':return this.ZTPRICE(args[0],args[1]);case'MOD':return this.MOD(args[0],args[1]);case'POW':return this.POW(args[0],args[1]);case'CEILING':return this.CEILING(args[0]);case'FLOOR':return this.FLOOR(args[0]);case'FRACPART':return this.FRACPART(args[0]);case"SIGN":return this.SIGN(args[0]);case'BARSLASTCOUNT':return this.BARSLASTCOUNT(args[0]);case'INTPART':return this.INTPART(args[0]);case"CONST":return this.CONST(args[0]);case"TOPRANGE":return this.TOPRANGE(args[0]);case"LOWRANGE":return this.LOWRANGE(args[0]);case"FINDLOW":return this.FINDLOW(args[0],args[1],args[2],args[3]);case"FINDLOWBARS":return this.FINDLOWBARS(args[0],args[1],args[2],args[3]);case"FINDHIGH":return this.FINDHIGH(args[0],args[1],args[2],args[3]);case"FINDHIGHBARS":return this.FINDHIGHBARS(args[0],args[1],args[2],args[3]);case"BARSNEXT":return this.BARSNEXT(args[0]);case"HOD":return this.HOD(args[0],args[1]);case"LOD":return this.LOD(args[0],args[1]);case"AMA":return this.AMA(args[0],args[1]);case"TMA":return this.TMA(args[0],args[1],args[2]);case"ROUND":return this.ROUND(args[0]);case"ROUND2":return this.ROUND2(args[0],args[1]);case"TRMA":return this.TRMA(args[0],args[1]);case"VALUEWHEN":return this.VALUEWHEN(args[0],args[1]);case"HARMEAN":return this.HARMEAN(args[0],args[1]);case"DATETODAY":return this.DATETODAY(args[0]);case"DAYTODATE":return this.DAYTODATE(args[0]);case"TIMETOSEC":return this.TIMETOSEC(args[0]);case"SECTOTIME":return this.SECTOTIME(args[0]);case"ANY":return this.ANY(args[0],args[1]);case"ALL":return this.ALL(args[0],args[1]);case"TESTSKIP":return this.TESTSKIP(args[0],node);case"SUMBARS":return this.SUMBARS(args[0],args[1]);case"ALIGNRIGHT":return this.ALIGNRIGHT(args[0]);//三角函数
10441
10452
  case'ATAN':return this.Trigonometric(args[0],Math.atan);case'ACOS':return this.ACOS(args[0]);case'ASIN':return this.ASIN(args[0]);case'COS':return this.Trigonometric(args[0],Math.cos);case'SIN':return this.Trigonometric(args[0],Math.sin);case'TAN':return this.Trigonometric(args[0],Math.tan);case'LN':return this.Trigonometric(args[0],Math.log);case'LOG':return this.Trigonometric(args[0],_log2.default);case'EXP':return this.Trigonometric(args[0],Math.exp);case'SQRT':return this.Trigonometric(args[0],Math.sqrt);case"RAND":return this.RAND(args[0]);default:this.ThrowUnexpectedNode(node,'函数'+name+'不存在',name);}};//调用自定义函数 返回数据格式{Out:输出数据, Draw:绘图数据(可选)}
@@ -12256,7 +12267,7 @@ for(var i=0;i<data.data.length;++i){var item=data.data[i];var symbol=item[0];var
12256
12267
  this.GetStockData=function(symbol){if(!this.MapStockData)return null;if(!this.MapStockData.has(symbol))return null;return this.MapStockData.get(symbol);};this.GetBlockData=function(symbol){if(!this.BlockData)return null;if(!this.BlockData.has(symbol))return null;return this.BlockData.get(symbol);};//obj={ ID:, Color: , Time:, Count: }
12257
12268
  this.SetFlashBGItem=function(symbol,obj){var item={ID:obj.ID,Color:obj.Color,Count:1};if(IFrameSplitOperator.IsNumber(obj.Count))item.Count=obj.Count;if(IFrameSplitOperator.IsNumber(obj.Time))item.Time=obj.Time;else item.Time=Date.now();if(this.FlashBG.has(symbol)){var stockItem=this.FlashBG.get(symbol);stockItem.LastTime=item.Time;stockItem.Data.set(item.ID,item);}else{var stockItem={LastTime:item.Time,Data:new _map2.default([[item.ID,item]])};this.FlashBG.set(symbol,stockItem);}};this.GetFlashBGData=function(symbol,time){if(!this.FlashBG)return null;if(!this.FlashBG.has(symbol))return null;var timeDiff=3*1000;var stockItem=this.FlashBG.get(symbol);if(time-stockItem.LastTime>=timeDiff)//超时的删除
12258
12269
  {this.FlashBG.delete(symbol);return null;}if(!stockItem.Data||stockItem.Data.size<=0){this.FlashBG.delete(symbol);return null;}var aryDelID=[];//超时需要参数的
12259
- var _iteratorNormalCompletion21=true;var _didIteratorError21=false;var _iteratorError21=undefined;try{for(var _iterator21=(0,_getIterator3.default)(stockItem.Data),_step21;!(_iteratorNormalCompletion21=(_step21=_iterator21.next()).done);_iteratorNormalCompletion21=true){var mapItem=_step21.value;var item=mapItem[1];if(time-item.Time>=timeDiff||item.Count<=0)aryDelID.push(item.ID);}}catch(err){_didIteratorError21=true;_iteratorError21=err;}finally{try{if(!_iteratorNormalCompletion21&&_iterator21.return){_iterator21.return();}}finally{if(_didIteratorError21){throw _iteratorError21;}}}if(IFrameSplitOperator.IsNonEmptyArray(aryDelID)){for(var i=0;i<aryDelID.length;++i){stockItem.Data.delete(aryDelID[i]);}if(stockItem.Data.size<=0){this.FlashBG.delete(symbol);return null;}}return stockItem;};//delay=是否延迟
12270
+ var _iteratorNormalCompletion22=true;var _didIteratorError22=false;var _iteratorError22=undefined;try{for(var _iterator22=(0,_getIterator3.default)(stockItem.Data),_step22;!(_iteratorNormalCompletion22=(_step22=_iterator22.next()).done);_iteratorNormalCompletion22=true){var mapItem=_step22.value;var item=mapItem[1];if(time-item.Time>=timeDiff||item.Count<=0)aryDelID.push(item.ID);}}catch(err){_didIteratorError22=true;_iteratorError22=err;}finally{try{if(!_iteratorNormalCompletion22&&_iterator22.return){_iterator22.return();}}finally{if(_didIteratorError22){throw _iteratorError22;}}}if(IFrameSplitOperator.IsNonEmptyArray(aryDelID)){for(var i=0;i<aryDelID.length;++i){stockItem.Data.delete(aryDelID[i]);}if(stockItem.Data.size<=0){this.FlashBG.delete(symbol);return null;}}return stockItem;};//delay=是否延迟
12260
12271
  this.DelayUpdateStockData=function(){var _this52=this;if(this.DelayUpdateTimer!=null){clearTimeout(this.DelayUpdateTimer);this.DelayUpdateTimer=null;}var frequency=this.DelayUpdateFrequency;this.DelayUpdateTimer=setTimeout(function(){_this52.UpdateStockData();},frequency);};this.UpdateStockData=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;var chart=this.ChartPaint[0];if(!chart)return;if(this.SortInfo&&this.SortInfo.Field>=0&&this.SortInfo.Sort>0){var column=chart.Column[this.SortInfo.Field];if(column.Sort==2){this.RequestStockSortData(column,this.SortInfo.Field,this.SortInfo.Sort);//远程排序
12261
12272
  return;}}var arySymbol=chart.ShowSymbol;if(!IFrameSplitOperator.IsNonEmptyArray(arySymbol))return;this.RequestStockData(arySymbol);};//下载股票数据
12262
12273
  this.RequestStockData=function(arySymbol){var self=this;if(this.NetworkFilter){var obj={Name:'JSDealChartContainer::RequestStockData',//类名::函数名
@@ -12828,7 +12839,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
12828
12839
  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);};}/********************************************************************************
12829
12840
  * 版本信息输出
12830
12841
  *
12831
- */var HQCHART_VERSION="1.1.12668";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();//把给外界调用的方法暴露出来
12842
+ */var HQCHART_VERSION="1.1.12677";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();//把给外界调用的方法暴露出来
12832
12843
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12833
12844
  // BaseIndex:BaseIndex,
12834
12845
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "hqchart",
3
3
  "description": "stock chart",
4
4
  "author": "jones2000",
5
- "version": "1.1.12669",
5
+ "version": "1.1.12678",
6
6
  "main": "lib/main.js",
7
7
  "private": false,
8
8
  "license": "Apache License 2.0",