hqchart 1.1.13278 → 1.1.13286

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.13278",
3
+ "version": "1.1.13286",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -105,6 +105,9 @@ function JSDialogDrawTool()
105
105
  Title:"文字",
106
106
  AryChart:
107
107
  [
108
+ { Title:"文字", ClassName: 'hqchart_drawtool icon-draw_text', Type:0, Data:{ ID:"文本" } },
109
+ { Title:"锚点文字", ClassName: 'hqchart_drawtool icon-maodianwenzi', Type:0, Data:{ ID:"AnchoredText" } },
110
+ { Title:"注释", ClassName: 'hqchart_drawtool icon-maodian ', Type:0, Data:{ ID:"Note"} },
108
111
  { Title: '价格标签', ClassName: 'hqchart_drawtool icon-Tooltip', Type:0, Data:{ ID:"PriceLabel" } },
109
112
  { Title: '价格注释', ClassName: 'hqchart_drawtool icon-tooltiptext', Type:0, Data:{ ID:"PriceNote" } },
110
113
  { Title: '向上箭头', ClassName: 'iconfont icon-arrow_up', Type:0, Data:{ ID:"icon-arrow_up" } },
@@ -18812,15 +18812,9 @@ function JSExplainer(ast,option)
18812
18812
 
18813
18813
  if (g_JSComplierResource.IsCustomFunction(funcName))
18814
18814
  {
18815
- var data=this.Algorithm.CallCustomFunction(funcName, args, this.SymbolData, node);
18816
- node.Out=[];
18817
- node.Draw=null;
18818
-
18819
- if (data)
18820
- {
18821
- if (data.Out) node.Out=data.Out;
18822
- if (data.Draw) node.Draw=data.Draw;
18823
- }
18815
+ var functionInfo=g_JSComplierResource.CustomFunction.Data.get(funcName);
18816
+ if (!functionInfo.Description) node.Out=`自定义函数${funcName}`;
18817
+ else node.Out=functionInfo.Description;
18824
18818
 
18825
18819
  return node.Out;
18826
18820
  }
@@ -19439,7 +19433,12 @@ function JSExplainer(ast,option)
19439
19433
  return data;
19440
19434
  }
19441
19435
 
19442
- if (g_JSComplierResource.IsCustomVariant(name)) return this.ReadCustomVariant(name,node); //读取自定义变量
19436
+ if (g_JSComplierResource.IsCustomVariant(name))
19437
+ {
19438
+ var variantInfo=g_JSComplierResource.CustomVariant.Data.get(name); //读取自定义变量
19439
+ if (variantInfo.Description) return variantInfo.Description;
19440
+ else return name;
19441
+ }
19443
19442
 
19444
19443
  if (this.VarTable.has(name)) return this.VarTable.get(name);
19445
19444
 
@@ -2523,6 +2523,8 @@ var JSCHART_EVENT_ID=
2523
2523
  ON_CHANGE_INDEX:150, //切换指标
2524
2524
  ON_MENU_COMMAND:151, //菜单时间回调
2525
2525
  ON_CREATE_RIGHT_MENU:152, //创建右键菜单
2526
+
2527
+ ON_FORMAT_CALL_AUCTION_INDEX_TITLE:153, //集合竞价指标窗口标题内容
2526
2528
  }
2527
2529
 
2528
2530
  var JSCHART_OPERATOR_ID=
@@ -5718,14 +5720,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
5718
5720
  }
5719
5721
  item.DrawStatus=drawStatus;
5720
5722
 
5721
- if (item.ClassName=="DynamicMinuteTitlePainting")
5722
- {
5723
- if (option && IFrameSplitOperator.IsNumber(option.ClientPos) && option.Point)
5724
- item.PointInfo={ ClientPos:option.ClientPos, Point:{ X:option.Point.X, Y:option.Point.Y }};
5725
- else
5726
- item.PointInfo=null;
5727
- }
5728
-
5723
+ var pointInfo=null;
5724
+ if (option && IFrameSplitOperator.IsNumber(option.ClientPos) && option.Point) //当前鼠标所在位置的详细信息 包含盘前盘后
5725
+ pointInfo={ ClientPos:option.ClientPos, Point:{ X:option.Point.X, Y:option.Point.Y }};
5726
+ item.PointInfo=pointInfo;
5727
+
5729
5728
  item.Draw(moveonPoint, this.LastMouseStatus);
5730
5729
  }
5731
5730
 
@@ -6485,9 +6484,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6485
6484
  for(var i=0;i<border.DayBorder.length;++i)
6486
6485
  {
6487
6486
  var client=border.DayBorder[i];
6488
- this.Canvas.beginPath();
6489
- this.Canvas.rect(client.LeftEx,border.TopEx,client.RightEx-client.LeftEx,border.BottomEx-border.TopEx);
6490
- if (this.Canvas.isPointInPath(x,y)) return 1;
6491
6487
 
6492
6488
  //盘前
6493
6489
  this.Canvas.beginPath();
@@ -6495,6 +6491,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6495
6491
  if (this.Canvas.isPointInPath(x,y))
6496
6492
  return 200+parseInt(i);
6497
6493
 
6494
+ //盘中
6495
+ this.Canvas.beginPath();
6496
+ this.Canvas.rect(client.LeftEx,border.TopEx,client.RightEx-client.LeftEx,border.BottomEx-border.TopEx);
6497
+ if (this.Canvas.isPointInPath(x,y)) return 1;
6498
+
6498
6499
  //盘后
6499
6500
  this.Canvas.beginPath();
6500
6501
  this.Canvas.rect(client.RightEx,border.TopEx,client.Right-client.RightEx,border.BottomEx-border.TopEx);
@@ -9774,6 +9775,8 @@ function ChartBorder()
9774
9775
  var item={ Left:this.Left+dayWidth*i, Right:this.Left+dayWidth*(i+1) };
9775
9776
  item.LeftEx=item.Left+this.MultiDayMinute.Left;
9776
9777
  item.RightEx=item.Right-this.MultiDayMinute.Right;
9778
+ if (i>0) item.Left+=1; //第2天的盘前 移到一个像素,跟上一天分开
9779
+
9777
9780
  dayBorder.push(item);
9778
9781
  }
9779
9782
 
@@ -10443,6 +10446,26 @@ function IChartFramePainting()
10443
10446
  {
10444
10447
 
10445
10448
  }
10449
+
10450
+ //bIncludeOverlay =false不包含叠加框架 true=主框架+叠加框架 默认true
10451
+ this.IsMinuteFrame=function(bIncludeOverlay)
10452
+ {
10453
+ var aryName=["MinuteFrame", "MinuteHScreenFrame", "OverlayMinuteFrame", "OverlayMinuteHScreenFrame"];
10454
+ if (bIncludeOverlay===false) aryName=["MinuteFrame", "MinuteHScreenFrame"];
10455
+
10456
+ var isMinute=aryName.includes(this.ClassName);
10457
+ return isMinute;
10458
+ }
10459
+
10460
+ //bIncludeOverlay =false不包含叠加框架 true=主框架+叠加框架 默认true
10461
+ this.IsKLineFrame=function(bIncludeOverlay)
10462
+ {
10463
+ var aryName=["KLineFrame", "KLineHScreenFrame", "KLineHScreenFrame", "OverlayKLineHScreenFrame"];
10464
+ if (bIncludeOverlay===false) aryName=["KLineFrame", "KLineHScreenFrame"];
10465
+
10466
+ var isKline=aryName.includes(this.ClassName);
10467
+ return isKline;
10468
+ }
10446
10469
  }
10447
10470
 
10448
10471
  //空框架只画边框
@@ -18914,18 +18937,31 @@ function HQTradeFrame()
18914
18937
  }
18915
18938
 
18916
18939
  //清空Y轴坐标的最大最小值
18917
- this.ClearYCoordinateMaxMin=function()
18940
+ this.ClearYCoordinateMaxMin=function(windowIndex)
18918
18941
  {
18919
- for(var i=0;i<this.SubFrame.length;++i)
18942
+ if (IFrameSplitOperator.IsNumber(windowIndex))
18920
18943
  {
18921
- var subItem=this.SubFrame[i];
18922
- var frame=subItem.Frame;
18944
+ var subItem=this.SubFrame[windowIndex];
18945
+ if (!subItem || !subItem.Frame) return;
18923
18946
  if (frame.YMaxMin)
18924
18947
  {
18925
18948
  frame.YMaxMin.Max=null;
18926
18949
  frame.YMaxMin.Min=null;
18927
18950
  }
18928
18951
  }
18952
+ else
18953
+ {
18954
+ for(var i=0;i<this.SubFrame.length;++i)
18955
+ {
18956
+ var subItem=this.SubFrame[i];
18957
+ var frame=subItem.Frame;
18958
+ if (frame.YMaxMin)
18959
+ {
18960
+ frame.YMaxMin.Max=null;
18961
+ frame.YMaxMin.Min=null;
18962
+ }
18963
+ }
18964
+ }
18929
18965
  }
18930
18966
 
18931
18967
  this.SetLanguage=function(languageID)
@@ -52520,6 +52556,7 @@ function DynamicChartTitlePainting()
52520
52556
  this.SelectedColor=g_JSChartResource.IndexTitleSelectedColor;
52521
52557
 
52522
52558
  this.IsKLineFrame=false; //是否是K线框架标题
52559
+ this.IsMinuteFrame=false;
52523
52560
  this.Identify; //指标ID
52524
52561
  this.SelectedChart; //选中的图形
52525
52562
  this.ArgumentsText; //参数信息
@@ -52542,6 +52579,7 @@ function DynamicChartTitlePainting()
52542
52579
  this.OverlayDynamicTitle=new Map(); //key , value={ OutName, OutValue }
52543
52580
 
52544
52581
  this.IsShowMainIndexTitle=true; //是否显示主图指标标题
52582
+ this.MainTitlePaint=null; //主标题
52545
52583
 
52546
52584
  this.ReloadResource=function()
52547
52585
  {
@@ -52956,7 +52994,8 @@ function DynamicChartTitlePainting()
52956
52994
  this.Buttons=[];
52957
52995
  if (this.Frame.IsMinSize) return;
52958
52996
 
52959
- this.IsKLineFrame= this.Frame.ClassName=='KLineFrame' || this.Frame.ClassName=='KLineHScreenFrame';
52997
+ this.IsKLineFrame= this.Frame.IsKLineFrame(false);
52998
+ this.IsMinuteFrame=this.Frame.IsMinuteFrame(false);
52960
52999
  this.IsDrawTitleBG=this.Frame.IsDrawTitleBG;
52961
53000
  this.IsShowNameArrow=this.Frame.IsShowNameArrow;
52962
53001
  this.IsShowUpDownArrow=this.Frame.IsShowTitleArrow;
@@ -53055,108 +53094,19 @@ function DynamicChartTitlePainting()
53055
53094
  if (isShowLastData) return;
53056
53095
  }
53057
53096
 
53058
- for(var i=0; i<this.Data.length && this.IsShowMainIndexTitle; ++i)
53097
+ var rtText={ Left:left, Right:left };
53098
+ if (this.IsMinuteFrame && this.PointInfo && ( this.PointInfo.ClientPos==2 || this.PointInfo.ClientPos==3 || (this.PointInfo.ClientPos>=200&& this.PointInfo.ClientPos<=299) || (this.PointInfo.ClientPos>=300&& this.PointInfo.ClientPos<=399) ))
53059
53099
  {
53060
- var item=this.Data[i];
53061
- var outText=this.GetTitleItem(item, isShowLastData, i);
53062
- if (!outText) continue;
53063
-
53064
- var valueText=outText.Text;
53065
- var aryText=outText.ArrayText;
53066
-
53067
- if (aryText) //多变量输出
53068
- {
53069
- var text;
53070
- for(var k=0;k<aryText.length;++k)
53071
- {
53072
- var titleItem=aryText[k];
53073
- if (titleItem.Name) text=titleItem.Name+":"+titleItem.Text;
53074
- else text=titleItem.Text;
53075
-
53076
- var space=this.ParamSpace*GetDevicePixelRatio();
53077
- var indexTextWidth=this.Canvas.measureText(text).width; //标题+数值长度
53078
- var textWidth=indexTextWidth;
53079
-
53080
- if (IFrameSplitOperator.IsNonEmptyArray(titleItem.TextEx))
53081
- {
53082
- var xLeft=left;
53083
- for(var n=0; n<titleItem.TextEx.length; ++n)
53084
- {
53085
- var outItem=titleItem.TextEx[n];
53086
- var outTextWidth=this.Canvas.measureText(outItem.Text).width+2;
53087
- outItem.Width=outTextWidth;
53088
- outItem.Left=xLeft;
53089
-
53090
- textWidth+=outTextWidth;
53091
- xLeft+=outTextWidth;
53092
- }
53093
- }
53094
-
53095
- if ((left+textWidth+space)>right) break;
53096
-
53097
- if (titleItem.BG) //背景
53098
- {
53099
- var textHeight=this.Canvas.measureText("擎").width+2;
53100
- var rtBG={ Left:left, Top:bottom-textHeight/2, Width:textWidth, Height:textHeight };
53101
- this.Canvas.fillStyle=titleItem.BG;
53102
- this.Canvas.fillRect(rtBG.Left,rtBG.Top-1, rtBG.Width, rtBG.Height);
53103
-
53104
- this.Canvas.fillStyle=titleItem.Color;
53105
- this.Canvas.fillText(text,rtBG.Left+1,bottom,indexTextWidth);
53106
- left+=indexTextWidth;
53107
-
53108
- if (IFrameSplitOperator.IsNonEmptyArray(titleItem.TextEx))
53109
- {
53110
- for(var n=0; n<titleItem.TextEx.length; ++n)
53111
- {
53112
- var outItem=titleItem.TextEx[n];
53113
- this.Canvas.fillStyle=outItem.TextColor;
53114
- this.Canvas.fillText(outItem.Text,left,bottom,outItem.Width);
53115
- left+=outItem.Width;
53116
- }
53117
- }
53118
-
53119
- left+=space;
53120
- }
53121
- else
53122
- {
53123
- this.Canvas.fillStyle=titleItem.Color;
53124
- this.Canvas.fillText(text,left,bottom,indexTextWidth);
53125
- left+=indexTextWidth;
53126
-
53127
- if (IFrameSplitOperator.IsNonEmptyArray(titleItem.TextEx))
53128
- {
53129
- for(var n=0; n<titleItem.TextEx.length; ++n)
53130
- {
53131
- var outItem=titleItem.TextEx[n];
53132
- this.Canvas.fillStyle=outItem.TextColor;
53133
- this.Canvas.fillText(outItem.Text,left,bottom,outItem.Width);
53134
- left+=outItem.Width;
53135
- }
53136
- }
53137
-
53138
- left+=space;
53139
- }
53140
- }
53141
- }
53142
- else
53143
- {
53144
- this.Canvas.fillStyle=item.Color;
53145
- var text=valueText;
53146
- if (item.Name)
53147
- {
53148
- var dyTitle=this.GetDynamicOutName(item.Name);
53149
- if (dyTitle) text=dyTitle+":"+valueText;
53150
- else text=item.Name+":"+valueText;
53151
- }
53152
- var space=this.ParamSpace*GetDevicePixelRatio();
53153
- var textWidth=this.Canvas.measureText(text).width+space;
53154
- if ((left+textWidth)>right) break;
53155
-
53156
- this.Canvas.fillText(text,left,bottom,textWidth);
53157
- left+=textWidth;
53158
- }
53100
+ var result={ PreventDefault:false }
53101
+ this.DrawMainCallAuction({ Left:left, Right:right, Bottom:bottom }, rtText, result);
53102
+ if (result.PreventDefault===false) this.DrawMainIndexTitle({ Left:left, Right:right, Bottom:bottom }, isShowLastData, rtText);
53159
53103
  }
53104
+ else
53105
+ {
53106
+ this.DrawMainIndexTitle({ Left:left, Right:right, Bottom:bottom }, isShowLastData, rtText);
53107
+ }
53108
+
53109
+ left=rtText.Left;
53160
53110
 
53161
53111
  if (this.Explain) //说明信息
53162
53112
  {
@@ -53360,6 +53310,185 @@ function DynamicChartTitlePainting()
53360
53310
  return { Text:valueText, ArrayText:aryText };
53361
53311
  }
53362
53312
 
53313
+ //绘制主图指标 rtText 返回画完以后的区域
53314
+ this.DrawMainIndexTitle=function(positionInfo, isShowLastData, rtText)
53315
+ {
53316
+ if (!this.IsShowMainIndexTitle) return;
53317
+
53318
+ var left=positionInfo.Left;
53319
+ var right=positionInfo.Right;
53320
+ var bottom=positionInfo.Bottom;
53321
+
53322
+ for(var i=0; i<this.Data.length; ++i)
53323
+ {
53324
+ var item=this.Data[i];
53325
+ var outText=this.GetTitleItem(item, isShowLastData, i);
53326
+ if (!outText) continue;
53327
+
53328
+ var valueText=outText.Text;
53329
+ var aryText=outText.ArrayText;
53330
+
53331
+ if (aryText) //多变量输出
53332
+ {
53333
+ var text;
53334
+ for(var k=0;k<aryText.length;++k)
53335
+ {
53336
+ var titleItem=aryText[k];
53337
+ if (titleItem.Name) text=titleItem.Name+":"+titleItem.Text;
53338
+ else text=titleItem.Text;
53339
+
53340
+ var space=this.ParamSpace*GetDevicePixelRatio();
53341
+ var indexTextWidth=this.Canvas.measureText(text).width; //标题+数值长度
53342
+ var textWidth=indexTextWidth;
53343
+
53344
+ if (IFrameSplitOperator.IsNonEmptyArray(titleItem.TextEx))
53345
+ {
53346
+ var xLeft=left;
53347
+ for(var n=0; n<titleItem.TextEx.length; ++n)
53348
+ {
53349
+ var outItem=titleItem.TextEx[n];
53350
+ var outTextWidth=this.Canvas.measureText(outItem.Text).width+2;
53351
+ outItem.Width=outTextWidth;
53352
+ outItem.Left=xLeft;
53353
+
53354
+ textWidth+=outTextWidth;
53355
+ xLeft+=outTextWidth;
53356
+ }
53357
+ }
53358
+
53359
+ if ((left+textWidth+space)>right) break;
53360
+
53361
+ if (titleItem.BG) //背景
53362
+ {
53363
+ var textHeight=this.Canvas.measureText("擎").width+2;
53364
+ var rtBG={ Left:left, Top:bottom-textHeight/2, Width:textWidth, Height:textHeight };
53365
+ this.Canvas.fillStyle=titleItem.BG;
53366
+ this.Canvas.fillRect(rtBG.Left,rtBG.Top-1, rtBG.Width, rtBG.Height);
53367
+
53368
+ this.Canvas.fillStyle=titleItem.Color;
53369
+ this.Canvas.fillText(text,rtBG.Left+1,bottom,indexTextWidth);
53370
+ left+=indexTextWidth;
53371
+
53372
+ if (IFrameSplitOperator.IsNonEmptyArray(titleItem.TextEx))
53373
+ {
53374
+ for(var n=0; n<titleItem.TextEx.length; ++n)
53375
+ {
53376
+ var outItem=titleItem.TextEx[n];
53377
+ this.Canvas.fillStyle=outItem.TextColor;
53378
+ this.Canvas.fillText(outItem.Text,left,bottom,outItem.Width);
53379
+ left+=outItem.Width;
53380
+ }
53381
+ }
53382
+
53383
+ left+=space;
53384
+ }
53385
+ else
53386
+ {
53387
+ this.Canvas.fillStyle=titleItem.Color;
53388
+ this.Canvas.fillText(text,left,bottom,indexTextWidth);
53389
+ left+=indexTextWidth;
53390
+
53391
+ if (IFrameSplitOperator.IsNonEmptyArray(titleItem.TextEx))
53392
+ {
53393
+ for(var n=0; n<titleItem.TextEx.length; ++n)
53394
+ {
53395
+ var outItem=titleItem.TextEx[n];
53396
+ this.Canvas.fillStyle=outItem.TextColor;
53397
+ this.Canvas.fillText(outItem.Text,left,bottom,outItem.Width);
53398
+ left+=outItem.Width;
53399
+ }
53400
+ }
53401
+
53402
+ left+=space;
53403
+ }
53404
+ }
53405
+ }
53406
+ else
53407
+ {
53408
+ this.Canvas.fillStyle=item.Color;
53409
+ var text=valueText;
53410
+ if (item.Name)
53411
+ {
53412
+ var dyTitle=this.GetDynamicOutName(item.Name);
53413
+ if (dyTitle) text=dyTitle+":"+valueText;
53414
+ else text=item.Name+":"+valueText;
53415
+ }
53416
+ var space=this.ParamSpace*GetDevicePixelRatio();
53417
+ var textWidth=this.Canvas.measureText(text).width+space;
53418
+ if ((left+textWidth)>right) break;
53419
+
53420
+ this.Canvas.fillText(text,left,bottom,textWidth);
53421
+ left+=textWidth;
53422
+ }
53423
+ }
53424
+
53425
+ rtText.Left=left;
53426
+ }
53427
+
53428
+ //集合竞价
53429
+ this.DrawMainCallAuction=function(positionInfo, rtText, result)
53430
+ {
53431
+ if (!this.IsShowMainIndexTitle) return;
53432
+ if (!this.MainTitlePaint) return;
53433
+ var auctionData=this.MainTitlePaint.GetCurrentAuctionData(); //集合竞价分时数据
53434
+ if (!auctionData || !auctionData.Data) return;
53435
+ if (!this.GetEventCallback) return;
53436
+
53437
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_CALL_AUCTION_INDEX_TITLE);
53438
+ if (!event) return;
53439
+
53440
+ var data={ AuctionData:auctionData, Data:this.Data, FrameID:this.Frame.Identify, Out:null, PreventDefault:false };
53441
+ event.Callback(event,data,this);
53442
+ result.PreventDefault=data.PreventDefault;
53443
+
53444
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.Out)) return;
53445
+
53446
+ var left=positionInfo.Left;
53447
+ var right=positionInfo.Right;
53448
+ var bottom=positionInfo.Bottom;
53449
+ var pixelRatio=GetDevicePixelRatio();
53450
+
53451
+ var aryText=data.Out; //[{Text:, Color, Space:间距 }]
53452
+ for(var i=0; i<aryText.length; ++i)
53453
+ {
53454
+ var item=aryText[i];
53455
+ if (!item.Text) continue;
53456
+ var textWidth=this.Canvas.measureText(item.Text).width+2;
53457
+ if (left+textWidth>right) break;
53458
+
53459
+ if (item.BGColor) //背景
53460
+ {
53461
+ var textHeight=this.Canvas.measureText("擎").width+2;
53462
+ var rtBG={ Left:left, Top:bottom-textHeight/2, Width:textWidth, Height:textHeight };
53463
+ this.Canvas.fillStyle=item.BGColor;
53464
+ this.Canvas.fillRect(rtBG.Left,rtBG.Top-1, rtBG.Width, rtBG.Height);
53465
+ left+=1;
53466
+ }
53467
+
53468
+ this.Canvas.fillStyle=item.Color;
53469
+ this.Canvas.fillText(item.Text,left,bottom,textWidth);
53470
+ left+=textWidth;
53471
+
53472
+ if (IFrameSplitOperator.IsPlusNumber(item.Space)) left+=item.Space*pixelRatio;
53473
+ }
53474
+
53475
+ rtText.Left=left;
53476
+ }
53477
+
53478
+ this.GetCallAuctionTitleItem=function(item, titleIndex, auctionData)
53479
+ {
53480
+ if (item.IsShow===false) return null;
53481
+ if (item.IsVisible===false) return null;
53482
+ if (!item || !item.Data || !item.Data.Data) return null;
53483
+
53484
+ if (g_ScriptIndexChartFactory.Has(item.DataType)) //外部挂接
53485
+ {
53486
+ var find=g_ScriptIndexChartFactory.Get(item.DataType);
53487
+ if (find && find.FormatTitleCallback)
53488
+ return find.FormatTitleCallback(value, item, dataIndex);
53489
+ }
53490
+ }
53491
+
53363
53492
  //获取上一个有效数据
53364
53493
  this.GetPreVaildItem=function(data, start)
53365
53494
  {
@@ -68678,8 +68807,10 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68678
68807
  }
68679
68808
 
68680
68809
  //绑定主图K线数据
68681
- this.BindMainData=function(hisData,showCount)
68810
+ this.BindMainData=function(hisData, showCount, chartOperator)
68682
68811
  {
68812
+ var isShowAll=false; //全部显示
68813
+ if (chartOperator && chartOperator.IsShowAll===true) isShowAll=true;
68683
68814
  this.ChartPaint[0].Data=hisData;
68684
68815
  this.ChartPaint[0].Symbol=this.Symbol;
68685
68816
 
@@ -68700,9 +68831,10 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68700
68831
  for(var i=0;i<this.Frame.SubFrame.length;++i)
68701
68832
  {
68702
68833
  var item =this.Frame.SubFrame[i].Frame;
68703
- item.XPointCount=showCount+this.RightSpaceCount;
68704
- item.Data=this.ChartPaint[0].Data;
68834
+ if (isShowAll) item.XPointCount=hisData.Data.length+this.RightSpaceCount;
68835
+ else item.XPointCount=showCount+this.RightSpaceCount;
68705
68836
 
68837
+ item.Data=this.ChartPaint[0].Data;
68706
68838
  item.XSplitOperator.Symbol=this.Symbol;
68707
68839
  item.XSplitOperator.Period=this.Period;
68708
68840
  }
@@ -68721,17 +68853,25 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68721
68853
  item.MainData=this.ChartPaint[0].Data;
68722
68854
  }
68723
68855
 
68724
- var dataOffset=hisData.Data.length-showCount;
68725
- if (dataOffset<0) dataOffset=0;
68726
- this.ChartPaint[0].Data.DataOffset=dataOffset;
68727
- this.ChartPaint[0].Period=this.Period;
68856
+ if (isShowAll)
68857
+ {
68858
+ var dataOffset=0;
68859
+ this.CursorIndex=0;
68860
+ }
68861
+ else
68862
+ {
68863
+ var dataOffset=hisData.Data.length-showCount;
68864
+ if (dataOffset<0) dataOffset=0;
68865
+ this.ChartPaint[0].Data.DataOffset=dataOffset;
68866
+
68867
+ this.CursorIndex=showCount;
68868
+ if (this.CursorIndex+dataOffset>=hisData.Data.length) this.CursorIndex=hisData.Data.length-1-dataOffset;
68869
+ if (this.CursorIndex<0) this.CursorIndex=0; //不一定对啊
68870
+ }
68728
68871
 
68872
+ this.ChartPaint[0].Period=this.Period;
68729
68873
  this.ChartCorssCursor.StringFormatY.Symbol=this.Symbol;
68730
68874
 
68731
- this.CursorIndex=showCount;
68732
- if (this.CursorIndex+dataOffset>=hisData.Data.length) this.CursorIndex=hisData.Data.length-1-dataOffset;
68733
- if (this.CursorIndex<0) this.CursorIndex=0; //不一定对啊
68734
-
68735
68875
  if (this.CustomShow) //定制显示 1次有效
68736
68876
  {
68737
68877
  this.SetCustomShow(this.CustomShow,hisData);
@@ -69600,8 +69740,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
69600
69740
  //绑定数据
69601
69741
  this.Symbol=data.symbol;
69602
69742
  this.Name=data.name;
69743
+
69744
+ var chartOperator=null; //额外的图形控制
69745
+ if (data && data.ChartOperator)
69746
+ {
69747
+ var item=data.ChartOperator;
69748
+ chartOperator={ };
69749
+ if (item.IsShowAll===true) chartOperator.IsShowAll=true; //全部显示
69750
+ }
69603
69751
 
69604
- this.BindMainData(bindData,this.PageSize);
69752
+ this.BindMainData(bindData,this.PageSize,chartOperator);
69605
69753
  if (this.AfterBindMainData) this.AfterBindMainData("RecvMinuteHistoryData");
69606
69754
  this.Frame.SetSizeChage(true);
69607
69755
 
@@ -76860,6 +77008,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
76860
77008
  titlePaint.LanguageID=this.LanguageID;
76861
77009
  titlePaint.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
76862
77010
  titlePaint.SelectedChart=this.SelectedChart;
77011
+ titlePaint.MainTitlePaint=this.TitlePaint[0];
76863
77012
  this.TitlePaint.push(titlePaint);
76864
77013
  }
76865
77014
 
@@ -77071,7 +77220,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
77071
77220
  titlePaint.Frame=this.Frame.SubFrame[index].Frame;
77072
77221
  titlePaint.Canvas=this.Canvas;
77073
77222
  titlePaint.LanguageID=this.LanguageID;
77074
- titlePaint.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
77223
+ titlePaint.GetEventCallback=(id)=> { return this.GetEventCallback(id); };
77224
+ titlePaint.MainTitlePaint=this.TitlePaint[0];
77075
77225
  this.TitlePaint[index+1]=titlePaint;
77076
77226
 
77077
77227
  this.SetSubFrameOption(subFrame,option);
@@ -77308,6 +77458,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
77308
77458
  titlePaint.LanguageID=this.LanguageID;
77309
77459
  titlePaint.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
77310
77460
  titlePaint.SelectedChart=this.SelectedChart;
77461
+ titlePaint.MainTitlePaint=this.TitlePaint[0];
77311
77462
  this.TitlePaint[i+1]=titlePaint;
77312
77463
  }
77313
77464
 
@@ -77394,6 +77545,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
77394
77545
  titlePaint.LanguageID=this.LanguageID;
77395
77546
  titlePaint.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
77396
77547
  titlePaint.SelectedChart=this.SelectedChart;
77548
+ titlePaint.MainTitlePaint=this.TitlePaint[0];
77397
77549
  this.TitlePaint[i+1]=titlePaint;
77398
77550
  }
77399
77551
  }
@@ -78047,7 +78199,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78047
78199
  }
78048
78200
  }
78049
78201
 
78050
- if (optionChanged) this.RequestData();
78202
+ if (optionChanged)
78203
+ {
78204
+ this.Frame.ClearYCoordinateMaxMin();
78205
+ this.RequestData();
78206
+ }
78051
78207
  }
78052
78208
 
78053
78209
  this.RequestData=function()