hqchart 1.1.12733 → 1.1.12741

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.
@@ -0,0 +1,150 @@
1
+ /////////////////////////////////////////////////////////////////////
2
+ // 模拟测试数据
3
+ //
4
+ //
5
+ /////////////////////////////////////////////////////////////////////
6
+
7
+
8
+ function HQData() { }
9
+
10
+ HQData.Explain="本地测试数据";
11
+
12
+ HQData.NetworkFilter=function(data, callback)
13
+ {
14
+ console.log(`[HQData::NetworkFilter] ${HQData.Explain}`, data);
15
+
16
+ switch(data.Name)
17
+ {
18
+ case 'MinuteChartContainer::RequestMinuteData': //分时图数据对接
19
+ HQData.RequestMinuteData(data, callback);
20
+ break;
21
+ case "MinuteChartContainer::RequestHistoryMinuteData": //多日分时图
22
+ HQData.RequestMinuteDaysData(data, callback);
23
+ break;
24
+
25
+ case 'KLineChartContainer::RequestHistoryData': //日线全量数据下载
26
+ HQData.RequestHistoryData(data,callback);
27
+ break;
28
+ case 'KLineChartContainer::RequestRealtimeData': //日线实时数据更新
29
+ HQData.RequestRealtimeData(data,callback);
30
+ break;
31
+ case 'KLineChartContainer::RequestFlowCapitalData': //流通股本
32
+ HQData.RequestFlowCapitalData(data,callback);
33
+ break;
34
+
35
+ case 'KLineChartContainer::ReqeustHistoryMinuteData': //分钟全量数据下载
36
+ HQData.RequestHistoryMinuteData(data, callback);
37
+ break;
38
+ case 'KLineChartContainer::RequestMinuteRealtimeData': //分钟增量数据更新
39
+ HQData.RequestMinuteRealtimeData(data,callback);
40
+ break;
41
+ }
42
+ }
43
+
44
+ HQData.RequestMinuteData=function(data, callback)
45
+ {
46
+ data.PreventDefault=true;
47
+ var symbol=data.Request.Data.symbol[0]; //请求的股票代码
48
+ var dayCount=data.Request.Data.daycount;
49
+ console.log(`[HQData::RequestMinuteData] Symbol=${symbol}`);
50
+
51
+ var hqchartData=MINUTE_1DAY_DATA;
52
+ hqchartData.stock[0].symbol=symbol;
53
+ hqchartData.stock[0].name=symbol;
54
+
55
+ callback(hqchartData);
56
+ }
57
+
58
+ HQData.RequestMinuteDaysData=function(data, callback)
59
+ {
60
+ data.PreventDefault=true;
61
+ var symbol=data.Request.Data.symbol; //请求的股票代码
62
+ var dayCount=data.Request.Data.daycount;
63
+
64
+ console.log(`[HQData::RequestMinuteDaysData] Symbol=${symbol}`);
65
+
66
+ var hqchartData=MINUTE_5DAY_DATA;
67
+ hqchartData.symbol=symbol;
68
+ hqchartData.name=symbol;
69
+
70
+ callback(hqchartData);
71
+ }
72
+
73
+ HQData.RequestHistoryData=function(data,callback)
74
+ {
75
+ data.PreventDefault=true;
76
+ var symbol=data.Request.Data.symbol; //请求的股票代码
77
+
78
+ console.log(`[HQData::RequestMinuteDaysData] Symbol=${symbol}`);
79
+
80
+ var hqchartData=KLINE_DAY_DATA;
81
+ hqchartData.symbol=symbol;
82
+ hqchartData.name=symbol;
83
+
84
+ callback(hqchartData);
85
+ }
86
+
87
+ HQData.RequestFlowCapitalData=function(data,callback)
88
+ {
89
+ data.PreventDefault=true;
90
+ var symbol=data.Request.Data.symbol; //请求的股票代码
91
+
92
+ console.log(`[HQData::RequestFlowCapitalData] Symbol=${symbol}`);
93
+
94
+ var hqchartData=KLINE_CAPITAL_DATA;
95
+ callback(hqchartData);
96
+ }
97
+
98
+ HQData.RequestRealtimeData=function(data,callback)
99
+ {
100
+ data.PreventDefault=true;
101
+ var symbol=data.Request.Data.symbol[0]; //请求的股票代码
102
+
103
+ console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`);
104
+
105
+ var hqchartData=KLINE_1DAY_DATA;
106
+ hqchartData.stock[0].name=symbol;
107
+ hqchartData.stock[0].symbol=symbol;
108
+ callback(hqchartData);
109
+ }
110
+
111
+
112
+ HQData.RequestHistoryMinuteData=function(data, callback)
113
+ {
114
+ data.PreventDefault=true;
115
+ var symbol=data.Request.Data.symbol; //请求的股票代码
116
+
117
+ console.log(`[HQData::RequestHistoryMinuteData] Symbol=${symbol}`);
118
+
119
+ var hqchartData=KLINE_MINUTE_DATA;
120
+ hqchartData.name=symbol;
121
+ hqchartData.symbol=symbol;
122
+ callback(hqchartData);
123
+
124
+ }
125
+
126
+
127
+ HQData.RequestMinuteRealtimeData=function(data,callback)
128
+ {
129
+ data.PreventDefault=true;
130
+ var symbol=data.Request.Data.symbol[0]; //请求的股票代码
131
+
132
+ console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`);
133
+
134
+ var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
135
+
136
+ var kItem=hqchartData.data[0];
137
+ var price=kItem[5];
138
+ var value=Math.ceil(Math.random()*10)/1000*price;
139
+ var bUp=Math.ceil(Math.random()*10)>=5;
140
+
141
+ if (bUp) price+=value;
142
+ else price-=value;
143
+ kItem[5]=price;
144
+ kItem[3]=Math.max(price, kItem[3]);
145
+ kItem[4]=Math.min(price, kItem[4]);
146
+
147
+ hqchartData.name=symbol;
148
+ hqchartData.symbol=symbol;
149
+ callback(hqchartData);
150
+ }
@@ -4439,6 +4439,11 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4439
4439
  {
4440
4440
  var item=option.GlobalOption;
4441
4441
  if (IFrameSplitOperator.IsBool(item.IsValueFullRange)) chart.GlobalOption.IsValueFullRange=item.IsValueFullRange;
4442
+ if (item.SelectedBorder)
4443
+ {
4444
+ var subItem=item.SelectedBorder;
4445
+ if (IFrameSplitOperator.IsNumber(subItem.Mode)) chart.GlobalOption.SelectedBorder.Mode=subItem.Mode;
4446
+ }
4442
4447
  }
4443
4448
 
4444
4449
  if (option.EnableYDrag)
@@ -6987,7 +6992,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6987
6992
  this.IndexChartDrag; //拖拽指标图形
6988
6993
  this.EnableIndexChartDrag=false;
6989
6994
 
6990
- this.GlobalOption={ IsValueFullRange:false , IsDisplayLatest:false }; //XDateFormat (多日分时图x轴底部日期格式)
6995
+ this.GlobalOption=
6996
+ {
6997
+ IsValueFullRange:false ,
6998
+ IsDisplayLatest:false,
6999
+ SelectedBorder:{ Mode:0, SelFrame:0 } //边框选中模式 Mode:0=禁用 1=右侧标记选中 2=指标窗口标记选中
7000
+ //XDateFormat (多日分时图x轴底部日期格式)
7001
+ };
6991
7002
 
6992
7003
  this.VerticalDrag; //通过X轴左右拖动数据(手势才有)
6993
7004
  this.EnableVerticalDrag=false;
@@ -7415,6 +7426,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7415
7426
  return;
7416
7427
  }
7417
7428
 
7429
+ var bDrawDynamicInfo=false;
7430
+ if (this.GlobalOption.SelectedBorder && this.GlobalOption.SelectedBorder.Mode>=1)
7431
+ {
7432
+ var item=this.GlobalOption.SelectedBorder;
7433
+ var frameId=this.Frame.PtInFrame(x,y);
7434
+ if (frameId>=0 && frameId!=item.SelFrame)
7435
+ {
7436
+ item.SelFrame=frameId;
7437
+ bDrawDynamicInfo=true;
7438
+ }
7439
+ }
7440
+
7418
7441
  if (this.TryClickCrossCursor(x,y, e))
7419
7442
  {
7420
7443
  return;
@@ -7684,12 +7707,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7684
7707
  else
7685
7708
  this.DrawDynamicInfo();
7686
7709
  }
7710
+ else if (bDrawDynamicInfo)
7711
+ {
7712
+ this.DrawDynamicInfo();
7713
+ }
7687
7714
 
7688
7715
  }
7689
7716
  }
7690
7717
 
7691
7718
  document.onmousemove=(e)=>{ this.DocOnMouseMove(e); }
7692
7719
  document.onmouseup=(e)=> { this.DocOnMouseUp(e); }
7720
+
7721
+
7693
7722
  }
7694
7723
 
7695
7724
  this.DocOnMouseMove=function(e)
@@ -9206,6 +9235,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9206
9235
  if (this.Frame.DrawToolbar) this.Frame.DrawToolbar(this.LastMouseStatus);
9207
9236
  this.DrawSelectedStatus();
9208
9237
 
9238
+ this.DrawSelectedBorder();
9239
+
9209
9240
  var moveonPoint=null;
9210
9241
  if (this.LastMouseStatus && this.LastMouseStatus.MoveOnPoint) moveonPoint=this.LastMouseStatus.MoveOnPoint;
9211
9242
  for(var i=0;i<this.ExtendChartPaint.length;++i) //动态扩展图形
@@ -9421,6 +9452,19 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9421
9452
  }
9422
9453
  }
9423
9454
 
9455
+ this.DrawSelectedBorder=function()
9456
+ {
9457
+ if (!this.GlobalOption.SelectedBorder) return;
9458
+ var item=this.GlobalOption.SelectedBorder;
9459
+ if (!IFrameSplitOperator.IsPlusNumber(item.Mode)) return;
9460
+ if (!IFrameSplitOperator.IsNumber(item.SelFrame) && item.SelFrame<0) return;
9461
+
9462
+ var subFrame=this.Frame.SubFrame[item.SelFrame];
9463
+ if (!subFrame) return;
9464
+
9465
+ if (subFrame.Frame.DrawSelectedBorder) subFrame.Frame.DrawSelectedBorder(item);
9466
+ }
9467
+
9424
9468
  //当前屏K线涨幅Y轴刻度
9425
9469
  this.KLineIncreaseCustomHorizontal=function()
9426
9470
  {
@@ -9575,6 +9619,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9575
9619
  if (this.Frame.DrawToolbar) this.Frame.DrawToolbar(this.LastMouseStatus);
9576
9620
 
9577
9621
  this.DrawSelectedStatus();
9622
+ this.DrawSelectedBorder();
9578
9623
 
9579
9624
  var moveonPoint=null;
9580
9625
  if (this.LastMouseStatus && this.LastMouseStatus.MoveOnPoint) moveonPoint=this.LastMouseStatus.MoveOnPoint;
@@ -12537,14 +12582,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12537
12582
 
12538
12583
  overlayFrame.Frame=frame;
12539
12584
 
12540
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_OVERLAY_FRAME);
12541
- if (event && event.Callback)
12542
- {
12543
- var sendData={ OverlayFrame:overlayFrame, WindowIndex:dest.WindowIndex, SubFrame:subFrame };
12544
- event.Callback(event, sendData, this);
12545
- }
12546
-
12547
-
12548
12585
  var scriptIndex;
12549
12586
  if (findItem)
12550
12587
  {
@@ -12558,6 +12595,14 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12558
12595
  }
12559
12596
 
12560
12597
  overlayFrame.Script=scriptIndex;
12598
+
12599
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_OVERLAY_FRAME);
12600
+ if (event && event.Callback)
12601
+ {
12602
+ var sendData={ OverlayFrame:overlayFrame, WindowIndex:dest.WindowIndex, SubFrame:subFrame };
12603
+ event.Callback(event, sendData, this);
12604
+ }
12605
+
12561
12606
  subFrame.OverlayIndex.push(overlayFrame);
12562
12607
 
12563
12608
  var updateWindowIndex=dest.WindowIndex;
@@ -13836,7 +13881,11 @@ function AverageWidthFrame()
13836
13881
  //Y轴刻度长线
13837
13882
  this.YLineExtend; //[0]=左 [1]=右 { Width:5, Color:颜色, }
13838
13883
  this.YTextExtend; //[0]=左 [1]=右 { Align:0=默认 1=左对齐 2=右对齐 }
13839
- this.YRightTextInfo;
13884
+ this.YRightTextInfo;
13885
+
13886
+ //X轴延长线
13887
+ this.XTextExtend; //[0]=底部 { Align:0=默认(居中), 1=左对齐 }
13888
+ this.XLineExtend; //[0]=底部 { Mode:1, Color: } Mode=1 分割线 Mode=2短线
13840
13889
 
13841
13890
  //画图工具刻度
13842
13891
 
@@ -14654,6 +14703,18 @@ function AverageWidthFrame()
14654
14703
  //JSConsole.Chart.Log('[AverageWidthFrame.DrawVertical] bottom',bottom);
14655
14704
  if (this.ChartBorder.Bottom<=5*GetDevicePixelRatio()) return; //高度不够 不显示
14656
14705
 
14706
+ var bottomTextExtend=null;
14707
+ if (this.XTextExtend)
14708
+ {
14709
+ bottomTextExtend=this.XTextExtend[0];
14710
+ }
14711
+
14712
+ var bottomLineExtend=null;
14713
+ if (this.XLineExtend)
14714
+ {
14715
+ bottomLineExtend=this.XLineExtend[0];
14716
+ }
14717
+
14657
14718
  var xPrev=null; //上一个坐标x的值
14658
14719
  var textRightPrev=null; //上一次刻度输出右边x坐标
14659
14720
  for(var i=0; i<this.VerticalInfo.length; ++i)
@@ -14697,7 +14758,7 @@ function AverageWidthFrame()
14697
14758
  {
14698
14759
  this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;
14699
14760
  this.Canvas.beginPath();
14700
- this.Canvas.moveTo(xFixed,top);
14761
+ this.Canvas.moveTo(xFiixed,top);
14701
14762
  this.Canvas.lineTo(xFixed,bottom);
14702
14763
  this.Canvas.stroke();
14703
14764
  }
@@ -14718,31 +14779,39 @@ function AverageWidthFrame()
14718
14779
 
14719
14780
  if (this.VerticalInfo[i].Message[0]!=null)
14720
14781
  {
14721
- if (this.VerticalInfo[i].Font!=null)
14722
- this.Canvas.font=this.VerticalInfo[i].Font;
14723
-
14782
+ if (this.VerticalInfo[i].Font) this.Canvas.font=this.VerticalInfo[i].Font;
14783
+
14724
14784
  var textLeft=0;
14725
14785
 
14726
14786
  this.Canvas.strokeStyle=item.TextColor;
14727
14787
  var testWidth=this.Canvas.measureText(this.VerticalInfo[i].Message[0]).width;
14728
14788
  var textHeight=this.Canvas.measureText("擎").width;
14729
- if (x<testWidth/2)
14789
+ if (bottomTextExtend && bottomTextExtend.Align==1)
14730
14790
  {
14731
14791
  this.Canvas.textAlign="left";
14732
14792
  this.Canvas.textBaseline="top";
14733
14793
  textLeft=x;
14734
14794
  }
14735
- else if ((x + testWidth / 2) >= this.ChartBorder.GetChartWidth())
14736
- {
14737
- this.Canvas.textAlign = "right";
14738
- this.Canvas.textBaseline="top";
14739
- textLeft=x-testWidth;
14740
- }
14741
14795
  else
14742
14796
  {
14743
- this.Canvas.textAlign="center";
14744
- this.Canvas.textBaseline="top";
14745
- textLeft=x-(testWidth/2);
14797
+ if (x<testWidth/2)
14798
+ {
14799
+ this.Canvas.textAlign="left";
14800
+ this.Canvas.textBaseline="top";
14801
+ textLeft=x;
14802
+ }
14803
+ else if ((x + testWidth / 2) >= this.ChartBorder.GetChartWidth())
14804
+ {
14805
+ this.Canvas.textAlign = "right";
14806
+ this.Canvas.textBaseline="top";
14807
+ textLeft=x-testWidth;
14808
+ }
14809
+ else
14810
+ {
14811
+ this.Canvas.textAlign="center";
14812
+ this.Canvas.textBaseline="top";
14813
+ textLeft=x-(testWidth/2);
14814
+ }
14746
14815
  }
14747
14816
 
14748
14817
  if (textRightPrev==null || textLeft>textRightPrev)
@@ -14759,6 +14828,36 @@ function AverageWidthFrame()
14759
14828
  yText+=lineLength+2*pixelRatio;
14760
14829
  }
14761
14830
 
14831
+ if (bottomLineExtend)
14832
+ {
14833
+ if (bottomLineExtend.Mode===1)
14834
+ {
14835
+ if (item.Value>1)
14836
+ {
14837
+ if (bottomLineExtend.Color) this.Canvas.strokeStyle=bottomLineExtend.Color;
14838
+ this.Canvas.beginPath();
14839
+ this.Canvas.moveTo(xFixed,bottom);
14840
+ this.Canvas.lineTo(xFixed,border.ChartHeight);
14841
+ this.Canvas.stroke();
14842
+ x+=1;
14843
+ }
14844
+ }
14845
+ else if (bottomLineExtend.Mode===2)
14846
+ {
14847
+ if (bottomLineExtend.Width>=1)
14848
+ {
14849
+ var lineLength=bottomLineExtend.Width;
14850
+ if (bottomLineExtend.Color) this.Canvas.strokeStyle=bottomLineExtend.Color;
14851
+ this.Canvas.beginPath();
14852
+ this.Canvas.moveTo(xFixed,yText);
14853
+ this.Canvas.lineTo(xFixed,yText+lineLength);
14854
+ this.Canvas.stroke();
14855
+
14856
+ yText+=lineLength+2;
14857
+ }
14858
+ }
14859
+ }
14860
+
14762
14861
  //item.TextBGColor="rgb(0,255,0)";
14763
14862
  if (item.TextBGColor) //文字背景色
14764
14863
  {
@@ -17748,6 +17847,8 @@ function KLineFrame()
17748
17847
  this.TitleWindow=g_JSChartResource.KLineToolbar.TitleWindow;
17749
17848
  this.ExportData=g_JSChartResource.KLineToolbar.ExportData; //是否显示'导出数据'菜单
17750
17849
 
17850
+ this.SelBorderColor=g_JSChartResource.SelFrameBorderColor;
17851
+
17751
17852
  this.ModifyIndexEvent; //改参数 点击事件
17752
17853
  this.ChangeIndexEvent; //换指标 点击事件
17753
17854
  this.ToolbarRect=null; //保存工具条的位置
@@ -18927,6 +19028,31 @@ function KLineFrame()
18927
19028
  }
18928
19029
  }
18929
19030
 
19031
+ this.DrawSelectedBorder=function(option)
19032
+ {
19033
+ if (this.Identify===0) return;
19034
+
19035
+ var border=this.IsHScreen==true?this.ChartBorder.GetHScreenBorder():this.ChartBorder.GetBorder();
19036
+
19037
+ var left=ToFixedPoint(border.Left);
19038
+ var top=ToFixedPoint(border.Top);
19039
+ var right=ToFixedPoint(border.Right);
19040
+ var bottom=ToFixedPoint(border.Bottom);
19041
+ var height=bottom-top;
19042
+
19043
+ this.Canvas.strokeStyle=this.SelBorderColor;
19044
+
19045
+ if (option.Mode==1)
19046
+ {
19047
+ var xRight=ToFixedPoint(border.ChartWidth);
19048
+ this.Canvas.strokeRect(right,top,xRight-right-1,height); //少一个像素让边框显示出来
19049
+ }
19050
+ else
19051
+ {
19052
+ this.Canvas.strokeRect(left,top,right-left-1,height); //少一个像素让边框显示出来
19053
+ }
19054
+ }
19055
+
18930
19056
  //是否在X轴坐标上
18931
19057
  //this.PtInVertical=function(x,y) { return false; }
18932
19058
  }
@@ -18961,6 +19087,7 @@ function OverlayKLineFrame()
18961
19087
 
18962
19088
  this.CloseButton=CloneData(g_JSChartResource.Buttons.CloseOverlayIndex);
18963
19089
  this.ModifyIndexParamButton=CloneData(g_JSChartResource.Buttons.ModifyIndexParam);
19090
+ this.DrawSelectedBorder=null;
18964
19091
 
18965
19092
  this.KLineFrame_ReloadResource=this.ReloadResource;
18966
19093
  this.ReloadResource=function(resource)
@@ -19689,6 +19816,8 @@ function KLineHScreenFrame()
19689
19816
  this.ClassName='KLineHScreenFrame';
19690
19817
  this.IsHScreen=true; //是否是横屏
19691
19818
 
19819
+ this.DrawSelectedBorder=null;
19820
+
19692
19821
  //画标题背景色
19693
19822
  this.DrawTitleBG=function()
19694
19823
  {
@@ -40536,7 +40665,7 @@ function ChartDrawSVG()
40536
40665
  x=this.ChartFrame.GetXFromIndex(index);
40537
40666
  if (item.Value=="Top") y=top;
40538
40667
  else if (item.Value=="Bottom") y=bottom;
40539
- else y=this.ChartFrame.GetYFromData(item.Value);
40668
+ else y=this.ChartFrame.GetYFromData(item.Value, false);
40540
40669
  if (IFrameSplitOperator.IsNumber(item.YOffset)) y+=item.YOffset; //Y轴偏移
40541
40670
 
40542
40671
  var svgItem=item.SVG;
@@ -65943,8 +66072,9 @@ function JSChartResource()
65943
66072
  this.FrameSplitTextColor="rgb(117,125,129)"; //刻度文字颜色
65944
66073
  this.FrameSplitTextFont=14*GetDevicePixelRatio() +"px 微软雅黑"; //坐标刻度文字字体
65945
66074
  this.FrameTitleBGColor="rgb(246,251,253)"; //标题栏背景色
66075
+ this.SelFrameBorderColor='rgb(130, 130, 130)';
65946
66076
  this.Frame={
65947
- XBottomOffset:1*GetDevicePixelRatio(), //X轴文字向下偏移
66077
+ XBottomOffset:2*GetDevicePixelRatio(), //X轴文字向下偏移
65948
66078
  YTopOffset:2*GetDevicePixelRatio(), //Y轴顶部文字向下偏移
65949
66079
  YTextPadding:[2,2]
65950
66080
  };
@@ -67000,6 +67130,7 @@ function JSChartResource()
67000
67130
  if (style.FrameSplitTextColor) this.FrameSplitTextColor = style.FrameSplitTextColor;
67001
67131
  if (style.FrameSplitTextFont) this.FrameSplitTextFont = style.FrameSplitTextFont;
67002
67132
  if (style.FrameTitleBGColor) this.FrameTitleBGColor = style.FrameTitleBGColor;
67133
+ if (style.SelFrameBorderColor) this.SelFrameBorderColor=style.SelFrameBorderColor;
67003
67134
  if (IFrameSplitOperator.IsNumber(style.IndexTitleMerginLeft)) this.IndexTitleMerginLeft = style.IndexTitleMerginLeft;
67004
67135
 
67005
67136
  if (style.Frame)
@@ -72973,13 +73104,6 @@ function KLineChartContainer(uielement,OffscreenElement)
72973
73104
 
72974
73105
  overlayFrame.Frame=frame;
72975
73106
 
72976
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_OVERLAY_FRAME);
72977
- if (event && event.Callback)
72978
- {
72979
- var sendData={ OverlayFrame:overlayFrame, WindowIndex:windowIndex, SubFrame:subFrame };
72980
- event.Callback(event, sendData, this);
72981
- }
72982
-
72983
73107
  if (apiItem)
72984
73108
  {
72985
73109
  var apiIndex=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,obj, true);
@@ -73014,6 +73138,13 @@ function KLineChartContainer(uielement,OffscreenElement)
73014
73138
  overlayFrame.Script=scriptIndex;
73015
73139
  }
73016
73140
 
73141
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_OVERLAY_FRAME);
73142
+ if (event && event.Callback)
73143
+ {
73144
+ var sendData={ OverlayFrame:overlayFrame, WindowIndex:windowIndex, SubFrame:subFrame };
73145
+ event.Callback(event, sendData, this);
73146
+ }
73147
+
73017
73148
  subFrame.OverlayIndex.push(overlayFrame);
73018
73149
  return overlayFrame;
73019
73150
  }
@@ -116418,6 +116549,9 @@ function OverlayScriptIndex(name,script,args,option)
116418
116549
  case 'DRAWICON':
116419
116550
  this.CreateIcon(hqChart,windowIndex,item,i);
116420
116551
  break;
116552
+ case "TIPICON":
116553
+ this.CreateTipIcon(hqChart,windowIndex,item,i);
116554
+ break;
116421
116555
  case 'DRAWCHANNEL':
116422
116556
  this.CreateChannel(hqChart,windowIndex,item,i);
116423
116557
  break;
@@ -117130,6 +117264,74 @@ function OverlayScriptIndex(name,script,args,option)
117130
117264
  frame.ChartPaint.push(chart);
117131
117265
  }
117132
117266
 
117267
+ this.CreateTipIcon=function(hqChart,windowIndex,varItem,id)
117268
+ {
117269
+ var overlayIndex=this.OverlayIndex;
117270
+ var frame=overlayIndex.Frame;
117271
+ var chart=new ChartDrawSVG();
117272
+ chart.Canvas=hqChart.Canvas;
117273
+
117274
+ chart.Name=varItem.Name;
117275
+ chart.ChartBorder=frame.Frame.ChartBorder;
117276
+ chart.ChartFrame=frame.Frame;
117277
+ chart.Identify=overlayIndex.Identify;
117278
+
117279
+ if (hqChart.ChartPaint[0].IsMinuteFrame())
117280
+ chart.Data=hqChart.SourceData;
117281
+ else
117282
+ chart.Data=hqChart.ChartPaint[0].Data; //绑定K线
117283
+
117284
+ chart.Family=varItem.Draw.Icon.Family;
117285
+ chart.TextFont=g_JSChartResource.TIPICON.TextFont;
117286
+
117287
+ var svgSize=g_JSChartResource.TIPICON.Size;
117288
+ var svgColor=g_JSChartResource.TIPICON.Color;
117289
+ var svgYOffset=0;
117290
+ var svgVAlign=2; //上下对齐方式
117291
+ if (IFrameSplitOperator.IsNumber(varItem.YOffset)) svgYOffset=varItem.YOffset;
117292
+ if (varItem.Color) svgColor=this.GetColor(varItem.Color);
117293
+ if (varItem.DrawFontSize>0) svgSize=varItem.DrawFontSize;
117294
+ if (varItem.DrawVAlign>=0) svgVAlign=varItem.DrawVAlign;
117295
+
117296
+ if (varItem.Draw && IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.DrawData) && varItem.Draw.Icon)
117297
+ {
117298
+ var drawData=varItem.Draw.DrawData;
117299
+ var aryData=[];
117300
+ var isArrayTip=Array.isArray(varItem.Draw.Text);
117301
+ var singleTip=null;
117302
+ if (!isArrayTip && varItem.Draw.Text) singleTip={ Text:varItem.Draw.Text };
117303
+
117304
+ for(var j=0;j<drawData.length;++j)
117305
+ {
117306
+ var item=drawData[j];
117307
+ if (!IFrameSplitOperator.IsNumber(item)) continue;
117308
+
117309
+ var svgItem=
117310
+ {
117311
+ Index:j, Value:item,
117312
+ SVG:{ Symbol:varItem.Draw.Icon.Symbol, Size:svgSize, Color:svgColor, YOffset:svgYOffset, VAlign:svgVAlign }
117313
+ };
117314
+
117315
+ if (isArrayTip)
117316
+ {
117317
+ var text=varItem.Draw.Text[j];
117318
+ if (text) svgItem.Tooltip={ Text:text };
117319
+ }
117320
+ else
117321
+ {
117322
+ svgItem.Tooltip=singleTip;
117323
+ }
117324
+
117325
+ aryData.push(svgItem);
117326
+ }
117327
+
117328
+ chart.Texts= aryData;
117329
+ }
117330
+
117331
+ frame.ChartPaint.push(chart);
117332
+ }
117333
+
117334
+
117133
117335
  //创建通道
117134
117336
  this.CreateChannel=function(hqChart,windowIndex,varItem,id)
117135
117337
  {
@@ -120261,7 +120463,7 @@ function GetBlackStyle()
120261
120463
 
120262
120464
  Frame:
120263
120465
  {
120264
- XBottomOffset:1*GetDevicePixelRatio(), //X轴文字向下偏移
120466
+ XBottomOffset:2*GetDevicePixelRatio(), //X轴文字向下偏移
120265
120467
 
120266
120468
  PercentageText: //百分比坐标文字颜色
120267
120469
  {
@@ -131034,7 +131236,7 @@ function ScrollBarBGChart()
131034
131236
 
131035
131237
 
131036
131238
 
131037
- var HQCHART_VERSION="1.1.12732";
131239
+ var HQCHART_VERSION="1.1.12740";
131038
131240
 
131039
131241
  function PrintHQChartVersion()
131040
131242
  {