hqchart 1.1.15080 → 1.1.15089

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.15080",
3
+ "version": "1.1.15089",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -564,8 +564,6 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
564
564
  if (IFrameSplitOperator.IsNumber(subItem.Formula)) chart.ChartCorssCursor.StringFormatX.RangeIncrease.Formula=subItem.Formula;
565
565
 
566
566
  }
567
-
568
-
569
567
  }
570
568
 
571
569
  //保存十字光标文字高度
@@ -584,8 +582,11 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
584
582
  {
585
583
  var item=option.Frame[i];
586
584
  if (!chart.Frame.SubFrame[i]) continue;
587
- var subFrame=chart.Frame.SubFrame[i].Frame;
588
585
 
586
+ chart.SetSubFrameAttribute(chart.Frame.SubFrame[i], null, item);
587
+
588
+ /* 窗口设置全部移动到 SetSubFrameAttribute
589
+ var subFrame=chart.Frame.SubFrame[i].Frame;
589
590
  if (IFrameSplitOperator.IsNumber(item.SplitCount)) chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;
590
591
  if (item.StringFormat) chart.Frame.SubFrame[i].Frame.YSplitOperator.StringFormat=item.StringFormat;
591
592
  if (IFrameSplitOperator.IsNumber(item.FloatPrecision)) chart.Frame.SubFrame[i].Frame.YSplitOperator.FloatPrecision=item.FloatPrecision;
@@ -631,6 +632,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
631
632
  if (IFrameSplitOperator.IsBool(item.IsShowNameArrow)) chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;
632
633
 
633
634
  if (item.ClientBGColor) subFrame.ClientBGColor=item.ClientBGColor;
635
+ */
634
636
  }
635
637
  }
636
638
 
@@ -763,6 +765,9 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
763
765
 
764
766
  }
765
767
 
768
+ chart.SetSubFrameAttribute(chart.Frame.SubFrame[i],item, null)
769
+
770
+ /* 窗口设置全部移动到 SetSubFrameAttribute
766
771
  var frame=chart.Frame.SubFrame[i].Frame;
767
772
  if (IFrameSplitOperator.IsBool(item.Modify)) frame.ModifyIndex=item.Modify;
768
773
  if (IFrameSplitOperator.IsBool(item.Change)) frame.ChangeIndex=item.Change;
@@ -772,6 +777,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
772
777
  if (IFrameSplitOperator.IsBool(item.MaxMin)) chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;
773
778
  if (IFrameSplitOperator.IsBool(item.TitleWindow)) chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;
774
779
  if (IFrameSplitOperator.IsBool(item.AddIndexWindow)) frame.AddIndexWindow=item.AddIndexWindow;
780
+ if (IFrameSplitOperator.IsBool(item.IndexHelp)) frame.IndexHelp=item.IndexHelp;
775
781
 
776
782
  if (item.IsDrawTitleBG==true) chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;
777
783
  if (IFrameSplitOperator.IsBool(item.IsShowNameArrow)) chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;
@@ -791,6 +797,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
791
797
  if (IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position)) chart.Frame.SubFrame[i].Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;
792
798
  if (IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace)) chart.Frame.SubFrame[i].Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;
793
799
  }
800
+ */
794
801
  }
795
802
 
796
803
  //叠加指标宽度
@@ -1146,6 +1153,10 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1146
1153
  {
1147
1154
  var item=option.Frame[i];
1148
1155
  if (!chart.Frame.SubFrame[i]) continue;
1156
+
1157
+ chart.SetSubFrameAttribute(chart.Frame.SubFrame[i],null,item);
1158
+
1159
+ /*
1149
1160
  var subFrame=chart.Frame.SubFrame[i].Frame;
1150
1161
 
1151
1162
  if (IFrameSplitOperator.IsNumber(item.SplitCount)) chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;
@@ -1203,6 +1214,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1203
1214
  if (subItem.Percentage && IFrameSplitOperator.IsNumber(subItem.Percentage.Dec)) subFrame.YSplitOperator.RightTextConfig.Percentage.Dec=subItem.Percentage.Dec;
1204
1215
  }
1205
1216
  }
1217
+ */
1206
1218
  }
1207
1219
 
1208
1220
  chart.UpdateXShowText();
@@ -1318,6 +1330,9 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1318
1330
  }
1319
1331
  }
1320
1332
 
1333
+ chart.SetSubFrameAttribute(chart.Frame.SubFrame[index],item, null);
1334
+
1335
+ /*
1321
1336
  var frame=chart.Frame.SubFrame[index].Frame;
1322
1337
  if (IFrameSplitOperator.IsBool(item.Modify)) frame.ModifyIndex=item.Modify;
1323
1338
  if (IFrameSplitOperator.IsBool(item.Change)) frame.ChangeIndex=item.Change;
@@ -1327,6 +1342,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1327
1342
  if (IFrameSplitOperator.IsBool(item.MaxMin)) frame.MaxMinWindow=item.MaxMin;
1328
1343
  if (IFrameSplitOperator.IsBool(item.TitleWindow)) frame.TitleWindow=item.TitleWindow;
1329
1344
  if (IFrameSplitOperator.IsBool(item.AddIndexWindow)) frame.AddIndexWindow=item.AddIndexWindow;
1345
+ if (IFrameSplitOperator.IsBool(item.IndexHelp)) frame.IndexHelp=item.IndexHelp;
1330
1346
 
1331
1347
  if (IFrameSplitOperator.IsNumber(item.YSplitType)) chart.Frame.SubFrame[index].Frame.YSplitOperator.SplitType=item.YSplitType;
1332
1348
  if (IFrameSplitOperator.IsNumber(item.FilterType)) chart.Frame.SubFrame[index].Frame.YSplitOperator.FilterType=item.FilterType;
@@ -1339,6 +1355,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1339
1355
  if (item.IsShowIndexName==false) chart.Frame.SubFrame[index].Frame.IsShowIndexName=false;
1340
1356
  if (item.IsShowOverlayIndexName==false) chart.Frame.SubFrame[index].Frame.IsShowOverlayIndexName=false;
1341
1357
  if (!IFrameSplitOperator.IsUndefined(item.HorizontalReserved)) frame.HorizontalReserved=item.HorizontalReserved;
1358
+ */
1342
1359
  }
1343
1360
  }
1344
1361
 
@@ -2980,6 +2997,7 @@ var JSCHART_BUTTON_ID=
2980
2997
  ADD_INDEX_WINDOW:44, //增加指标窗口
2981
2998
 
2982
2999
  CHIP_CLOSE:45, //关闭筹码图
3000
+ INDEX_HELP:46, //指标帮助
2983
3001
  }
2984
3002
 
2985
3003
  var JSCHART_DATA_FIELD_ID=
@@ -10316,9 +10334,14 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10316
10334
  if (IFrameSplitOperator.IsBool(windowItem.Change)) frame.ChangeIndex=windowItem.Change;
10317
10335
  if (IFrameSplitOperator.IsBool(windowItem.Close)) frame.CloseIndex=windowItem.Close;
10318
10336
  if (IFrameSplitOperator.IsBool(windowItem.Overlay)) frame.OverlayIndex=windowItem.Overlay;
10337
+ if (IFrameSplitOperator.IsBool(windowItem.Export)) frame.ExportData=windowItem.Export;
10338
+ if (IFrameSplitOperator.IsBool(windowItem.MaxMin)) frame.MaxMinWindow=windowItem.MaxMin;
10339
+ if (IFrameSplitOperator.IsBool(windowItem.TitleWindow)) frame.TitleWindow=windowItem.TitleWindow;
10319
10340
  if (IFrameSplitOperator.IsBool(windowItem.AddIndexWindow)) frame.AddIndexWindow=windowItem.AddIndexWindow;
10341
+ if (IFrameSplitOperator.IsBool(windowItem.IndexHelp)) frame.IndexHelp=windowItem.IndexHelp;
10320
10342
 
10321
10343
  if (IFrameSplitOperator.IsBool(windowItem.IsDrawTitleBG)) frame.IsDrawTitleBG=windowItem.IsDrawTitleBG;
10344
+ if (IFrameSplitOperator.IsBool(windowItem.IsShowNameArrow)) frame.IsShowNameArrow=windowItem.IsShowNameArrow;
10322
10345
 
10323
10346
  if (IFrameSplitOperator.IsNumber(windowItem.TitleHeight)) frame.ChartBorder.TitleHeight=windowItem.TitleHeight;
10324
10347
  else windowItem.TitleHeight=frame.ChartBorder.TitleHeight;
@@ -10326,21 +10349,33 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10326
10349
  if (IFrameSplitOperator.IsBool(windowItem.IsShowTitleArrow)) frame.IsShowTitleArrow=windowItem.IsShowTitleArrow;
10327
10350
  if (IFrameSplitOperator.IsNumber(windowItem.TitleArrowType)) frame.TitleArrowType=windowItem.TitleArrowType;
10328
10351
  if (IFrameSplitOperator.IsBool(windowItem.IsShowIndexName)) frame.IsShowIndexName=windowItem.IsShowIndexName;
10352
+ if (IFrameSplitOperator.IsBool(windowItem.IsShowOverlayIndexName)) frame.IsShowOverlayIndexName=windowItem.IsShowOverlayIndexName;
10329
10353
  if (IFrameSplitOperator.IsNumber(windowItem.IndexParamSpace)) frame.IndexParamSpace=windowItem.IndexParamSpace;
10330
10354
  if (IFrameSplitOperator.IsNumber(windowItem.IndexTitleSpace)) frame.IndexTitleSpace=windowItem.IndexTitleSpace;
10331
10355
  if (!IFrameSplitOperator.IsUndefined(windowItem.HorizontalReserved)) frame.HorizontalReserved=windowItem.HorizontalReserved; //Y轴上下预留
10332
- if (IFrameSplitOperator.IsBool(windowItem.IsShowNameArrow)) frame.IsShowNameArrow=windowItem.IsShowNameArrow;
10356
+
10357
+ if (windowItem.OverlayIndexType)
10358
+ {
10359
+ if (IFrameSplitOperator.IsNumber(windowItem.OverlayIndexType.Position)) frame.OverlayIndexType.Position=windowItem.OverlayIndexType.Position;
10360
+ if (IFrameSplitOperator.IsNumber(windowItem.OverlayIndexType.LineSpace)) frame.OverlayIndexType.LineSpace=windowItem.OverlayIndexType.LineSpace;
10361
+ }
10333
10362
  }
10334
10363
 
10335
10364
  if (frameItem)
10336
10365
  {
10337
- if (frameItem.SplitCount) frame.YSplitOperator.SplitCount=frameItem.SplitCount;
10366
+ if (frameItem.SplitCount) frame.YSplitOperator.SplitCount=frameItem.SplitCount; //Y轴刻度线个数
10367
+ if (frameItem.StringFormat) frame.YSplitOperator.StringFormat=frameItem.StringFormat; //Y轴文字格式
10368
+ if (IFrameSplitOperator.IsNumber(frameItem.FloatPrecision)) frame.YSplitOperator.FloatPrecision=frameItem.FloatPrecision; //Y轴小数位数
10369
+ if (frameItem.Custom) frame.YSplitOperator.Custom=frameItem.Custom; //Y轴自定义刻度
10370
+
10338
10371
  if (IFrameSplitOperator.IsNumber(frameItem.SplitType))
10339
10372
  {
10340
10373
  frame.YSplitOperator.SplitType=frameItem.SplitType;
10341
10374
  frame.YSplitOperator.DefaultSplitType=frameItem.SplitType;
10342
10375
  }
10343
10376
 
10377
+ if (IFrameSplitOperator.IsNumber(frameItem.FilterType)) frame.YSplitOperator.FilterType=frameItem.FilterType;
10378
+
10344
10379
  if (IFrameSplitOperator.IsBool(frameItem.IsShowXLine)) frame.IsShowXLine=frameItem.IsShowXLine;
10345
10380
  if (IFrameSplitOperator.IsBool(frameItem.IsShowYLine)) frame.IsShowYLine=frameItem.IsShowYLine;
10346
10381
 
@@ -10358,6 +10393,41 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10358
10393
  if (IFrameSplitOperator.IsNumber(frameItem.Height) && frameItem.Height>=0) subFrame.Height = frameItem.Height;
10359
10394
  if (IFrameSplitOperator.IsNumber(frameItem.TopSpace)) frame.ChartBorder.TopSpace=frameItem.TopSpace*pixelRatio;
10360
10395
  if (IFrameSplitOperator.IsNumber(frameItem.BottomSpace)) frame.ChartBorder.BottomSpace=frameItem.BottomSpace*pixelRatio;
10396
+
10397
+ if (IFrameSplitOperator.IsNumber(frameItem.RightTextPosition)) frame.YTextPosition[1]=frameItem.RightTextPosition;
10398
+ if (IFrameSplitOperator.IsNumber(frameItem.LeftTextPosition)) frame.YTextPosition[0]=frameItem.LeftTextPosition;
10399
+ if (IFrameSplitOperator.IsNumber(frameItem.YTextBaseline)) frame.YTextBaseline=frameItem.YTextBaseline;
10400
+
10401
+ if (IFrameSplitOperator.IsNumber(frameItem.YCoordinateType)) frame.YSplitOperator.CoordinateType=frameItem.YCoordinateType; //坐标类型
10402
+ if (frameItem.IsYReverse===true) frame.CoordinateType=1; //反转坐标
10403
+
10404
+ if (IFrameSplitOperator.IsNumber(frameItem.PercentageTextFormat)) frame.YSplitOperator.PercentageTextFormat=frameItem.PercentageTextFormat; //百分比坐标格式
10405
+ if (frameItem.DefaultYMaxMin) frame.YSplitOperator.DefaultYMaxMin=frameItem.DefaultYMaxMin; //指定最大最小值
10406
+ if (IFrameSplitOperator.IsBool(frameItem.EnableRemoveZero)) frame.YSplitOperator.EnableRemoveZero=frameItem.EnableRemoveZero; //Y轴文字小数位是否自动抹0
10407
+ if (IFrameSplitOperator.IsPlusNumber(frameItem.MinYDistance)) frame.MinYDistance=frameItem.MinYDistance;
10408
+ if (IFrameSplitOperator.IsNumber(frameItem.BorderLine)) frame.BorderLine=frameItem.BorderLine;
10409
+ if (IFrameSplitOperator.IsBool(frameItem.IsDrawTitleBottomLine)) frame.IsDrawTitleBottomLine=frameItem.IsDrawTitleBottomLine;
10410
+ if (IFrameSplitOperator.IsBool(frameItem.IsShowIndexTitle)) frame.IsShowIndexTitle=frameItem.IsShowIndexTitle;
10411
+ if (frameItem.ClientBGColor) frame.ClientBGColor=frameItem.ClientBGColor;
10412
+
10413
+ //分时图属性
10414
+ if (IFrameSplitOperator.IsBool(frameItem.CloseBeforeButton)) frameItem.IsShowCloseButton=frameItem.CloseBeforeButton;
10415
+ if (frame.YSplitOperator.RightTextConfig) //主图右侧坐标设置
10416
+ {
10417
+ if (IFrameSplitOperator.IsNumber(frameItem.RightTextFormat)) //废弃(兼容版本)
10418
+ {
10419
+ frame.YSplitOperator.RightTextConfig.Format=frameItem.RightTextFormat;
10420
+ if (frameItem.RightTextFormat==2) frame.MultiTextFormat=1;
10421
+ }
10422
+
10423
+ if (frameItem.RightText) //主图右侧坐标设置(新版本)
10424
+ {
10425
+ var subItem=frameItem.RightText;
10426
+ if (IFrameSplitOperator.IsNumber(subItem.Format)) frame.YSplitOperator.RightTextConfig.Format=subItem.Format;
10427
+ if (subItem.Format==2) frame.MultiTextFormat=1;
10428
+ if (subItem.Percentage && IFrameSplitOperator.IsNumber(subItem.Percentage.Dec)) frame.YSplitOperator.RightTextConfig.Percentage.Dec=subItem.Percentage.Dec;
10429
+ }
10430
+ }
10361
10431
  }
10362
10432
 
10363
10433
  }
@@ -10380,6 +10450,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10380
10450
  if (IFrameSplitOperator.IsBool(item.MaxMin)) frame.MaxMinWindow=item.MaxMin;
10381
10451
  if (IFrameSplitOperator.IsBool(item.TitleWindow)) frame.TitleWindow=item.TitleWindow;
10382
10452
  if (IFrameSplitOperator.IsBool(item.AddIndexWindow)) frame.AddIndexWindow=item.AddIndexWindow;
10453
+ if (IFrameSplitOperator.IsBool(item.IndexHelp)) frame.IndexHelp=item.IndexHelp;
10383
10454
 
10384
10455
  if (IFrameSplitOperator.IsBool(item.IsDrawTitleBG)) frame.IsDrawTitleBG=item.IsDrawTitleBG;
10385
10456
  if (IFrameSplitOperator.IsBool(item.IsShowNameArrow)) frame.IsShowNameArrow=item.IsShowNameArrow;
@@ -13591,6 +13662,7 @@ function AverageWidthFrame()
13591
13662
  this.TitleWindowButton=CloneData(g_JSChartResource.Buttons.TitleWindow);
13592
13663
  this.ExportDataButton=CloneData(g_JSChartResource.Buttons.ExportData);
13593
13664
  this.AddIndexWindowButton=CloneData(g_JSChartResource.Buttons.AddIndexWindow);
13665
+ this.IndexHelpButton=CloneData(g_JSChartResource.Buttons.IndexHelp);
13594
13666
 
13595
13667
  this.ButtonTooltip=CloneData(g_JSChartResource.Buttons.Tooltip);
13596
13668
 
@@ -13629,6 +13701,7 @@ function AverageWidthFrame()
13629
13701
  this.TitleWindowButton=CloneData(g_JSChartResource.Buttons.TitleWindow);
13630
13702
  this.ButtonTooltip=CloneData(g_JSChartResource.Buttons.Tooltip);
13631
13703
  this.AddIndexWindowButton=CloneData(g_JSChartResource.Buttons.AddIndexWindow);
13704
+ this.IndexHelpButton=CloneData(g_JSChartResource.Buttons.IndexHelp);
13632
13705
  }
13633
13706
 
13634
13707
  if (this.DivFrameToolbar) this.DivFrameToolbar.ReloadResource(resource);
@@ -16284,6 +16357,7 @@ function MinuteFrame()
16284
16357
  this.ExportData=g_JSChartResource.MinuteToolbar.ExportData; //是否显示'导出数据'菜单
16285
16358
  this.OverlayIndex=g_JSChartResource.MinuteToolbar.OverlayIndex; //是否显示叠加指标
16286
16359
  this.AddIndexWindow=g_JSChartResource.MinuteToolbar.AddIndexWindow; //是否显示'增加指标窗口'菜单
16360
+ this.IndexHelp=g_JSChartResource.MinuteToolbar.IndexHelp;
16287
16361
 
16288
16362
  this.IsShowPositionTitle=false; //是否显示持仓标题
16289
16363
 
@@ -16440,6 +16514,7 @@ function MinuteFrame()
16440
16514
  if (this.ChangeIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.CHANGE_INDEX, Style:this.ChangeIndexButton });
16441
16515
  if (this.ModifyIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM, Style:this.ModifyIndexParamButton });
16442
16516
  if (this.AddIndexWindow) aryButton.push({ ID:JSCHART_BUTTON_ID.ADD_INDEX_WINDOW, Style:this.AddIndexWindowButton} );
16517
+ if (this.IndexHelp) aryButton.push({ ID:JSCHART_BUTTON_ID.INDEX_HELP, Style:this.IndexHelpButton} );
16443
16518
  }
16444
16519
 
16445
16520
  if (IFrameSplitOperator.IsNonEmptyArray(this.CustomToolbar))
@@ -18608,6 +18683,7 @@ function KLineFrame()
18608
18683
  this.TitleWindow=g_JSChartResource.KLineToolbar.TitleWindow;
18609
18684
  this.ExportData=g_JSChartResource.KLineToolbar.ExportData; //是否显示'导出数据'菜单
18610
18685
  this.AddIndexWindow=g_JSChartResource.KLineToolbar.AddIndexWindow; //是否显示'增加指标窗口'菜单
18686
+ this.IndexHelp=g_JSChartResource.KLineToolbar.IndexHelp;
18611
18687
 
18612
18688
  this.SelBorderColor=g_JSChartResource.SelFrameBorderColor;
18613
18689
 
@@ -18807,6 +18883,7 @@ function KLineFrame()
18807
18883
  if (this.ChangeIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.CHANGE_INDEX, Style:this.ChangeIndexButton });
18808
18884
  if (this.ModifyIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM, Style:this.ModifyIndexParamButton });
18809
18885
  if (this.AddIndexWindow) aryButton.push({ ID:JSCHART_BUTTON_ID.ADD_INDEX_WINDOW, Style:this.AddIndexWindowButton} );
18886
+ if (this.IndexHelp) aryButton.push({ ID:JSCHART_BUTTON_ID.INDEX_HELP, Style:this.IndexHelpButton} );
18810
18887
 
18811
18888
  if (IFrameSplitOperator.IsNonEmptyArray(this.CustomToolbar))
18812
18889
  {
@@ -47722,6 +47799,31 @@ function ChartLock()
47722
47799
  this.IndexID; //指标ID
47723
47800
  this.MinWidth=null; //最小宽度
47724
47801
 
47802
+
47803
+ this.CalculateTextSize=function(aryText, defaultFont, out)
47804
+ {
47805
+ if (!out || !IFrameSplitOperator.IsNonEmptyArray(aryText)) return false;
47806
+
47807
+ this.Canvas.font=defaultFont;
47808
+ var lineHeight=this.Canvas.measureText("擎").width; //行高
47809
+ var height=0, width=0;
47810
+ out.AryText=[];
47811
+ for(var i=0;i<aryText.length;++i)
47812
+ {
47813
+ var item=aryText[i];
47814
+ if (!item || !item.Text) continue;
47815
+ var textWidth=this.Canvas.measureText(item.Text).width;
47816
+ if (width<textWidth) width=textWidth;
47817
+ out.AryText.push({ Text:item.Text, Width:textWidth, Height:lineHeight, Color:item.Color });
47818
+ height+=lineHeight;
47819
+ }
47820
+
47821
+ out.Width=width;
47822
+ out.Height=height;
47823
+
47824
+ return true;
47825
+ }
47826
+
47725
47827
  this.Draw=function(isDraw)
47726
47828
  {
47727
47829
  this.LockRect=null;
@@ -47738,6 +47840,7 @@ function ChartLock()
47738
47840
  }
47739
47841
 
47740
47842
  var xOffset = this.ChartBorder.GetRight();
47843
+ var border=this.ChartBorder.GetBorder();
47741
47844
  var lOffsetWidth = 0;
47742
47845
  if (this.ChartFrame.Data != null)
47743
47846
  {
@@ -47764,7 +47867,6 @@ function ChartLock()
47764
47867
  var lLeft = xOffset - lOffsetWidth;
47765
47868
  if (lLeft < this.ChartBorder.GetLeft())
47766
47869
  lLeft = this.ChartBorder.GetLeft();
47767
- var lHeight = this.ChartBorder.GetBottom() - this.ChartBorder.GetTop();
47768
47870
  var lWidth = this.ChartBorder.GetRight() - lLeft;
47769
47871
 
47770
47872
  if (this.MinWidth>10 && lWidth<this.MinWidth)
@@ -47774,27 +47876,42 @@ function ChartLock()
47774
47876
  if (lLeft < this.ChartBorder.GetLeft()) lLeft = this.ChartBorder.GetLeft();
47775
47877
  }
47776
47878
 
47777
- if (isDraw)
47778
- {
47779
- var rtBG={ Left:lLeft, Top:this.ChartBorder.GetTop(), Width:lWidth, Height:lHeight };
47780
- rtBG.Right=rtBG.Width+rtBG.Left;
47781
- rtBG.Bottom=rtBG.Height+rtBG.Top;
47879
+ var rtBG={ Left:lLeft, Top:border.TopTitle, Bottom:border.Bottom, Width:lWidth };
47880
+ rtBG.Right=rtBG.Width+rtBG.Left;
47881
+ rtBG.Height=rtBG.Bottom-rtBG.Top;
47882
+ this.LockRect=rtBG; //保存上锁区域
47782
47883
 
47783
- //上下渐变
47784
- var bgColor=this.SetFillStyle(this.BGColor, rtBG.Left, rtBG.Top, rtBG.Left, rtBG.Bottom);
47785
- this.Canvas.fillStyle =bgColor;
47786
- this.Canvas.fillRect(rtBG.Left, rtBG.Top, rtBG.Width, rtBG.Height);
47884
+ if (!isDraw) return;
47885
+
47886
+ //上下渐变
47887
+ var bgColor=this.SetFillStyle(this.BGColor, rtBG.Left, rtBG.Top, rtBG.Left, rtBG.Bottom);
47888
+ this.Canvas.fillStyle =bgColor;
47889
+ this.Canvas.fillRect(rtBG.Left, rtBG.Top, rtBG.Width, rtBG.Height);
47787
47890
 
47788
- var xCenter = rtBG.Left + rtBG.Width / 2;
47789
- var yCenter = rtBG.Top + lHeight / 2;
47790
- this.Canvas.textAlign = 'center';
47791
- this.Canvas.textBaseline = 'middle';
47792
- this.Canvas.fillStyle = this.TextColor;
47793
- this.Canvas.font = this.Font;
47794
- this.Canvas.fillText(this.Title, xCenter, yCenter);
47795
- }
47891
+ var aryText=null;
47892
+ if (Array.isArray(this.Title)) aryText=this.Title;
47893
+ else aryText=[{Text:this.Title}];
47894
+
47895
+ var outSize={ };
47896
+ if (!this.CalculateTextSize(aryText, this.Font, outSize)) return;
47897
+
47898
+ var left=rtBG.Left+(rtBG.Width-outSize.Width)/2;
47899
+ if (outSize.Width>rtBG.Width) left=rtBG.Right-outSize.Width;
47900
+ var top=rtBG.Top+(rtBG.Height-outSize.Height)/2;
47796
47901
 
47797
- this.LockRect={Left:lLeft,Top:this.ChartBorder.GetTop(),Width:lWidth,Heigh:lHeight}; //保存上锁区域
47902
+ this.Canvas.textAlign='left';
47903
+ this.Canvas.textBaseline='bottom';
47904
+ this.Canvas.font = this.Font;
47905
+ var yText=top;
47906
+ for(var i=0;i<outSize.AryText.length;++i)
47907
+ {
47908
+ var item=outSize.AryText[i];
47909
+ if (item.Color) this.Canvas.fillStyle=item.Color;
47910
+ else this.Canvas.fillStyle=this.TextColor;
47911
+
47912
+ yText+=item.Height;
47913
+ this.Canvas.fillText(item.Text, left, yText);
47914
+ }
47798
47915
  }
47799
47916
 
47800
47917
  this.HScreenDraw=function(isDraw)
@@ -47855,7 +47972,7 @@ function ChartLock()
47855
47972
  if (this.LockRect==null) return false;
47856
47973
 
47857
47974
  this.Canvas.beginPath();
47858
- this.Canvas.rect(this.LockRect.Left,this.LockRect.Top,this.LockRect.Width,this.LockRect.Heigh);
47975
+ this.Canvas.rect(this.LockRect.Left,this.LockRect.Top,this.LockRect.Width,this.LockRect.Height);
47859
47976
  if (this.Canvas.isPointInPath(x,y))
47860
47977
  {
47861
47978
  tooltip.Data={ ID:this.LockID, Callback:this.Callback, IndexName:this.IndexName, IndexID:this.IndexID };
@@ -50232,6 +50349,20 @@ function StockChipPhone()
50232
50349
 
50233
50350
  this.CloseButtonConfig=CloneData(g_JSChartResource.StockChip.PhoneCloseButton);
50234
50351
 
50352
+ this.Super_SetOption=this.SetOption;
50353
+
50354
+ this.SetOption=function(option)
50355
+ {
50356
+ this.Super_SetOption(option);
50357
+
50358
+ if (!option) return;
50359
+
50360
+ if (option.PhoneCloseButton)
50361
+ {
50362
+ var item=option.PhoneCloseButton;
50363
+ if (IFrameSplitOperator.IsBool(item.IsShow)) this.CloseButtonConfig.IsShow=item.IsShow;
50364
+ }
50365
+ }
50235
50366
 
50236
50367
  this.Draw=function()
50237
50368
  {
@@ -50646,6 +50777,8 @@ function StockChipPhone()
50646
50777
  this.DrawCloseButton=function()
50647
50778
  {
50648
50779
  var config=this.CloseButtonConfig;
50780
+ if (!config.IsShow) return;
50781
+
50649
50782
  var font=`${config.Size}px ${config.Family}`;
50650
50783
  var rtButton=null;
50651
50784
  if (this.IsHScreen)
@@ -76785,6 +76918,7 @@ function JSChartResource()
76785
76918
  TitleWindow:true, //标题模式
76786
76919
  ExportData:false, //数据导出
76787
76920
  AddIndexWindow:false, //增加指标窗口
76921
+ IndexHelp:false, //指标帮助
76788
76922
 
76789
76923
  IsShowOverlayToolbar:true, //是否显示叠加坐标工具栏按钮
76790
76924
  IsShowOverlayFrame:true, //是否显示右侧叠加坐标
@@ -76801,6 +76935,7 @@ function JSChartResource()
76801
76935
  TitleWindow:true, //标题模式
76802
76936
  ExportData:false, //数据导出
76803
76937
  AddIndexWindow:false, //增加指标窗口
76938
+ IndexHelp:false, //指标帮助
76804
76939
  }
76805
76940
 
76806
76941
  this.TooltipBGColor="rgb(255, 255, 255)"; //背景色
@@ -77405,6 +77540,16 @@ function JSChartResource()
77405
77540
  MerginLeft:4
77406
77541
  },
77407
77542
 
77543
+ IndexHelp:
77544
+ {
77545
+ Color:"rgb(0,0,0)",
77546
+ MoveOnColor:'rgb(30,144,255)',
77547
+ Family:"iconfont",
77548
+ Text:"\ue6ca",
77549
+ Size:13*GetDevicePixelRatio(),
77550
+ MerginLeft:4
77551
+ },
77552
+
77408
77553
  Tooltip:
77409
77554
  {
77410
77555
  Font:13*GetDevicePixelRatio() +"px 微软雅黑",
@@ -77975,7 +78120,8 @@ function JSChartResource()
77975
78120
  Size:16*GetDevicePixelRatio(),
77976
78121
  Text:"\ue60c",
77977
78122
  Color:"rgb(255,255,255)",
77978
- Border:{ BGColor:"rgb(169,169,169)" }
78123
+ Border:{ BGColor:"rgb(169,169,169)" },
78124
+ IsShow:true,
77979
78125
  }
77980
78126
  }
77981
78127
 
@@ -79037,6 +79183,7 @@ function JSChartResource()
79037
79183
  if (subItem.Text) this.StockChip.PhoneCloseButton.Text=subItem.Text;
79038
79184
  if (subItem.Color) this.StockChip.PhoneCloseButton.Color=subItem.Color;
79039
79185
  if (IFrameSplitOperator.IsNumber(subItem.Size)) this.StockChip.PhoneCloseButton.Size=subItem.Size;
79186
+ if (IFrameSplitOperator.IsBool(subItem.IsShow)) this.StockChip.PhoneCloseButton.IsShow=subItem.IsShow;
79040
79187
  if (subItem.Border)
79041
79188
  {
79042
79189
  if (subItem.Border.BGColor) this.StockChip.PhoneCloseButton.Border.BGColor=subItem.Border.BGColor;
@@ -79307,6 +79454,8 @@ function JSChartResource()
79307
79454
  T_SetButtonStyle(buttons.TitleWindow, this.Buttons.TitleWindow);
79308
79455
  T_SetButtonStyle(buttons.ExportData, this.Buttons.ExportData);
79309
79456
  T_SetButtonStyle(buttons.AddIndexWindow, this.Buttons.AddIndexWindow);
79457
+ T_SetButtonStyle(buttons.IndexHelp, this.Buttons.IndexHelp);
79458
+
79310
79459
 
79311
79460
  if (buttons.Tooltip)
79312
79461
  {
@@ -80106,6 +80255,7 @@ function JSChartResource()
80106
80255
  if (IFrameSplitOperator.IsBool(style.TitleWindow)) dest.ModifyIndex=style.TitleWindow;
80107
80256
  if (IFrameSplitOperator.IsBool(style.ExportData)) dest.ModifyIndex=style.ExportData;
80108
80257
  if (IFrameSplitOperator.IsBool(style.AddIndexWindow)) dest.AddIndexWindow=style.AddIndexWindow;
80258
+ if (IFrameSplitOperator.IsBool(style.IndexHelp)) dest.IndexHelp=style.IndexHelp;
80109
80259
 
80110
80260
  if (IFrameSplitOperator.IsBool(style.IsShowOverlayToolbar)) dest.IsShowOverlayToolbar=style.IsShowOverlayToolbar;
80111
80261
  if (IFrameSplitOperator.IsBool(style.IsShowOverlayFrame)) dest.IsShowOverlayFrame=style.IsShowOverlayFrame;
@@ -80123,6 +80273,7 @@ function JSChartResource()
80123
80273
  if (IFrameSplitOperator.IsBool(style.TitleWindow)) dest.ModifyIndex=style.TitleWindow;
80124
80274
  if (IFrameSplitOperator.IsBool(style.ExportData)) dest.ModifyIndex=style.ExportData;
80125
80275
  if (IFrameSplitOperator.IsBool(style.AddIndexWindow)) dest.AddIndexWindow=style.AddIndexWindow;
80276
+ if (IFrameSplitOperator.IsBool(style.IndexHelp)) dest.IndexHelp=style.IndexHelp;
80126
80277
  }
80127
80278
 
80128
80279
 
@@ -80458,6 +80609,7 @@ function JSChartLocalization()
80458
80609
  ["Toolbar-"+JSCHART_BUTTON_ID.TITLE_WINDOW, {CN:"折叠窗口", EN:"Collapse window", TC:"折叠窗口"}],
80459
80610
  ["Toolbar-"+JSCHART_BUTTON_ID.EXPORT_DATA, {CN:"数据导出", EN:"Export data", TC:"数据导出"}],
80460
80611
  ["Toolbar-"+JSCHART_BUTTON_ID.ADD_INDEX_WINDOW, {CN:"增加指标窗口", EN:"Add index window", TC:"增加指标窗口"}],
80612
+ ["Toolbar-"+JSCHART_BUTTON_ID.INDEX_HELP, {CN:"指标帮助", EN:"Help", TC:"指标帮助"}],
80461
80613
 
80462
80614
  ["Toolbar-"+JSCHART_BUTTON_ID.CLOSE_BEFOREOPEN_ID, {CN:"关闭集合竞价", EN:"Close call auction", TC:"关闭集合竞价"}],
80463
80615
  ["Toolbar-"+JSCHART_BUTTON_ID.CLOSE_OVERLAY_INDEX, {CN:"关闭叠加指标", EN:"Delte overlay indicator", TC:"关闭叠加指标"}],
@@ -105349,6 +105501,7 @@ function JSDivFrameToolbar()
105349
105501
  if (item.ID==JSCHART_BUTTON_ID.CHANGE_INDEX && frame && frame.ChangeIndex===false) continue;
105350
105502
  if (item.ID==JSCHART_BUTTON_ID.OVERLAY_INDEX && frame && frame.OverlayIndex===false) continue;
105351
105503
  if (item.ID==JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW && frame && frame.CloseIndex===false) continue;
105504
+ if (item.ID==JSCHART_BUTTON_ID.INDEX_HELP && frame && frame.IndexHelp===false) continue;
105352
105505
 
105353
105506
  aryButton.push(item);
105354
105507
  }
@@ -105552,7 +105705,10 @@ JSDivFrameToolbar.GetDfaultButtons=function()
105552
105705
  {
105553
105706
  var aryButton=
105554
105707
  [
105555
-
105708
+ {
105709
+ ID:JSCHART_BUTTON_ID.INDEX_HELP, ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-help", Tooltip:{ Text:"帮助"},
105710
+ Span:null, Div:null, TooltipSpan:null
105711
+ },
105556
105712
  {
105557
105713
  ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM, ClassName:"UMyChart_FrameToolbar_Span_Button icon iconfont icon-index_param", Tooltip:{ Text:"修改参数"},
105558
105714
  Span:null, Div:null, TooltipSpan:null
@@ -1,8 +1,8 @@
1
1
  @font-face {
2
2
  font-family: "iconfont"; /* Project id 1040563 */
3
- src: url('iconfont.woff2?t=1747303594987') format('woff2'),
4
- url('iconfont.woff?t=1747303594987') format('woff'),
5
- url('iconfont.ttf?t=1747303594987') format('truetype');
3
+ src: url('iconfont.woff2?t=1755154065744') format('woff2'),
4
+ url('iconfont.woff?t=1755154065744') format('woff'),
5
+ url('iconfont.ttf?t=1755154065744') format('truetype');
6
6
  }
7
7
 
8
8
  .iconfont {
@@ -13,6 +13,10 @@
13
13
  -moz-osx-font-smoothing: grayscale;
14
14
  }
15
15
 
16
+ .icon-help:before {
17
+ content: "\e6ca";
18
+ }
19
+
16
20
  .icon-tubiaoBchuang:before {
17
21
  content: "\e6c9";
18
22
  }
@@ -401,6 +401,12 @@ function GetBlackStyle()
401
401
  Color:"rgb(156,156,156)"
402
402
  },
403
403
 
404
+ IndexHelp:
405
+ {
406
+ MoveOnColor:"rgb(255,255,255)",
407
+ Color:"rgb(156,156,156)"
408
+ },
409
+
404
410
  Tooltip:
405
411
  {
406
412
  //Font:12*GetDevicePixelRatio() +"px 微软雅黑",