hqchart 1.1.12516 → 1.1.12522
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.
- package/lib/umychart.vue.js +30 -8
- package/package.json +1 -1
- package/src/jscommon/umychart.js +428 -4
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +429 -5
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +429 -5
- package/src/jscommon/umychart.wechat/umychart.chartpaint.wechat.js +13 -1
- package/src/jscommon/umychart.wechat/umychart.index.wechat.js +6 -0
package/lib/umychart.vue.js
CHANGED
|
@@ -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-
|
|
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&&
|
|
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);//国内期货, 纽约期货交易所
|
|
@@ -5758,7 +5758,9 @@ rgb=rgb.substr(4).split(")")[0].split(sep);var r=(+rgb[0]).toString(16),g=(+rgb[
|
|
|
5758
5758
|
IChartDrawPicture.HexToRGB=function(color){color=color.toLowerCase();var reg=/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;if(color&®.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
5759
|
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
5760
|
{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();}}
|
|
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();}},{Name:"FibRetracement",ClassName:"ChartFibRetracement",Create:function Create(){return new ChartFibRetracement();}},//斐波那契回测
|
|
5762
|
+
{Name:"FibSpeedResistanceFan",ClassName:"ChartFibSpeedResistanceFan",Create:function Create(){return new ChartFibSpeedResistanceFan();}//斐波那契扇形
|
|
5763
|
+
}];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
5764
|
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
5765
|
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
5766
|
{var item=IChartDrawPicture.GetDrawPictureByClassName(obj.ClassName);if(!item)return null;var chartDraw=item.Create();//TODO:后面都放到每一个SetOptin里面
|
|
@@ -5909,7 +5911,7 @@ this.ExportStorageData=function(){var storageData=this.ExportBaseData();storageD
|
|
|
5909
5911
|
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
5912
|
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
5913
|
{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[
|
|
5914
|
+
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
5915
|
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
5916
|
};//xStep,yStep 移动的偏移量
|
|
5915
5917
|
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 +6192,27 @@ var lineColor=item.Color;var text=''+item.Value;var y=Math.sin(radian)*value+ptC
|
|
|
6190
6192
|
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
6193
|
{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
6194
|
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;};}
|
|
6195
|
+
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;};}//////////////////////////////////////////////////////////////////////////////
|
|
6196
|
+
// 斐波那契回测
|
|
6197
|
+
//
|
|
6198
|
+
function ChartFibRetracement(){this.newMethod=IChartDrawPicture;//派生
|
|
6199
|
+
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};//延长线
|
|
6200
|
+
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;};//导出成存储格式
|
|
6201
|
+
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);//画点
|
|
6202
|
+
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);
|
|
6203
|
+
//var diffValue=Math.abs(this.Value[0].YValue-this.Value[1].YValue); //差值
|
|
6204
|
+
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;//上一个点
|
|
6205
|
+
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;
|
|
6206
|
+
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);//文字
|
|
6207
|
+
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;//派生
|
|
6208
|
+
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);//画点
|
|
6209
|
+
this.Canvas.restore();};//获取在第几象限
|
|
6210
|
+
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);//象限
|
|
6211
|
+
var aryYData=this.GetArrayAreaConfig(this.AreaConfig.AryYData);var ptPre=null;//上一个点
|
|
6212
|
+
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);//文字
|
|
6213
|
+
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)//面积
|
|
6214
|
+
{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);//文字
|
|
6215
|
+
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
6216
|
this.StorageKey;this.GetEventCallback;//事件回调
|
|
6195
6217
|
this.Load=function(key)//从本地读取画图工具
|
|
6196
6218
|
{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 +12634,7 @@ function HQChartScriptWorker(){this.Create=function(){var _this60=this;addEventL
|
|
|
12612
12634
|
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
12635
|
* 版本信息输出
|
|
12614
12636
|
*
|
|
12615
|
-
*/var HQCHART_VERSION="1.1.
|
|
12637
|
+
*/var HQCHART_VERSION="1.1.12521";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
12638
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12617
12639
|
// BaseIndex:BaseIndex,
|
|
12618
12640
|
// ChartLine:ChartLine,
|