hqchart 1.1.12480 → 1.1.12484

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.
@@ -1353,7 +1353,7 @@ var scriptData=new JSIndexScript();if(option.ColorIndex)//五彩K线
1353
1353
  }else if(item.JsonData){chart.WindowIndex[i]=new JsonDataIndex(item.Name,item.Script,item.Args,item);//脚本执行
1354
1354
  }else if(item.Local&&item.Local.Data){chart.WindowIndex[i]=new LocalJsonDataIndex(item.Local.Name,item.Local.Args,{JsonData:item.Local.Data});}else if(item.API)//使用API挂接指标数据 API:{ Name:指标名字, Script:指标脚本可以为空, Args:参数可以为空, Url:指标执行地址 }
1355
1355
  {var apiItem=item.API;chart.WindowIndex[i]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[i]=indexItem.Create(item.Option);if(chart.WindowIndex[i].SetArgs)chart.WindowIndex[i].SetArgs(item.Args);chart.CreateWindowIndex(i);}else{var _indexInfo2=scriptData.Get(item.Index);if(!_indexInfo2)continue;if(item.Lock)_indexInfo2.Lock=item.Lock;_indexInfo2.ID=item.Index;var args=_indexInfo2.Args;if(item.Args)args=item.Args;if(item.IsShortTitle)_indexInfo2.IsShortTitle=item.IsShortTitle;if(item.TitleFont)_indexInfo2.TitleFont=item.TitleFont;if(IFrameSplitOperator.IsBool(item.IsSync))_indexInfo2.IsSync=item.IsSync;chart.WindowIndex[i]=new ScriptIndex(_indexInfo2.Name,_indexInfo2.Script,args,_indexInfo2);//脚本执行
1356
- if(item.StringFormat>0)chart.WindowIndex[i].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(item.IsDrawTitleBG==true)chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsNumber(item.IsShowTitleArrow))chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))chart.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))chart.Frame.SubFrame[i].Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))chart.Frame.SubFrame[i].Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}}//叠加指标宽度
1356
+ if(item.StringFormat>0)chart.WindowIndex[i].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(item.IsDrawTitleBG==true)chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsShowTitleArrow))chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))chart.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))chart.Frame.SubFrame[i].Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))chart.Frame.SubFrame[i].Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}}//叠加指标宽度
1357
1357
  if(option.OverlayIndexFrameWidth>40)chart.OverlayIndexFrameWidth=option.OverlayIndexFrameWidth;//叠加指标
1358
1358
  if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<option.OverlayIndex.length;++i){var item=option.OverlayIndex[i];if(item.Windows>=chart.Frame.SubFrame.length)continue;var itemString=(0,_stringify2.default)(item);var obj=JSON.parse(itemString);if(item.Index)obj.IndexName=item.Index;if(item.Windows>=0)obj.WindowIndex=item.Windows;chart.CreateOverlayWindowsIndex(obj);}}this.AdjustTitleHeight(chart);return chart;};//自定义指数历史K线图
1359
1359
  this.CreateCustomKLineChartContainer=function(option){var chart=new CustomKLineChartContainer(this.CanvasElement);//创建改参数div
@@ -7006,7 +7006,7 @@ var indexName=[{Index:"RSI"},{Index:"MACD"},{Index:"VOL"},{Index:"UOS"},{Index:"
7006
7006
  if(option&&option.Windows.length>0)indexName=option.Windows;//外部设置增加窗口的默认指标
7007
7007
  var scriptData=new JSIndexScript();for(var i=currentLength;i<count;++i){var item=indexName[i%indexName.length];var name=item.Index;var indexInfo=scriptData.Get(name);var args=indexInfo.Args;if(item.Args)args=item.Args;var indexData={Name:indexInfo.Name,Script:indexInfo.Script,Args:args,ID:item.Index,//扩展属性 可以是空
7008
7008
  KLineType:indexInfo.KLineType,YSpecificMaxMin:indexInfo.YSpecificMaxMin,YSplitScale:indexInfo.YSplitScale,FloatPrecision:indexInfo.FloatPrecision,Condition:indexInfo.Condition,OutName:indexInfo.OutName};this.WindowIndex[i]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
7009
- var subFrame=this.Frame.SubFrame[i];if(item.Modify!=null)this.Frame.SubFrame[i].Frame.ModifyIndex=item.Modify;if(item.Change!=null)this.Frame.SubFrame[i].Frame.ChangeIndex=item.Change;if(item.Close!=null)this.Frame.SubFrame[i].Frame.CloseIndex=item.Close;if(item.Overlay!=null)chart.Frame.SubFrame[i].Frame.OverlayIndex=item.Overlay;if(item.IsDrawTitleBG==true)this.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))this.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsNumber(item.IsShowTitleArrow))this.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)this.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)this.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))this.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))this.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;if(item.IsShowXLine==false)this.Frame.SubFrame[i].Frame.IsShowXLine=false;if(item.IsShowYLine==false)this.Frame.SubFrame[i].Frame.IsShowYLine=false;if(IFrameSplitOperator.IsBool(item.IsShowIndexTitle))this.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;if(IFrameSplitOperator.IsBool(item.IsShowLeftText)){subFrame.Frame.IsShowYText[0]=item.IsShowLeftText;subFrame.Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
7009
+ var subFrame=this.Frame.SubFrame[i];if(item.Modify!=null)this.Frame.SubFrame[i].Frame.ModifyIndex=item.Modify;if(item.Change!=null)this.Frame.SubFrame[i].Frame.ChangeIndex=item.Change;if(item.Close!=null)this.Frame.SubFrame[i].Frame.CloseIndex=item.Close;if(item.Overlay!=null)chart.Frame.SubFrame[i].Frame.OverlayIndex=item.Overlay;if(item.IsDrawTitleBG==true)this.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))this.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsShowTitleArrow))this.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)this.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)this.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))this.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))this.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;if(item.IsShowXLine==false)this.Frame.SubFrame[i].Frame.IsShowXLine=false;if(item.IsShowYLine==false)this.Frame.SubFrame[i].Frame.IsShowYLine=false;if(IFrameSplitOperator.IsBool(item.IsShowIndexTitle))this.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;if(IFrameSplitOperator.IsBool(item.IsShowLeftText)){subFrame.Frame.IsShowYText[0]=item.IsShowLeftText;subFrame.Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
7010
7010
  }if(IFrameSplitOperator.IsBool(item.IsShowRightText)){subFrame.Frame.IsShowYText[1]=item.IsShowRightText;subFrame.Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
7011
7011
  }if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))subFrame.Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))subFrame.Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}var bindData=this.ChartPaint[0].Data;this.BindIndexData(i,bindData);//执行脚本
7012
7012
  }//this.UpdataDataoffset(); //更新数据偏移
@@ -12490,7 +12490,7 @@ function HQChartScriptWorker(){this.Create=function(){var _this60=this;addEventL
12490
12490
  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);};}/********************************************************************************
12491
12491
  * 版本信息输出
12492
12492
  *
12493
- */var HQCHART_VERSION="1.1.12479";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();//把给外界调用的方法暴露出来
12493
+ */var HQCHART_VERSION="1.1.12483";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();//把给外界调用的方法暴露出来
12494
12494
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12495
12495
  // BaseIndex:BaseIndex,
12496
12496
  // 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.12480",
5
+ "version": "1.1.12484",
6
6
  "main": "lib/main.js",
7
7
  "private": false,
8
8
  "license": "Apache License 2.0",
@@ -613,7 +613,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
613
613
 
614
614
  if (IFrameSplitOperator.IsNumber(item.TitleHeight)) chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;
615
615
  else item.TitleHeight=chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;
616
- if (IFrameSplitOperator.IsNumber(item.IsShowTitleArrow)) chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
616
+ if (IFrameSplitOperator.IsBool(item.IsShowTitleArrow)) chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
617
617
  if (item.IsShowIndexName==false) chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;
618
618
  if (item.IsShowOverlayIndexName==false) chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;
619
619
  if (IFrameSplitOperator.IsNumber(item.IndexParamSpace)) chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;
@@ -66862,7 +66862,7 @@ function KLineChartContainer(uielement,OffscreenElement)
66862
66862
 
66863
66863
  if (IFrameSplitOperator.IsNumber(item.TitleHeight)) this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;
66864
66864
  else item.TitleHeight=this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;
66865
- if (IFrameSplitOperator.IsNumber(item.IsShowTitleArrow)) this.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
66865
+ if (IFrameSplitOperator.IsBool(item.IsShowTitleArrow)) this.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
66866
66866
  if (item.IsShowIndexName==false) this.Frame.SubFrame[i].Frame.IsShowIndexName=false;
66867
66867
  if (item.IsShowOverlayIndexName==false) this.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;
66868
66868
  if (IFrameSplitOperator.IsNumber(item.IndexParamSpace)) this.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;
@@ -4693,7 +4693,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4693
4693
 
4694
4694
  if (IFrameSplitOperator.IsNumber(item.TitleHeight)) chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;
4695
4695
  else item.TitleHeight=chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;
4696
- if (IFrameSplitOperator.IsNumber(item.IsShowTitleArrow)) chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
4696
+ if (IFrameSplitOperator.IsBool(item.IsShowTitleArrow)) chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
4697
4697
  if (item.IsShowIndexName==false) chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;
4698
4698
  if (item.IsShowOverlayIndexName==false) chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;
4699
4699
  if (IFrameSplitOperator.IsNumber(item.IndexParamSpace)) chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;
@@ -70942,7 +70942,7 @@ function KLineChartContainer(uielement,OffscreenElement)
70942
70942
 
70943
70943
  if (IFrameSplitOperator.IsNumber(item.TitleHeight)) this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;
70944
70944
  else item.TitleHeight=this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;
70945
- if (IFrameSplitOperator.IsNumber(item.IsShowTitleArrow)) this.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
70945
+ if (IFrameSplitOperator.IsBool(item.IsShowTitleArrow)) this.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
70946
70946
  if (item.IsShowIndexName==false) this.Frame.SubFrame[i].Frame.IsShowIndexName=false;
70947
70947
  if (item.IsShowOverlayIndexName==false) this.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;
70948
70948
  if (IFrameSplitOperator.IsNumber(item.IndexParamSpace)) this.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;
@@ -128045,7 +128045,7 @@ function ScrollBarBGChart()
128045
128045
 
128046
128046
 
128047
128047
 
128048
- var HQCHART_VERSION="1.1.12479";
128048
+ var HQCHART_VERSION="1.1.12483";
128049
128049
 
128050
128050
  function PrintHQChartVersion()
128051
128051
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.12479";
8
+ var HQCHART_VERSION="1.1.12483";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -4737,7 +4737,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4737
4737
 
4738
4738
  if (IFrameSplitOperator.IsNumber(item.TitleHeight)) chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;
4739
4739
  else item.TitleHeight=chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;
4740
- if (IFrameSplitOperator.IsNumber(item.IsShowTitleArrow)) chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
4740
+ if (IFrameSplitOperator.IsBool(item.IsShowTitleArrow)) chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
4741
4741
  if (item.IsShowIndexName==false) chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;
4742
4742
  if (item.IsShowOverlayIndexName==false) chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;
4743
4743
  if (IFrameSplitOperator.IsNumber(item.IndexParamSpace)) chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;
@@ -70986,7 +70986,7 @@ function KLineChartContainer(uielement,OffscreenElement)
70986
70986
 
70987
70987
  if (IFrameSplitOperator.IsNumber(item.TitleHeight)) this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;
70988
70988
  else item.TitleHeight=this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;
70989
- if (IFrameSplitOperator.IsNumber(item.IsShowTitleArrow)) this.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
70989
+ if (IFrameSplitOperator.IsBool(item.IsShowTitleArrow)) this.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
70990
70990
  if (item.IsShowIndexName==false) this.Frame.SubFrame[i].Frame.IsShowIndexName=false;
70991
70991
  if (item.IsShowOverlayIndexName==false) this.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;
70992
70992
  if (IFrameSplitOperator.IsNumber(item.IndexParamSpace)) this.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;
@@ -128198,7 +128198,7 @@ function HQChartScriptWorker()
128198
128198
 
128199
128199
 
128200
128200
 
128201
- var HQCHART_VERSION="1.1.12479";
128201
+ var HQCHART_VERSION="1.1.12483";
128202
128202
 
128203
128203
  function PrintHQChartVersion()
128204
128204
  {
@@ -2071,15 +2071,15 @@ function JSAlgorithm(errorHandler, symbolData)
2071
2071
  //大于
2072
2072
  this.GT=function(data,data2)
2073
2073
  {
2074
- let isNumber=typeof(data)=='number';
2075
- let isNumber2=typeof(data2)=='number';
2074
+ let isNumber=IFrameSplitOperator.IsNumber(data);
2075
+ let isNumber2=IFrameSplitOperator.IsNumber(data2);
2076
2076
 
2077
2077
  //单数值比较
2078
2078
  if (isNumber && isNumber2) return (data>data2 ? 1 : 0);
2079
2079
 
2080
2080
  //都是数组比较
2081
2081
  let result=[];
2082
- if (!isNumber && !isNumber2)
2082
+ if (Array.isArray(data) && Array.isArray(data2))
2083
2083
  {
2084
2084
  let count=Math.max(data.length, data2.length);
2085
2085
  for(let i=0;i<count;++i)
@@ -2088,7 +2088,10 @@ function JSAlgorithm(errorHandler, symbolData)
2088
2088
 
2089
2089
  if (i<data.length && i<data2.length)
2090
2090
  {
2091
- if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]>data2[i] ? 1:0);
2091
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2092
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2093
+
2094
+ result[i]=(data[i]>data2[i] ? 1:0);
2092
2095
  }
2093
2096
  }
2094
2097
 
@@ -2100,7 +2103,9 @@ function JSAlgorithm(errorHandler, symbolData)
2100
2103
  for(let i in data2)
2101
2104
  {
2102
2105
  result[i]=null;
2103
- if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>data2[i] ? 1 : 0);
2106
+ if (!IFrameSplitOperator.IsVaild(data)) continue;
2107
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2108
+ result[i]=(data>data2[i] ? 1 : 0);
2104
2109
  }
2105
2110
  }
2106
2111
  else //数组-单数据
@@ -2108,7 +2113,9 @@ function JSAlgorithm(errorHandler, symbolData)
2108
2113
  for(let i in data)
2109
2114
  {
2110
2115
  result[i]=null;
2111
- if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]>data2 ? 1 : 0);
2116
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2117
+ if (!IFrameSplitOperator.IsVaild(data2)) continue;
2118
+ result[i]=(data[i]>data2 ? 1 : 0);
2112
2119
  }
2113
2120
  }
2114
2121
 
@@ -2118,15 +2125,15 @@ function JSAlgorithm(errorHandler, symbolData)
2118
2125
  //大于等于
2119
2126
  this.GTE=function(data,data2)
2120
2127
  {
2121
- let isNumber=typeof(data)=='number';
2122
- let isNumber2=typeof(data2)=='number';
2128
+ let isNumber=IFrameSplitOperator.IsNumber(data);
2129
+ let isNumber2=IFrameSplitOperator.IsNumber(data2);
2123
2130
 
2124
2131
  //单数值比较
2125
2132
  if (isNumber && isNumber2) return (data>=data2 ? 1 : 0);
2126
2133
 
2127
2134
  //都是数组比较
2128
2135
  let result=[];
2129
- if (!isNumber && !isNumber2)
2136
+ if (Array.isArray(data) && Array.isArray(data2))
2130
2137
  {
2131
2138
  let count=Math.max(data.length, data2.length);
2132
2139
  for(let i=0;i<count;++i)
@@ -2135,7 +2142,9 @@ function JSAlgorithm(errorHandler, symbolData)
2135
2142
 
2136
2143
  if (i<data.length && i<data2.length)
2137
2144
  {
2138
- if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]>=data2[i] ? 1:0);
2145
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2146
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2147
+ result[i]=(data[i]>=data2[i] ? 1:0);
2139
2148
  }
2140
2149
  }
2141
2150
 
@@ -2147,7 +2156,9 @@ function JSAlgorithm(errorHandler, symbolData)
2147
2156
  for(let i in data2)
2148
2157
  {
2149
2158
  result[i]=null;
2150
- if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>=data2[i] ? 1 : 0);
2159
+ if (!IFrameSplitOperator.IsVaild(data)) continue;
2160
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2161
+ result[i]=(data>=data2[i] ? 1 : 0);
2151
2162
  }
2152
2163
  }
2153
2164
  else //数组-单数据
@@ -2155,7 +2166,9 @@ function JSAlgorithm(errorHandler, symbolData)
2155
2166
  for(let i in data)
2156
2167
  {
2157
2168
  result[i]=null;
2158
- if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]>=data2 ? 1 : 0);
2169
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2170
+ if (!IFrameSplitOperator.IsVaild(data2)) continue;
2171
+ result[i]=(data[i]>=data2 ? 1 : 0);
2159
2172
  }
2160
2173
  }
2161
2174
 
@@ -2165,15 +2178,15 @@ function JSAlgorithm(errorHandler, symbolData)
2165
2178
  //小于
2166
2179
  this.LT=function(data,data2)
2167
2180
  {
2168
- let isNumber=typeof(data)=='number';
2169
- let isNumber2=typeof(data2)=='number';
2181
+ let isNumber=IFrameSplitOperator.IsNumber(data);
2182
+ let isNumber2=IFrameSplitOperator.IsNumber(data2);
2170
2183
 
2171
2184
  //单数值比较
2172
2185
  if (isNumber && isNumber2) return (data<data2 ? 1 : 0);
2173
2186
 
2174
2187
  //都是数组比较
2175
2188
  let result=[];
2176
- if (!isNumber && !isNumber2)
2189
+ if (Array.isArray(data) && Array.isArray(data2))
2177
2190
  {
2178
2191
  let count=Math.max(data.length, data2.length);
2179
2192
  for(let i=0;i<count;++i)
@@ -2182,7 +2195,10 @@ function JSAlgorithm(errorHandler, symbolData)
2182
2195
 
2183
2196
  if (i<data.length && i<data2.length)
2184
2197
  {
2185
- if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]<data2[i] ? 1:0);
2198
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2199
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2200
+
2201
+ result[i]=(data[i]<data2[i] ? 1:0);
2186
2202
  }
2187
2203
  }
2188
2204
 
@@ -2194,6 +2210,8 @@ function JSAlgorithm(errorHandler, symbolData)
2194
2210
  for(let i in data2)
2195
2211
  {
2196
2212
  result[i]=null;
2213
+ if (!IFrameSplitOperator.IsVaild(data)) continue;
2214
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2197
2215
  if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data<data2[i] ? 1 : 0);
2198
2216
  }
2199
2217
  }
@@ -2202,7 +2220,9 @@ function JSAlgorithm(errorHandler, symbolData)
2202
2220
  for(let i in data)
2203
2221
  {
2204
2222
  result[i]=null;
2205
- if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]<data2 ? 1 : 0);
2223
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2224
+ if (!IFrameSplitOperator.IsVaild(data2)) continue;
2225
+ result[i]=(data[i]<data2 ? 1 : 0);
2206
2226
  }
2207
2227
  }
2208
2228
 
@@ -2212,15 +2232,15 @@ function JSAlgorithm(errorHandler, symbolData)
2212
2232
  //小于等于
2213
2233
  this.LTE=function(data,data2)
2214
2234
  {
2215
- let isNumber=typeof(data)=='number';
2216
- let isNumber2=typeof(data2)=='number';
2235
+ let isNumber=IFrameSplitOperator.IsNumber(data);
2236
+ let isNumber2=IFrameSplitOperator.IsNumber(data2);
2217
2237
 
2218
2238
  //单数值比较
2219
2239
  if (isNumber && isNumber2) return (data>=data2 ? 1 : 0);
2220
2240
 
2221
2241
  //都是数组比较
2222
2242
  let result=[];
2223
- if (!isNumber && !isNumber2)
2243
+ if (Array.isArray(data) && Array.isArray(data2))
2224
2244
  {
2225
2245
  let count=Math.max(data.length, data2.length);
2226
2246
  for(let i=0;i<count;++i)
@@ -2229,7 +2249,10 @@ function JSAlgorithm(errorHandler, symbolData)
2229
2249
 
2230
2250
  if (i<data.length && i<data2.length)
2231
2251
  {
2232
- if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]<=data2[i] ? 1:0);
2252
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2253
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2254
+
2255
+ result[i]=(data[i]<=data2[i] ? 1:0);
2233
2256
  }
2234
2257
  }
2235
2258
 
@@ -2241,7 +2264,9 @@ function JSAlgorithm(errorHandler, symbolData)
2241
2264
  for(let i in data2)
2242
2265
  {
2243
2266
  result[i]=null;
2244
- if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data<=data2[i] ? 1 : 0);
2267
+ if (!IFrameSplitOperator.IsVaild(data)) continue;
2268
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2269
+ result[i]=(data<=data2[i] ? 1 : 0);
2245
2270
  }
2246
2271
  }
2247
2272
  else //数组-单数据
@@ -2249,7 +2274,9 @@ function JSAlgorithm(errorHandler, symbolData)
2249
2274
  for(let i in data)
2250
2275
  {
2251
2276
  result[i]=null;
2252
- if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]<=data2 ? 1 : 0);
2277
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2278
+ if (!IFrameSplitOperator.IsVaild(data2)) continue;
2279
+ result[i]=(data[i]<=data2 ? 1 : 0);
2253
2280
  }
2254
2281
  }
2255
2282
 
@@ -2259,15 +2286,15 @@ function JSAlgorithm(errorHandler, symbolData)
2259
2286
  //等于
2260
2287
  this.EQ=function(data,data2)
2261
2288
  {
2262
- let isNumber=typeof(data)=='number';
2263
- let isNumber2=typeof(data2)=='number';
2289
+ let isNumber=IFrameSplitOperator.IsNumber(data);
2290
+ let isNumber2=IFrameSplitOperator.IsNumber(data2);
2264
2291
 
2265
2292
  //单数值比较
2266
2293
  if (isNumber && isNumber2) return (data==data2 ? 1 : 0);
2267
2294
 
2268
2295
  //都是数组比较
2269
2296
  let result=[];
2270
- if (!isNumber && !isNumber2)
2297
+ if (Array.isArray(data) && Array.isArray(data2))
2271
2298
  {
2272
2299
  let count=Math.max(data.length, data2.length);
2273
2300
  for(let i=0;i<count;++i)
@@ -2306,15 +2333,15 @@ function JSAlgorithm(errorHandler, symbolData)
2306
2333
  //不等于
2307
2334
  this.NEQ = function (data, data2)
2308
2335
  {
2309
- let isNumber = typeof (data) == 'number';
2310
- let isNumber2 = typeof (data2) == 'number';
2336
+ let isNumber=IFrameSplitOperator.IsNumber(data);
2337
+ let isNumber2=IFrameSplitOperator.IsNumber(data2);
2311
2338
 
2312
2339
  //单数值比较
2313
2340
  if (isNumber && isNumber2) return (data != data2 ? 1 : 0);
2314
2341
 
2315
2342
  //都是数组比较
2316
2343
  let result = [];
2317
- if (!isNumber && !isNumber2)
2344
+ if (Array.isArray(data) && Array.isArray(data2))
2318
2345
  {
2319
2346
  let count = Math.max(data.length, data2.length);
2320
2347
  for (let i = 0; i < count; ++i)
@@ -3277,9 +3304,15 @@ function JSAlgorithm(errorHandler, symbolData)
3277
3304
  for(var i=0;i<n.length;++i)
3278
3305
  {
3279
3306
  var period=n[i];
3280
- if (!this.IsNumber(period)) continue;
3307
+ if (period==0)
3308
+ {
3309
+ result[i]=0;
3310
+ continue;
3311
+ }
3312
+
3313
+ if (!IFrameSplitOperator.IsNumber(period) ) period=i+1; //无效周期 第一个有效值开始.
3314
+ else if (period<0) period=i+1;
3281
3315
 
3282
- if (period<1) period=i+1;
3283
3316
  count=0;
3284
3317
  for(var j=i, k=0 ;j>=0 && k<period ;--j,++k) //当前往前period天 统计
3285
3318
  {
@@ -3709,6 +3742,12 @@ function JSAlgorithm(errorHandler, symbolData)
3709
3742
  }
3710
3743
  else
3711
3744
  {
3745
+ result[0]=data[0];
3746
+ for(var i=1;i<n && i<data.length;++i) //前面小于N周期的累加
3747
+ {
3748
+ result[i] = result[i-1]+data[i];
3749
+ }
3750
+
3712
3751
  for(var i=n-1,j=0;i<data.length;++i,++j)
3713
3752
  {
3714
3753
  for(var k=0;k<n;++k)
@@ -445,7 +445,7 @@ IFrameSplitOperator.IsNumber=function(value)
445
445
  if (value==null) return false;
446
446
  if (isNaN(value)) return false;
447
447
 
448
- return true;
448
+ return typeof(value)=='number';
449
449
  }
450
450
 
451
451
  //判断是否是正数
@@ -463,6 +463,16 @@ IFrameSplitOperator.IsInteger=function(x)
463
463
  return (typeof x === 'number') && (x % 1 === 0);
464
464
  }
465
465
 
466
+ //是否有效
467
+ IFrameSplitOperator.IsVaild=function(value)
468
+ {
469
+ if (isNaN(value)) return false;
470
+ if (value==null) return false;
471
+ if (value===undefined) return false;
472
+
473
+ return true;
474
+ }
475
+
466
476
  //判断字段是否存在
467
477
  IFrameSplitOperator.IsObjectExist=function(obj)
468
478
  {
@@ -2976,7 +2976,7 @@ function JSChartContainer(uielement)
2976
2976
 
2977
2977
  if (IFrameSplitOperator.IsNumber(option.SplitCount)) subFrame.Frame.YSplitOperator.SplitCount=option.SplitCount;
2978
2978
  if (IFrameSplitOperator.IsNumber(option.TitleHeight)) subFrame.Frame.ChartBorder.TitleHeight=option.TitleHeight;
2979
- if (IFrameSplitOperator.IsBool(option.IsShowTitleArraw)) subFrame.Frame.IsShowTitleArraw=option.IsShowTitleArraw;
2979
+ if (IFrameSplitOperator.IsBool(option.IsShowTitleArrow)) subFrame.Frame.IsShowTitleArrow=option.IsShowTitleArrow;
2980
2980
  if (IFrameSplitOperator.IsBool(option.IsShowIndexName)) subFrame.Frame.IsShowIndexName=option.IsShowIndexName;
2981
2981
  if (IFrameSplitOperator.IsBool(option.IsShowOverlayIndexName)) subFrame.Frame.IsShowOverlayIndexName=option.IsShowOverlayIndexName;
2982
2982
  if (IFrameSplitOperator.IsNumber(option.IndexParamSpace)) subFrame.Frame.IndexParamSpace=option.IndexParamSpace;