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.
- package/package.json +1 -1
- package/src/jscommon/jschinamapdata.js +3 -0
- package/src/jscommon/umychart.NetworkFilterTest.js +48803 -0
- package/src/jscommon/umychart.aliYunnetwork.js +47 -0
- package/src/jscommon/umychart.complier.js +25402 -0
- package/src/jscommon/umychart.console.js +12 -0
- package/src/jscommon/umychart.deal.js +1452 -0
- package/src/jscommon/umychart.dragdiv.js +48 -0
- package/src/jscommon/umychart.index.data.js +4132 -0
- package/src/jscommon/umychart.js +90801 -0
- package/src/jscommon/umychart.keyboard.js +1659 -0
- package/src/jscommon/umychart.listctrl.js +690 -0
- package/src/jscommon/umychart.mind.js +2203 -0
- package/src/jscommon/umychart.network.js +44 -0
- package/src/jscommon/umychart.news.js +823 -0
- package/src/jscommon/umychart.regressiontest.js +400 -0
- package/src/jscommon/umychart.report.js +5803 -0
- package/src/jscommon/umychart.scrollbar.js +1345 -0
- package/src/jscommon/umychart.stock.js +4218 -0
- package/src/jscommon/umychart.style.js +625 -0
- package/src/jscommon/umychart.testdata.js +150 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +237 -35
- package/src/jscommon/umychart.user.js +137 -0
- package/src/jscommon/umychart.version.js +30 -0
- package/src/jscommon/umychart.vue/umychart.vue.js +237 -35
- package/src/jscommon/umychart.worker.js +114 -0
- package/src/jscommon/umychart.ws.stock.js +110 -0
- package/src/jscommon/vendor.js +2 -0
|
@@ -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=
|
|
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(
|
|
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
|
|
14722
|
-
|
|
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 (
|
|
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
|
-
|
|
14744
|
-
|
|
14745
|
-
|
|
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:
|
|
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:
|
|
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.
|
|
131239
|
+
var HQCHART_VERSION="1.1.12740";
|
|
131038
131240
|
|
|
131039
131241
|
function PrintHQChartVersion()
|
|
131040
131242
|
{
|