hqchart 1.1.14313 → 1.1.14330
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/lib/umychart.vue.js +219 -203
- package/package.json +1 -1
- package/src/jscommon/umychart.NetworkFilterTest.js +72 -0
- package/src/jscommon/umychart.complier.js +149 -3
- package/src/jscommon/umychart.js +401 -110
- package/src/jscommon/umychart.style.js +14 -0
- package/src/jscommon/umychart.testdata.js +72 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +565 -114
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +72 -0
- package/src/jscommon/umychart.vue/umychart.vue.js +565 -114
package/src/jscommon/umychart.js
CHANGED
|
@@ -31929,6 +31929,313 @@ function ChartSimplePie()
|
|
|
31929
31929
|
}
|
|
31930
31930
|
}
|
|
31931
31931
|
|
|
31932
|
+
|
|
31933
|
+
//雷达图
|
|
31934
|
+
function ChartSimpleRadar()
|
|
31935
|
+
{
|
|
31936
|
+
this.newMethod=IChartPainting; //派生
|
|
31937
|
+
this.newMethod();
|
|
31938
|
+
delete this.newMethod;
|
|
31939
|
+
|
|
31940
|
+
this.ClassName='ChartSimpleRadar'; //类名
|
|
31941
|
+
|
|
31942
|
+
this.AreaColor='rgba(242,154,118,0.4)'; //
|
|
31943
|
+
this.AreaLineColor='rgb(242,154,118)';
|
|
31944
|
+
|
|
31945
|
+
this.TitleColor=g_JSChartResource.ChartSimpleRadar.TextColor;
|
|
31946
|
+
this.TextFontConfig=CloneData(g_JSChartResource.ChartSimpleRadar.TextFont);
|
|
31947
|
+
this.Offset=CloneData(g_JSChartResource.ChartSimpleRadar.Offset);
|
|
31948
|
+
this.BorderColor=g_JSChartResource.ChartSimpleRadar.BorderColor;
|
|
31949
|
+
this.AryBGColor=g_JSChartResource.ChartSimpleRadar.AryBGColor.slice();//背景色
|
|
31950
|
+
this.AryAreaConfig=g_JSChartResource.ChartSimpleRadar.AryArea.slice(); //面积图颜色
|
|
31951
|
+
|
|
31952
|
+
this.StartAngle=270;
|
|
31953
|
+
this.Radius=50;
|
|
31954
|
+
this.AryBorder=[1, 0.75, 0.5, 0.25];
|
|
31955
|
+
this.AryIndex; //指标{ Name:, Max:100, Min:0 },
|
|
31956
|
+
|
|
31957
|
+
this.CenterPoint={};
|
|
31958
|
+
this.RectClient={ };
|
|
31959
|
+
this.AryIndexCache=[];
|
|
31960
|
+
this.MapDataCache=new Map(); //key=name value={ Data:[] }
|
|
31961
|
+
this.TextFont;
|
|
31962
|
+
|
|
31963
|
+
|
|
31964
|
+
this.ReloadResource=function(resource)
|
|
31965
|
+
{
|
|
31966
|
+
this.TitleColor=g_JSChartResource.ChartSimpleRadar.TextColor;
|
|
31967
|
+
this.TextFontConfig=CloneData(g_JSChartResource.ChartSimpleRadar.TextFont);
|
|
31968
|
+
this.Offset=CloneData(g_JSChartResource.ChartSimpleRadar.Offset);
|
|
31969
|
+
this.BorderColor=g_JSChartResource.ChartSimpleRadar.BorderColor;
|
|
31970
|
+
this.AryBGColor=g_JSChartResource.ChartSimpleRadar.AryBGColor.slice();//背景色
|
|
31971
|
+
this.AryAreaConfig=g_JSChartResource.ChartSimpleRadar.AryArea.slice(); //面积图颜色
|
|
31972
|
+
}
|
|
31973
|
+
|
|
31974
|
+
this.DrawBorder=function() //画边框
|
|
31975
|
+
{
|
|
31976
|
+
this.Canvas.strokeStyle = this.BorderColor;
|
|
31977
|
+
this.Canvas.font=this.TextFont;
|
|
31978
|
+
for(var i=0;i<this.AryBorder.length;++i)
|
|
31979
|
+
{
|
|
31980
|
+
var rate = this.AryBorder[i];
|
|
31981
|
+
var radius=this.RectClient.Radius*rate;
|
|
31982
|
+
var bFirstDraw=true;
|
|
31983
|
+
for(var j=0;j<this.AryIndexCache.length;++j)
|
|
31984
|
+
{
|
|
31985
|
+
var item=this.AryIndexCache[j];
|
|
31986
|
+
var x = this.CenterPoint.X + radius * Math.cos(item.Angle * Math.PI / 180);
|
|
31987
|
+
var y = this.CenterPoint.Y + radius * Math.sin(item.Angle * Math.PI / 180);
|
|
31988
|
+
if (bFirstDraw)
|
|
31989
|
+
{
|
|
31990
|
+
this.Canvas.beginPath();
|
|
31991
|
+
this.Canvas.moveTo(x,y);
|
|
31992
|
+
bFirstDraw=false;
|
|
31993
|
+
}
|
|
31994
|
+
else
|
|
31995
|
+
{
|
|
31996
|
+
this.Canvas.lineTo(x,y);
|
|
31997
|
+
}
|
|
31998
|
+
}
|
|
31999
|
+
|
|
32000
|
+
this.Canvas.closePath();
|
|
32001
|
+
this.Canvas.stroke();
|
|
32002
|
+
|
|
32003
|
+
if (IFrameSplitOperator.IsNonEmptyArray(this.AryBGColor))
|
|
32004
|
+
{
|
|
32005
|
+
this.Canvas.fillStyle = this.AryBGColor[i%this.AryBGColor.length];
|
|
32006
|
+
this.Canvas.fill();
|
|
32007
|
+
}
|
|
32008
|
+
}
|
|
32009
|
+
|
|
32010
|
+
this.Canvas.beginPath();
|
|
32011
|
+
for(var i=0;i<this.AryIndexCache.length;++i)
|
|
32012
|
+
{
|
|
32013
|
+
var item=this.AryIndexCache[i];
|
|
32014
|
+
var x = this.CenterPoint.X + item.Radius * Math.cos(item.Angle * Math.PI / 180);
|
|
32015
|
+
var y = this.CenterPoint.Y + item.Radius * Math.sin(item.Angle * Math.PI / 180);
|
|
32016
|
+
this.Canvas.moveTo(this.CenterPoint.X,this.CenterPoint.Y);
|
|
32017
|
+
this.Canvas.lineTo(x,y);
|
|
32018
|
+
this.DrawText(item, x, y);
|
|
32019
|
+
}
|
|
32020
|
+
this.Canvas.stroke();
|
|
32021
|
+
|
|
32022
|
+
}
|
|
32023
|
+
|
|
32024
|
+
this.GetRadarRate=function(indexItem, value)
|
|
32025
|
+
{
|
|
32026
|
+
var range={ Max:100, Min:0 };
|
|
32027
|
+
if (IFrameSplitOperator.IsNumber(indexItem.Max)) range.Max=indexItem.Max;
|
|
32028
|
+
if (IFrameSplitOperator.IsNumber(indexItem.Min)) range.Min=indexItem.Min;
|
|
32029
|
+
|
|
32030
|
+
if (value>range.Max) value=range.Max;
|
|
32031
|
+
else if (value<range.Min) value=range.Min;
|
|
32032
|
+
|
|
32033
|
+
return (value-range.Min)/(range.Max-range.Min);
|
|
32034
|
+
}
|
|
32035
|
+
|
|
32036
|
+
this.DrawArea=function()
|
|
32037
|
+
{
|
|
32038
|
+
if (this.MapDataCache.size<=0) return;
|
|
32039
|
+
|
|
32040
|
+
var index=0;
|
|
32041
|
+
for(var mapItem of this.MapDataCache)
|
|
32042
|
+
{
|
|
32043
|
+
var mapData=mapItem[1].MapData;
|
|
32044
|
+
|
|
32045
|
+
var bFirstDraw=true;
|
|
32046
|
+
var pointCount=0;
|
|
32047
|
+
for(var i=0;i<this.AryIndexCache.length;++i)
|
|
32048
|
+
{
|
|
32049
|
+
var indexItem=this.AryIndexCache[i];
|
|
32050
|
+
if (!indexItem.Data || !indexItem.Data.Name) continue;
|
|
32051
|
+
if (!mapData.has(indexItem.Data.Name)) continue;
|
|
32052
|
+
var item=mapData.get(indexItem.Data.Name);
|
|
32053
|
+
if (!item.Data && !IFrameSplitOperator.IsNumber(item.Data.Value)) conintue;
|
|
32054
|
+
|
|
32055
|
+
var widthRate=this.GetRadarRate(indexItem, item.Data.Value);
|
|
32056
|
+
var x = this.CenterPoint.X+indexItem.Radius*widthRate*Math.cos(indexItem.Angle * Math.PI / 180);
|
|
32057
|
+
var y = this.CenterPoint.Y+indexItem.Radius*widthRate*Math.sin(indexItem.Angle * Math.PI / 180);
|
|
32058
|
+
|
|
32059
|
+
if (bFirstDraw)
|
|
32060
|
+
{
|
|
32061
|
+
this.Canvas.beginPath();
|
|
32062
|
+
this.Canvas.moveTo(x,y);
|
|
32063
|
+
bFirstDraw=false;
|
|
32064
|
+
++pointCount;
|
|
32065
|
+
}
|
|
32066
|
+
else
|
|
32067
|
+
{
|
|
32068
|
+
this.Canvas.lineTo(x,y);
|
|
32069
|
+
++pointCount;
|
|
32070
|
+
}
|
|
32071
|
+
}
|
|
32072
|
+
|
|
32073
|
+
if (pointCount>0)
|
|
32074
|
+
{
|
|
32075
|
+
this.Canvas.closePath();
|
|
32076
|
+
|
|
32077
|
+
var config=this.AryAreaConfig[index%this.AryAreaConfig.length];
|
|
32078
|
+
if (config.Color)
|
|
32079
|
+
{
|
|
32080
|
+
this.Canvas.fillStyle = config.Color;
|
|
32081
|
+
this.Canvas.fill();
|
|
32082
|
+
}
|
|
32083
|
+
|
|
32084
|
+
if (config.LineColor)
|
|
32085
|
+
{
|
|
32086
|
+
this.Canvas.strokeStyle = config.LineColor;
|
|
32087
|
+
this.Canvas.stroke();
|
|
32088
|
+
}
|
|
32089
|
+
}
|
|
32090
|
+
|
|
32091
|
+
++index;
|
|
32092
|
+
}
|
|
32093
|
+
}
|
|
32094
|
+
|
|
32095
|
+
this.DrawText=function(item, x, y)
|
|
32096
|
+
{
|
|
32097
|
+
if (!item.Data || !item.Data.Name) return;
|
|
32098
|
+
|
|
32099
|
+
//JSConsole.Chart.Log(item.Text, item.Angle);
|
|
32100
|
+
this.Canvas.fillStyle = this.TitleColor;
|
|
32101
|
+
var xText = x, yText =y;
|
|
32102
|
+
|
|
32103
|
+
var angle=item.Angle%360;
|
|
32104
|
+
|
|
32105
|
+
//显示每个角度的位置
|
|
32106
|
+
if (angle > 0 && angle < 45) {
|
|
32107
|
+
this.Canvas.textAlign = 'left';
|
|
32108
|
+
this.Canvas.textBaseline = 'middle';
|
|
32109
|
+
xText += 2;
|
|
32110
|
+
}
|
|
32111
|
+
else if (angle >= 45 && angle < 90) {
|
|
32112
|
+
this.Canvas.textAlign = 'left';
|
|
32113
|
+
this.Canvas.textBaseline = 'top';
|
|
32114
|
+
xText += 2;
|
|
32115
|
+
}
|
|
32116
|
+
else if (angle==90)
|
|
32117
|
+
{
|
|
32118
|
+
this.Canvas.textAlign = 'center';
|
|
32119
|
+
this.Canvas.textBaseline = 'top';
|
|
32120
|
+
yText+=2;
|
|
32121
|
+
}
|
|
32122
|
+
else if (angle >= 90 && angle < 135) {
|
|
32123
|
+
this.Canvas.textAlign = 'right';
|
|
32124
|
+
this.Canvas.textBaseline = 'top';
|
|
32125
|
+
xText -= 2;
|
|
32126
|
+
}
|
|
32127
|
+
else if (angle >= 135 && angle < 180) {
|
|
32128
|
+
this.Canvas.textAlign = 'right';
|
|
32129
|
+
this.Canvas.textBaseline = 'top';
|
|
32130
|
+
xText -= 2;
|
|
32131
|
+
}
|
|
32132
|
+
else if (angle >= 180 && angle < 225) {
|
|
32133
|
+
this.Canvas.textAlign = 'right';
|
|
32134
|
+
this.Canvas.textBaseline = 'middle';
|
|
32135
|
+
xText -= 2;
|
|
32136
|
+
}
|
|
32137
|
+
else if (angle >= 225 && angle <= 270) {
|
|
32138
|
+
this.Canvas.textAlign = 'center';
|
|
32139
|
+
this.Canvas.textBaseline = 'bottom';
|
|
32140
|
+
}
|
|
32141
|
+
else if (angle > 270 && angle < 315) {
|
|
32142
|
+
this.Canvas.textAlign = 'left';
|
|
32143
|
+
this.Canvas.textBaseline = 'bottom';
|
|
32144
|
+
xText += 2;
|
|
32145
|
+
}
|
|
32146
|
+
else
|
|
32147
|
+
{
|
|
32148
|
+
this.Canvas.textAlign = 'left';
|
|
32149
|
+
this.Canvas.textBaseline = 'middle';
|
|
32150
|
+
xText += 2;
|
|
32151
|
+
}
|
|
32152
|
+
|
|
32153
|
+
this.Canvas.fillText(item.Data.Name, xText, yText);
|
|
32154
|
+
}
|
|
32155
|
+
|
|
32156
|
+
this.Draw=function()
|
|
32157
|
+
{
|
|
32158
|
+
this.AryIndexCache=[];
|
|
32159
|
+
this.MapData=new Map();
|
|
32160
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIndex)) return;
|
|
32161
|
+
|
|
32162
|
+
this.CalculateSize();
|
|
32163
|
+
|
|
32164
|
+
this.DrawBorder();
|
|
32165
|
+
|
|
32166
|
+
this.DrawArea();
|
|
32167
|
+
}
|
|
32168
|
+
|
|
32169
|
+
this.BuildCacheData=function()
|
|
32170
|
+
{
|
|
32171
|
+
this.MapDataCache=new Map();
|
|
32172
|
+
|
|
32173
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
32174
|
+
{
|
|
32175
|
+
var item=this.Data.Data[i];
|
|
32176
|
+
if (!this.MapDataCache.has(item.Group))
|
|
32177
|
+
{
|
|
32178
|
+
this.MapDataCache.set(item.Group, { MapData:new Map() })
|
|
32179
|
+
}
|
|
32180
|
+
|
|
32181
|
+
var mpaItem=this.MapDataCache.get(item.Group);
|
|
32182
|
+
mpaItem.MapData.set(item.Name, { Data:item });
|
|
32183
|
+
}
|
|
32184
|
+
}
|
|
32185
|
+
|
|
32186
|
+
this.CalculateSize=function(data)
|
|
32187
|
+
{
|
|
32188
|
+
var border=this.ChartBorder.GetBorder();
|
|
32189
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
32190
|
+
this.TextFont=`${this.TextFontConfig.Size*pixelRatio}px ${ this.TextFontConfig.Name}`;
|
|
32191
|
+
var fontHeight=this.GetFontHeight(this.TextFont,"擎")+1;
|
|
32192
|
+
|
|
32193
|
+
var maxTextWidth=0;
|
|
32194
|
+
if (IFrameSplitOperator.IsNonEmptyArray(this.AryIndex))
|
|
32195
|
+
{
|
|
32196
|
+
for(var i=0;i<this.AryIndex.length;++i)
|
|
32197
|
+
{
|
|
32198
|
+
var item=this.AryIndex[i];
|
|
32199
|
+
if (!item.Name) continue;
|
|
32200
|
+
var textWidth=this.Canvas.measureText(item.Name).width;
|
|
32201
|
+
if (maxTextWidth<textWidth) maxTextWidth=textWidth;
|
|
32202
|
+
}
|
|
32203
|
+
}
|
|
32204
|
+
|
|
32205
|
+
var radius=this.Radius*2*pixelRatio; //半径
|
|
32206
|
+
this.RectClient={ Width:radius*2, Height:radius*2, Radius:radius };
|
|
32207
|
+
this.RectClient.Right=border.Right+this.Offset.X-maxTextWidth;
|
|
32208
|
+
this.RectClient.Top=border.TopEx+this.Offset.Y+fontHeight;
|
|
32209
|
+
this.RectClient.Left=this.RectClient.Right-this.RectClient.Width;
|
|
32210
|
+
this.RectClient.Bottom=this.RectClient.Top+this.RectClient.Height;
|
|
32211
|
+
|
|
32212
|
+
var ptCenter={X:this.RectClient.Left+this.RectClient.Width/2, Y:this.RectClient.Top+this.RectClient.Height/2}; //中心点
|
|
32213
|
+
|
|
32214
|
+
var count=Math.max(5,this.AryIndex.length);
|
|
32215
|
+
var averageAngle=360/count;
|
|
32216
|
+
for(var i=0;i<count;++i)
|
|
32217
|
+
{
|
|
32218
|
+
var angle=i*averageAngle+this.StartAngle;
|
|
32219
|
+
|
|
32220
|
+
var indexItem={ Data:null, Index:i, Angle:angle, Radius:radius };
|
|
32221
|
+
if (this.AryIndex && this.AryIndex[i])
|
|
32222
|
+
{
|
|
32223
|
+
indexItem.Data=this.AryIndex[i];
|
|
32224
|
+
}
|
|
32225
|
+
|
|
32226
|
+
this.AryIndexCache.push(indexItem);
|
|
32227
|
+
}
|
|
32228
|
+
|
|
32229
|
+
this.CenterPoint=ptCenter;
|
|
32230
|
+
}
|
|
32231
|
+
|
|
32232
|
+
//空数据
|
|
32233
|
+
this.DrawEmptyData=function()
|
|
32234
|
+
{
|
|
32235
|
+
JSConsole.Chart.Log('[ChartSimpleRadar::DrawEmptyData]')
|
|
32236
|
+
}
|
|
32237
|
+
}
|
|
32238
|
+
|
|
31932
32239
|
//分钟成交量 支持横屏
|
|
31933
32240
|
function ChartMinuteVolumBar()
|
|
31934
32241
|
{
|
|
@@ -52556,6 +52863,7 @@ function ChartCorssCursor()
|
|
|
52556
52863
|
this.TextBGColor=g_JSChartResource.CorssCursorBGColor; //文本背景色
|
|
52557
52864
|
this.BorderColor=g_JSChartResource.CorssCursorBorderColor; //边框颜色
|
|
52558
52865
|
this.XRangeBGColor=g_JSChartResource.CorssCursorXRangeBGColor;
|
|
52866
|
+
this.LineDash=g_JSChartResource.CorssCursorLineDash.slice(); //虚线
|
|
52559
52867
|
this.TextHeight=20; //文本字体高度
|
|
52560
52868
|
this.LastPoint;
|
|
52561
52869
|
this.LastValue; //{ Y:{ Value:, Extend: } }
|
|
@@ -52611,6 +52919,7 @@ function ChartCorssCursor()
|
|
|
52611
52919
|
this.TextBGColor=g_JSChartResource.CorssCursorBGColor; //文本背景色
|
|
52612
52920
|
this.BorderColor=g_JSChartResource.CorssCursorBorderColor; //边框颜色
|
|
52613
52921
|
this.XRangeBGColor=g_JSChartResource.CorssCursorXRangeBGColor;
|
|
52922
|
+
this.LineDash=g_JSChartResource.CorssCursorLineDash.slice(); //虚线
|
|
52614
52923
|
}
|
|
52615
52924
|
|
|
52616
52925
|
this.GetCloseYPoint=function(index)
|
|
@@ -52869,10 +53178,10 @@ function ChartCorssCursor()
|
|
|
52869
53178
|
}
|
|
52870
53179
|
|
|
52871
53180
|
var pixel=GetDevicePixelRatio();
|
|
52872
|
-
if (this.HPenType==1 || this.HPenType==0) //0
|
|
53181
|
+
if (this.HPenType==1 || this.HPenType==0) //0=虚线 1=实线
|
|
52873
53182
|
{
|
|
52874
53183
|
this.Canvas.strokeStyle=this.HPenColor;
|
|
52875
|
-
if (this.HPenType==0) this.Canvas.setLineDash(
|
|
53184
|
+
if (this.HPenType==0) this.Canvas.setLineDash(this.LineDash); //虚线
|
|
52876
53185
|
//this.Canvas.lineWidth=0.5
|
|
52877
53186
|
this.Canvas.beginPath();
|
|
52878
53187
|
this.Canvas.moveTo(left,ToFixedPoint(y));
|
|
@@ -52885,7 +53194,7 @@ function ChartCorssCursor()
|
|
|
52885
53194
|
this.Canvas.strokeStyle=this.VPenColor;
|
|
52886
53195
|
if (this.VPenType==0)
|
|
52887
53196
|
{
|
|
52888
|
-
this.Canvas.setLineDash(
|
|
53197
|
+
this.Canvas.setLineDash(this.LineDash); //虚线
|
|
52889
53198
|
}
|
|
52890
53199
|
else if (this.VPenType==2)
|
|
52891
53200
|
{
|
|
@@ -53480,7 +53789,7 @@ function ChartCorssCursor()
|
|
|
53480
53789
|
var pixel=GetDevicePixelRatio();
|
|
53481
53790
|
this.Canvas.save();
|
|
53482
53791
|
this.Canvas.strokeStyle=this.HPenColor;
|
|
53483
|
-
if (this.HPenType==0) this.Canvas.setLineDash(
|
|
53792
|
+
if (this.HPenType==0) this.Canvas.setLineDash(this.LineDash); //虚线
|
|
53484
53793
|
|
|
53485
53794
|
//画竖线
|
|
53486
53795
|
this.Canvas.beginPath();
|
|
@@ -53494,7 +53803,7 @@ function ChartCorssCursor()
|
|
|
53494
53803
|
this.Canvas.strokeStyle=this.VPenColor;
|
|
53495
53804
|
if (this.VPenType==0)
|
|
53496
53805
|
{
|
|
53497
|
-
this.Canvas.setLineDash(
|
|
53806
|
+
this.Canvas.setLineDash(this.LineDash); //虚线
|
|
53498
53807
|
}
|
|
53499
53808
|
else if (this.VPenType==2)
|
|
53500
53809
|
{
|
|
@@ -56770,7 +57079,12 @@ function DynamicChartTitlePainting()
|
|
|
56770
57079
|
{
|
|
56771
57080
|
this.Font=g_JSChartResource.TitleFont;
|
|
56772
57081
|
this.TitleColor=g_JSChartResource.DefaultTextColor;
|
|
57082
|
+
this.SelectedColor=g_JSChartResource.IndexTitleSelectedColor;
|
|
56773
57083
|
this.OverlayIndexType.BGColor=g_JSChartResource.OverlayIndexTitleBGColor;
|
|
57084
|
+
|
|
57085
|
+
this.BGColor=g_JSChartResource.IndexTitleBGColor;
|
|
57086
|
+
this.BGBorderColor=g_JSChartResource.IndexTitleBorderColor;
|
|
57087
|
+
this.BGBorderMoveOnColor=g_JSChartResource.IndexTitleBorderMoveOnColor;
|
|
56774
57088
|
}
|
|
56775
57089
|
|
|
56776
57090
|
this.SetDynamicTitleData=function(outName, args, data)
|
|
@@ -70444,6 +70758,7 @@ function JSChartResource()
|
|
|
70444
70758
|
this.CorssCursorHPenColor="rgb(130,130,130)"; //十字光标线段颜色(水平)
|
|
70445
70759
|
this.CorssCursorVPenColor="rgb(130,130,130)"; //十字光标线段颜色(垂直)
|
|
70446
70760
|
this.CorssCursorXRangeBGColor="rgba(100,149,237,0.3)"; //十字光标X轴访问背景色
|
|
70761
|
+
this.CorssCursorLineDash=[3*GetDevicePixelRatio(),2*GetDevicePixelRatio()]; //十字光标虚线
|
|
70447
70762
|
|
|
70448
70763
|
this.CorssCursor=
|
|
70449
70764
|
{
|
|
@@ -70814,6 +71129,20 @@ function JSChartResource()
|
|
|
70814
71129
|
Offset:{ X:-5, Y:5 }
|
|
70815
71130
|
}
|
|
70816
71131
|
|
|
71132
|
+
this.ChartSimpleRadar=
|
|
71133
|
+
{
|
|
71134
|
+
TextFont:{ Family:'微软雅黑' , Size:12 },
|
|
71135
|
+
BorderColor:"rgb(169,169,169)",
|
|
71136
|
+
Offset:{ X:-5, Y:5 },
|
|
71137
|
+
TextColor:"rgb(105,105,105)",
|
|
71138
|
+
AryBGColor:['rgba(255,255,255,0.9)', 'rgba(230, 234, 242,0.9)'],
|
|
71139
|
+
AryArea:
|
|
71140
|
+
[
|
|
71141
|
+
{ Color:"rgba(242,154,118,0.4)", LineColor:"rgb(242,154,118)"},
|
|
71142
|
+
{ Color:"rgba(121,197,228,0.4)", LineColor:"rgb(92,165,196)"},
|
|
71143
|
+
],
|
|
71144
|
+
}
|
|
71145
|
+
|
|
70817
71146
|
//手机端tooltip
|
|
70818
71147
|
this.TooltipPaint = {
|
|
70819
71148
|
BGColor:'rgba(250,250,250,0.8)', //背景色
|
|
@@ -71864,6 +72193,7 @@ function JSChartResource()
|
|
|
71864
72193
|
if (style.CorssCursorHPenColor) this.CorssCursorHPenColor = style.CorssCursorHPenColor;
|
|
71865
72194
|
if (style.CorssCursorBorderColor) this.CorssCursorBorderColor=style.CorssCursorBorderColor;
|
|
71866
72195
|
if (style.CorssCursorXRangeBGColor) this.CorssCursorXRangeBGColor=style.CorssCursorXRangeBGColor;
|
|
72196
|
+
if (style.CorssCursorLineDash) this.CorssCursorLineDash=style.CorssCursorLineDash.slice();
|
|
71867
72197
|
if (style.CorssCursor && style.CorssCursor.RightButton)
|
|
71868
72198
|
{
|
|
71869
72199
|
var item=style.CorssCursor.RightButton;
|
|
@@ -72044,6 +72374,7 @@ function JSChartResource()
|
|
|
72044
72374
|
|
|
72045
72375
|
if (style.ChartSimpleTable) this.SetChartSimpleTable(style.ChartSimpleTable);
|
|
72046
72376
|
if (style.ChartSimplePie) this.SetChartSimplePie(style.ChartSimplePie);
|
|
72377
|
+
if (style.ChartSimpleRadar) this.SetChartSimpleRadar(style.ChartSimpleRadar);
|
|
72047
72378
|
|
|
72048
72379
|
if (style.DRAWICON)
|
|
72049
72380
|
{
|
|
@@ -73137,6 +73468,30 @@ function JSChartResource()
|
|
|
73137
73468
|
}
|
|
73138
73469
|
}
|
|
73139
73470
|
|
|
73471
|
+
this.SetChartSimpleRadar=function(style)
|
|
73472
|
+
{
|
|
73473
|
+
var dest=this.ChartSimpleRadar;
|
|
73474
|
+
if (style.TextFont)
|
|
73475
|
+
{
|
|
73476
|
+
var item=style.TextFont;
|
|
73477
|
+
if (item.Name) dest.TextFont.Name=item.Name;
|
|
73478
|
+
if (IFrameSplitOperator.IsNumber(item.Size)) dest.TextFont.Size=item.Size;
|
|
73479
|
+
}
|
|
73480
|
+
|
|
73481
|
+
if (style.BorderColor) dest.BorderColor=style.BorderColor;
|
|
73482
|
+
if (style.TextColor) dest.TextColor=style.TextColor;
|
|
73483
|
+
|
|
73484
|
+
if (style.Offset)
|
|
73485
|
+
{
|
|
73486
|
+
var item=style.Offset;
|
|
73487
|
+
if (IFrameSplitOperator.IsNumber(item.X)) dest.Offset.X=item.X;
|
|
73488
|
+
if (IFrameSplitOperator.IsNumber(item.Y)) dest.Offset.Y=item.Y;
|
|
73489
|
+
}
|
|
73490
|
+
|
|
73491
|
+
if (IFrameSplitOperator.IsNonEmptyArray(style.AryBGColor)) dest.AryBGColor=style.AryBGColor.slice();
|
|
73492
|
+
if (IFrameSplitOperator.IsNonEmptyArray(style.AryArea)) dest.AryArea=style.AryArea.slice();
|
|
73493
|
+
}
|
|
73494
|
+
|
|
73140
73495
|
}
|
|
73141
73496
|
|
|
73142
73497
|
var g_JSChartResource=new JSChartResource();
|
|
@@ -85903,12 +86258,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
85903
86258
|
this.CaclutateCallCationYRange();
|
|
85904
86259
|
}
|
|
85905
86260
|
|
|
86261
|
+
//增量更新
|
|
85906
86262
|
this.RecvUpdateMinuteData=function(data)
|
|
85907
86263
|
{
|
|
85908
86264
|
var minuteData=MinuteChartContainer.JsonDataToUpdateMinuteData(data);
|
|
85909
86265
|
var aryColorData=MinuteChartContainer.JsonDataToMinuteLineColorData(data);
|
|
85910
|
-
|
|
85911
|
-
this.AfterCloseData=null;
|
|
86266
|
+
|
|
85912
86267
|
var beforeOpenData=MinuteChartContainer.JsonDataToBeforeOpenData(data);
|
|
85913
86268
|
var afterCloseData=MinuteChartContainer.JsonDataToAfterCloseData(data);
|
|
85914
86269
|
var updateTime=MinuteChartContainer.JsonDataToMinuteLastUpdateTime(data); //数据最后的更新时间
|
|
@@ -85927,92 +86282,22 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
85927
86282
|
return;
|
|
85928
86283
|
}
|
|
85929
86284
|
|
|
85930
|
-
|
|
86285
|
+
if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
|
|
86286
|
+
if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
|
|
85931
86287
|
|
|
86288
|
+
//原始数据
|
|
85932
86289
|
this.UpdateLatestMinuteDataV2(minuteData);
|
|
85933
|
-
|
|
85934
|
-
var aryMinuteData=this.SourceData.Data;
|
|
85935
|
-
this.ColorLineData=aryColorData;
|
|
85936
|
-
this.TradeDate=data.stock[0].date;
|
|
85937
|
-
this.Frame.SetDayCount(1); //单日数据
|
|
85938
|
-
this.SourceData.UpdateTime=updateTime;
|
|
85939
|
-
this.Symbol=minuteData.Symbol;
|
|
85940
|
-
this.Name=minuteData.Name;
|
|
86290
|
+
this.UpdateMinuteUI(data.stock[0], {FunctionName:"RecvUpdateMinuteData"});
|
|
85941
86291
|
|
|
85942
|
-
|
|
85943
|
-
|
|
85944
|
-
if (this.ShareAfterVol==2) //盘前, 盘后成交量公用坐标
|
|
85945
|
-
{
|
|
85946
|
-
if (this.BeforeOpenData && this.AfterCloseData)
|
|
85947
|
-
{
|
|
85948
|
-
var max=Math.max(this.BeforeOpenData.VolMax, this.AfterCloseData.VolMax);
|
|
85949
|
-
var min=Math.min(this.BeforeOpenData.VolMin, this.AfterCloseData.VolMin);
|
|
85950
|
-
this.BeforeOpenData.VolMax=this.AfterCloseData.VolMax=max;
|
|
85951
|
-
this.BeforeOpenData.VolMin=this.AfterCloseData.VolMin=min;
|
|
85952
|
-
}
|
|
85953
|
-
}
|
|
85954
|
-
|
|
85955
|
-
var yClose=minuteData.YClose;
|
|
85956
|
-
var upperSymbol=this.Symbol.toUpperCase();
|
|
85957
|
-
var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);
|
|
85958
|
-
if (minuteData.YClearing>0 && isFutures) yClose=minuteData.YClearing; //期货使用前结算价
|
|
85959
|
-
this.CaclutateLimitPrice(yClose, minuteData.LimitPrice); //计算涨停价格
|
|
85960
|
-
var extendData=null;
|
|
85961
|
-
if (minuteData.High>0 && minuteData.Low>0) extendData={ High:minuteData.High, Low:minuteData.Low };
|
|
85962
|
-
this.BindMainData(sourceData,yClose, extendData);
|
|
85963
|
-
|
|
85964
|
-
if (this.Frame.SubFrame.length>2)
|
|
86292
|
+
if (data.AutoUpdate===false) //不执行自动更新
|
|
85965
86293
|
{
|
|
85966
|
-
var bindData=new ChartData();
|
|
85967
|
-
bindData.Data=aryMinuteData;
|
|
85968
|
-
for(var i=2; i<this.Frame.SubFrame.length; ++i)
|
|
85969
|
-
{
|
|
85970
|
-
this.BindIndexData(i,bindData);
|
|
85971
|
-
}
|
|
85972
|
-
}
|
|
85973
86294
|
|
|
85974
|
-
|
|
86295
|
+
}
|
|
86296
|
+
else
|
|
85975
86297
|
{
|
|
85976
|
-
|
|
85977
|
-
|
|
85978
|
-
item.Frame.XSplitOperator.DayCount=1;
|
|
85979
|
-
item.Frame.XSplitOperator.Operator(); //调整X轴个数
|
|
85980
|
-
item.Frame.YSplitOperator.Symbol=this.Symbol;
|
|
85981
|
-
|
|
85982
|
-
if (IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))
|
|
85983
|
-
{
|
|
85984
|
-
for(var j=0;j<item.OverlayIndex.length; ++j) //子坐标X轴个数同步
|
|
85985
|
-
{
|
|
85986
|
-
var overlayItem=item.OverlayIndex[j];
|
|
85987
|
-
overlayItem.Frame.XPointCount=item.Frame.XPointCount;
|
|
85988
|
-
overlayItem.Frame.MinuteCount=item.Frame.MinuteCount;
|
|
85989
|
-
}
|
|
85990
|
-
}
|
|
86298
|
+
this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
|
|
86299
|
+
this.AutoUpdate();
|
|
85991
86300
|
}
|
|
85992
|
-
|
|
85993
|
-
this.ChartCorssCursor.StringFormatY.Symbol=this.Symbol;
|
|
85994
|
-
this.ChartCorssCursor.StringFormatX.Symbol=this.Symbol;
|
|
85995
|
-
|
|
85996
|
-
if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol)) this.TitlePaint[0].IsShowDate=false;
|
|
85997
|
-
|
|
85998
|
-
if (data.stock[0].IsHistoryMinute==true) this.TitlePaint[0].IsShowDate=true;
|
|
85999
|
-
|
|
86000
|
-
var chartInfo=this.GetChartMinuteInfo();
|
|
86001
|
-
if (chartInfo) chartInfo.SourceData=this.SourceData; //数据绑定到信息地雷上
|
|
86002
|
-
|
|
86003
|
-
this.RecvMinuteDataEvent( {FunctionName:"RecvUpdateMinuteData"} );
|
|
86004
|
-
this.RequestMinuteInfoData();
|
|
86005
|
-
this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
|
|
86006
|
-
this.CreateChartDrawPictureByStorage(); //创建画图工具
|
|
86007
|
-
|
|
86008
|
-
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
86009
|
-
this.Frame.SetSizeChage(true);
|
|
86010
|
-
this.Draw();
|
|
86011
|
-
|
|
86012
|
-
this.BindAllOverlayIndexData(this.SourceData);
|
|
86013
|
-
|
|
86014
|
-
this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
|
|
86015
|
-
this.AutoUpdate();
|
|
86016
86301
|
}
|
|
86017
86302
|
|
|
86018
86303
|
this.RecvMinuteData=function(data)
|
|
@@ -86079,15 +86364,31 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
86079
86364
|
var sourceData=new ChartData();
|
|
86080
86365
|
sourceData.Data=aryMinuteData;
|
|
86081
86366
|
sourceData.UpdateTime=updateTime;
|
|
86367
|
+
this.SourceData=sourceData;
|
|
86082
86368
|
|
|
86083
86369
|
this.ColorLineData=aryColorData;
|
|
86084
86370
|
|
|
86085
|
-
this.
|
|
86371
|
+
this.UpdateMinuteUI(data.stock[0], {FunctionName:"RecvMinuteData", Day:{ IsFirstData:bFirstData} });
|
|
86372
|
+
|
|
86373
|
+
if (data.AutoUpdate===false) //不执行自动更新
|
|
86374
|
+
{
|
|
86375
|
+
|
|
86376
|
+
}
|
|
86377
|
+
else
|
|
86378
|
+
{
|
|
86379
|
+
this.AutoUpdateEvent(true, "MinuteChartContainer::RecvMinuteData");
|
|
86380
|
+
this.AutoUpdate();
|
|
86381
|
+
}
|
|
86382
|
+
}
|
|
86383
|
+
|
|
86384
|
+
//更新单日分时图
|
|
86385
|
+
this.UpdateMinuteUI=function(stockData, eventData)
|
|
86386
|
+
{
|
|
86387
|
+
this.TradeDate=stockData.date;
|
|
86086
86388
|
this.Frame.SetDayCount(1); //单日数据
|
|
86087
86389
|
|
|
86088
|
-
this.
|
|
86089
|
-
this.
|
|
86090
|
-
this.Name=data.stock[0].name;
|
|
86390
|
+
this.Symbol=stockData.symbol;
|
|
86391
|
+
this.Name=stockData.name;
|
|
86091
86392
|
|
|
86092
86393
|
this.SetCallCationDataBorder( { Left:this.IsBeforeData, Right:this.IsAfterData , MultiDay:{ Left:false, Right:false }} );
|
|
86093
86394
|
|
|
@@ -86102,26 +86403,26 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
86102
86403
|
}
|
|
86103
86404
|
}
|
|
86104
86405
|
|
|
86105
|
-
var yClose=
|
|
86406
|
+
var yClose=stockData.yclose;
|
|
86106
86407
|
var upperSymbol=this.Symbol.toUpperCase();
|
|
86107
86408
|
var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);
|
|
86108
|
-
if (
|
|
86109
|
-
this.CaclutateLimitPrice(yClose,
|
|
86409
|
+
if (stockData.yclearing>0 && isFutures) yClose=stockData.yclearing; //期货使用前结算价
|
|
86410
|
+
this.CaclutateLimitPrice(yClose, stockData.limitprice); //计算涨停价格
|
|
86110
86411
|
var extendData=null;
|
|
86111
|
-
if (
|
|
86112
|
-
this.BindMainData(
|
|
86412
|
+
if (stockData.high>0 && stockData.low>0) extendData={ High:stockData.high, Low:stockData.low };
|
|
86413
|
+
this.BindMainData(this.SourceData,yClose, extendData);
|
|
86113
86414
|
|
|
86114
86415
|
if (this.Frame.SubFrame.length>2)
|
|
86115
86416
|
{
|
|
86116
86417
|
var bindData=new ChartData();
|
|
86117
|
-
bindData.Data=
|
|
86418
|
+
bindData.Data=this.SourceData.Data;
|
|
86118
86419
|
for(var i=2; i<this.Frame.SubFrame.length; ++i)
|
|
86119
86420
|
{
|
|
86120
86421
|
this.BindIndexData(i,bindData);
|
|
86121
86422
|
}
|
|
86122
86423
|
}
|
|
86123
86424
|
|
|
86124
|
-
for(
|
|
86425
|
+
for(var i=0, j=0; i<this.Frame.SubFrame.length; ++i)
|
|
86125
86426
|
{
|
|
86126
86427
|
var item=this.Frame.SubFrame[i];
|
|
86127
86428
|
item.Frame.XSplitOperator.Symbol=this.Symbol;
|
|
@@ -86129,7 +86430,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
86129
86430
|
item.Frame.XSplitOperator.Operator(); //调整X轴个数
|
|
86130
86431
|
item.Frame.YSplitOperator.Symbol=this.Symbol;
|
|
86131
86432
|
|
|
86132
|
-
for(
|
|
86433
|
+
for(j=0;j<item.OverlayIndex.length;++j) //子坐标X轴个数同步
|
|
86133
86434
|
{
|
|
86134
86435
|
var overlayItem=item.OverlayIndex[j];
|
|
86135
86436
|
overlayItem.Frame.XPointCount=item.Frame.XPointCount;
|
|
@@ -86142,12 +86443,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
86142
86443
|
|
|
86143
86444
|
if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol)) this.TitlePaint[0].IsShowDate=false;
|
|
86144
86445
|
|
|
86145
|
-
if (
|
|
86446
|
+
if (stockData.IsHistoryMinute==true) this.TitlePaint[0].IsShowDate=true;
|
|
86146
86447
|
|
|
86147
86448
|
var chartInfo=this.GetChartMinuteInfo();
|
|
86148
86449
|
if (chartInfo) chartInfo.SourceData=this.SourceData; //数据绑定到信息地雷上
|
|
86149
86450
|
|
|
86150
|
-
this.RecvMinuteDataEvent(
|
|
86451
|
+
if (eventData) this.RecvMinuteDataEvent( eventData );
|
|
86151
86452
|
this.RequestMinuteInfoData();
|
|
86152
86453
|
this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
|
|
86153
86454
|
this.CreateChartDrawPictureByStorage(); //创建画图工具
|
|
@@ -86157,16 +86458,6 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
86157
86458
|
this.Draw();
|
|
86158
86459
|
|
|
86159
86460
|
this.BindAllOverlayIndexData(this.SourceData);
|
|
86160
|
-
|
|
86161
|
-
if (data.AutoUpdate===false) //不执行自动更新
|
|
86162
|
-
{
|
|
86163
|
-
|
|
86164
|
-
}
|
|
86165
|
-
else
|
|
86166
|
-
{
|
|
86167
|
-
this.AutoUpdateEvent(true, "MinuteChartContainer::RecvMinuteData");
|
|
86168
|
-
this.AutoUpdate();
|
|
86169
|
-
}
|
|
86170
86461
|
}
|
|
86171
86462
|
|
|
86172
86463
|
this.CaclutateLimitPrice=function(yClose, limitData)
|