hqchart 1.1.12516 → 1.1.12525

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.
@@ -3853,9 +3853,9 @@ this.HistoryData;this.ExportData=this.ExportArrayData;this.Draw=function(){if(!t
3853
3853
  function ChartStick(){this.newMethod=IChartPainting;//派生
3854
3854
  this.newMethod();delete this.newMethod;this.Color="rgb(255,193,37)";//线段颜色
3855
3855
  this.LineWidth;//线段宽度
3856
- this.ClassName='ChartStick';this.ExportData=this.ExportArrayData;this.DrawLine=function(){if(!this.Data||!this.Data.Data)return;var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();if(isHScreen===true)chartright=this.ChartBorder.GetBottom();var xPointCount=this.ChartFrame.XPointCount;this.Canvas.save();if(this.LineWidth>0)this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();var bFirstPoint=true;var drawCount=0;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(value==null)continue;var x=this.ChartFrame.GetXFromIndex(j);var y=this.ChartFrame.GetYFromData(value);if(x>chartright)break;if(bFirstPoint){this.Canvas.strokeStyle=this.Color;this.Canvas.beginPath();if(isHScreen)this.Canvas.moveTo(y,x);else this.Canvas.moveTo(x,y);bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(y,x);else this.Canvas.lineTo(x,y);}++drawCount;}if(drawCount>0)this.Canvas.stroke();this.Canvas.restore();};this.DrawStick=function(){if(!this.Data||!this.Data.Data)return;var bHScreen=this.ChartFrame.IsHScreen===true;var chartright=this.ChartBorder.GetRight();if(bHScreen)chartright=this.ChartBorder.GetBottom();var xPointCount=this.ChartFrame.XPointCount;var yBottom=this.ChartBorder.GetBottom();var xLeft=this.ChartBorder.GetLeft();this.Canvas.save();this.Canvas.strokeStyle=this.Color;if(this.LineWidth)this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();var lineWidth=this.Canvas.lineWidth;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(value==null)continue;var x=this.ChartFrame.GetXFromIndex(j);var y=this.ChartFrame.GetYFromData(value);if(x>chartright)break;this.Canvas.beginPath();if(bHScreen){this.Canvas.moveTo(xLeft,x);this.Canvas.lineTo(y,x);this.Canvas.stroke();}else{var xFix=ToFixedPoint2(lineWidth,x);this.Canvas.moveTo(xFix,y);this.Canvas.lineTo(xFix,yBottom);}this.Canvas.stroke();}this.Canvas.restore();};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}if(!this.Data||!this.Data.Data)return;this.DrawStick();};}//通达信语法 LINESTICK 支持横屏
3856
+ this.ClassName='ChartStick';this.ExportData=this.ExportArrayData;this.DrawLine=function(){if(!this.Data||!this.Data.Data)return;var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();if(isHScreen===true)chartright=this.ChartBorder.GetBottom();var xPointCount=this.ChartFrame.XPointCount;this.Canvas.save();if(this.LineWidth>0)this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();var bFirstPoint=true;var drawCount=0;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(value==null)continue;var x=this.ChartFrame.GetXFromIndex(j);var y=this.ChartFrame.GetYFromData(value);if(x>chartright)break;if(bFirstPoint){this.Canvas.strokeStyle=this.Color;this.Canvas.beginPath();if(isHScreen)this.Canvas.moveTo(y,x);else this.Canvas.moveTo(x,y);bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(y,x);else this.Canvas.lineTo(x,y);}++drawCount;}if(drawCount>0)this.Canvas.stroke();this.Canvas.restore();};this.DrawStick=function(){if(!this.Data||!this.Data.Data)return;var bHScreen=this.ChartFrame.IsHScreen===true;var chartright=this.ChartBorder.GetRight();if(bHScreen)chartright=this.ChartBorder.GetBottom();var xPointCount=this.ChartFrame.XPointCount;var yBottom=this.ChartBorder.GetBottom();var xLeft=this.ChartBorder.GetLeft();this.Canvas.save();this.Canvas.strokeStyle=this.Color;if(this.LineWidth)this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();var lineWidth=this.Canvas.lineWidth;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(value==null)continue;var x=this.ChartFrame.GetXFromIndex(j);var y=this.ChartFrame.GetYFromData(value);if(x>chartright)break;this.Canvas.beginPath();if(bHScreen){this.Canvas.moveTo(xLeft,x);this.Canvas.lineTo(y,x);this.Canvas.stroke();}else{var xFix=ToFixedPoint2(lineWidth,x);this.Canvas.moveTo(xFix,y);this.Canvas.lineTo(xFix,yBottom);}this.Canvas.stroke();}this.Canvas.restore();};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(this.IsHideScriptIndex())return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}if(!this.Data||!this.Data.Data)return;this.DrawStick();};}//通达信语法 LINESTICK 支持横屏
3857
3857
  function ChartLineStick(){this.newMethod=ChartStick;//派生
3858
- this.newMethod();delete this.newMethod;this.ClassName='ChartLineStick';this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}this.DrawStick();this.DrawLine();};}//通达信语法 VOLSTICK 支持横屏
3858
+ this.newMethod();delete this.newMethod;this.ClassName='ChartLineStick';this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}this.DrawStick();this.DrawLine();};}//通达信语法 VOLSTICK 支持横屏
3859
3859
  function ChartVolStick(){this.newMethod=IChartPainting;//派生
3860
3860
  this.newMethod();delete this.newMethod;this.UpColor=g_JSChartResource.UpBarColor;this.DownColor=g_JSChartResource.DownBarColor;this.HistoryData;//历史数据
3861
3861
  this.KLineDrawType=0;this.ClassName='ChartVolStick';this.PtInChart=this.PtInBar;this.DrawSelectedStatus=this.DrawLinePoint;this.ExportData=this.ExportArrayData;this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.ChartFrame.IsHScreen===true){this.HScreenDraw();return;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Left;var isMinute=this.IsMinuteFrame();var yBottom=this.ChartFrame.GetYFromData(0);if(dataWidth>=4){yBottom=ToFixedRect(yBottom);for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;if(value==0)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var y=this.ChartFrame.GetYFromData(value);var barColor=this.GetBarColor(kItem);var bUp=barColor.IsUp;this.Canvas.fillStyle=barColor.Color;var height=ToFixedRect(Math.abs(yBottom-y)>=1?yBottom-y:1);//高度调整为整数, 如果小于1, 统一使用1
@@ -4706,7 +4706,7 @@ this.Color="#696969";//input type="color"不支持rgb的颜色格式
4706
4706
  //this.Left=5;
4707
4707
  this.Top=5*GetDevicePixelRatio();this.Width=45*GetDevicePixelRatio();//宽度
4708
4708
  this.SetOption=function(option){var pixelRatio=GetDevicePixelRatio();if(!option)return;if(option.Width>10)this.Width=option.Width*pixelRatio;};this.Clear=function(){if(this.ToolsDiv)this.ChartBorder.UIElement.parentNode.removeChild(this.ToolsDiv);};this.Draw=function(){var _this15=this;if(this.SizeChange==false)return;//工具列表
4709
- var TOOL_LIST=[[{HTML:{Title:'线段',IClass:'iconfont icon-draw_line',ID:'icon-segment'},Name:'线段'},{HTML:{Title:'尺子',IClass:'iconfont icon-ruler',ID:'icon_ruler'},Name:'尺子'},{HTML:{Title:'射线',IClass:'iconfont icon-draw_rays',ID:'icon-beam'},Name:'射线'},{HTML:{Title:'标价线',IClass:'iconfont icon-price_line',ID:'icon-price-line'},Name:'标价线'},{HTML:{Title:'垂直线',IClass:'iconfont icon-vertical_line',ID:'icon-vertical-line'},Name:'垂直线'},{HTML:{Title:'箭头',IClass:'iconfont icon-draw_rays',ID:'icon-beam2'},Name:'箭头'},{HTML:{Title:'趋势线',IClass:'iconfont icon-draw_trendline',ID:'icon-trendline'},Name:'趋势线'},{HTML:{Title:'水平线',IClass:'iconfont icon-draw_hline',ID:'icon-hline'},Name:'水平线'},{HTML:{Title:'水平线段',IClass:'iconfont icon-draw_hlinesegment',ID:'icon-hlineseg'},Name:'水平线段'},{HTML:{Title:'平行射线',IClass:'iconfont icon-draw_p_rays_lines',ID:'icon-rayslineseg'},Name:'平行射线'},{HTML:{Title:'平行线',IClass:'iconfont icon-draw_parallel_lines',ID:'icon-parallellines'},Name:'平行线'},{HTML:{Title:'平行通道',IClass:'iconfont icon-draw_parallelchannel',ID:'icon-parallelchannel'},Name:'平行通道'},{HTML:{Title:'价格通道线',IClass:'iconfont icon-draw_pricechannel',ID:'icon-pricechannel'},Name:'价格通道线'},{HTML:{Title:'M头W底',IClass:'iconfont icon-draw_wavemw',ID:'icon-wavemw'},Name:'M头W底'},{HTML:{Title:'头肩型',IClass:'iconfont icon-draw_head_shoulders_bt',ID:'icon-Head-Shoulders'},Name:'头肩型'},{HTML:{Title:'波浪尺',IClass:'iconfont icon-waveruler',ID:'icon-wave-ruler'},Name:'波浪尺'},{HTML:{Title:'AB波浪尺',IClass:'iconfont icon-waveruler',ID:'icon-wave-ruler'},Name:'AB波浪尺'},{HTML:{Title:'箱型线',IClass:'iconfont icon-draw_box',ID:'icon-drawbox'},Name:'箱型线'},{HTML:{Title:'涂鸦线段',IClass:'iconfont icon-draw_line',ID:'icon-segment2'},Name:'涂鸦线段'}],[{HTML:{Title:'圆弧',IClass:'iconfont icon-draw_arc',ID:'icon-arc'},Name:'圆弧线'},{HTML:{Title:'矩形',IClass:'iconfont icon-rectangle',ID:'icon-rect'},Name:'矩形'},{HTML:{Title:'平行四边形',IClass:'iconfont icon-draw_quadrangle',ID:'icon-quad'},Name:'平行四边形'},{HTML:{Title:'三角形',IClass:'iconfont icon-draw_triangle',ID:'icon-triangle'},Name:'三角形'},{HTML:{Title:'圆',IClass:'iconfont icon-draw_circle',ID:'icon-circle'},Name:'圆'},{HTML:{Title:'对称角度',IClass:'iconfont icon-draw_symangle',ID:'icon-symangle'},Name:'对称角度'}],[{HTML:{Title:'文本',IClass:'iconfont icon-draw_text',ID:'icon-text'},Name:'文本'},{HTML:{Title:'向上箭头',IClass:'iconfont icon-arrow_up',ID:'icon-arrowup'},Name:'icon-arrow_up'},{HTML:{Title:'向下箭头',IClass:'iconfont icon-arrow_down',ID:'icon-arrowdown'},Name:'icon-arrow_down'},{HTML:{Title:'向左箭头',IClass:'iconfont icon-arrow_left',ID:'icon-arrowleft'},Name:'icon-arrow_left'},{HTML:{Title:'向右箭头',IClass:'iconfont icon-arrow_right',ID:'icon-arrowright'},Name:'icon-arrow_right'}],[{HTML:{Title:'江恩角度线',IClass:'iconfont icon-draw_gannfan',ID:'icon-gannfan'},Name:'江恩角度线'},{HTML:{Title:'斐波那契周期线',IClass:'iconfont icon-draw_fibonacci',ID:'icon-fibonacci'},Name:'斐波那契周期线'},{HTML:{Title:'阻速线',IClass:'iconfont icon-draw_resline',ID:'icon-resline'},Name:'阻速线'},{HTML:{Title:'黄金分割',IClass:'iconfont icon-draw_goldensection',ID:'icon-goldensection'},Name:'黄金分割'},{HTML:{Title:'百分比线',IClass:'iconfont icon-draw_percentage',ID:'icon-percentage'},Name:'百分比线'},{HTML:{Title:'波段线',IClass:'iconfont icon-draw_waveband',ID:'icon-waveband'},Name:'波段线'},{HTML:{Title:'线形回归线',IClass:'iconfont icon-linear_3',ID:'icon-waveband2'},Name:'线形回归线'},{HTML:{Title:'线形回归带',IClass:'iconfont icon-linear_1',ID:'icon-waveband3'},Name:'线形回归带'},{HTML:{Title:'延长线形回归带',IClass:'iconfont icon-linear_2',ID:'icon-waveband5'},Name:'延长线形回归带'}],[{HTML:{Title:'全部删除',IClass:'iconfont icon-recycle_bin',ID:'icon-delete'},Name:'全部删除'}]];var hqChart=this.HQChart;if(!this.ToolsDiv){var div=document.createElement("div");div.className='drawtools';div.id=this.ID;var spanList="";//一层菜单
4709
+ var TOOL_LIST=[[{HTML:{Title:'线段',IClass:'iconfont icon-draw_line',ID:'icon-segment'},Name:'线段'},{HTML:{Title:'尺子',IClass:'iconfont icon-ruler',ID:'icon_ruler'},Name:'尺子'},{HTML:{Title:'射线',IClass:'iconfont icon-draw_rays',ID:'icon-beam'},Name:'射线'},{HTML:{Title:'标价线',IClass:'iconfont icon-price_line',ID:'icon-price-line'},Name:'标价线'},{HTML:{Title:'垂直线',IClass:'iconfont icon-vertical_line',ID:'icon-vertical-line'},Name:'垂直线'},{HTML:{Title:'箭头',IClass:'iconfont icon-draw_rays',ID:'icon-beam2'},Name:'箭头'},{HTML:{Title:'趋势线',IClass:'iconfont icon-draw_trendline',ID:'icon-trendline'},Name:'趋势线'},{HTML:{Title:'水平线',IClass:'iconfont icon-draw_hline',ID:'icon-hline'},Name:'水平线'},{HTML:{Title:'水平线段',IClass:'iconfont icon-draw_hlinesegment',ID:'icon-hlineseg'},Name:'水平线段'},{HTML:{Title:'平行射线',IClass:'iconfont icon-draw_p_rays_lines',ID:'icon-rayslineseg'},Name:'平行射线'},{HTML:{Title:'平行线',IClass:'iconfont icon-draw_parallel_lines',ID:'icon-parallellines'},Name:'平行线'},{HTML:{Title:'平行通道',IClass:'iconfont icon-draw_parallelchannel',ID:'icon-parallelchannel'},Name:'平行通道'},{HTML:{Title:'价格通道线',IClass:'iconfont icon-draw_pricechannel',ID:'icon-pricechannel'},Name:'价格通道线'},{HTML:{Title:'M头W底',IClass:'iconfont icon-draw_wavemw',ID:'icon-wavemw'},Name:'M头W底'},{HTML:{Title:'头肩型',IClass:'iconfont icon-draw_head_shoulders_bt',ID:'icon-Head-Shoulders'},Name:'头肩型'},{HTML:{Title:'波浪尺',IClass:'iconfont icon-waveruler',ID:'icon-wave-ruler'},Name:'波浪尺'},{HTML:{Title:'AB波浪尺',IClass:'iconfont icon-waveruler',ID:'icon-wave-ruler2'},Name:'AB波浪尺'},{HTML:{Title:'箱型线',IClass:'iconfont icon-draw_box',ID:'icon-drawbox'},Name:'箱型线'},{HTML:{Title:'涂鸦线段',IClass:'iconfont icon-draw_line',ID:'icon-segment2'},Name:'涂鸦线段'}],[{HTML:{Title:'圆弧',IClass:'iconfont icon-draw_arc',ID:'icon-arc'},Name:'圆弧线'},{HTML:{Title:'矩形',IClass:'iconfont icon-rectangle',ID:'icon-rect'},Name:'矩形'},{HTML:{Title:'平行四边形',IClass:'iconfont icon-draw_quadrangle',ID:'icon-quad'},Name:'平行四边形'},{HTML:{Title:'三角形',IClass:'iconfont icon-draw_triangle',ID:'icon-triangle'},Name:'三角形'},{HTML:{Title:'圆',IClass:'iconfont icon-draw_circle',ID:'icon-circle'},Name:'圆'},{HTML:{Title:'对称角度',IClass:'iconfont icon-draw_symangle',ID:'icon-symangle'},Name:'对称角度'}],[{HTML:{Title:'文本',IClass:'iconfont icon-draw_text',ID:'icon-text'},Name:'文本'},{HTML:{Title:'向上箭头',IClass:'iconfont icon-arrow_up',ID:'icon-arrowup'},Name:'icon-arrow_up'},{HTML:{Title:'向下箭头',IClass:'iconfont icon-arrow_down',ID:'icon-arrowdown'},Name:'icon-arrow_down'},{HTML:{Title:'向左箭头',IClass:'iconfont icon-arrow_left',ID:'icon-arrowleft'},Name:'icon-arrow_left'},{HTML:{Title:'向右箭头',IClass:'iconfont icon-arrow_right',ID:'icon-arrowright'},Name:'icon-arrow_right'}],[{HTML:{Title:'江恩角度线',IClass:'iconfont icon-draw_gannfan',ID:'icon-gannfan'},Name:'江恩角度线'},{HTML:{Title:'斐波那契周期线',IClass:'iconfont icon-draw_fibonacci',ID:'icon-fibonacci'},Name:'斐波那契周期线'},{HTML:{Title:'阻速线',IClass:'iconfont icon-draw_resline',ID:'icon-resline'},Name:'阻速线'},{HTML:{Title:'黄金分割',IClass:'iconfont icon-draw_goldensection',ID:'icon-goldensection'},Name:'黄金分割'},{HTML:{Title:'百分比线',IClass:'iconfont icon-draw_percentage',ID:'icon-percentage'},Name:'百分比线'},{HTML:{Title:'波段线',IClass:'iconfont icon-draw_waveband',ID:'icon-waveband'},Name:'波段线'},{HTML:{Title:'线形回归线',IClass:'iconfont icon-linear_3',ID:'icon-waveband2'},Name:'线形回归线'},{HTML:{Title:'线形回归带',IClass:'iconfont icon-linear_1',ID:'icon-waveband3'},Name:'线形回归带'},{HTML:{Title:'延长线形回归带',IClass:'iconfont icon-linear_2',ID:'icon-waveband5'},Name:'延长线形回归带'}],[{HTML:{Title:'全部删除',IClass:'iconfont icon-recycle_bin',ID:'icon-delete'},Name:'全部删除'}]];var hqChart=this.HQChart;if(!this.ToolsDiv){var div=document.createElement("div");div.className='drawtools';div.id=this.ID;var spanList="";//一层菜单
4710
4710
  var menuTwoList="";//二层菜单
4711
4711
  var menuOne=new Array();TOOL_LIST.forEach(function(item,index){menuOne.push(item[0]);});for(var i=0;i<TOOL_LIST.length;i++){var itemOut=menuOne[i];var itemIn=TOOL_LIST[i];var menuTwoStr="";var contentArrow="";for(var j=0;j<itemIn.length;j++){var currentItem=itemIn[j];var menuTwoName=currentItem.Name;if(menuTwoName.indexOf('up')>-1){menuTwoName="向上箭头";}else if(menuTwoName.indexOf('down')>-1){menuTwoName="向下箭头";}else if(menuTwoName.indexOf('left')>-1){menuTwoName="向左箭头";}else if(menuTwoName.indexOf('right')>-1){menuTwoName="向右箭头";}menuTwoStr+='<p class="menuTwoItem '+currentItem.HTML.ID+'">'+menuTwoName+'<i class="'+currentItem.HTML.IClass+'" title="'+currentItem.HTML.Title+'"></i></p>';}if(i!==TOOL_LIST.length-1){//不是“全部删除”项
4712
4712
  menuTwoList='<div class="menuTwo">'+menuTwoStr+'</div>';contentArrow='<i class="contentArrow iconfont icon-menu_arraw_left"></i>';}else{menuTwoList="";contentArrow="";}var spanNode='<div class="icon-image '+'first-'+itemOut.HTML.ID+'"><i class="'+itemOut.HTML.IClass+'" title="'+itemOut.HTML.Title+'"></i>'+menuTwoList+contentArrow+'</div>';spanList+=spanNode;}this.ChartBorder.UIElement.parentNode.appendChild(div);div.innerHTML=spanList;this.ToolsDiv=div;for(var i in TOOL_LIST){var item=TOOL_LIST[i][0];(0,_jquery2.default)('#'+this.ID+" .first-"+item.HTML.ID).hover(function(){//箭头的旋转过渡
@@ -5457,7 +5457,7 @@ this.CallAuctionShowTitle=new _set2.default(["MTitle-AC-Price","MTitle-AC-Vol","
5457
5457
  var emptyData={ClientPos:this.PointInfo.ClientPos,X:this.PointInfo.Point.X,Y:this.PointInfo.Point.Y};if(this.PointInfo.ClientPos==2){if(!this.BeforeOpenData)return emptyData;if(!this.CallAcutionXOperator)return emptyData;this.CallAcutionXOperator.Value=isHScreen?this.PointInfo.Point.Y:this.PointInfo.Point.X;this.CallAcutionXOperator.Point={X:this.PointInfo.Point.X,Y:this.PointInfo.Point.Y};this.CallAcutionXOperator.ClientPos=this.PointInfo.ClientPos;if(!this.CallAcutionXOperator.Operator())return emptyData;var callbackData={Explain:"BeforeOpen",Data:null,DataIndex:null,DataTotalCount:this.BeforeOpenData.TotalCount};callbackData.DataIndex=this.CallAcutionXOperator.DataIndex;callbackData.Data=this.CallAcutionXOperator.Item;callbackData.Ver=this.BeforeOpenData.Ver;return callbackData;}else if(this.PointInfo.ClientPos==3){if(!this.AfterCloseData)return emptyData;if(!this.CallAcutionXOperator)return emptyData;this.CallAcutionXOperator.Value=isHScreen?this.PointInfo.Point.Y:this.PointInfo.Point.X;this.CallAcutionXOperator.Point={X:this.PointInfo.Point.X,Y:this.PointInfo.Point.Y};this.CallAcutionXOperator.ClientPos=this.PointInfo.ClientPos;if(!this.CallAcutionXOperator.Operator())return emptyData;var callbackData={Explain:"AfterClose",Data:null,DataIndex:null,DataTotalCount:this.AfterCloseData.TotalCount};callbackData.DataIndex=this.CallAcutionXOperator.DataIndex;callbackData.Data=this.CallAcutionXOperator.Item;callbackData.Ver=this.AfterCloseData.Ver;return callbackData;}else if(this.PointInfo.ClientPos>=200&&this.PointInfo.ClientPos<=299){if(!this.MultiDayBeforeOpenData||!IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))return emptyData;var x=this.Frame.IsHScreen==true?this.PointInfo.Point.Y:this.PointInfo.Point.X;this.CallAcutionXOperator.Value=x;this.CallAcutionXOperator.Point={X:this.PointInfo.Point.X,Y:this.PointInfo.Point.Y};this.CallAcutionXOperator.ClientPos=this.PointInfo.ClientPos;if(!this.CallAcutionXOperator.Operator())return emptyData;var dayItem=this.MultiDayBeforeOpenData[this.CallAcutionXOperator.DayIndex];var callbackData={Explain:"MultiDayBeforeOpen",Data:null,DataIndex:null};callbackData.DataIndex=this.CallAcutionXOperator.DataIndex;callbackData.DayIndex=this.CallAcutionXOperator.DayIndex;callbackData.Data=this.CallAcutionXOperator.Item;callbackData.Ver=dayItem.Ver;return callbackData;}else if(this.PointInfo.ClientPos>=300&&this.PointInfo.ClientPos<=399){if(!this.MultiDayAfterCloseData||!IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))return emptyData;var x=this.Frame.IsHScreen==true?this.PointInfo.Point.Y:this.PointInfo.Point.X;this.CallAcutionXOperator.Value=x;this.CallAcutionXOperator.Point={X:this.PointInfo.Point.X,Y:this.PointInfo.Point.Y};this.CallAcutionXOperator.ClientPos=this.PointInfo.ClientPos;if(!this.CallAcutionXOperator.Operator())return emptyData;var dayItem=this.MultiDayAfterCloseData[this.CallAcutionXOperator.DayIndex];var callbackData={Explain:"MultiDayAfterClose",Data:null,DataIndex:null};callbackData.DataIndex=this.CallAcutionXOperator.DataIndex;callbackData.DayIndex=this.CallAcutionXOperator.DayIndex;callbackData.Data=this.CallAcutionXOperator.Item;callbackData.Ver=dayItem.Ver;return callbackData;}return emptyData;};this.GetLatestKLineData=function(bCallAuction)//获取最新一个K线数据 bCallAuction=是否包含集合竞价数据
5458
5458
  {var beforeItem=null;var beforeDataVer=1;var beforeExplain;if(IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData)){var item=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];if(item&&IFrameSplitOperator.IsNonEmptyArray(item.Data)){beforeDataVer=item.Ver;beforeItem=item.Data[item.Data.length-1];beforeExplain="MultiDayBeforeOpen";}}else if(this.BeforeOpenData&&IFrameSplitOperator.IsNonEmptyArray(this.BeforeOpenData.Data)){beforeItem=this.BeforeOpenData.Data[this.BeforeOpenData.Data.length-1];beforeDataVer=this.BeforeOpenData.Ver;beforeExplain="BeforeOpen";}var afterItem=null;var afterDataVer=1;var afterExplain;if(IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData)){var item=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];if(item&&IFrameSplitOperator.IsNonEmptyArray(item.Data)){afterDataVer=item.Ver;afterItem=item.Data[item.Data.length-1];afterExplain="MultiDayAfterClose";if(item.Data.length==item.TotalCount)afterItem=null;//收盘以后,显示最后的1分钟价格就可以
5459
5459
  }}else if(this.AfterOpenData&&IFrameSplitOperator.IsNonEmptyArray(this.AfterOpenData.Data)){afterItem=this.AfterOpenData.Data[this.AfterOpenData.Data.length-1];afterDataVer=this.AfterOpenData.Ver;afterExplain="AfterClose";}var dataItem=null;if(this.Data&&IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)){var count=this.Data.Data.length;dataItem=this.Data.Data[count-1];}if(!beforeItem&&!afterItem&&!dataItem)return null;if(!bCallAuction)return{Type:0,Data:dataItem};if(!dataItem)return{Type:1,Data:beforeItem,Ver:beforeDataVer,Explain:beforeExplain};if(beforeItem&&dataItem)//盘前数据
5460
- {if(beforeItem.Date>dataItem.Date||beforeItem.Date==dataItem.Date&&beforeItem.Time>dataItem.Time&&afterDataVer==1.0)return{Type:2,Data:beforeItem,Ver:beforeDataVer,Explain:beforeExplain};}if(afterItem&&dataItem)//盘后数据
5460
+ {if(beforeItem.Date>dataItem.Date||beforeItem.Date==dataItem.Date&&beforeItem.Time>dataItem.Time&&beforeDataVer==1.0||beforeItem.Date==dataItem.Date&&parseInt(beforeItem.Time>dataItem.Time)&&beforeDataVer==2.0)return{Type:2,Data:beforeItem,Ver:beforeDataVer,Explain:beforeExplain};}if(afterItem&&dataItem)//盘后数据
5461
5461
  {if(afterItem.Date>=dataItem.Date)return{Type:1,Data:afterItem,Ver:afterDataVer,Explain:afterExplain};}return{Type:0,Data:dataItem};};this.GetFormatTitle=function(data)//{ Data:, IsLastOne: }
5462
5462
  {if(!data||!data.Data)return;var upperSymbol=this.Symbol.toUpperCase();var defaultfloatPrecision=GetfloatPrecision(this.Symbol);//价格小数位数
5463
5463
  var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);//国内期货, 纽约期货交易所
@@ -5683,6 +5683,7 @@ this.EnableSave=true;//是否允许保存
5683
5683
  this.EnableCtrlMove=false;//是否按住Ctrl才能移动
5684
5684
  this.OnlyMoveXIndex=false;//只能在X轴刻度上移动
5685
5685
  this.IsSupportMagnet=false;//是否支持磁吸
5686
+ this.EnableMoveCheck=true;//允许移动时监测是否超出边界
5686
5687
  this.IsDrawFirst=false;this.IsShowYCoordinate=false;//是否在Y轴显示点的刻度
5687
5688
  this.LineColor=g_JSChartResource.DrawPicture.LineColor[0];//线段颜色
5688
5689
  //this.LineColor="#1e90ff"; //线段颜色,input type="color" 不支持rgb和rgba 的格式
@@ -5704,7 +5705,9 @@ this.ValueToPoint=function(){if(!this.Frame)return false;var data=this.Frame.Dat
5704
5705
  var isHScreen=this.Frame.IsHScreen;this.Point=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var pt=new Point();if(isHScreen){pt.Y=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.X=this.Frame.GetYFromData(item.YValue,false);}else{pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.Y=this.Frame.GetYFromData(item.YValue,false);}this.Point[i]=pt;}};this.UpdateXValue=function()//通过datetime更新x的索引
5705
5706
  {if(!this.Frame)return false;var data=this.Frame.Data;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 in aryDateTime){var findItem=aryDateTime[i];var valueItem=this.Value[i];if(findItem.Index>=0)valueItem.XValue=findItem.Index;}};//xStep,yStep 移动的偏移量
5706
5707
  this.Move=function(xStep,yStep){if(this.Status!=20)return fasle;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)//整体移动
5707
- {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;}};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值}
5708
+ {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;}};//是否超出边界了
5709
+ 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:横屏以后再做
5710
+ 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值}
5708
5711
  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点个数
5709
5712
  var isHScreen=this.Frame.IsHScreen;for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var dataIndex=item.XValue-data.DataOffset;if(dataIndex<0||dataIndex>=showCount)++invaildX;var pt=new Point();if(isHScreen)//横屏X,Y对调
5710
5713
  {pt.Y=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.X=this.Frame.GetYFromData(item.YValue,false);}else{pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.Y=this.Frame.GetYFromData(item.YValue,false);}drawPoint.push(pt);}if(option&&option.IsCheckX===true){if(invaildX==this.Value.length)return null;}}else//移动中
@@ -5758,7 +5761,9 @@ rgb=rgb.substr(4).split(")")[0].split(sep);var r=(+rgb[0]).toString(16),g=(+rgb[
5758
5761
  IChartDrawPicture.HexToRGB=function(color){color=color.toLowerCase();var reg=/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;if(color&&reg.test(color)){if(color.length===4){var sColorNew="#";for(var i=1;i<4;i+=1){sColorNew+=color.slice(i,i+1).concat(color.slice(i,i+1));}color=sColorNew;}//处理六位的颜色值
5759
5762
  var sColorChange=[];for(var i=1;i<7;i+=2){sColorChange.push(parseInt("0x"+color.slice(i,i+2)));}return"rgb("+sColorChange.join(",")+")";}return null;};IChartDrawPicture.ArrayDrawPricture=[{Name:"线段",ClassName:'ChartDrawPictureLine',Create:function Create(){return new ChartDrawPictureLine();}},{Name:"射线",ClassName:'ChartDrawPictureHaflLine',Create:function Create(){return new ChartDrawPictureHaflLine();}},{Name:"箭头",ClassName:"ChartDrawArrowLine",Create:function Create(){return new ChartDrawArrowLine();}},{Name:"水平线",ClassName:'ChartDrawPictureHorizontalLine',Create:function Create(){return new ChartDrawPictureHorizontalLine();}},{Name:"趋势线",ClassName:'ChartDrawPictureTrendLine',Create:function Create(){return new ChartDrawPictureTrendLine();}},{Name:"矩形",ClassName:'ChartDrawPictureRect',Create:function Create(){return new ChartDrawPictureRect();}},{Name:"圆弧线",ClassName:'ChartDrawPictureArc',Create:function Create(){return new ChartDrawPictureArc();}},{Name:"M头W底",ClassName:'ChartDrawPictureWaveMW',Create:function Create(){return new ChartDrawPictureWaveMW();}},{Name:"头肩型",ClassName:"ChartDrawHeadShouldersBT",Create:function Create(){return new ChartDrawHeadShouldersBT();}},{Name:"平行线",ClassName:'ChartDrawPictureParallelLines',Create:function Create(){return new ChartDrawPictureParallelLines();}},{Name:"平行通道",ClassName:'ChartDrawPictureParallelChannel',Create:function Create(){return new ChartDrawPictureParallelChannel();}},{Name:"价格通道线",ClassName:'ChartDrawPicturePriceChannel',Create:function Create(){return new ChartDrawPicturePriceChannel();}},{Name:"文本",ClassName:'ChartDrawPictureText',Create:function Create(){return new ChartDrawPictureText();}},{Name:"江恩角度线",ClassName:'ChartDrawPictureGannFan',Create:function Create(){return new ChartDrawPictureGannFan();}},{Name:"阻速线",ClassName:'ChartDrawPictureResistanceLine',Create:function Create(){return new ChartDrawPictureResistanceLine();}},{Name:"黄金分割",ClassName:'ChartDrawPictureGoldenSection',Create:function Create(){return new ChartDrawPictureGoldenSection();}},{Name:"百分比线",ClassName:'ChartDrawPicturePercentage',Create:function Create(){return new ChartDrawPicturePercentage();}},{Name:"波段线",ClassName:'ChartDrawPictureWaveBand',Create:function Create(){return new ChartDrawPictureWaveBand();}},{Name:"三角形",ClassName:'ChartDrawPictureTriangle',Create:function Create(){return new ChartDrawPictureTriangle();}},{Name:"对称角度",ClassName:'ChartDrawPictureSymmetryAngle',Create:function Create(){return new ChartDrawPictureSymmetryAngle();}},{Name:"圆",ClassName:'ChartDrawPictureCircle',Create:function Create(){return new ChartDrawPictureCircle();}},{Name:"平行四边形",ClassName:'ChartDrawPictureQuadrangle',Create:function Create(){return new ChartDrawPictureQuadrangle();}},{Name:"斐波那契周期线",ClassName:'ChartDrawPictureFibonacci',Create:function Create(){return new ChartDrawPictureFibonacci();}},{Name:"线形回归线",ClassName:"ChartDrawLinearRegression",Create:function Create(){return new ChartDrawLinearRegression();}},{Name:"线形回归带",ClassName:"ChartDrawLinearRegression",Create:function Create(){return new ChartDrawLinearRegression({IsShowMaxMinLine:true});}},{Name:"延长线形回归带",ClassName:"ChartDrawLinearRegression",Create:function Create(){return new ChartDrawLinearRegression({IsShowMaxMinLine:true,IsShowExtendLine:true});}},{Name:"尺子",ClassName:"ChartDrawRuler",Create:function Create(){return new ChartDrawRuler();}},{Name:"标价线",ClassName:"ChartDrawPriceLine",Create:function Create(){return new ChartDrawPriceLine();}},{Name:"标价线2",ClassName:"ChartDrawPriceLineV2",Create:function Create(){return new ChartDrawPriceLineV2();}},{Name:"垂直线",ClassName:"ChartDrawVerticalLine",Create:function Create(){return new ChartDrawVerticalLine();}},{Name:"波浪尺",ClassName:"ChartDrawWaveRuler",Create:function Create(){return new ChartDrawWaveRuler();}},{Name:"AB波浪尺",ClassName:"ChartDrawWaveRuler2Point",Create:function Create(){return new ChartDrawWaveRuler2Point();}},{Name:"箱型线",ClassName:"ChartDrawBox",Create:function Create(){return new ChartDrawBox();}},{Name:"2点画图例子",ClassName:"ChartDrawTwoPointDemo",Create:function Create(){return new ChartDrawTwoPointDemo();}},{Name:"3点画图例子",ClassName:"ChartDrawThreePointDemo",Create:function Create(){return new ChartDrawThreePointDemo();}},{Name:"水平线段",ClassName:"ChartDrawHLineSegment",Create:function Create(){return new ChartDrawHLineSegment();}},{Name:"平行射线",ClassName:"ChartDrawParallelRaysLines",Create:function Create(){return new ChartDrawParallelRaysLines();}},{ClassName:'ChartDrawPictureIconFont',Create:function Create(){return new ChartDrawPictureIconFont();}},//涂鸦 不绑定K线坐标
5760
5763
  {Name:"涂鸦线段",ClassName:'ChartDrawGraffitiLine',Create:function Create(){return new ChartDrawGraffitiLine();}},{Name:"固定范围成交量分布图",ClassName:"ChartDrawVolProfile",Create:function Create(){return new ChartDrawVolProfile();}},{Name:"DisjointChannel",ClassName:"ChartDrawDisjontChannel",Create:function Create(){return new ChartDrawDisjontChannel();}},{Name:"FlatTop",ClassName:"ChartDrawDisjontChannel",Create:function Create(){return new ChartDrawFlatTop();}},{Name:"水平线2",ClassName:"ChartDrawHLine",Create:function Create(){return new ChartDrawHLine();}},//trading view样式
5761
- {Name:"Note",ClassName:"ChartDrawNote",Create:function Create(){return new ChartDrawNote();}},{Name:"AnchoredText",ClassName:"ChartDrawAnchoredText",Create:function Create(){return new ChartDrawAnchoredText();}},{Name:"PriceLabel",ClassName:"ChartDrawPriceLabel",Create:function Create(){return new ChartDrawPriceLabel();}},{Name:"PriceNote",ClassName:"ChartDrawPriceNote",Create:function Create(){return new ChartDrawPriceNote();}},{Name:"FibWedge",ClassName:"ChartDrawFibWedge",Create:function Create(){return new ChartDrawFibWedge();}}];IChartDrawPicture.MapIonFont=new _map2.default([["icon-arrow_up",{Text:'\uE683',Color:'#318757',Family:"iconfont"}],["icon-arrow_down",{Text:'\uE681',Color:'#db563e',Family:"iconfont"}],["icon-arrow_right",{Text:'\uE682',Color:'#318757',Family:"iconfont"}],["icon-arrow_left",{Text:'\uE680',Color:'#318757',Family:"iconfont"}]]);IChartDrawPicture.GetDrawPictureByName=function(value){for(var i in IChartDrawPicture.ArrayDrawPricture){var item=IChartDrawPicture.ArrayDrawPricture[i];if(item.Name==value)return item;}return null;};IChartDrawPicture.GetDrawPictureByClassName=function(value){for(var i in IChartDrawPicture.ArrayDrawPricture){var item=IChartDrawPicture.ArrayDrawPricture[i];if(item.ClassName==value)return item;}return null;};//注册一个新的画图工具 {Name:中文名字, ClassName:类名, Create:function()}
5764
+ {Name:"Note",ClassName:"ChartDrawNote",Create:function Create(){return new ChartDrawNote();}},{Name:"AnchoredText",ClassName:"ChartDrawAnchoredText",Create:function Create(){return new ChartDrawAnchoredText();}},{Name:"PriceLabel",ClassName:"ChartDrawPriceLabel",Create:function Create(){return new ChartDrawPriceLabel();}},{Name:"PriceNote",ClassName:"ChartDrawPriceNote",Create:function Create(){return new ChartDrawPriceNote();}},{Name:"FibWedge",ClassName:"ChartDrawFibWedge",Create:function Create(){return new ChartDrawFibWedge();}},{Name:"FibRetracement",ClassName:"ChartFibRetracement",Create:function Create(){return new ChartFibRetracement();}},//斐波那契回测
5765
+ {Name:"FibSpeedResistanceFan",ClassName:"ChartFibSpeedResistanceFan",Create:function Create(){return new ChartFibSpeedResistanceFan();}//斐波那契扇形
5766
+ }];IChartDrawPicture.MapIonFont=new _map2.default([["icon-arrow_up",{Text:'\uE683',Color:'#318757',Family:"iconfont"}],["icon-arrow_down",{Text:'\uE681',Color:'#db563e',Family:"iconfont"}],["icon-arrow_right",{Text:'\uE682',Color:'#318757',Family:"iconfont"}],["icon-arrow_left",{Text:'\uE680',Color:'#318757',Family:"iconfont"}]]);IChartDrawPicture.GetDrawPictureByName=function(value){for(var i in IChartDrawPicture.ArrayDrawPricture){var item=IChartDrawPicture.ArrayDrawPricture[i];if(item.Name==value)return item;}return null;};IChartDrawPicture.GetDrawPictureByClassName=function(value){for(var i in IChartDrawPicture.ArrayDrawPricture){var item=IChartDrawPicture.ArrayDrawPricture[i];if(item.ClassName==value)return item;}return null;};//注册一个新的画图工具 {Name:中文名字, ClassName:类名, Create:function()}
5762
5767
  IChartDrawPicture.RegisterDrawPicture=function(obj){if(!obj.Name||!obj.ClassName||!obj.Create)return false;var item={Name:obj.Name,ClassName:obj.ClassName,Create:obj.Create};IChartDrawPicture.ArrayDrawPricture.push(item);JSConsole.Chart.Log('[IChartDrawPicture.RegisterDrawPicture] registered new draw picture class. item=',item);return true;};//注册一个新图标 {Name:, Text: , Color:, Family:}
5763
5768
  IChartDrawPicture.RegisterIonFont=function(obj){if(!obj.Name||!obj.Text||!obj.Family)return false;var isOverwirte=IChartDrawPicture.MapIonFont.has(obj.Name);IChartDrawPicture.MapIonFont.set(obj.Name,obj);JSConsole.Chart.Log('[IChartDrawPicture.RegisterIonFont] registered new icon font, obj=, isOverwirte=',obj,isOverwirte);return true;};IChartDrawPicture.CreateChartDrawPicture=function(obj)//创建画图工具
5764
5769
  {var item=IChartDrawPicture.GetDrawPictureByClassName(obj.ClassName);if(!item)return null;var chartDraw=item.Create();//TODO:后面都放到每一个SetOptin里面
@@ -5776,6 +5781,7 @@ this.Canvas.restore();};this.GetYCoordinatePoint=function(){if(this.IsFrameMinSi
5776
5781
  var aryPoint=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var y=this.Frame.GetYFromData(item.YValue,false);aryPoint.push({Y:y,YValue:item.YValue,Item:item,Color:this.PointColor});}return aryPoint;};}//画图工具-涂鸦线段 Y轴关联数值, X轴不关联
5777
5782
  function ChartDrawGraffitiLine(){this.newMethod=IChartDrawPicture;//派生
5778
5783
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawGraffitiLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=null;this.PointCount=2;//画点的个数
5784
+ this.EnableMoveCheck=false;//允许移动时不监测是否超出边界
5779
5785
  this.PointToValue=function(){if(!this.Frame)return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var yValue=this.Frame.GetYData(item.X);var valueItem={XValue:item.Y,YValue:yValue};this.Value[i]=valueItem;}}else{for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var yValue=this.Frame.GetYData(item.Y);var valueItem={XValue:item.X,YValue:yValue};this.Value[i]=valueItem;}}return true;};//Value => Point
5780
5786
  this.ValueToPoint=function(){if(!this.Frame)return false;var isHScreen=this.Frame.IsHScreen;this.Point=[];for(var i in this.Value){var item=this.Value[i];var pt=new Point();if(isHScreen){pt.Y=item.XValue;pt.X=this.Frame.GetYFromData(item.YValue);}else{pt.X=item.XValue;pt.Y=this.Frame.GetYFromData(item.YValue,false);}this.Point[i]=pt;}};this.UpdateXValue=function()//通过datetime更新x的索引
5781
5787
  {};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 isHScreen=this.Frame.IsHScreen;for(var i in this.Value){var item=this.Value[i];var pt=new Point();if(isHScreen)//横屏X,Y对调
@@ -5850,7 +5856,7 @@ function ChartDrawPictureTrendLine(){this.newMethod=IChartDrawPicture;//派生
5850
5856
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureTrendLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:false});if(!drawPoint||drawPoint.length!=2)return;var ptStart=drawPoint[0];var ptEnd=drawPoint[1];var extendLine=this.CalculateExtendLinePoint(ptStart,ptEnd);this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.moveTo(extendLine.Start.X,extendLine.Start.Y);this.Canvas.lineTo(extendLine.End.X,extendLine.End.Y);this.Canvas.stroke();this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
5851
5857
  this.Canvas.restore();};}//画图工具-矩形
5852
5858
  function ChartDrawPictureRect(){this.newMethod=IChartDrawPicture;//派生
5853
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureRect';this.GetXYCoordinate=this.GetXYCoordinate_default;this.Draw=function(){if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=2)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.rect(drawPoint[0].X,drawPoint[0].Y,drawPoint[1].X-drawPoint[0].X,drawPoint[1].Y-drawPoint[0].Y);this.Canvas.stroke();this.RestoreLineWidth();//透明背景
5859
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureRect';this.GetXYCoordinate=this.GetXYCoordinate_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.Draw=function(){if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=2)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.rect(drawPoint[0].X,drawPoint[0].Y,drawPoint[1].X-drawPoint[0].X,drawPoint[1].Y-drawPoint[0].Y);this.Canvas.stroke();this.RestoreLineWidth();//透明背景
5854
5860
  this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.fillRect(drawPoint[0].X,drawPoint[0].Y,drawPoint[1].X-drawPoint[0].X,drawPoint[1].Y-drawPoint[0].Y);this.Canvas.restore();//画点
5855
5861
  this.DrawPoint(drawPoint);};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
5856
5862
  this.IsPointIn=function(x,y,option){if(this.IsFrameMinSize())return-1;if(!this.Frame||this.Status!=10)return-1;var data=this.Frame.Data;if(!data)return-1;var nIndex=this.IsPointInXYValue(x,y,option);if(nIndex>=0)return nIndex;var aryPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!aryPoint||aryPoint.length!=2)return-1;//是否在矩形边框上
@@ -5909,7 +5915,7 @@ this.ExportStorageData=function(){var storageData=this.ExportBaseData();storageD
5909
5915
  for(var i=0;i<this.Value.length&&i<2;++i){var item=this.Value[i];storageData.Value.push({XValue:item.XValue,YValue:item.YValue,DateTime:item.DateTime});}if(this.CenterLine){storageData.CenterLine={IsShow:this.CenterLine.IsShow,LineDash:this.CenterLine.LineDash.slice(0)};}return storageData;};this.SetOption=function(option){if(this.Super_SetOption)this.Super_SetOption(option);if(option){if(IFrameSplitOperator.IsNumber(option.ChannelWidth))this.ChannelWidth=option.ChannelWidth;if(option.CenterLine){var item=option.CenterLine;if(IFrameSplitOperator.IsNonEmptyArray(item.LineDash))this.CenterLine.LineDash=item.LineDash.slice(0);if(IFrameSplitOperator.IsBool(item.IsShow))this.CenterLine.IsShow=item.IsShow;}}};//计算需要画的点的坐标
5910
5916
  this.CalculateDrawPoint=function(){if(this.Status<2)return null;if(!this.Point.length||!this.Frame)return null;var data=this.Frame.Data;if(!data)return null;var drawPoint=[];if(this.Status==10)//完成
5911
5917
  {for(var i=0;i<2;++i){var item=this.Value[i];var pt=new Point();pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.Y=this.Frame.GetYFromData(item.YValue,false);drawPoint.push(pt);}}else{for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var pt=new Point();pt.X=item.X;pt.Y=item.Y;drawPoint.push(pt);}}if(drawPoint.length>=2){var linePoint={Start:new Point(),End:new Point()};linePoint.Start.X=drawPoint[0].X;linePoint.Start.Y=drawPoint[0].Y;linePoint.End.X=drawPoint[1].X;linePoint.End.Y=drawPoint[1].Y;this.LinePoint.push(linePoint);if(drawPoint.length==3||this.Status==10){var x=linePoint.End.X-linePoint.Start.X;var y=linePoint.End.Y-linePoint.Start.Y;var angle=Math.atan(Math.abs(x/y));var yMove=this.ChannelWidth/Math.sin(angle);//JSConsole.Chart.Log('[ChartDrawPictureParallelChannel::CalculateDrawPoint]',xMove);
5912
- linePoint={Start:new Point(),End:new Point()};linePoint.Start.X=drawPoint[0].X;linePoint.Start.Y=drawPoint[0].Y-yMove;linePoint.End.X=drawPoint[1].X;linePoint.End.Y=drawPoint[1].Y-yMove;this.LinePoint.push(linePoint);var ptCenter=new Point();ptCenter.X=linePoint.Start.X+(linePoint.End.X-linePoint.Start.X)/2;ptCenter.Y=linePoint.Start.Y+(linePoint.End.Y-linePoint.Start.Y)/2;drawPoint[3]=ptCenter;this.Point[2]=ptCenter;var xValue=parseInt(this.Frame.GetXData(ptCenter.X))+data.DataOffset;var yValue=this.Frame.GetYData(ptCenter.Y);this.Value[2]={XValue:xValue,YValue:yValue};this.PointCount=this.Point.length;//完成以后是3个点
5918
+ linePoint={Start:new Point(),End:new Point()};linePoint.Start.X=drawPoint[0].X;linePoint.Start.Y=drawPoint[0].Y-yMove;linePoint.End.X=drawPoint[1].X;linePoint.End.Y=drawPoint[1].Y-yMove;this.LinePoint.push(linePoint);var ptCenter=new Point();ptCenter.X=linePoint.Start.X+(linePoint.End.X-linePoint.Start.X)/2;ptCenter.Y=linePoint.Start.Y+(linePoint.End.Y-linePoint.Start.Y)/2;drawPoint[2]=ptCenter;this.Point[2]=ptCenter;var xValue=parseInt(this.Frame.GetXData(ptCenter.X))+data.DataOffset;var yValue=this.Frame.GetYData(ptCenter.Y);this.Value[2]={XValue:xValue,YValue:yValue};this.PointCount=this.Point.length;//完成以后是3个点
5913
5919
  linePoint={Start:new Point(),End:new Point()};linePoint.Start.X=drawPoint[0].X;linePoint.Start.Y=drawPoint[0].Y-yMove/2;linePoint.End.X=drawPoint[1].X;linePoint.End.Y=drawPoint[1].Y-yMove/2;this.CenterLine.Line=linePoint;}}return drawPoint;};this.DrawArea=function(pt,pt2,pt3,pt4){this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(pt.X,pt.Y);this.Canvas.lineTo(pt2.X,pt2.Y);this.Canvas.lineTo(pt3.X,pt3.Y);this.Canvas.lineTo(pt4.X,pt4.Y);this.Canvas.closePath();this.Canvas.fill();};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();if(this.LinePoint.length==2){this.DrawArea(this.LinePoint[0].Start,this.LinePoint[0].End,this.LinePoint[1].End,this.LinePoint[1].Start);}for(var i=0;i<this.LinePoint.length;++i){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}if(this.CenterLine.IsShow&&this.CenterLine.Line){var item=this.CenterLine.Line;this.Canvas.setLineDash(this.CenterLine.LineDash);this.DrawLine(item.Start,item.End);this.Canvas.setLineDash([]);}this.Canvas.restore();this.DrawPoint(drawPoint);//画点
5914
5920
  };//xStep,yStep 移动的偏移量
5915
5921
  this.Move=function(xStep,yStep){if(this.Status!=20)return fasle;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==100)//整体移动
@@ -6190,7 +6196,27 @@ var lineColor=item.Color;var text=''+item.Value;var y=Math.sin(radian)*value+ptC
6190
6196
  this.IsPointIn=function(x,y,option){if(this.Status!=10)return-1;var value=this.IsPointInXYValue(x,y,this.AryPoint,option);if(value>=0)return value;value=this.IsPointInLine(x,y,option);if(value>=0)return 100;return-1;};this.IsPointInDots=function(x,y,aryPoint,option){if(!IFrameSplitOperator.IsNonEmptyArray(aryPoint))return-1;if(!this.Frame)return-1;var data=this.Frame.Data;if(!data)return-1;if(!this.Value)return-1;var radius=5;if(option&&IFrameSplitOperator.IsNumber(option.Zoom))radius+=option.Zoom;else if(this.Option&&IFrameSplitOperator.IsNumber(this.Option.Zoom))radius+=this.Option.Zoom;var isHScreen=this.Frame.IsHScreen;radius*=GetDevicePixelRatio();for(var i=0;i<aryPoint.length;++i)//是否在点上
6191
6197
  {var pt=aryPoint[i];var path=new Path2D();path.arc(pt.X,pt.Y,radius,0,360);if(this.Canvas.isPointInPath(path,x,y))return i;}return-1;};this.GetCursorType=function(ptIndex){if(ptIndex==2)return"ns-resize";return null;};this.PointToValue=function(){if(!this.Frame)return false;var item=this.Point[2];var ptLast={X:item.X,Y:item.Y};if(!this.PointToValue_Default())return false;//计算第3个点的位置
6192
6198
  var aryValue=[this.Value[0],this.Value[1]];var aryPoint=this.ValueToPoint_V2(aryValue);var radius=this.CalculateHypotenuse(aryPoint[0],aryPoint[1]);//求半径
6193
- var a=aryPoint[0].X-ptLast.X;var b=aryPoint[0].Y-ptLast.Y;var c=Math.sqrt(a*a+b*b);var a2=a*radius/c;var b2=b*radius/c;this.Point[2].X=aryPoint[0].X-a2;this.Point[2].Y=aryPoint[0].Y-b2;var aryValue=this.PointToValue_V2([this.Point[2]],{Type:1});if(!aryValue)return false;this.Value[2]=aryValue[0];return true;};this.PointToValue_V2=function(aryPoint,option){if(!this.Frame)return null;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame"){return this.PointToValue_Minute_V2(aryPoint,option);}else{return this.PointToValue_KLine_V2(aryPoint,option);}};this.PointToValue_KLine_V2=function(aryPoint,option){if(!IFrameSplitOperator.IsNonEmptyArray(aryPoint))return null;if(!this.Frame)return null;var data=this.Frame.Data;if(!data)return null;var aryValue=[];var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];var xValue=this.Frame.GetXData(item.Y,false)+data.DataOffset;var yValue=this.Frame.GetYData(item.X,false);var valueItem={XValue:xValue,YValue:yValue,Type:1};aryValue[i]=valueItem;}}else{for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];var xValue=this.Frame.GetXData(item.X,false)+data.DataOffset;var yValue=this.Frame.GetYData(item.Y,false);var valueItem={XValue:xValue,YValue:yValue,Type:1};aryValue[i]=valueItem;}}return aryValue;};}function ChartDrawStorage(){this.DrawData=new _map2.default();//画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{Guid, Symbol, Period, ClassName, Value}
6199
+ var a=aryPoint[0].X-ptLast.X;var b=aryPoint[0].Y-ptLast.Y;var c=Math.sqrt(a*a+b*b);var a2=a*radius/c;var b2=b*radius/c;this.Point[2].X=aryPoint[0].X-a2;this.Point[2].Y=aryPoint[0].Y-b2;var aryValue=this.PointToValue_V2([this.Point[2]],{Type:1});if(!aryValue)return false;this.Value[2]=aryValue[0];return true;};this.PointToValue_V2=function(aryPoint,option){if(!this.Frame)return null;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame"){return this.PointToValue_Minute_V2(aryPoint,option);}else{return this.PointToValue_KLine_V2(aryPoint,option);}};this.PointToValue_KLine_V2=function(aryPoint,option){if(!IFrameSplitOperator.IsNonEmptyArray(aryPoint))return null;if(!this.Frame)return null;var data=this.Frame.Data;if(!data)return null;var aryValue=[];var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];var xValue=this.Frame.GetXData(item.Y,false)+data.DataOffset;var yValue=this.Frame.GetYData(item.X,false);var valueItem={XValue:xValue,YValue:yValue,Type:1};aryValue[i]=valueItem;}}else{for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];var xValue=this.Frame.GetXData(item.X,false)+data.DataOffset;var yValue=this.Frame.GetYData(item.Y,false);var valueItem={XValue:xValue,YValue:yValue,Type:1};aryValue[i]=valueItem;}}return aryValue;};}//////////////////////////////////////////////////////////////////////////////
6200
+ // 斐波那契回测
6201
+ //
6202
+ function ChartFibRetracement(){this.newMethod=IChartDrawPicture;//派生
6203
+ this.newMethod();delete this.newMethod;this.ClassName='ChartFibRetracement';this.PointCount=2;this.Font=12*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.PointToValue_Default=this.PointToValue;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.LineDash=[6,3];this.LineWidth=1;this.EnableBGColor=true;this.ExtendLine={Left:false,Right:false};//延长线
6204
+ this.AreaConfig={AryData:[{Value:0,Color:"rgb(128,128,128)",Enable:true},{Value:0.236,Color:"rgb(242,52,69)",Enable:true},{Value:0.382,Color:"rgb(255,152,0)",Enable:true},{Value:0.5,Color:"rgb(76,175,80)",Enable:true},{Value:0.618,Color:"rgb(8,153,129)",Enable:true},{Value:0.786,Color:"rgb(0,188,212)",Enable:true},{Value:1,Color:"rgb(120,123,134)",Enable:true},{Value:1.618,Color:"rgb(41,98,255)",Enable:true},{Value:2.618,Color:"rgb(242,54,69)",Enable:false}],Opacity:0.3};this.SetOption=function(option){if(!option)return;if(option.Font)this.Font=option.Font;if(option.LineWidth)this.LineWidth=option.LineWidth;if(option.LineDash)this.LineDash=option.LineDash;if(IFrameSplitOperator.IsBool(option.EnableBGColor))this.EnableBGColor=option.EnableBGColor;if(option.ExtendLine){var item=option.ExtendLine;if(IFrameSplitOperator.IsBool(item.Left))this.ExtendLine.Left=item.Left;if(IFrameSplitOperator.IsBool(item.Right))this.ExtendLine.Left=item.Right;}if(option.AreaConfig)this.AreaConfig=option.AreaConfig;};//导出成存储格式
6205
+ this.ExportStorageData=function(){var storageData=this.ExportBaseData();storageData.Value=[];for(var i=0;i<this.Value.length&&i<this.PointCount;++i){var item=this.Value[i];storageData.Value.push({XValue:item.XValue,YValue:item.YValue});}storageData.Font=this.Font;storageData.EnableBGColor=this.EnableBGColor;storageData.LineDash=this.LineDash;storageData.ExtendLine={Left:this.ExtendLine.Left,Right:this.ExtendLine.Right};storageData.AreaConfig=CloneData(this.AreaConfig);return storageData;};this.ImportStorageData=function(storageData){if(storageData.Font)this.Font=storageData.Font;if(storageData.LineDash)this.LineDash=storageData.LineDash;if(IFrameSplitOperator.IsBool(storageData.EnableBGColor))this.EnableBGColor=storageData.EnableBGColor;if(storageData.ExtendLine)this.ExtendLine=storageData.ExtendLine;if(storageData.AreaConfig)this.AreaConfig=storageData.AreaConfig;};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var bCheckXY=true;if(this.ExtendLine.Left||this.ExtendLine.Right)bCheckXY=false;var drawPoint=this.CalculateDrawPoint({IsCheckX:bCheckXY,IsCheckY:bCheckXY});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.Canvas.strokeStyle=this.LineColor;this.Canvas.setLineDash(this.LineDash);this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.stroke();this.Canvas.setLineDash([]);this.DrawBlock(ptStart,ptEnd);this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
6206
+ this.Canvas.restore();};this.GetArrayAreaConfig=function(){var aryArea=[];for(var i=0;i<this.AreaConfig.AryData.length;++i){var item=this.AreaConfig.AryData[i];if(item.Enable)aryArea.push(item);}aryArea.sort(function(left,right){return right.Value-left.Value;});return aryArea;};this.DrawBlock=function(ptStart,ptEnd){var yTop=Math.min(ptStart.Y,ptEnd.Y);var yBottom=Math.max(ptStart.Y,ptEnd.Y);var xLeft=Math.min(ptStart.X,ptEnd.X);var xRight=Math.max(ptStart.X,ptEnd.X);var height=yBottom-yTop;//var baseValue=Math.min(this.Value[0].YValue, this.Value[1].YValue);
6207
+ //var diffValue=Math.abs(this.Value[0].YValue-this.Value[1].YValue); //差值
6208
+ if(this.ExtendLine.Right)xRight=this.Frame.ChartBorder.GetRight();if(this.ExtendLine.Left)xLeft=this.Frame.ChartBorder.GetLeft();var aryArea=this.GetArrayAreaConfig();var yPre=null;//上一个点
6209
+ var clrArea=null;this.Canvas.font=this.Font;if(this.ExtendLine.Left)this.Canvas.textAlign="left";else this.Canvas.textAlign="right";this.Canvas.textBaseline="bottom";for(var i=0;i<aryArea.length;++i){var item=aryArea[i];var y=yBottom-height*item.Value;//var yValue=baseValue+diffValue*item.Value;
6210
+ yValue=this.Frame.GetYData(y,false);y=ToFixedPoint(y);if(this.EnableBGColor&&IFrameSplitOperator.IsNumber(yPre)){var rtBG={Left:xLeft,Right:xRight,Top:yPre,Bottom:y};rtBG.Width=rtBG.Right-rtBG.Left;rtBG.Height=rtBG.Bottom-rtBG.Top;this.Canvas.fillStyle=clrArea;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}this.Canvas.strokeStyle=item.Color;this.Canvas.beginPath();this.Canvas.moveTo(xLeft,y);this.Canvas.lineTo(xRight,y);this.Canvas.stroke();var line={Start:{X:xLeft,Y:y},End:{X:xRight,Y:y}};this.LinePoint.push(line);//文字
6211
+ var text=item.Value+' ('+yValue.toFixed(2)+')';this.Canvas.fillStyle=item.Color;if(this.ExtendLine.Left)this.Canvas.fillText(text,xLeft+2,y-2);else this.Canvas.fillText(text,xLeft-2,y-2);yPre=y;clrArea=IChartDrawPicture.ColorToRGBA(item.Color,this.AreaConfig.Opacity);}};}function ChartFibSpeedResistanceFan(){this.newMethod=IChartDrawPicture;//派生
6212
+ this.newMethod();delete this.newMethod;this.ClassName='ChartFibSpeedResistanceFan';this.PointCount=2;this.Font=12*GetDevicePixelRatio()+"px 微软雅黑";this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.PointToValue_Default=this.PointToValue;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.LineWidth=1;this.EnableBGColor=true;this.AreaConfig={AryYData:[{Value:0,Color:"rgb(128,128,128)",Enable:true},{Value:0.25,Color:"rgb(242,52,69)",Enable:true},{Value:0.382,Color:"rgb(255,152,0)",Enable:true},{Value:0.5,Color:"rgb(76,175,80)",Enable:true},{Value:0.618,Color:"rgb(8,153,129)",Enable:true},{Value:0.75,Color:"rgb(0,188,212)",Enable:true},{Value:1,Color:"rgb(120,123,134)",Enable:true}],AryXData:[{Value:0,Color:"rgb(128,128,128)",Enable:true},{Value:0.25,Color:"rgb(242,52,69)",Enable:true},{Value:0.382,Color:"rgb(255,152,0)",Enable:true},{Value:0.5,Color:"rgb(76,175,80)",Enable:true},{Value:0.618,Color:"rgb(8,153,129)",Enable:true},{Value:0.75,Color:"rgb(0,188,212)",Enable:true},{Value:1,Color:"rgb(120,123,134)",Enable:true}],Opacity:0.3};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var bCheckXY=false;var drawPoint=this.CalculateDrawPoint({IsCheckX:bCheckXY,IsCheckY:bCheckXY});if(!drawPoint)return;if(drawPoint.length!=2)return;this.ClipFrame();var ptStart=drawPoint[0];var ptEnd=drawPoint[1];this.SetLineWidth();this.DrawBlock(ptEnd,ptStart);this.RestoreLineWidth();this.DrawPoint(drawPoint);//画点
6213
+ this.Canvas.restore();};//获取在第几象限
6214
+ this.GetQuadrant=function(ptStart,ptEnd){if(ptStart.X<ptEnd.X&&ptStart.Y>ptEnd.Y)return 1;else if(ptStart.X>ptEnd.X&&ptStart.Y>ptEnd.Y)return 2;else if(ptStart.X<ptEnd.X&&ptStart.Y<ptEnd.Y)return 4;else return 3;};this.DrawBlock=function(ptStart,ptEnd){var center=ptEnd;var xDiff=ptEnd.X-ptStart.X;var yDiff=ptEnd.Y-ptStart.Y;var quadrant=this.GetQuadrant(center,ptStart);//象限
6215
+ var aryYData=this.GetArrayAreaConfig(this.AreaConfig.AryYData);var ptPre=null;//上一个点
6216
+ var clrArea=null;this.Canvas.font=this.Font;var textOffset=4;if(quadrant==1||quadrant==4){this.Canvas.textAlign="right";textOffset=-4;}else{this.Canvas.textAlign="left";textOffset=4;}this.Canvas.textBaseline="middle";for(var i=0;i<aryYData.length;++i){var item=aryYData[i];var y=item.Value*yDiff+ptStart.Y;var pt=this.CalculateExtendLineEndPoint([center,{X:ptStart.X,Y:y}]);if(ptPre){this.Canvas.beginPath();this.Canvas.moveTo(center.X,center.Y);this.Canvas.lineTo(ptPre.X,ptPre.Y);this.Canvas.lineTo(pt.X,pt.Y);this.Canvas.closePath();this.Canvas.fillStyle=clrArea;this.Canvas.fill();}this.Canvas.strokeStyle=item.Color;this.Canvas.beginPath();this.Canvas.moveTo(center.X,center.Y);this.Canvas.lineTo(pt.X,pt.Y);this.Canvas.stroke();this.LinePoint.push({Start:center,End:pt});if(item.Value!=1){this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(center.X,y);this.Canvas.lineTo(ptStart.X,y);this.Canvas.stroke();}ptPre=pt;clrArea=IChartDrawPicture.ColorToRGBA(item.Color,this.AreaConfig.Opacity);//文字
6217
+ var text=''+item.Value;this.Canvas.fillStyle=item.Color;this.Canvas.fillText(text,center.X+textOffset,y);}var aryXData=this.GetArrayAreaConfig(this.AreaConfig.AryXData);var ptPre=null;this.Canvas.textAlign="center";if(quadrant==3||quadrant==4){this.Canvas.textBaseline="bottom";textOffset=-5;}else{this.Canvas.textBaseline="top";textOffset=5;}for(var i=0;i<aryXData.length;++i){var item=aryXData[i];var x=item.Value*xDiff+ptStart.X;var pt=this.CalculateExtendLineEndPoint([center,{X:x,Y:ptStart.Y}]);if(ptPre)//面积
6218
+ {this.Canvas.beginPath();this.Canvas.moveTo(center.X,center.Y);this.Canvas.lineTo(ptPre.X,ptPre.Y);this.Canvas.lineTo(pt.X,pt.Y);this.Canvas.closePath();this.Canvas.fillStyle=clrArea;this.Canvas.fill();}this.Canvas.strokeStyle=item.Color;this.Canvas.beginPath();this.Canvas.moveTo(center.X,center.Y);this.Canvas.lineTo(pt.X,pt.Y);this.Canvas.stroke();this.LinePoint.push({Start:center,End:pt});if(item.Value!=1){this.Canvas.strokeStyle=this.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(x,center.Y);this.Canvas.lineTo(x,ptStart.Y);this.Canvas.stroke();}ptPre=pt;clrArea=IChartDrawPicture.ColorToRGBA(item.Color,this.AreaConfig.Opacity);//文字
6219
+ var text=''+item.Value;this.Canvas.fillStyle=item.Color;this.Canvas.fillText(text,x,center.Y+textOffset);}};this.GetArrayAreaConfig=function(aryData){var aryArea=[];for(var i=0;i<aryData.length;++i){var item=aryData[i];if(item.Enable)aryArea.push(item);}aryArea.sort(function(left,right){return right.Value-left.Value;});return aryArea;};}function ChartDrawStorage(){this.DrawData=new _map2.default();//画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{Guid, Symbol, Period, ClassName, Value}
6194
6220
  this.StorageKey;this.GetEventCallback;//事件回调
6195
6221
  this.Load=function(key)//从本地读取画图工具
6196
6222
  {if(!key)return;this.StorageKey=key;var cacheValue=localStorage[this.StorageKey];JSConsole.Chart.Log('[ChartDrawStorage::Load] Load to localStorage, key='+this.StorageKey+', cache='+cacheValue);if(!cacheValue)return;if(typeof cacheValue!="string")return;var saveData=JSON.parse(cacheValue);for(var i in saveData){var item=saveData[i];var drawMap=new _map2.default();for(var j in item.Value){var drawItem=item.Value[j];drawMap.set(drawItem.Key,drawItem.Value);}this.DrawData.set(item.Key,drawMap);}};this.Save=function()//把数据保存到本地
@@ -12612,7 +12638,7 @@ function HQChartScriptWorker(){this.Create=function(){var _this60=this;addEventL
12612
12638
  hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,Stock:{Symbol:message.Symbol},Request:{MaxDataCount:500,MaxMinuteDayCount:5},Period:message.Period,Right:message.Right,Data:hisData};if(IFrameSplitOperator.IsNumber(message.HQDataType))stockObj.HQDataType=message.HQDataType;indexConsole.ExecuteScript(stockObj);};this.OnRecvMessage=function(message){var data=message.data;if(!data)return;if(data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT){if(!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex))return;for(var i=0;i<data.AryIndex.length;++i){var item=data.AryIndex[i];this.ExecuteScript(item,data);}}};this.OnExecuteFinish=function(data,indexInfo,jsExectute){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT};postMessage(message);};this.OnExecuteError=function(error,indexInfo){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
12613
12639
  * 版本信息输出
12614
12640
  *
12615
- */var HQCHART_VERSION="1.1.12515";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
12641
+ */var HQCHART_VERSION="1.1.12523";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
12616
12642
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12617
12643
  // BaseIndex:BaseIndex,
12618
12644
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "hqchart",
3
3
  "description": "stock chart",
4
4
  "author": "jones2000",
5
- "version": "1.1.12516",
5
+ "version": "1.1.12525",
6
6
  "main": "lib/main.js",
7
7
  "private": false,
8
8
  "license": "Apache License 2.0",