hqchart 1.1.14320 → 1.1.14336
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 +243 -229
- package/package.json +1 -1
- package/src/jscommon/umychart.NetworkFilterTest.js +75 -1
- package/src/jscommon/umychart.complier.js +151 -22
- package/src/jscommon/umychart.js +542 -222
- package/src/jscommon/umychart.style.js +14 -0
- package/src/jscommon/umychart.testdata.js +75 -1
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +708 -245
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +75 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +708 -245
|
@@ -6815,6 +6815,9 @@ var JSCHART_MENU_ID=
|
|
|
6815
6815
|
CMD_MODIFY_INDEX_PARAM:45, //指标删除修改 [windowIndex, ]
|
|
6816
6816
|
CMD_MODIFY_OVERLAY_INDEX_PARAM:46, //叠加指标修改 [windowIndex, ID ]
|
|
6817
6817
|
|
|
6818
|
+
CMD_LOCK_CROSSCURSOR:47, //锁十字光标
|
|
6819
|
+
CMD_UNLOCK_CROSSCURSOR:48, //解锁十字光标
|
|
6820
|
+
|
|
6818
6821
|
|
|
6819
6822
|
CMD_REPORT_CHANGE_BLOCK_ID:100, //报价列表 切换板块ID
|
|
6820
6823
|
CMD_REPORT_COLUMN_SORT_ID:101, //报价列表 表头排序 Arg[列序号, 排序方向]
|
|
@@ -14156,6 +14159,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
14156
14159
|
var sendData={ e:null, WindowIndex:param, Type:2, Identify:aryArgs[1] };
|
|
14157
14160
|
this.ShowModifyIndexParamDialog(sendData);
|
|
14158
14161
|
break;
|
|
14162
|
+
case JSCHART_MENU_ID.CMD_LOCK_CROSSCURSOR:
|
|
14163
|
+
if (srcParam) this.LockCorssCursor(srcParam);
|
|
14164
|
+
break;
|
|
14165
|
+
case JSCHART_MENU_ID.CMD_UNLOCK_CROSSCURSOR:
|
|
14166
|
+
if (this.IsLockCorssCursor()) this.UnlockCorssCursor({ Draw:true })
|
|
14167
|
+
break;
|
|
14159
14168
|
}
|
|
14160
14169
|
}
|
|
14161
14170
|
|
|
@@ -14242,13 +14251,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
14242
14251
|
if (!this.JSPopMenu) return;
|
|
14243
14252
|
var x=data.X, y=data.Y;
|
|
14244
14253
|
var frameID=data.FrameID;
|
|
14245
|
-
var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
14254
|
+
var menuData={ Menu:this.GetRightMenuData(frameID, data), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
14246
14255
|
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
14247
14256
|
|
|
14248
14257
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_RIGHT_MENU);
|
|
14249
14258
|
if (event && event.Callback)
|
|
14250
14259
|
{
|
|
14251
|
-
var sendData={ MenuData:menuData, FrameID:frameID };
|
|
14260
|
+
var sendData={ MenuData:menuData, FrameID:frameID, Data:data };
|
|
14252
14261
|
event.Callback(event, sendData, this);
|
|
14253
14262
|
}
|
|
14254
14263
|
|
|
@@ -24665,9 +24674,9 @@ function HQTradeFrame()
|
|
|
24665
24674
|
return null;
|
|
24666
24675
|
}
|
|
24667
24676
|
|
|
24668
|
-
this.GetXFromIndex=function(index)
|
|
24677
|
+
this.GetXFromIndex=function(index,isLimit)
|
|
24669
24678
|
{
|
|
24670
|
-
return this.SubFrame[0].Frame.GetXFromIndex(index);
|
|
24679
|
+
return this.SubFrame[0].Frame.GetXFromIndex(index,isLimit);
|
|
24671
24680
|
}
|
|
24672
24681
|
|
|
24673
24682
|
this.GetYFromData=function(value)
|
|
@@ -27667,15 +27676,15 @@ function ChartData()
|
|
|
27667
27676
|
this.FindDataIndexByDateTime=function(aryDateTime) //aryDateTime=[ { Date:, Time:, Index:-1 }, ......]
|
|
27668
27677
|
{
|
|
27669
27678
|
var findCount=0;
|
|
27670
|
-
for(var i
|
|
27679
|
+
for(var i=0;i<aryDateTime.length;++i)
|
|
27671
27680
|
{
|
|
27672
27681
|
aryDateTime[i].Index=-1;
|
|
27673
27682
|
}
|
|
27674
27683
|
|
|
27675
|
-
for(var i
|
|
27684
|
+
for(var i=0;i<this.Data.length;++i)
|
|
27676
27685
|
{
|
|
27677
27686
|
var item=this.Data[i];
|
|
27678
|
-
for(var j
|
|
27687
|
+
for(var j=0;j<aryDateTime.length;++j)
|
|
27679
27688
|
{
|
|
27680
27689
|
var findItem=aryDateTime[j];
|
|
27681
27690
|
if (findItem.Index>=0) continue;
|
|
@@ -27684,7 +27693,7 @@ function ChartData()
|
|
|
27684
27693
|
{
|
|
27685
27694
|
if (findItem.Date==item.Date && findItem.Time==item.Time)
|
|
27686
27695
|
{
|
|
27687
|
-
findItem.Index=
|
|
27696
|
+
findItem.Index=i;
|
|
27688
27697
|
++findCount;
|
|
27689
27698
|
break;
|
|
27690
27699
|
}
|
|
@@ -27693,7 +27702,7 @@ function ChartData()
|
|
|
27693
27702
|
{
|
|
27694
27703
|
if (findItem.Date==item.Date)
|
|
27695
27704
|
{
|
|
27696
|
-
findItem.Index=
|
|
27705
|
+
findItem.Index=i;
|
|
27697
27706
|
++findCount;
|
|
27698
27707
|
break;
|
|
27699
27708
|
}
|
|
@@ -28317,6 +28326,30 @@ ChartData.GetPeriodName=function(period)
|
|
|
28317
28326
|
}
|
|
28318
28327
|
|
|
28319
28328
|
|
|
28329
|
+
ChartData.GetKValue=function(kItem, valueName)
|
|
28330
|
+
{
|
|
28331
|
+
if (!kItem) return null;
|
|
28332
|
+
|
|
28333
|
+
switch(valueName)
|
|
28334
|
+
{
|
|
28335
|
+
case "HIGH":
|
|
28336
|
+
case "H":
|
|
28337
|
+
return kItem.High;
|
|
28338
|
+
case "L":
|
|
28339
|
+
case "LOW":
|
|
28340
|
+
return kItem.Low;
|
|
28341
|
+
case "C":
|
|
28342
|
+
case "CLOSE":
|
|
28343
|
+
return kItem.Close;
|
|
28344
|
+
case "O":
|
|
28345
|
+
case "OPEN":
|
|
28346
|
+
return KItem.Open;
|
|
28347
|
+
default:
|
|
28348
|
+
return null;
|
|
28349
|
+
}
|
|
28350
|
+
}
|
|
28351
|
+
|
|
28352
|
+
|
|
28320
28353
|
|
|
28321
28354
|
function TooltipData() //提示信息
|
|
28322
28355
|
{
|
|
@@ -35907,199 +35940,292 @@ function ChartSimpleRadar()
|
|
|
35907
35940
|
delete this.newMethod;
|
|
35908
35941
|
|
|
35909
35942
|
this.ClassName='ChartSimpleRadar'; //类名
|
|
35910
|
-
|
|
35911
|
-
this.
|
|
35912
|
-
this.CenterPoint={};
|
|
35913
|
-
this.StartAngle=0;
|
|
35914
|
-
this.Color='rgb(198,198,198)';
|
|
35915
|
-
this.AreaColor='rgba(242,154,118,0.4)'; //面积图颜色
|
|
35943
|
+
|
|
35944
|
+
this.AreaColor='rgba(242,154,118,0.4)'; //
|
|
35916
35945
|
this.AreaLineColor='rgb(242,154,118)';
|
|
35917
|
-
|
|
35918
|
-
this.TitleColor=
|
|
35919
|
-
this.
|
|
35946
|
+
|
|
35947
|
+
this.TitleColor=g_JSChartResource.ChartSimpleRadar.TextColor;
|
|
35948
|
+
this.TextFontConfig=CloneData(g_JSChartResource.ChartSimpleRadar.TextFont);
|
|
35949
|
+
this.Offset=CloneData(g_JSChartResource.ChartSimpleRadar.Offset);
|
|
35950
|
+
this.BorderColor=g_JSChartResource.ChartSimpleRadar.BorderColor;
|
|
35951
|
+
this.AryBGColor=g_JSChartResource.ChartSimpleRadar.AryBGColor.slice();//背景色
|
|
35952
|
+
this.AryAreaConfig=g_JSChartResource.ChartSimpleRadar.AryArea.slice(); //面积图颜色
|
|
35953
|
+
|
|
35954
|
+
this.StartAngle=270;
|
|
35955
|
+
this.Radius=50;
|
|
35956
|
+
this.AryBorder=[1, 0.75, 0.5, 0.25];
|
|
35957
|
+
this.AryIndex; //指标{ Name:, Max:100, Min:0 },
|
|
35920
35958
|
|
|
35921
|
-
this.
|
|
35959
|
+
this.CenterPoint={};
|
|
35960
|
+
this.RectClient={ };
|
|
35961
|
+
this.AryIndexCache=[];
|
|
35962
|
+
this.MapDataCache=new Map(); //key=name value={ Data:[] }
|
|
35963
|
+
this.TextFont;
|
|
35964
|
+
|
|
35965
|
+
|
|
35966
|
+
this.ReloadResource=function(resource)
|
|
35922
35967
|
{
|
|
35923
|
-
|
|
35968
|
+
this.TitleColor=g_JSChartResource.ChartSimpleRadar.TextColor;
|
|
35969
|
+
this.TextFontConfig=CloneData(g_JSChartResource.ChartSimpleRadar.TextFont);
|
|
35970
|
+
this.Offset=CloneData(g_JSChartResource.ChartSimpleRadar.Offset);
|
|
35971
|
+
this.BorderColor=g_JSChartResource.ChartSimpleRadar.BorderColor;
|
|
35972
|
+
this.AryBGColor=g_JSChartResource.ChartSimpleRadar.AryBGColor.slice();//背景色
|
|
35973
|
+
this.AryAreaConfig=g_JSChartResource.ChartSimpleRadar.AryArea.slice(); //面积图颜色
|
|
35974
|
+
}
|
|
35924
35975
|
|
|
35925
|
-
|
|
35926
|
-
|
|
35927
|
-
|
|
35928
|
-
|
|
35976
|
+
this.DrawBorder=function() //画边框
|
|
35977
|
+
{
|
|
35978
|
+
this.Canvas.strokeStyle = this.BorderColor;
|
|
35979
|
+
this.Canvas.font=this.TextFont;
|
|
35980
|
+
for(var i=0;i<this.AryBorder.length;++i)
|
|
35929
35981
|
{
|
|
35930
|
-
var rate =
|
|
35931
|
-
var
|
|
35932
|
-
|
|
35982
|
+
var rate = this.AryBorder[i];
|
|
35983
|
+
var radius=this.RectClient.Radius*rate;
|
|
35984
|
+
var bFirstDraw=true;
|
|
35985
|
+
for(var j=0;j<this.AryIndexCache.length;++j)
|
|
35933
35986
|
{
|
|
35934
|
-
var item=this.
|
|
35935
|
-
|
|
35936
|
-
|
|
35937
|
-
if (
|
|
35987
|
+
var item=this.AryIndexCache[j];
|
|
35988
|
+
var x = this.CenterPoint.X + radius * Math.cos(item.Angle * Math.PI / 180);
|
|
35989
|
+
var y = this.CenterPoint.Y + radius * Math.sin(item.Angle * Math.PI / 180);
|
|
35990
|
+
if (bFirstDraw)
|
|
35938
35991
|
{
|
|
35939
35992
|
this.Canvas.beginPath();
|
|
35940
|
-
this.Canvas.moveTo(
|
|
35941
|
-
|
|
35993
|
+
this.Canvas.moveTo(x,y);
|
|
35994
|
+
bFirstDraw=false;
|
|
35942
35995
|
}
|
|
35943
35996
|
else
|
|
35944
35997
|
{
|
|
35945
|
-
this.Canvas.lineTo(
|
|
35998
|
+
this.Canvas.lineTo(x,y);
|
|
35946
35999
|
}
|
|
35947
36000
|
}
|
|
35948
36001
|
|
|
35949
36002
|
this.Canvas.closePath();
|
|
35950
36003
|
this.Canvas.stroke();
|
|
35951
|
-
|
|
35952
|
-
this.
|
|
36004
|
+
|
|
36005
|
+
if (IFrameSplitOperator.IsNonEmptyArray(this.AryBGColor))
|
|
36006
|
+
{
|
|
36007
|
+
this.Canvas.fillStyle = this.AryBGColor[i%this.AryBGColor.length];
|
|
36008
|
+
this.Canvas.fill();
|
|
36009
|
+
}
|
|
35953
36010
|
}
|
|
35954
36011
|
|
|
35955
36012
|
this.Canvas.beginPath();
|
|
35956
|
-
for(
|
|
36013
|
+
for(var i=0;i<this.AryIndexCache.length;++i)
|
|
35957
36014
|
{
|
|
35958
|
-
var item=this.
|
|
35959
|
-
|
|
35960
|
-
|
|
36015
|
+
var item=this.AryIndexCache[i];
|
|
36016
|
+
var x = this.CenterPoint.X + item.Radius * Math.cos(item.Angle * Math.PI / 180);
|
|
36017
|
+
var y = this.CenterPoint.Y + item.Radius * Math.sin(item.Angle * Math.PI / 180);
|
|
35961
36018
|
this.Canvas.moveTo(this.CenterPoint.X,this.CenterPoint.Y);
|
|
35962
|
-
this.Canvas.lineTo(
|
|
35963
|
-
this.DrawText(item);
|
|
36019
|
+
this.Canvas.lineTo(x,y);
|
|
36020
|
+
this.DrawText(item, x, y);
|
|
35964
36021
|
}
|
|
35965
36022
|
this.Canvas.stroke();
|
|
36023
|
+
|
|
36024
|
+
}
|
|
36025
|
+
|
|
36026
|
+
this.GetRadarRate=function(indexItem, value)
|
|
36027
|
+
{
|
|
36028
|
+
var range={ Max:100, Min:0 };
|
|
36029
|
+
if (IFrameSplitOperator.IsNumber(indexItem.Max)) range.Max=indexItem.Max;
|
|
36030
|
+
if (IFrameSplitOperator.IsNumber(indexItem.Min)) range.Min=indexItem.Min;
|
|
36031
|
+
|
|
36032
|
+
if (value>range.Max) value=range.Max;
|
|
36033
|
+
else if (value<range.Min) value=range.Min;
|
|
36034
|
+
|
|
36035
|
+
return (value-range.Min)/(range.Max-range.Min);
|
|
35966
36036
|
}
|
|
35967
36037
|
|
|
35968
36038
|
this.DrawArea=function()
|
|
35969
36039
|
{
|
|
35970
|
-
if (
|
|
36040
|
+
if (this.MapDataCache.size<=0) return;
|
|
35971
36041
|
|
|
35972
|
-
|
|
35973
|
-
|
|
35974
|
-
this.Canvas.beginPath();
|
|
35975
|
-
var isFirstDraw=true;
|
|
35976
|
-
for(let i in this.DataPoint)
|
|
36042
|
+
var index=0;
|
|
36043
|
+
for(var mapItem of this.MapDataCache)
|
|
35977
36044
|
{
|
|
35978
|
-
var
|
|
35979
|
-
|
|
36045
|
+
var mapData=mapItem[1].MapData;
|
|
36046
|
+
|
|
36047
|
+
var bFirstDraw=true;
|
|
36048
|
+
var pointCount=0;
|
|
36049
|
+
for(var i=0;i<this.AryIndexCache.length;++i)
|
|
35980
36050
|
{
|
|
35981
|
-
this.
|
|
35982
|
-
|
|
35983
|
-
|
|
36051
|
+
var indexItem=this.AryIndexCache[i];
|
|
36052
|
+
if (!indexItem.Data || !indexItem.Data.Name) continue;
|
|
36053
|
+
if (!mapData.has(indexItem.Data.Name)) continue;
|
|
36054
|
+
var item=mapData.get(indexItem.Data.Name);
|
|
36055
|
+
if (!item.Data && !IFrameSplitOperator.IsNumber(item.Data.Value)) conintue;
|
|
36056
|
+
|
|
36057
|
+
var widthRate=this.GetRadarRate(indexItem, item.Data.Value);
|
|
36058
|
+
var x = this.CenterPoint.X+indexItem.Radius*widthRate*Math.cos(indexItem.Angle * Math.PI / 180);
|
|
36059
|
+
var y = this.CenterPoint.Y+indexItem.Radius*widthRate*Math.sin(indexItem.Angle * Math.PI / 180);
|
|
36060
|
+
|
|
36061
|
+
if (bFirstDraw)
|
|
36062
|
+
{
|
|
36063
|
+
this.Canvas.beginPath();
|
|
36064
|
+
this.Canvas.moveTo(x,y);
|
|
36065
|
+
bFirstDraw=false;
|
|
36066
|
+
++pointCount;
|
|
36067
|
+
}
|
|
36068
|
+
else
|
|
36069
|
+
{
|
|
36070
|
+
this.Canvas.lineTo(x,y);
|
|
36071
|
+
++pointCount;
|
|
36072
|
+
}
|
|
35984
36073
|
}
|
|
35985
|
-
|
|
36074
|
+
|
|
36075
|
+
if (pointCount>0)
|
|
35986
36076
|
{
|
|
35987
|
-
this.Canvas.
|
|
36077
|
+
this.Canvas.closePath();
|
|
36078
|
+
|
|
36079
|
+
var config=this.AryAreaConfig[index%this.AryAreaConfig.length];
|
|
36080
|
+
if (config.Color)
|
|
36081
|
+
{
|
|
36082
|
+
this.Canvas.fillStyle = config.Color;
|
|
36083
|
+
this.Canvas.fill();
|
|
36084
|
+
}
|
|
36085
|
+
|
|
36086
|
+
if (config.LineColor)
|
|
36087
|
+
{
|
|
36088
|
+
this.Canvas.strokeStyle = config.LineColor;
|
|
36089
|
+
this.Canvas.stroke();
|
|
36090
|
+
}
|
|
35988
36091
|
}
|
|
35989
|
-
}
|
|
35990
36092
|
|
|
35991
|
-
|
|
35992
|
-
|
|
35993
|
-
this.Canvas.stroke();
|
|
36093
|
+
++index;
|
|
36094
|
+
}
|
|
35994
36095
|
}
|
|
35995
36096
|
|
|
35996
|
-
this.DrawText=function(item)
|
|
36097
|
+
this.DrawText=function(item, x, y)
|
|
35997
36098
|
{
|
|
35998
|
-
if (!item.
|
|
36099
|
+
if (!item.Data || !item.Data.Name) return;
|
|
35999
36100
|
|
|
36000
36101
|
//JSConsole.Chart.Log(item.Text, item.Angle);
|
|
36001
36102
|
this.Canvas.fillStyle = this.TitleColor;
|
|
36002
|
-
var xText =
|
|
36103
|
+
var xText = x, yText =y;
|
|
36104
|
+
|
|
36105
|
+
var angle=item.Angle%360;
|
|
36003
36106
|
|
|
36004
36107
|
//显示每个角度的位置
|
|
36005
|
-
if (
|
|
36108
|
+
if (angle > 0 && angle < 45) {
|
|
36006
36109
|
this.Canvas.textAlign = 'left';
|
|
36007
36110
|
this.Canvas.textBaseline = 'middle';
|
|
36008
36111
|
xText += 2;
|
|
36009
36112
|
}
|
|
36010
|
-
else if (
|
|
36113
|
+
else if (angle >= 45 && angle < 90) {
|
|
36011
36114
|
this.Canvas.textAlign = 'left';
|
|
36012
36115
|
this.Canvas.textBaseline = 'top';
|
|
36013
36116
|
xText += 2;
|
|
36014
36117
|
}
|
|
36015
|
-
else if (
|
|
36118
|
+
else if (angle==90)
|
|
36119
|
+
{
|
|
36120
|
+
this.Canvas.textAlign = 'center';
|
|
36121
|
+
this.Canvas.textBaseline = 'top';
|
|
36122
|
+
yText+=2;
|
|
36123
|
+
}
|
|
36124
|
+
else if (angle >= 90 && angle < 135) {
|
|
36016
36125
|
this.Canvas.textAlign = 'right';
|
|
36017
36126
|
this.Canvas.textBaseline = 'top';
|
|
36018
36127
|
xText -= 2;
|
|
36019
36128
|
}
|
|
36020
|
-
else if (
|
|
36129
|
+
else if (angle >= 135 && angle < 180) {
|
|
36021
36130
|
this.Canvas.textAlign = 'right';
|
|
36022
36131
|
this.Canvas.textBaseline = 'top';
|
|
36023
36132
|
xText -= 2;
|
|
36024
36133
|
}
|
|
36025
|
-
else if (
|
|
36134
|
+
else if (angle >= 180 && angle < 225) {
|
|
36026
36135
|
this.Canvas.textAlign = 'right';
|
|
36027
36136
|
this.Canvas.textBaseline = 'middle';
|
|
36028
36137
|
xText -= 2;
|
|
36029
36138
|
}
|
|
36030
|
-
else if (
|
|
36139
|
+
else if (angle >= 225 && angle <= 270) {
|
|
36031
36140
|
this.Canvas.textAlign = 'center';
|
|
36032
36141
|
this.Canvas.textBaseline = 'bottom';
|
|
36033
36142
|
}
|
|
36034
|
-
else if (
|
|
36143
|
+
else if (angle > 270 && angle < 315) {
|
|
36035
36144
|
this.Canvas.textAlign = 'left';
|
|
36036
36145
|
this.Canvas.textBaseline = 'bottom';
|
|
36037
36146
|
xText += 2;
|
|
36038
36147
|
}
|
|
36039
|
-
else
|
|
36148
|
+
else
|
|
36149
|
+
{
|
|
36040
36150
|
this.Canvas.textAlign = 'left';
|
|
36041
36151
|
this.Canvas.textBaseline = 'middle';
|
|
36042
36152
|
xText += 2;
|
|
36043
36153
|
}
|
|
36044
36154
|
|
|
36045
|
-
this.Canvas.fillText(item.
|
|
36155
|
+
this.Canvas.fillText(item.Data.Name, xText, yText);
|
|
36046
36156
|
}
|
|
36047
36157
|
|
|
36048
36158
|
this.Draw=function()
|
|
36049
36159
|
{
|
|
36050
|
-
this.
|
|
36051
|
-
this.
|
|
36052
|
-
this.
|
|
36053
|
-
|
|
36054
|
-
|
|
36055
|
-
else
|
|
36056
|
-
this.CalculatePoints(this.Data.Data);
|
|
36160
|
+
this.AryIndexCache=[];
|
|
36161
|
+
this.MapData=new Map();
|
|
36162
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIndex)) return;
|
|
36163
|
+
|
|
36164
|
+
this.CalculateSize();
|
|
36057
36165
|
|
|
36058
36166
|
this.DrawBorder();
|
|
36167
|
+
|
|
36059
36168
|
this.DrawArea();
|
|
36060
36169
|
}
|
|
36061
36170
|
|
|
36062
|
-
this.
|
|
36171
|
+
this.BuildCacheData=function()
|
|
36063
36172
|
{
|
|
36064
|
-
|
|
36065
|
-
let right=this.ChartBorder.GetRight();
|
|
36066
|
-
let top=this.ChartBorder.GetTop();
|
|
36067
|
-
let bottom=this.ChartBorder.GetBottom();
|
|
36068
|
-
let width=this.ChartBorder.GetWidth();
|
|
36069
|
-
let height=this.ChartBorder.GetHeight();
|
|
36173
|
+
this.MapDataCache=new Map();
|
|
36070
36174
|
|
|
36071
|
-
|
|
36072
|
-
let radius=Math.min(width/2,height/2)-2 //半径
|
|
36073
|
-
let count=Math.max(5,data?data.length:0);
|
|
36074
|
-
let averageAngle=360/count;
|
|
36075
|
-
for(let i=0;i<count;++i)
|
|
36175
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
36076
36176
|
{
|
|
36077
|
-
|
|
36078
|
-
|
|
36177
|
+
var item=this.Data.Data[i];
|
|
36178
|
+
if (!this.MapDataCache.has(item.Group))
|
|
36179
|
+
{
|
|
36180
|
+
this.MapDataCache.set(item.Group, { MapData:new Map() })
|
|
36181
|
+
}
|
|
36182
|
+
|
|
36183
|
+
var mpaItem=this.MapDataCache.get(item.Group);
|
|
36184
|
+
mpaItem.MapData.set(item.Name, { Data:item });
|
|
36185
|
+
}
|
|
36186
|
+
}
|
|
36187
|
+
|
|
36188
|
+
this.CalculateSize=function(data)
|
|
36189
|
+
{
|
|
36190
|
+
var border=this.ChartBorder.GetBorder();
|
|
36191
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
36192
|
+
this.TextFont=`${this.TextFontConfig.Size*pixelRatio}px ${ this.TextFontConfig.Name}`;
|
|
36193
|
+
var fontHeight=this.GetFontHeight(this.TextFont,"擎")+1;
|
|
36079
36194
|
|
|
36080
|
-
|
|
36195
|
+
var maxTextWidth=0;
|
|
36196
|
+
if (IFrameSplitOperator.IsNonEmptyArray(this.AryIndex))
|
|
36197
|
+
{
|
|
36198
|
+
for(var i=0;i<this.AryIndex.length;++i)
|
|
36081
36199
|
{
|
|
36082
|
-
var item=
|
|
36083
|
-
|
|
36084
|
-
|
|
36085
|
-
if (
|
|
36086
|
-
|
|
36087
|
-
|
|
36088
|
-
|
|
36089
|
-
|
|
36090
|
-
|
|
36091
|
-
|
|
36092
|
-
|
|
36093
|
-
|
|
36094
|
-
|
|
36095
|
-
ptData.X=ptCenter.X+dataRadius*Math.cos(angle*Math.PI/180);
|
|
36096
|
-
ptData.Y=ptCenter.Y+dataRadius*Math.sin(angle*Math.PI/180);
|
|
36097
|
-
}
|
|
36200
|
+
var item=this.AryIndex[i];
|
|
36201
|
+
if (!item.Name) continue;
|
|
36202
|
+
var textWidth=this.Canvas.measureText(item.Name).width;
|
|
36203
|
+
if (maxTextWidth<textWidth) maxTextWidth=textWidth;
|
|
36204
|
+
}
|
|
36205
|
+
}
|
|
36206
|
+
|
|
36207
|
+
var radius=this.Radius*2*pixelRatio; //半径
|
|
36208
|
+
this.RectClient={ Width:radius*2, Height:radius*2, Radius:radius };
|
|
36209
|
+
this.RectClient.Right=border.Right+this.Offset.X-maxTextWidth;
|
|
36210
|
+
this.RectClient.Top=border.TopEx+this.Offset.Y+fontHeight;
|
|
36211
|
+
this.RectClient.Left=this.RectClient.Right-this.RectClient.Width;
|
|
36212
|
+
this.RectClient.Bottom=this.RectClient.Top+this.RectClient.Height;
|
|
36098
36213
|
|
|
36099
|
-
|
|
36214
|
+
var ptCenter={X:this.RectClient.Left+this.RectClient.Width/2, Y:this.RectClient.Top+this.RectClient.Height/2}; //中心点
|
|
36215
|
+
|
|
36216
|
+
var count=Math.max(5,this.AryIndex.length);
|
|
36217
|
+
var averageAngle=360/count;
|
|
36218
|
+
for(var i=0;i<count;++i)
|
|
36219
|
+
{
|
|
36220
|
+
var angle=i*averageAngle+this.StartAngle;
|
|
36221
|
+
|
|
36222
|
+
var indexItem={ Data:null, Index:i, Angle:angle, Radius:radius };
|
|
36223
|
+
if (this.AryIndex && this.AryIndex[i])
|
|
36224
|
+
{
|
|
36225
|
+
indexItem.Data=this.AryIndex[i];
|
|
36100
36226
|
}
|
|
36101
36227
|
|
|
36102
|
-
this.
|
|
36228
|
+
this.AryIndexCache.push(indexItem);
|
|
36103
36229
|
}
|
|
36104
36230
|
|
|
36105
36231
|
this.CenterPoint=ptCenter;
|
|
@@ -36108,7 +36234,7 @@ function ChartSimpleRadar()
|
|
|
36108
36234
|
//空数据
|
|
36109
36235
|
this.DrawEmptyData=function()
|
|
36110
36236
|
{
|
|
36111
|
-
JSConsole.Chart.Log('[
|
|
36237
|
+
JSConsole.Chart.Log('[ChartSimpleRadar::DrawEmptyData]')
|
|
36112
36238
|
}
|
|
36113
36239
|
}
|
|
36114
36240
|
|
|
@@ -44764,98 +44890,219 @@ function ChartMultiPoint()
|
|
|
44764
44890
|
delete this.newMethod;
|
|
44765
44891
|
|
|
44766
44892
|
this.ClassName="ChartMultiPoint";
|
|
44767
|
-
this.PointGroup=[]; // [ {Point:[ {
|
|
44893
|
+
this.PointGroup=[]; // [ {Point:[ {Date, Time, Value }, ], Color: }, ]
|
|
44768
44894
|
|
|
44769
44895
|
|
|
44770
44896
|
this.IsHScreen=false;
|
|
44771
44897
|
this.LineWidth=1;
|
|
44772
44898
|
this.PointRadius=5;
|
|
44773
44899
|
|
|
44900
|
+
this.MapCache=null; //key=date/date-time value={ Data:[] }
|
|
44901
|
+
this.GetKValue=ChartData.GetKValue;
|
|
44902
|
+
|
|
44903
|
+
this.BuildKey=function(item)
|
|
44904
|
+
{
|
|
44905
|
+
if (IFrameSplitOperator.IsNumber(item.Time)) return `${item.Date}-${item.Time}`;
|
|
44906
|
+
else return item.Date;
|
|
44907
|
+
}
|
|
44908
|
+
|
|
44909
|
+
this.GetItem=function(kItem)
|
|
44910
|
+
{
|
|
44911
|
+
if (!this.MapCache || this.MapCache.size<=0) return null;
|
|
44912
|
+
|
|
44913
|
+
var key=this.BuildKey(kItem);
|
|
44914
|
+
if (!this.MapCache.has(key)) return null;
|
|
44915
|
+
|
|
44916
|
+
return this.MapCache.get(key);
|
|
44917
|
+
}
|
|
44918
|
+
|
|
44919
|
+
this.BuildCacheData=function()
|
|
44920
|
+
{
|
|
44921
|
+
var mapData=new Map();
|
|
44922
|
+
this.MapCache=mapData;
|
|
44923
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.PointGroup)) return;
|
|
44924
|
+
|
|
44925
|
+
for(var i=0; i<this.PointGroup.length; ++i)
|
|
44926
|
+
{
|
|
44927
|
+
var groupItem=this.PointGroup[i];
|
|
44928
|
+
if (!groupItem || !IFrameSplitOperator.IsNonEmptyArray(groupItem.Point)) continue;
|
|
44929
|
+
|
|
44930
|
+
var clrConfig= { Color:groupItem.Color, BGColor:groupItem.BGColor, LineWidth:this.LineWidth, Radius:this.PointRadius, Name:groupItem.Name };
|
|
44931
|
+
if (IFrameSplitOperator.IsNumber(groupItem.PointRadius)) clrConfig.Radius=groupItem.PointRadius;
|
|
44932
|
+
|
|
44933
|
+
for(var j=0; j<groupItem.Point.length; ++j)
|
|
44934
|
+
{
|
|
44935
|
+
var point=groupItem.Point[j];
|
|
44936
|
+
var key=this.BuildKey(point);
|
|
44937
|
+
|
|
44938
|
+
var item={ Data:point, ColorConfig:clrConfig }
|
|
44939
|
+
if (mapData.has(key))
|
|
44940
|
+
{
|
|
44941
|
+
var mapItem=mapData.get(key);
|
|
44942
|
+
mapItem.Data.push(item);
|
|
44943
|
+
}
|
|
44944
|
+
else
|
|
44945
|
+
{
|
|
44946
|
+
mapData.set(key,{ Data:[item] });
|
|
44947
|
+
}
|
|
44948
|
+
}
|
|
44949
|
+
}
|
|
44950
|
+
}
|
|
44951
|
+
|
|
44774
44952
|
this.Draw=function()
|
|
44775
44953
|
{
|
|
44776
|
-
if (!this.IsShow || this.ChartFrame.IsMinSize) return;
|
|
44777
|
-
if (
|
|
44954
|
+
if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
|
|
44955
|
+
if (this.IsShowIndexTitleOnly()) return;
|
|
44956
|
+
if (this.IsHideScriptIndex()) return;
|
|
44957
|
+
|
|
44958
|
+
if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return; //k线数据
|
|
44778
44959
|
if (!IFrameSplitOperator.IsNonEmptyArray(this.PointGroup)) return;
|
|
44960
|
+
if (!this.MapCache || this.MapCache.size<=0) return;
|
|
44779
44961
|
|
|
44780
44962
|
this.IsHScreen=(this.ChartFrame.IsHScreen===true);
|
|
44781
44963
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
44782
|
-
var
|
|
44783
|
-
var
|
|
44964
|
+
var dataWidth=this.ChartFrame.DataWidth;
|
|
44965
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
44966
|
+
var isMinute=this.IsMinuteFrame();
|
|
44967
|
+
|
|
44968
|
+
var border=this.GetBorder();
|
|
44969
|
+
if (this.IsHScreen)
|
|
44970
|
+
{
|
|
44971
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
44972
|
+
var chartright=border.BottomEx;
|
|
44973
|
+
var chartLeft=border.TopEx;
|
|
44974
|
+
}
|
|
44975
|
+
else
|
|
44976
|
+
{
|
|
44977
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
44978
|
+
var chartright=border.RightEx;
|
|
44979
|
+
var chartLeft=border.LeftEx;
|
|
44980
|
+
}
|
|
44981
|
+
|
|
44982
|
+
//计算所有的点位置
|
|
44983
|
+
var mapPoint=new Map();
|
|
44984
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
44985
|
+
{
|
|
44986
|
+
var kItem=this.Data.Data[i];
|
|
44987
|
+
var key=this.BuildKey(kItem);
|
|
44988
|
+
if (!this.MapCache.has(key)) continue;
|
|
44989
|
+
var mapItem=this.MapCache.get(key);
|
|
44990
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data)) continue;
|
|
44991
|
+
|
|
44992
|
+
if (isMinute)
|
|
44993
|
+
{
|
|
44994
|
+
var x=this.ChartFrame.GetXFromIndex(j);
|
|
44995
|
+
}
|
|
44996
|
+
else
|
|
44997
|
+
{
|
|
44998
|
+
var left=xOffset;
|
|
44999
|
+
var right=xOffset+dataWidth;
|
|
45000
|
+
if (right>chartright) break;
|
|
45001
|
+
var x=left+(right-left)/2;
|
|
45002
|
+
}
|
|
45003
|
+
|
|
45004
|
+
this.CalculateItem(mapItem, kItem, x, mapPoint);
|
|
45005
|
+
}
|
|
45006
|
+
|
|
45007
|
+
if (mapPoint.size<=0) return;
|
|
44784
45008
|
|
|
44785
45009
|
this.Canvas.save();
|
|
44786
45010
|
this.ClipClient(this.IsHScreen);
|
|
44787
|
-
|
|
44788
|
-
|
|
45011
|
+
|
|
45012
|
+
this.DrawAllPoint(mapPoint);
|
|
45013
|
+
|
|
45014
|
+
this.Canvas.restore();
|
|
45015
|
+
}
|
|
45016
|
+
|
|
45017
|
+
this.CalculateItem=function(groupItem, kItem, x, mapPoint)
|
|
45018
|
+
{
|
|
45019
|
+
for(var i=0; i<groupItem.Data.length; ++i)
|
|
44789
45020
|
{
|
|
44790
|
-
var item=
|
|
44791
|
-
var
|
|
44792
|
-
|
|
44793
|
-
|
|
44794
|
-
|
|
44795
|
-
|
|
44796
|
-
|
|
45021
|
+
var item=groupItem.Data[i];
|
|
45022
|
+
var value=item.Data.Value;
|
|
45023
|
+
if (IFrameSplitOperator.IsString(item.Data.Value)) value=this.GetKValue(kItem,item.Data.Value);
|
|
45024
|
+
if (!IFrameSplitOperator.IsNumber(value)) continue;
|
|
45025
|
+
|
|
45026
|
+
var y=this.ChartFrame.GetYFromData(value,false);
|
|
45027
|
+
|
|
45028
|
+
var strConfig=JSON.stringify(item.ColorConfig);
|
|
45029
|
+
if (!mapPoint.has(strConfig)) mapPoint.set(strConfig, { AryPoint:[]});
|
|
45030
|
+
var mapItem=mapPoint.get(strConfig);
|
|
45031
|
+
|
|
45032
|
+
mapItem.AryPoint.push({ X:x, Y:y, Data:item });
|
|
45033
|
+
}
|
|
45034
|
+
}
|
|
45035
|
+
|
|
45036
|
+
this.DrawAllPoint=function(mapPoint)
|
|
45037
|
+
{
|
|
45038
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
45039
|
+
|
|
45040
|
+
for(var mapItem of mapPoint)
|
|
45041
|
+
{
|
|
45042
|
+
var aryPoint=mapItem[1].AryPoint;
|
|
45043
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(aryPoint)) continue;
|
|
45044
|
+
var config=null;
|
|
44797
45045
|
var path=new Path2D();
|
|
44798
45046
|
var count=0;
|
|
44799
|
-
|
|
44800
|
-
for(var j=0; j<item.Point.length; ++j)
|
|
45047
|
+
for(var i=0;i<aryPoint.length;++i)
|
|
44801
45048
|
{
|
|
44802
|
-
var
|
|
44803
|
-
if (!
|
|
44804
|
-
|
|
44805
|
-
var index=point.Index-offset;
|
|
44806
|
-
if (index>=0 && index<xPointCount)
|
|
44807
|
-
{
|
|
44808
|
-
var x=this.ChartFrame.GetXFromIndex(index);
|
|
44809
|
-
var y=this.ChartFrame.GetYFromData(point.Value, false);
|
|
45049
|
+
var item=aryPoint[i];
|
|
45050
|
+
if (!config) config=item.Data.ColorConfig;
|
|
44810
45051
|
|
|
44811
|
-
|
|
44812
|
-
|
|
44813
|
-
|
|
44814
|
-
|
|
44815
|
-
|
|
45052
|
+
var pointPath = new Path2D();
|
|
45053
|
+
if (this.IsHScreen)
|
|
45054
|
+
pointPath.arc(item.Y,item.X,config.Radius*pixelRatio,0,360,false);
|
|
45055
|
+
else
|
|
45056
|
+
pointPath.arc(item.X,item.Y,config.Radius**pixelRatio,0,360,false);
|
|
44816
45057
|
|
|
44817
|
-
|
|
44818
|
-
|
|
44819
|
-
}
|
|
45058
|
+
path.addPath(pointPath);
|
|
45059
|
+
++count;
|
|
44820
45060
|
}
|
|
44821
45061
|
|
|
44822
|
-
if (count>0 &&
|
|
45062
|
+
if (count>0 && config)
|
|
44823
45063
|
{
|
|
44824
|
-
|
|
44825
|
-
|
|
44826
|
-
|
|
45064
|
+
if (config.BGColor)
|
|
45065
|
+
{
|
|
45066
|
+
this.Canvas.fillStyle=config.BGColor; //背景填充颜色
|
|
45067
|
+
this.Canvas.fill(path);
|
|
45068
|
+
}
|
|
44827
45069
|
|
|
44828
|
-
if (
|
|
44829
|
-
|
|
45070
|
+
if (config.Color)
|
|
45071
|
+
{
|
|
45072
|
+
this.Canvas.lineWidth=config.LineWidth*pixelRatio;
|
|
45073
|
+
this.Canvas.strokeStyle=config.Color;
|
|
45074
|
+
this.Canvas.stroke(path);
|
|
45075
|
+
}
|
|
44830
45076
|
}
|
|
44831
|
-
|
|
44832
45077
|
}
|
|
44833
|
-
|
|
44834
|
-
this.Canvas.restore();
|
|
44835
45078
|
}
|
|
44836
45079
|
|
|
44837
45080
|
this.GetMaxMin=function()
|
|
44838
45081
|
{
|
|
44839
45082
|
var range={ Min:null, Max:null };
|
|
45083
|
+
if(!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return range;
|
|
45084
|
+
if (!this.MapCache || this.MapCache.size<=0) return;
|
|
44840
45085
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
44841
|
-
var start=this.Data.DataOffset;
|
|
44842
|
-
var end=start+xPointCount;
|
|
44843
45086
|
|
|
44844
|
-
for(var i=0;
|
|
45087
|
+
for(var i=this.Data.DataOffset,j=0, k=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
|
|
44845
45088
|
{
|
|
44846
|
-
var
|
|
44847
|
-
|
|
45089
|
+
var kItem=this.Data.Data[i];
|
|
45090
|
+
var key=this.BuildKey(kItem);
|
|
45091
|
+
if (!this.MapCache.has(key)) continue;
|
|
45092
|
+
var mapItem=this.MapCache.get(key);
|
|
45093
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data)) continue;
|
|
44848
45094
|
|
|
44849
|
-
for(
|
|
45095
|
+
for(k=0;k<mapItem.Data.length;++k)
|
|
44850
45096
|
{
|
|
44851
|
-
var
|
|
44852
|
-
|
|
44853
|
-
|
|
44854
|
-
|
|
44855
|
-
|
|
44856
|
-
|
|
44857
|
-
|
|
44858
|
-
|
|
45097
|
+
var item=mapItem.Data[k];
|
|
45098
|
+
var value=item.Data.Value;
|
|
45099
|
+
if (IFrameSplitOperator.IsString(item.Data.Value)) value=this.GetKValue(kItem,item.Data.Value);
|
|
45100
|
+
if (!IFrameSplitOperator.IsNumber(value)) continue;
|
|
45101
|
+
|
|
45102
|
+
if (range.Max==null) range.Max=value;
|
|
45103
|
+
else if (range.Max<value) range.Max=value;
|
|
45104
|
+
if (range.Min==null) range.Min=value;
|
|
45105
|
+
else if (range.Min>value) range.Min=value;
|
|
44859
45106
|
}
|
|
44860
45107
|
}
|
|
44861
45108
|
|
|
@@ -45122,6 +45369,8 @@ function ChartMultiSVGIconV2()
|
|
|
45122
45369
|
this.IconRect=[]; //0=序号,1=区域
|
|
45123
45370
|
|
|
45124
45371
|
this.MapCache=null; //key=date/date-time value={ Data:[] }
|
|
45372
|
+
this.GetKValue=ChartData.GetKValue;
|
|
45373
|
+
|
|
45125
45374
|
|
|
45126
45375
|
this.BuildKey=function(item)
|
|
45127
45376
|
{
|
|
@@ -45236,28 +45485,7 @@ function ChartMultiSVGIconV2()
|
|
|
45236
45485
|
|
|
45237
45486
|
this.Canvas.restore();
|
|
45238
45487
|
}
|
|
45239
|
-
|
|
45240
|
-
this.GetKValue=function(kItem, valueName)
|
|
45241
|
-
{
|
|
45242
|
-
switch(valueName)
|
|
45243
|
-
{
|
|
45244
|
-
case "HIGH":
|
|
45245
|
-
case "H":
|
|
45246
|
-
return kItem.High;
|
|
45247
|
-
case "L":
|
|
45248
|
-
case "LOW":
|
|
45249
|
-
return kItem.Low;
|
|
45250
|
-
case "C":
|
|
45251
|
-
case "CLOSE":
|
|
45252
|
-
return kItem.Close;
|
|
45253
|
-
case "O":
|
|
45254
|
-
case "OPEN":
|
|
45255
|
-
return KItem.Open;
|
|
45256
|
-
default:
|
|
45257
|
-
return null;
|
|
45258
|
-
}
|
|
45259
|
-
}
|
|
45260
|
-
|
|
45488
|
+
|
|
45261
45489
|
this.DrawItem=function(groupItem, kItem, x, drawInfo)
|
|
45262
45490
|
{
|
|
45263
45491
|
if (!IFrameSplitOperator.IsNonEmptyArray(groupItem.Data)) return;
|
|
@@ -61213,24 +61441,29 @@ function DynamicChartTitlePainting()
|
|
|
61213
61441
|
|
|
61214
61442
|
this.ForamtMultiPointTitle=function(dataIndex, dataInfo)
|
|
61215
61443
|
{
|
|
61216
|
-
if (!
|
|
61444
|
+
if (!dataInfo.GetItemCallback) return null;
|
|
61445
|
+
if (!dataInfo.Data || !IFrameSplitOperator.IsNonEmptyArray(dataInfo.Data.Data)) return null;
|
|
61446
|
+
var kItem=dataInfo.Data.Data[dataIndex];
|
|
61447
|
+
if (!kItem) return null;
|
|
61448
|
+
|
|
61449
|
+
var group=dataInfo.GetItemCallback(kItem);
|
|
61450
|
+
if (!group || !IFrameSplitOperator.IsNonEmptyArray(group.Data)) return null;
|
|
61217
61451
|
|
|
61218
61452
|
var aryText=[];
|
|
61219
|
-
for(var i=0;i<
|
|
61453
|
+
for(var i=0;i<group.Data.length;++i)
|
|
61220
61454
|
{
|
|
61221
|
-
var
|
|
61222
|
-
|
|
61223
|
-
|
|
61224
|
-
|
|
61225
|
-
|
|
61226
|
-
|
|
61227
|
-
|
|
61228
|
-
|
|
61229
|
-
|
|
61230
|
-
|
|
61231
|
-
|
|
61232
|
-
|
|
61233
|
-
}
|
|
61455
|
+
var item=group.Data[i];
|
|
61456
|
+
var config=item.ColorConfig;
|
|
61457
|
+
|
|
61458
|
+
var color=null;
|
|
61459
|
+
if (config.BGColor) color=config.BGColor;
|
|
61460
|
+
else if (config.Color) color=config.Color;
|
|
61461
|
+
|
|
61462
|
+
if (config.Name) aryText.push({ Text:`${config.Name}:`, Color:color });
|
|
61463
|
+
|
|
61464
|
+
var value=item.Data.Value;
|
|
61465
|
+
if (IFrameSplitOperator.IsString(item.Data.Value)) value=ChartData.GetKValue(kItem, item.Data.Value);
|
|
61466
|
+
aryText.push({ Text:this.FormatValue(value, dataInfo), Color:color});
|
|
61234
61467
|
}
|
|
61235
61468
|
|
|
61236
61469
|
if (!IFrameSplitOperator.IsNonEmptyArray(aryText)) return null;
|
|
@@ -62001,6 +62234,11 @@ function DynamicChartTitlePainting()
|
|
|
62001
62234
|
aryText=this.FromatStackedBarTitle(value, item);
|
|
62002
62235
|
if (!aryText) continue;
|
|
62003
62236
|
}
|
|
62237
|
+
else if (item.DataType=="ChartMultiPoint")
|
|
62238
|
+
{
|
|
62239
|
+
aryText=this.ForamtMultiPointTitle(dataIndex, item);
|
|
62240
|
+
if (!aryText) continue;
|
|
62241
|
+
}
|
|
62004
62242
|
else
|
|
62005
62243
|
{
|
|
62006
62244
|
valueText=this.FormatValue(value,item);
|
|
@@ -75005,6 +75243,20 @@ function JSChartResource()
|
|
|
75005
75243
|
Offset:{ X:-5, Y:5 }
|
|
75006
75244
|
}
|
|
75007
75245
|
|
|
75246
|
+
this.ChartSimpleRadar=
|
|
75247
|
+
{
|
|
75248
|
+
TextFont:{ Family:'微软雅黑' , Size:12 },
|
|
75249
|
+
BorderColor:"rgb(169,169,169)",
|
|
75250
|
+
Offset:{ X:-5, Y:5 },
|
|
75251
|
+
TextColor:"rgb(105,105,105)",
|
|
75252
|
+
AryBGColor:['rgba(255,255,255,0.9)', 'rgba(230, 234, 242,0.9)'],
|
|
75253
|
+
AryArea:
|
|
75254
|
+
[
|
|
75255
|
+
{ Color:"rgba(242,154,118,0.4)", LineColor:"rgb(242,154,118)"},
|
|
75256
|
+
{ Color:"rgba(121,197,228,0.4)", LineColor:"rgb(92,165,196)"},
|
|
75257
|
+
],
|
|
75258
|
+
}
|
|
75259
|
+
|
|
75008
75260
|
//手机端tooltip
|
|
75009
75261
|
this.TooltipPaint = {
|
|
75010
75262
|
BGColor:'rgba(250,250,250,0.8)', //背景色
|
|
@@ -76236,6 +76488,7 @@ function JSChartResource()
|
|
|
76236
76488
|
|
|
76237
76489
|
if (style.ChartSimpleTable) this.SetChartSimpleTable(style.ChartSimpleTable);
|
|
76238
76490
|
if (style.ChartSimplePie) this.SetChartSimplePie(style.ChartSimplePie);
|
|
76491
|
+
if (style.ChartSimpleRadar) this.SetChartSimpleRadar(style.ChartSimpleRadar);
|
|
76239
76492
|
|
|
76240
76493
|
if (style.DRAWICON)
|
|
76241
76494
|
{
|
|
@@ -77329,6 +77582,30 @@ function JSChartResource()
|
|
|
77329
77582
|
}
|
|
77330
77583
|
}
|
|
77331
77584
|
|
|
77585
|
+
this.SetChartSimpleRadar=function(style)
|
|
77586
|
+
{
|
|
77587
|
+
var dest=this.ChartSimpleRadar;
|
|
77588
|
+
if (style.TextFont)
|
|
77589
|
+
{
|
|
77590
|
+
var item=style.TextFont;
|
|
77591
|
+
if (item.Name) dest.TextFont.Name=item.Name;
|
|
77592
|
+
if (IFrameSplitOperator.IsNumber(item.Size)) dest.TextFont.Size=item.Size;
|
|
77593
|
+
}
|
|
77594
|
+
|
|
77595
|
+
if (style.BorderColor) dest.BorderColor=style.BorderColor;
|
|
77596
|
+
if (style.TextColor) dest.TextColor=style.TextColor;
|
|
77597
|
+
|
|
77598
|
+
if (style.Offset)
|
|
77599
|
+
{
|
|
77600
|
+
var item=style.Offset;
|
|
77601
|
+
if (IFrameSplitOperator.IsNumber(item.X)) dest.Offset.X=item.X;
|
|
77602
|
+
if (IFrameSplitOperator.IsNumber(item.Y)) dest.Offset.Y=item.Y;
|
|
77603
|
+
}
|
|
77604
|
+
|
|
77605
|
+
if (IFrameSplitOperator.IsNonEmptyArray(style.AryBGColor)) dest.AryBGColor=style.AryBGColor.slice();
|
|
77606
|
+
if (IFrameSplitOperator.IsNonEmptyArray(style.AryArea)) dest.AryArea=style.AryArea.slice();
|
|
77607
|
+
}
|
|
77608
|
+
|
|
77332
77609
|
}
|
|
77333
77610
|
|
|
77334
77611
|
var g_JSChartResource=new JSChartResource();
|
|
@@ -83942,18 +84219,18 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
83942
84219
|
{
|
|
83943
84220
|
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
83944
84221
|
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
83945
|
-
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
84222
|
+
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId, CursorIndex:this.CursorIndex, Point:{ X:x*pixelTatio, Y:y*pixelTatio}}, e);
|
|
83946
84223
|
|
|
83947
84224
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);
|
|
83948
84225
|
if (event)
|
|
83949
84226
|
{
|
|
83950
|
-
var data={ X:x, Y:y, Event:e, FrameID:frameId };
|
|
84227
|
+
var data={ X:x, Y:y, Event:e, FrameID:frameId, Point:{ X:x*pixelTatio, Y:y*pixelTatio}, CursorIndex:this.CursorIndex, };
|
|
83951
84228
|
event.Callback(event,data,this);
|
|
83952
84229
|
}
|
|
83953
84230
|
}
|
|
83954
84231
|
|
|
83955
84232
|
//右键菜单数据
|
|
83956
|
-
this.GetRightMenuData=function(frameID)
|
|
84233
|
+
this.GetRightMenuData=function(frameID, option)
|
|
83957
84234
|
{
|
|
83958
84235
|
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
83959
84236
|
var klineChart=this.ChartPaint[0];
|
|
@@ -83996,6 +84273,17 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
83996
84273
|
var bPopMinuteChart=false;
|
|
83997
84274
|
if (this.PopMinuteChart) bPopMinuteChart=true;
|
|
83998
84275
|
|
|
84276
|
+
var kItem=null;
|
|
84277
|
+
if (frameID>=0 && option && IFrameSplitOperator.IsNumber(option.CursorIndex))
|
|
84278
|
+
{
|
|
84279
|
+
var kData=this.GetKData();
|
|
84280
|
+
if (kData && IFrameSplitOperator.IsNonEmptyArray(kData.Data))
|
|
84281
|
+
{
|
|
84282
|
+
var dataIndex=kData.DataOffset+option.CursorIndex;
|
|
84283
|
+
if (dataIndex>=0 && dataIndex<kData.Data.length) kItem=kData.Data[dataIndex];
|
|
84284
|
+
}
|
|
84285
|
+
}
|
|
84286
|
+
|
|
83999
84287
|
var aryMenu=
|
|
84000
84288
|
[
|
|
84001
84289
|
{
|
|
@@ -84278,6 +84566,17 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84278
84566
|
}
|
|
84279
84567
|
}
|
|
84280
84568
|
}
|
|
84569
|
+
else if (item.Name=="其他设置")
|
|
84570
|
+
{
|
|
84571
|
+
if (kItem)
|
|
84572
|
+
{
|
|
84573
|
+
var bLocked=this.IsLockCorssCursor();
|
|
84574
|
+
if (bLocked)
|
|
84575
|
+
item.SubMenu.push({ Name:"锁十字光标", Data:{ ID: JSCHART_MENU_ID.CMD_UNLOCK_CROSSCURSOR }, Checked:bLocked });
|
|
84576
|
+
else
|
|
84577
|
+
item.SubMenu.push({ Name:"锁十字光标", Data:{ ID: JSCHART_MENU_ID.CMD_LOCK_CROSSCURSOR, Args:[{ KItem:{Date:kItem.Date, Time:kItem.Time}, Draw:true }] }, Checked:bLocked });
|
|
84578
|
+
}
|
|
84579
|
+
}
|
|
84281
84580
|
}
|
|
84282
84581
|
|
|
84283
84582
|
return aryMenu;
|
|
@@ -85881,19 +86180,36 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
85881
86180
|
if (option && option.Draw) this.Draw();
|
|
85882
86181
|
}
|
|
85883
86182
|
|
|
86183
|
+
//option={ KItem:{ Date:, Time:}}
|
|
85884
86184
|
this.LockCorssCursor=function(option)
|
|
85885
86185
|
{
|
|
85886
|
-
if (
|
|
85887
|
-
|
|
85888
|
-
|
|
86186
|
+
if (option && option.KItem) //指定日期时间
|
|
86187
|
+
{
|
|
86188
|
+
var kData=this.GetKData();
|
|
86189
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
|
|
85889
86190
|
|
|
85890
|
-
|
|
85891
|
-
|
|
85892
|
-
|
|
86191
|
+
var kItem={ Date:option.KItem.Date, Time:option.KItem.Time, Index:-1};
|
|
86192
|
+
kData.FindDataIndexByDateTime([kItem]);
|
|
86193
|
+
if (kItem.Index<0) return false;
|
|
85893
86194
|
|
|
85894
|
-
|
|
85895
|
-
|
|
85896
|
-
|
|
86195
|
+
var xItem=this.GlobalOption.LockCorssCursor.X;
|
|
86196
|
+
xItem.KLine={ DataIndex:kItem.Index, Date:kItem.Date, Time:kItem.Time };
|
|
86197
|
+
xItem.Enable=true;
|
|
86198
|
+
}
|
|
86199
|
+
else
|
|
86200
|
+
{
|
|
86201
|
+
if (this.CursorIndex<0) return false;
|
|
86202
|
+
var kData=this.GetKData();
|
|
86203
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
|
|
86204
|
+
|
|
86205
|
+
var dataIndex=kData.DataOffset+parseInt(this.CursorIndex.toFixed(0));
|
|
86206
|
+
var kItem=kData.Data[dataIndex];
|
|
86207
|
+
if (!kItem) return false;
|
|
86208
|
+
|
|
86209
|
+
var xItem=this.GlobalOption.LockCorssCursor.X;
|
|
86210
|
+
xItem.KLine={ DataIndex:dataIndex, Date:kItem.Date, Time:kItem.Time };
|
|
86211
|
+
xItem.Enable=true;
|
|
86212
|
+
}
|
|
85897
86213
|
|
|
85898
86214
|
if (option && option.Draw) this.Draw();
|
|
85899
86215
|
return true;
|
|
@@ -85916,7 +86232,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
85916
86232
|
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return position;
|
|
85917
86233
|
|
|
85918
86234
|
position.CursorIndex=xItem.KLine.DataIndex-kData.DataOffset;
|
|
85919
|
-
position.LastPoint.X=this.Frame.GetXFromIndex(position.CursorIndex);
|
|
86235
|
+
position.LastPoint.X=this.Frame.GetXFromIndex(position.CursorIndex, false);
|
|
85920
86236
|
|
|
85921
86237
|
var border=this.Frame.ChartBorder.GetBorder();
|
|
85922
86238
|
if (position.LastPoint.Y<border.Top || position.LastPoint.Y>border.Bottom) //超出图形框子, 调整为收盘价
|
|
@@ -87989,18 +88305,18 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
87989
88305
|
{
|
|
87990
88306
|
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
87991
88307
|
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
87992
|
-
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
88308
|
+
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId, CursorIndex:this.CursorIndex, Point:{ X:x*pixelTatio, Y:y*pixelTatio} }, e);
|
|
87993
88309
|
|
|
87994
88310
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);
|
|
87995
88311
|
if (event)
|
|
87996
88312
|
{
|
|
87997
|
-
var data={ X:x, Y:y, Event:e, FrameID:frameId };
|
|
88313
|
+
var data={ X:x, Y:y, Event:e, FrameID:frameId, CursorIndex:this.CursorIndex, Point:{ X:x*pixelTatio, Y:y*pixelTatio} };
|
|
87998
88314
|
event.Callback(event,data,this);
|
|
87999
88315
|
}
|
|
88000
88316
|
}
|
|
88001
88317
|
|
|
88002
88318
|
//右键菜单数据
|
|
88003
|
-
this.GetRightMenuData=function(frameID)
|
|
88319
|
+
this.GetRightMenuData=function(frameID, option)
|
|
88004
88320
|
{
|
|
88005
88321
|
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
88006
88322
|
|
|
@@ -88127,11 +88443,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
88127
88443
|
}
|
|
88128
88444
|
|
|
88129
88445
|
|
|
88130
|
-
|
|
88446
|
+
|
|
88131
88447
|
for(var i=0;i<aryMenu.length;++i)
|
|
88132
88448
|
{
|
|
88133
88449
|
var item=aryMenu[i];
|
|
88134
|
-
if (item.Name=="叠加品种")
|
|
88450
|
+
if (item.Name=="叠加品种") //删除菜单
|
|
88135
88451
|
{
|
|
88136
88452
|
for(var j=0;j<item.SubMenu.length;++j)
|
|
88137
88453
|
{
|
|
@@ -88143,6 +88459,10 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
88143
88459
|
}
|
|
88144
88460
|
}
|
|
88145
88461
|
}
|
|
88462
|
+
else if (item.Name=="其他设置")
|
|
88463
|
+
{
|
|
88464
|
+
|
|
88465
|
+
}
|
|
88146
88466
|
}
|
|
88147
88467
|
|
|
88148
88468
|
return aryMenu;
|
|
@@ -112535,6 +112855,48 @@ function JSDraw(errorHandler,symbolData)
|
|
|
112535
112855
|
|
|
112536
112856
|
return result={ DrawData:{ Data:aryCell, Radius:radius }, DrawType:"DRAW_SIMPLE_PIE" };
|
|
112537
112857
|
}
|
|
112858
|
+
|
|
112859
|
+
this.RADAR_CELL=function(name, data, max, min)
|
|
112860
|
+
{
|
|
112861
|
+
var cellItem={ Name:name, Max:100, Min:0, Value:null };
|
|
112862
|
+
if (IFrameSplitOperator.IsNumber(data))
|
|
112863
|
+
{
|
|
112864
|
+
cellItem.Value=data;
|
|
112865
|
+
}
|
|
112866
|
+
else if (IFrameSplitOperator.IsString(data))
|
|
112867
|
+
{
|
|
112868
|
+
cellItem.Value=parseFloat(data);
|
|
112869
|
+
}
|
|
112870
|
+
else if (IFrameSplitOperator.IsNonEmptyArray(data))
|
|
112871
|
+
{
|
|
112872
|
+
var lastValue=data[data.length-1];
|
|
112873
|
+
if (IFrameSplitOperator.IsNumber(lastValue)) cellItem.Value=lastValue;
|
|
112874
|
+
else if (IFrameSplitOperator.IsString(lastValue)) cellItem.Value=parseFloat(lastValue);
|
|
112875
|
+
}
|
|
112876
|
+
|
|
112877
|
+
if (IFrameSplitOperator.IsNumber(max)) cellItem.Max=max;
|
|
112878
|
+
if (IFrameSplitOperator.IsNumber(min)) cellItem.Min=min;
|
|
112879
|
+
|
|
112880
|
+
return cellItem;
|
|
112881
|
+
}
|
|
112882
|
+
|
|
112883
|
+
this.DRAWRADAR=function(args)
|
|
112884
|
+
{
|
|
112885
|
+
var radius=args[0];
|
|
112886
|
+
var color=args[1];
|
|
112887
|
+
|
|
112888
|
+
var aryIndex=[];
|
|
112889
|
+
var aryData=[];
|
|
112890
|
+
for(var i=2;i<args.length;++i)
|
|
112891
|
+
{
|
|
112892
|
+
var item=args[i];
|
|
112893
|
+
|
|
112894
|
+
aryIndex.push({ Name:item.Name, Max:item.Max, Min:item.Min });
|
|
112895
|
+
aryData.push({ Value:item.Value, Name:item.Name, Group:"Default"});
|
|
112896
|
+
}
|
|
112897
|
+
|
|
112898
|
+
return result={ DrawData:{ Data:aryData, AryIndex:aryIndex, Radius:radius, AryArea:[{ LineColor:color }] }, DrawType:"DRAW_SIMPLE_RADAR" };
|
|
112899
|
+
}
|
|
112538
112900
|
}
|
|
112539
112901
|
|
|
112540
112902
|
|
|
@@ -112589,7 +112951,7 @@ JSDraw.prototype.IsDrawFunction=function(name)
|
|
|
112589
112951
|
'DRAWOVERLAYLINE',"FILLRGN", "FILLRGN2","FILLTOPRGN", "FILLBOTTOMRGN", "FILLVERTICALRGN","FLOATRGN","DRAWSL", "DRAWGBK2","DRAWGBK_DIV",
|
|
112590
112952
|
"VERTLINE","HORLINE","TIPICON",
|
|
112591
112953
|
"BUY","SELL","SELLSHORT","BUYSHORT",
|
|
112592
|
-
"DRAWLASTBARICON","DRAWLASTBARNUMBER", "DRAWLASTBARTEXT","DRAWTABLE","DRAWPIE",
|
|
112954
|
+
"DRAWLASTBARICON","DRAWLASTBARNUMBER", "DRAWLASTBARTEXT","DRAWTABLE","DRAWPIE","DRAWRADAR",
|
|
112593
112955
|
]);
|
|
112594
112956
|
if (setFunctionName.has(name)) return true;
|
|
112595
112957
|
|
|
@@ -119478,6 +119840,14 @@ function JSExecute(ast,option)
|
|
|
119478
119840
|
node.Draw=this.Draw.DRAWPIE(args);
|
|
119479
119841
|
node.Out=[];
|
|
119480
119842
|
break;
|
|
119843
|
+
//雷达图
|
|
119844
|
+
case "RADAR_CELL":
|
|
119845
|
+
node.Out=this.Draw.RADAR_CELL(args[0],args[1],args[2],args[3]);
|
|
119846
|
+
break;
|
|
119847
|
+
case "DRAWRADAR":
|
|
119848
|
+
node.Draw=this.Draw.DRAWRADAR(args);
|
|
119849
|
+
node.Out=[];
|
|
119850
|
+
break;
|
|
119481
119851
|
|
|
119482
119852
|
default:
|
|
119483
119853
|
node.Out=this.Algorithm.CallFunction(funcName, args, node, this.SymbolData);
|
|
@@ -122494,6 +122864,35 @@ function ScriptIndex(name,script,args,option)
|
|
|
122494
122864
|
hqChart.ChartPaint.push(chart);
|
|
122495
122865
|
}
|
|
122496
122866
|
|
|
122867
|
+
this.CreateSimpleRadar=function(hqChart,windowIndex,varItem,id)
|
|
122868
|
+
{
|
|
122869
|
+
var chart=new ChartSimpleRadar();
|
|
122870
|
+
chart.Canvas=hqChart.Canvas;
|
|
122871
|
+
chart.Name=varItem.Name;
|
|
122872
|
+
chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
|
|
122873
|
+
chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
|
|
122874
|
+
|
|
122875
|
+
if (varItem.Draw && varItem.Draw.DrawData)
|
|
122876
|
+
{
|
|
122877
|
+
var drawData=varItem.Draw.DrawData;
|
|
122878
|
+
if (drawData.Data) chart.Data.Data=drawData.Data;
|
|
122879
|
+
if (drawData.AryIndex) chart.AryIndex=drawData.AryIndex;
|
|
122880
|
+
if (IFrameSplitOperator.IsPlusNumber(drawData.Radius)) chart.Radius=drawData.Radius;
|
|
122881
|
+
if (drawData.BorderColor) chart.BorderColor=drawData.BorderColor;
|
|
122882
|
+
|
|
122883
|
+
if (drawData.TextFont) chart.TextFontConfig=drawData.TextFont;
|
|
122884
|
+
if (drawData.TextColor) chart.TextColor=drawData.TextColor;
|
|
122885
|
+
if (drawData.BorderColor) chart.BorderColor=drawData.BorderColor;
|
|
122886
|
+
if (IFrameSplitOperator.IsNumber(drawData.XOffset)) chart.Offset.X=drawData.XOffset;
|
|
122887
|
+
if (IFrameSplitOperator.IsNumber(drawData.YOffset)) chart.Offset.Y=drawData.YOffset;
|
|
122888
|
+
if (IFrameSplitOperator.IsNonEmptyArray(drawData.AryArea)) chart.AryAreaConfig=drawData.AryArea;
|
|
122889
|
+
|
|
122890
|
+
chart.BuildCacheData();
|
|
122891
|
+
}
|
|
122892
|
+
|
|
122893
|
+
hqChart.ChartPaint.push(chart);
|
|
122894
|
+
}
|
|
122895
|
+
|
|
122497
122896
|
this.CreateTradeIcon=function(hqChart,windowIndex,varItem,id)
|
|
122498
122897
|
{
|
|
122499
122898
|
var chart=new ChartTradeIcon();
|
|
@@ -122868,16 +123267,18 @@ function ScriptIndex(name,script,args,option)
|
|
|
122868
123267
|
chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
|
|
122869
123268
|
chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
|
|
122870
123269
|
|
|
122871
|
-
chart.Data=hqChart.ChartPaint[0].Data
|
|
123270
|
+
chart.Data=hqChart.ChartPaint[0].Data; //绑定K线
|
|
122872
123271
|
chart.PointGroup=varItem.Draw.DrawData;
|
|
122873
123272
|
if (varItem.Draw.Name) chart.Name=varItem.Draw.Name;
|
|
123273
|
+
chart.BuildCacheData();
|
|
123274
|
+
|
|
122874
123275
|
this.SetChartIndexName(chart);
|
|
122875
123276
|
hqChart.ChartPaint.push(chart);
|
|
122876
123277
|
|
|
122877
|
-
|
|
123278
|
+
var titleIndex=windowIndex+1;
|
|
122878
123279
|
var titleData=new DynamicTitleData(chart.Data,chart.Name, null);
|
|
122879
123280
|
titleData.DataType="ChartMultiPoint";
|
|
122880
|
-
titleData.
|
|
123281
|
+
titleData.GetItemCallback=(kItem)=>{ return chart.GetItem(kItem); }
|
|
122881
123282
|
hqChart.TitlePaint[titleIndex].Data[i]=titleData;
|
|
122882
123283
|
}
|
|
122883
123284
|
|
|
@@ -123369,6 +123770,10 @@ function ScriptIndex(name,script,args,option)
|
|
|
123369
123770
|
break;
|
|
123370
123771
|
case "DRAW_SIMPLE_PIE":
|
|
123371
123772
|
this.CreateSimplePie(hqChart,windowIndex,item,i);
|
|
123773
|
+
break;
|
|
123774
|
+
case "DRAW_SIMPLE_RADAR":
|
|
123775
|
+
this.CreateSimpleRadar(hqChart,windowIndex,item,i);
|
|
123776
|
+
break;
|
|
123372
123777
|
case "BUY":
|
|
123373
123778
|
case "SELL":
|
|
123374
123779
|
case "SELLSHORT":
|
|
@@ -123721,7 +124126,10 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
123721
124126
|
break;
|
|
123722
124127
|
case "DRAW_SIMPLE_PIE":
|
|
123723
124128
|
this.CreateSimplePie(hqChart,windowIndex,item,i);
|
|
123724
|
-
|
|
124129
|
+
break;
|
|
124130
|
+
case "DRAW_SIMPLE_RADAR":
|
|
124131
|
+
this.CreateSimpleRadar(hqChart,windowIndex,item,i);
|
|
124132
|
+
break;
|
|
123725
124133
|
case "KLINE_BG":
|
|
123726
124134
|
this.CreateBackgroud(hqChart,windowIndex,item,i);
|
|
123727
124135
|
break;
|
|
@@ -124585,7 +124993,7 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
124585
124993
|
frame.ChartPaint.push(chart);
|
|
124586
124994
|
}
|
|
124587
124995
|
|
|
124588
|
-
this.CreateMultiPoint=function(hqChart,windowIndex,varItem,
|
|
124996
|
+
this.CreateMultiPoint=function(hqChart,windowIndex,varItem,id)
|
|
124589
124997
|
{
|
|
124590
124998
|
var overlayIndex=this.OverlayIndex;
|
|
124591
124999
|
var frame=overlayIndex.Frame;
|
|
@@ -124598,6 +125006,17 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
124598
125006
|
|
|
124599
125007
|
chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
|
|
124600
125008
|
chart.PointGroup=varItem.Draw.DrawData;
|
|
125009
|
+
chart.BuildCacheData();
|
|
125010
|
+
|
|
125011
|
+
var titleIndex=windowIndex+1;
|
|
125012
|
+
var titlePaint=hqChart.TitlePaint[titleIndex];
|
|
125013
|
+
var titleData=new DynamicTitleData(chart.Data,varItem.Name,null);
|
|
125014
|
+
titleData.DataType="ChartMultiPoint";
|
|
125015
|
+
titleData.GetItemCallback=(kItem)=>{ return chart.GetItem(kItem); }
|
|
125016
|
+
titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;
|
|
125017
|
+
|
|
125018
|
+
this.SetChartIndexName(chart);
|
|
125019
|
+
|
|
124601
125020
|
frame.ChartPaint.push(chart);
|
|
124602
125021
|
}
|
|
124603
125022
|
|
|
@@ -124789,6 +125208,39 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
124789
125208
|
frame.ChartPaint.push(chart);
|
|
124790
125209
|
}
|
|
124791
125210
|
|
|
125211
|
+
this.CreateSimpleRadar=function(hqChart,windowIndex,varItem,id)
|
|
125212
|
+
{
|
|
125213
|
+
var overlayIndex=this.OverlayIndex;
|
|
125214
|
+
var frame=overlayIndex.Frame;
|
|
125215
|
+
var chart=new ChartSimpleRadar();
|
|
125216
|
+
chart.Canvas=hqChart.Canvas;
|
|
125217
|
+
chart.Name=varItem.Name;
|
|
125218
|
+
chart.ChartBorder=frame.Frame.ChartBorder;
|
|
125219
|
+
chart.ChartFrame=frame.Frame;
|
|
125220
|
+
chart.Identify=overlayIndex.Identify;
|
|
125221
|
+
chart.HQChart=hqChart;
|
|
125222
|
+
|
|
125223
|
+
if (varItem.Draw && varItem.Draw.DrawData)
|
|
125224
|
+
{
|
|
125225
|
+
var drawData=varItem.Draw.DrawData;
|
|
125226
|
+
if (drawData.Data) chart.Data.Data=drawData.Data;
|
|
125227
|
+
if (drawData.AryIndex) chart.AryIndex=drawData.AryIndex;
|
|
125228
|
+
if (IFrameSplitOperator.IsPlusNumber(drawData.Radius)) chart.Radius=drawData.Radius;
|
|
125229
|
+
if (drawData.BorderColor) chart.BorderColor=drawData.BorderColor;
|
|
125230
|
+
|
|
125231
|
+
if (drawData.TextFont) chart.TextFontConfig=drawData.TextFont;
|
|
125232
|
+
if (drawData.TextColor) chart.TextColor=drawData.TextColor;
|
|
125233
|
+
if (drawData.BorderColor) chart.BorderColor=drawData.BorderColor;
|
|
125234
|
+
if (IFrameSplitOperator.IsNumber(drawData.XOffset)) chart.Offset.X=drawData.XOffset;
|
|
125235
|
+
if (IFrameSplitOperator.IsNumber(drawData.YOffset)) chart.Offset.Y=drawData.YOffset;
|
|
125236
|
+
if (IFrameSplitOperator.IsNonEmptyArray(drawData.AryArea)) chart.AryAreaConfig=drawData.AryArea;
|
|
125237
|
+
|
|
125238
|
+
chart.BuildCacheData();
|
|
125239
|
+
}
|
|
125240
|
+
|
|
125241
|
+
frame.ChartPaint.push(chart);
|
|
125242
|
+
}
|
|
125243
|
+
|
|
124792
125244
|
this.CreateChartVericaltLine=function(hqChart,windowIndex,varItem,id)
|
|
124793
125245
|
{
|
|
124794
125246
|
var overlayIndex=this.OverlayIndex;
|
|
@@ -125761,14 +126213,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
125761
126213
|
drawItem.Text=draw.Text;
|
|
125762
126214
|
drawItem.Name=draw.Name;
|
|
125763
126215
|
drawItem.DrawType=draw.DrawType;
|
|
125764
|
-
drawItem.DrawData=
|
|
125765
|
-
if (IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData))
|
|
125766
|
-
{
|
|
125767
|
-
for(var k=0; k<drawItem.DrawData.length; ++k)
|
|
125768
|
-
{
|
|
125769
|
-
this.GetKLineData(drawItem.DrawData[k].Point, hqChart);
|
|
125770
|
-
}
|
|
125771
|
-
}
|
|
126216
|
+
drawItem.DrawData=draw.DrawData;
|
|
125772
126217
|
|
|
125773
126218
|
outVarItem.Draw=drawItem;
|
|
125774
126219
|
result.push(outVarItem);
|
|
@@ -126002,6 +126447,17 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
126002
126447
|
outVarItem.Draw=drawItem;
|
|
126003
126448
|
result.push(outVarItem);
|
|
126004
126449
|
}
|
|
126450
|
+
else if (draw.DrawType=="DRAW_SIMPLE_RADAR")
|
|
126451
|
+
{
|
|
126452
|
+
drawItem.Name=draw.Name;
|
|
126453
|
+
drawItem.Type=draw.Type;
|
|
126454
|
+
|
|
126455
|
+
drawItem.DrawType=draw.DrawType;
|
|
126456
|
+
drawItem.DrawData=draw.DrawData; //{ AryIndex:[ ], Data:[] };
|
|
126457
|
+
|
|
126458
|
+
outVarItem.Draw=drawItem;
|
|
126459
|
+
result.push(outVarItem);
|
|
126460
|
+
}
|
|
126005
126461
|
else
|
|
126006
126462
|
{
|
|
126007
126463
|
var find=g_ScriptIndexChartFactory.Get(draw.DrawType); //外部挂接
|
|
@@ -126304,14 +126760,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
126304
126760
|
drawItem.Text=draw.Text;
|
|
126305
126761
|
drawItem.Name=draw.Name;
|
|
126306
126762
|
drawItem.DrawType=draw.DrawType;
|
|
126307
|
-
drawItem.DrawData=
|
|
126308
|
-
if (IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData))
|
|
126309
|
-
{
|
|
126310
|
-
for(var k=0; k<drawItem.DrawData.length; ++k)
|
|
126311
|
-
{
|
|
126312
|
-
this.GetKLineData(drawItem.DrawData[k].Point, hqChart);
|
|
126313
|
-
}
|
|
126314
|
-
}
|
|
126763
|
+
drawItem.DrawData=draw.DrawData;
|
|
126315
126764
|
|
|
126316
126765
|
outVarItem.Draw=drawItem;
|
|
126317
126766
|
result.push(outVarItem);
|
|
@@ -127618,6 +128067,20 @@ function GetBlackStyle()
|
|
|
127618
128067
|
BorderColor:"rgb(220,220,220)",
|
|
127619
128068
|
},
|
|
127620
128069
|
|
|
128070
|
+
ChartSimpleRadar:
|
|
128071
|
+
{
|
|
128072
|
+
//TextFont:{ Family:'微软雅黑' , Size:12 },
|
|
128073
|
+
BorderColor:"rgb(230, 230, 230)",
|
|
128074
|
+
//Offset:{ X:-5, Y:5 },
|
|
128075
|
+
TextColor:"rgb(250, 250, 250)",
|
|
128076
|
+
AryBGColor:['rgba(63,61,82,0.9)','rgba(56,55,80,0.9)'],
|
|
128077
|
+
AryArea:
|
|
128078
|
+
[
|
|
128079
|
+
{ Color:"rgba(242,154,118,0.4)", LineColor:"rgb(242,154,118)"},
|
|
128080
|
+
{ Color:"rgba(121,197,228,0.4)", LineColor:"rgb(92,165,196)"},
|
|
128081
|
+
],
|
|
128082
|
+
},
|
|
128083
|
+
|
|
127621
128084
|
ChartDrawVolProfile:
|
|
127622
128085
|
{
|
|
127623
128086
|
BGColor:"rgba(244,250,254,0.3)",
|
|
@@ -151757,7 +152220,7 @@ function HQChartScriptWorker()
|
|
|
151757
152220
|
|
|
151758
152221
|
|
|
151759
152222
|
|
|
151760
|
-
var HQCHART_VERSION="1.1.
|
|
152223
|
+
var HQCHART_VERSION="1.1.14335";
|
|
151761
152224
|
|
|
151762
152225
|
function PrintHQChartVersion()
|
|
151763
152226
|
{
|