hqchart 1.1.15258 → 1.1.15292

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.15258",
3
+ "version": "1.1.15292",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -55636,6 +55636,7 @@ HQData.NetworkFilter=function(data, callback)
55636
55636
  break;
55637
55637
 
55638
55638
  case "JSSymbolData::GetFinance": //财务数据
55639
+ //HQChart使用教程30-K线图如何对接第3方数据23- FINANCE函数数据
55639
55640
  HQData.Finance_RequestData(data,callback);
55640
55641
  break;
55641
55642
 
@@ -55659,6 +55660,7 @@ HQData.NetworkFilter=function(data, callback)
55659
55660
  HQData.BKJYOne_RequestData(data,callback);
55660
55661
  break;
55661
55662
  case "JSSymbolData::GetFinValue":
55663
+ //HQChart使用教程30-K线图如何对接第3方数据22- FINVALUE函数数据
55662
55664
  HQData.FinValue_RequestData(data,callback);
55663
55665
  break;
55664
55666
  case "JSSymbolData::GetFinOne":
@@ -55666,9 +55668,15 @@ HQData.NetworkFilter=function(data, callback)
55666
55668
  break;
55667
55669
 
55668
55670
  case "JSSymbolData::GetIndexData":
55671
+ //HQChart使用教程30-K线图如何对接第3方数据28-大盘数据[INDEXA,INDEXC......]
55669
55672
  HQData.INDEX_RequestData(data,callback);
55670
55673
  break;
55671
55674
 
55675
+ case 'JSSymbolData::GetSymbolData':
55676
+ //HQChart使用教程30-K线图如何对接第3方数据38-通达信指标K线数据
55677
+ HQData.RequestSymbolData(data,callback); //计算指标需要的K线数据
55678
+ break;
55679
+
55672
55680
  //////////////////////////////////////////////////////
55673
55681
  //报价列表数据
55674
55682
  case "JSReportChartContainer::RequestStockListData":
@@ -57316,6 +57324,20 @@ HQData.INDEX_RequestData=function(data,callback)
57316
57324
  callback(hqchartData);
57317
57325
  }
57318
57326
 
57327
+ HQData.RequestSymbolData=function(data,callback)
57328
+ {
57329
+ data.PreventDefault=true;
57330
+ var symbol=data.Request.Data.symbol;
57331
+ var period=data.Request.Data.period;
57332
+ //if (this.Chart.JSChartContainer.Symbol==symbol)
57333
+ {
57334
+ if (ChartData.IsDayPeriod(period, true))
57335
+ HQData.RequestHistoryData(data, callback);
57336
+ else if (ChartData.IsMinutePeriod(peirod, true))
57337
+ HQData.RequestHistoryMinuteData(data, callback);
57338
+ }
57339
+ }
57340
+
57319
57341
  //////////////////////////////////////////////////////////////////////////////////////
57320
57342
  // 报价列表
57321
57343
  //
@@ -5137,22 +5137,50 @@ function JSAlgorithm(errorHandler,symbolData)
5137
5137
  this.FILTERX=function(data, n, node)
5138
5138
  {
5139
5139
  var result=[];
5140
- for(let i=0,j=0; i<data.length; ++i)
5140
+ if (IFrameSplitOperator.IsNumber(n))
5141
5141
  {
5142
- if (data[i])
5142
+ for(var i=data.length-1, j=0; i>=0; --i)
5143
5143
  {
5144
- result[i]=1;
5145
- for(j=0;j<n && i-j-1>=0;++j)
5144
+ if (data[i])
5146
5145
  {
5147
- result[i-j-1]=0;
5146
+ result[i]=1;
5147
+ for(j=0;j<n && i-j-1>=0;++j)
5148
+ {
5149
+ result[i-j-1]=0;
5150
+ }
5151
+ i-=n;
5152
+ }
5153
+ else
5154
+ {
5155
+ result[i]=0;
5148
5156
  }
5149
- i+=n;
5150
5157
  }
5151
- else
5158
+ }
5159
+ else if (Array.isArray(n))
5160
+ {
5161
+ for(var i=data.length-1, j=0; i>=0; --i)
5152
5162
  {
5153
- result[i]=0;
5163
+ if (data[i])
5164
+ {
5165
+ result[i]=1;
5166
+ if (!IFrameSplitOperator.IsNumber(n[i])) continue;
5167
+ var period=parseInt(n[i]);
5168
+ if (period<=0) continue;
5169
+
5170
+ for(j=0;j<period && i-j-1>=0;++j)
5171
+ {
5172
+ result[i-j-1]=0;
5173
+ }
5174
+
5175
+ i-=period;
5176
+ }
5177
+ else
5178
+ {
5179
+ result[i]=0;
5180
+ }
5154
5181
  }
5155
5182
  }
5183
+
5156
5184
 
5157
5185
  return result;
5158
5186
  }
@@ -9590,6 +9618,7 @@ function JSDraw(errorHandler,symbolData)
9590
9618
  return result;
9591
9619
  }
9592
9620
 
9621
+ //只有条件==1 才显示文字
9593
9622
  this.DRAWTEXT=function(condition,price,text)
9594
9623
  {
9595
9624
  let drawData=[];
@@ -9607,11 +9636,11 @@ function JSDraw(errorHandler,symbolData)
9607
9636
  isFixedPosition=true;
9608
9637
  }
9609
9638
 
9610
- for(var i in condition)
9639
+ for(var i=0;i<condition.length;++i)
9611
9640
  {
9612
9641
  drawData[i]=null;
9613
9642
 
9614
- if (isNaN(condition[i]) || !condition[i]) continue;
9643
+ if (condition[i]!==1) continue;
9615
9644
 
9616
9645
  if (IsNumber || isFixedPosition)
9617
9646
  {
@@ -9623,7 +9652,7 @@ function JSDraw(errorHandler,symbolData)
9623
9652
  }
9624
9653
  }
9625
9654
  }
9626
- else if (this.IsNumber(condition) && condition)
9655
+ else if (this.IsNumber(condition) && condition===1)
9627
9656
  {
9628
9657
  var IsNumber=this.IsNumber(price);
9629
9658
  var isFixedPosition=false;
@@ -9649,20 +9678,21 @@ function JSDraw(errorHandler,symbolData)
9649
9678
  return result;
9650
9679
  }
9651
9680
 
9681
+ //1.固定位置显示文字;2.在指标排序中显示字符串栏目.
9682
+ //用法:DRAWTEXT_FIX(COND,X,Y,TYPE,TEXT),COND中一般需要加ISLASTBAR,当COND条件满足时,在当前指标窗口内(X,Y)位置书写文字TEXT,X,Y为书写点在窗口中相对于左上角的百分比,TYPE:0为左对齐,1为右对齐,2=居中.
9683
+ //例如:DRAWTEXT_FIX(ISLASTBAR AND CLOSE/OPEN>1.08,0.5,0.5,0,'大阳线')表示最后一个交易日实体阳线大于8%时在窗口中间位置显示'大阳线'字样.若文字中含有&,则进行折行.最多只能显示250个字符
9652
9684
  this.DRAWTEXT_FIX=function(condition,x,y,type,text)
9653
9685
  {
9654
9686
  var drawData={ Value:[], Text:[] };
9655
9687
  var result={DrawData:drawData, DrawType:'DRAWTEXT_FIX', Text:null, Position:{ X:x, Y:y, Type:type } };
9656
- if (condition.length<=0) return result;
9657
-
9688
+
9658
9689
  if (Array.isArray(condition))
9659
9690
  {
9660
-
9661
- for(var i in condition)
9691
+ for(var i=0; i<condition.length; ++i)
9662
9692
  {
9663
9693
  drawData.Text[i]=null;
9664
9694
  drawData.Value[i]=0;
9665
- if (isNaN(condition[i]) || !condition[i]) continue;
9695
+ if (condition[i]!==1) continue;
9666
9696
 
9667
9697
  drawData.Value[i]=1;
9668
9698
  drawData.Text[i]=text;
@@ -9670,7 +9700,7 @@ function JSDraw(errorHandler,symbolData)
9670
9700
  }
9671
9701
  else
9672
9702
  {
9673
- if(condition)
9703
+ if(condition===1)
9674
9704
  {
9675
9705
  for(var i=0;i<this.SymbolData.Data.Data.length;++i)
9676
9706
  {
@@ -9811,6 +9841,17 @@ function JSDraw(errorHandler,symbolData)
9811
9841
  let bSecondPont=false;
9812
9842
  let lineCache={Start:{ },End:{ }, List:new Array()};
9813
9843
 
9844
+ function CopyLineData(aryDest, arySrc)
9845
+ {
9846
+ if (!IFrameSplitOperator.IsNonEmptyArray(arySrc)) return;
9847
+
9848
+ for(var j=0; j<arySrc.length; ++j)
9849
+ {
9850
+ var item=arySrc[j];
9851
+ aryDest[item.ID]=item.Value;
9852
+ }
9853
+ }
9854
+
9814
9855
  for(let i=0;i<count;++i)
9815
9856
  {
9816
9857
  drawData[i]=null;
@@ -9837,6 +9878,16 @@ function JSDraw(errorHandler,symbolData)
9837
9878
  {
9838
9879
  bSecondPont=true;
9839
9880
  lineCache.End={ID:i, Value:data2[i]}; //第2个点
9881
+
9882
+ if (condition[i])
9883
+ {
9884
+ var lineData=this.CalculateDrawLine(lineCache); //计算2个点的线上 其他点的数值
9885
+ CopyLineData(drawData,lineData);
9886
+
9887
+ bFirstPoint=true;
9888
+ bSecondPont=false;
9889
+ lineCache.Start={ID:i, Value:data[i]}; //第1个点
9890
+ }
9840
9891
  }
9841
9892
  }
9842
9893
  else if (bFirstPoint==true && bSecondPont==true)
@@ -9848,13 +9899,8 @@ function JSDraw(errorHandler,symbolData)
9848
9899
  }
9849
9900
  else if (condition[i]) //条件1满足
9850
9901
  {
9851
- let lineData=this.CalculateDrawLine(lineCache); //计算2个点的线上 其他点的数值
9852
-
9853
- for(let j in lineData)
9854
- {
9855
- let item=lineData[j];
9856
- drawData[item.ID]=item.Value;
9857
- }
9902
+ var lineData=this.CalculateDrawLine(lineCache); //计算2个点的线上 其他点的数值
9903
+ CopyLineData(drawData,lineData);
9858
9904
 
9859
9905
  if (expand==1) this.CalculateDrawDataExtendLine(drawData, lineCache.Start.ID-2);//右延长线
9860
9906
 
@@ -9871,12 +9917,9 @@ function JSDraw(errorHandler,symbolData)
9871
9917
  //最后一组线
9872
9918
  if (bFirstPoint==true && bSecondPont==true)
9873
9919
  {
9874
- let lineData=this.CalculateDrawLine(lineCache);
9875
- for(let j in lineData)
9876
- {
9877
- let item=lineData[j];
9878
- drawData[item.ID]=item.Value;
9879
- }
9920
+ var lineData=this.CalculateDrawLine(lineCache);
9921
+ CopyLineData(drawData,lineData);
9922
+
9880
9923
  }
9881
9924
  }
9882
9925
 
@@ -10393,7 +10436,13 @@ function JSDraw(errorHandler,symbolData)
10393
10436
  {
10394
10437
  if (!numberData) return null;
10395
10438
 
10396
- if (numberData.DataType==1) return numberData.SingleValue;
10439
+ if (numberData.DataType==1)
10440
+ {
10441
+ var value=numberData.SingleValue;
10442
+ if (IFrameSplitOperator.IsNumber(value)) return value.toFixed(decimal);
10443
+ else if (value) return value.toString();
10444
+ else return null;
10445
+ }
10397
10446
 
10398
10447
  if (!IFrameSplitOperator.IsNonEmptyArray(numberData.ArrayValue)) return null;
10399
10448
 
@@ -10409,10 +10458,10 @@ function JSDraw(errorHandler,symbolData)
10409
10458
 
10410
10459
  /*
10411
10460
  固定位置显示数字.
10412
- 用法: DRAWNUMBER_FIX(COND,X,Y,TYPE,NUMBER),当COND条件满足时,在当前指标窗口内(X,Y)位置书写数字NUMBER,X,Y为书写点在窗口中相对于左上角的百分比,TYPE:0为左对齐,1为右对齐.
10461
+ 用法: DRAWNUMBER_FIX(COND,X,Y,TYPE,NUMBER,decimal=2),当COND条件满足时,在当前指标窗口内(X,Y)位置书写数字NUMBER,X,Y为书写点在窗口中相对于左上角的百分比,TYPE:0为左对齐,1为右对齐 2=居中
10413
10462
  例如: DRAWNUMBER_FIX(CURRBARSCOUNT=1 AND CLOSE/OPEN>1.08,0.5,0.5,0,C)表示最后一个交易日实体阳线大于8%时在窗口中间位置显示收盘价.
10414
10463
  */
10415
- this.DRAWNUMBER_FIX=function(condition,x,y,align,data)
10464
+ this.DRAWNUMBER_FIX=function(condition,x,y,align,data, decimal=2)
10416
10465
  {
10417
10466
  var drawData={ Value:[], Text:[], };
10418
10467
  var result={ DrawData:drawData, DrawType:'DRAWNUMBER_FIX', Position:{ X:x, Y:y, Type:align } };
@@ -10420,15 +10469,15 @@ function JSDraw(errorHandler,symbolData)
10420
10469
 
10421
10470
  if (Array.isArray(condition))
10422
10471
  {
10423
- for(var i in condition)
10472
+ for(var i=0; i<condition.length; ++i)
10424
10473
  {
10425
10474
  drawData.Text[i]=null;
10426
10475
  drawData.Value[i]=null;
10427
- if (!condition[i]) continue;
10476
+ if (condition[i]!==1) continue;
10428
10477
 
10429
10478
  if (isNumber)
10430
10479
  {
10431
- drawData.Text[i]=this.RemoveZero(data.toFixed(2));
10480
+ drawData.Text[i]=this.RemoveZero(data.toFixed(decimal));
10432
10481
  drawData.Value[i]=data;
10433
10482
  }
10434
10483
  else
@@ -10436,14 +10485,14 @@ function JSDraw(errorHandler,symbolData)
10436
10485
  if (i>=data.length || !IFrameSplitOperator.IsNumber(data[i])) continue;
10437
10486
 
10438
10487
  var item=data[i];
10439
- drawData.Text[i]=this.RemoveZero(item.toFixed(2));
10488
+ drawData.Text[i]=this.RemoveZero(item.toFixed(decimal));
10440
10489
  drawData.Value[i]=item;
10441
10490
  }
10442
10491
  }
10443
10492
  }
10444
10493
  else
10445
10494
  {
10446
- if(!condition)
10495
+ if(condition!==1)
10447
10496
  {
10448
10497
 
10449
10498
  }
@@ -10453,7 +10502,7 @@ function JSDraw(errorHandler,symbolData)
10453
10502
  {
10454
10503
  if (isNumber)
10455
10504
  {
10456
- drawData.Text[i]=this.RemoveZero(data.toFixed(2));
10505
+ drawData.Text[i]=this.RemoveZero(data.toFixed(decimal));
10457
10506
  drawData.Value[i]=data;
10458
10507
  }
10459
10508
  else
@@ -10461,7 +10510,7 @@ function JSDraw(errorHandler,symbolData)
10461
10510
  if (i>=data.length || !IFrameSplitOperator.IsNumber(data[i])) continue;
10462
10511
 
10463
10512
  var item=data[i];
10464
- drawData.Text[i]=this.RemoveZero(item.toFixed(2));
10513
+ drawData.Text[i]=this.RemoveZero(item.toFixed(decimal));
10465
10514
  drawData.Value[i]=item;
10466
10515
  }
10467
10516
  }
@@ -10779,6 +10828,12 @@ function JSDraw(errorHandler,symbolData)
10779
10828
  return rgba;
10780
10829
  }
10781
10830
 
10831
+ //设置字体
10832
+ this.CSSFONT=function(strFont)
10833
+ {
10834
+ return strFont;
10835
+ }
10836
+
10782
10837
  this.UPCOLOR=function(color)
10783
10838
  {
10784
10839
  return color;
@@ -17824,6 +17879,7 @@ function JSExecute(ast,option)
17824
17879
  let xOffset=null, yOffset=null;
17825
17880
  var klineType=null;
17826
17881
  var lineDash=null;
17882
+ var font=null;
17827
17883
  for(let j=0; j<item.Expression.Expression.length; ++j)
17828
17884
  {
17829
17885
  let itemExpression=item.Expression.Expression[j];
@@ -17940,6 +17996,10 @@ function JSExecute(ast,option)
17940
17996
  {
17941
17997
  downColor=itemExpression.Out;
17942
17998
  }
17999
+ else if (itemExpression.Callee.Name=="CSSFONT")
18000
+ {
18001
+ font=itemExpression.Out;
18002
+ }
17943
18003
  else if (itemExpression.Callee.Name=="STICKTYPE")
17944
18004
  {
17945
18005
  stickType=itemExpression.Out;
@@ -18142,6 +18202,7 @@ function JSExecute(ast,option)
18142
18202
  if (drawAlign>=0) outVar.DrawAlign=drawAlign;
18143
18203
  if (drawVAlign>=0) outVar.DrawVAlign=drawVAlign;
18144
18204
  if (fontSize>0) outVar.DrawFontSize=fontSize;
18205
+ if (font) outVar.Font=font;
18145
18206
  if (bgConfig) outVar.Background=bgConfig;
18146
18207
  if (vLineConfig) outVar.VerticalLine=vLineConfig;
18147
18208
  if (IFrameSplitOperator.IsNumber(xOffset)) outVar.XOffset=xOffset;
@@ -18623,7 +18684,7 @@ function JSExecute(ast,option)
18623
18684
  node.Out=node.Draw.DrawData.Value;
18624
18685
  break;
18625
18686
  case "DRAWNUMBER_FIX":
18626
- node.Draw=this.Draw.DRAWNUMBER_FIX(args[0],args[1],args[2],args[3],args[4]);
18687
+ node.Draw=this.Draw.DRAWNUMBER_FIX(args[0],args[1],args[2],args[3],args[4], args[5]);
18627
18688
  node.Out=node.Draw.DrawData.Value;
18628
18689
  break;
18629
18690
  case "DRAWCHANNEL":
@@ -18642,6 +18703,9 @@ function JSExecute(ast,option)
18642
18703
  case "DOWNCOLOR":
18643
18704
  node.Out=this.Draw.DOWNCOLOR(args[0]);
18644
18705
  break;
18706
+ case "CSSFONT":
18707
+ node.Out=this.Draw.CSSFONT(args[0]);
18708
+ break;
18645
18709
  case "STICKTYPE": //柱子类型
18646
18710
  node.Out=this.Draw.STICKTYPE(args[0]);
18647
18711
  break;
@@ -21356,6 +21420,7 @@ function ScriptIndex(name,script,args,option)
21356
21420
  }
21357
21421
 
21358
21422
  if (varItem.DrawFontSize>0) chartText.FixedFontSize=varItem.DrawFontSize;
21423
+ if (varItem.Font) chartText.Font=varItem.Font;
21359
21424
  if (varItem.Background) chartText.TextBG=varItem.Background;
21360
21425
  if (varItem.VerticalLine) chartText.VerticalLine=varItem.VerticalLine;
21361
21426
 
@@ -21511,6 +21576,12 @@ function ScriptIndex(name,script,args,option)
21511
21576
  let width=parseInt(varItem.LineWidth.replace("LINETHICK",""));
21512
21577
  if (!isNaN(width) && width>0) line.LineWidth=width;
21513
21578
  }
21579
+
21580
+ if (varItem.IsDotLine)
21581
+ {
21582
+ line.IsDotLine=true; //虚线
21583
+ line.LineDash=g_JSChartResource.DOTLINE.LineDash.slice();
21584
+ }
21514
21585
 
21515
21586
  let titleIndex=windowIndex+1;
21516
21587
  line.Data.Data=varItem.Draw.DrawData;
@@ -22090,6 +22161,102 @@ function ScriptIndex(name,script,args,option)
22090
22161
  hqChart.ChartPaint.push(chartText);
22091
22162
  }
22092
22163
 
22164
+ this.CreateDrawText_Fix=function(hqChart,windowIndex,varItem,id)
22165
+ {
22166
+ var chartText=new ChartDrawText_Fix();
22167
+ chartText.Canvas=hqChart.Canvas;
22168
+ chartText.Name=varItem.Name;
22169
+ chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
22170
+ chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
22171
+ chartText.ReloadResource();
22172
+ chartText.HQChart=hqChart;
22173
+
22174
+ if (varItem.Draw.Position)
22175
+ {
22176
+ var item=varItem.Draw.Position;
22177
+ chartText.PtPercentage={ X:item.X, Y:item.Y }; //坐标
22178
+ // TYPE:0为左对齐,1为右对齐 2=居中
22179
+ if (item.Type===0) chartText.TextAlign="left";
22180
+ else if (item.Type===1) chartText.TextAlign="right";
22181
+ else if (item.Type===2) chartText.TextAlign="center";
22182
+ }
22183
+
22184
+ //字体
22185
+ if (varItem.DrawFontSize>0) chartText.TextFont=`${varItem.DrawFontSize*GetDevicePixelRatio()}px 微软雅黑`; //临时用下吧
22186
+ if (varItem.Font) chartText.TextFont=varItem.Font;
22187
+
22188
+ //颜色
22189
+ if (varItem.Color) chartText.Color=this.GetColor(varItem.Color);
22190
+ else chartText.Color=this.GetDefaultColor(id);
22191
+
22192
+ if (varItem.DrawVAlign>=0) //上下对齐
22193
+ {
22194
+ if (varItem.DrawVAlign==0) chartText.TextBaseline='top';
22195
+ else if (varItem.DrawVAlign==1) chartText.TextBaseline='middle';
22196
+ else if (varItem.DrawVAlign==2) chartText.TextBaseline='bottom';
22197
+ }
22198
+
22199
+ if (varItem.DrawAlign>=0) // 左右对齐
22200
+ {
22201
+ if (varItem.DrawAlign==0) chartText.TextAlign="left";
22202
+ else if (varItem.DrawAlign==1) chartText.TextAlign="center";
22203
+ else if (varItem.DrawAlign==2) chartText.TextAlign='right';
22204
+ }
22205
+
22206
+ chartText.BuildCacheData(hqChart.GetKData(),varItem.Draw.DrawData);
22207
+
22208
+ this.SetChartIndexName(chartText);
22209
+ hqChart.ChartPaint.push(chartText);
22210
+ }
22211
+
22212
+ this.CreateDrawNumber_Fix=function(hqChart,windowIndex,varItem,id)
22213
+ {
22214
+ var chartText=new ChartDrawNumber_Fix();
22215
+ chartText.Canvas=hqChart.Canvas;
22216
+ chartText.Name=varItem.Name;
22217
+ chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
22218
+ chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
22219
+ chartText.ReloadResource();
22220
+ chartText.HQChart=hqChart;
22221
+
22222
+ if (varItem.Draw.Position)
22223
+ {
22224
+ var item=varItem.Draw.Position;
22225
+ chartText.PtPercentage={ X:item.X, Y:item.Y }; //坐标
22226
+ // TYPE:0为左对齐,1为右对齐 2=居中
22227
+ if (item.Type===0) chartText.TextAlign="left";
22228
+ else if (item.Type===1) chartText.TextAlign="right";
22229
+ else if (item.Type===2) chartText.TextAlign="center";
22230
+ }
22231
+
22232
+ //字体
22233
+ if (varItem.DrawFontSize>0) chartText.TextFont=`${varItem.DrawFontSize*GetDevicePixelRatio()}px 微软雅黑`; //临时用下吧
22234
+ if (varItem.Font) chartText.TextFont=varItem.Font;
22235
+
22236
+ //颜色
22237
+ if (varItem.Color) chartText.Color=this.GetColor(varItem.Color);
22238
+ else chartText.Color=this.GetDefaultColor(id);
22239
+
22240
+ if (varItem.DrawVAlign>=0) //上下对齐
22241
+ {
22242
+ if (varItem.DrawVAlign==0) chartText.TextBaseline='top';
22243
+ else if (varItem.DrawVAlign==1) chartText.TextBaseline='middle';
22244
+ else if (varItem.DrawVAlign==2) chartText.TextBaseline='bottom';
22245
+ }
22246
+
22247
+ if (varItem.DrawAlign>=0) // 左右对齐
22248
+ {
22249
+ if (varItem.DrawAlign==0) chartText.TextAlign="left";
22250
+ else if (varItem.DrawAlign==1) chartText.TextAlign="center";
22251
+ else if (varItem.DrawAlign==2) chartText.TextAlign='right';
22252
+ }
22253
+
22254
+ chartText.BuildCacheData(hqChart.GetKData(),varItem.Draw.DrawData);
22255
+
22256
+ this.SetChartIndexName(chartText);
22257
+ hqChart.ChartPaint.push(chartText);
22258
+ }
22259
+
22093
22260
  this.CreateDrawText=function(hqChart,windowIndex,varItem,id)
22094
22261
  {
22095
22262
  let chartText=new ChartSingleText();
@@ -22906,8 +23073,10 @@ function ScriptIndex(name,script,args,option)
22906
23073
  this.CreateDrawNumber(hqChart,windowIndex,item,i);
22907
23074
  break;
22908
23075
  case "DRAWNUMBER_FIX":
23076
+ this.CreateDrawNumber_Fix(hqChart,windowIndex,item,i);
23077
+ break;
22909
23078
  case 'DRAWTEXT_FIX':
22910
- this.CreateNumberText(hqChart,windowIndex,item,i);
23079
+ this.CreateDrawText_Fix(hqChart,windowIndex,item,i);
22911
23080
  break;
22912
23081
  case 'DRAWICON':
22913
23082
  this.CreateIcon(hqChart,windowIndex,item,i);
@@ -23299,9 +23468,13 @@ function OverlayScriptIndex(name,script,args,option)
23299
23468
  this.CreateBackgroud(hqChart,windowIndex,item,i);
23300
23469
  break;
23301
23470
  case 'DRAWNUMBER':
23471
+ this.CreateNumberText(hqChart,windowIndex,item,i);
23472
+ break;
23302
23473
  case "DRAWNUMBER_FIX":
23474
+ this.CreateDrawNumber_Fix(hqChart,windowIndex,item,i);
23475
+ break;
23303
23476
  case 'DRAWTEXT_FIX':
23304
- this.CreateNumberText(hqChart,windowIndex,item,i);
23477
+ this.CreateDrawText_Fix(hqChart,windowIndex,item,i);
23305
23478
  break;
23306
23479
  case 'DRAWICON':
23307
23480
  this.CreateIcon(hqChart,windowIndex,item,i);
@@ -23643,6 +23816,7 @@ function OverlayScriptIndex(name,script,args,option)
23643
23816
  }
23644
23817
 
23645
23818
  if (varItem.DrawFontSize>0) chartText.FixedFontSize=varItem.DrawFontSize;
23819
+ if (varItem.Font) chartText.Font=varItem.Font;
23646
23820
  if (varItem.Background) chartText.TextBG=varItem.Background;
23647
23821
  if (varItem.VerticalLine) chartText.VerticalLine=varItem.VerticalLine;
23648
23822
  if (IFrameSplitOperator.IsNumber(varItem.XOffset)) chartText.ShowOffset.X=varItem.XOffset;
@@ -23841,6 +24015,12 @@ function OverlayScriptIndex(name,script,args,option)
23841
24015
  let width=parseInt(varItem.LineWidth.replace("LINETHICK",""));
23842
24016
  if (!isNaN(width) && width>0) chart.LineWidth=width;
23843
24017
  }
24018
+
24019
+ if (varItem.IsDotLine)
24020
+ {
24021
+ chart.IsDotLine=true; //虚线
24022
+ chart.LineDash=g_JSChartResource.DOTLINE.LineDash.slice();
24023
+ }
23844
24024
 
23845
24025
  let titleIndex=windowIndex+1;
23846
24026
  chart.Data.Data=varItem.Draw.DrawData;
@@ -24010,6 +24190,110 @@ function OverlayScriptIndex(name,script,args,option)
24010
24190
  frame.ChartPaint.push(chart);
24011
24191
  }
24012
24192
 
24193
+ this.CreateDrawText_Fix=function(hqChart,windowIndex,varItem,id)
24194
+ {
24195
+ var overlayIndex=this.OverlayIndex;
24196
+ var frame=overlayIndex.Frame;
24197
+ var chart=new ChartDrawText_Fix();
24198
+ chart.Canvas=hqChart.Canvas;
24199
+
24200
+ chart.Name=varItem.Name;
24201
+ chart.ChartBorder=frame.Frame.ChartBorder;
24202
+ chart.ChartFrame=frame.Frame;
24203
+ chart.Identify=overlayIndex.Identify;
24204
+ chart.ReloadResource();
24205
+ chart.HQChart=hqChart;
24206
+
24207
+ if (varItem.Draw.Position)
24208
+ {
24209
+ var item=varItem.Draw.Position;
24210
+ chart.PtPercentage={ X:item.X, Y:item.Y }; //坐标
24211
+ // TYPE:0为左对齐,1为右对齐 2=居中
24212
+ if (item.Type===0) chart.TextAlign="left";
24213
+ else if (item.Type===1) chart.TextAlign="right";
24214
+ else if (item.Type===2) chart.TextAlign="center";
24215
+ }
24216
+
24217
+ //字体
24218
+ if (varItem.DrawFontSize>0) chart.TextFont=`${varItem.DrawFontSize*GetDevicePixelRatio()}px 微软雅黑`; //临时用下吧
24219
+ if (varItem.Font) chart.TextFont=varItem.Font;
24220
+
24221
+ //颜色
24222
+ if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
24223
+ else chart.Color=this.GetDefaultColor(id);
24224
+
24225
+ if (varItem.DrawVAlign>=0) //上下对齐
24226
+ {
24227
+ if (varItem.DrawVAlign==0) chart.TextBaseline='top';
24228
+ else if (varItem.DrawVAlign==1) chart.TextBaseline='middle';
24229
+ else if (varItem.DrawVAlign==2) chart.TextBaseline='bottom';
24230
+ }
24231
+
24232
+ if (varItem.DrawAlign>=0) // 左右对齐
24233
+ {
24234
+ if (varItem.DrawAlign==0) chart.TextAlign="left";
24235
+ else if (varItem.DrawAlign==1) chart.TextAlign="center";
24236
+ else if (varItem.DrawAlign==2) chart.TextAlign='right';
24237
+ }
24238
+
24239
+ chart.BuildCacheData(hqChart.GetKData(),varItem.Draw.DrawData);
24240
+
24241
+ this.SetChartIndexName(chart);
24242
+ frame.ChartPaint.push(chart);
24243
+ }
24244
+
24245
+ this.CreateDrawNumber_Fix=function(hqChart,windowIndex,varItem,id)
24246
+ {
24247
+ var overlayIndex=this.OverlayIndex;
24248
+ var frame=overlayIndex.Frame;
24249
+ var chart=new ChartDrawNumber_Fix();
24250
+ chart.Canvas=hqChart.Canvas;
24251
+
24252
+ chart.Name=varItem.Name;
24253
+ chart.ChartBorder=frame.Frame.ChartBorder;
24254
+ chart.ChartFrame=frame.Frame;
24255
+ chart.Identify=overlayIndex.Identify;
24256
+ chart.ReloadResource();
24257
+ chart.HQChart=hqChart;
24258
+
24259
+ if (varItem.Draw.Position)
24260
+ {
24261
+ var item=varItem.Draw.Position;
24262
+ chart.PtPercentage={ X:item.X, Y:item.Y }; //坐标
24263
+ // TYPE:0为左对齐,1为右对齐 2=居中
24264
+ if (item.Type===0) chart.TextAlign="left";
24265
+ else if (item.Type===1) chart.TextAlign="right";
24266
+ else if (item.Type===2) chart.TextAlign="center";
24267
+ }
24268
+
24269
+ //字体
24270
+ if (varItem.DrawFontSize>0) chart.TextFont=`${varItem.DrawFontSize*GetDevicePixelRatio()}px 微软雅黑`; //临时用下吧
24271
+ if (varItem.Font) chart.TextFont=varItem.Font;
24272
+
24273
+ //颜色
24274
+ if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
24275
+ else chart.Color=this.GetDefaultColor(id);
24276
+
24277
+ if (varItem.DrawVAlign>=0) //上下对齐
24278
+ {
24279
+ if (varItem.DrawVAlign==0) chart.TextBaseline='top';
24280
+ else if (varItem.DrawVAlign==1) chart.TextBaseline='middle';
24281
+ else if (varItem.DrawVAlign==2) chart.TextBaseline='bottom';
24282
+ }
24283
+
24284
+ if (varItem.DrawAlign>=0) // 左右对齐
24285
+ {
24286
+ if (varItem.DrawAlign==0) chart.TextAlign="left";
24287
+ else if (varItem.DrawAlign==1) chart.TextAlign="center";
24288
+ else if (varItem.DrawAlign==2) chart.TextAlign='right';
24289
+ }
24290
+
24291
+ chart.BuildCacheData(hqChart.GetKData(),varItem.Draw.DrawData);
24292
+
24293
+ this.SetChartIndexName(chart);
24294
+ frame.ChartPaint.push(chart);
24295
+ }
24296
+
24013
24297
  this.CreateTextLine=function(hqChart,windowIndex,varItem,id)
24014
24298
  {
24015
24299
  var overlayIndex=this.OverlayIndex;