hqchart 1.1.12431 → 1.1.12437

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.
@@ -1924,7 +1924,8 @@ this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.To
1924
1924
  chartPaint.push(this.ChartPaint[i]);}for(var i=0;i<this.OverlayChartPaint.length;++i){chartPaint.push(this.OverlayChartPaint[i]);}var aryNotSupport=[];for(var i=0;i<chartPaint.length;++i){var paint=chartPaint[i];if(paint.NotSupportMessage){aryNotSupport.push(paint);continue;}var range=paint.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;var frameItem=null;for(var j=0;j<frameMaxMinData.length;++j){if(frameMaxMinData[j].Frame==paint.ChartFrame){frameItem=frameMaxMinData[j];break;}}if(frameItem){if(frameItem.Range.Max<range.Max)frameItem.Range.Max=range.Max;if(frameItem.Range.Min>range.Min)frameItem.Range.Min=range.Min;}else{frameItem={OverlayFrame:[]};frameItem.Frame=paint.ChartFrame;frameItem.Range=range;frameMaxMinData.push(frameItem);}}//当前计算
1925
1925
  for(var i=0;i<aryNotSupport.length;++i){var paint=aryNotSupport[i];var range={Max:10,Min:1};var frameItem=null;for(var j=0;j<frameMaxMinData.length;++j){if(frameMaxMinData[j].Frame==paint.ChartFrame){frameItem=frameMaxMinData[j];break;}}if(frameItem)continue;frameItem={OverlayFrame:[]};frameItem.Frame=paint.ChartFrame;frameItem.Range=range;frameMaxMinData.push(frameItem);}var mapFrame=new _map2.default();for(var i=0;i<frameMaxMinData.length;++i){var item=frameMaxMinData[i];mapFrame.set(item.Frame.Identify,item);}//叠加坐标Y轴使用主图指标, 最大最小值
1926
1926
  for(var i=0;i<this.Frame.SubFrame.length;++i){var subFrame=this.Frame.SubFrame[i];for(var j=0;j<subFrame.OverlayIndex.length;++j){var overlayItem=subFrame.OverlayIndex[j];var overlayFrame=overlayItem.Frame;if(overlayFrame.IsShareY!=true)continue;if(!overlayFrame.MainFrame)continue;if(!mapFrame.has(overlayFrame.MainFrame.Identify))continue;var frameItem=mapFrame.get(overlayFrame.MainFrame.Identify);if(!frameItem)continue;frameItem.OverlayFrame.push(overlayFrame);if(overlayFrame.IsCalculateYMaxMin===false)continue;//叠加坐标Y轴不调整
1927
- for(var k=0;k<overlayItem.ChartPaint.length;++k){var paint=overlayItem.ChartPaint[k];var range=paint.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;if(frameItem.Range.Max<range.Max)frameItem.Range.Max=range.Max;if(frameItem.Range.Min>range.Min)frameItem.Range.Min=range.Min;}}}for(var i=0;i<frameMaxMinData.length;++i){var item=frameMaxMinData[i];if(!item.Frame||!item.Range)continue;if(item.Range.Max==null||item.Range.Min==null)continue;if(item.Frame.YSpecificMaxMin){item.Frame.HorizontalMax=item.Frame.YSpecificMaxMin.Max;item.Frame.HorizontalMin=item.Frame.YSpecificMaxMin.Min;}else{item.Frame.HorizontalMax=item.Range.Max;item.Frame.HorizontalMin=item.Range.Min;}item.Frame.XYSplit=true;for(var j in item.OverlayFrame){item.OverlayFrame[j].XYSplit=true;}}//更新独立子坐标
1927
+ for(var k=0;k<overlayItem.ChartPaint.length;++k){var paint=overlayItem.ChartPaint[k];if(paint.IsShow==false)continue;//隐藏的图形不计算
1928
+ var range=paint.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;if(frameItem.Range.Max<range.Max)frameItem.Range.Max=range.Max;if(frameItem.Range.Min>range.Min)frameItem.Range.Min=range.Min;}}}for(var i=0;i<frameMaxMinData.length;++i){var item=frameMaxMinData[i];if(!item.Frame||!item.Range)continue;if(item.Range.Max==null||item.Range.Min==null)continue;if(item.Frame.YSpecificMaxMin){item.Frame.HorizontalMax=item.Frame.YSpecificMaxMin.Max;item.Frame.HorizontalMin=item.Frame.YSpecificMaxMin.Min;}else{item.Frame.HorizontalMax=item.Range.Max;item.Frame.HorizontalMin=item.Range.Min;}item.Frame.XYSplit=true;for(var j in item.OverlayFrame){item.OverlayFrame[j].XYSplit=true;}}//更新独立子坐标
1928
1929
  for(var i=0;i<this.Frame.SubFrame.length;++i){var subFrame=this.Frame.SubFrame[i];for(var j=0;j<subFrame.OverlayIndex.length;++j){var overlayItem=subFrame.OverlayIndex[j];if(overlayItem.Frame.IsShareY===true)continue;overlayItem.UpdateFrameMaxMin();}}};this.DataMoveLeft=function(){var data=null;if(!this.Frame.Data)data=this.Frame.Data;else data=this.Frame.SubFrame[0].Frame.Data;if(!data)return false;if(data.DataOffset<=0)return false;--data.DataOffset;return true;};this.DataMoveRight=function(){var data=null;if(!this.Frame.Data)data=this.Frame.Data;else data=this.Frame.SubFrame[0].Frame.Data;if(!data)return false;var xPointcount=0;if(this.Frame.XPointCount)xPointcount=this.Frame.XPointCount;else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;if(!xPointcount)return false;if(xPointcount+data.DataOffset>=data.Data.length)return false;++data.DataOffset;return true;};this.UpdataDataoffset=function(){var data=null;if(this.Frame.Data)data=this.Frame.Data;else data=this.Frame.SubFrame[0].Frame.Data;if(!data)return;for(var i in this.ChartPaint){var item=this.ChartPaint[i];if(!item.Data)continue;item.Data.DataOffset=data.DataOffset;}for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];if(!item.Data)continue;item.Data.DataOffset=data.DataOffset;}//叠加指标当前显示的数据偏移
1929
1930
  for(var i in this.Frame.SubFrame){var subFrame=this.Frame.SubFrame[i];for(var j in subFrame.OverlayIndex){var overlayItem=subFrame.OverlayIndex[j];for(var k in overlayItem.ChartPaint){var item=overlayItem.ChartPaint[k];if(!item.Data)continue;item.Data.DataOffset=data.DataOffset;}}}};this.GetMoveOneStepWidth=function(){if(IFrameSplitOperator.IsPlusNumber(this.StepPixel))return this.StepPixel;var pixelRatio=GetDevicePixelRatio();var mainFrame=this.Frame.SubFrame[0].Frame;var dataWidth=mainFrame.DataWidth;var distanceWidth=mainFrame.DistanceWidth;var oneStepWidth=this.StepPixel;var oneStepWidth=(dataWidth+distanceWidth)/pixelRatio;if(oneStepWidth<1)oneStepWidth=1;return oneStepWidth;};this.DataMove=function(step,isLeft){var oneStepWidth=this.GetMoveOneStepWidth();var moveStep=step;step=parseInt(step/oneStepWidth);//除以4个像素
1930
1931
  if(step<=0)return false;var data=null;if(!this.Frame.Data)data=this.Frame.Data;else data=this.Frame.SubFrame[0].Frame.Data;if(!data)return false;var xPointcount=0;if(this.Frame.XPointCount)xPointcount=this.Frame.XPointCount;else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;if(!xPointcount)return false;if(this.Frame.SubFrame&&this.Frame.SubFrame.length>0&&this.Frame.SubFrame[0].Frame){var fristFrame=this.Frame.SubFrame[0].Frame;if(fristFrame.DataWidth<=1||fristFrame.DistanceWidth<=1)//K线在缩放很小的时候 移动加速
@@ -2070,7 +2071,7 @@ return fixValue;}function ToFixedRect(value){// With a bitwise or.
2070
2071
  // Finally, a left bitwise shift.
2071
2072
  //value*=GetDevicePixelRatio();
2072
2073
  var rounded;return rounded=0.5+value<<0;}//深拷贝
2073
- function CloneData(data){if(!data)return null;var strData=(0,_stringify2.default)(data);var item=JSON.parse(strData);return item;}function Point(){this.X;this.Y;}function SelectRectData(){this.Data;//主数据
2074
+ function CloneData(data){if(!data)return null;var strData=(0,_stringify2.default)(data);var item=JSON.parse(strData);return item;}function IsRecvOverlap(rect1,rect2){return Math.max(rect1.Left,rect2.Left)<Math.min(rect1.Right,rect2.Right)&&Math.max(rect1.Top,rect2.Top)<Math.min(rect1.Bottom,rect2.Bottom);}function Point(){this.X;this.Y;}function SelectRectData(){this.Data;//主数据
2074
2075
  this.JSChartContainer;//行情控件
2075
2076
  this.Start;//数据起始位子
2076
2077
  this.End;//数据结束位置
@@ -5044,7 +5045,7 @@ this.GetMultiDayBeforeOpenData=function(){if(!this.MultiDayBeforeOpenData||!IFra
5044
5045
  var range=item.GetMaxMin();if(range.Max&&range.Max>max)max=range.Max;if(range.Min&&range.Min<min)min=range.Min;}if(this.SplitType==1&&this.LimitPrice){if(max<this.LimitPrice.Max)max=this.LimitPrice.Max;if(min>this.LimitPrice.Min)min=this.LimitPrice.Min;}if(IFrameSplitOperator.IsNumber(this.High)&&IFrameSplitOperator.IsNumber(this.Low)){if(max<this.High)max=this.High;if(min>this.Low)min=this.Low;}var range={Max:null,Min:null};if(this.IsAfterData&&this.AfterCloseData){this.GetCallAuctionMaxMin(this.AfterCloseData,range);}if(this.IsBeforeData&&this.BeforeOpenData){this.GetCallAuctionMaxMin(this.BeforeOpenData,range);}var multiDayBeforeOpenData=this.GetMultiDayBeforeOpenData();if(multiDayBeforeOpenData&&this.ChartBorder.MultiDayMinute.Count>1&&this.ChartBorder.MultiDayMinute.Left>0){for(var i=0;i<multiDayBeforeOpenData.length;++i){var dayItem=multiDayBeforeOpenData[i];this.GetCallAuctionMaxMin(dayItem,range);}}var multiDayAfterCloseData=this.GetMultiDayAfterCloseData();if(multiDayAfterCloseData&&this.ChartBorder.MultiDayMinute.Count>1&&this.ChartBorder.MultiDayMinute.Right>0){for(var i=0;i<multiDayAfterCloseData.length;++i){var dayItem=multiDayAfterCloseData[i];this.GetCallAuctionMaxMin(dayItem,range);}}if(IFrameSplitOperator.IsNumber(range.Max)&&max<range.Max)max=range.Max;if(IFrameSplitOperator.IsNumber(range.Min)&&min>range.Min)min=range.Min;//叠加指标
5045
5046
  var overlayRange=this.GetOverlayMaxMin();if(overlayRange){if(IFrameSplitOperator.IsNumber(overlayRange.Max)&&overlayRange.Max>max)max=overlayRange.Max;if(IFrameSplitOperator.IsNumber(overlayRange.Min)&&overlayRange.Min<min)min=overlayRange.Min;}return{Max:max,Min:min};};//获取共享Y轴叠加指标最大,最小值
5046
5047
  this.GetOverlayMaxMin=function(){if(!this.HQChart)return null;if(!this.HQChart.Frame||!this.HQChart.Frame.SubFrame)return null;var subFrame=this.HQChart.Frame.SubFrame[0];if(!subFrame)return null;if(!IFrameSplitOperator.IsNonEmptyArray(subFrame.OverlayIndex))return null;var range={Max:null,Min:null};for(var i=0;i<subFrame.OverlayIndex.length;++i){var item=subFrame.OverlayIndex[i];if(!item||!item.Frame)continue;var overlayFrame=item.Frame;if(overlayFrame.IsShareY!=true)continue;if(overlayFrame.IsCalculateYMaxMin===false)continue;//叠加坐标Y轴不调整
5047
- for(var j=0;j<item.ChartPaint.length;++j){var paint=item.ChartPaint[j];var value=paint.GetMaxMin();if(value==null||value.Max==null||value.Min==null)continue;if(range.Max==null||range.Max<value.Max)range.Max=value.Max;if(range.Min==null||range.Min>value.Min)range.Min=value.Min;}}return range;};this.USASplit=function(range){var max=range.Max;var min=range.Min;if(max==min){max=max+max*0.1;min=min-min*0.1;}else{var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
5048
+ for(var j=0;j<item.ChartPaint.length;++j){var paint=item.ChartPaint[j];if(paint.IsShow==false)continue;var value=paint.GetMaxMin();if(value==null||value.Max==null||value.Min==null)continue;if(range.Max==null||range.Max<value.Max)range.Max=value.Max;if(range.Min==null||range.Min>value.Min)range.Min=value.Min;}}return range;};this.USASplit=function(range){var max=range.Max;var min=range.Min;if(max==min){max=max+max*0.1;min=min-min*0.1;}else{var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
5048
5049
  var height=this.Frame.ChartBorder.GetHeight();//画布的高度
5049
5050
  var spacePrice=5*pixelTatio*(max-min)/height;max+=spacePrice;min-=spacePrice;if(min<0)min=range.Min;}var showCount=this.SplitCount;var distance=(max-min)/(showCount-1);var minDistance=[1,0.1,0.01,0.001,0.0001];var defaultfloatPrecision=GetfloatPrecision(this.Symbol);if(distance<minDistance[defaultfloatPrecision]){distance=minDistance[defaultfloatPrecision];max=min+distance*showCount;//min=this.YClose-(distance*(showCount-1)/2);
5050
5051
  }for(var i=0;i<showCount;++i){var price=min+distance*i;if(this.YClose&&price==this.YClose)continue;var coordinate=new CoordinateInfo();coordinate.Value=price;var strPrice=price.toFixed(defaultfloatPrecision);//价格刻度字符串
@@ -9431,8 +9432,9 @@ var result=[];for(var _i80 in data){if(data[_i80]){if(isNumber2)result[_i80]=tru
9431
9432
  //用法: REF(X,A),引用A周期前的X值.A可以是变量.
9432
9433
  //平滑处理:当引用不到数据时进行的操作.此函数中,平滑时使用上一个周期的引用值.
9433
9434
  //例如: REF(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
9434
- this.REF=function(data,n){var result=[];if(typeof n=='number'){if(data.length<=0)return result;if(n>=data.length)return result;result=data.slice(0,data.length-n);//平滑处理
9435
- var firstData=data[0];for(var _i81=0;_i81<n;++_i81){result.unshift(firstData);}}else//n 为数组的情况
9435
+ this.REF=function(data,n){var result=[];if(typeof n=='number'){if(IFrameSplitOperator.IsNumber(data))//单数值
9436
+ {if(n<0)return result;var kData=this.SymbolData.Data.Data;if(!kData||kData.length<=0)return result;var count=kData.length;for(var i=n;i<count;++i){result[i]=data;}}else{if(data.length<=0)return result;if(n>=data.length)return result;result=data.slice(0,data.length-n);//平滑处理
9437
+ var firstData=data[0];for(var _i81=0;_i81<n;++_i81){result.unshift(firstData);}}}else//n 为数组的情况
9436
9438
  {for(var _i82=0;_i82<data.length;++_i82){result[_i82]=null;if(_i82>=n.length)continue;var value=n[_i82];if(value>=0&&value<=_i82)result[_i82]=data[_i82-value];else if(_i82)result[_i82]=result[_i82-1];else result[_i82]=data[_i82];}}return result;};//引用若干周期前的数据(未作平滑处理).
9437
9439
  //用法: REFV(X,A),引用A周期前的X值.A可以是变量.
9438
9440
  //平滑处理:当引用不到数据时进行的操作.
@@ -9574,7 +9576,8 @@ this.CROSS=function(data,data2){var result=[];if(Array.isArray(data)&&Array.isAr
9574
9576
  CROSSUP(MA5,MA10),ICON(1,'ICO4');//MA5上穿MA10,标注红箭头。
9575
9577
  //CROSSUP(MA5,MA10),ICON(1,'ICO4'); 与 CROSSUP(MA5,MA10)=1,ICON(1,'ICO4');表达同等意义
9576
9578
  */this.CROSSUP=function(data,data2){return this.CROSS(data,data2);};//累乘
9577
- this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n)return result;if(n==0){var index=n;for(;index<data.length;++index){if(this.IsNumber(data[index])){result[index]=data[index];break;}}for(++index;index<data.length;++index){result[index]=result[index-1]*data[index];}}else{for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]*=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!this.IsNumber(totalCount))continue;totalCount=parseInt(totalCount);if(totalCount<0)continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]*=data[j];}}}return result;};this.SUM=function(data,n){var result=[];if(!Array.isArray(n)){if(n==0){result[0]=data[0];for(var i=1;i<data.length;++i){result[i]=result[i-1]+data[i];}}else{for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]+=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!(totalCount>0))continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]+=data[j];}}}return result;};/*
9579
+ this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n)return result;if(n==0){var index=n;for(;index<data.length;++index){if(this.IsNumber(data[index])){result[index]=data[index];break;}}for(++index;index<data.length;++index){result[index]=result[index-1]*data[index];}}else{for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]*=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!this.IsNumber(totalCount))continue;totalCount=parseInt(totalCount);if(totalCount<0)continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]*=data[j];}}}return result;};this.SUM=function(data,n){var result=[];if(!Array.isArray(n)){if(n==0){var start=-1;for(var i=0;i<data.length;++i)//取第1个有效数
9580
+ {if(IFrameSplitOperator.IsNumber(data[i])){start=i;break;}}if(start<0)return result;result[start]=data[start];for(var i=start+1;i<data.length;++i){result[i]=result[i-1]+data[i];}}else{for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]+=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!(totalCount>0))continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]+=data[j];}}}return result;};/*
9578
9581
  BARSCOUNT 有效数据周期数
9579
9582
  求总的周期数。
9580
9583
  用法: BARSCOUNT(X) 第一个有效数据到当前的天数。
@@ -12466,7 +12469,7 @@ this.AreaColor=g_JSChartResource.ScrollBar.BGChart.AreaColor;//面积图颜色
12466
12469
  };this.Draw=function(){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;this.Canvas.save();if(this.LineWidth>0)this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();var bottom=this.ChartBorder.GetBottom();this.Canvas.strokeStyle=this.Color;var bFirstPoint=true;var drawCount=0,x,y;var firstPoint={};for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];var value=item.Close;if(!IFrameSplitOperator.IsNumber(value))continue;x=this.ChartFrame.GetXFromIndex(i);y=this.ChartFrame.GetYFromData(value);if(bFirstPoint){this.Canvas.beginPath();this.Canvas.moveTo(x,y);bFirstPoint=false;firstPoint={X:x,Y:y};}else{this.Canvas.lineTo(x,y);}++drawCount;}if(drawCount>0){this.Canvas.stroke();this.Canvas.lineTo(x,bottom);this.Canvas.lineTo(firstPoint.X,bottom);this.Canvas.closePath();this.Canvas.fillStyle=this.AreaColor;this.Canvas.fill();}this.Canvas.restore();};this.GetMaxMin=function(){var range={Max:null,Min:null};if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return range;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];var value=item.Close;if(!IFrameSplitOperator.IsNumber(value))continue;if(range.Max==null||range.Max<value)range.Max=value;if(range.Min==null||range.Min>value)range.Min=value;}return range;};}/********************************************************************************
12467
12470
  * 版本信息输出
12468
12471
  *
12469
- */var HQCHART_VERSION="1.1.12430";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();//把给外界调用的方法暴露出来
12472
+ */var HQCHART_VERSION="1.1.12436";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();//把给外界调用的方法暴露出来
12470
12473
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12471
12474
  // BaseIndex:BaseIndex,
12472
12475
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "hqchart",
3
3
  "description": "stock chart",
4
4
  "author": "jones2000",
5
- "version": "1.1.12431",
5
+ "version": "1.1.12437",
6
6
  "main": "lib/main.js",
7
7
  "private": false,
8
8
  "license": "Apache License 2.0",
@@ -2844,15 +2844,29 @@ function JSAlgorithm(errorHandler,symbolData)
2844
2844
  let result=[];
2845
2845
  if (typeof(n)=='number')
2846
2846
  {
2847
- if (data.length<=0) return result;
2848
- if (n>=data.length) return result;
2849
-
2850
- result=data.slice(0,data.length-n);
2851
-
2852
- //平滑处理
2853
- var firstData=data[0];
2854
- for(let i=0;i<n;++i)
2855
- result.unshift(firstData);
2847
+ if (IFrameSplitOperator.IsNumber(data)) //单数值
2848
+ {
2849
+ if (n<0) return result;
2850
+ var kData=this.SymbolData.Data.Data;
2851
+ if (!kData || kData.length<=0) return result;
2852
+ var count=kData.length;
2853
+ for(var i=n;i<count;++i)
2854
+ {
2855
+ result[i]=data;
2856
+ }
2857
+ }
2858
+ else
2859
+ {
2860
+ if (data.length<=0) return result;
2861
+ if (n>=data.length) return result;
2862
+
2863
+ result=data.slice(0,data.length-n);
2864
+
2865
+ //平滑处理
2866
+ var firstData=data[0];
2867
+ for(let i=0;i<n;++i)
2868
+ result.unshift(firstData);
2869
+ }
2856
2870
  }
2857
2871
  else //n 为数组的情况
2858
2872
  {
@@ -4130,9 +4144,21 @@ function JSAlgorithm(errorHandler,symbolData)
4130
4144
  {
4131
4145
  if (n==0)
4132
4146
  {
4133
- result[0]=data[0];
4147
+ var start=-1;
4148
+ for(var i=0; i<data.length; ++i) //取第1个有效数
4149
+ {
4150
+ if (IFrameSplitOperator.IsNumber(data[i]))
4151
+ {
4152
+ start=i;
4153
+ break;
4154
+ }
4155
+ }
4156
+
4157
+ if (start<0) return result;
4158
+
4159
+ result[start]=data[start];
4134
4160
 
4135
- for (var i=1; i<data.length; ++i)
4161
+ for (var i=start+1; i<data.length; ++i)
4136
4162
  {
4137
4163
  result[i] = result[i-1]+data[i];
4138
4164
  }
@@ -6692,6 +6692,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6692
6692
  for(var k=0; k<overlayItem.ChartPaint.length; ++k)
6693
6693
  {
6694
6694
  var paint=overlayItem.ChartPaint[k];
6695
+ if (paint.IsShow==false)
6696
+ continue; //隐藏的图形不计算
6695
6697
  var range=paint.GetMaxMin();
6696
6698
  if (range==null || range.Max==null || range.Min==null) continue;
6697
6699
 
@@ -8571,6 +8573,10 @@ function CloneData(data)
8571
8573
  return item;
8572
8574
  }
8573
8575
 
8576
+ function IsRecvOverlap(rect1, rect2)
8577
+ {
8578
+ return Math.max(rect1.Left,rect2.Left) < Math.min(rect1.Right,rect2.Right) && Math.max(rect1.Top,rect2.Top) < Math.min(rect1.Bottom,rect2.Bottom);
8579
+ }
8574
8580
 
8575
8581
 
8576
8582
  function Point()
@@ -44318,6 +44324,8 @@ function FrameSplitMinutePriceY()
44318
44324
  for(var j=0;j<item.ChartPaint.length; ++j)
44319
44325
  {
44320
44326
  var paint=item.ChartPaint[j];
44327
+ if (paint.IsShow==false) continue;
44328
+
44321
44329
  var value=paint.GetMaxMin();
44322
44330
  if (value==null || value.Max==null || value.Min==null) continue;
44323
44331
 
@@ -10772,6 +10772,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10772
10772
  for(var k=0; k<overlayItem.ChartPaint.length; ++k)
10773
10773
  {
10774
10774
  var paint=overlayItem.ChartPaint[k];
10775
+ if (paint.IsShow==false)
10776
+ continue; //隐藏的图形不计算
10775
10777
  var range=paint.GetMaxMin();
10776
10778
  if (range==null || range.Max==null || range.Min==null) continue;
10777
10779
 
@@ -12651,6 +12653,10 @@ function CloneData(data)
12651
12653
  return item;
12652
12654
  }
12653
12655
 
12656
+ function IsRecvOverlap(rect1, rect2)
12657
+ {
12658
+ return Math.max(rect1.Left,rect2.Left) < Math.min(rect1.Right,rect2.Right) && Math.max(rect1.Top,rect2.Top) < Math.min(rect1.Bottom,rect2.Bottom);
12659
+ }
12654
12660
 
12655
12661
 
12656
12662
  function Point()
@@ -48398,6 +48404,8 @@ function FrameSplitMinutePriceY()
48398
48404
  for(var j=0;j<item.ChartPaint.length; ++j)
48399
48405
  {
48400
48406
  var paint=item.ChartPaint[j];
48407
+ if (paint.IsShow==false) continue;
48408
+
48401
48409
  var value=paint.GetMaxMin();
48402
48410
  if (value==null || value.Max==null || value.Min==null) continue;
48403
48411
 
@@ -94929,15 +94937,29 @@ function JSAlgorithm(errorHandler,symbolData)
94929
94937
  let result=[];
94930
94938
  if (typeof(n)=='number')
94931
94939
  {
94932
- if (data.length<=0) return result;
94933
- if (n>=data.length) return result;
94934
-
94935
- result=data.slice(0,data.length-n);
94936
-
94937
- //平滑处理
94938
- var firstData=data[0];
94939
- for(let i=0;i<n;++i)
94940
- result.unshift(firstData);
94940
+ if (IFrameSplitOperator.IsNumber(data)) //单数值
94941
+ {
94942
+ if (n<0) return result;
94943
+ var kData=this.SymbolData.Data.Data;
94944
+ if (!kData || kData.length<=0) return result;
94945
+ var count=kData.length;
94946
+ for(var i=n;i<count;++i)
94947
+ {
94948
+ result[i]=data;
94949
+ }
94950
+ }
94951
+ else
94952
+ {
94953
+ if (data.length<=0) return result;
94954
+ if (n>=data.length) return result;
94955
+
94956
+ result=data.slice(0,data.length-n);
94957
+
94958
+ //平滑处理
94959
+ var firstData=data[0];
94960
+ for(let i=0;i<n;++i)
94961
+ result.unshift(firstData);
94962
+ }
94941
94963
  }
94942
94964
  else //n 为数组的情况
94943
94965
  {
@@ -96215,9 +96237,21 @@ function JSAlgorithm(errorHandler,symbolData)
96215
96237
  {
96216
96238
  if (n==0)
96217
96239
  {
96218
- result[0]=data[0];
96240
+ var start=-1;
96241
+ for(var i=0; i<data.length; ++i) //取第1个有效数
96242
+ {
96243
+ if (IFrameSplitOperator.IsNumber(data[i]))
96244
+ {
96245
+ start=i;
96246
+ break;
96247
+ }
96248
+ }
96249
+
96250
+ if (start<0) return result;
96251
+
96252
+ result[start]=data[start];
96219
96253
 
96220
- for (var i=1; i<data.length; ++i)
96254
+ for (var i=start+1; i<data.length; ++i)
96221
96255
  {
96222
96256
  result[i] = result[i-1]+data[i];
96223
96257
  }
@@ -127607,7 +127641,7 @@ function ScrollBarBGChart()
127607
127641
 
127608
127642
 
127609
127643
 
127610
- var HQCHART_VERSION="1.1.12430";
127644
+ var HQCHART_VERSION="1.1.12436";
127611
127645
 
127612
127646
  function PrintHQChartVersion()
127613
127647
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.12430";
8
+ var HQCHART_VERSION="1.1.12436";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -10816,6 +10816,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10816
10816
  for(var k=0; k<overlayItem.ChartPaint.length; ++k)
10817
10817
  {
10818
10818
  var paint=overlayItem.ChartPaint[k];
10819
+ if (paint.IsShow==false)
10820
+ continue; //隐藏的图形不计算
10819
10821
  var range=paint.GetMaxMin();
10820
10822
  if (range==null || range.Max==null || range.Min==null) continue;
10821
10823
 
@@ -12695,6 +12697,10 @@ function CloneData(data)
12695
12697
  return item;
12696
12698
  }
12697
12699
 
12700
+ function IsRecvOverlap(rect1, rect2)
12701
+ {
12702
+ return Math.max(rect1.Left,rect2.Left) < Math.min(rect1.Right,rect2.Right) && Math.max(rect1.Top,rect2.Top) < Math.min(rect1.Bottom,rect2.Bottom);
12703
+ }
12698
12704
 
12699
12705
 
12700
12706
  function Point()
@@ -48442,6 +48448,8 @@ function FrameSplitMinutePriceY()
48442
48448
  for(var j=0;j<item.ChartPaint.length; ++j)
48443
48449
  {
48444
48450
  var paint=item.ChartPaint[j];
48451
+ if (paint.IsShow==false) continue;
48452
+
48445
48453
  var value=paint.GetMaxMin();
48446
48454
  if (value==null || value.Max==null || value.Min==null) continue;
48447
48455
 
@@ -94973,15 +94981,29 @@ function JSAlgorithm(errorHandler,symbolData)
94973
94981
  let result=[];
94974
94982
  if (typeof(n)=='number')
94975
94983
  {
94976
- if (data.length<=0) return result;
94977
- if (n>=data.length) return result;
94978
-
94979
- result=data.slice(0,data.length-n);
94980
-
94981
- //平滑处理
94982
- var firstData=data[0];
94983
- for(let i=0;i<n;++i)
94984
- result.unshift(firstData);
94984
+ if (IFrameSplitOperator.IsNumber(data)) //单数值
94985
+ {
94986
+ if (n<0) return result;
94987
+ var kData=this.SymbolData.Data.Data;
94988
+ if (!kData || kData.length<=0) return result;
94989
+ var count=kData.length;
94990
+ for(var i=n;i<count;++i)
94991
+ {
94992
+ result[i]=data;
94993
+ }
94994
+ }
94995
+ else
94996
+ {
94997
+ if (data.length<=0) return result;
94998
+ if (n>=data.length) return result;
94999
+
95000
+ result=data.slice(0,data.length-n);
95001
+
95002
+ //平滑处理
95003
+ var firstData=data[0];
95004
+ for(let i=0;i<n;++i)
95005
+ result.unshift(firstData);
95006
+ }
94985
95007
  }
94986
95008
  else //n 为数组的情况
94987
95009
  {
@@ -96259,9 +96281,21 @@ function JSAlgorithm(errorHandler,symbolData)
96259
96281
  {
96260
96282
  if (n==0)
96261
96283
  {
96262
- result[0]=data[0];
96284
+ var start=-1;
96285
+ for(var i=0; i<data.length; ++i) //取第1个有效数
96286
+ {
96287
+ if (IFrameSplitOperator.IsNumber(data[i]))
96288
+ {
96289
+ start=i;
96290
+ break;
96291
+ }
96292
+ }
96293
+
96294
+ if (start<0) return result;
96295
+
96296
+ result[start]=data[start];
96263
96297
 
96264
- for (var i=1; i<data.length; ++i)
96298
+ for (var i=start+1; i<data.length; ++i)
96265
96299
  {
96266
96300
  result[i] = result[i-1]+data[i];
96267
96301
  }
@@ -127651,7 +127685,7 @@ function ScrollBarBGChart()
127651
127685
 
127652
127686
 
127653
127687
 
127654
- var HQCHART_VERSION="1.1.12430";
127688
+ var HQCHART_VERSION="1.1.12436";
127655
127689
 
127656
127690
  function PrintHQChartVersion()
127657
127691
  {
@@ -2499,13 +2499,27 @@ function JSAlgorithm(errorHandler, symbolData)
2499
2499
  let result=[];
2500
2500
  if (typeof(n)=='number')
2501
2501
  {
2502
- if (data.length<=0) return result;
2503
- if (n>=data.length) return result;
2504
-
2505
- result=data.slice(0,data.length-n);
2506
-
2507
- for(let i=0;i<n;++i)
2508
- result.unshift(null);
2502
+ if (IFrameSplitOperator.IsNumber(data)) //单数值
2503
+ {
2504
+ if (n<0) return result;
2505
+ var kData=this.SymbolData.Data.Data;
2506
+ if (!kData || kData.length<=0) return result;
2507
+ var count=kData.length;
2508
+ for(var i=n;i<count;++i)
2509
+ {
2510
+ result[i]=data;
2511
+ }
2512
+ }
2513
+ else
2514
+ {
2515
+ if (data.length<=0) return result;
2516
+ if (n>=data.length) return result;
2517
+
2518
+ result=data.slice(0,data.length-n);
2519
+
2520
+ for(let i=0;i<n;++i)
2521
+ result.unshift(null);
2522
+ }
2509
2523
  }
2510
2524
  else //n 为数组的情况
2511
2525
  {
@@ -3674,9 +3688,21 @@ function JSAlgorithm(errorHandler, symbolData)
3674
3688
  {
3675
3689
  if (n==0)
3676
3690
  {
3677
- result[0]=data[0];
3691
+ var start=-1;
3692
+ for(var i=0; i<data.length; ++i) //取第1个有效数
3693
+ {
3694
+ if (IFrameSplitOperator.IsNumber(data[i]))
3695
+ {
3696
+ start=i;
3697
+ break;
3698
+ }
3699
+ }
3700
+
3701
+ if (start<0) return result;
3702
+
3703
+ result[start]=data[start];
3678
3704
 
3679
- for (var i=1; i<data.length; ++i)
3705
+ for (var i=start+1; i<data.length; ++i)
3680
3706
  {
3681
3707
  result[i] = result[i-1]+data[i];
3682
3708
  }
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.12411";
8
+ var HQCHART_VERSION="1.1.12434";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {