hqchart 1.1.13466 → 1.1.13478

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.
@@ -1173,7 +1173,7 @@ if(option.IsCorssOnlyDrawKLine===true)chart.ChartCorssCursor.IsOnlyDrawKLine=opt
1173
1173
  if(IFrameSplitOperator.IsBool(item.IsOnlyDrawKLine))chart.ChartCorssCursor.IsOnlyDrawKLine=item.IsOnlyDrawKLine;//Y轴显示收盘价
1174
1174
  if(option.CorssCursorInfo.PressTime)chart.PressTime=option.CorssCursorInfo.PressTime;//长按显示十字光标的时间
1175
1175
  if(IFrameSplitOperator.IsNumber(option.CorssCursorInfo.HPenType))chart.ChartCorssCursor.HPenType=option.CorssCursorInfo.HPenType;if(option.CorssCursorInfo.VPenType>0)chart.ChartCorssCursor.VPenType=option.CorssCursorInfo.VPenType;if(IFrameSplitOperator.IsNumber(item.VLineType))chart.ChartCorssCursor.VLineType=item.VLineType;if(option.CorssCursorInfo.DateFormatType>0)chart.ChartCorssCursor.StringFormatX.DateFormatType=option.CorssCursorInfo.DateFormatType;if(IFrameSplitOperator.IsBool(item.IsDrawXRangeBG))chart.ChartCorssCursor.IsDrawXRangeBG=item.IsDrawXRangeBG;if(IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime))chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;if(IFrameSplitOperator.IsNumber(item.TextHeight))chart.ChartCorssCursor.TextHeight=item.TextHeight;if(item.RightButton){if(IFrameSplitOperator.IsBool(item.RightButton.Enable))chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;}if(IFrameSplitOperator.IsNumber(item.PriceFormatType))chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;if(IFrameSplitOperator.IsNumber(item.DataFormatType))chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;}//保存十字光标文字高度
1176
- option.CorssCursor={};option.CorssCursor.TitleHeight=chart.ChartCorssCursor.TextHeight;if(IFrameSplitOperator.IsNumber(option.SplashTitlePosition)){if(chart.ChartSplashPaint)chart.ChartSplashPaint.Position=option.SplashTitlePosition;}if(option.Frame){for(var i=0;i<option.Frame.length;++i){var item=option.Frame[i];if(!chart.Frame.SubFrame[i])continue;var subFrame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsNumber(item.SplitCount))chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;if(item.StringFormat)chart.Frame.SubFrame[i].Frame.YSplitOperator.StringFormat=item.StringFormat;if(IFrameSplitOperator.IsNumber(item.FloatPrecision))chart.Frame.SubFrame[i].Frame.YSplitOperator.FloatPrecision=item.FloatPrecision;if(item.Custom)chart.Frame.SubFrame[i].Frame.YSplitOperator.Custom=item.Custom;if(IFrameSplitOperator.IsNumber(item.SplitType)){chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;}if(!isNaN(item.Height))chart.Frame.SubFrame[i].Height=item.Height;if(item.IsShowLeftText===false||item.IsShowLeftText===true){chart.Frame.SubFrame[i].Frame.IsShowYText[0]=item.IsShowLeftText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
1176
+ option.CorssCursor={};option.CorssCursor.TitleHeight=chart.ChartCorssCursor.TextHeight;if(IFrameSplitOperator.IsNumber(option.SplashTitlePosition)){if(chart.ChartSplashPaint)chart.ChartSplashPaint.Position=option.SplashTitlePosition;}if(option.Frame){for(var i=0;i<option.Frame.length;++i){var item=option.Frame[i];if(!chart.Frame.SubFrame[i])continue;var subFrame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsNumber(item.SplitCount))chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;if(item.StringFormat)chart.Frame.SubFrame[i].Frame.YSplitOperator.StringFormat=item.StringFormat;if(IFrameSplitOperator.IsNumber(item.FloatPrecision))chart.Frame.SubFrame[i].Frame.YSplitOperator.FloatPrecision=item.FloatPrecision;if(item.Custom)chart.Frame.SubFrame[i].Frame.YSplitOperator.Custom=item.Custom;if(IFrameSplitOperator.IsNumber(item.SplitType)){chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;}if(IFrameSplitOperator.IsNumber(item.FilterType))subFrame.YSplitOperator.FilterType=item.FilterType;if(!isNaN(item.Height))chart.Frame.SubFrame[i].Height=item.Height;if(item.IsShowLeftText===false||item.IsShowLeftText===true){chart.Frame.SubFrame[i].Frame.IsShowYText[0]=item.IsShowLeftText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
1177
1177
  }if(item.IsShowRightText===false||item.IsShowRightText===true){chart.Frame.SubFrame[i].Frame.IsShowYText[1]=item.IsShowRightText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
1178
1178
  }if(item.TopSpace>=0)chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;if(item.BottomSpace>=0)chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;if(item.RightTextPosition>0)chart.Frame.SubFrame[i].Frame.YTextPosition[1]=item.RightTextPosition;if(item.LeftTextPosition>0)chart.Frame.SubFrame[i].Frame.YTextPosition[0]=item.LeftTextPosition;if(item.IsShowXLine==false)chart.Frame.SubFrame[i].Frame.IsShowXLine=item.IsShowXLine;if(item.IsShowYLine==false)chart.Frame.SubFrame[i].Frame.IsShowYLine=item.IsShowYLine;if(IFrameSplitOperator.IsNumber(item.YTextBaseline))chart.Frame.SubFrame[i].Frame.YTextBaseline=item.YTextBaseline;if(item.YCoordinateType>0)chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType=item.YCoordinateType;if(item.IsYReverse==true)chart.Frame.SubFrame[0].Frame.CoordinateType=1;//反转坐标
1179
1179
  if(IFrameSplitOperator.IsNumber(item.PercentageTextFormat))subFrame.YSplitOperator.PercentageTextFormat=item.PercentageTextFormat;//百分比坐标格式
@@ -1212,17 +1212,17 @@ if(option.SelectedChart){var item=option.SelectedChart;if(IFrameSplitOperator.Is
1212
1212
  }}//分页
1213
1213
  if(option.PageInfo)chart.SetPageInfo(option.PageInfo);chart.Create(windowsCount,option);//创建子窗口
1214
1214
  if(option.CorssCursorInfo){var item=option.CorssCursorInfo;if(!isNaN(option.CorssCursorInfo.Left))chart.ChartCorssCursor.ShowTextMode.Left=option.CorssCursorInfo.Left;if(!isNaN(option.CorssCursorInfo.Right))chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;if(!isNaN(option.CorssCursorInfo.Bottom))chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;if(option.CorssCursorInfo.IsShowCorss===false)chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;if(option.CorssCursorInfo.RightTextFormat>0)chart.ChartCorssCursor.TextFormat.Right=option.CorssCursorInfo.RightTextFormat;if(option.CorssCursorInfo.IsOnlyDrawMinute==true)chart.ChartCorssCursor.IsOnlyDrawMinute=option.CorssCursorInfo.IsOnlyDrawMinute;//Y轴显示收盘价
1215
- if(IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime))chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;if(item.RightButton){if(IFrameSplitOperator.IsBool(item.RightButton.Enable))chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;}if(IFrameSplitOperator.IsNumber(item.PriceFormatType))chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;if(IFrameSplitOperator.IsNumber(item.DataFormatType))chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;if(IFrameSplitOperator.IsNumber(item.HPenType))chart.ChartCorssCursor.HPenType=item.HPenType;if(IFrameSplitOperator.IsNumber(item.VPenType))chart.ChartCorssCursor.VPenType=item.VPenType;}if(option.MinuteInfo)chart.CreateMinuteInfo(option.MinuteInfo);if(IFrameSplitOperator.IsBool(option.IsShowRightMenu))chart.IsShowRightMenu=option.IsShowRightMenu;if(IFrameSplitOperator.IsNumber(option.DayCount))chart.DayCount=option.DayCount;this.SetChartBorder(chart,option);if(option.SplashTitle)chart.ChartSplashPaint.SplashTitle=option.SplashTitle;if(IFrameSplitOperator.IsBool(option.EnableBorderDrag)){chart.EnableBorderDrag=option.EnableBorderDrag;}this.AdjustChartBorder(chart);if(option.Frame){for(var i=0;i<option.Frame.length;++i){var item=option.Frame[i];if(!chart.Frame.SubFrame[i])continue;var subFrame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsNumber(item.SplitCount))chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;if(item.StringFormat)chart.Frame.SubFrame[i].Frame.YSplitOperator.StringFormat=item.StringFormat;if(IFrameSplitOperator.IsNumber(item.SplitType)){chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;}if(item.IsShowLeftText==false){chart.Frame.SubFrame[i].Frame.IsShowYText[0]=item.IsShowLeftText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
1215
+ if(IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime))chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;if(item.RightButton){if(IFrameSplitOperator.IsBool(item.RightButton.Enable))chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;}if(IFrameSplitOperator.IsNumber(item.PriceFormatType))chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;if(IFrameSplitOperator.IsNumber(item.DataFormatType))chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;if(IFrameSplitOperator.IsNumber(item.HPenType))chart.ChartCorssCursor.HPenType=item.HPenType;if(IFrameSplitOperator.IsNumber(item.VPenType))chart.ChartCorssCursor.VPenType=item.VPenType;}if(option.MinuteInfo)chart.CreateMinuteInfo(option.MinuteInfo);if(IFrameSplitOperator.IsBool(option.IsShowRightMenu))chart.IsShowRightMenu=option.IsShowRightMenu;if(IFrameSplitOperator.IsNumber(option.DayCount))chart.DayCount=option.DayCount;this.SetChartBorder(chart,option);if(option.SplashTitle)chart.ChartSplashPaint.SplashTitle=option.SplashTitle;if(IFrameSplitOperator.IsBool(option.EnableBorderDrag)){chart.EnableBorderDrag=option.EnableBorderDrag;}this.AdjustChartBorder(chart);if(option.Frame){for(var i=0;i<option.Frame.length;++i){var item=option.Frame[i];if(!chart.Frame.SubFrame[i])continue;var subFrame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsNumber(item.SplitCount))chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;if(item.StringFormat)chart.Frame.SubFrame[i].Frame.YSplitOperator.StringFormat=item.StringFormat;if(IFrameSplitOperator.IsNumber(item.SplitType)){chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;}if(IFrameSplitOperator.IsNumber(item.FilterType))subFrame.YSplitOperator.FilterType=item.FilterType;if(item.IsShowLeftText==false){chart.Frame.SubFrame[i].Frame.IsShowYText[0]=item.IsShowLeftText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
1216
1216
  }if(item.IsShowRightText==false){chart.Frame.SubFrame[i].Frame.IsShowYText[1]=item.IsShowRightText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
1217
1217
  }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;if(IFrameSplitOperator.IsBool(item.IsShowIndexTitle))chart.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;if(item.TopSpace>=0)chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;if(item.BottomSpace>=0)chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;//是否显示关闭集合竞价按钮
1218
- if(IFrameSplitOperator.IsNumber(item.CloseBeforeButton))chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;if(item.ClientBGColor)subFrame.ClientBGColor=item.ClientBGColor;}chart.UpdateXShowText();}if(option.ExtendChart){for(var i=0;i<option.ExtendChart.length;++i){var item=option.ExtendChart[i];chart.CreateExtendChart(item.Name,item);}}//叠加股票
1218
+ if(IFrameSplitOperator.IsNumber(item.CloseBeforeButton))chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;if(item.ClientBGColor)subFrame.ClientBGColor=item.ClientBGColor;if(!IFrameSplitOperator.IsUndefined(item.HorizontalReserved))subFrame.HorizontalReserved=item.HorizontalReserved;}chart.UpdateXShowText();}if(option.ExtendChart){for(var i=0;i<option.ExtendChart.length;++i){var item=option.ExtendChart[i];chart.CreateExtendChart(item.Name,item);}}//叠加股票
1219
1219
  if(option.Overlay){for(var i=0;i<option.Overlay.length;++i){var item=option.Overlay[i];chart.OverlaySymbol(item.Symbol,item);}}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;//标题栏均线也不显示
1220
1220
  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;}if(option.MinuteVol){var item=option.MinuteVol;if(IFrameSplitOperator.IsNumber(item.BarColorType))chart.ChartPaint[2].BarColorType=item.BarColorType;}if(option.MinuteTitle){var item=option.MinuteTitle;if(IFrameSplitOperator.IsBool(item.IsShowName))chart.TitlePaint[0].IsShowName=item.IsShowName;if(IFrameSplitOperator.IsBool(item.IsShowDate))chart.TitlePaint[0].IsShowDate=item.IsShowDate;if(IFrameSplitOperator.IsBool(item.IsShowTime))chart.TitlePaint[0].IsShowTime=item.IsShowTime;if(IFrameSplitOperator.IsBool(item.IsTitleShowLatestData))chart.IsTitleShowLatestData=item.IsTitleShowLatestData;if(IFrameSplitOperator.IsBool(item.IsAlwaysShowLastData))chart.TitlePaint[0].IsAlwaysShowLastData=item.IsAlwaysShowLastData;if(IFrameSplitOperator.IsNumber(item.ShowLastDataFormat))chart.TitlePaint[0].ShowLastDataFormat=item.ShowLastDataFormat;if(IFrameSplitOperator.IsNumber(item.TitleBaseLine))chart.TitlePaint[0].TitleBaseLine=item.TitleBaseLine;if(item.TimeFormat)chart.TitlePaint[0].TimeFormat=item.TimeFormat;}if(IFrameSplitOperator.IsBool(option.CorssCursorTouchEnd))chart.CorssCursorTouchEnd=option.CorssCursorTouchEnd;if(IFrameSplitOperator.IsBool(option.IsClickShowCorssCursor))chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;if(option.IsShowBeforeData===true)chart.IsShowBeforeData=option.IsShowBeforeData;//分钟数据指标从第3个指标窗口设置
1221
1221
  if(IFrameSplitOperator.IsNonEmptyArray(option.Windows)){var scriptData=new JSIndexScript();for(var i=0;i<option.Windows.length;++i){var index=2+i;var item=option.Windows[i];if(item.Script){chart.WindowIndex[index]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
1222
1222
  }else if(item.API)//使用API挂接指标数据 API:{ Name:指标名字, Script:指标脚本可以为空, Args:参数可以为空, Url:指标执行地址 }
1223
1223
  {var apiItem=item.API;chart.WindowIndex[index]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[index]=indexItem.Create();//创建子窗口的指标
1224
1224
  chart.CreateWindowIndex(index);}else{var indexInfo=scriptData.Get(item.Index);if(!indexInfo)continue;indexInfo.ID=item.Index;var args=indexInfo.Args;if(item.Args)args=item.Args;if(item.IsShortTitle)indexInfo.IsShortTitle=item.IsShortTitle;if(item.TitleFont)indexInfo.TitleFont=item.TitleFont;if(IFrameSplitOperator.IsBool(item.IsSync))indexInfo.IsSync=item.IsSync;chart.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,args,indexInfo);//脚本执行
1225
- if(item.StringFormat>0)chart.WindowIndex[index].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[index].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[index].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))frame.TitleWindow=item.TitleWindow;if(IFrameSplitOperator.IsNumber(item.YSplitType))chart.Frame.SubFrame[index].Frame.YSplitOperator.SplitType=item.YSplitType;if(!isNaN(item.TitleHeight))chart.Frame.SubFrame[index].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsDrawTitleBG))chart.Frame.SubFrame[index].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[index].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsBool(item.IsShowTitleArrow))chart.Frame.SubFrame[index].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)chart.Frame.SubFrame[index].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[index].Frame.IsShowOverlayIndexName=false;if(!IFrameSplitOperator.IsUndefined(item.HorizontalReserved))frame.HorizontalReserved=item.HorizontalReserved;}}this.AdjustTitleHeight(chart);//叠加指标
1225
+ if(item.StringFormat>0)chart.WindowIndex[index].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[index].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[index].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))frame.TitleWindow=item.TitleWindow;if(IFrameSplitOperator.IsNumber(item.YSplitType))chart.Frame.SubFrame[index].Frame.YSplitOperator.SplitType=item.YSplitType;if(IFrameSplitOperator.IsNumber(item.FilterType))chart.Frame.SubFrame[index].Frame.YSplitOperator.FilterType=item.FilterType;if(!isNaN(item.TitleHeight))chart.Frame.SubFrame[index].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsDrawTitleBG))chart.Frame.SubFrame[index].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[index].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsBool(item.IsShowTitleArrow))chart.Frame.SubFrame[index].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)chart.Frame.SubFrame[index].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[index].Frame.IsShowOverlayIndexName=false;if(!IFrameSplitOperator.IsUndefined(item.HorizontalReserved))frame.HorizontalReserved=item.HorizontalReserved;}}this.AdjustTitleHeight(chart);//叠加指标
1226
1226
  if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<option.OverlayIndex.length;++i){var item=option.OverlayIndex[i];if(item.Windows>=chart.Frame.SubFrame.length)continue;var itemString=(0,_stringify2.default)(item);var obj=JSON.parse(itemString);if(item.Index)obj.IndexName=item.Index;if(item.Windows>=0)obj.WindowIndex=item.Windows;chart.CreateOverlayWindowsIndex(obj);}}return chart;};this.CreateMinMinuteChartContainer=function(option){var chart=null;if(option.Type==="迷你分钟走势图横屏")chart=new MinuteChartHScreenContainer(this.CanvasElement);else chart=new MinuteChartContainer(this.CanvasElement);if(option.NetworkFilter)chart.NetworkFilter=option.NetworkFilter;var windowsCount=2;if(option.BeforeOpen)//集合竞价
1227
1227
  {var item=option.BeforeOpen;if(IFrameSplitOperator.IsBool(item.IsShow))chart.IsShowBeforeData=item.IsShow;if(IFrameSplitOperator.IsNumber(item.Width))chart.ExtendWidth.Left=item.Width;if(IFrameSplitOperator.IsBool(item.IsShowMultiDay))chart.IsShowMultiDayBeforeData=item.IsShowMultiDay;if(IFrameSplitOperator.IsNumber(item.MulitiDayWidth))chart.MultiDayExtendWidth.Left=item.MulitiDayWidth;}if(option.AfterClose)//收盘集合竞价
1228
1228
  {var item=option.AfterClose;if(IFrameSplitOperator.IsBool(item.IsShow))chart.IsShowAfterData=item.IsShow;if(IFrameSplitOperator.IsNumber(item.ShareVol))chart.ShareAfterVol=item.ShareVol;if(IFrameSplitOperator.IsNumber(item.Width))chart.ExtendWidth.Right=item.Width;if(IFrameSplitOperator.IsBool(item.IsShowMultiDay))chart.IsShowMultiDayAfterData=item.IsShowMultiDay;if(IFrameSplitOperator.IsNumber(item.MulitiDayWidth))chart.MultiDayExtendWidth.Right=item.MulitiDayWidth;}if(!option.Listener)option.Listener={KeyDown:false,Wheel:false};chart.Create(windowsCount,option.Listener);//创建子窗口
@@ -2216,7 +2216,7 @@ var leftExtendText=null;//左侧文字设置
2216
2216
  if(IFrameSplitOperator.IsNonEmptyArray(this.YTextExtend)){leftExtendText=this.YTextExtend[0];rightExtendText=this.YTextExtend[1];}var yPrev=null;//上一个坐标y的值
2217
2217
  var pixelRatio=GetDevicePixelRatio();var itemHeight=(border.BottomEx-border.TopEx)/this.HorizontalInfo.length;var aryMultiText=[];var rtPreRight,rtRight,rtLeft,rtPreLeft;var textBaseline=0;//0=上 1=中 2=下
2218
2218
  for(var i=this.HorizontalInfo.length-1;i>=0;--i)//从上往下画分割线
2219
- {var item=this.HorizontalInfo[i];var y=this.GetYFromData(item.Value);if(y!=null&&yPrev!=null&&Math.abs(y-yPrev)<this.MinYDistance)continue;//两个坐标在近了 就不画了
2219
+ {var item=this.HorizontalInfo[i];if(!IFrameSplitOperator.IsNumber(item.Value))continue;if(item.Value>this.HorizontalMax||item.Value<this.HorizontalMin)continue;var y=this.GetYFromData(item.Value);if(y!=null&&yPrev!=null&&Math.abs(y-yPrev)<this.MinYDistance)continue;//两个坐标在近了 就不画了
2220
2220
  var yFixed=ToFixedPoint(y);//绘制刻度线
2221
2221
  if(y!=bottom&&this.IsShowYLine){var bChangeLineWidth=false;if(IFrameSplitOperator.IsPlusNumber(item.LineWidth))//刻度线宽度
2222
2222
  {this.Canvas.lineWidth=item.LineWidth*pixelRatio;bChangeLineWidth=true;}this.Canvas.strokeStyle=item.LineColor;if(item.LineType==2){this.Canvas.save();if(item.LineDash)this.Canvas.setLineDash(item.LineDash);else this.Canvas.setLineDash([5*pixelRatio,5*pixelRatio]);//虚线
@@ -4847,9 +4847,9 @@ this.GetKLineChartCallback;//获取K线图形
4847
4847
  this.IntegerCoordinateSplit=function(data){var splitItem=this.FrameSplitData.Find(data.Interval);if(!splitItem)return false;if(data.Interval==splitItem.FixInterval)return true;var fixMax=data.Max,fixMin=data.Min;var maxValue=data.Max/splitItem.FixInterval;var minValue=data.Min/splitItem.FixInterval;//调整到整数倍数,不能整除的 +1
4848
4848
  if(IFrameSplitOperator.IsFloat(maxValue))fixMax=parseInt((maxValue+0.5).toFixed(0))*splitItem.FixInterval;if(IFrameSplitOperator.IsFloat(minValue))fixMin=parseInt((minValue-0.5).toFixed(0))*splitItem.FixInterval;if(data.Min==0)fixMin=0;//最小值是0 不用调整了.
4849
4849
  if(fixMin<0&&data.Min>0)fixMin=0;//都是正数的, 最小值最小调整为0
4850
- var count=0;for(var i=fixMin;i-fixMax<0.00000001;i+=splitItem.FixInterval){++count;}data.Interval=splitItem.FixInterval;data.Max=fixMax;data.Min=fixMin;data.Count=count;return true;};this.Filter=function(aryInfo,keepZero){if(this.SplitCount<=0||aryInfo.length<=0||aryInfo.length<=this.SplitCount)return aryInfo;//分割线比预设的多, 过掉一些
4851
- var filter=parseInt(aryInfo.length/this.SplitCount);if(filter<=1)filter=2;var data=[];for(var i=0;i<aryInfo.length;i+=filter){if(i+filter>=aryInfo.length&&i!=aryInfo.length-1)//最后一个数据放进去
4852
- {data.push(aryInfo[aryInfo.length-1]);}else{data.push(aryInfo[i]);}}if(this.SplitCount==2&&data.length>2)//之显示第1个和最后一个刻度
4850
+ var count=0;for(var i=fixMin;i-fixMax<0.00000001;i+=splitItem.FixInterval){++count;}data.Interval=splitItem.FixInterval;data.Max=fixMax;data.Min=fixMin;data.Count=count;return true;};this.Filter=function(aryInfo,keepZero,filterType){if(this.SplitCount<=0||aryInfo.length<=0||aryInfo.length<=this.SplitCount)return aryInfo;//分割线比预设的多, 过掉一些
4851
+ var filter=parseInt(aryInfo.length/this.SplitCount);if(filter<=1)filter=2;var data=[];if(filterType==1){for(var i=0;i<aryInfo.length;i+=filter){data.push(aryInfo[i]);}}else{for(var i=0;i<aryInfo.length;i+=filter){if(i+filter>=aryInfo.length&&i!=aryInfo.length-1)//最后一个数据放进去
4852
+ {data.push(aryInfo[aryInfo.length-1]);}else{data.push(aryInfo[i]);}}}if(this.SplitCount==2&&data.length>2)//之显示第1个和最后一个刻度
4853
4853
  {for(var i=1;i<data.length-1;++i){var item=data[i];item.Message[0]=null;item.Message[1]=null;}}if(keepZero)//如果不存在0轴,增加一个0轴,刻度信息部显示
4854
4854
  {var bExsitZero=false;for(var i=0;i<data.length;++i){var item=data[i];if(Math.abs(item.Value)<0.00000001){bExsitZero=true;break;}}if(bExsitZero==false){var zeroCoordinate=new CoordinateInfo();zeroCoordinate.Value=0;zeroCoordinate.Message[0]=null;zeroCoordinate.Message[1]=null;data.push(zeroCoordinate);}}return data;};this.RemoveZero=function(aryInfo)//移除小数后面多余的0
4855
4855
  {//所有的数字小数点后面都0,才会去掉
@@ -5030,6 +5030,7 @@ var count=0;for(var i=fixMin;i-fixMax<0.00000001;i+=splitItem.FixInterval){++cou
5030
5030
  this.newMethod();delete this.newMethod;this.SplitCount=3;//刻度个数
5031
5031
  this.FloatPrecision=2;//坐标小数位数(默认2)
5032
5032
  this.FLOATPRECISION_RANGE=[1,0.1,0.01,0.001,0.0001];this.SplitType=0;//0=自动分割 1=固定分割 2=堆积图(0-100)
5033
+ this.FilterType=0;//自动分割过滤算法
5033
5034
  this.DefaultSplitType=0;this.Custom=[];//[{Type:0}]; 定制刻度
5034
5035
  this.DefaultYMaxMin;//{ Max:null, Min:null }; //指定最大,最小, Y轴范围必须比最大值大, 比最小值小
5035
5036
  this.EnableRemoveZero=g_JSChartResource.Frame.EnableRemoveZero;this.LineType=null;//线段样式
@@ -5045,7 +5046,7 @@ this.IsEnableDragY=function(){return true;};this.Reset=function()//重置
5045
5046
  coordinate.Message[1]=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}coordinate.Message[0]=coordinate.Message[1];if(this.IsShowLeftText==false)this.Frame.HorizontalInfo[i].Message[0]=null;if(this.IsShowRightText==false)this.Frame.HorizontalInfo[i].Message[1]=null;this.Frame.HorizontalInfo.push(coordinate);}}else{for(var i=0,value=splitData.Min;i<splitData.Count;++i,value+=splitData.Interval){var coordinate=new CoordinateInfo();this.Frame.HorizontalInfo[i]=coordinate;coordinate.Value=value;if(IFrameSplitOperator.IsNumber(this.LineType))coordinate.LineType=this.LineType;var text=this.FormatValueString(value);this.Frame.HorizontalInfo[i].Message[0]=this.Frame.HorizontalInfo[i].Message[1]=text;if(this.IsShowLeftText==false)this.Frame.HorizontalInfo[i].Message[0]=null;if(this.IsShowRightText==false)this.Frame.HorizontalInfo[i].Message[1]=null;//this.Frame.HorizontalInfo[i].Font="14px 微软雅黑";
5046
5047
  //this.Frame.HorizontalInfo[i].TextColor="rgb(100,0,200)";
5047
5048
  //this.Frame.HorizontalInfo[i].LineColor="rgb(220,220,220)";
5048
- }}this.FilterIgnoreYValue();this.CustomCoordinate();if(this.SplitType!=1)this.Frame.HorizontalInfo=this.Filter(this.Frame.HorizontalInfo,splitData.Max>0&&splitData.Min<0);this.RightFrameSplitY();this.MainOverlayFrameSplitY();//主图Y轴绑定叠加Y轴坐标
5049
+ }}this.FilterIgnoreYValue();this.CustomCoordinate();if(this.SplitType!=1)this.Frame.HorizontalInfo=this.Filter(this.Frame.HorizontalInfo,splitData.Max>0&&splitData.Min<0,this.FilterType);this.RightFrameSplitY();this.MainOverlayFrameSplitY();//主图Y轴绑定叠加Y轴坐标
5049
5050
  this.CallAcutionSplitY(this.SplitCount,splitData);if(this.EnableRemoveZero)this.RemoveZero(this.Frame.HorizontalInfo);this.DynamicMessageText();this.Frame.HorizontalMax=splitData.Max;this.Frame.HorizontalMin=splitData.Min;if(this.EnableZoomUpDown==true&&!this.FixedYMaxMin)this.FixedYMaxMin={Max:splitData.Max,Min:splitData.Min};this.ReservedHeight(splitData);//预留高度
5050
5051
  if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};if(this.OverlayIdentify)data.OverlayIdentify=this.OverlayIdentify;event.Callback(event,data,this);}}};this.FormatValueString=function(value){var text;if(this.StringFormat==1)//手机端格式 如果有万,亿单位了 去掉小数
5051
5052
  {var floatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(value)&&Math.abs(value)>1000)floatPrecision=0;text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}else if(this.StringFormat==2)//原始数据输出
@@ -5083,7 +5084,8 @@ this.OverlayChartPaint;this.SplitCount=7;this.Symbol;this.SplitType=0;//0=默认
5083
5084
  this.DefaultSplitType=0;this.LimitPrice;//{Max: Min:} 涨跌停价
5084
5085
  this.Custom;this.RightTextFormat=0;//右边刻度显示模式 0=百分比 1=价格
5085
5086
  this.BeforeOpenData;this.IsBeforeData=false;this.AfterCloseData;this.IsAfterData=false;this.MultiDayBeforeOpenData;this.MultiDayAfterCloseData;this.DayOffset;this.AverageData;//均线
5086
- this.DayCount=1;this.GlobalOption;this.HQChart;this.IsEnableDragY=function(){return false;};this.Operator=function(){this.Frame.HorizontalInfo=[];this.Frame.CustomHorizontalInfo=[];if(!this.Data)return;var range=this.GetMaxMin();if(this.Symbol&&MARKET_SUFFIX_NAME.IsUSA(this.Symbol.toUpperCase())){this.USASplit(range);}else if(this.SplitType==2){this.USASplit(range);}else{this.DefaultSplit(range);}this.CustomCoordinate();if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};event.Callback(event,data,this);}}};this.CustomCoordinate=function()//自定义刻度
5087
+ this.DayCount=1;this.GlobalOption;this.HQChart;this.IsEnableDragY=function(){return false;};this.Operator=function(){this.Frame.HorizontalInfo=[];this.Frame.CustomHorizontalInfo=[];if(!this.Data)return;var range=this.GetMaxMin();if(this.Symbol&&MARKET_SUFFIX_NAME.IsUSA(this.Symbol.toUpperCase())){this.USASplit(range);}else if(this.SplitType==2){this.USASplit(range);}else{this.DefaultSplit(range);}this.CustomCoordinate();this.ReservedHeight({Max:this.Frame.HorizontalMax,Min:this.Frame.HorizontalMin});//预留高度
5088
+ if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};event.Callback(event,data,this);}}};this.CustomCoordinate=function()//自定义刻度
5087
5089
  {var data=this.InvokeCustomYCoordinateCallback();if(data&&data.PreventDefault==true)return;if(!this.Custom)return;var defaultfloatPrecision=GetfloatPrecision(this.Symbol);for(var i in this.Custom){var item=this.Custom[i];if(item.Type==1)this.CustomFixedCoordinate(item);else if(item.Type==0){var latestItem=this.GetLatestPrice(defaultfloatPrecision,item);if(latestItem)this.Frame.CustomHorizontalInfo.push(latestItem);}}};this.GetLatestPrice=function(floatPrecision,option){if(!this.Data||!this.Data.Data)return null;if(this.Data.Data.length<=0)return null;var price=this.Data.Data[this.Data.Data.length-1];if(!IFrameSplitOperator.IsNumber(price)||!IFrameSplitOperator.IsNumber(this.YClose))return null;var info=new CoordinateInfo();info.Type=0;info.Value=price;info.TextColor=g_JSChartResource.FrameLatestPrice.TextColor;info.LineType=2;//虚线
5088
5090
  var strPrice=price.toFixed(floatPrecision);if(option.DateTime=='HH:MM'){var latestItem=this.Frame.Data.Data[this.Frame.Data.Data.length-1];var strTime=IFrameSplitOperator.FormatTimeString(latestItem.Time,option.DateTime);var aryText=[{Text:strPrice},{Text:strTime}];if(option.Position=='left')info.Message[0]=aryText;else info.Message[1]=aryText;}else{if(option.Position=='left')info.Message[0]=strPrice;else info.Message[1]=strPrice;}if(price>this.YClose)info.LineColor=g_JSChartResource.FrameLatestPrice.UpBarColor;else if(price<this.YClose)info.LineColor=g_JSChartResource.FrameLatestPrice.DownBarColor;else info.LineColor=g_JSChartResource.FrameLatestPrice.UnchagneBarColor;if(IFrameSplitOperator.IsNumber(option.LineType))info.LineType=option.LineType;if(IFrameSplitOperator.IsPlusNumber(option.LineWidth))info.LineWidth=option.LineWidth;if(option.LineDash)info.LineDash=option.LineDash;if(option.IsShowLine==false)info.LineType=-1;if(option.PositionEx===1)info.ExtendData={Custom:{Position:1}};//强制画在内部
5089
5091
  return info;};this.CustomFixedCoordinate=function(option)//固定坐标刻度
@@ -5623,6 +5625,7 @@ this.StringFormat=STRING_FORMAT_TYPE.DEFAULT;//字符串格式
5623
5625
  this.FloatPrecision=2;//小数位数
5624
5626
  this.IsShow=true;//是否显示
5625
5627
  this.Callback;//绘制标题回调
5628
+ this.ExtendData;//扩展数据
5626
5629
  }function DynamicChartTitlePainting(){this.newMethod=IChartTitlePainting;//派生
5627
5630
  this.newMethod();delete this.newMethod;this.ClassName='DynamicChartTitlePainting';this.IsDynamic=true;this.Data=[];this.Explain;this.ColorIndex;//五彩K线名字 {Name:'名字'}
5628
5631
  this.IsShowColorIndexTitle=true;this.IsShowUpDownArrow=true;//指标数据是否显示 上涨下跌箭头
@@ -5673,7 +5676,8 @@ var value=null;var preVaildItem=null;if(item.DataType=="StraightLine")//直线
5673
5676
  }else{var index=Math.abs(this.CursorIndex);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)return null;}if(item.DataType=="ChartMultiLine")//多线段数据
5674
5677
  {aryText=this.ForamtMultiLineTitle(dataIndex,item);if(!aryText)return null;return{Text:null,ArrayText:aryText};}else if(item.DataType=="ChartMultiPoint"){aryText=this.ForamtMultiPointTitle(dataIndex,item);if(!aryText)return null;return{Text:null,ArrayText:aryText};}value=item.Data.Data[dataIndex];if(value==null&&item.ChartClassName=="ChartStepLine")//当前值无效,上一个值延续
5675
5678
  {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))//外部挂接
5676
- {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 arrowSuper=null;//独立颜色
5679
+ {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;}}if(item.DataType=="ChartBand")//默认不输出
5680
+ return null;var arrowSuper=null;//独立颜色
5677
5681
  if(this.IsShowUpDownArrow){var preValue=null;if(dataIndex-1>=0)preValue=item.Data.Data[dataIndex-1];if(IFrameSplitOperator.IsNumber(preValue)){if(preValue>value)arrowSuper={Text:'↓',TextColor:this.UpDownArrowConfig.DownColor};else if(preValue<value)arrowSuper={Text:'↑',TextColor:this.UpDownArrowConfig.UpColor};else arrowSuper={Text:'→',TextColor:this.UpDownArrowConfig.UnchangeColor};}}valueText=this.FormatValue(value,item);if(item.Name){var dyValue=this.GetDynamicOutValue(item.Name,valueText);if(dyValue)valueText=dyValue;}if(arrowSuper){var outItem={Name:null,Text:valueText,Color:item.Color,TextEx:[arrowSuper]};if(item.Name){var text=item.Name;var dyTitle=this.GetDynamicOutName(item.Name);//动态标题
5678
5682
  if(dyTitle)text=dyTitle;outItem.Name=text;}//outItem.BG='rgb(100,100,100)';
5679
5683
  aryText=[outItem];valueText=null;}}}return{Text:valueText,ArrayText:aryText};};//绘制主图指标 rtText 返回画完以后的区域
@@ -9071,7 +9075,7 @@ function FuturesTimeData(){this.TIME_SPLIT=[//ID=0 9:00-10:15,10:31-11:30,13:31-
9071
9075
  {Name:'9:00-10:15,10:31-11:30,13:31-15:00',Data:[//9:00-10:15,10:30-11:30,13:30-15:00
9072
9076
  {Start:900,End:1015},{Start:1031,End:1130},{Start:1331,End:1500}],Coordinate:{Full://完整模式
9073
9077
  [{Value:900,Text:'9:00'},{Value:930,Text:'9:30'},{Value:1000,Text:'10:00'},{Value:1030,Text:'10:30'},{Value:1100,Text:'11:00'},{Value:1330,Text:'13:30'},{Value:1400,Text:'14:00'},{Value:1430,Text:'14:30'},{Value:1500,Text:'15:00'}],Simple://简洁模式
9074
- [{Value:900,Text:'9:00'},{Value:1000,Text:'10:00'},{Value:1330,Text:'13:30'},{Value:1430,Text:'14:30'},{Value:1500,Text:'15:00'}],Min://最小模式
9078
+ [{Value:900,Text:'9:00'},{Value:1000,Text:'10:00'},{Value:1100,Text:'11:00'},{Value:1400,Text:'14:00'},{Value:1500,Text:'15:00'}],Min://最小模式
9075
9079
  [{Value:900,Text:'9:00'},{Value:1330,Text:'13:30'},{Value:1500,Text:'15:00'}]}},//ID=1 9:30-11:30,13:01-15:15
9076
9080
  {Name:'9:30-11:30,13:01-15:15',Data:[{Start:930,End:1130},{Start:1301,End:1515}],Coordinate:{Full://完整模式
9077
9081
  [{Value:930,Text:'9:30'},{Value:1000,Text:'10:00'},{Value:1030,Text:'10:30'},{Value:1100,Text:'11:00'},{Value:1300,Text:'13:00'},{Value:1330,Text:'13:30'},{Value:1400,Text:'14:00'},{Value:1430,Text:'14:30'},{Value:1515,Text:'15:15'}],Simple://简洁模式
@@ -9703,7 +9707,7 @@ for(;offset<data.length;++offset){if(data[offset]!=null&&!isNaN(data[offset]))br
9703
9707
  SMA 移动平均
9704
9708
  返回移动平均。
9705
9709
  用法: SMA(X,N,M) X的N日移动平均,M为权重,如Y=(X*M+Y'*(N-M))/N
9706
- */this.SMA=function(data,n,m){var result=[];if(Array.isArray(n)){for(var i=0;i<n.length;++i){var period=n[i];if(!this.IsNumber(period))continue;period=parseInt(period);if(period<=0)continue;if(period>i+1)period=i+1;var lastSMA=null;var sma=null;for(var j=0;j<period;++j){var index=i-(period-j-1);var item=data[index];if(!this.IsNumber(item))continue;if(lastSMA==null){lastSMA=item;sma=item;}else{sma=(m*item+(period-m)*lastSMA)/period;lastSMA=sma;}}result[i]=sma;}}else{var i=0;var lastData=null;for(;i<data.length;++i){if(data[i]==null||isNaN(data[i]))continue;lastData=data[i];result[i]=lastData;//第一天的数据
9710
+ */this.SMA=function(data,n,m){var result=[];if(Array.isArray(n)){for(var i=0;i<n.length;++i){var period=n[i];if(!this.IsNumber(period))continue;period=parseInt(period);if(period<=0)continue;if(period>i+1)period=i+1;var lastSMA=null;var sma=null;for(var j=0;j<period;++j){var index=i-(period-j-1);var item=data[index];if(!this.IsNumber(item))continue;if(lastSMA==null){lastSMA=item;sma=item;}else{sma=(m*item+(period-m)*lastSMA)/period;lastSMA=sma;}}result[i]=sma;}}else{var i=n;var lastData=null;for(;i<data.length;++i){if(data[i]==null||isNaN(data[i]))continue;lastData=data[i];result[i]=lastData;//第一天的数据
9707
9711
  break;}for(++i;i<data.length;++i){result[i]=(m*data[i]+(n-m)*lastData)/n;lastData=result[i];}}return result;};/*
9708
9712
  求动态移动平均.
9709
9713
  用法: DMA(X,A),求X的动态移动平均.
@@ -11443,7 +11447,7 @@ if(varItem.Draw.FixedPosition==="TOP")chartText.FixedPosition=1;else if(varItem.
11443
11447
  this.SetChartIndexName(chartText);hqChart.ChartPaint.push(chartText);};//COLORSTICK
11444
11448
  this.CreateMACD=function(hqChart,windowIndex,varItem,id){var chartMACD=new ChartMACD();chartMACD.Canvas=hqChart.Canvas;chartMACD.Identify=this.Guid;chartMACD.Name=varItem.Name;chartMACD.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chartMACD.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chartMACD.LineWidth=width;}var titleIndex=windowIndex+1;chartMACD.Data.Data=varItem.Data;var clrTitle=this.GetDefaultColor(id);if(varItem.Color)clrTitle=this.GetColor(varItem.Color);if(varItem.UpColor)chartMACD.UpColor=varItem.UpColor;if(varItem.DownColor)chartMACD.DownColor=varItem.DownColor;this.ReloadChartResource(hqChart,windowIndex,chartMACD);hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chartMACD.Data,varItem.Name,clrTitle);this.SetChartIndexName(chartMACD);hqChart.ChartPaint.push(chartMACD);};this.CreatePointDot=function(hqChart,windowIndex,varItem,id,hisData){var pointDot=new ChartPointDot();pointDot.Canvas=hqChart.Canvas;pointDot.Name=varItem.Name;pointDot.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;pointDot.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)pointDot.Color=this.GetColor(varItem.Color);else pointDot.Color=this.GetDefaultColor(id);if(varItem.Radius)pointDot.Radius=varItem.Radius;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)pointDot.Radius=width;}if(IFrameSplitOperator.IsBool(varItem.UpDownDot)){pointDot.EnableUpDownColor=varItem.UpDownDot;pointDot.HistoryData=hisData;}var titleIndex=windowIndex+1;pointDot.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(pointDot.Data,varItem.Name,pointDot.Color);this.SetChartIndexName(pointDot);hqChart.ChartPaint.push(pointDot);};this.CreateStick=function(hqChart,windowIndex,varItem,id){var chart=new ChartStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;this.ReloadChartResource(hqChart,windowIndex,chart);hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateLineStick=function(hqChart,windowIndex,varItem,id){var chart=new ChartLineStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);hqChart.ChartPaint.push(chart);};this.CreateStraightLine=function(hqChart,windowIndex,varItem,id){var line=new ChartLine();line.DrawType=1;line.Canvas=hqChart.Canvas;line.Name=varItem.Name;line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)line.Color=this.GetColor(varItem.Color);else line.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)line.LineWidth=width;}var titleIndex=windowIndex+1;line.Data.Data=varItem.Draw.DrawData;if(varItem.Name=="DRAWLINE")hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,null,line.Color);//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);
11445
11449
  hqChart.ChartPaint.push(line);};this.CreateVolStick=function(hqChart,windowIndex,varItem,id,hisData){var chart=new ChartVolStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.KLineDrawType=hqChart.KLineDrawType;//设置K线显示类型
11446
- chart.Identify=this.Guid;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.UpColor)chart.UpColor=varItem.UpColor;if(varItem.DownColor)chart.DownColor=varItem.DownColor;if(IFrameSplitOperator.IsNumber(varItem.StickType))chart.BarType=varItem.StickType;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))chart.BarWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;chart.HistoryData=hisData;this.ReloadChartResource(hqChart,windowIndex,chart);var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);hqChart.TitlePaint[titleIndex].Data[id]=titleData;this.SetTitleData(titleData,chart);this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateBand=function(hqChart,windowIndex,varItem,id){var chart=new ChartBand();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.FirstColor=varItem.Draw.Color[0];chart.SecondColor=varItem.Draw.Color[1];chart.Data.Data=varItem.Draw.DrawData;if(IFrameSplitOperator.IsBool(varItem.IsFirstDraw))chart.IsDrawFirst=varItem.IsFirstDraw;this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateFillRGN=function(hqChart,windowIndex,varItem,id){var chart=new ChartLineArea();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);hqChart.ChartPaint.push(chart);};this.CreateFillRGN2=function(hqChart,windowIndex,varItem,id){var chart=new ChartFillRGN();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};this.CreateFillBGRGN=function(hqChart,windowIndex,varItem,id){var chart=new ChartFillBGRGN();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};this.CreateFLOATRGN=function(hqChart,windowIndex,varItem,id){var chart=new ChartFLOATRGN();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};//创建K线图
11450
+ chart.Identify=this.Guid;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.UpColor)chart.UpColor=varItem.UpColor;if(varItem.DownColor)chart.DownColor=varItem.DownColor;if(IFrameSplitOperator.IsNumber(varItem.StickType))chart.BarType=varItem.StickType;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))chart.BarWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;chart.HistoryData=hisData;this.ReloadChartResource(hqChart,windowIndex,chart);var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);hqChart.TitlePaint[titleIndex].Data[id]=titleData;this.SetTitleData(titleData,chart);this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateBand=function(hqChart,windowIndex,varItem,id){var chart=new ChartBand();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.FirstColor=varItem.Draw.Color[0];chart.SecondColor=varItem.Draw.Color[1];chart.Data.Data=varItem.Draw.DrawData;if(IFrameSplitOperator.IsBool(varItem.IsFirstDraw))chart.IsDrawFirst=varItem.IsFirstDraw;var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);titleData.DataType=chart.ClassName;titleData.ExtendData={Color:[chart.FirstColor,chart.SecondColor]};hqChart.TitlePaint[titleIndex].Data[id]=titleData;this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateFillRGN=function(hqChart,windowIndex,varItem,id){var chart=new ChartLineArea();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);hqChart.ChartPaint.push(chart);};this.CreateFillRGN2=function(hqChart,windowIndex,varItem,id){var chart=new ChartFillRGN();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};this.CreateFillBGRGN=function(hqChart,windowIndex,varItem,id){var chart=new ChartFillBGRGN();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};this.CreateFLOATRGN=function(hqChart,windowIndex,varItem,id){var chart=new ChartFLOATRGN();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};//创建K线图
11447
11451
  this.CreateKLine=function(hqChart,windowIndex,varItem,id){var chart=new ChartKLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.Identify=this.Guid;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;chart.IsShowMaxMinPrice=false;chart.IsShowKTooltip=false;if(IFrameSplitOperator.IsNumber(varItem.KLineType))chart.DrawType=varItem.KLineType;if(varItem.Color)//如果设置了颜色,使用外面设置的颜色
11448
11452
  chart.UnchagneColor=chart.DownColor=chart.UpColor=this.GetColor(varItem.Color);this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateOverlayKLine=function(hqChart,windowIndex,varItem,id){var chart=null;if(hqChart.IsKLineContainer())chart=new ChartOverlayKLine();else if(hqChart.IsMinuteContainer())chart=new ChartOverlayMinutePriceLine();else return;chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.Identify=this.Guid;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);//如果设置了颜色,使用外面设置的颜色
11449
11453
  else chart.Color=this.GetDefaultColor(id);chart.Data.Data=varItem.Draw.DrawData;chart.MainData=hqChart.ChartPaint[0].Data;//绑定K线
@@ -13203,7 +13207,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
13203
13207
  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);};}/********************************************************************************
13204
13208
  * 版本信息输出
13205
13209
  *
13206
- */var HQCHART_VERSION="1.1.13465";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13210
+ */var HQCHART_VERSION="1.1.13477";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13207
13211
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
13208
13212
  // BaseIndex:BaseIndex,
13209
13213
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.13466",
3
+ "version": "1.1.13478",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -3386,7 +3386,7 @@ function JSAlgorithm(errorHandler,symbolData)
3386
3386
  }
3387
3387
  else
3388
3388
  {
3389
- var i=0;
3389
+ var i=n;
3390
3390
  var lastData=null;
3391
3391
  for(;i<data.length; ++i)
3392
3392
  {
@@ -20812,6 +20812,12 @@ function ScriptIndex(name,script,args,option)
20812
20812
 
20813
20813
  if (IFrameSplitOperator.IsBool(varItem.IsFirstDraw)) chart.IsDrawFirst=varItem.IsFirstDraw;
20814
20814
 
20815
+ var titleIndex=windowIndex+1;
20816
+ var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);
20817
+ titleData.DataType=chart.ClassName;
20818
+ titleData.ExtendData={ Color:[chart.FirstColor, chart.SecondColor] };
20819
+ hqChart.TitlePaint[titleIndex].Data[id]=titleData;
20820
+
20815
20821
  this.SetChartIndexName(chart);
20816
20822
  hqChart.ChartPaint.push(chart);
20817
20823
  }
@@ -528,6 +528,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
528
528
  chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;
529
529
  chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;
530
530
  }
531
+ if (IFrameSplitOperator.IsNumber(item.FilterType)) subFrame.YSplitOperator.FilterType=item.FilterType;
532
+
531
533
  if (!isNaN(item.Height)) chart.Frame.SubFrame[i].Height = item.Height;
532
534
  if (item.IsShowLeftText===false || item.IsShowLeftText===true)
533
535
  {
@@ -1006,6 +1008,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1006
1008
  chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;
1007
1009
  chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;
1008
1010
  }
1011
+ if (IFrameSplitOperator.IsNumber(item.FilterType)) subFrame.YSplitOperator.FilterType=item.FilterType;
1012
+
1009
1013
  if (item.IsShowLeftText==false)
1010
1014
  {
1011
1015
  chart.Frame.SubFrame[i].Frame.IsShowYText[0]=item.IsShowLeftText;
@@ -1035,6 +1039,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1035
1039
  if (IFrameSplitOperator.IsNumber(item.CloseBeforeButton)) chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;
1036
1040
 
1037
1041
  if (item.ClientBGColor) subFrame.ClientBGColor=item.ClientBGColor;
1042
+ if (!IFrameSplitOperator.IsUndefined(item.HorizontalReserved)) subFrame.HorizontalReserved=item.HorizontalReserved;
1038
1043
  }
1039
1044
 
1040
1045
  chart.UpdateXShowText();
@@ -1151,6 +1156,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1151
1156
  if (IFrameSplitOperator.IsBool(item.TitleWindow)) frame.TitleWindow=item.TitleWindow;
1152
1157
 
1153
1158
  if (IFrameSplitOperator.IsNumber(item.YSplitType)) chart.Frame.SubFrame[index].Frame.YSplitOperator.SplitType=item.YSplitType;
1159
+ if (IFrameSplitOperator.IsNumber(item.FilterType)) chart.Frame.SubFrame[index].Frame.YSplitOperator.FilterType=item.FilterType;
1154
1160
  if (!isNaN(item.TitleHeight)) chart.Frame.SubFrame[index].Frame.ChartBorder.TitleHeight=item.TitleHeight;
1155
1161
  if (IFrameSplitOperator.IsBool(item.IsDrawTitleBG)) chart.Frame.SubFrame[index].Frame.IsDrawTitleBG=item.IsDrawTitleBG;
1156
1162
  if (IFrameSplitOperator.IsBool(item.IsShowNameArrow)) chart.Frame.SubFrame[index].Frame.IsShowNameArrow=item.IsShowNameArrow;
@@ -11021,6 +11027,9 @@ function AverageWidthFrame()
11021
11027
  for(var i=this.HorizontalInfo.length-1; i>=0; --i) //从上往下画分割线
11022
11028
  {
11023
11029
  var item=this.HorizontalInfo[i];
11030
+ if (!IFrameSplitOperator.IsNumber(item.Value)) continue;
11031
+ if (item.Value>this.HorizontalMax || item.Value<this.HorizontalMin) continue;
11032
+
11024
11033
  var y=this.GetYFromData(item.Value);
11025
11034
  if (y!=null && yPrev!=null && Math.abs(y-yPrev)<this.MinYDistance) continue; //两个坐标在近了 就不画了
11026
11035
 
@@ -45594,7 +45603,7 @@ function IFrameSplitOperator()
45594
45603
  return true;
45595
45604
  }
45596
45605
 
45597
- this.Filter = function (aryInfo,keepZero)
45606
+ this.Filter=function(aryInfo, keepZero, filterType)
45598
45607
  {
45599
45608
  if (this.SplitCount <= 0 || aryInfo.length <= 0 || aryInfo.length <= this.SplitCount) return aryInfo;
45600
45609
 
@@ -45602,17 +45611,28 @@ function IFrameSplitOperator()
45602
45611
  var filter = parseInt(aryInfo.length / this.SplitCount);
45603
45612
  if (filter <= 1) filter = 2;
45604
45613
  var data = [];
45605
- for (var i = 0; i < aryInfo.length; i += filter)
45614
+ if (filterType==1)
45606
45615
  {
45607
- if (i + filter >= aryInfo.length && i != aryInfo.length - 1) //最后一个数据放进去
45616
+ for (var i = 0; i < aryInfo.length; i += filter)
45608
45617
  {
45609
- data.push(aryInfo[aryInfo.length - 1]);
45618
+ data.push(aryInfo[i]);
45610
45619
  }
45611
- else
45620
+ }
45621
+ else
45622
+ {
45623
+ for (var i = 0; i < aryInfo.length; i += filter)
45612
45624
  {
45613
- data.push(aryInfo[i]);
45625
+ if (i + filter >= aryInfo.length && i != aryInfo.length - 1) //最后一个数据放进去
45626
+ {
45627
+ data.push(aryInfo[aryInfo.length - 1]);
45628
+ }
45629
+ else
45630
+ {
45631
+ data.push(aryInfo[i]);
45632
+ }
45614
45633
  }
45615
45634
  }
45635
+
45616
45636
 
45617
45637
  if (this.SplitCount == 2 && data.length>2) //之显示第1个和最后一个刻度
45618
45638
  {
@@ -45650,7 +45670,7 @@ function IFrameSplitOperator()
45650
45670
  return data;
45651
45671
  }
45652
45672
 
45653
- this.RemoveZero = function (aryInfo) //移除小数后面多余的0
45673
+ this.RemoveZero=function(aryInfo) //移除小数后面多余的0
45654
45674
  {
45655
45675
  //所有的数字小数点后面都0,才会去掉
45656
45676
  var isAllZero = [true, true, true, true];
@@ -47218,6 +47238,7 @@ function FrameSplitY()
47218
47238
  this.FloatPrecision = 2; //坐标小数位数(默认2)
47219
47239
  this.FLOATPRECISION_RANGE=[1,0.1,0.01,0.001,0.0001];
47220
47240
  this.SplitType=0; //0=自动分割 1=固定分割 2=堆积图(0-100)
47241
+ this.FilterType=0; //自动分割过滤算法
47221
47242
  this.DefaultSplitType=0;
47222
47243
  this.Custom=[]; //[{Type:0}]; 定制刻度
47223
47244
  this.DefaultYMaxMin; //{ Max:null, Min:null }; //指定最大,最小, Y轴范围必须比最大值大, 比最小值小
@@ -47409,7 +47430,8 @@ function FrameSplitY()
47409
47430
  this.FilterIgnoreYValue();
47410
47431
 
47411
47432
  this.CustomCoordinate();
47412
- if (this.SplitType!=1) this.Frame.HorizontalInfo = this.Filter(this.Frame.HorizontalInfo,(splitData.Max>0 && splitData.Min<0));
47433
+ if (this.SplitType!=1)
47434
+ this.Frame.HorizontalInfo = this.Filter(this.Frame.HorizontalInfo,(splitData.Max>0 && splitData.Min<0), this.FilterType);
47413
47435
 
47414
47436
  this.RightFrameSplitY();
47415
47437
  this.MainOverlayFrameSplitY(); //主图Y轴绑定叠加Y轴坐标
@@ -48049,6 +48071,8 @@ function FrameSplitMinutePriceY()
48049
48071
 
48050
48072
  this.CustomCoordinate();
48051
48073
 
48074
+ this.ReservedHeight({ Max:this.Frame.HorizontalMax, Min:this.Frame.HorizontalMin }); //预留高度
48075
+
48052
48076
  if (this.GetEventCallback)
48053
48077
  {
48054
48078
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);
@@ -53089,6 +53113,7 @@ function DynamicTitleData(data,name,color)
53089
53113
  this.FloatPrecision=2; //小数位数
53090
53114
  this.IsShow=true; //是否显示
53091
53115
  this.Callback; //绘制标题回调
53116
+ this.ExtendData; //扩展数据
53092
53117
  }
53093
53118
 
53094
53119
  function DynamicChartTitlePainting()
@@ -53845,6 +53870,10 @@ function DynamicChartTitlePainting()
53845
53870
  if (data.Out) return data.Out;
53846
53871
  }
53847
53872
  }
53873
+
53874
+ if (item.DataType=="ChartBand") //默认不输出
53875
+ return null;
53876
+
53848
53877
 
53849
53878
  var arrowSuper=null; //独立颜色
53850
53879
 
@@ -90651,8 +90680,8 @@ function FuturesTimeData()
90651
90680
  [
90652
90681
  { Value: 900, Text: '9:00' },
90653
90682
  { Value: 1000, Text: '10:00' },
90654
- { Value: 1330, Text: '13:30' },
90655
- { Value: 1430, Text: '14:30' },
90683
+ { Value: 1100, Text: '11:00' },
90684
+ { Value: 1400, Text: '14:00' },
90656
90685
  { Value: 1500, Text: '15:00' },
90657
90686
  ],
90658
90687
  Min: //最小模式
@@ -4453,6 +4453,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4453
4453
  chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;
4454
4454
  chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;
4455
4455
  }
4456
+ if (IFrameSplitOperator.IsNumber(item.FilterType)) subFrame.YSplitOperator.FilterType=item.FilterType;
4457
+
4456
4458
  if (!isNaN(item.Height)) chart.Frame.SubFrame[i].Height = item.Height;
4457
4459
  if (item.IsShowLeftText===false || item.IsShowLeftText===true)
4458
4460
  {
@@ -4931,6 +4933,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4931
4933
  chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;
4932
4934
  chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;
4933
4935
  }
4936
+ if (IFrameSplitOperator.IsNumber(item.FilterType)) subFrame.YSplitOperator.FilterType=item.FilterType;
4937
+
4934
4938
  if (item.IsShowLeftText==false)
4935
4939
  {
4936
4940
  chart.Frame.SubFrame[i].Frame.IsShowYText[0]=item.IsShowLeftText;
@@ -4960,6 +4964,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4960
4964
  if (IFrameSplitOperator.IsNumber(item.CloseBeforeButton)) chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;
4961
4965
 
4962
4966
  if (item.ClientBGColor) subFrame.ClientBGColor=item.ClientBGColor;
4967
+ if (!IFrameSplitOperator.IsUndefined(item.HorizontalReserved)) subFrame.HorizontalReserved=item.HorizontalReserved;
4963
4968
  }
4964
4969
 
4965
4970
  chart.UpdateXShowText();
@@ -5076,6 +5081,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5076
5081
  if (IFrameSplitOperator.IsBool(item.TitleWindow)) frame.TitleWindow=item.TitleWindow;
5077
5082
 
5078
5083
  if (IFrameSplitOperator.IsNumber(item.YSplitType)) chart.Frame.SubFrame[index].Frame.YSplitOperator.SplitType=item.YSplitType;
5084
+ if (IFrameSplitOperator.IsNumber(item.FilterType)) chart.Frame.SubFrame[index].Frame.YSplitOperator.FilterType=item.FilterType;
5079
5085
  if (!isNaN(item.TitleHeight)) chart.Frame.SubFrame[index].Frame.ChartBorder.TitleHeight=item.TitleHeight;
5080
5086
  if (IFrameSplitOperator.IsBool(item.IsDrawTitleBG)) chart.Frame.SubFrame[index].Frame.IsDrawTitleBG=item.IsDrawTitleBG;
5081
5087
  if (IFrameSplitOperator.IsBool(item.IsShowNameArrow)) chart.Frame.SubFrame[index].Frame.IsShowNameArrow=item.IsShowNameArrow;
@@ -14946,6 +14952,9 @@ function AverageWidthFrame()
14946
14952
  for(var i=this.HorizontalInfo.length-1; i>=0; --i) //从上往下画分割线
14947
14953
  {
14948
14954
  var item=this.HorizontalInfo[i];
14955
+ if (!IFrameSplitOperator.IsNumber(item.Value)) continue;
14956
+ if (item.Value>this.HorizontalMax || item.Value<this.HorizontalMin) continue;
14957
+
14949
14958
  var y=this.GetYFromData(item.Value);
14950
14959
  if (y!=null && yPrev!=null && Math.abs(y-yPrev)<this.MinYDistance) continue; //两个坐标在近了 就不画了
14951
14960
 
@@ -49519,7 +49528,7 @@ function IFrameSplitOperator()
49519
49528
  return true;
49520
49529
  }
49521
49530
 
49522
- this.Filter = function (aryInfo,keepZero)
49531
+ this.Filter=function(aryInfo, keepZero, filterType)
49523
49532
  {
49524
49533
  if (this.SplitCount <= 0 || aryInfo.length <= 0 || aryInfo.length <= this.SplitCount) return aryInfo;
49525
49534
 
@@ -49527,17 +49536,28 @@ function IFrameSplitOperator()
49527
49536
  var filter = parseInt(aryInfo.length / this.SplitCount);
49528
49537
  if (filter <= 1) filter = 2;
49529
49538
  var data = [];
49530
- for (var i = 0; i < aryInfo.length; i += filter)
49539
+ if (filterType==1)
49531
49540
  {
49532
- if (i + filter >= aryInfo.length && i != aryInfo.length - 1) //最后一个数据放进去
49541
+ for (var i = 0; i < aryInfo.length; i += filter)
49533
49542
  {
49534
- data.push(aryInfo[aryInfo.length - 1]);
49543
+ data.push(aryInfo[i]);
49535
49544
  }
49536
- else
49545
+ }
49546
+ else
49547
+ {
49548
+ for (var i = 0; i < aryInfo.length; i += filter)
49537
49549
  {
49538
- data.push(aryInfo[i]);
49550
+ if (i + filter >= aryInfo.length && i != aryInfo.length - 1) //最后一个数据放进去
49551
+ {
49552
+ data.push(aryInfo[aryInfo.length - 1]);
49553
+ }
49554
+ else
49555
+ {
49556
+ data.push(aryInfo[i]);
49557
+ }
49539
49558
  }
49540
49559
  }
49560
+
49541
49561
 
49542
49562
  if (this.SplitCount == 2 && data.length>2) //之显示第1个和最后一个刻度
49543
49563
  {
@@ -49575,7 +49595,7 @@ function IFrameSplitOperator()
49575
49595
  return data;
49576
49596
  }
49577
49597
 
49578
- this.RemoveZero = function (aryInfo) //移除小数后面多余的0
49598
+ this.RemoveZero=function(aryInfo) //移除小数后面多余的0
49579
49599
  {
49580
49600
  //所有的数字小数点后面都0,才会去掉
49581
49601
  var isAllZero = [true, true, true, true];
@@ -51143,6 +51163,7 @@ function FrameSplitY()
51143
51163
  this.FloatPrecision = 2; //坐标小数位数(默认2)
51144
51164
  this.FLOATPRECISION_RANGE=[1,0.1,0.01,0.001,0.0001];
51145
51165
  this.SplitType=0; //0=自动分割 1=固定分割 2=堆积图(0-100)
51166
+ this.FilterType=0; //自动分割过滤算法
51146
51167
  this.DefaultSplitType=0;
51147
51168
  this.Custom=[]; //[{Type:0}]; 定制刻度
51148
51169
  this.DefaultYMaxMin; //{ Max:null, Min:null }; //指定最大,最小, Y轴范围必须比最大值大, 比最小值小
@@ -51334,7 +51355,8 @@ function FrameSplitY()
51334
51355
  this.FilterIgnoreYValue();
51335
51356
 
51336
51357
  this.CustomCoordinate();
51337
- if (this.SplitType!=1) this.Frame.HorizontalInfo = this.Filter(this.Frame.HorizontalInfo,(splitData.Max>0 && splitData.Min<0));
51358
+ if (this.SplitType!=1)
51359
+ this.Frame.HorizontalInfo = this.Filter(this.Frame.HorizontalInfo,(splitData.Max>0 && splitData.Min<0), this.FilterType);
51338
51360
 
51339
51361
  this.RightFrameSplitY();
51340
51362
  this.MainOverlayFrameSplitY(); //主图Y轴绑定叠加Y轴坐标
@@ -51974,6 +51996,8 @@ function FrameSplitMinutePriceY()
51974
51996
 
51975
51997
  this.CustomCoordinate();
51976
51998
 
51999
+ this.ReservedHeight({ Max:this.Frame.HorizontalMax, Min:this.Frame.HorizontalMin }); //预留高度
52000
+
51977
52001
  if (this.GetEventCallback)
51978
52002
  {
51979
52003
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);
@@ -57014,6 +57038,7 @@ function DynamicTitleData(data,name,color)
57014
57038
  this.FloatPrecision=2; //小数位数
57015
57039
  this.IsShow=true; //是否显示
57016
57040
  this.Callback; //绘制标题回调
57041
+ this.ExtendData; //扩展数据
57017
57042
  }
57018
57043
 
57019
57044
  function DynamicChartTitlePainting()
@@ -57770,6 +57795,10 @@ function DynamicChartTitlePainting()
57770
57795
  if (data.Out) return data.Out;
57771
57796
  }
57772
57797
  }
57798
+
57799
+ if (item.DataType=="ChartBand") //默认不输出
57800
+ return null;
57801
+
57773
57802
 
57774
57803
  var arrowSuper=null; //独立颜色
57775
57804
 
@@ -94576,8 +94605,8 @@ function FuturesTimeData()
94576
94605
  [
94577
94606
  { Value: 900, Text: '9:00' },
94578
94607
  { Value: 1000, Text: '10:00' },
94579
- { Value: 1330, Text: '13:30' },
94580
- { Value: 1430, Text: '14:30' },
94608
+ { Value: 1100, Text: '11:00' },
94609
+ { Value: 1400, Text: '14:00' },
94581
94610
  { Value: 1500, Text: '15:00' },
94582
94611
  ],
94583
94612
  Min: //最小模式
@@ -100172,7 +100201,7 @@ function JSAlgorithm(errorHandler,symbolData)
100172
100201
  }
100173
100202
  else
100174
100203
  {
100175
- var i=0;
100204
+ var i=n;
100176
100205
  var lastData=null;
100177
100206
  for(;i<data.length; ++i)
100178
100207
  {
@@ -117598,6 +117627,12 @@ function ScriptIndex(name,script,args,option)
117598
117627
 
117599
117628
  if (IFrameSplitOperator.IsBool(varItem.IsFirstDraw)) chart.IsDrawFirst=varItem.IsFirstDraw;
117600
117629
 
117630
+ var titleIndex=windowIndex+1;
117631
+ var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);
117632
+ titleData.DataType=chart.ClassName;
117633
+ titleData.ExtendData={ Color:[chart.FirstColor, chart.SecondColor] };
117634
+ hqChart.TitlePaint[titleIndex].Data[id]=titleData;
117635
+
117601
117636
  this.SetChartIndexName(chart);
117602
117637
  hqChart.ChartPaint.push(chart);
117603
117638
  }
@@ -134312,7 +134347,7 @@ function ScrollBarBGChart()
134312
134347
 
134313
134348
 
134314
134349
 
134315
- var HQCHART_VERSION="1.1.13465";
134350
+ var HQCHART_VERSION="1.1.13477";
134316
134351
 
134317
134352
  function PrintHQChartVersion()
134318
134353
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.13465";
8
+ var HQCHART_VERSION="1.1.13477";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -4497,6 +4497,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4497
4497
  chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;
4498
4498
  chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;
4499
4499
  }
4500
+ if (IFrameSplitOperator.IsNumber(item.FilterType)) subFrame.YSplitOperator.FilterType=item.FilterType;
4501
+
4500
4502
  if (!isNaN(item.Height)) chart.Frame.SubFrame[i].Height = item.Height;
4501
4503
  if (item.IsShowLeftText===false || item.IsShowLeftText===true)
4502
4504
  {
@@ -4975,6 +4977,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4975
4977
  chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;
4976
4978
  chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;
4977
4979
  }
4980
+ if (IFrameSplitOperator.IsNumber(item.FilterType)) subFrame.YSplitOperator.FilterType=item.FilterType;
4981
+
4978
4982
  if (item.IsShowLeftText==false)
4979
4983
  {
4980
4984
  chart.Frame.SubFrame[i].Frame.IsShowYText[0]=item.IsShowLeftText;
@@ -5004,6 +5008,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5004
5008
  if (IFrameSplitOperator.IsNumber(item.CloseBeforeButton)) chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;
5005
5009
 
5006
5010
  if (item.ClientBGColor) subFrame.ClientBGColor=item.ClientBGColor;
5011
+ if (!IFrameSplitOperator.IsUndefined(item.HorizontalReserved)) subFrame.HorizontalReserved=item.HorizontalReserved;
5007
5012
  }
5008
5013
 
5009
5014
  chart.UpdateXShowText();
@@ -5120,6 +5125,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5120
5125
  if (IFrameSplitOperator.IsBool(item.TitleWindow)) frame.TitleWindow=item.TitleWindow;
5121
5126
 
5122
5127
  if (IFrameSplitOperator.IsNumber(item.YSplitType)) chart.Frame.SubFrame[index].Frame.YSplitOperator.SplitType=item.YSplitType;
5128
+ if (IFrameSplitOperator.IsNumber(item.FilterType)) chart.Frame.SubFrame[index].Frame.YSplitOperator.FilterType=item.FilterType;
5123
5129
  if (!isNaN(item.TitleHeight)) chart.Frame.SubFrame[index].Frame.ChartBorder.TitleHeight=item.TitleHeight;
5124
5130
  if (IFrameSplitOperator.IsBool(item.IsDrawTitleBG)) chart.Frame.SubFrame[index].Frame.IsDrawTitleBG=item.IsDrawTitleBG;
5125
5131
  if (IFrameSplitOperator.IsBool(item.IsShowNameArrow)) chart.Frame.SubFrame[index].Frame.IsShowNameArrow=item.IsShowNameArrow;
@@ -14990,6 +14996,9 @@ function AverageWidthFrame()
14990
14996
  for(var i=this.HorizontalInfo.length-1; i>=0; --i) //从上往下画分割线
14991
14997
  {
14992
14998
  var item=this.HorizontalInfo[i];
14999
+ if (!IFrameSplitOperator.IsNumber(item.Value)) continue;
15000
+ if (item.Value>this.HorizontalMax || item.Value<this.HorizontalMin) continue;
15001
+
14993
15002
  var y=this.GetYFromData(item.Value);
14994
15003
  if (y!=null && yPrev!=null && Math.abs(y-yPrev)<this.MinYDistance) continue; //两个坐标在近了 就不画了
14995
15004
 
@@ -49563,7 +49572,7 @@ function IFrameSplitOperator()
49563
49572
  return true;
49564
49573
  }
49565
49574
 
49566
- this.Filter = function (aryInfo,keepZero)
49575
+ this.Filter=function(aryInfo, keepZero, filterType)
49567
49576
  {
49568
49577
  if (this.SplitCount <= 0 || aryInfo.length <= 0 || aryInfo.length <= this.SplitCount) return aryInfo;
49569
49578
 
@@ -49571,17 +49580,28 @@ function IFrameSplitOperator()
49571
49580
  var filter = parseInt(aryInfo.length / this.SplitCount);
49572
49581
  if (filter <= 1) filter = 2;
49573
49582
  var data = [];
49574
- for (var i = 0; i < aryInfo.length; i += filter)
49583
+ if (filterType==1)
49575
49584
  {
49576
- if (i + filter >= aryInfo.length && i != aryInfo.length - 1) //最后一个数据放进去
49585
+ for (var i = 0; i < aryInfo.length; i += filter)
49577
49586
  {
49578
- data.push(aryInfo[aryInfo.length - 1]);
49587
+ data.push(aryInfo[i]);
49579
49588
  }
49580
- else
49589
+ }
49590
+ else
49591
+ {
49592
+ for (var i = 0; i < aryInfo.length; i += filter)
49581
49593
  {
49582
- data.push(aryInfo[i]);
49594
+ if (i + filter >= aryInfo.length && i != aryInfo.length - 1) //最后一个数据放进去
49595
+ {
49596
+ data.push(aryInfo[aryInfo.length - 1]);
49597
+ }
49598
+ else
49599
+ {
49600
+ data.push(aryInfo[i]);
49601
+ }
49583
49602
  }
49584
49603
  }
49604
+
49585
49605
 
49586
49606
  if (this.SplitCount == 2 && data.length>2) //之显示第1个和最后一个刻度
49587
49607
  {
@@ -49619,7 +49639,7 @@ function IFrameSplitOperator()
49619
49639
  return data;
49620
49640
  }
49621
49641
 
49622
- this.RemoveZero = function (aryInfo) //移除小数后面多余的0
49642
+ this.RemoveZero=function(aryInfo) //移除小数后面多余的0
49623
49643
  {
49624
49644
  //所有的数字小数点后面都0,才会去掉
49625
49645
  var isAllZero = [true, true, true, true];
@@ -51187,6 +51207,7 @@ function FrameSplitY()
51187
51207
  this.FloatPrecision = 2; //坐标小数位数(默认2)
51188
51208
  this.FLOATPRECISION_RANGE=[1,0.1,0.01,0.001,0.0001];
51189
51209
  this.SplitType=0; //0=自动分割 1=固定分割 2=堆积图(0-100)
51210
+ this.FilterType=0; //自动分割过滤算法
51190
51211
  this.DefaultSplitType=0;
51191
51212
  this.Custom=[]; //[{Type:0}]; 定制刻度
51192
51213
  this.DefaultYMaxMin; //{ Max:null, Min:null }; //指定最大,最小, Y轴范围必须比最大值大, 比最小值小
@@ -51378,7 +51399,8 @@ function FrameSplitY()
51378
51399
  this.FilterIgnoreYValue();
51379
51400
 
51380
51401
  this.CustomCoordinate();
51381
- if (this.SplitType!=1) this.Frame.HorizontalInfo = this.Filter(this.Frame.HorizontalInfo,(splitData.Max>0 && splitData.Min<0));
51402
+ if (this.SplitType!=1)
51403
+ this.Frame.HorizontalInfo = this.Filter(this.Frame.HorizontalInfo,(splitData.Max>0 && splitData.Min<0), this.FilterType);
51382
51404
 
51383
51405
  this.RightFrameSplitY();
51384
51406
  this.MainOverlayFrameSplitY(); //主图Y轴绑定叠加Y轴坐标
@@ -52018,6 +52040,8 @@ function FrameSplitMinutePriceY()
52018
52040
 
52019
52041
  this.CustomCoordinate();
52020
52042
 
52043
+ this.ReservedHeight({ Max:this.Frame.HorizontalMax, Min:this.Frame.HorizontalMin }); //预留高度
52044
+
52021
52045
  if (this.GetEventCallback)
52022
52046
  {
52023
52047
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);
@@ -57058,6 +57082,7 @@ function DynamicTitleData(data,name,color)
57058
57082
  this.FloatPrecision=2; //小数位数
57059
57083
  this.IsShow=true; //是否显示
57060
57084
  this.Callback; //绘制标题回调
57085
+ this.ExtendData; //扩展数据
57061
57086
  }
57062
57087
 
57063
57088
  function DynamicChartTitlePainting()
@@ -57814,6 +57839,10 @@ function DynamicChartTitlePainting()
57814
57839
  if (data.Out) return data.Out;
57815
57840
  }
57816
57841
  }
57842
+
57843
+ if (item.DataType=="ChartBand") //默认不输出
57844
+ return null;
57845
+
57817
57846
 
57818
57847
  var arrowSuper=null; //独立颜色
57819
57848
 
@@ -94620,8 +94649,8 @@ function FuturesTimeData()
94620
94649
  [
94621
94650
  { Value: 900, Text: '9:00' },
94622
94651
  { Value: 1000, Text: '10:00' },
94623
- { Value: 1330, Text: '13:30' },
94624
- { Value: 1430, Text: '14:30' },
94652
+ { Value: 1100, Text: '11:00' },
94653
+ { Value: 1400, Text: '14:00' },
94625
94654
  { Value: 1500, Text: '15:00' },
94626
94655
  ],
94627
94656
  Min: //最小模式
@@ -100216,7 +100245,7 @@ function JSAlgorithm(errorHandler,symbolData)
100216
100245
  }
100217
100246
  else
100218
100247
  {
100219
- var i=0;
100248
+ var i=n;
100220
100249
  var lastData=null;
100221
100250
  for(;i<data.length; ++i)
100222
100251
  {
@@ -117642,6 +117671,12 @@ function ScriptIndex(name,script,args,option)
117642
117671
 
117643
117672
  if (IFrameSplitOperator.IsBool(varItem.IsFirstDraw)) chart.IsDrawFirst=varItem.IsFirstDraw;
117644
117673
 
117674
+ var titleIndex=windowIndex+1;
117675
+ var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);
117676
+ titleData.DataType=chart.ClassName;
117677
+ titleData.ExtendData={ Color:[chart.FirstColor, chart.SecondColor] };
117678
+ hqChart.TitlePaint[titleIndex].Data[id]=titleData;
117679
+
117645
117680
  this.SetChartIndexName(chart);
117646
117681
  hqChart.ChartPaint.push(chart);
117647
117682
  }
@@ -138253,7 +138288,7 @@ function HQChartScriptWorker()
138253
138288
 
138254
138289
 
138255
138290
 
138256
- var HQCHART_VERSION="1.1.13465";
138291
+ var HQCHART_VERSION="1.1.13477";
138257
138292
 
138258
138293
  function PrintHQChartVersion()
138259
138294
  {