hqchart 1.1.12879 → 1.1.12884
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 +12 -10
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +1 -0
- package/src/jscommon/umychart.js +91 -59
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +93 -60
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +93 -60
package/lib/umychart.vue.js
CHANGED
|
@@ -2335,9 +2335,9 @@ if(item.Message[0]!=null&&isDrawLeft){if(item.Font!=null)this.Canvas.font=item.F
|
|
|
2335
2335
|
this.DrawVertical=function(){var border=this.GetBorder();var top=border.TopTitle;var bottom=border.Bottom;var right=border.RightEx;var pixelRatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
2336
2336
|
//JSConsole.Chart.Log('[AverageWidthFrame.DrawVertical] bottom',bottom);
|
|
2337
2337
|
if(this.ChartBorder.Bottom<=5*GetDevicePixelRatio())return;//高度不够 不显示
|
|
2338
|
-
var bottomTextExtend=null;if(this.XTextExtend){bottomTextExtend=this.XTextExtend[0];}var bottomLineExtend=null;if(this.XLineExtend){bottomLineExtend=this.XLineExtend[0];}var xPrev=null;//上一个坐标x的值
|
|
2338
|
+
var mapX=null;if(this.GetVerticalXCache)mapX=this.GetVerticalXCache();var bottomTextExtend=null;if(this.XTextExtend){bottomTextExtend=this.XTextExtend[0];}var bottomLineExtend=null;if(this.XLineExtend){bottomLineExtend=this.XLineExtend[0];}var xPrev=null;//上一个坐标x的值
|
|
2339
2339
|
var textRightPrev=null;//上一次刻度输出右边x坐标
|
|
2340
|
-
for(var i=0;i<this.VerticalInfo.length;++i){var
|
|
2340
|
+
for(var i=0;i<this.VerticalInfo.length;++i){var item=this.VerticalInfo[i];var x=null;if(mapX&&mapX.has(item.Value))x=mapX.get(item.Value);else x=this.GetXFromIndex(item.Value);if(x>right)break;if(xPrev!=null&&Math.abs(x-xPrev)<this.MinXDistance)continue;var item=this.VerticalInfo[i];var xFixed=ToFixedPoint(x);if(this.IsShowXLine){if(item.LineType==2)//虚线
|
|
2341
2341
|
{this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;if(item.LineDash)this.Canvas.setLineDash(item.LineDash);else this.Canvas.setLineDash([5*pixelRatio,5*pixelRatio]);this.Canvas.beginPath();this.Canvas.moveTo(xFixed,top);this.Canvas.lineTo(xFixed,bottom);this.Canvas.stroke();this.Canvas.setLineDash([]);}else if(item.LineType==3){}else if(item.LineType>0)//实线
|
|
2342
2342
|
{if(g_JSChartResource.FrameXLineDash){this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;this.Canvas.setLineDash(g_JSChartResource.FrameXLineDash);//虚线
|
|
2343
2343
|
this.Canvas.beginPath();this.Canvas.moveTo(xFixed,top);this.Canvas.lineTo(xFixed,bottom);this.Canvas.stroke();this.Canvas.setLineDash([]);}else{this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;this.Canvas.beginPath();this.Canvas.moveTo(xFixed,top);this.Canvas.lineTo(xFixed,bottom);this.Canvas.stroke();}}}if(item.BG&&item.BG.Color){var bgItem=item.BG;this.Canvas.fillStyle=bgItem.Color;var xStart=this.GetXFromIndex(bgItem.Index.Start);var xEnd=this.GetXFromIndex(bgItem.Index.End);var bgHeight=this.ChartBorder.Bottom;if(IFrameSplitOperator.IsNumber(bgItem.Height))bgHeight=bgItem.Height;var rtBG={Left:xStart,Width:xEnd-xStart,Top:border.Bottom,Height:bgHeight};this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}if(this.VerticalInfo[i].Message[0]!=null){if(this.VerticalInfo[i].Font)this.Canvas.font=this.VerticalInfo[i].Font;var textLeft=0;this.Canvas.strokeStyle=item.TextColor;var testWidth=this.Canvas.measureText(this.VerticalInfo[i].Message[0]).width;var textHeight=this.Canvas.measureText("擎").width;if(bottomTextExtend&&bottomTextExtend.Align==1){this.Canvas.textAlign="left";this.Canvas.textBaseline="top";textLeft=x;}else{if(x<testWidth/2){this.Canvas.textAlign="left";this.Canvas.textBaseline="top";textLeft=x;}else if(x+testWidth/2>=this.ChartBorder.GetChartWidth()){this.Canvas.textAlign="right";this.Canvas.textBaseline="top";textLeft=x-testWidth;}else{this.Canvas.textAlign="center";this.Canvas.textBaseline="top";textLeft=x-testWidth/2;}}if(textRightPrev==null||textLeft>textRightPrev){var yText=bottom;if(item.LineType==3){var lineLength=this.ShortXLineLength*pixelRatio;this.Canvas.beginPath();this.Canvas.moveTo(xFixed,yText);this.Canvas.lineTo(xFixed,yText+lineLength);this.Canvas.stroke();yText+=lineLength+2*pixelRatio;}if(bottomLineExtend){if(bottomLineExtend.Mode===1){if(item.Value>1){if(bottomLineExtend.Color)this.Canvas.strokeStyle=bottomLineExtend.Color;this.Canvas.beginPath();this.Canvas.moveTo(xFixed,bottom);this.Canvas.lineTo(xFixed,border.ChartHeight);this.Canvas.stroke();x+=1;}}else if(bottomLineExtend.Mode===2){if(bottomLineExtend.Width>=1){var lineLength=bottomLineExtend.Width;if(bottomLineExtend.Color)this.Canvas.strokeStyle=bottomLineExtend.Color;this.Canvas.beginPath();this.Canvas.moveTo(xFixed,yText);this.Canvas.lineTo(xFixed,yText+lineLength);this.Canvas.stroke();yText+=lineLength+2;}}}//item.TextBGColor="rgb(0,255,0)";
|
|
@@ -2572,7 +2572,8 @@ this.Canvas.strokeStyle=item.Data.Line.Color;this.Canvas.beginPath();if(item.IsH
|
|
|
2572
2572
|
}else{this.Canvas.strokeRect(left,top,right-left-1,height);//少一个像素让边框显示出来
|
|
2573
2573
|
}};//是否在X轴坐标上
|
|
2574
2574
|
//this.PtInVertical=function(x,y) { return false; }
|
|
2575
|
-
|
|
2575
|
+
//缓存X轴坐标刻度
|
|
2576
|
+
this.GetVerticalXCache=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.VerticalInfo))return null;var dataWidth=this.DataWidth;var distanceWidth=this.DistanceWidth;var xPointCount=this.XPointCount;var setIndex=new _set2.default();for(var i=0;i<this.VerticalInfo.length;++i){var item=this.VerticalInfo[i];setIndex.add(item.Value);}if(this.IsHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}var mapX=new _map2.default();for(var i=0;i<xPointCount;++i,xOffset+=dataWidth+distanceWidth){var left=xOffset;var right=xOffset+dataWidth;var x=left+(right-left)/2;if(setIndex.has(i)){mapX.set(i,x);}}return mapX;};}function OverlayKLineFrame(){this.newMethod=KLineFrame;//派生
|
|
2576
2577
|
this.newMethod();delete this.newMethod;this.ClassName='OverlayKLineFrame';this.MainFrame=null;//主框架
|
|
2577
2578
|
this.IsShareY=false;//使用和主框架公用Y轴
|
|
2578
2579
|
this.IsCalculateYMaxMin=true;//是否计算Y最大最小值
|
|
@@ -2628,9 +2629,9 @@ for(var i=this.HorizontalInfo.length-1;i>=0;--i)//从上往下画分割线
|
|
|
2628
2629
|
{var item=this.HorizontalInfo[i];var y=this.GetYFromData(item.Value);if(y!=null&&yPrev!=null&&Math.abs(y-yPrev)<this.MinYDistance)continue;//两个坐标在近了 就不画了
|
|
2629
2630
|
//坐标信息 左边 间距小于10 画在内部
|
|
2630
2631
|
if(item.Message[0]!=null&&isDrawLeft){if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.fillStyle=item.TextColor;this.Canvas.textAlign="left";if(y>=right-2)this.Canvas.textBaseline='top';else if(y<=left+2)this.Canvas.textBaseline='bottom';else this.Canvas.textBaseline="middle";var textObj={X:left,Y:y,Text:{BaseLine:this.Canvas.textBaseline,TextAlign:this.Canvas.textAlign,Font:this.Canvas.font,Value:item.Message[0]}};var xText=y,yText=top;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(item.Message[0],-2,0);this.Canvas.restore();}if(item.Message[1]!=null&&isDrawRight){if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.fillStyle=item.TextColor;this.Canvas.textAlign="right";if(y>=right-2)this.Canvas.textBaseline='top';else if(y<=left+2)this.Canvas.textBaseline='bottom';else this.Canvas.textBaseline="middle";if(Array.isArray(item.Message[1]))var text=item.Message[1][0];else var text=item.Message[1];var textWidth=this.Canvas.measureText(text).width;var textObj={X:right-textWidth,Y:y,Text:{BaseLine:this.Canvas.textBaseline,TextAlign:this.Canvas.textAlign,Font:this.Canvas.font,Value:text}};var xText=y,yText=bottom;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,-2,0);this.Canvas.restore();}yPrev=y;}}};this.GetXFromIndex=function(index,isLimit){if(isLimit===false){var border=this.ChartBorder.GetHScreenBorder();if(index>=0){var offset=border.TopEx+g_JSChartResource.FrameLeftMargin+this.DistanceWidth/2+this.DataWidth/2;for(var i=1;i<=index;++i){offset+=this.DistanceWidth+this.DataWidth;}}else{var offset=border.TopEx-(this.DistanceWidth/2+this.DataWidth+this.DistanceWidth);var absIndex=Math.abs(index);for(var i=1;i<absIndex;++i){offset-=this.DistanceWidth+this.DataWidth;}}}else{if(index<0)index=0;if(index>this.xPointCount-1)index=this.xPointCount-1;var border=this.ChartBorder.GetHScreenBorder();var offset=border.TopEx+g_JSChartResource.FrameLeftMargin+this.DistanceWidth/2+this.DataWidth/2;for(var i=1;i<=index;++i){offset+=this.DistanceWidth+this.DataWidth;}}return offset;};//画X轴
|
|
2631
|
-
this.DrawVertical=function(){var border=this.ChartBorder.GetHScreenBorder();var left=border.Left;var right=border.RightTitle;var bottom=border.Bottom;var pixelRatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
2632
|
+
this.DrawVertical=function(){var mapX=null;if(this.GetVerticalXCache)mapX=this.GetVerticalXCache();var border=this.ChartBorder.GetHScreenBorder();var left=border.Left;var right=border.RightTitle;var bottom=border.Bottom;var pixelRatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
2632
2633
|
var xPrev=null;//上一个坐标x的值
|
|
2633
|
-
for(var i
|
|
2634
|
+
for(var i=0;i<this.VerticalInfo.length;++i){var item=this.VerticalInfo[i];var x=null;if(mapX&&mapX.has(item.Value))x=mapX.get(item.Value);else x=this.GetXFromIndex(item.Value);if(x>=bottom)break;if(xPrev!=null&&Math.abs(x-xPrev)<80)continue;if(item.LineType==2){this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;this.Canvas.setLineDash([5*pixelRatio,5*pixelRatio]);//虚线
|
|
2634
2635
|
this.Canvas.beginPath();this.Canvas.moveTo(left,ToFixedPoint(x));this.Canvas.lineTo(right,ToFixedPoint(x));this.Canvas.stroke();this.Canvas.setLineDash([]);}else if(item.LineType>0){this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;if(g_JSChartResource.FrameXLineDash){this.Canvas.setLineDash(g_JSChartResource.FrameXLineDash);//虚线
|
|
2635
2636
|
this.Canvas.beginPath();this.Canvas.moveTo(left,ToFixedPoint(x));this.Canvas.lineTo(right,ToFixedPoint(x));this.Canvas.stroke();this.Canvas.setLineDash([]);}else//实线
|
|
2636
2637
|
{this.Canvas.beginPath();this.Canvas.moveTo(left,ToFixedPoint(x));this.Canvas.lineTo(right,ToFixedPoint(x));this.Canvas.stroke();}}if(this.VerticalInfo[i].Message[0]!=null){if(this.VerticalInfo[i].Font!=null)this.Canvas.font=this.VerticalInfo[i].Font;this.Canvas.fillStyle=this.VerticalInfo[i].TextColor;var testWidth=this.Canvas.measureText(this.VerticalInfo[i].Message[0]).width;if(x<testWidth/2){this.Canvas.textAlign="left";this.Canvas.textBaseline="top";}else{this.Canvas.textAlign="center";this.Canvas.textBaseline="top";}var xText=left,yText=x;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(this.VerticalInfo[i].Message[0],0,this.XBottomOffset);this.Canvas.restore();}xPrev=x;}};//Y坐标转y轴数值
|
|
@@ -4164,9 +4165,9 @@ tooltip.Data=item;tooltip.ChartPaint=this;tooltip.Type=3;//异动信息
|
|
|
4164
4165
|
return true;}}return false;};}//MACD森林线 支持横屏
|
|
4165
4166
|
function ChartMACD(){this.newMethod=IChartPainting;//派生
|
|
4166
4167
|
this.newMethod();delete this.newMethod;this.ClassName="ChartMACD";this.UpColor=g_JSChartResource.UpBarColor;this.DownColor=g_JSChartResource.DownBarColor;this.LineWidth=1;this.DrawSelectedStatus=this.DrawLinePoint;this.ExportData=this.ExportArrayData;this.PtInChart=function(x,y){var dataWidth=this.ChartFrame.DataWidth;var barWidth=this.LineWidth*GetDevicePixelRatio();if(this.barWidth==50)barWidth=null;else if(barWidth>dataWidth)barWidth=dataWidth;if(barWidth<4)barWidth=4;//宽度太小了点不到
|
|
4167
|
-
return this.PtInBar(x,y,{BarWidth:barWidth});};this.DrawBars=function(lineWidth,bUpBar){var isMinute=this.IsMinuteFrame();var
|
|
4168
|
-
this.Canvas.moveTo(xFix,yBottom);this.Canvas.lineTo(xFix,y)
|
|
4169
|
-
this.DrawBars(lineWidth,true);this.DrawBars(lineWidth,false);this.Canvas.lineWidth=backupLineWidth;};this.
|
|
4168
|
+
return this.PtInBar(x,y,{BarWidth:barWidth});};this.DrawBars=function(lineWidth,bUpBar){var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var isHSCreen=this.ChartFrame.IsHScreen===true;if(isHSCreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Top;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Left;}if(bUpBar)this.Canvas.strokeStyle=this.UpColor;else this.Canvas.strokeStyle=this.DownColor;var yBottom=this.ChartFrame.GetYFromData(0);this.Canvas.beginPath();var drawCount=0;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];if(value==null)continue;if(bUpBar){if(value<0)continue;}else{if(value>=0)continue;}if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}if(x>chartright)break;var y=this.ChartFrame.GetYFromData(value);var xFix=ToFixedPoint2(lineWidth,x);//毛边修正
|
|
4169
|
+
if(isHSCreen){this.Canvas.moveTo(yBottom,ToFixedPoint(x));this.Canvas.lineTo(y,ToFixedPoint(x));}else{this.Canvas.moveTo(xFix,yBottom);this.Canvas.lineTo(xFix,y);}++drawCount;}if(drawCount>0)this.Canvas.stroke();};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}var dataWidth=this.ChartFrame.DataWidth;var lineWidth=this.LineWidth*GetDevicePixelRatio();if(this.LineWidth==50)lineWidth=dataWidth;else if(lineWidth>dataWidth)lineWidth=dataWidth;var backupLineWidth=this.Canvas.lineWidth;this.Canvas.lineWidth=lineWidth;//上下分开画
|
|
4170
|
+
this.DrawBars(lineWidth,true);this.DrawBars(lineWidth,false);this.Canvas.lineWidth=backupLineWidth;};this.GetItemData=function(indexData){if(!indexData)return null;if(!IFrameSplitOperator.IsNumber(indexData.Index))return null;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return null;var index=indexData.Index;if(index<0||index>=this.Data.Data.length)return null;var item=this.Data.Data[index];return[{Value:item,Color:item>0?this.UpColor:this.DownColor,Name:this.Name}];};}//柱子
|
|
4170
4171
|
function ChartBar(){this.newMethod=IChartPainting;//派生
|
|
4171
4172
|
this.newMethod();delete this.newMethod;this.ClassName="ChartBar";this.UpBarColor=g_JSChartResource.UpBarColor;this.DownBarColor=g_JSChartResource.DownBarColor;this.Draw=function(){if(this.ChartFrame.IsMinSize)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();var xPointCount=this.ChartFrame.XPointCount;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+2.0;var bFirstPoint=true;var drawCount=0;var yBottom=this.ChartFrame.GetYFromData(0);if(dataWidth>=4){yBottom=ToFixedRect(yBottom);//调整为整数
|
|
4172
4173
|
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];if(value==null||value==0)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=this.ChartFrame.GetXFromIndex(j);var y=this.ChartFrame.GetYFromData(value);if(value>0)this.Canvas.fillStyle=this.UpBarColor;else this.Canvas.fillStyle=this.DownBarColor;//高度调整为整数
|
|
@@ -11888,7 +11889,8 @@ var aryPoint=[];for(var i in sourceData){var item=sourceData[i];for(var j in ite
|
|
|
11888
11889
|
sourceData.sort(function(a,b){return a.Date-b.Date;});kdata.GetDateIndex(sourceData);return sourceData;}else if(ChartData.IsMinutePeriod(hqChart.Period,true)||ChartData.IsTickPeriod(hqChart.Period)||ChartData.IsSecondPeriod(hqChart.Period)||ChartData.IsMilliSecondPeriod(hqChart.Period))//分钟线
|
|
11889
11890
|
{var kdata=hqChart.ChartPaint[0].Data;//K线
|
|
11890
11891
|
sourceData.sort(function(a,b){if(a.Date==b.Date)return a.Time-b.Time;return a.Date-b.Date;});kdata.GetDateTimeIndex(sourceData);return sourceData;}else if(this.HQDataType==HQ_DATA_TYPE.MINUTE_ID||this.HQDataType==HQ_DATA_TYPE.MULTIDAY_MINUTE_ID){var minuteData=hqChart.SourceData;sourceData.sort(function(a,b){if(a.Date==b.Date)return a.Time-b.Time;return a.Date-b.Date;});minuteData.GetDateTimeIndex(sourceData);return sourceData;}return null;};this.FittingData=function(jsonData,hqChart){var outVar=jsonData.outvar;var date=jsonData.date;var time=jsonData.time;var kdata=hqChart.ChartPaint[0].Data;//把数据拟合到kdata上
|
|
11891
|
-
var result=[];if(!outVar)return result;for(var i=0;i<outVar.length;++i){var item=outVar[i];var indexData=[];var outVarItem={Name:item.name,Type:item.type};if(item.color)outVarItem.Color=item.color;if(
|
|
11892
|
+
var result=[];if(!outVar)return result;for(var i=0;i<outVar.length;++i){var item=outVar[i];var indexData=[];var outVarItem={Name:item.name,Type:item.type};if(item.color)outVarItem.Color=item.color;if(IFrameSplitOperator.IsBool(item.IsShowTitle))outVarItem.IsShowTitle=item.IsShowTitle;//是否显示指标标题
|
|
11893
|
+
if(item.data){outVarItem.Data=this.FittingArray(item.data,date,time,hqChart);if(item.color)outVarItem.Color=item.color;if(item.linewidth)outVarItem.LineWidth=item.linewidth;if(IFrameSplitOperator.IsBool(item.isshow))outVarItem.IsShow=item.isshow;//是否绘制线段
|
|
11892
11894
|
if(item.isexdata==true)outVarItem.IsExData=true;if(item.BreakPoint)outVarItem.BreakPoint=item.BreakPoint;result.push(outVarItem);}else if(item.Draw){var draw=item.Draw;var drawItem={};if(draw.DrawType=='DRAWICON')//图标
|
|
11893
11895
|
{drawItem.Icon=draw.Icon;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWTEXT')//文本
|
|
11894
11896
|
{drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='STICKLINE')//柱子
|
|
@@ -13034,7 +13036,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
13034
13036
|
this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
13035
13037
|
* 版本信息输出
|
|
13036
13038
|
*
|
|
13037
|
-
*/var HQCHART_VERSION="1.1.
|
|
13039
|
+
*/var HQCHART_VERSION="1.1.12883";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();//把给外界调用的方法暴露出来
|
|
13038
13040
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
13039
13041
|
// BaseIndex:BaseIndex,
|
|
13040
13042
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -23621,6 +23621,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
23621
23621
|
var indexData=[];
|
|
23622
23622
|
var outVarItem={Name:item.name,Type:item.type};
|
|
23623
23623
|
if (item.color) outVarItem.Color=item.color;
|
|
23624
|
+
if (IFrameSplitOperator.IsBool(item.IsShowTitle)) outVarItem.IsShowTitle = item.IsShowTitle; //是否显示指标标题
|
|
23624
23625
|
if (item.data)
|
|
23625
23626
|
{
|
|
23626
23627
|
outVarItem.Data=this.FittingArray(item.data,date,time,hqChart);
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -10643,6 +10643,9 @@ function AverageWidthFrame()
|
|
|
10643
10643
|
//JSConsole.Chart.Log('[AverageWidthFrame.DrawVertical] bottom',bottom);
|
|
10644
10644
|
if (this.ChartBorder.Bottom<=5*GetDevicePixelRatio()) return; //高度不够 不显示
|
|
10645
10645
|
|
|
10646
|
+
var mapX=null;
|
|
10647
|
+
if (this.GetVerticalXCache) mapX=this.GetVerticalXCache();
|
|
10648
|
+
|
|
10646
10649
|
var bottomTextExtend=null;
|
|
10647
10650
|
if (this.XTextExtend)
|
|
10648
10651
|
{
|
|
@@ -10659,7 +10662,10 @@ function AverageWidthFrame()
|
|
|
10659
10662
|
var textRightPrev=null; //上一次刻度输出右边x坐标
|
|
10660
10663
|
for(var i=0; i<this.VerticalInfo.length; ++i)
|
|
10661
10664
|
{
|
|
10662
|
-
var
|
|
10665
|
+
var item=this.VerticalInfo[i];
|
|
10666
|
+
var x=null;
|
|
10667
|
+
if (mapX && mapX.has(item.Value)) x=mapX.get(item.Value);
|
|
10668
|
+
else x=this.GetXFromIndex(item.Value);
|
|
10663
10669
|
if (x>right) break;
|
|
10664
10670
|
if (xPrev!=null && Math.abs(x-xPrev)<this.MinXDistance) continue;
|
|
10665
10671
|
|
|
@@ -14995,6 +15001,49 @@ function KLineFrame()
|
|
|
14995
15001
|
|
|
14996
15002
|
//是否在X轴坐标上
|
|
14997
15003
|
//this.PtInVertical=function(x,y) { return false; }
|
|
15004
|
+
|
|
15005
|
+
//缓存X轴坐标刻度
|
|
15006
|
+
this.GetVerticalXCache=function()
|
|
15007
|
+
{
|
|
15008
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.VerticalInfo)) return null;
|
|
15009
|
+
|
|
15010
|
+
var dataWidth=this.DataWidth;
|
|
15011
|
+
var distanceWidth=this.DistanceWidth;
|
|
15012
|
+
var xPointCount=this.XPointCount;
|
|
15013
|
+
|
|
15014
|
+
var setIndex=new Set();
|
|
15015
|
+
for(var i=0; i<this.VerticalInfo.length; ++i)
|
|
15016
|
+
{
|
|
15017
|
+
var item=this.VerticalInfo[i];
|
|
15018
|
+
setIndex.add(item.Value);
|
|
15019
|
+
}
|
|
15020
|
+
|
|
15021
|
+
if (this.IsHScreen)
|
|
15022
|
+
{
|
|
15023
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
15024
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
15025
|
+
}
|
|
15026
|
+
else
|
|
15027
|
+
{
|
|
15028
|
+
var border=this.ChartBorder.GetBorder();
|
|
15029
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
15030
|
+
}
|
|
15031
|
+
|
|
15032
|
+
var mapX=new Map();
|
|
15033
|
+
for(var i=0;i<xPointCount;++i, xOffset+=(dataWidth+distanceWidth))
|
|
15034
|
+
{
|
|
15035
|
+
var left=xOffset;
|
|
15036
|
+
var right=xOffset+dataWidth;
|
|
15037
|
+
var x=left+(right-left)/2;
|
|
15038
|
+
|
|
15039
|
+
if (setIndex.has(i))
|
|
15040
|
+
{
|
|
15041
|
+
mapX.set(i, x);
|
|
15042
|
+
}
|
|
15043
|
+
}
|
|
15044
|
+
|
|
15045
|
+
return mapX;
|
|
15046
|
+
}
|
|
14998
15047
|
}
|
|
14999
15048
|
|
|
15000
15049
|
function OverlayKLineFrame()
|
|
@@ -16034,19 +16083,25 @@ function KLineHScreenFrame()
|
|
|
16034
16083
|
//画X轴
|
|
16035
16084
|
this.DrawVertical=function()
|
|
16036
16085
|
{
|
|
16086
|
+
var mapX=null;
|
|
16087
|
+
if (this.GetVerticalXCache) mapX=this.GetVerticalXCache();
|
|
16088
|
+
|
|
16037
16089
|
var border=this.ChartBorder.GetHScreenBorder();
|
|
16038
16090
|
var left=border.Left;
|
|
16039
16091
|
var right=border.RightTitle;
|
|
16040
16092
|
var bottom=border.Bottom;
|
|
16041
16093
|
var pixelRatio = GetDevicePixelRatio(); //获取设备的分辨率
|
|
16042
16094
|
var xPrev=null; //上一个坐标x的值
|
|
16043
|
-
for(var i
|
|
16095
|
+
for(var i=0; i<this.VerticalInfo.length; ++i)
|
|
16044
16096
|
{
|
|
16045
|
-
var
|
|
16097
|
+
var item=this.VerticalInfo[i];
|
|
16098
|
+
var x=null;
|
|
16099
|
+
if (mapX && mapX.has(item.Value)) x=mapX.get(item.Value);
|
|
16100
|
+
else x=this.GetXFromIndex(item.Value);
|
|
16101
|
+
|
|
16046
16102
|
if (x>=bottom) break;
|
|
16047
16103
|
if (xPrev!=null && Math.abs(x-xPrev)<80) continue;
|
|
16048
16104
|
|
|
16049
|
-
var item=this.VerticalInfo[i];
|
|
16050
16105
|
if (item.LineType==2)
|
|
16051
16106
|
{
|
|
16052
16107
|
this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;
|
|
@@ -33559,15 +33614,30 @@ function ChartMACD()
|
|
|
33559
33614
|
this.DrawBars=function(lineWidth, bUpBar)
|
|
33560
33615
|
{
|
|
33561
33616
|
var isMinute=this.IsMinuteFrame();
|
|
33562
|
-
|
|
33617
|
+
|
|
33563
33618
|
var dataWidth=this.ChartFrame.DataWidth;
|
|
33564
33619
|
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
33565
33620
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
33566
|
-
var
|
|
33621
|
+
var isHSCreen=this.ChartFrame.IsHScreen===true;
|
|
33622
|
+
|
|
33623
|
+
if (isHSCreen)
|
|
33624
|
+
{
|
|
33625
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
33626
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
33627
|
+
var chartright=border.BottomEx;
|
|
33628
|
+
var lockRect=this.GetLockRect();
|
|
33629
|
+
if (lockRect) chartright=lockRect.Top;
|
|
33630
|
+
}
|
|
33631
|
+
else
|
|
33632
|
+
{
|
|
33633
|
+
var border=this.ChartBorder.GetBorder();
|
|
33634
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
33635
|
+
|
|
33636
|
+
var chartright=border.RightEx;
|
|
33637
|
+
var lockRect=this.GetLockRect();
|
|
33638
|
+
if (lockRect) chartright=lockRect.Left;
|
|
33639
|
+
}
|
|
33567
33640
|
|
|
33568
|
-
var chartright=border.RightEx;
|
|
33569
|
-
var lockRect=this.GetLockRect();
|
|
33570
|
-
if (lockRect) chartright=lockRect.Left;
|
|
33571
33641
|
|
|
33572
33642
|
if (bUpBar) this.Canvas.strokeStyle=this.UpColor;
|
|
33573
33643
|
else this.Canvas.strokeStyle=this.DownColor;
|
|
@@ -33604,8 +33674,18 @@ function ChartMACD()
|
|
|
33604
33674
|
|
|
33605
33675
|
var y=this.ChartFrame.GetYFromData(value);
|
|
33606
33676
|
var xFix=ToFixedPoint2(lineWidth, x); //毛边修正
|
|
33607
|
-
|
|
33608
|
-
|
|
33677
|
+
|
|
33678
|
+
if (isHSCreen)
|
|
33679
|
+
{
|
|
33680
|
+
this.Canvas.moveTo(yBottom,ToFixedPoint(x));
|
|
33681
|
+
this.Canvas.lineTo(y,ToFixedPoint(x));
|
|
33682
|
+
}
|
|
33683
|
+
else
|
|
33684
|
+
{
|
|
33685
|
+
this.Canvas.moveTo(xFix,yBottom);
|
|
33686
|
+
this.Canvas.lineTo(xFix,y);
|
|
33687
|
+
}
|
|
33688
|
+
|
|
33609
33689
|
++drawCount;
|
|
33610
33690
|
}
|
|
33611
33691
|
|
|
@@ -33624,12 +33704,6 @@ function ChartMACD()
|
|
|
33624
33704
|
return;
|
|
33625
33705
|
}
|
|
33626
33706
|
|
|
33627
|
-
if (this.ChartFrame.IsHScreen===true)
|
|
33628
|
-
{
|
|
33629
|
-
this.HScreenDraw();
|
|
33630
|
-
return;
|
|
33631
|
-
}
|
|
33632
|
-
|
|
33633
33707
|
var dataWidth=this.ChartFrame.DataWidth;
|
|
33634
33708
|
var lineWidth=this.LineWidth*GetDevicePixelRatio();
|
|
33635
33709
|
if (this.LineWidth==50) lineWidth=dataWidth;
|
|
@@ -33645,48 +33719,6 @@ function ChartMACD()
|
|
|
33645
33719
|
this.Canvas.lineWidth=backupLineWidth;
|
|
33646
33720
|
}
|
|
33647
33721
|
|
|
33648
|
-
this.HScreenDraw=function()
|
|
33649
|
-
{
|
|
33650
|
-
var dataWidth=this.ChartFrame.DataWidth;
|
|
33651
|
-
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
33652
|
-
var border=this.ChartBorder.GetHScreenBorder();
|
|
33653
|
-
var chartright=border.BottomEx;
|
|
33654
|
-
var xPointCount=this.ChartFrame.XPointCount;
|
|
33655
|
-
var lockRect=this.GetLockRect();
|
|
33656
|
-
if (lockRect) chartright=lockRect.Top;
|
|
33657
|
-
|
|
33658
|
-
var yBottom=this.ChartFrame.GetYFromData(0);
|
|
33659
|
-
|
|
33660
|
-
var lineWidth=this.LineWidth*GetDevicePixelRatio();
|
|
33661
|
-
if (this.LineWidth==50) lineWidth=dataWidth;
|
|
33662
|
-
else if (lineWidth>dataWidth) lineWidth=dataWidth;
|
|
33663
|
-
|
|
33664
|
-
var backupLineWidth=this.Canvas.lineWidth;
|
|
33665
|
-
this.Canvas.lineWidth=lineWidth;
|
|
33666
|
-
|
|
33667
|
-
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
|
|
33668
|
-
{
|
|
33669
|
-
var value=this.Data.Data[i];
|
|
33670
|
-
if (value==null) continue;
|
|
33671
|
-
|
|
33672
|
-
var x=this.ChartFrame.GetXFromIndex(j);
|
|
33673
|
-
var y=this.ChartFrame.GetYFromData(value);
|
|
33674
|
-
|
|
33675
|
-
if (x>chartright) break;
|
|
33676
|
-
|
|
33677
|
-
this.Canvas.beginPath();
|
|
33678
|
-
this.Canvas.moveTo(yBottom,ToFixedPoint(x));
|
|
33679
|
-
this.Canvas.lineTo(y,ToFixedPoint(x));
|
|
33680
|
-
|
|
33681
|
-
if (value>=0) this.Canvas.strokeStyle=this.UpColor;
|
|
33682
|
-
else this.Canvas.strokeStyle=this.DownColor;
|
|
33683
|
-
this.Canvas.stroke();
|
|
33684
|
-
this.Canvas.closePath();
|
|
33685
|
-
}
|
|
33686
|
-
|
|
33687
|
-
this.Canvas.lineWidth=backupLineWidth;
|
|
33688
|
-
}
|
|
33689
|
-
|
|
33690
33722
|
this.GetItemData=function(indexData)
|
|
33691
33723
|
{
|
|
33692
33724
|
if (!indexData) return null;
|
|
@@ -14810,6 +14810,9 @@ function AverageWidthFrame()
|
|
|
14810
14810
|
//JSConsole.Chart.Log('[AverageWidthFrame.DrawVertical] bottom',bottom);
|
|
14811
14811
|
if (this.ChartBorder.Bottom<=5*GetDevicePixelRatio()) return; //高度不够 不显示
|
|
14812
14812
|
|
|
14813
|
+
var mapX=null;
|
|
14814
|
+
if (this.GetVerticalXCache) mapX=this.GetVerticalXCache();
|
|
14815
|
+
|
|
14813
14816
|
var bottomTextExtend=null;
|
|
14814
14817
|
if (this.XTextExtend)
|
|
14815
14818
|
{
|
|
@@ -14826,7 +14829,10 @@ function AverageWidthFrame()
|
|
|
14826
14829
|
var textRightPrev=null; //上一次刻度输出右边x坐标
|
|
14827
14830
|
for(var i=0; i<this.VerticalInfo.length; ++i)
|
|
14828
14831
|
{
|
|
14829
|
-
var
|
|
14832
|
+
var item=this.VerticalInfo[i];
|
|
14833
|
+
var x=null;
|
|
14834
|
+
if (mapX && mapX.has(item.Value)) x=mapX.get(item.Value);
|
|
14835
|
+
else x=this.GetXFromIndex(item.Value);
|
|
14830
14836
|
if (x>right) break;
|
|
14831
14837
|
if (xPrev!=null && Math.abs(x-xPrev)<this.MinXDistance) continue;
|
|
14832
14838
|
|
|
@@ -19162,6 +19168,49 @@ function KLineFrame()
|
|
|
19162
19168
|
|
|
19163
19169
|
//是否在X轴坐标上
|
|
19164
19170
|
//this.PtInVertical=function(x,y) { return false; }
|
|
19171
|
+
|
|
19172
|
+
//缓存X轴坐标刻度
|
|
19173
|
+
this.GetVerticalXCache=function()
|
|
19174
|
+
{
|
|
19175
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.VerticalInfo)) return null;
|
|
19176
|
+
|
|
19177
|
+
var dataWidth=this.DataWidth;
|
|
19178
|
+
var distanceWidth=this.DistanceWidth;
|
|
19179
|
+
var xPointCount=this.XPointCount;
|
|
19180
|
+
|
|
19181
|
+
var setIndex=new Set();
|
|
19182
|
+
for(var i=0; i<this.VerticalInfo.length; ++i)
|
|
19183
|
+
{
|
|
19184
|
+
var item=this.VerticalInfo[i];
|
|
19185
|
+
setIndex.add(item.Value);
|
|
19186
|
+
}
|
|
19187
|
+
|
|
19188
|
+
if (this.IsHScreen)
|
|
19189
|
+
{
|
|
19190
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
19191
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
19192
|
+
}
|
|
19193
|
+
else
|
|
19194
|
+
{
|
|
19195
|
+
var border=this.ChartBorder.GetBorder();
|
|
19196
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
19197
|
+
}
|
|
19198
|
+
|
|
19199
|
+
var mapX=new Map();
|
|
19200
|
+
for(var i=0;i<xPointCount;++i, xOffset+=(dataWidth+distanceWidth))
|
|
19201
|
+
{
|
|
19202
|
+
var left=xOffset;
|
|
19203
|
+
var right=xOffset+dataWidth;
|
|
19204
|
+
var x=left+(right-left)/2;
|
|
19205
|
+
|
|
19206
|
+
if (setIndex.has(i))
|
|
19207
|
+
{
|
|
19208
|
+
mapX.set(i, x);
|
|
19209
|
+
}
|
|
19210
|
+
}
|
|
19211
|
+
|
|
19212
|
+
return mapX;
|
|
19213
|
+
}
|
|
19165
19214
|
}
|
|
19166
19215
|
|
|
19167
19216
|
function OverlayKLineFrame()
|
|
@@ -20201,19 +20250,25 @@ function KLineHScreenFrame()
|
|
|
20201
20250
|
//画X轴
|
|
20202
20251
|
this.DrawVertical=function()
|
|
20203
20252
|
{
|
|
20253
|
+
var mapX=null;
|
|
20254
|
+
if (this.GetVerticalXCache) mapX=this.GetVerticalXCache();
|
|
20255
|
+
|
|
20204
20256
|
var border=this.ChartBorder.GetHScreenBorder();
|
|
20205
20257
|
var left=border.Left;
|
|
20206
20258
|
var right=border.RightTitle;
|
|
20207
20259
|
var bottom=border.Bottom;
|
|
20208
20260
|
var pixelRatio = GetDevicePixelRatio(); //获取设备的分辨率
|
|
20209
20261
|
var xPrev=null; //上一个坐标x的值
|
|
20210
|
-
for(var i
|
|
20262
|
+
for(var i=0; i<this.VerticalInfo.length; ++i)
|
|
20211
20263
|
{
|
|
20212
|
-
var
|
|
20264
|
+
var item=this.VerticalInfo[i];
|
|
20265
|
+
var x=null;
|
|
20266
|
+
if (mapX && mapX.has(item.Value)) x=mapX.get(item.Value);
|
|
20267
|
+
else x=this.GetXFromIndex(item.Value);
|
|
20268
|
+
|
|
20213
20269
|
if (x>=bottom) break;
|
|
20214
20270
|
if (xPrev!=null && Math.abs(x-xPrev)<80) continue;
|
|
20215
20271
|
|
|
20216
|
-
var item=this.VerticalInfo[i];
|
|
20217
20272
|
if (item.LineType==2)
|
|
20218
20273
|
{
|
|
20219
20274
|
this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;
|
|
@@ -37726,15 +37781,30 @@ function ChartMACD()
|
|
|
37726
37781
|
this.DrawBars=function(lineWidth, bUpBar)
|
|
37727
37782
|
{
|
|
37728
37783
|
var isMinute=this.IsMinuteFrame();
|
|
37729
|
-
|
|
37784
|
+
|
|
37730
37785
|
var dataWidth=this.ChartFrame.DataWidth;
|
|
37731
37786
|
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
37732
37787
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
37733
|
-
var
|
|
37788
|
+
var isHSCreen=this.ChartFrame.IsHScreen===true;
|
|
37789
|
+
|
|
37790
|
+
if (isHSCreen)
|
|
37791
|
+
{
|
|
37792
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
37793
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
37794
|
+
var chartright=border.BottomEx;
|
|
37795
|
+
var lockRect=this.GetLockRect();
|
|
37796
|
+
if (lockRect) chartright=lockRect.Top;
|
|
37797
|
+
}
|
|
37798
|
+
else
|
|
37799
|
+
{
|
|
37800
|
+
var border=this.ChartBorder.GetBorder();
|
|
37801
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
37802
|
+
|
|
37803
|
+
var chartright=border.RightEx;
|
|
37804
|
+
var lockRect=this.GetLockRect();
|
|
37805
|
+
if (lockRect) chartright=lockRect.Left;
|
|
37806
|
+
}
|
|
37734
37807
|
|
|
37735
|
-
var chartright=border.RightEx;
|
|
37736
|
-
var lockRect=this.GetLockRect();
|
|
37737
|
-
if (lockRect) chartright=lockRect.Left;
|
|
37738
37808
|
|
|
37739
37809
|
if (bUpBar) this.Canvas.strokeStyle=this.UpColor;
|
|
37740
37810
|
else this.Canvas.strokeStyle=this.DownColor;
|
|
@@ -37771,8 +37841,18 @@ function ChartMACD()
|
|
|
37771
37841
|
|
|
37772
37842
|
var y=this.ChartFrame.GetYFromData(value);
|
|
37773
37843
|
var xFix=ToFixedPoint2(lineWidth, x); //毛边修正
|
|
37774
|
-
|
|
37775
|
-
|
|
37844
|
+
|
|
37845
|
+
if (isHSCreen)
|
|
37846
|
+
{
|
|
37847
|
+
this.Canvas.moveTo(yBottom,ToFixedPoint(x));
|
|
37848
|
+
this.Canvas.lineTo(y,ToFixedPoint(x));
|
|
37849
|
+
}
|
|
37850
|
+
else
|
|
37851
|
+
{
|
|
37852
|
+
this.Canvas.moveTo(xFix,yBottom);
|
|
37853
|
+
this.Canvas.lineTo(xFix,y);
|
|
37854
|
+
}
|
|
37855
|
+
|
|
37776
37856
|
++drawCount;
|
|
37777
37857
|
}
|
|
37778
37858
|
|
|
@@ -37791,12 +37871,6 @@ function ChartMACD()
|
|
|
37791
37871
|
return;
|
|
37792
37872
|
}
|
|
37793
37873
|
|
|
37794
|
-
if (this.ChartFrame.IsHScreen===true)
|
|
37795
|
-
{
|
|
37796
|
-
this.HScreenDraw();
|
|
37797
|
-
return;
|
|
37798
|
-
}
|
|
37799
|
-
|
|
37800
37874
|
var dataWidth=this.ChartFrame.DataWidth;
|
|
37801
37875
|
var lineWidth=this.LineWidth*GetDevicePixelRatio();
|
|
37802
37876
|
if (this.LineWidth==50) lineWidth=dataWidth;
|
|
@@ -37812,48 +37886,6 @@ function ChartMACD()
|
|
|
37812
37886
|
this.Canvas.lineWidth=backupLineWidth;
|
|
37813
37887
|
}
|
|
37814
37888
|
|
|
37815
|
-
this.HScreenDraw=function()
|
|
37816
|
-
{
|
|
37817
|
-
var dataWidth=this.ChartFrame.DataWidth;
|
|
37818
|
-
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
37819
|
-
var border=this.ChartBorder.GetHScreenBorder();
|
|
37820
|
-
var chartright=border.BottomEx;
|
|
37821
|
-
var xPointCount=this.ChartFrame.XPointCount;
|
|
37822
|
-
var lockRect=this.GetLockRect();
|
|
37823
|
-
if (lockRect) chartright=lockRect.Top;
|
|
37824
|
-
|
|
37825
|
-
var yBottom=this.ChartFrame.GetYFromData(0);
|
|
37826
|
-
|
|
37827
|
-
var lineWidth=this.LineWidth*GetDevicePixelRatio();
|
|
37828
|
-
if (this.LineWidth==50) lineWidth=dataWidth;
|
|
37829
|
-
else if (lineWidth>dataWidth) lineWidth=dataWidth;
|
|
37830
|
-
|
|
37831
|
-
var backupLineWidth=this.Canvas.lineWidth;
|
|
37832
|
-
this.Canvas.lineWidth=lineWidth;
|
|
37833
|
-
|
|
37834
|
-
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
|
|
37835
|
-
{
|
|
37836
|
-
var value=this.Data.Data[i];
|
|
37837
|
-
if (value==null) continue;
|
|
37838
|
-
|
|
37839
|
-
var x=this.ChartFrame.GetXFromIndex(j);
|
|
37840
|
-
var y=this.ChartFrame.GetYFromData(value);
|
|
37841
|
-
|
|
37842
|
-
if (x>chartright) break;
|
|
37843
|
-
|
|
37844
|
-
this.Canvas.beginPath();
|
|
37845
|
-
this.Canvas.moveTo(yBottom,ToFixedPoint(x));
|
|
37846
|
-
this.Canvas.lineTo(y,ToFixedPoint(x));
|
|
37847
|
-
|
|
37848
|
-
if (value>=0) this.Canvas.strokeStyle=this.UpColor;
|
|
37849
|
-
else this.Canvas.strokeStyle=this.DownColor;
|
|
37850
|
-
this.Canvas.stroke();
|
|
37851
|
-
this.Canvas.closePath();
|
|
37852
|
-
}
|
|
37853
|
-
|
|
37854
|
-
this.Canvas.lineWidth=backupLineWidth;
|
|
37855
|
-
}
|
|
37856
|
-
|
|
37857
37889
|
this.GetItemData=function(indexData)
|
|
37858
37890
|
{
|
|
37859
37891
|
if (!indexData) return null;
|
|
@@ -119229,6 +119261,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
119229
119261
|
var indexData=[];
|
|
119230
119262
|
var outVarItem={Name:item.name,Type:item.type};
|
|
119231
119263
|
if (item.color) outVarItem.Color=item.color;
|
|
119264
|
+
if (IFrameSplitOperator.IsBool(item.IsShowTitle)) outVarItem.IsShowTitle = item.IsShowTitle; //是否显示指标标题
|
|
119232
119265
|
if (item.data)
|
|
119233
119266
|
{
|
|
119234
119267
|
outVarItem.Data=this.FittingArray(item.data,date,time,hqChart);
|
|
@@ -132046,7 +132079,7 @@ function ScrollBarBGChart()
|
|
|
132046
132079
|
|
|
132047
132080
|
|
|
132048
132081
|
|
|
132049
|
-
var HQCHART_VERSION="1.1.
|
|
132082
|
+
var HQCHART_VERSION="1.1.12883";
|
|
132050
132083
|
|
|
132051
132084
|
function PrintHQChartVersion()
|
|
132052
132085
|
{
|
|
@@ -14854,6 +14854,9 @@ function AverageWidthFrame()
|
|
|
14854
14854
|
//JSConsole.Chart.Log('[AverageWidthFrame.DrawVertical] bottom',bottom);
|
|
14855
14855
|
if (this.ChartBorder.Bottom<=5*GetDevicePixelRatio()) return; //高度不够 不显示
|
|
14856
14856
|
|
|
14857
|
+
var mapX=null;
|
|
14858
|
+
if (this.GetVerticalXCache) mapX=this.GetVerticalXCache();
|
|
14859
|
+
|
|
14857
14860
|
var bottomTextExtend=null;
|
|
14858
14861
|
if (this.XTextExtend)
|
|
14859
14862
|
{
|
|
@@ -14870,7 +14873,10 @@ function AverageWidthFrame()
|
|
|
14870
14873
|
var textRightPrev=null; //上一次刻度输出右边x坐标
|
|
14871
14874
|
for(var i=0; i<this.VerticalInfo.length; ++i)
|
|
14872
14875
|
{
|
|
14873
|
-
var
|
|
14876
|
+
var item=this.VerticalInfo[i];
|
|
14877
|
+
var x=null;
|
|
14878
|
+
if (mapX && mapX.has(item.Value)) x=mapX.get(item.Value);
|
|
14879
|
+
else x=this.GetXFromIndex(item.Value);
|
|
14874
14880
|
if (x>right) break;
|
|
14875
14881
|
if (xPrev!=null && Math.abs(x-xPrev)<this.MinXDistance) continue;
|
|
14876
14882
|
|
|
@@ -19206,6 +19212,49 @@ function KLineFrame()
|
|
|
19206
19212
|
|
|
19207
19213
|
//是否在X轴坐标上
|
|
19208
19214
|
//this.PtInVertical=function(x,y) { return false; }
|
|
19215
|
+
|
|
19216
|
+
//缓存X轴坐标刻度
|
|
19217
|
+
this.GetVerticalXCache=function()
|
|
19218
|
+
{
|
|
19219
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.VerticalInfo)) return null;
|
|
19220
|
+
|
|
19221
|
+
var dataWidth=this.DataWidth;
|
|
19222
|
+
var distanceWidth=this.DistanceWidth;
|
|
19223
|
+
var xPointCount=this.XPointCount;
|
|
19224
|
+
|
|
19225
|
+
var setIndex=new Set();
|
|
19226
|
+
for(var i=0; i<this.VerticalInfo.length; ++i)
|
|
19227
|
+
{
|
|
19228
|
+
var item=this.VerticalInfo[i];
|
|
19229
|
+
setIndex.add(item.Value);
|
|
19230
|
+
}
|
|
19231
|
+
|
|
19232
|
+
if (this.IsHScreen)
|
|
19233
|
+
{
|
|
19234
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
19235
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
19236
|
+
}
|
|
19237
|
+
else
|
|
19238
|
+
{
|
|
19239
|
+
var border=this.ChartBorder.GetBorder();
|
|
19240
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
19241
|
+
}
|
|
19242
|
+
|
|
19243
|
+
var mapX=new Map();
|
|
19244
|
+
for(var i=0;i<xPointCount;++i, xOffset+=(dataWidth+distanceWidth))
|
|
19245
|
+
{
|
|
19246
|
+
var left=xOffset;
|
|
19247
|
+
var right=xOffset+dataWidth;
|
|
19248
|
+
var x=left+(right-left)/2;
|
|
19249
|
+
|
|
19250
|
+
if (setIndex.has(i))
|
|
19251
|
+
{
|
|
19252
|
+
mapX.set(i, x);
|
|
19253
|
+
}
|
|
19254
|
+
}
|
|
19255
|
+
|
|
19256
|
+
return mapX;
|
|
19257
|
+
}
|
|
19209
19258
|
}
|
|
19210
19259
|
|
|
19211
19260
|
function OverlayKLineFrame()
|
|
@@ -20245,19 +20294,25 @@ function KLineHScreenFrame()
|
|
|
20245
20294
|
//画X轴
|
|
20246
20295
|
this.DrawVertical=function()
|
|
20247
20296
|
{
|
|
20297
|
+
var mapX=null;
|
|
20298
|
+
if (this.GetVerticalXCache) mapX=this.GetVerticalXCache();
|
|
20299
|
+
|
|
20248
20300
|
var border=this.ChartBorder.GetHScreenBorder();
|
|
20249
20301
|
var left=border.Left;
|
|
20250
20302
|
var right=border.RightTitle;
|
|
20251
20303
|
var bottom=border.Bottom;
|
|
20252
20304
|
var pixelRatio = GetDevicePixelRatio(); //获取设备的分辨率
|
|
20253
20305
|
var xPrev=null; //上一个坐标x的值
|
|
20254
|
-
for(var i
|
|
20306
|
+
for(var i=0; i<this.VerticalInfo.length; ++i)
|
|
20255
20307
|
{
|
|
20256
|
-
var
|
|
20308
|
+
var item=this.VerticalInfo[i];
|
|
20309
|
+
var x=null;
|
|
20310
|
+
if (mapX && mapX.has(item.Value)) x=mapX.get(item.Value);
|
|
20311
|
+
else x=this.GetXFromIndex(item.Value);
|
|
20312
|
+
|
|
20257
20313
|
if (x>=bottom) break;
|
|
20258
20314
|
if (xPrev!=null && Math.abs(x-xPrev)<80) continue;
|
|
20259
20315
|
|
|
20260
|
-
var item=this.VerticalInfo[i];
|
|
20261
20316
|
if (item.LineType==2)
|
|
20262
20317
|
{
|
|
20263
20318
|
this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;
|
|
@@ -37770,15 +37825,30 @@ function ChartMACD()
|
|
|
37770
37825
|
this.DrawBars=function(lineWidth, bUpBar)
|
|
37771
37826
|
{
|
|
37772
37827
|
var isMinute=this.IsMinuteFrame();
|
|
37773
|
-
|
|
37828
|
+
|
|
37774
37829
|
var dataWidth=this.ChartFrame.DataWidth;
|
|
37775
37830
|
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
37776
37831
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
37777
|
-
var
|
|
37832
|
+
var isHSCreen=this.ChartFrame.IsHScreen===true;
|
|
37833
|
+
|
|
37834
|
+
if (isHSCreen)
|
|
37835
|
+
{
|
|
37836
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
37837
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
37838
|
+
var chartright=border.BottomEx;
|
|
37839
|
+
var lockRect=this.GetLockRect();
|
|
37840
|
+
if (lockRect) chartright=lockRect.Top;
|
|
37841
|
+
}
|
|
37842
|
+
else
|
|
37843
|
+
{
|
|
37844
|
+
var border=this.ChartBorder.GetBorder();
|
|
37845
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
37846
|
+
|
|
37847
|
+
var chartright=border.RightEx;
|
|
37848
|
+
var lockRect=this.GetLockRect();
|
|
37849
|
+
if (lockRect) chartright=lockRect.Left;
|
|
37850
|
+
}
|
|
37778
37851
|
|
|
37779
|
-
var chartright=border.RightEx;
|
|
37780
|
-
var lockRect=this.GetLockRect();
|
|
37781
|
-
if (lockRect) chartright=lockRect.Left;
|
|
37782
37852
|
|
|
37783
37853
|
if (bUpBar) this.Canvas.strokeStyle=this.UpColor;
|
|
37784
37854
|
else this.Canvas.strokeStyle=this.DownColor;
|
|
@@ -37815,8 +37885,18 @@ function ChartMACD()
|
|
|
37815
37885
|
|
|
37816
37886
|
var y=this.ChartFrame.GetYFromData(value);
|
|
37817
37887
|
var xFix=ToFixedPoint2(lineWidth, x); //毛边修正
|
|
37818
|
-
|
|
37819
|
-
|
|
37888
|
+
|
|
37889
|
+
if (isHSCreen)
|
|
37890
|
+
{
|
|
37891
|
+
this.Canvas.moveTo(yBottom,ToFixedPoint(x));
|
|
37892
|
+
this.Canvas.lineTo(y,ToFixedPoint(x));
|
|
37893
|
+
}
|
|
37894
|
+
else
|
|
37895
|
+
{
|
|
37896
|
+
this.Canvas.moveTo(xFix,yBottom);
|
|
37897
|
+
this.Canvas.lineTo(xFix,y);
|
|
37898
|
+
}
|
|
37899
|
+
|
|
37820
37900
|
++drawCount;
|
|
37821
37901
|
}
|
|
37822
37902
|
|
|
@@ -37835,12 +37915,6 @@ function ChartMACD()
|
|
|
37835
37915
|
return;
|
|
37836
37916
|
}
|
|
37837
37917
|
|
|
37838
|
-
if (this.ChartFrame.IsHScreen===true)
|
|
37839
|
-
{
|
|
37840
|
-
this.HScreenDraw();
|
|
37841
|
-
return;
|
|
37842
|
-
}
|
|
37843
|
-
|
|
37844
37918
|
var dataWidth=this.ChartFrame.DataWidth;
|
|
37845
37919
|
var lineWidth=this.LineWidth*GetDevicePixelRatio();
|
|
37846
37920
|
if (this.LineWidth==50) lineWidth=dataWidth;
|
|
@@ -37856,48 +37930,6 @@ function ChartMACD()
|
|
|
37856
37930
|
this.Canvas.lineWidth=backupLineWidth;
|
|
37857
37931
|
}
|
|
37858
37932
|
|
|
37859
|
-
this.HScreenDraw=function()
|
|
37860
|
-
{
|
|
37861
|
-
var dataWidth=this.ChartFrame.DataWidth;
|
|
37862
|
-
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
37863
|
-
var border=this.ChartBorder.GetHScreenBorder();
|
|
37864
|
-
var chartright=border.BottomEx;
|
|
37865
|
-
var xPointCount=this.ChartFrame.XPointCount;
|
|
37866
|
-
var lockRect=this.GetLockRect();
|
|
37867
|
-
if (lockRect) chartright=lockRect.Top;
|
|
37868
|
-
|
|
37869
|
-
var yBottom=this.ChartFrame.GetYFromData(0);
|
|
37870
|
-
|
|
37871
|
-
var lineWidth=this.LineWidth*GetDevicePixelRatio();
|
|
37872
|
-
if (this.LineWidth==50) lineWidth=dataWidth;
|
|
37873
|
-
else if (lineWidth>dataWidth) lineWidth=dataWidth;
|
|
37874
|
-
|
|
37875
|
-
var backupLineWidth=this.Canvas.lineWidth;
|
|
37876
|
-
this.Canvas.lineWidth=lineWidth;
|
|
37877
|
-
|
|
37878
|
-
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
|
|
37879
|
-
{
|
|
37880
|
-
var value=this.Data.Data[i];
|
|
37881
|
-
if (value==null) continue;
|
|
37882
|
-
|
|
37883
|
-
var x=this.ChartFrame.GetXFromIndex(j);
|
|
37884
|
-
var y=this.ChartFrame.GetYFromData(value);
|
|
37885
|
-
|
|
37886
|
-
if (x>chartright) break;
|
|
37887
|
-
|
|
37888
|
-
this.Canvas.beginPath();
|
|
37889
|
-
this.Canvas.moveTo(yBottom,ToFixedPoint(x));
|
|
37890
|
-
this.Canvas.lineTo(y,ToFixedPoint(x));
|
|
37891
|
-
|
|
37892
|
-
if (value>=0) this.Canvas.strokeStyle=this.UpColor;
|
|
37893
|
-
else this.Canvas.strokeStyle=this.DownColor;
|
|
37894
|
-
this.Canvas.stroke();
|
|
37895
|
-
this.Canvas.closePath();
|
|
37896
|
-
}
|
|
37897
|
-
|
|
37898
|
-
this.Canvas.lineWidth=backupLineWidth;
|
|
37899
|
-
}
|
|
37900
|
-
|
|
37901
37933
|
this.GetItemData=function(indexData)
|
|
37902
37934
|
{
|
|
37903
37935
|
if (!indexData) return null;
|
|
@@ -119273,6 +119305,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
119273
119305
|
var indexData=[];
|
|
119274
119306
|
var outVarItem={Name:item.name,Type:item.type};
|
|
119275
119307
|
if (item.color) outVarItem.Color=item.color;
|
|
119308
|
+
if (IFrameSplitOperator.IsBool(item.IsShowTitle)) outVarItem.IsShowTitle = item.IsShowTitle; //是否显示指标标题
|
|
119276
119309
|
if (item.data)
|
|
119277
119310
|
{
|
|
119278
119311
|
outVarItem.Data=this.FittingArray(item.data,date,time,hqChart);
|
|
@@ -132204,7 +132237,7 @@ function HQChartScriptWorker()
|
|
|
132204
132237
|
|
|
132205
132238
|
|
|
132206
132239
|
|
|
132207
|
-
var HQCHART_VERSION="1.1.
|
|
132240
|
+
var HQCHART_VERSION="1.1.12883";
|
|
132208
132241
|
|
|
132209
132242
|
function PrintHQChartVersion()
|
|
132210
132243
|
{
|