hqchart 1.1.15235 → 1.1.15245

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.
@@ -1184,7 +1184,7 @@ for(var i=0;i<chart.Frame.SubFrame.length;++i){chart.Frame.SubFrame[i].Frame.Cha
1184
1184
  this.SetPressKeyboardConfig=function(chart,option){if(!chart||!option)return;if(IFrameSplitOperator.IsBool(option.PauseUpdate))chart.PressKeyboardConfig.PauseUpdate=option.PauseUpdate;};//缺口设置 KLine:{ PriceGap:{ Enable, Count } }
1185
1185
  this.SetPriceGapConfig=function(chart,option){if(!option||!option.PriceGap)return;var klineChart=chart.ChartPaint[0];if(!klineChart)return;var item=option.PriceGap;if(IFrameSplitOperator.IsBool(item.Enable))klineChart.PriceGap.Enable=item.Enable;if(IFrameSplitOperator.IsNumber(item.Count))klineChart.PriceGap.Count=item.Count;};//历史K线图
1186
1186
  this.CreateKLineChartContainer=function(option){var _this=this;var chart=null;if(option.Type==="历史K线图横屏")chart=new KLineChartHScreenContainer(this.CanvasElement);else chart=new KLineChartContainer(this.CanvasElement,this.OffscreenCanvasElement,this.CacheCanvasElement);chart.GetExtraCanvas=function(name){return _this.GetExtraCanvas(name);};var extraElement=this.GetExtraCanvas(JSChart.CorssCursorCanvasKey);if(extraElement)chart.SetCorssCursorElement(extraElement);if(option.EventCallback)this.SetEventCallback(chart,option.EventCallback);if(option.NetworkFilter)chart.NetworkFilter=option.NetworkFilter;var pixelRatio=GetDevicePixelRatio();//右键菜单
1187
- if(IFrameSplitOperator.IsBool(option.IsShowRightMenu))chart.IsShowRightMenu=option.IsShowRightMenu;if(option.ScriptError)chart.ScriptErrorCallback=option.ScriptError;if(option.EnableScrollUpDown==true)chart.EnableScrollUpDown=option.EnableScrollUpDown;if(option.DisableMouse==true)chart.DisableMouse=option.DisableMouse;if(option.TouchMoveMinAngle)chart.TouchMoveMinAngle=option.TouchMoveMinAngle;if(option.EnableZoomUpDown)chart.EnableZoomUpDown=option.EnableZoomUpDown;if(IFrameSplitOperator.IsString(option.SplashTitle))chart.LoadDataSplashTitle=option.SplashTitle;if(IFrameSplitOperator.IsBool(option.EnableZoomIndexWindow))chart.EnableZoomIndexWindow=option.EnableZoomIndexWindow;if(IFrameSplitOperator.IsBool(option.IsDrawPictureXY))chart.IsDrawPictureXY=option.IsDrawPictureXY;if(IFrameSplitOperator.IsNumber(option.CtrlMoveStep))chart.CtrlMoveStep=option.CtrlMoveStep;if(IFrameSplitOperator.IsNumber(option.ShiftMoveStep))chart.ShiftMoveStep=option.ShiftMoveStep;if(IFrameSplitOperator.IsBool(option.EnableIndexChartDrag))chart.EnableIndexChartDrag=option.EnableIndexChartDrag;if(IFrameSplitOperator.IsBool(option.EnableVerifyRecvData))chart.EnableVerifyRecvData=option.EnableVerifyRecvData;if(option.GlobalOption){var item=option.GlobalOption;if(IFrameSplitOperator.IsBool(item.IsValueFullRange))chart.GlobalOption.IsValueFullRange=item.IsValueFullRange;if(item.SelectedBorder){var subItem=item.SelectedBorder;if(IFrameSplitOperator.IsNumber(subItem.Mode))chart.GlobalOption.SelectedBorder.Mode=subItem.Mode;}}if(option.EnableYDrag){var item=option.EnableYDrag;if(IFrameSplitOperator.IsBool(item.Left))chart.EnableYDrag.Left=item.Left;if(IFrameSplitOperator.IsBool(item.Right))chart.EnableYDrag.Right=item.Right;if(IFrameSplitOperator.IsBool(item.Wheel))chart.EnableYDrag.Wheel=item.Wheel;if(IFrameSplitOperator.IsNumber(item.WheelYMove))chart.EnableYDrag.WheelYMove=item.WheelYMove;}if(option.EnableXDrag){var item=option.EnableXDrag;if(IFrameSplitOperator.IsBool(item.Bottom))chart.EnableXDrag.Bottom=item.Bottom;if(item.LButton&&IFrameSplitOperator.IsNumber(item.LButton.Type))chart.EnableXDrag.LButton.Type=item.LButton.Type;if(item.RButton&&IFrameSplitOperator.IsNumber(item.RButton.Type))chart.EnableXDrag.RButton.Type=item.RButton.Type;}if(option.KLineTooltip){var item=option.KLineTooltip;if(IFrameSplitOperator.IsBool(item.Enable))chart.KLineTooltipConfig.Enable=item.Enable;if(IFrameSplitOperator.IsBool(item.EnableKeyDown))chart.KLineTooltipConfig.EnableKeyDown=item.EnableKeyDown;}if(option.KLine)//k线图的属性设置
1187
+ if(IFrameSplitOperator.IsBool(option.IsShowRightMenu))chart.IsShowRightMenu=option.IsShowRightMenu;if(option.ScriptError)chart.ScriptErrorCallback=option.ScriptError;if(option.EnableScrollUpDown==true)chart.EnableScrollUpDown=option.EnableScrollUpDown;if(option.DisableMouse==true)chart.DisableMouse=option.DisableMouse;if(option.TouchMoveMinAngle)chart.TouchMoveMinAngle=option.TouchMoveMinAngle;if(option.EnableZoomUpDown)chart.EnableZoomUpDown=option.EnableZoomUpDown;if(IFrameSplitOperator.IsString(option.SplashTitle))chart.LoadDataSplashTitle=option.SplashTitle;if(IFrameSplitOperator.IsBool(option.EnableZoomIndexWindow))chart.EnableZoomIndexWindow=option.EnableZoomIndexWindow;if(IFrameSplitOperator.IsBool(option.IsDrawPictureXY))chart.IsDrawPictureXY=option.IsDrawPictureXY;if(IFrameSplitOperator.IsNumber(option.CtrlMoveStep))chart.CtrlMoveStep=option.CtrlMoveStep;if(IFrameSplitOperator.IsNumber(option.ShiftMoveStep))chart.ShiftMoveStep=option.ShiftMoveStep;if(IFrameSplitOperator.IsBool(option.EnableIndexChartDrag))chart.EnableIndexChartDrag=option.EnableIndexChartDrag;if(IFrameSplitOperator.IsBool(option.EnableVerifyRecvData))chart.EnableVerifyRecvData=option.EnableVerifyRecvData;if(option.GlobalOption){var item=option.GlobalOption;if(IFrameSplitOperator.IsBool(item.IsValueFullRange))chart.GlobalOption.IsValueFullRange=item.IsValueFullRange;if(IFrameSplitOperator.IsBool(item.EnableXShortDate))chart.GlobalOption.EnableXShortDate=item.EnableXShortDate;if(item.SelectedBorder){var subItem=item.SelectedBorder;if(IFrameSplitOperator.IsNumber(subItem.Mode))chart.GlobalOption.SelectedBorder.Mode=subItem.Mode;}}if(option.EnableYDrag){var item=option.EnableYDrag;if(IFrameSplitOperator.IsBool(item.Left))chart.EnableYDrag.Left=item.Left;if(IFrameSplitOperator.IsBool(item.Right))chart.EnableYDrag.Right=item.Right;if(IFrameSplitOperator.IsBool(item.Wheel))chart.EnableYDrag.Wheel=item.Wheel;if(IFrameSplitOperator.IsNumber(item.WheelYMove))chart.EnableYDrag.WheelYMove=item.WheelYMove;}if(option.EnableXDrag){var item=option.EnableXDrag;if(IFrameSplitOperator.IsBool(item.Bottom))chart.EnableXDrag.Bottom=item.Bottom;if(item.LButton&&IFrameSplitOperator.IsNumber(item.LButton.Type))chart.EnableXDrag.LButton.Type=item.LButton.Type;if(item.RButton&&IFrameSplitOperator.IsNumber(item.RButton.Type))chart.EnableXDrag.RButton.Type=item.RButton.Type;}if(option.KLineTooltip){var item=option.KLineTooltip;if(IFrameSplitOperator.IsBool(item.Enable))chart.KLineTooltipConfig.Enable=item.Enable;if(IFrameSplitOperator.IsBool(item.EnableKeyDown))chart.KLineTooltipConfig.EnableKeyDown=item.EnableKeyDown;}if(option.KLine)//k线图的属性设置
1188
1188
  {var item=option.KLine;if(option.KLine.DragMode>=0)chart.DragMode=option.KLine.DragMode;if(option.KLine.Right>=0)chart.Right=option.KLine.Right;if(option.KLine.Period>=0)chart.Period=option.KLine.Period;if(option.KLine.MaxReqeustDataCount>0)chart.MaxRequestDataCount=option.KLine.MaxReqeustDataCount;//兼容老版本
1189
1189
  if(option.KLine.MaxRequestDataCount>0)chart.MaxRequestDataCount=option.KLine.MaxRequestDataCount;if(option.KLine.Info&&option.KLine.Info.length>0)chart.SetKLineInfo(option.KLine.Info,false);if(IFrameSplitOperator.IsBool(item.IsShowTooltip))chart.IsShowTooltip=item.IsShowTooltip;if(option.KLine.MaxRequestMinuteDayCount>0)chart.MaxRequestMinuteDayCount=option.KLine.MaxRequestMinuteDayCount;if(option.KLine.DrawType)chart.KLineDrawType=option.KLine.DrawType;if(option.KLine.FirstShowDate>19910101)chart.CustomShow={Date:option.KLine.FirstShowDate,PageSize:option.KLine.PageSize};//!!已弃用 新的格式"CustomShow"
1190
1190
  if(option.KLine.RightSpaceCount>0)chart.RightSpaceCount=option.KLine.RightSpaceCount;if(option.KLine.ZoomType>0)chart.ZoomType=option.KLine.ZoomType;if(option.KLine.DataWidth>=1)chart.KLineSize={DataWidth:option.KLine.DataWidth};if(IFrameSplitOperator.IsNumber(option.KLine.RightFormula))chart.RightFormula=option.KLine.RightFormula;}//自定义显示位置
@@ -1914,8 +1914,8 @@ LockCorssCursor:{X:{Enable:false}},CorssCursorStatus:{Value:null},//十字光标
1914
1914
  //图形中的单元选中状态
1915
1915
  MapIndexChartCache:new _map2.default(),//key 指标GUID
1916
1916
  TradeStatus:null,//当前交易状态 { Date, Time:数据最后更新的时间, Status: }
1917
- LatestPoint:null//最新的点位置 { X:, Y: }
1918
- };this.VerticalDrag;//通过X轴左右拖动数据(手势才有)
1917
+ LatestPoint:null,//最新的点位置 { X:, Y: }
1918
+ EnableXShortDate:true};this.VerticalDrag;//通过X轴左右拖动数据(手势才有)
1919
1919
  this.EnableVerticalDrag=false;//十字光标长留(手势才有)
1920
1920
  this.ClickModel={IsShowCorssCursor:false,PreventHide:false,IsClickButton:false,AutoClose:{Enable:false,Timer:null,DelayTime:3000}};//PreventHide 阻止隐藏十字光标 AutoClose=延迟关闭
1921
1921
  this.EnableClickModel=false;//标题栏显示最新数据
@@ -2018,7 +2018,7 @@ if(drag.CurrentMove){drag.CurrentMove.X=e.clientX;drag.CurrentMove.Y=e.clientY;}
2018
2018
  JSConsole.Chart.Log("[JSChartContainer::DocOnMouseMove] YDrag ",this.YDrag,yMove);this.OnZoomUpDownFrameY(this.YDrag,yMove);drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.IndexChartDrag&&this.IndexChartDrag.SelectedChart)//选中图形移动
2019
2019
  {if(Math.abs(drag.LastMove.Y-e.clientY)<2&&Math.abs(drag.LastMove.X-e.clientX)<2)return;var chartMove=this.GetExtendChartByClassName("DragMovePaint");if(chartMove&&chartMove.Chart){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;chartMove.Chart.Point={X:x,Y:y};chartMove.Chart.IsShow=true;chartMove.Chart.Info=this.IndexChartDrag.Info;this.DrawDynamicInfo();}this.IndexChartDrag.LastMove.X=x;this.IndexChartDrag.LastMove.Y=y;drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.CustomChartDrag){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var sendData={X:x,Y:y,e:e,ChartDrag:this.CustomChartDrag,Drag:drag};this.TryDragMove_CustomChartDrag(sendData);}else if(this.CurrentChartDrawPicture&&this.CurrentChartDrawPicture.EnableMove===true)//画图工具移动
2020
2020
  {var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==1||drawPicture.Status==2){if(Math.abs(drag.LastMove.X-e.clientX)<5&&Math.abs(drag.LastMove.Y-e.clientY)<5)return;if(this.SetChartDrawPictureSecondPoint(e.clientX,e.clientY)){this.DrawDynamicInfo();}}else if(drawPicture.Status==3){if(this.SetChartDrawPictureThirdPoint(e.clientX,e.clientY)){this.DrawDynamicInfo();}}else if(drawPicture.Status==20)//画图工具移动
2021
- {if(Math.abs(drag.LastMove.X-e.clientX)<5&&Math.abs(drag.LastMove.Y-e.clientY)<1)return;if(this.SelectChartDrawPicture){if(this.SelectChartDrawPicture.EnableCtrlMove){if(!e.ctrlKey)return;}}if(this.SelectChartDrawPicture&&this.SelectChartDrawPicture.DragInfo)this.SelectChartDrawPicture.DragInfo.Move={X:e.clientX,Y:e.client};if(this.MoveChartDrawPicture(e.clientX-drag.LastMove.X,e.clientY-drag.LastMove.Y,false,drag)){this.DrawDynamicInfo();}}drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(drag.Click&&drag.Click.IsInFrameBottom){var dragType=this.GetDragXCoordinateType(e,"DocOnMouseMove");if(dragType==2)this.OnDragXCoordinateZoom(drag,{X:moveSetp,Y:moveSetpY},e);else if(dragType==1)this.OnDragXCoordinateKLine(drag,{X:moveSetp,Y:moveSetpY},e);}else if((bLButtonSelectRect||bRButtonSelectRect)&&!isDragSelectRect&&!isDragSubSelectRect&&!bShfitDragKLine)//左右键区间选择
2021
+ {if(Math.abs(drag.LastMove.X-e.clientX)<5&&Math.abs(drag.LastMove.Y-e.clientY)<1)return;if(this.SelectChartDrawPicture){if(this.SelectChartDrawPicture.EnableCtrlMove){if(!e.ctrlKey)return;}}if(this.SelectChartDrawPicture&&this.SelectChartDrawPicture.DragInfo)this.SelectChartDrawPicture.DragInfo.Move={X:e.clientX,Y:e.client};if(this.MoveChartDrawPicture(e.clientX-drag.LastMove.X,e.clientY-drag.LastMove.Y,false,drag)){this.DrawDynamicInfo();}else{return;}}drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(drag.Click&&drag.Click.IsInFrameBottom){var dragType=this.GetDragXCoordinateType(e,"DocOnMouseMove");if(dragType==2)this.OnDragXCoordinateZoom(drag,{X:moveSetp,Y:moveSetpY},e);else if(dragType==1)this.OnDragXCoordinateKLine(drag,{X:moveSetp,Y:moveSetpY},e);}else if((bLButtonSelectRect||bRButtonSelectRect)&&!isDragSelectRect&&!isDragSubSelectRect&&!bShfitDragKLine)//左右键区间选择
2022
2022
  {var yMoveSetp=Math.abs(drag.LastMove.Y-e.clientY);if(moveSetp<5&&yMoveSetp<5)return;this.SetCursor({Cursor:"default"});var ptStart=this.PointAbsoluteToRelative(drag.Click.X,drag.Click.Y);var ptEnd=this.PointAbsoluteToRelative(e.clientX,e.clientY);this.ShowDragSelectRect(ptStart,ptEnd);drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.DragMode==1||isDragSelectRect||isDragSubSelectRect)//数据上下左右拖拽 区间选择框左右拖动
2023
2023
  {if(this.DataMoveConfig.Mouse.EnableLR)this.OnDragMode_One({X:moveSetp,Y:moveSetpY},e);}};//X轴坐标拖动 缩放K线
2024
2024
  this.OnDragXCoordinateZoom=function(drag,moveData,e){var moveSetp=moveData.X;var moveSetpY=moveData.Y;if(moveSetp<5)return;var isLeft=true;if(drag.LastMove.X<e.clientX)isLeft=false;//右移数据
@@ -2389,7 +2389,7 @@ var pt=this.PointAbsoluteToRelative(x,y,isPhone);drawPicture.Point[2]=new Point(
2389
2389
  return true;};//xStep,yStep 移动的偏移量
2390
2390
  this.MoveChartDrawPicture=function(x,y,isPhone,drag){var drawPicture=this.CurrentChartDrawPicture;if(!drawPicture)return false;var pixelTatio=GetDevicePixelRatio();//x,y 需要乘以放大倍速
2391
2391
  if(isPhone)pixelTatio=1;var xStep=x*pixelTatio;var yStep=y*pixelTatio;//JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
2392
- drawPicture.Move(xStep,yStep,drag);return true;};this.FinishChartDrawPicturePoint=function(){var drawPicture=this.CurrentChartDrawPicture;if(!drawPicture)return false;if(drawPicture.PointCount!=drawPicture.Point.length)return false;if(drawPicture.ClassName=="ChartDrawRuler")//尺子不用保存的
2392
+ if(!drawPicture.Move(xStep,yStep,drag))return false;return true;};this.FinishChartDrawPicturePoint=function(){var drawPicture=this.CurrentChartDrawPicture;if(!drawPicture)return false;if(drawPicture.PointCount!=drawPicture.Point.length)return false;if(drawPicture.ClassName=="ChartDrawRuler")//尺子不用保存的
2393
2393
  {if(drawPicture.FinishedCallback)drawPicture.FinishedCallback(drawPicture);this.CurrentChartDrawPicture=null;return true;}drawPicture.PointMagnetKLine();drawPicture.Status=10;//完成
2394
2394
  drawPicture.PointToValue();this.ChartDrawPicture.push(drawPicture);this.CurrentChartDrawPicture=null;//通知上层画好了
2395
2395
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FINISH_DRAWPICTURE);//完成画图工具事件
@@ -2978,7 +2978,7 @@ this.ReDrawToolbar=false;}};//Y轴面积背景
2978
2978
  this.DrawCustomHorizontalArea=function(){if(this.IsMinSize)return;if(this.ChartBorder.IsShowTitleOnly)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.CustomHorizontalInfo))return;for(var i=0;i<this.CustomHorizontalInfo.length;++i){var item=this.CustomHorizontalInfo[i];if(item.Type==5)this.DrawCustomAreaItem(item);}};//画边框
2979
2979
  this.SuperDrawBorder=this.DrawBorder;this.DrawBorder=function(){if(!this.IsShowBorder)return;if(this.IsMinSize)return;this.SuperDrawBorder();if(this.Identify==1)//走势图和成交量中间用粗线分割开
2980
2980
  {var border=this.ChartBorder.GetBorder();var left=ToFixedPoint(border.Left);var top=ToFixedPoint(border.Top);var right=ToFixedPoint(border.Right);this.Canvas.strokeStyle=this.PenBorder;this.Canvas.beginPath();this.Canvas.moveTo(left,top);this.Canvas.lineTo(right,top);this.Canvas.save();this.Canvas.lineWidth=2*GetDevicePixelRatio();this.Canvas.stroke();this.Canvas.restore();}};this.DrawVolTitle=function(symbol){if(!MARKET_SUFFIX_NAME.IsShowMinuteVolTitle(symbol))return;if(this.Identify==1)//显示"成交量"
2981
- {var pixelRatio=GetDevicePixelRatio();var left=this.ChartBorder.GetLeft()+2*pixelRatio+this.YInsideOffset;var top=this.ChartBorder.GetTopEx()+2*pixelRatio;this.Canvas.textAlign='left';this.Canvas.textBaseline='top';if(g_JSChartResource.Minute.VolBarColor||g_JSChartResource.Minute.VolTitleColor){if(g_JSChartResource.Minute.VolBarColor)this.Canvas.fillStyle=g_JSChartResource.Minute.VolBarColor;else this.Canvas.fillStyle=g_JSChartResource.Minute.VolTitleColor;var languageID=this.YSplitOperator.LanguageID;var text=g_JSChartLocalization.GetText('MVol-Vol',languageID);this.Canvas.fillText(text,left,top);left+=this.Canvas.measureText(text).width;left+=6*GetDevicePixelRatio();}if(this.IsShowPositionTitle){text=g_JSChartLocalization.GetText('MVol-Position',languageID);this.Canvas.fillStyle=g_JSChartResource.Minute.PositionColor;this.Canvas.fillText(text,left,top);}}};this.DrawToolbar=function(){if(this.ToolbarButtonStyle==1)return;if(g_JSChartResource.IsDOMFrameToolbar===true)return;if(!this.DivFrameToolbar)return;this.DivFrameToolbar.Show(this.Identify);};//手绘,不用DOM,使用DOM太麻烦了
2981
+ {var pixelRatio=GetDevicePixelRatio();var left=this.ChartBorder.GetLeft()+2*pixelRatio+this.YInsideOffset;var top=this.ChartBorder.GetTopEx()+2*pixelRatio;this.Canvas.textAlign='left';this.Canvas.textBaseline='top';if(g_JSChartResource.Minute.VolBarColor||g_JSChartResource.Minute.VolTitleColor){if(g_JSChartResource.Minute.VolBarColor)this.Canvas.fillStyle=g_JSChartResource.Minute.VolBarColor;else this.Canvas.fillStyle=g_JSChartResource.Minute.VolTitleColor;var languageID=this.YSplitOperator.LanguageID;var text=g_JSChartLocalization.GetText('MVol-Vol',languageID);this.Canvas.fillText(text,left,top);left+=this.Canvas.measureText(text).width;left+=6*GetDevicePixelRatio();}if(this.IsShowPositionTitle){text=g_JSChartLocalization.GetText('MVol-Position',languageID);this.Canvas.fillStyle=g_JSChartResource.Minute.PositionColor;this.Canvas.fillText(text,left,top);}}};this.DrawToolbar=function(){var bDraw=true;if(this.ToolbarButtonStyle==1)bDraw=false;if(g_JSChartResource.IsDOMFrameToolbar===true)bDraw=false;if(!this.DivFrameToolbar)return;if(!bDraw)this.HideToolbar();else this.DivFrameToolbar.Show(this.Identify);};//手绘,不用DOM,使用DOM太麻烦了
2982
2982
  this.DrawToolbarV2=function(moveonPoint,mouseStatus){if(g_JSChartResource.IsDOMFrameToolbar===true)return;if(this.Identify==0&&this.IsShowCloseButton)this.DrawCloseBeforeButton(moveonPoint,mouseStatus);//盘前集合竞价关闭按钮
2983
2983
  if(this.ChartBorder.TitleHeight<5)return;var aryButton=[];if(this.Identify!=0&&this.Identify!=1)//价格图和成交量图只有自定义按钮
2984
2984
  {if(this.CloseIndex)aryButton.push({ID:JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW,Style:this.CloseWindowButton});if(this.MaxMinWindow)aryButton.push({ID:JSCHART_BUTTON_ID.MAX_MIN_WINDOW,Style:this.MaxMinWindowButton});if(this.TitleWindow)aryButton.push({ID:JSCHART_BUTTON_ID.TITLE_WINDOW,Style:this.TitleWindowButton});if(this.ExportData)aryButton.push({ID:JSCHART_BUTTON_ID.EXPORT_DATA,Style:this.ExportDataButton});if(this.OverlayIndex)aryButton.push({ID:JSCHART_BUTTON_ID.OVERLAY_INDEX,Style:this.OverlayIndexButton});if(this.ChangeIndex)aryButton.push({ID:JSCHART_BUTTON_ID.CHANGE_INDEX,Style:this.ChangeIndexButton});if(this.ModifyIndex)aryButton.push({ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM,Style:this.ModifyIndexParamButton});if(this.AddIndexWindow)aryButton.push({ID:JSCHART_BUTTON_ID.ADD_INDEX_WINDOW,Style:this.AddIndexWindowButton});if(this.IndexHelp)aryButton.push({ID:JSCHART_BUTTON_ID.INDEX_HELP,Style:this.IndexHelpButton});}if(IFrameSplitOperator.IsNonEmptyArray(this.CustomToolbar)){for(var i=0;i<this.CustomToolbar.length;++i){var item=this.CustomToolbar[i];if(item.ID&&item.Style)aryButton.push({ID:item.ID,Style:item.Style,TooltipText:item.TooltipText,Data:item.Data});}}this.DrawTitleButton(aryButton,moveonPoint,mouseStatus);};this.DrawCloseBeforeButton=function(moveonPoint,mouseStatus){if(this.Identify!=0)return;var border=this.ChartBorder.GetBorder();if(border.DayBorder)return;if(this.ChartBorder.LeftExtendWidth<10)return;var rtButton={Left:border.Left,Top:border.TopEx,Width:this.BeforeCloseIcon.Size,Height:this.BeforeCloseIcon.Size};rtButton.Right=rtButton.Left+this.BeforeCloseIcon.Size;rtButton.Bottom=rtButton.Top+this.BeforeCloseIcon.Size;var item={Rect:rtButton,Name:"集合竞价关闭按钮",ID:JSCHART_BUTTON_ID.CLOSE_BEFOREOPEN_ID};var color=this.BeforeCloseIcon.Color;if(moveonPoint&&moveonPoint.X>=rtButton.Left&&moveonPoint.X<rtButton.Right&&moveonPoint.Y>=rtButton.Top&&moveonPoint.Y<=rtButton.Bottom){color=this.BeforeCloseIcon.MoveOnColor;if(mouseStatus)mouseStatus.MouseOnToolbar={Rect:rtButton,Item:item,Frame:this,Point:{X:moveonPoint.X,Y:moveonPoint.Y}};}var font=this.BeforeCloseIcon.Size+'px '+this.BeforeCloseIcon.Family;this.Canvas.font=font;this.Canvas.fillStyle=color;this.Canvas.textAlign='left';this.Canvas.textBaseline='top';this.Canvas.fillText(this.BeforeCloseIcon.Text,border.Left,border.TopEx);this.Buttons.push(item);};this.DrawMultiDayBeforeDataBG=function(border){var dayBorder=border.DayBorder;var top=ToFixedPoint(border.Top);var bottom=ToFixedPoint(border.Bottom);var height=bottom-top;this.Canvas.strokeStyle=this.MultiDayBorderPen;for(var i=0;i<dayBorder.length;++i){var drawCount=0;var item=dayBorder[i];var left=ToFixedPoint(item.Left);var right=ToFixedPoint(item.LeftEx);var width=right-left;if(width>3)//盘前
@@ -3076,7 +3076,7 @@ this.IsDrawTitleBG=false;this.IsShowNameArrow=false;this.CustomVerticalInfo=[];/
3076
3076
  // Type:1, Space: 第几个空白间距, Line:{ Color:线段颜色, Type:线段类型 0 直线 1 虚线 }
3077
3077
  this.DrawCustomVerticalEvent;this.RightSpaceCount=0;this.Logarithmic=null;//{Up:上部 , Donw:下部 , OpenPrice:第一个开盘价}
3078
3078
  this.CustomToolbar=[];//自定义toolbar按钮 { ID:, Html:, Click } 2.0版本 { ID, Style:{ 见 g_JSChartResource.Buttons.CloseWindow}}
3079
- this.ToolbarType=0;this.DrawToolbar=function(){if(this.ToolbarButtonStyle==1)return;if(g_JSChartResource.IsDOMFrameToolbar===true)return;if(!this.DivFrameToolbar)return;this.DivFrameToolbar.Show(this.Identify);};//手绘,不用DOM,使用DOM太麻烦了
3079
+ this.ToolbarType=0;this.DrawToolbar=function(){var bDraw=true;if(this.ToolbarButtonStyle==1)bDraw=false;if(g_JSChartResource.IsDOMFrameToolbar===true)bDraw=false;if(!this.DivFrameToolbar)return;if(!bDraw)this.HideToolbar();else this.DivFrameToolbar.Show(this.Identify);};//手绘,不用DOM,使用DOM太麻烦了
3080
3080
  this.DrawToolbarV2=function(moveonPoint,mouseStatus){if(g_JSChartResource.IsDOMFrameToolbar===true)return;this.Buttons=[];if(this.IsMinSize==true)return;if(this.ChartBorder.TitleHeight<5)return;var aryButton=[];//第1个窗口不能关闭
3081
3081
  if(this.CloseIndex&&this.Identify!==0)aryButton.push({ID:JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW,Style:this.CloseWindowButton});if(this.MaxMinWindow&&this.Identify!=0)aryButton.push({ID:JSCHART_BUTTON_ID.MAX_MIN_WINDOW,Style:this.MaxMinWindowButton});if(this.TitleWindow&&this.Identify!=0)aryButton.push({ID:JSCHART_BUTTON_ID.TITLE_WINDOW,Style:this.TitleWindowButton});if(this.ExportData)aryButton.push({ID:JSCHART_BUTTON_ID.EXPORT_DATA,Style:this.ExportDataButton});if(this.OverlayIndex)aryButton.push({ID:JSCHART_BUTTON_ID.OVERLAY_INDEX,Style:this.OverlayIndexButton});if(this.ChangeIndex)aryButton.push({ID:JSCHART_BUTTON_ID.CHANGE_INDEX,Style:this.ChangeIndexButton});if(this.ModifyIndex)aryButton.push({ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM,Style:this.ModifyIndexParamButton});if(this.AddIndexWindow)aryButton.push({ID:JSCHART_BUTTON_ID.ADD_INDEX_WINDOW,Style:this.AddIndexWindowButton});if(this.IndexHelp)aryButton.push({ID:JSCHART_BUTTON_ID.INDEX_HELP,Style:this.IndexHelpButton});if(IFrameSplitOperator.IsNonEmptyArray(this.CustomToolbar)){for(var i=0;i<this.CustomToolbar.length;++i){var item=this.CustomToolbar[i];if(item.ID&&item.Style){var btnItem={ID:item.ID,Style:item.Style,TooltipText:item.TooltipText,Data:item.Data};if(item.IsLeft===true)//左侧按钮
3082
3082
  {}else{aryButton.push(btnItem);//右侧按钮
@@ -4119,7 +4119,7 @@ else if(data.Direction==2)preItem.Y=yLow;//下
4119
4119
  //this.Canvas.fillRect(rect.X,rect.Y,rect.Width,rect.Height);
4120
4120
  this.TooltipRect.push([i,rect]);//[0]数据索引 [1]数据区域
4121
4121
  }}};this.DrawHLCArea=function(){var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;var borderLeft=border.TopEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var borderLeft=border.LeftEx;}var lowPath=new Path2D();var highPath=new Path2D();var closePath=new Path2D();var upArea=new Path2D();var downArea=new Path2D();var aryHighPoint=[];var aryLowPoint=[];var aryClosePoint=[];var bFirstPoint=true;if(this.Data.DataOffset>0)//把最左边的一个点连上
4122
- {var data=this.Data.Data[this.Data.DataOffset-1];if(data&&IFrameSplitOperator.IsNumber(data.Close)&&IFrameSplitOperator.IsNumber(data.High)&&IFrameSplitOperator.IsNumber(data.Low)){var x=borderLeft;var yClose=this.GetYFromData(data.Close,false);var yHigh=this.GetYFromData(data.High,false);var yLow=this.GetYFromData(data.Low,false);if(isHScreen){closePath.moveTo(yClose,x);highPath.moveTo(yHigh,x);lowPath.moveTo(yLow,x);upArea.moveTo(yHigh,x);downArea.moveTo(yLow,x);aryClosePoint.push({X:yClose,Y:x});aryHighPoint.push({X:yHigh,Y:x});aryLowPoint.push({X:yLow,Y:x});}else{closePath.moveTo(x,yClose);highPath.moveTo(x,yHigh);lowPath.moveTo(x,yLow);upArea.moveTo(x,yHigh);downArea.moveTo(x,yLow);aryClosePoint.push({X:x,Y:yClose});aryHighPoint.push({X:x,Y:yHigh});aryLowPoint.push({X:x,Y:yLow});}bFirstPoint=false;}}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;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||!IFrameSplitOperator.IsNumber(data.Close)||!IFrameSplitOperator.IsNumber(data.High)||!IFrameSplitOperator.IsNumber(data.Low))continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.GetYFromData(data.Close,false);var yHigh=this.GetYFromData(data.High,false);var yLow=this.GetYFromData(data.Low,false);this.DrawKRange.End=i;if(bFirstPoint){if(isHScreen){closePath.moveTo(yClose,x);highPath.moveTo(yHigh,x);lowPath.moveTo(yLow,x);upArea.moveTo(yHigh,x);downArea.moveTo(yLow,x);}else{closePath.moveTo(x,yClose);highPath.moveTo(x,yHigh);lowPath.moveTo(x,yLow);upArea.moveTo(x,yHigh);downArea.moveTo(x,yLow);}bFirstPoint=false;}else{if(isHScreen){closePath.lineTo(yClose,x);highPath.lineTo(yHigh,x);lowPath.lineTo(yLow,x);upArea.lineTo(yHigh,x);downArea.lineTo(yLow,x);}else{closePath.lineTo(x,yClose);highPath.lineTo(x,yHigh);lowPath.lineTo(x,yLow);upArea.lineTo(x,yHigh);downArea.lineTo(x,yLow);}}if(isHScreen){aryClosePoint.push({X:yClose,Y:x});aryHighPoint.push({X:yHigh,Y:x});aryLowPoint.push({X:yLow,Y:x});}else{aryClosePoint.push({X:x,Y:yClose});aryHighPoint.push({X:x,Y:yHigh});aryLowPoint.push({X:x,Y:yLow});}}if(bFirstPoint)return;for(var i=aryClosePoint.length-1;i>=0;--i){var item=aryClosePoint[i];upArea.lineTo(item.X,item.Y);downArea.lineTo(item.X,item.Y);}upArea.closePath();downArea.closePath();this.Canvas.fillStyle=this.HLCAreaConfig.UpAreaColor;this.Canvas.fill(upArea);this.Canvas.fillStyle=this.HLCAreaConfig.DownAreaColor;this.Canvas.fill(downArea);if(IFrameSplitOperator.IsNumber(this.HLCAreaConfig.LineWidth))this.Canvas.lineWidth=this.HLCAreaConfig.LineWidth;this.Canvas.strokeStyle=this.HLCAreaConfig.CloseLineColor;this.Canvas.stroke(closePath);this.Canvas.strokeStyle=this.HLCAreaConfig.HighLineColor;this.Canvas.stroke(highPath);this.Canvas.strokeStyle=this.HLCAreaConfig.LowLineColor;this.Canvas.stroke(lowPath);};this.ClipTickClient=function(isHScreen){var border=this.GetBorder();if(isHScreen==true){var left=this.ChartBorder.GetLeftEx();var right=this.ChartBorder.GetRightEx();var top=this.ChartBorder.GetTop();var bottom=this.ChartBorder.GetBottom();}else{var left=border.Left;var right=border.Right;var top=border.TopTitle;var bottom=border.Bottom;}this.Canvas.beginPath();this.Canvas.rect(left,top,right-left,bottom-top);this.Canvas.clip();};this.ClipWindow=function(isHScreen){if(isHScreen==true){var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRightEx();var top=this.ChartBorder.GetTop();var bottom=this.ChartBorder.GetBottom();}else{var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottom();}this.Canvas.beginPath();this.Canvas.rect(left,top,right-left,bottom-top);//this.Canvas.stroke(); //调试用
4122
+ {var data=this.Data.Data[this.Data.DataOffset-1];if(data&&IFrameSplitOperator.IsNumber(data.Close)&&IFrameSplitOperator.IsNumber(data.High)&&IFrameSplitOperator.IsNumber(data.Low)){var x=borderLeft;var yClose=this.GetYFromData(data.Close,false);var yHigh=this.GetYFromData(data.High,false);var yLow=this.GetYFromData(data.Low,false);if(isHScreen){closePath.moveTo(yClose,x);highPath.moveTo(yHigh,x);lowPath.moveTo(yLow,x);upArea.moveTo(yHigh,x);downArea.moveTo(yLow,x);aryClosePoint.push({X:yClose,Y:x});aryHighPoint.push({X:yHigh,Y:x});aryLowPoint.push({X:yLow,Y:x});}else{closePath.moveTo(x,yClose);highPath.moveTo(x,yHigh);lowPath.moveTo(x,yLow);upArea.moveTo(x,yHigh);downArea.moveTo(x,yLow);aryClosePoint.push({X:x,Y:yClose});aryHighPoint.push({X:x,Y:yHigh});aryLowPoint.push({X:x,Y:yLow});}bFirstPoint=false;}}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;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||!IFrameSplitOperator.IsNumber(data.Close)||!IFrameSplitOperator.IsNumber(data.High)||!IFrameSplitOperator.IsNumber(data.Low))continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.GetYFromData(data.Close,false);var yHigh=this.GetYFromData(data.High,false);var yLow=this.GetYFromData(data.Low,false);this.DrawKRange.End=i;if(bFirstPoint){if(isHScreen){closePath.moveTo(yClose,x);highPath.moveTo(yHigh,x);lowPath.moveTo(yLow,x);upArea.moveTo(yHigh,x);downArea.moveTo(yLow,x);}else{closePath.moveTo(x,yClose);highPath.moveTo(x,yHigh);lowPath.moveTo(x,yLow);upArea.moveTo(x,yHigh);downArea.moveTo(x,yLow);}bFirstPoint=false;}else{if(isHScreen){closePath.lineTo(yClose,x);highPath.lineTo(yHigh,x);lowPath.lineTo(yLow,x);upArea.lineTo(yHigh,x);downArea.lineTo(yLow,x);}else{closePath.lineTo(x,yClose);highPath.lineTo(x,yHigh);lowPath.lineTo(x,yLow);upArea.lineTo(x,yHigh);downArea.lineTo(x,yLow);}}if(isHScreen){aryClosePoint.push({X:yClose,Y:x});aryHighPoint.push({X:yHigh,Y:x});aryLowPoint.push({X:yLow,Y:x});}else{aryClosePoint.push({X:x,Y:yClose});aryHighPoint.push({X:x,Y:yHigh});aryLowPoint.push({X:x,Y:yLow});}}if(bFirstPoint)return;for(var i=aryClosePoint.length-1;i>=0;--i){var item=aryClosePoint[i];upArea.lineTo(item.X,item.Y);downArea.lineTo(item.X,item.Y);}upArea.closePath();downArea.closePath();this.Canvas.fillStyle=this.HLCAreaConfig.UpAreaColor;this.Canvas.fill(upArea);this.Canvas.fillStyle=this.HLCAreaConfig.DownAreaColor;this.Canvas.fill(downArea);if(IFrameSplitOperator.IsNumber(this.HLCAreaConfig.LineWidth))this.Canvas.lineWidth=this.HLCAreaConfig.LineWidth;this.Canvas.strokeStyle=this.HLCAreaConfig.CloseLineColor;this.Canvas.stroke(closePath);this.Canvas.strokeStyle=this.HLCAreaConfig.HighLineColor;this.Canvas.stroke(highPath);this.Canvas.strokeStyle=this.HLCAreaConfig.LowLineColor;this.Canvas.stroke(lowPath);};this.ClipTickClient=function(isHScreen){var border=this.GetBorder();if(isHScreen==true){var left=this.ChartBorder.GetLeftEx();var right=this.ChartBorder.GetRightEx();var top=this.ChartBorder.GetTop();var bottom=this.ChartBorder.GetBottom();}else{var left=border.Left;var right=border.Right;var top=border.TopTitle;var bottom=border.Bottom;}this.Canvas.beginPath();this.Canvas.rect(left,top,right-left,bottom-top);this.Canvas.clip();};this.ClipWindow=function(isHScreen){if(isHScreen==true){var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRightEx();var top=this.ChartBorder.GetTop();var bottom=this.ChartBorder.GetBottom();}else{var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var top=this.ChartBorder.GetTop();var bottom=this.ChartBorder.GetBottom();}this.Canvas.beginPath();this.Canvas.rect(left,top,right-left,bottom-top);//this.Canvas.stroke(); //调试用
4123
4123
  this.Canvas.clip();};this.ClipClient=function(isHScreen)//裁剪客户端
4124
4124
  {if(isHScreen==true){var left=this.ChartBorder.GetLeftEx();var right=this.ChartBorder.GetRightEx();var top=this.ChartBorder.GetTop();var bottom=this.ChartBorder.GetBottom();}else{var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();if(this.ChartBorder.BottomSpace>0)bottom+=1;if(this.DrawType==13)//需要显示文字,裁剪要大点
4125
4125
  {top=this.ChartBorder.GetTopTitle();bottom=this.ChartBorder.GetBottom();}}this.Canvas.beginPath();this.Canvas.rect(left,top,right-left,bottom-top);//this.Canvas.stroke(); //调试用
@@ -6004,8 +6004,9 @@ this.SplitDateTime=function()//根据时间分割
6004
6004
  {this.Frame.VerticalInfo=[];var itemWidth=this.Frame.DistanceWidth+this.Frame.DataWidth;var xOffset=this.Frame.Data.DataOffset;var xPointCount=this.Frame.XPointCount;var lastYear=null,lastMonth=null;var textDistance=0;var barDistance=0;for(var i=0,index=xOffset;i<xPointCount&&index<this.Frame.Data.Data.length;++i,++index){textDistance+=itemWidth;++barDistance;var infoData=null;if(i==0){var date=IFrameSplitOperator.FormatDateString(this.Frame.Data.Data[index].Date,'MM-DD');infoData={Value:index-xOffset,Text:date};}else if(textDistance>this.MinTextDistance&&barDistance>=this.MinBarDistance){var time=IFrameSplitOperator.FormatTimeString(this.Frame.Data.Data[index].Time);infoData={Value:index-xOffset,Text:time};}if(infoData){var info=new CoordinateInfo();info.Value=infoData.Value;if(this.ShowText)info.Message[0]=infoData.Text;if(info.Value==0)info.LineType=-1;//第1个分割线不画
6005
6005
  this.Frame.VerticalInfo.push(info);textDistance=0;barDistance=0;if(i==0)textDistance=-(this.MinTextDistance/2);}}};this.SplitSecond=function()//根据时间分割
6006
6006
  {this.Frame.VerticalInfo=[];var itemWidth=this.Frame.DistanceWidth+this.Frame.DataWidth;var xOffset=this.Frame.Data.DataOffset;var xPointCount=this.Frame.XPointCount;var textDistance=0;var barDistance=0;for(var i=0,index=xOffset;i<xPointCount&&index<this.Frame.Data.Data.length;++i,++index){textDistance+=itemWidth;++barDistance;var infoData=null;if(i==0){var date=IFrameSplitOperator.FormatDateString(this.Frame.Data.Data[index].Date,'MM-DD');infoData={Value:index-xOffset,Text:date};}else if(textDistance>this.MinTextDistance&&barDistance>=this.MinBarDistance){var time=IFrameSplitOperator.FormatTimeString(this.Frame.Data.Data[index].Time,"HH:MM:SS");infoData={Value:index-xOffset,Text:time};}if(infoData){var info=new CoordinateInfo();info.Value=infoData.Value;if(this.ShowText)info.Message[0]=infoData.Text;this.Frame.VerticalInfo.push(info);textDistance=0;barDistance=0;if(i==0)textDistance=-(this.MinTextDistance/2);}}};this.SplitMilliSecond=function(){this.Frame.VerticalInfo=[];var itemWidth=this.Frame.DistanceWidth+this.Frame.DataWidth;var xOffset=this.Frame.Data.DataOffset;var xPointCount=this.Frame.XPointCount;var textDistance=0;var barDistance=0;for(var i=0,index=xOffset;i<xPointCount&&index<this.Frame.Data.Data.length;++i,++index){textDistance+=itemWidth;++barDistance;var infoData=null;if(i==0){var date=IFrameSplitOperator.FormatDateString(this.Frame.Data.Data[index].Date,'HH:MM:SS.fff');infoData={Value:index-xOffset,Text:date};}else if(textDistance>this.MinTextDistance&&barDistance>=this.MinBarDistance){var time=IFrameSplitOperator.FormatTimeString(this.Frame.Data.Data[index].Time,"HH:MM:SS.fff");infoData={Value:index-xOffset,Text:time};}if(infoData){var info=new CoordinateInfo();info.Value=infoData.Value;if(this.ShowText)info.Message[0]=infoData.Text;this.Frame.VerticalInfo.push(info);textDistance=0;barDistance=0;if(i==0)textDistance=-(this.MinTextDistance/2);}}};this.SplitDate=function()//根据日期分割
6007
- {this.Frame.VerticalInfo=[];var xOffset=this.Frame.Data.DataOffset;var xPointCount=this.Frame.XPointCount;var lastYear=null,lastMonth=null;var minDistance=12;var monthCount=0;for(var i=0,index=xOffset,distance=minDistance;i<xPointCount&&index<this.Frame.Data.Data.length;++i,++index){var year=parseInt(this.Frame.Data.Data[index].Date/10000);var month=parseInt(this.Frame.Data.Data[index].Date/100)%100;if(lastMonth!=month)++monthCount;if(distance<minDistance||lastYear!=null&&lastYear==year&&lastMonth!=null&&lastMonth==month){lastMonth=month;++distance;continue;}var info=new CoordinateInfo();info.Value=index-xOffset;var text;if(lastYear==null||lastYear!=year){text=year.toString();}else if(lastMonth==null||lastMonth!=month){text=month.toString()+'月';text=g_JSChartLocalization.GetText(text,this.LanguageID);}lastYear=year;lastMonth=month;if(this.ShowText)info.Message[0]=text;if(info.Value==0)info.LineType=-1;//第1个分割线不画
6008
- this.Frame.VerticalInfo.push(info);distance=0;}if(this.Period==0&&monthCount<=2)this.SplitShortDate();};//分隔在2个月一下的格式
6007
+ {this.Frame.VerticalInfo=[];var xOffset=this.Frame.Data.DataOffset;var xPointCount=this.Frame.XPointCount;var lastYear=null,lastMonth=null;var minDistance=12;var monthCount=0;var globalOption=this.Frame.GlobalOption;for(var i=0,index=xOffset,distance=minDistance;i<xPointCount&&index<this.Frame.Data.Data.length;++i,++index){var year=parseInt(this.Frame.Data.Data[index].Date/10000);var month=parseInt(this.Frame.Data.Data[index].Date/100)%100;if(lastMonth!=month)++monthCount;if(distance<minDistance||lastYear!=null&&lastYear==year&&lastMonth!=null&&lastMonth==month){lastMonth=month;++distance;continue;}var info=new CoordinateInfo();info.Value=index-xOffset;var text;if(lastYear==null||lastYear!=year){text=year.toString();}else if(lastMonth==null||lastMonth!=month){text=month.toString()+'月';text=g_JSChartLocalization.GetText(text,this.LanguageID);}lastYear=year;lastMonth=month;if(this.ShowText)info.Message[0]=text;if(info.Value==0)info.LineType=-1;//第1个分割线不画
6008
+ this.Frame.VerticalInfo.push(info);distance=0;}var bShowShortDate=true;//日线显示在2个月以下的 显示格式
6009
+ if(globalOption&&IFrameSplitOperator.IsBool(globalOption.EnableXShortDate))bShowShortDate=globalOption.EnableXShortDate;if(bShowShortDate&&this.Period==0&&monthCount<=2)this.SplitShortDate();};//分隔在2个月以内的格式
6009
6010
  this.SplitShortDate=function(){this.Frame.VerticalInfo=[];var xOffset=this.Frame.Data.DataOffset;var xPointCount=this.Frame.XPointCount;var minDistance=12;var isFirstYear=true;for(var i=0,index=xOffset,distance=minDistance;i<xPointCount&&index<this.Frame.Data.Data.length;++i,++index){var year=parseInt(this.Frame.Data.Data[index].Date/10000);//var month=parseInt(this.Frame.Data.Data[index].Date/100)%100;
6010
6011
  //var day=parseInt(this.Frame.Data.Data[index].Date%100);
6011
6012
  if(distance<minDistance){++distance;continue;}var info=new CoordinateInfo();info.Value=index-xOffset;var text;if(isFirstYear){text=year.toString();isFirstYear=false;}else{text=IFrameSplitOperator.FormatDateString(this.Frame.Data.Data[index].Date,'MM-DD');}if(this.ShowText)info.Message[0]=text;if(info.Value==0)info.LineType=-1;//第1个分割线不画
@@ -6653,9 +6654,9 @@ this.ChangePeriod=function(period){var kData=this.GetKData();if(!kData)return;va
6653
6654
  {var data=this.GetKData();if(!data)return false;var aryDateTime=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];if(!item.DateTime)break;var dateTime={Date:item.DateTime.Date};if(IFrameSplitOperator.IsNumber(item.DateTime.Time))dateTime.Time=item.DateTime.Time;aryDateTime[i]=dateTime;}data.FindDataIndexByDateTime(aryDateTime);for(var i=0;i<aryDateTime.length;++i){var findItem=aryDateTime[i];var valueItem=this.Value[i];if(findItem.Index>=0)valueItem.XValue=findItem.Index;}};//重置X索引数据
6654
6655
  this.ResetXValue=function(){for(var i=0;i<this.Value.length;++i){var item=this.Value[i];item.XValue=null;}return true;};//xStep,yStep 移动的偏移量
6655
6656
  this.Move=function(xStep,yStep){if(this.Status!=20)return false;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==null)return false;var index=parseInt(this.MovePointIndex);if(index===100)//整体移动
6656
- {if(this.IsMoveOutOfBounds(this.Point,xStep,yStep))return false;for(var i in this.Point){this.Point[i].X+=xStep;this.Point[i].Y+=yStep;}}else if(index===0||index===1||index===2||index===3||index===4||index===5){if(index<this.Point.length){this.Point[index].X+=xStep;this.Point[index].Y+=yStep;}}else{return false;}};//是否超出边界了
6657
+ {if(this.IsMoveOutOfBounds(this.Point,xStep,yStep))return false;for(var i in this.Point){this.Point[i].X+=xStep;this.Point[i].Y+=yStep;}}else if(index===0||index===1||index===2||index===3||index===4||index===5){if(index<this.Point.length){this.Point[index].X+=xStep;this.Point[index].Y+=yStep;}}else{return false;}return true;};//是否超出边界了
6657
6658
  this.IsMoveOutOfBounds=function(aryPoint,xStep,yStep){if(!this.EnableMoveCheck)return false;if(!this.Frame)return false;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame")return false;var data=this.Frame.Data;if(!data)return false;if(!IFrameSplitOperator.IsNonEmptyArray(data.Data))return false;if(!IFrameSplitOperator.IsNonEmptyArray(aryPoint))return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){//TODO:横屏以后再做
6658
- return false;}else{var offset=data.DataOffset;var startIndex=0-offset;var endIndex=data.Data.length-offset;if(xStep>0){var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(item.X+xStep>xEnd)return true;}}else if(xStep<0){var xStart=this.Frame.GetXFromIndex(startIndex,false);for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(item.X+xStep<xStart)return true;}}return false;}};this.ClipFrame=function(){if(this.Frame.IsHScreen){var left=this.Frame.ChartBorder.GetLeftEx();var top=this.Frame.ChartBorder.GetTop();var width=this.Frame.ChartBorder.GetWidthEx();var height=this.Frame.ChartBorder.GetHeight();}else{var left=this.Frame.ChartBorder.GetLeft();var top=this.Frame.ChartBorder.GetTopEx();var width=this.Frame.ChartBorder.GetWidth();var height=this.Frame.ChartBorder.GetHeightEx();}this.Canvas.save();this.Canvas.beginPath();this.Canvas.rect(left,top,width,height);this.Canvas.clip();};//计算需要画的点的坐标option:{IsCheckX:是否检测X值, IsCheckY:是否检测Y值}
6659
+ return false;}else{var offset=data.DataOffset;var startIndex=0-offset;var endIndex=data.Data.length-offset;if(this.ClassName=="ChartDrawHLine")return false;if(xStep>0){var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(item.X+xStep>xEnd)return true;}}else if(xStep<0){var xStart=this.Frame.GetXFromIndex(startIndex,false);for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(item.X+xStep<xStart)return true;}}return false;}};this.ClipFrame=function(){if(this.Frame.IsHScreen){var left=this.Frame.ChartBorder.GetLeftEx();var top=this.Frame.ChartBorder.GetTop();var width=this.Frame.ChartBorder.GetWidthEx();var height=this.Frame.ChartBorder.GetHeight();}else{var left=this.Frame.ChartBorder.GetLeft();var top=this.Frame.ChartBorder.GetTopEx();var width=this.Frame.ChartBorder.GetWidth();var height=this.Frame.ChartBorder.GetHeightEx();}this.Canvas.save();this.Canvas.beginPath();this.Canvas.rect(left,top,width,height);this.Canvas.clip();};//计算需要画的点的坐标option:{IsCheckX:是否检测X值, IsCheckY:是否检测Y值}
6659
6660
  this.CalculateDrawPoint=function(option){if(this.Status<2)return null;if(!this.Point.length||!this.Frame)return null;var drawPoint=[];if(this.Status==10){var data=this.Frame.Data;if(!data)return null;var showCount=this.Frame.XPointCount;var invaildX=0;//超出范围的x点个数
6660
6661
  var isHScreen=this.Frame.IsHScreen;for(var i=0;i<this.Value.length;++i){var item=this.Value[i];if(!IFrameSplitOperator.IsNumber(item.XValue))return null;//无效索引 不显示
6661
6662
  var dataIndex=item.XValue-data.DataOffset;if(dataIndex<0||dataIndex>=showCount)++invaildX;var pt=new Point();if(isHScreen)//横屏X,Y对调
@@ -6993,7 +6994,7 @@ linePoint={Start:new Point(),End:new Point()};linePoint.Start.X=drawPoint[0].X;l
6993
6994
  };//xStep,yStep 移动的偏移量
6994
6995
  this.Move=function(xStep,yStep){if(this.Status!=20)return false;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==100)//整体移动
6995
6996
  {for(var i=0;i<this.Point.length;++i){this.Point[i].X+=xStep;this.Point[i].Y+=yStep;}}else if(this.MovePointIndex==0||this.MovePointIndex==1){if(this.MovePointIndex<this.Point.length){this.Point[this.MovePointIndex].X+=xStep;this.Point[this.MovePointIndex].Y+=yStep;}}else if(this.MovePointIndex==2)//宽度的点要计算
6996
- {this.Point[this.MovePointIndex].X+=xStep;this.Point[this.MovePointIndex].Y+=yStep;var x=this.Point[1].X-this.Point[0].X;var y=this.Point[1].Y-this.Point[0].Y;var angle=Math.atan(Math.abs(x/y));var yMove=this.ChannelWidth/Math.sin(angle)-yStep;this.ChannelWidth=Math.sin(angle)*yMove;}};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
6997
+ {this.Point[this.MovePointIndex].X+=xStep;this.Point[this.MovePointIndex].Y+=yStep;var x=this.Point[1].X-this.Point[0].X;var y=this.Point[1].Y-this.Point[0].Y;var angle=Math.atan(Math.abs(x/y));var yMove=this.ChannelWidth/Math.sin(angle)-yStep;this.ChannelWidth=Math.sin(angle)*yMove;}else{return false;}return true;};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
6997
6998
  this.IsPointIn=function(x,y){if(!this.Frame||this.Status!=10)return-1;var data=this.Frame.Data;if(!data)return-1;//是否在点上
6998
6999
  for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var pt=new Point();if(i<2){pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset);pt.Y=this.Frame.GetYFromData(item.YValue);}else//第3个点使用实际坐标
6999
7000
  {if(i>=this.Point.length)continue;pt.X=this.Point[i].X;pt.Y=this.Point[i].Y;}this.Canvas.beginPath();this.Canvas.arc(pt.X,pt.Y,5,0,360);if(this.Canvas.isPointInPath(x,y))return i;}//是否在线段上
@@ -7341,7 +7342,7 @@ this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveT
7341
7342
  var aryLabel=this.FormatLabelText(drawPoint);if(!IFrameSplitOperator.IsNonEmptyArray(aryLabel))return;this.TextFontHeight=this.GetFontHeight(this.LabelConfig.Font,"擎");for(var i=0;i<aryLabel.length;++i){var item=aryLabel[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.AryText))continue;this.CalculateLabelSize(item);this.DrawLabelItem(item,drawPoint);}};this.DrawLabelItem=function(lableItem,drawPoint){var ptCenter=drawPoint[0];var ptRight=drawPoint[1];var ptTop=drawPoint[2];var ptBottom=drawPoint[3];var clientWidth=ptRight.X-ptCenter.X;var config=this.LabelConfig;var margin=config.Margin;var rtText={Width:lableItem.Width+margin.Left+margin.Right,Height:lableItem.Height+margin.Top+margin.Bottom};if(lableItem.Type==0)//中间
7342
7343
  {rtText.Left=ptCenter.X+clientWidth/2-rtText.Width/2;rtText.Right=rtText.Left+rtText.Width;rtText.Top=ptCenter.Y-rtText.Height/2;rtText.Bottom=rtText.Top+rtText.Height;}else if(lableItem.Type==1)//顶部
7343
7344
  {rtText.Left=ptCenter.X+clientWidth/2-rtText.Width/2;rtText.Right=rtText.Left+rtText.Width;rtText.Top=ptTop.Y-rtText.Height;rtText.Bottom=rtText.Top+rtText.Height;}else if(lableItem.Type==2){rtText.Left=ptCenter.X+clientWidth/2-rtText.Width/2;rtText.Right=rtText.Left+rtText.Width;rtText.Top=ptBottom.Y;rtText.Bottom=rtText.Top+rtText.Height;}else{return;}this.Canvas.fillStyle=lableItem.BGColor;this.Canvas.fillRect(rtText.Left,rtText.Top,rtText.Width,rtText.Height);this.Canvas.textAlign='left';this.Canvas.textBaseline='bottom';this.Canvas.fillStyle=lableItem.TextColor;var x=rtText.Left+margin.Left;var y=rtText.Top+margin.Top+this.TextFontHeight;for(var i=0;i<lableItem.AryText.length;++i){var item=lableItem.AryText[i];var xText=x;var yText=y;if(IFrameSplitOperator.IsNumber(item.YOffset))yText+=item.YOffset;this.Canvas.fillText(item.Text,xText,yText);y+=this.TextFontHeight;}};this.FormatLabelText=function(drawPoint){if(this.HQChart){var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_TVLONGPOSITION_LABEL);if(event&&event.Callback){var sendData={Frame:this.Frame,AryLabel:null,AryPoint:drawPoint,PreventDefault:false};event.Callback(event,sendData,this);if(sendData.PreventDefault)return sendData.AryLabel;}}var ptCenter=drawPoint[0];var ptTop=drawPoint[2];var ptBottom=drawPoint[3];var aryData=[];var yValue=this.Frame.GetYData(ptCenter.Y,false);aryData.push({Type:0,AryText:[{Text:'Open: '+yValue.toFixed(2)}],BGColor:"rgb(112,128,144)",TextColor:"rgb(255,255,255)"});var yValue=this.Frame.GetYData(ptTop.Y,false);aryData.push({Type:1,AryText:[{Text:'Target: '+yValue.toFixed(2),YOffset:-1}],BGColor:this.TopAreaConfig.TextBGColor,TextColor:this.TopAreaConfig.TextColor});var yValue=this.Frame.GetYData(ptBottom.Y,false);aryData.push({Type:2,AryText:[{Text:'Stop: '+yValue.toFixed(2),YOffset:-1}],BGColor:this.BottomAreaConfig.TextBGColor,TextColor:this.BottomAreaConfig.TextColor});return aryData;};this.CalculateLabelSize=function(lableItem){lableItem.Width=0;lableItem.Height=0;for(var i=0;i<lableItem.AryText.length;++i){var item=lableItem.AryText[i];var textWidth=this.Canvas.measureText(item.Text).width;item.TextWidth=textWidth;if(lableItem.Width<textWidth)lableItem.Width=textWidth;lableItem.Height+=this.TextFontHeight;}};this.Move=function(xStep,yStep){if(this.Status!=20)return false;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==100)//整体移动
7344
- {for(var i=0;i<this.Point.length;++i){var item=this.Point[i];item.X+=xStep;item.Y+=yStep;}}else if(this.MovePointIndex===0){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];if(i==0){item.X+=xStep;item.Y+=yStep;}else if(i==1){item.Y+=yStep;}else if(i==2||i==3){item.X+=xStep;}}}else if(this.MovePointIndex==1){this.Point[1].X+=xStep;}else if(this.MovePointIndex==2){var ptCenter=this.Point[0];var item=this.Point[2];if(item.Y+yStep<ptCenter.Y)item.Y+=yStep;}else if(this.MovePointIndex==3){var ptCenter=this.Point[0];var item=this.Point[3];if(item.Y+yStep>ptCenter.Y)item.Y+=yStep;}};}function ChartDrawTVShortPosition(){this.newMethod=ChartDrawTVLongPosition;//派生
7345
+ {for(var i=0;i<this.Point.length;++i){var item=this.Point[i];item.X+=xStep;item.Y+=yStep;}}else if(this.MovePointIndex===0){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];if(i==0){item.X+=xStep;item.Y+=yStep;}else if(i==1){item.Y+=yStep;}else if(i==2||i==3){item.X+=xStep;}}}else if(this.MovePointIndex==1){this.Point[1].X+=xStep;}else if(this.MovePointIndex==2){var ptCenter=this.Point[0];var item=this.Point[2];if(item.Y+yStep<ptCenter.Y)item.Y+=yStep;}else if(this.MovePointIndex==3){var ptCenter=this.Point[0];var item=this.Point[3];if(item.Y+yStep>ptCenter.Y)item.Y+=yStep;}else{return false;}return true;};}function ChartDrawTVShortPosition(){this.newMethod=ChartDrawTVLongPosition;//派生
7345
7346
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawTVShortPosition';this.TopAreaConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.BottomArea);this.BottomAreaConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.TopArea);}function ChartDrawStorage(){//this.DrawData=new Map(); //画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
7346
7347
  this.DrawDataV2=new _map2.default();//画图工具数据 key=symbol, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
7347
7348
  this.StorageKey;this.GetEventCallback;//事件回调
@@ -8642,7 +8643,7 @@ if(this.ChartDrawStorage)this.ChartDrawStorage.SaveDrawData(drawPicture);this.Dr
8642
8643
  this.RandomDrawPictureValue=function(chart,data){if(!IFrameSplitOperator.IsNonEmptyArray(data.Value))return;var kData=this.GetKLineChart();if(!kData||!kData.Data||!IFrameSplitOperator.IsNumber(kData.Data.DataOffset)||kData.Data.DataOffset<0)return null;if(!IFrameSplitOperator.IsNonEmptyArray(kData.Data.Data))return null;var aryKData=kData.Data.Data;var startIndex=kData.Data.DataOffset;var endIndex=kData.Data.DataOffset+kData.ChartFrame.XPointCount-1;if(endIndex>=aryKData.length)endIndex=aryKData.length-1;var frameHeight=chart.Frame.ChartBorder.GetHeight();var max=chart.Frame.HorizontalMax;var min=chart.Frame.HorizontalMin;var y=chart.Frame.ChartBorder.GetBottomEx()-frameHeight*data.YFristScale;var range={Max:5,Min:2};var xRandomOffset=Math.floor(Math.random()*(range.Max-range.Min+1))+range.Min;var xValue=data.Value[0].XIndex+xRandomOffset;var firstPoint=null;chart.Value=[];for(var i=0;i<data.Value.length;++i){var item=data.Value[i];chart.Value[i]={XValue:xValue+item.XOffset};chart.Point[i]={Y:y+item.YOffset,X:chart.Frame.GetXFromIndex(xValue+item.XOffset,false)};}};//xStep,yStep 移动的偏移量
8643
8644
  this.MoveChartDrawPicture=function(x,y,isPhone,drag){var drawPicture=this.CurrentChartDrawPicture;if(!drawPicture)return false;var pixelTatio=GetDevicePixelRatio();//x,y 需要乘以放大倍速
8644
8645
  if(isPhone)pixelTatio=1;var xStep=x*pixelTatio;var yStep=y*pixelTatio;//JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
8645
- drawPicture.Move(xStep,yStep,drag);return true;};//数据长度变化 需要更新画图工具X轴索引
8646
+ if(!drawPicture.Move(xStep,yStep,drag))return false;return true;};//数据长度变化 需要更新画图工具X轴索引
8646
8647
  this.UpdateChartDrawXValue=function(){for(var i in this.ChartDrawPicture){var item=this.ChartDrawPicture[i];item.UpdateXValue();}};//注册鼠标右键事件
8647
8648
  this.OnRightMenu=function(x,y,e){var pixelTatio=GetDevicePixelRatio();//x,y 需要乘以放大倍速
8648
8649
  var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);this.PopupRightMenuV2({X:e.offsetX,Y:e.offsetY,FrameID:frameId,CursorIndex:this.CursorIndex,Point:{X:x*pixelTatio,Y:y*pixelTatio}},e);var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);if(event){var data={X:x,Y:y,Event:e,FrameID:frameId,Point:{X:x*pixelTatio,Y:y*pixelTatio},CursorIndex:this.CursorIndex};event.Callback(event,data,this);}};//右键菜单数据
@@ -14133,7 +14134,7 @@ this.HeaderFontConfig={Size:g_JSChartResource.Report.Header.Font.Size,Name:g_JSC
14133
14134
  this.ItemFontConfig={Size:g_JSChartResource.Report.Item.Font.Size,Name:g_JSChartResource.Report.Item.Font.Name};this.ItemMergin={Left:g_JSChartResource.Report.Item.Mergin.Left,Right:g_JSChartResource.Report.Item.Mergin.Right,Top:g_JSChartResource.Report.Item.Mergin.Top,Bottom:g_JSChartResource.Report.Item.Mergin.Bottom};this.BarMergin={Top:g_JSChartResource.Report.Item.BarMergin.Top,Left:g_JSChartResource.Report.Item.BarMergin.Left,Right:g_JSChartResource.Report.Item.BarMergin.Right,Bottom:g_JSChartResource.Report.Item.BarMergin.Bottom};this.LimitBorderColor=g_JSChartResource.Report.LimitBorder.Color;this.LimitMergin={Top:g_JSChartResource.Report.LimitBorder.Mergin.Top,Left:g_JSChartResource.Report.LimitBorder.Mergin.Left,Right:g_JSChartResource.Report.LimitBorder.Mergin.Right,Bottom:g_JSChartResource.Report.LimitBorder.Mergin.Bottom};this.DragRowColor=g_JSChartResource.Report.DragRow.Color;this.DragRowTextColor=g_JSChartResource.Report.DragRow.TextColor;this.DragMoveRowColor=g_JSChartResource.Report.DragRow.MoveRowColor;this.DragSrcRowColor=g_JSChartResource.Report.DragRow.SrcRowColor;//排序图标
14134
14135
  this.SortConfig={Size:g_JSChartResource.Report.SortIcon.Size,Family:g_JSChartResource.Report.SortIcon.Family,Arrow:g_JSChartResource.Report.SortIcon.Arrow.slice(),Color:g_JSChartResource.Report.SortIcon.Color.slice(),Margin:{Left:g_JSChartResource.Report.SortIcon.Margin.Left,Bottom:g_JSChartResource.Report.SortIcon.Margin.Bottom}};for(var i=0;i<this.Column.length;++i){var item=this.Column[i];if(item.Type==REPORT_COLUMN_ID.INDEX_ID)item.TextColor=g_JSChartResource.Report.FieldColor.Index;else if(item.Type==REPORT_COLUMN_ID.SYMBOL_ID)item.TextColor=g_JSChartResource.Report.FieldColor.Symbol;else if(item.Type==REPORT_COLUMN_ID.NAME_ID)item.TextColor=g_JSChartResource.Report.FieldColor.Name;else if(item.Type==REPORT_COLUMN_ID.VOL_ID)item.TextColor=g_JSChartResource.Report.FieldColor.Vol;else if(item.Type==REPORT_COLUMN_ID.BUY_VOL_ID)item.TextColor=g_JSChartResource.Report.FieldColor.Vol;else if(item.Type==REPORT_COLUMN_ID.SELL_VOL_ID)item.TextColor=g_JSChartResource.Report.FieldColor.Vol;else if(item.Type==REPORT_COLUMN_ID.AMOUNT_ID)item.TextColor=g_JSChartResource.Report.FieldColor.Amount;else if(item.Type==REPORT_COLUMN_ID.VOL_IN_ID)item.TextColor=g_JSChartResource.Report.DownTextColor;else if(item.Type==REPORT_COLUMN_ID.VOL_OUT_ID)item.TextColor=g_JSChartResource.Report.UpTextColor;else item.TextColor=g_JSChartResource.Report.FieldColor.Text;}if(this.Tab)this.Tab.ReloadResource(resource);if(this.VScrollbar)this.VScrollbar.ReloadResource(resource);this.CheckBoxConfig=CloneData(g_JSChartResource.Report.CheckBox);this.LinkConfig=CloneData(g_JSChartResource.Report.Link);this.ProgressBarConfig=CloneData(g_JSChartResource.Report.ProgressBar);};this.CreateColumnItem=function(item){var colItem=this.GetDefaultColunm(item.Type);if(!colItem)return null;if(item.Title)colItem.Title=item.Title;if(IFrameSplitOperator.IsNonEmptyArray(item.AryTitle))colItem.AryTitle=item.AryTitle;if(item.TextAlign)colItem.TextAlign=item.TextAlign;if(item.TextColor)colItem.TextColor=item.TextColor;if(item.HeaderColor)colItem.HeaderColor=item.HeaderColor;if(item.MaxText)colItem.MaxText=item.MaxText;if(item.MaxText2)colItem.MaxText=item.MaxText2;if(item.TitleAlign)colItem.TitleAlign=item.TitleAlign;if(IFrameSplitOperator.IsNumber(item.Space))colItem.Space=item.Space;if(item.ID)colItem.ID=item.ID;if(item.FullColBGColor)colItem.FullColBGColor=item.FullColBGColor;//整列背景色
14135
14136
  if(item.HeaderBGColor)colItem.HeaderBGColor=item.HeaderBGColor;//表头背景色
14136
- if(IFrameSplitOperator.IsNumber(item.Sort))colItem.Sort=item.Sort;if(IFrameSplitOperator.IsNumber(item.FixedWidth))colItem.FixedWidth=item.FixedWidth;if(IFrameSplitOperator.IsBool(item.EnableDragWidth))colItem.EnableDragWidth=item.EnableDragWidth;colItem.IsDrawCallback=false;if(IFrameSplitOperator.IsBool(item.IsDrawCallback))colItem.IsDrawCallback=item.IsDrawCallback;if(IFrameSplitOperator.IsBool(item.EnableFormatDrawInfoEvent))colItem.EnableFormatDrawInfoEvent=item.EnableFormatDrawInfoEvent;if(IFrameSplitOperator.IsNumber(item.FloatPrecision))colItem.FloatPrecision=item.FloatPrecision;//小数位数
14137
+ if(IFrameSplitOperator.IsNumber(item.Sort))colItem.Sort=item.Sort;if(IFrameSplitOperator.IsNumber(item.FixedWidth))colItem.FixedWidth=item.FixedWidth;else if(item.FixedWidth===null)colItem.FixedWidth=null;if(IFrameSplitOperator.IsBool(item.EnableDragWidth))colItem.EnableDragWidth=item.EnableDragWidth;colItem.IsDrawCallback=false;if(IFrameSplitOperator.IsBool(item.IsDrawCallback))colItem.IsDrawCallback=item.IsDrawCallback;if(IFrameSplitOperator.IsBool(item.EnableFormatDrawInfoEvent))colItem.EnableFormatDrawInfoEvent=item.EnableFormatDrawInfoEvent;if(IFrameSplitOperator.IsNumber(item.FloatPrecision))colItem.FloatPrecision=item.FloatPrecision;//小数位数
14137
14138
  if(IFrameSplitOperator.IsNumber(item.ColorType))colItem.ColorType=item.ColorType;//0=默认 1=(>0, =0, <0) 2=(>=0, <0) 3=(>YClose =YClose <YClose)
14138
14139
  if(item.Icon)colItem.Icon=item.Icon;if(IFrameSplitOperator.IsBool(item.EnableChartTooltip))colItem.ChartTooltip={Enable:item.EnableChartTooltip,Type:20};if(item.ChartTooltip)colItem.ChartTooltip={Enable:item.ChartTooltip.Enable,Type:item.ChartTooltip.Type};//点击表头弹出菜单
14139
14140
  if(IFrameSplitOperator.IsBool(item.EnablePopupHeaderMenu))colItem.EnablePopupHeaderMenu=item.EnablePopupHeaderMenu;if(item.Sort==1||item.Sort==2)//1本地排序 2=远程排序
@@ -14256,7 +14257,7 @@ this.DrawLine=function(lineData,column,rtItem){if(!lineData)return false;if(!IFr
14256
14257
  {if(lineData.YClose==priceMax&&lineData.YClose==priceMin){priceMax=lineData.YClose+lineData.YClose*0.1;priceMin=lineData.YClose-lineData.YClose*0.1;}else{var distanceValue=Math.max(Math.abs(lineData.YClose-priceMax),Math.abs(lineData.YClose-priceMin));priceMax=lineData.YClose+distanceValue;priceMin=lineData.YClose-distanceValue;}}var Temp_GetYFromData=function Temp_GetYFromData(value){if(value<=priceMin)return bottom;if(value>=priceMax)return top;var value=height*(value-priceMin)/(priceMax-priceMin);return bottom-value;};this.Canvas.save();var yCenter=null;if(IFrameSplitOperator.IsNumber(lineData.YClose)){var y=Temp_GetYFromData(lineData.YClose);y=ToFixedPoint(y);yCenter=y;this.Canvas.setLineDash([2,2]);this.Canvas.strokeStyle=this.CloseLineConfig.YCloseColor;this.Canvas.beginPath();this.Canvas.moveTo(left,y);this.Canvas.lineTo(right,y);this.Canvas.stroke();this.Canvas.setLineDash([]);}if(lineData.Color)this.Canvas.strokeStyle=lineData.Color;else this.Canvas.strokeStyle=this.CloseLineConfig.CloseColor;var bFirstPoint=true;var ptFirst={};//第1个点
14257
14258
  var drawCount=0,x,y;for(var i=0;i<lineData.Data.length;++i){var value=lineData.Data[i];if(!IFrameSplitOperator.IsNumber(value))continue;x=Temp_GetXFromIndex(i);y=Temp_GetYFromData(value);if(bFirstPoint){this.Canvas.beginPath();this.Canvas.moveTo(x,y);bFirstPoint=false;ptFirst={X:x,Y:y};}else{this.Canvas.lineTo(x,y);}++drawCount;}if(drawCount>0){this.Canvas.stroke();if(column.IsDrawArea&&IFrameSplitOperator.IsNumber(yCenter)){this.Canvas.lineTo(x,yCenter);this.Canvas.lineTo(ptFirst.X,yCenter);this.Canvas.closePath();var areaColor=this.CloseLineConfig.AreaColor;if(lineData.AreaColor)areaColor=lineData.AreaColor;this.SetFillStyle(areaColor,left,top,left,bottom);this.Canvas.fill();}}this.Canvas.restore();};//klineData={ Data:[ open, high, low, close ] }
14258
14259
  this.DrawKLine=function(klineData,column,rtItem,data){if(column.IsDrawCallback)//外部处理输出格式
14259
- {var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_DRAW_KLINE);if(event||event.Callback){var sendData={Column:column,Data:data,KLineData:klineData,Rect:rtItem,PreventDefault:false};event.Callback(event,sendData,this);if(sendData.PreventDefault)return;}}if(!klineData)return;if(!IFrameSplitOperator.IsNonEmptyArray(klineData.Data))return;var high=klineData.Data[1];var low=klineData.Data[2];var aryKLine=[{Open:klineData.Data[0],High:high,Low:low,Close:klineData.Data[3]}];this.DrawKLineBar(aryKLine,high,low,rtItem);};this.DrawKLineBar=function(aryKLine,high,low,rtItem){var yMergin=4;var left=rtItem.Left+this.ItemMergin.Left;var width=rtItem.Width-this.ItemMergin.Left-this.ItemMergin.Right;var left=rtItem.Left+this.ItemMergin.Left;var top=rtItem.Top+this.ItemMergin.Top+yMergin;var height=rtItem.Height-this.ItemMergin.Top-this.ItemMergin.Bottom-yMergin*2;var right=left+width;var bottom=top+height;var Temp_GetYFromData=function Temp_GetYFromData(value){if(value<=low)return bottom;if(value>=high)return top;var value=height*(value-low)/(high-low);return bottom-value;};var dataWidth=this.KLineConfig.DataWidth;var distanceWidth=this.KLineConfig.DistanceWidth;var xOffset=left;var x,xLeft,xRight;for(var i=0;i<aryKLine.length;++i,xOffset+=dataWidth+distanceWidth){var item=aryKLine[i];xLeft=xOffset;xRight=xOffset+dataWidth;x=xLeft+(xRight-xLeft)/2;if(xRight>right)break;var yLow=Temp_GetYFromData(item.Low,false);var yHigh=Temp_GetYFromData(item.High,false);var yOpen=Temp_GetYFromData(item.Open,false);var yClose=Temp_GetYFromData(item.Close,false);var y=yHigh;if(item.Open<item.Close)//阳线
14260
+ {var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_DRAW_KLINE);if(event||event.Callback){var sendData={Column:column,Data:data,KLineData:klineData,Rect:rtItem,PreventDefault:false};event.Callback(event,sendData,this);if(sendData.PreventDefault)return;}}if(!klineData)return;var aryKLine=[];var high=null,low=null;if(IFrameSplitOperator.IsNonEmptyArray(klineData.AryData)){for(var i=0;i<klineData.AryData.length;++i){var item=klineData.AryData[i];var kItem={Open:item[0],High:item[1],Low:item[2],Close:item[3]};if(high==null||high<item[1])high=item[1];if(low==null||low>item[2])low=item[2];aryKLine.push(kItem);}}else if(IFrameSplitOperator.IsNonEmptyArray(klineData.Data)){high=klineData.Data[1];low=klineData.Data[2];var kItem={Open:klineData.Data[0],High:high,Low:low,Close:klineData.Data[3]};aryKLine.push(kItem);}if(!IFrameSplitOperator.IsNonEmptyArray(aryKLine))return;this.DrawKLineBar(aryKLine,high,low,rtItem);};this.DrawKLineBar=function(aryKLine,high,low,rtItem){var yMergin=4;var left=rtItem.Left+this.ItemMergin.Left;var width=rtItem.Width-this.ItemMergin.Left-this.ItemMergin.Right;var left=rtItem.Left+this.ItemMergin.Left;var top=rtItem.Top+this.ItemMergin.Top+yMergin;var height=rtItem.Height-this.ItemMergin.Top-this.ItemMergin.Bottom-yMergin*2;var right=left+width;var bottom=top+height;var Temp_GetYFromData=function Temp_GetYFromData(value){if(value<=low)return bottom;if(value>=high)return top;var value=height*(value-low)/(high-low);return bottom-value;};var dataWidth=this.KLineConfig.DataWidth;var distanceWidth=this.KLineConfig.DistanceWidth;var xOffset=left;var x,xLeft,xRight;for(var i=0;i<aryKLine.length;++i,xOffset+=dataWidth+distanceWidth){var item=aryKLine[i];xLeft=xOffset;xRight=xOffset+dataWidth;x=xLeft+(xRight-xLeft)/2;if(xRight>right)break;var yLow=Temp_GetYFromData(item.Low,false);var yHigh=Temp_GetYFromData(item.High,false);var yOpen=Temp_GetYFromData(item.Open,false);var yClose=Temp_GetYFromData(item.Close,false);var y=yHigh;if(item.Open<item.Close)//阳线
14260
14261
  {this.DrawKBarItem(item,dataWidth,this.KLineConfig.UpColor,1,xLeft,xRight,yLow,yHigh,yOpen,yClose);}else if(item.Open>item.Close)//阴线
14261
14262
  {this.DrawKBarItem(item,dataWidth,this.KLineConfig.DownColor,0,xLeft,xRight,yLow,yHigh,yOpen,yClose);}else//平线
14262
14263
  {this.DrawKBarItem(item,dataWidth,this.KLineConfig.UnchagneColor,0,xLeft,xRight,yLow,yHigh,yOpen,yClose);}}};this.DrawKBarItem=function(data,dataWidth,barColor,drawType,left,right,yLow,yHigh,yOpen,yClose){var isEmptyBar=false;if(drawType==1)isEmptyBar=true;var yBarTop=Math.min(yOpen,yClose);var yBarBottom=Math.max(yOpen,yClose);var barTopValue=Math.max(data.Open,data.Close);var barBottomValue=Math.min(data.Open,data.Close);this.Canvas.fillStyle=barColor;this.Canvas.strokeStyle=barColor;var x=left+(right-left)/2;if(isEmptyBar){if(dataWidth%2!=0)dataWidth-=1;}if(dataWidth>=4){if(data.High>barTopValue){this.Canvas.beginPath();var xBar=x;if(isEmptyBar)xBar=left+dataWidth/2;this.Canvas.moveTo(ToFixedPoint(xBar),ToFixedPoint(yBarTop));this.Canvas.lineTo(ToFixedPoint(xBar),ToFixedPoint(yHigh));this.Canvas.stroke();}if(Math.abs(yBarBottom-yBarTop)<1){this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(yBarTop),ToFixedRect(dataWidth),1);//高度小于1,统一使用高度1
@@ -14268,7 +14269,7 @@ this.GetNameColor=function(colunmInfo,symbol,rowType){var event=this.GetEventCal
14268
14269
  }var row=this.PtInBody(x,y);if(row){var btnStatus={Redraw:false};this.OnClickButton(x,y,e,btnStatus);var bRedraw=true;if(this.MultiSelectModel==1){if(e&&e.ctrlKey)//多选
14269
14270
  {var pos=this.MultiSelectedRow.indexOf(row.DataIndex);if(pos>=0)this.MultiSelectedRow.splice(pos,1);else this.MultiSelectedRow.push(row.DataIndex);}else if(e&&e.shiftKey)//批量多选
14270
14271
  {this.OnShiftClickRow(row);}else{if(this.MultiSelectedRow.length==1&&this.MultiSelectedRow[0]==row.DataIndex)bRedraw=false;else this.MultiSelectedRow=[row.DataIndex];}this.SelectedFixedRow=-1;}else{if(this.SelectedModel==0){if(this.SelectedRowData&&this.SelectedRowData.Index==row.Index&&this.SelectedRowData.Symbol==row.Symbol)bRedraw=false;this.SelectedRowData={Index:row.Index,Symbol:row.Symbol};this.SelectedFixedRow=-1;}else{if(this.SelectedRowData&&this.SelectedRowData.DataIndex==row.DataIndex&&this.SelectedRowData.Symbol==row.Symbol)bRedraw=false;this.SelectedRowData={DataIndex:row.DataIndex,Symbol:row.Symbol};this.SelectedFixedRow=-1;}}var eventID=JSCHART_EVENT_ID.ON_CLICK_REPORT_ROW;if(e.button==2)eventID=JSCHART_EVENT_ID.ON_RCLICK_REPORT_ROW;this.SendClickEvent(eventID,{Data:row,X:x,Y:y,e:e,Inside:insidePoint,UIElement:uiElement});return{Type:2,Redraw:bRedraw||btnStatus.Redraw,Row:row};//行
14271
- }var header=this.PtInHeader(x,y);if(header){var eventID=JSCHART_EVENT_ID.ON_CLICK_REPORT_HEADER;if(e.button==2){eventID=JSCHART_EVENT_ID.ON_RCLICK_REPORT_HEADER;}else if(e.button==0){eventID=JSCHART_EVENT_ID.ON_CLICK_REPORT_HEADER;}this.SendClickEvent(eventID,{Data:row,X:x,Y:y,e:e,Inside:insidePoint,UIElement:uiElement});return{Type:3,Redraw:bRedraw,Header:header};//表头
14272
+ }var header=this.PtInHeader(x,y);if(header){var eventID=JSCHART_EVENT_ID.ON_CLICK_REPORT_HEADER;if(e.button==2){eventID=JSCHART_EVENT_ID.ON_RCLICK_REPORT_HEADER;}else if(e.button==0){eventID=JSCHART_EVENT_ID.ON_CLICK_REPORT_HEADER;}this.SendClickEvent(eventID,{Data:header,X:x,Y:y,e:e,Inside:insidePoint,UIElement:uiElement});return{Type:3,Redraw:bRedraw,Header:header};//表头
14272
14273
  }return null;};this.OnShiftClickRow=function(row){if(this.MultiSelectedRow.length<=0){this.MultiSelectedRow.push(row.DataIndex);return;}var max=null,min=null;for(var i=0;i<this.MultiSelectedRow.length;++i){var value=this.MultiSelectedRow[i];if(max==null||max<value)max=value;if(min==null||min>value)min=value;if(value==row.DataIndex)//移除
14273
14274
  {this.MultiSelectedRow.splice(i,1);return;}}if(max==min){var start=row.DataIndex,end=max;if(start>end){start=max;end=row.DataIndex;}this.MultiSelectedRow=[];for(var i=start;i<=end;++i){this.MultiSelectedRow.push(i);}}else{if(row.DataIndex<=max&&row.DataIndex>=min){this.MultiSelectedRow.push(row.DataIndex);}else{var start=Math.min(row.DataIndex,min);var end=Math.max(row.DataIndex,max);this.MultiSelectedRow=[];for(var i=start;i<=end;++i){this.MultiSelectedRow.push(i);}}}};this.OnDragRow=function(x,y,e)//Type: 5=顶部 6=空白行 2=行 7=底部
14274
14275
  {if(!this.Data)return null;if(!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return null;var topOffset=this.RowHeight/2;var top=this.RectClient.Top+this.HeaderHeight;var right=this.ChartBorder.GetChartWidth();var textTop=top+this.FixedRowHeight*this.FixedRowCount;if(y<textTop+topOffset)return{Type:5};for(var i=this.Data.YOffset,j=0;i<this.Data.Data.length&&j<this.RowCount;++i,++j){var symbol=this.Data.Data[i];var rtRow={Left:0,Top:textTop,Right:right,Bottom:textTop+this.RowHeight};rtRow.Top+=topOffset;rtRow.Bottom+=topOffset;if(x>=rtRow.Left&&x<=rtRow.Right&&y>=rtRow.Top&&y<=rtRow.Bottom){var data={DataIndex:i,Index:j,Symbol:symbol,Pos:0};if(j==0)data.Pos=1;else if(j==this.RowCount-1)data.Pos=2;return{Type:2,Data:data};}textTop+=this.RowHeight;}if(j<this.RowCount)return{Type:6};return{Type:7};};this.OnDragHeader=function(x,y,e)//Type:1=行 2=左边 3=右边 4=空白 5=固定行
@@ -15105,7 +15106,7 @@ this.SelectedClassName="UMyChart_MenuItem_Tr_Selected";this.RestoreFocusDelay=10
15105
15106
  "UMyChart_MenuItem_Td_Arrow"//箭头
15106
15107
  ];this.Inital=function(hqchart,option){this.HQChart=hqchart;this.MouseDownlistenerPtr=this.OnWindowMouseDown.bind(this);window.addEventListener('mousedown',this.MouseDownlistenerPtr);};this.Destroy=function(){if(this.MouseDownlistenerPtr){window.removeEventListener('mousedown',this.MouseDownlistenerPtr);this.MouseDownlistenerPtr=null;}};//创建菜单
15107
15108
  this.CreatePopMenu=function(data){this.Clear();if(!IFrameSplitOperator.IsNonEmptyArray(data.Menu))return;var root=document.createElement("div");root.className="UMyChart_PopMenu";var table=document.createElement("table");table.className="UMyChart_PopMenu_Table";root.appendChild(table);var tbody=document.createElement("tbody");tbody.className="UMyChart_PopMenu_Tbody";table.appendChild(tbody);var rootData={Root:root,TBody:tbody,Table:table};root.JSMenuData=rootData;for(var i=0;i<data.Menu.length;++i){var item=data.Menu[i];if(item.Name==JSPopMenu.SEPARATOR_LINE_NAME){var trSeparator=this.CreateSeparatorTr();if(trSeparator)tbody.appendChild(trSeparator);continue;}var trDom=this.CreateMenu(rootData,item);tbody.appendChild(trDom);}document.body.appendChild(root);this.RootDOM=root;this.TBodyDOM=tbody;if(IFrameSplitOperator.IsNumber(data.Position))this.Data.Position=data.Position;if(data.ClickCallback)this.ClickCallback=data.ClickCallback;if(data.RestoreFocusCallback)this.RestoreFocusCallback=data.RestoreFocusCallback;};//清除菜单
15108
- this.Clear=function(){this.Data.Menu=[];this.Data.Position=JSPopMenu.POSITION_ID.RIGHT_MENU_ID;this.ClickCallback=null;if(!this.RootDOM)return;document.body.removeChild(this.RootDOM);this.RootDOM=null;this.TBodyDOM=null;for(var i=0;i<this.ArySubRootDOM.length;++i){document.body.removeChild(this.ArySubRootDOM[i]);}this.ArySubRootDOM=[];};this.CreateMenu=function(parentItem,item){var _this87=this;var trDom=document.createElement("tr");trDom.className='UMyChart_MenuItem_Tr';if(item.Disable===true)trDom.classList.add('UMyChart_DrawTool_Disable_Tr');var prtTdDom=null;for(var i=0;i<this.AryTDClassName.length;++i){var tdDom=document.createElement("td");tdDom.className=this.AryTDClassName[i];if(i==0)//图标
15109
+ this.Clear=function(){this.Data.Menu=[];this.Data.Position=JSPopMenu.POSITION_ID.RIGHT_MENU_ID;this.ClickCallback=null;if(!this.RootDOM)return;document.body.removeChild(this.RootDOM);this.RootDOM=null;this.TBodyDOM=null;for(var i=0;i<this.ArySubRootDOM.length;++i){document.body.removeChild(this.ArySubRootDOM[i]);}this.ArySubRootDOM=[];};this.CreateMenu=function(parentItem,item){var _this87=this;var trDom=document.createElement("tr");trDom.className='UMyChart_MenuItem_Tr';if(item.Disable===true)trDom.classList.add('UMyChart_DrawTool_Disable_Tr');var prtTdDom=null;var aryTDClassName=this.AryTDClassName;if(IFrameSplitOperator.IsNonEmptyArray(item.AryTDClassName))aryTDClassName=item.AryTDClassName;for(var i=0;i<aryTDClassName.length;++i){var tdDom=document.createElement("td");tdDom.className=aryTDClassName[i];if(i==0)//图标
15109
15110
  {if(item.Checked){var spanDom=document.createElement("span");spanDom.className=this.CheckedClassName;spanDom.style["font-size"]="10px";tdDom.appendChild(spanDom);}}else if(i==1)//内容
15110
15111
  {tdDom.innerText=item.Name;}else if(i==2)//快捷方式
15111
15112
  {if(item.Text)tdDom.innerText=item.Text;}else if(i==3)//箭头
@@ -15645,7 +15646,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
15645
15646
  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);};}/********************************************************************************
15646
15647
  * 版本信息输出
15647
15648
  *
15648
- */var HQCHART_VERSION="1.1.15234";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();//把给外界调用的方法暴露出来
15649
+ */var HQCHART_VERSION="1.1.15244";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();//把给外界调用的方法暴露出来
15649
15650
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
15650
15651
  // BaseIndex:BaseIndex,
15651
15652
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.15235",
3
+ "version": "1.1.15245",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -57501,6 +57501,16 @@ HQData.Report_RequestStockData=function(data, callback)
57501
57501
 
57502
57502
  //K线
57503
57503
  var kData={ Data:[newItem[3], newItem[4], newItem[5], newItem[6]] };
57504
+ //多根K线使用AryData, 单根K线用Data
57505
+ kData.AryData=
57506
+ [
57507
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
57508
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
57509
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
57510
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
57511
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
57512
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
57513
+ ]
57504
57514
  newItem[33]=kData;
57505
57515
 
57506
57516
 
@@ -319,11 +319,14 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
319
319
  {
320
320
  var item=option.GlobalOption;
321
321
  if (IFrameSplitOperator.IsBool(item.IsValueFullRange)) chart.GlobalOption.IsValueFullRange=item.IsValueFullRange;
322
+ if (IFrameSplitOperator.IsBool(item.EnableXShortDate)) chart.GlobalOption.EnableXShortDate=item.EnableXShortDate;
323
+
322
324
  if (item.SelectedBorder)
323
325
  {
324
326
  var subItem=item.SelectedBorder;
325
327
  if (IFrameSplitOperator.IsNumber(subItem.Mode)) chart.GlobalOption.SelectedBorder.Mode=subItem.Mode;
326
328
  }
329
+
327
330
  }
328
331
 
329
332
  if (option.EnableYDrag)
@@ -3395,6 +3398,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
3395
3398
  TradeStatus:null, //当前交易状态 { Date, Time:数据最后更新的时间, Status: }
3396
3399
 
3397
3400
  LatestPoint:null, //最新的点位置 { X:, Y: }
3401
+
3402
+ EnableXShortDate:true,
3398
3403
  };
3399
3404
 
3400
3405
  this.VerticalDrag; //通过X轴左右拖动数据(手势才有)
@@ -4913,6 +4918,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
4913
4918
  {
4914
4919
  this.DrawDynamicInfo();
4915
4920
  }
4921
+ else
4922
+ {
4923
+ return;
4924
+ }
4916
4925
  }
4917
4926
 
4918
4927
  drag.LastMove.X=e.clientX;
@@ -10070,7 +10079,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10070
10079
  var xStep=x*pixelTatio;
10071
10080
  var yStep=y*pixelTatio;
10072
10081
  //JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
10073
- drawPicture.Move(xStep,yStep,drag);
10082
+ if (!drawPicture.Move(xStep,yStep,drag)) return false;
10074
10083
 
10075
10084
  return true;
10076
10085
  }
@@ -16712,11 +16721,13 @@ function MinuteFrame()
16712
16721
 
16713
16722
  this.DrawToolbar=function()
16714
16723
  {
16715
- if (this.ToolbarButtonStyle==1) return;
16716
- if (g_JSChartResource.IsDOMFrameToolbar===true) return;
16717
-
16724
+ var bDraw=true;
16725
+ if (this.ToolbarButtonStyle==1) bDraw=false;
16726
+ if (g_JSChartResource.IsDOMFrameToolbar===true) bDraw=false;
16718
16727
  if (!this.DivFrameToolbar) return;
16719
- this.DivFrameToolbar.Show(this.Identify);
16728
+
16729
+ if (!bDraw) this.HideToolbar();
16730
+ else this.DivFrameToolbar.Show(this.Identify);
16720
16731
  }
16721
16732
 
16722
16733
  //手绘,不用DOM,使用DOM太麻烦了
@@ -18947,11 +18958,13 @@ function KLineFrame()
18947
18958
 
18948
18959
  this.DrawToolbar=function()
18949
18960
  {
18950
- if (this.ToolbarButtonStyle==1) return;
18951
- if (g_JSChartResource.IsDOMFrameToolbar===true) return;
18961
+ var bDraw=true;
18962
+ if (this.ToolbarButtonStyle==1) bDraw=false;
18963
+ if (g_JSChartResource.IsDOMFrameToolbar===true) bDraw=false;
18952
18964
  if (!this.DivFrameToolbar) return;
18953
18965
 
18954
- this.DivFrameToolbar.Show(this.Identify);
18966
+ if (!bDraw) this.HideToolbar();
18967
+ else this.DivFrameToolbar.Show(this.Identify);
18955
18968
  }
18956
18969
 
18957
18970
  //手绘,不用DOM,使用DOM太麻烦了
@@ -30392,7 +30405,7 @@ function ChartKLine()
30392
30405
  {
30393
30406
  var left=this.ChartBorder.GetLeft();
30394
30407
  var right=this.ChartBorder.GetRight();
30395
- var top=this.ChartBorder.GetTopEx();
30408
+ var top=this.ChartBorder.GetTop();
30396
30409
  var bottom=this.ChartBorder.GetBottom();
30397
30410
  }
30398
30411
 
@@ -56983,6 +56996,7 @@ function FrameSplitKLineX()
56983
56996
  var lastYear=null, lastMonth=null;
56984
56997
  var minDistance=12;
56985
56998
  var monthCount=0;
56999
+ var globalOption=this.Frame.GlobalOption;
56986
57000
  for(var i=0, index=xOffset, distance=minDistance;i<xPointCount && index<this.Frame.Data.Data.length ;++i,++index)
56987
57001
  {
56988
57002
  var year=parseInt(this.Frame.Data.Data[index].Date/10000);
@@ -57020,12 +57034,14 @@ function FrameSplitKLineX()
57020
57034
  this.Frame.VerticalInfo.push(info);
57021
57035
  distance=0;
57022
57036
  }
57023
-
57024
- if (this.Period==0 && monthCount<=2)
57037
+
57038
+ var bShowShortDate=true; //日线显示在2个月以下的 显示格式
57039
+ if (globalOption && IFrameSplitOperator.IsBool(globalOption.EnableXShortDate)) bShowShortDate=globalOption.EnableXShortDate;
57040
+ if (bShowShortDate && this.Period==0 && monthCount<=2)
57025
57041
  this.SplitShortDate();
57026
57042
  }
57027
57043
 
57028
- //分隔在2个月一下的格式
57044
+ //分隔在2个月以内的格式
57029
57045
  this.SplitShortDate=function()
57030
57046
  {
57031
57047
  this.Frame.VerticalInfo=[];
@@ -65168,6 +65184,8 @@ function IChartDrawPicture()
65168
65184
  {
65169
65185
  return false;
65170
65186
  }
65187
+
65188
+ return true;
65171
65189
  }
65172
65190
 
65173
65191
  //是否超出边界了
@@ -65197,6 +65215,8 @@ function IChartDrawPicture()
65197
65215
  var startIndex=0-offset;
65198
65216
  var endIndex=data.Data.length-offset;
65199
65217
 
65218
+ if (this.ClassName=="ChartDrawHLine") return false;
65219
+
65200
65220
  if (xStep>0)
65201
65221
  {
65202
65222
  var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);
@@ -69675,6 +69695,12 @@ function ChartDrawPictureParallelChannel()
69675
69695
  var yMove=this.ChannelWidth/Math.sin(angle)-yStep;
69676
69696
  this.ChannelWidth=Math.sin(angle)*yMove;
69677
69697
  }
69698
+ else
69699
+ {
69700
+ return false;
69701
+ }
69702
+
69703
+ return true;
69678
69704
  }
69679
69705
 
69680
69706
  //0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
@@ -76873,6 +76899,12 @@ function ChartDrawTVLongPosition()
76873
76899
  var item=this.Point[3];
76874
76900
  if (item.Y+yStep>ptCenter.Y) item.Y+=yStep;
76875
76901
  }
76902
+ else
76903
+ {
76904
+ return false;
76905
+ }
76906
+
76907
+ return true;
76876
76908
 
76877
76909
  }
76878
76910
  }
@@ -87816,7 +87848,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
87816
87848
  var xStep=x*pixelTatio;
87817
87849
  var yStep=y*pixelTatio;
87818
87850
  //JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
87819
- drawPicture.Move(xStep,yStep,drag);
87851
+ if (!drawPicture.Move(xStep,yStep,drag)) return false;
87820
87852
 
87821
87853
  return true;
87822
87854
  }
@@ -125,10 +125,12 @@ function JSPopMenu()
125
125
  if (item.Disable===true) trDom.classList.add('UMyChart_DrawTool_Disable_Tr');
126
126
 
127
127
  var prtTdDom=null;
128
- for(var i=0;i<this.AryTDClassName.length;++i)
128
+ var aryTDClassName=this.AryTDClassName;
129
+ if (IFrameSplitOperator.IsNonEmptyArray(item.AryTDClassName)) aryTDClassName=item.AryTDClassName;
130
+ for(var i=0;i<aryTDClassName.length;++i)
129
131
  {
130
132
  var tdDom=document.createElement("td");
131
- tdDom.className=this.AryTDClassName[i];
133
+ tdDom.className=aryTDClassName[i];
132
134
 
133
135
  if (i==0) //图标
134
136
  {
@@ -5494,6 +5494,7 @@ function ChartReport()
5494
5494
  if (item.HeaderBGColor) colItem.HeaderBGColor=item.HeaderBGColor; //表头背景色
5495
5495
  if (IFrameSplitOperator.IsNumber(item.Sort)) colItem.Sort=item.Sort;
5496
5496
  if (IFrameSplitOperator.IsNumber(item.FixedWidth)) colItem.FixedWidth=item.FixedWidth;
5497
+ else if (item.FixedWidth===null) colItem.FixedWidth=null;
5497
5498
  if (IFrameSplitOperator.IsBool(item.EnableDragWidth)) colItem.EnableDragWidth=item.EnableDragWidth;
5498
5499
 
5499
5500
  colItem.IsDrawCallback=false;
@@ -8841,15 +8842,29 @@ function ChartReport()
8841
8842
  }
8842
8843
 
8843
8844
  if (!klineData) return;
8844
- if (!IFrameSplitOperator.IsNonEmptyArray(klineData.Data)) return;
8845
-
8846
- var high=klineData.Data[1];
8847
- var low=klineData.Data[2];
8848
- var aryKLine=
8849
- [
8850
- { Open:klineData.Data[0], High:high, Low:low, Close:klineData.Data[3]},
8851
- //{ Open:klineData.Data[0], High:high, Low:low, Close:klineData.Data[3]}
8852
- ];
8845
+ var aryKLine=[];
8846
+ var high=null, low=null;
8847
+ if (IFrameSplitOperator.IsNonEmptyArray(klineData.AryData))
8848
+ {
8849
+ for(var i=0;i<klineData.AryData.length;++i)
8850
+ {
8851
+ var item=klineData.AryData[i];
8852
+ var kItem={ Open:item[0], High:item[1], Low:item[2], Close:item[3] };
8853
+ if (high==null || high<item[1]) high=item[1];
8854
+ if (low==null || low>item[2]) low=item[2];
8855
+ aryKLine.push(kItem);
8856
+ }
8857
+ }
8858
+ else if (IFrameSplitOperator.IsNonEmptyArray(klineData.Data))
8859
+ {
8860
+ high=klineData.Data[1];
8861
+ low=klineData.Data[2];
8862
+ var kItem={ Open:klineData.Data[0], High:high, Low:low, Close:klineData.Data[3] };
8863
+ aryKLine.push(kItem);
8864
+ }
8865
+
8866
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryKLine)) return;
8867
+
8853
8868
  this.DrawKLineBar(aryKLine, high, low, rtItem);
8854
8869
  }
8855
8870
 
@@ -9153,7 +9168,7 @@ function ChartReport()
9153
9168
  eventID=JSCHART_EVENT_ID.ON_CLICK_REPORT_HEADER;
9154
9169
  }
9155
9170
 
9156
- this.SendClickEvent(eventID, { Data:row, X:x, Y:y , e:e, Inside:insidePoint, UIElement:uiElement});
9171
+ this.SendClickEvent(eventID, { Data:header, X:x, Y:y , e:e, Inside:insidePoint, UIElement:uiElement});
9157
9172
  return { Type:3, Redraw:bRedraw, Header:header }; //表头
9158
9173
  }
9159
9174
 
@@ -939,6 +939,11 @@ input[type="color"] {
939
939
  margin-right: 10px;
940
940
  }
941
941
 
942
+ .UMyChart_MenuItem_Td_None
943
+ {
944
+ display:none;
945
+ }
946
+
942
947
 
943
948
  .UMyChart_MenuItem_Tr:hover
944
949
  {
@@ -1987,6 +1987,16 @@ HQData.Report_RequestStockData=function(data, callback)
1987
1987
 
1988
1988
  //K线
1989
1989
  var kData={ Data:[newItem[3], newItem[4], newItem[5], newItem[6]] };
1990
+ //多根K线使用AryData, 单根K线用Data
1991
+ kData.AryData=
1992
+ [
1993
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
1994
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
1995
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
1996
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
1997
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
1998
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
1999
+ ]
1990
2000
  newItem[33]=kData;
1991
2001
 
1992
2002
 
@@ -4415,11 +4415,14 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4415
4415
  {
4416
4416
  var item=option.GlobalOption;
4417
4417
  if (IFrameSplitOperator.IsBool(item.IsValueFullRange)) chart.GlobalOption.IsValueFullRange=item.IsValueFullRange;
4418
+ if (IFrameSplitOperator.IsBool(item.EnableXShortDate)) chart.GlobalOption.EnableXShortDate=item.EnableXShortDate;
4419
+
4418
4420
  if (item.SelectedBorder)
4419
4421
  {
4420
4422
  var subItem=item.SelectedBorder;
4421
4423
  if (IFrameSplitOperator.IsNumber(subItem.Mode)) chart.GlobalOption.SelectedBorder.Mode=subItem.Mode;
4422
4424
  }
4425
+
4423
4426
  }
4424
4427
 
4425
4428
  if (option.EnableYDrag)
@@ -7491,6 +7494,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7491
7494
  TradeStatus:null, //当前交易状态 { Date, Time:数据最后更新的时间, Status: }
7492
7495
 
7493
7496
  LatestPoint:null, //最新的点位置 { X:, Y: }
7497
+
7498
+ EnableXShortDate:true,
7494
7499
  };
7495
7500
 
7496
7501
  this.VerticalDrag; //通过X轴左右拖动数据(手势才有)
@@ -9009,6 +9014,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9009
9014
  {
9010
9015
  this.DrawDynamicInfo();
9011
9016
  }
9017
+ else
9018
+ {
9019
+ return;
9020
+ }
9012
9021
  }
9013
9022
 
9014
9023
  drag.LastMove.X=e.clientX;
@@ -14166,7 +14175,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
14166
14175
  var xStep=x*pixelTatio;
14167
14176
  var yStep=y*pixelTatio;
14168
14177
  //JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
14169
- drawPicture.Move(xStep,yStep,drag);
14178
+ if (!drawPicture.Move(xStep,yStep,drag)) return false;
14170
14179
 
14171
14180
  return true;
14172
14181
  }
@@ -20808,11 +20817,13 @@ function MinuteFrame()
20808
20817
 
20809
20818
  this.DrawToolbar=function()
20810
20819
  {
20811
- if (this.ToolbarButtonStyle==1) return;
20812
- if (g_JSChartResource.IsDOMFrameToolbar===true) return;
20813
-
20820
+ var bDraw=true;
20821
+ if (this.ToolbarButtonStyle==1) bDraw=false;
20822
+ if (g_JSChartResource.IsDOMFrameToolbar===true) bDraw=false;
20814
20823
  if (!this.DivFrameToolbar) return;
20815
- this.DivFrameToolbar.Show(this.Identify);
20824
+
20825
+ if (!bDraw) this.HideToolbar();
20826
+ else this.DivFrameToolbar.Show(this.Identify);
20816
20827
  }
20817
20828
 
20818
20829
  //手绘,不用DOM,使用DOM太麻烦了
@@ -23043,11 +23054,13 @@ function KLineFrame()
23043
23054
 
23044
23055
  this.DrawToolbar=function()
23045
23056
  {
23046
- if (this.ToolbarButtonStyle==1) return;
23047
- if (g_JSChartResource.IsDOMFrameToolbar===true) return;
23057
+ var bDraw=true;
23058
+ if (this.ToolbarButtonStyle==1) bDraw=false;
23059
+ if (g_JSChartResource.IsDOMFrameToolbar===true) bDraw=false;
23048
23060
  if (!this.DivFrameToolbar) return;
23049
23061
 
23050
- this.DivFrameToolbar.Show(this.Identify);
23062
+ if (!bDraw) this.HideToolbar();
23063
+ else this.DivFrameToolbar.Show(this.Identify);
23051
23064
  }
23052
23065
 
23053
23066
  //手绘,不用DOM,使用DOM太麻烦了
@@ -34488,7 +34501,7 @@ function ChartKLine()
34488
34501
  {
34489
34502
  var left=this.ChartBorder.GetLeft();
34490
34503
  var right=this.ChartBorder.GetRight();
34491
- var top=this.ChartBorder.GetTopEx();
34504
+ var top=this.ChartBorder.GetTop();
34492
34505
  var bottom=this.ChartBorder.GetBottom();
34493
34506
  }
34494
34507
 
@@ -61079,6 +61092,7 @@ function FrameSplitKLineX()
61079
61092
  var lastYear=null, lastMonth=null;
61080
61093
  var minDistance=12;
61081
61094
  var monthCount=0;
61095
+ var globalOption=this.Frame.GlobalOption;
61082
61096
  for(var i=0, index=xOffset, distance=minDistance;i<xPointCount && index<this.Frame.Data.Data.length ;++i,++index)
61083
61097
  {
61084
61098
  var year=parseInt(this.Frame.Data.Data[index].Date/10000);
@@ -61116,12 +61130,14 @@ function FrameSplitKLineX()
61116
61130
  this.Frame.VerticalInfo.push(info);
61117
61131
  distance=0;
61118
61132
  }
61119
-
61120
- if (this.Period==0 && monthCount<=2)
61133
+
61134
+ var bShowShortDate=true; //日线显示在2个月以下的 显示格式
61135
+ if (globalOption && IFrameSplitOperator.IsBool(globalOption.EnableXShortDate)) bShowShortDate=globalOption.EnableXShortDate;
61136
+ if (bShowShortDate && this.Period==0 && monthCount<=2)
61121
61137
  this.SplitShortDate();
61122
61138
  }
61123
61139
 
61124
- //分隔在2个月一下的格式
61140
+ //分隔在2个月以内的格式
61125
61141
  this.SplitShortDate=function()
61126
61142
  {
61127
61143
  this.Frame.VerticalInfo=[];
@@ -69264,6 +69280,8 @@ function IChartDrawPicture()
69264
69280
  {
69265
69281
  return false;
69266
69282
  }
69283
+
69284
+ return true;
69267
69285
  }
69268
69286
 
69269
69287
  //是否超出边界了
@@ -69293,6 +69311,8 @@ function IChartDrawPicture()
69293
69311
  var startIndex=0-offset;
69294
69312
  var endIndex=data.Data.length-offset;
69295
69313
 
69314
+ if (this.ClassName=="ChartDrawHLine") return false;
69315
+
69296
69316
  if (xStep>0)
69297
69317
  {
69298
69318
  var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);
@@ -73771,6 +73791,12 @@ function ChartDrawPictureParallelChannel()
73771
73791
  var yMove=this.ChannelWidth/Math.sin(angle)-yStep;
73772
73792
  this.ChannelWidth=Math.sin(angle)*yMove;
73773
73793
  }
73794
+ else
73795
+ {
73796
+ return false;
73797
+ }
73798
+
73799
+ return true;
73774
73800
  }
73775
73801
 
73776
73802
  //0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
@@ -80969,6 +80995,12 @@ function ChartDrawTVLongPosition()
80969
80995
  var item=this.Point[3];
80970
80996
  if (item.Y+yStep>ptCenter.Y) item.Y+=yStep;
80971
80997
  }
80998
+ else
80999
+ {
81000
+ return false;
81001
+ }
81002
+
81003
+ return true;
80972
81004
 
80973
81005
  }
80974
81006
  }
@@ -91912,7 +91944,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91912
91944
  var xStep=x*pixelTatio;
91913
91945
  var yStep=y*pixelTatio;
91914
91946
  //JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
91915
- drawPicture.Move(xStep,yStep,drag);
91947
+ if (!drawPicture.Move(xStep,yStep,drag)) return false;
91916
91948
 
91917
91949
  return true;
91918
91950
  }
@@ -145884,6 +145916,7 @@ function ChartReport()
145884
145916
  if (item.HeaderBGColor) colItem.HeaderBGColor=item.HeaderBGColor; //表头背景色
145885
145917
  if (IFrameSplitOperator.IsNumber(item.Sort)) colItem.Sort=item.Sort;
145886
145918
  if (IFrameSplitOperator.IsNumber(item.FixedWidth)) colItem.FixedWidth=item.FixedWidth;
145919
+ else if (item.FixedWidth===null) colItem.FixedWidth=null;
145887
145920
  if (IFrameSplitOperator.IsBool(item.EnableDragWidth)) colItem.EnableDragWidth=item.EnableDragWidth;
145888
145921
 
145889
145922
  colItem.IsDrawCallback=false;
@@ -149231,15 +149264,29 @@ function ChartReport()
149231
149264
  }
149232
149265
 
149233
149266
  if (!klineData) return;
149234
- if (!IFrameSplitOperator.IsNonEmptyArray(klineData.Data)) return;
149267
+ var aryKLine=[];
149268
+ var high=null, low=null;
149269
+ if (IFrameSplitOperator.IsNonEmptyArray(klineData.AryData))
149270
+ {
149271
+ for(var i=0;i<klineData.AryData.length;++i)
149272
+ {
149273
+ var item=klineData.AryData[i];
149274
+ var kItem={ Open:item[0], High:item[1], Low:item[2], Close:item[3] };
149275
+ if (high==null || high<item[1]) high=item[1];
149276
+ if (low==null || low>item[2]) low=item[2];
149277
+ aryKLine.push(kItem);
149278
+ }
149279
+ }
149280
+ else if (IFrameSplitOperator.IsNonEmptyArray(klineData.Data))
149281
+ {
149282
+ high=klineData.Data[1];
149283
+ low=klineData.Data[2];
149284
+ var kItem={ Open:klineData.Data[0], High:high, Low:low, Close:klineData.Data[3] };
149285
+ aryKLine.push(kItem);
149286
+ }
149235
149287
 
149236
- var high=klineData.Data[1];
149237
- var low=klineData.Data[2];
149238
- var aryKLine=
149239
- [
149240
- { Open:klineData.Data[0], High:high, Low:low, Close:klineData.Data[3]},
149241
- //{ Open:klineData.Data[0], High:high, Low:low, Close:klineData.Data[3]}
149242
- ];
149288
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryKLine)) return;
149289
+
149243
149290
  this.DrawKLineBar(aryKLine, high, low, rtItem);
149244
149291
  }
149245
149292
 
@@ -149543,7 +149590,7 @@ function ChartReport()
149543
149590
  eventID=JSCHART_EVENT_ID.ON_CLICK_REPORT_HEADER;
149544
149591
  }
149545
149592
 
149546
- this.SendClickEvent(eventID, { Data:row, X:x, Y:y , e:e, Inside:insidePoint, UIElement:uiElement});
149593
+ this.SendClickEvent(eventID, { Data:header, X:x, Y:y , e:e, Inside:insidePoint, UIElement:uiElement});
149547
149594
  return { Type:3, Redraw:bRedraw, Header:header }; //表头
149548
149595
  }
149549
149596
 
@@ -154243,7 +154290,7 @@ function ScrollBarBGChart()
154243
154290
 
154244
154291
 
154245
154292
 
154246
- var HQCHART_VERSION="1.1.15234";
154293
+ var HQCHART_VERSION="1.1.15244";
154247
154294
 
154248
154295
  function PrintHQChartVersion()
154249
154296
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.15234";
8
+ var HQCHART_VERSION="1.1.15244";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -57519,6 +57519,16 @@ HQData.Report_RequestStockData=function(data, callback)
57519
57519
 
57520
57520
  //K线
57521
57521
  var kData={ Data:[newItem[3], newItem[4], newItem[5], newItem[6]] };
57522
+ //多根K线使用AryData, 单根K线用Data
57523
+ kData.AryData=
57524
+ [
57525
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
57526
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
57527
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
57528
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
57529
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
57530
+ [newItem[3], newItem[4], newItem[5], newItem[6]],
57531
+ ]
57522
57532
  newItem[33]=kData;
57523
57533
 
57524
57534
 
@@ -4459,11 +4459,14 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4459
4459
  {
4460
4460
  var item=option.GlobalOption;
4461
4461
  if (IFrameSplitOperator.IsBool(item.IsValueFullRange)) chart.GlobalOption.IsValueFullRange=item.IsValueFullRange;
4462
+ if (IFrameSplitOperator.IsBool(item.EnableXShortDate)) chart.GlobalOption.EnableXShortDate=item.EnableXShortDate;
4463
+
4462
4464
  if (item.SelectedBorder)
4463
4465
  {
4464
4466
  var subItem=item.SelectedBorder;
4465
4467
  if (IFrameSplitOperator.IsNumber(subItem.Mode)) chart.GlobalOption.SelectedBorder.Mode=subItem.Mode;
4466
4468
  }
4469
+
4467
4470
  }
4468
4471
 
4469
4472
  if (option.EnableYDrag)
@@ -7535,6 +7538,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7535
7538
  TradeStatus:null, //当前交易状态 { Date, Time:数据最后更新的时间, Status: }
7536
7539
 
7537
7540
  LatestPoint:null, //最新的点位置 { X:, Y: }
7541
+
7542
+ EnableXShortDate:true,
7538
7543
  };
7539
7544
 
7540
7545
  this.VerticalDrag; //通过X轴左右拖动数据(手势才有)
@@ -9053,6 +9058,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9053
9058
  {
9054
9059
  this.DrawDynamicInfo();
9055
9060
  }
9061
+ else
9062
+ {
9063
+ return;
9064
+ }
9056
9065
  }
9057
9066
 
9058
9067
  drag.LastMove.X=e.clientX;
@@ -14210,7 +14219,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
14210
14219
  var xStep=x*pixelTatio;
14211
14220
  var yStep=y*pixelTatio;
14212
14221
  //JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
14213
- drawPicture.Move(xStep,yStep,drag);
14222
+ if (!drawPicture.Move(xStep,yStep,drag)) return false;
14214
14223
 
14215
14224
  return true;
14216
14225
  }
@@ -20852,11 +20861,13 @@ function MinuteFrame()
20852
20861
 
20853
20862
  this.DrawToolbar=function()
20854
20863
  {
20855
- if (this.ToolbarButtonStyle==1) return;
20856
- if (g_JSChartResource.IsDOMFrameToolbar===true) return;
20857
-
20864
+ var bDraw=true;
20865
+ if (this.ToolbarButtonStyle==1) bDraw=false;
20866
+ if (g_JSChartResource.IsDOMFrameToolbar===true) bDraw=false;
20858
20867
  if (!this.DivFrameToolbar) return;
20859
- this.DivFrameToolbar.Show(this.Identify);
20868
+
20869
+ if (!bDraw) this.HideToolbar();
20870
+ else this.DivFrameToolbar.Show(this.Identify);
20860
20871
  }
20861
20872
 
20862
20873
  //手绘,不用DOM,使用DOM太麻烦了
@@ -23087,11 +23098,13 @@ function KLineFrame()
23087
23098
 
23088
23099
  this.DrawToolbar=function()
23089
23100
  {
23090
- if (this.ToolbarButtonStyle==1) return;
23091
- if (g_JSChartResource.IsDOMFrameToolbar===true) return;
23101
+ var bDraw=true;
23102
+ if (this.ToolbarButtonStyle==1) bDraw=false;
23103
+ if (g_JSChartResource.IsDOMFrameToolbar===true) bDraw=false;
23092
23104
  if (!this.DivFrameToolbar) return;
23093
23105
 
23094
- this.DivFrameToolbar.Show(this.Identify);
23106
+ if (!bDraw) this.HideToolbar();
23107
+ else this.DivFrameToolbar.Show(this.Identify);
23095
23108
  }
23096
23109
 
23097
23110
  //手绘,不用DOM,使用DOM太麻烦了
@@ -34532,7 +34545,7 @@ function ChartKLine()
34532
34545
  {
34533
34546
  var left=this.ChartBorder.GetLeft();
34534
34547
  var right=this.ChartBorder.GetRight();
34535
- var top=this.ChartBorder.GetTopEx();
34548
+ var top=this.ChartBorder.GetTop();
34536
34549
  var bottom=this.ChartBorder.GetBottom();
34537
34550
  }
34538
34551
 
@@ -61123,6 +61136,7 @@ function FrameSplitKLineX()
61123
61136
  var lastYear=null, lastMonth=null;
61124
61137
  var minDistance=12;
61125
61138
  var monthCount=0;
61139
+ var globalOption=this.Frame.GlobalOption;
61126
61140
  for(var i=0, index=xOffset, distance=minDistance;i<xPointCount && index<this.Frame.Data.Data.length ;++i,++index)
61127
61141
  {
61128
61142
  var year=parseInt(this.Frame.Data.Data[index].Date/10000);
@@ -61160,12 +61174,14 @@ function FrameSplitKLineX()
61160
61174
  this.Frame.VerticalInfo.push(info);
61161
61175
  distance=0;
61162
61176
  }
61163
-
61164
- if (this.Period==0 && monthCount<=2)
61177
+
61178
+ var bShowShortDate=true; //日线显示在2个月以下的 显示格式
61179
+ if (globalOption && IFrameSplitOperator.IsBool(globalOption.EnableXShortDate)) bShowShortDate=globalOption.EnableXShortDate;
61180
+ if (bShowShortDate && this.Period==0 && monthCount<=2)
61165
61181
  this.SplitShortDate();
61166
61182
  }
61167
61183
 
61168
- //分隔在2个月一下的格式
61184
+ //分隔在2个月以内的格式
61169
61185
  this.SplitShortDate=function()
61170
61186
  {
61171
61187
  this.Frame.VerticalInfo=[];
@@ -69308,6 +69324,8 @@ function IChartDrawPicture()
69308
69324
  {
69309
69325
  return false;
69310
69326
  }
69327
+
69328
+ return true;
69311
69329
  }
69312
69330
 
69313
69331
  //是否超出边界了
@@ -69337,6 +69355,8 @@ function IChartDrawPicture()
69337
69355
  var startIndex=0-offset;
69338
69356
  var endIndex=data.Data.length-offset;
69339
69357
 
69358
+ if (this.ClassName=="ChartDrawHLine") return false;
69359
+
69340
69360
  if (xStep>0)
69341
69361
  {
69342
69362
  var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);
@@ -73815,6 +73835,12 @@ function ChartDrawPictureParallelChannel()
73815
73835
  var yMove=this.ChannelWidth/Math.sin(angle)-yStep;
73816
73836
  this.ChannelWidth=Math.sin(angle)*yMove;
73817
73837
  }
73838
+ else
73839
+ {
73840
+ return false;
73841
+ }
73842
+
73843
+ return true;
73818
73844
  }
73819
73845
 
73820
73846
  //0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
@@ -81013,6 +81039,12 @@ function ChartDrawTVLongPosition()
81013
81039
  var item=this.Point[3];
81014
81040
  if (item.Y+yStep>ptCenter.Y) item.Y+=yStep;
81015
81041
  }
81042
+ else
81043
+ {
81044
+ return false;
81045
+ }
81046
+
81047
+ return true;
81016
81048
 
81017
81049
  }
81018
81050
  }
@@ -91956,7 +91988,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
91956
91988
  var xStep=x*pixelTatio;
91957
91989
  var yStep=y*pixelTatio;
91958
91990
  //JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
91959
- drawPicture.Move(xStep,yStep,drag);
91991
+ if (!drawPicture.Move(xStep,yStep,drag)) return false;
91960
91992
 
91961
91993
  return true;
91962
91994
  }
@@ -145928,6 +145960,7 @@ function ChartReport()
145928
145960
  if (item.HeaderBGColor) colItem.HeaderBGColor=item.HeaderBGColor; //表头背景色
145929
145961
  if (IFrameSplitOperator.IsNumber(item.Sort)) colItem.Sort=item.Sort;
145930
145962
  if (IFrameSplitOperator.IsNumber(item.FixedWidth)) colItem.FixedWidth=item.FixedWidth;
145963
+ else if (item.FixedWidth===null) colItem.FixedWidth=null;
145931
145964
  if (IFrameSplitOperator.IsBool(item.EnableDragWidth)) colItem.EnableDragWidth=item.EnableDragWidth;
145932
145965
 
145933
145966
  colItem.IsDrawCallback=false;
@@ -149275,15 +149308,29 @@ function ChartReport()
149275
149308
  }
149276
149309
 
149277
149310
  if (!klineData) return;
149278
- if (!IFrameSplitOperator.IsNonEmptyArray(klineData.Data)) return;
149311
+ var aryKLine=[];
149312
+ var high=null, low=null;
149313
+ if (IFrameSplitOperator.IsNonEmptyArray(klineData.AryData))
149314
+ {
149315
+ for(var i=0;i<klineData.AryData.length;++i)
149316
+ {
149317
+ var item=klineData.AryData[i];
149318
+ var kItem={ Open:item[0], High:item[1], Low:item[2], Close:item[3] };
149319
+ if (high==null || high<item[1]) high=item[1];
149320
+ if (low==null || low>item[2]) low=item[2];
149321
+ aryKLine.push(kItem);
149322
+ }
149323
+ }
149324
+ else if (IFrameSplitOperator.IsNonEmptyArray(klineData.Data))
149325
+ {
149326
+ high=klineData.Data[1];
149327
+ low=klineData.Data[2];
149328
+ var kItem={ Open:klineData.Data[0], High:high, Low:low, Close:klineData.Data[3] };
149329
+ aryKLine.push(kItem);
149330
+ }
149279
149331
 
149280
- var high=klineData.Data[1];
149281
- var low=klineData.Data[2];
149282
- var aryKLine=
149283
- [
149284
- { Open:klineData.Data[0], High:high, Low:low, Close:klineData.Data[3]},
149285
- //{ Open:klineData.Data[0], High:high, Low:low, Close:klineData.Data[3]}
149286
- ];
149332
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryKLine)) return;
149333
+
149287
149334
  this.DrawKLineBar(aryKLine, high, low, rtItem);
149288
149335
  }
149289
149336
 
@@ -149587,7 +149634,7 @@ function ChartReport()
149587
149634
  eventID=JSCHART_EVENT_ID.ON_CLICK_REPORT_HEADER;
149588
149635
  }
149589
149636
 
149590
- this.SendClickEvent(eventID, { Data:row, X:x, Y:y , e:e, Inside:insidePoint, UIElement:uiElement});
149637
+ this.SendClickEvent(eventID, { Data:header, X:x, Y:y , e:e, Inside:insidePoint, UIElement:uiElement});
149591
149638
  return { Type:3, Redraw:bRedraw, Header:header }; //表头
149592
149639
  }
149593
149640
 
@@ -157694,10 +157741,12 @@ function JSPopMenu()
157694
157741
  if (item.Disable===true) trDom.classList.add('UMyChart_DrawTool_Disable_Tr');
157695
157742
 
157696
157743
  var prtTdDom=null;
157697
- for(var i=0;i<this.AryTDClassName.length;++i)
157744
+ var aryTDClassName=this.AryTDClassName;
157745
+ if (IFrameSplitOperator.IsNonEmptyArray(item.AryTDClassName)) aryTDClassName=item.AryTDClassName;
157746
+ for(var i=0;i<aryTDClassName.length;++i)
157698
157747
  {
157699
157748
  var tdDom=document.createElement("td");
157700
- tdDom.className=this.AryTDClassName[i];
157749
+ tdDom.className=aryTDClassName[i];
157701
157750
 
157702
157751
  if (i==0) //图标
157703
157752
  {
@@ -166300,7 +166349,7 @@ function HQChartScriptWorker()
166300
166349
 
166301
166350
 
166302
166351
 
166303
- var HQCHART_VERSION="1.1.15234";
166352
+ var HQCHART_VERSION="1.1.15244";
166304
166353
 
166305
166354
  function PrintHQChartVersion()
166306
166355
  {