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
|
@@ -6771,6 +6771,9 @@ var JSCHART_MENU_ID=
|
|
|
6771
6771
|
CMD_MODIFY_INDEX_PARAM:45, //指标删除修改 [windowIndex, ]
|
|
6772
6772
|
CMD_MODIFY_OVERLAY_INDEX_PARAM:46, //叠加指标修改 [windowIndex, ID ]
|
|
6773
6773
|
|
|
6774
|
+
CMD_LOCK_CROSSCURSOR:47, //锁十字光标
|
|
6775
|
+
CMD_UNLOCK_CROSSCURSOR:48, //解锁十字光标
|
|
6776
|
+
|
|
6774
6777
|
|
|
6775
6778
|
CMD_REPORT_CHANGE_BLOCK_ID:100, //报价列表 切换板块ID
|
|
6776
6779
|
CMD_REPORT_COLUMN_SORT_ID:101, //报价列表 表头排序 Arg[列序号, 排序方向]
|
|
@@ -14112,6 +14115,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
14112
14115
|
var sendData={ e:null, WindowIndex:param, Type:2, Identify:aryArgs[1] };
|
|
14113
14116
|
this.ShowModifyIndexParamDialog(sendData);
|
|
14114
14117
|
break;
|
|
14118
|
+
case JSCHART_MENU_ID.CMD_LOCK_CROSSCURSOR:
|
|
14119
|
+
if (srcParam) this.LockCorssCursor(srcParam);
|
|
14120
|
+
break;
|
|
14121
|
+
case JSCHART_MENU_ID.CMD_UNLOCK_CROSSCURSOR:
|
|
14122
|
+
if (this.IsLockCorssCursor()) this.UnlockCorssCursor({ Draw:true })
|
|
14123
|
+
break;
|
|
14115
14124
|
}
|
|
14116
14125
|
}
|
|
14117
14126
|
|
|
@@ -14198,13 +14207,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
14198
14207
|
if (!this.JSPopMenu) return;
|
|
14199
14208
|
var x=data.X, y=data.Y;
|
|
14200
14209
|
var frameID=data.FrameID;
|
|
14201
|
-
var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
14210
|
+
var menuData={ Menu:this.GetRightMenuData(frameID, data), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
14202
14211
|
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
14203
14212
|
|
|
14204
14213
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_RIGHT_MENU);
|
|
14205
14214
|
if (event && event.Callback)
|
|
14206
14215
|
{
|
|
14207
|
-
var sendData={ MenuData:menuData, FrameID:frameID };
|
|
14216
|
+
var sendData={ MenuData:menuData, FrameID:frameID, Data:data };
|
|
14208
14217
|
event.Callback(event, sendData, this);
|
|
14209
14218
|
}
|
|
14210
14219
|
|
|
@@ -24621,9 +24630,9 @@ function HQTradeFrame()
|
|
|
24621
24630
|
return null;
|
|
24622
24631
|
}
|
|
24623
24632
|
|
|
24624
|
-
this.GetXFromIndex=function(index)
|
|
24633
|
+
this.GetXFromIndex=function(index,isLimit)
|
|
24625
24634
|
{
|
|
24626
|
-
return this.SubFrame[0].Frame.GetXFromIndex(index);
|
|
24635
|
+
return this.SubFrame[0].Frame.GetXFromIndex(index,isLimit);
|
|
24627
24636
|
}
|
|
24628
24637
|
|
|
24629
24638
|
this.GetYFromData=function(value)
|
|
@@ -27623,15 +27632,15 @@ function ChartData()
|
|
|
27623
27632
|
this.FindDataIndexByDateTime=function(aryDateTime) //aryDateTime=[ { Date:, Time:, Index:-1 }, ......]
|
|
27624
27633
|
{
|
|
27625
27634
|
var findCount=0;
|
|
27626
|
-
for(var i
|
|
27635
|
+
for(var i=0;i<aryDateTime.length;++i)
|
|
27627
27636
|
{
|
|
27628
27637
|
aryDateTime[i].Index=-1;
|
|
27629
27638
|
}
|
|
27630
27639
|
|
|
27631
|
-
for(var i
|
|
27640
|
+
for(var i=0;i<this.Data.length;++i)
|
|
27632
27641
|
{
|
|
27633
27642
|
var item=this.Data[i];
|
|
27634
|
-
for(var j
|
|
27643
|
+
for(var j=0;j<aryDateTime.length;++j)
|
|
27635
27644
|
{
|
|
27636
27645
|
var findItem=aryDateTime[j];
|
|
27637
27646
|
if (findItem.Index>=0) continue;
|
|
@@ -27640,7 +27649,7 @@ function ChartData()
|
|
|
27640
27649
|
{
|
|
27641
27650
|
if (findItem.Date==item.Date && findItem.Time==item.Time)
|
|
27642
27651
|
{
|
|
27643
|
-
findItem.Index=
|
|
27652
|
+
findItem.Index=i;
|
|
27644
27653
|
++findCount;
|
|
27645
27654
|
break;
|
|
27646
27655
|
}
|
|
@@ -27649,7 +27658,7 @@ function ChartData()
|
|
|
27649
27658
|
{
|
|
27650
27659
|
if (findItem.Date==item.Date)
|
|
27651
27660
|
{
|
|
27652
|
-
findItem.Index=
|
|
27661
|
+
findItem.Index=i;
|
|
27653
27662
|
++findCount;
|
|
27654
27663
|
break;
|
|
27655
27664
|
}
|
|
@@ -28273,6 +28282,30 @@ ChartData.GetPeriodName=function(period)
|
|
|
28273
28282
|
}
|
|
28274
28283
|
|
|
28275
28284
|
|
|
28285
|
+
ChartData.GetKValue=function(kItem, valueName)
|
|
28286
|
+
{
|
|
28287
|
+
if (!kItem) return null;
|
|
28288
|
+
|
|
28289
|
+
switch(valueName)
|
|
28290
|
+
{
|
|
28291
|
+
case "HIGH":
|
|
28292
|
+
case "H":
|
|
28293
|
+
return kItem.High;
|
|
28294
|
+
case "L":
|
|
28295
|
+
case "LOW":
|
|
28296
|
+
return kItem.Low;
|
|
28297
|
+
case "C":
|
|
28298
|
+
case "CLOSE":
|
|
28299
|
+
return kItem.Close;
|
|
28300
|
+
case "O":
|
|
28301
|
+
case "OPEN":
|
|
28302
|
+
return KItem.Open;
|
|
28303
|
+
default:
|
|
28304
|
+
return null;
|
|
28305
|
+
}
|
|
28306
|
+
}
|
|
28307
|
+
|
|
28308
|
+
|
|
28276
28309
|
|
|
28277
28310
|
function TooltipData() //提示信息
|
|
28278
28311
|
{
|
|
@@ -35863,199 +35896,292 @@ function ChartSimpleRadar()
|
|
|
35863
35896
|
delete this.newMethod;
|
|
35864
35897
|
|
|
35865
35898
|
this.ClassName='ChartSimpleRadar'; //类名
|
|
35866
|
-
|
|
35867
|
-
this.
|
|
35868
|
-
this.CenterPoint={};
|
|
35869
|
-
this.StartAngle=0;
|
|
35870
|
-
this.Color='rgb(198,198,198)';
|
|
35871
|
-
this.AreaColor='rgba(242,154,118,0.4)'; //面积图颜色
|
|
35899
|
+
|
|
35900
|
+
this.AreaColor='rgba(242,154,118,0.4)'; //
|
|
35872
35901
|
this.AreaLineColor='rgb(242,154,118)';
|
|
35873
|
-
|
|
35874
|
-
this.TitleColor=
|
|
35875
|
-
this.
|
|
35902
|
+
|
|
35903
|
+
this.TitleColor=g_JSChartResource.ChartSimpleRadar.TextColor;
|
|
35904
|
+
this.TextFontConfig=CloneData(g_JSChartResource.ChartSimpleRadar.TextFont);
|
|
35905
|
+
this.Offset=CloneData(g_JSChartResource.ChartSimpleRadar.Offset);
|
|
35906
|
+
this.BorderColor=g_JSChartResource.ChartSimpleRadar.BorderColor;
|
|
35907
|
+
this.AryBGColor=g_JSChartResource.ChartSimpleRadar.AryBGColor.slice();//背景色
|
|
35908
|
+
this.AryAreaConfig=g_JSChartResource.ChartSimpleRadar.AryArea.slice(); //面积图颜色
|
|
35909
|
+
|
|
35910
|
+
this.StartAngle=270;
|
|
35911
|
+
this.Radius=50;
|
|
35912
|
+
this.AryBorder=[1, 0.75, 0.5, 0.25];
|
|
35913
|
+
this.AryIndex; //指标{ Name:, Max:100, Min:0 },
|
|
35876
35914
|
|
|
35877
|
-
this.
|
|
35915
|
+
this.CenterPoint={};
|
|
35916
|
+
this.RectClient={ };
|
|
35917
|
+
this.AryIndexCache=[];
|
|
35918
|
+
this.MapDataCache=new Map(); //key=name value={ Data:[] }
|
|
35919
|
+
this.TextFont;
|
|
35920
|
+
|
|
35921
|
+
|
|
35922
|
+
this.ReloadResource=function(resource)
|
|
35878
35923
|
{
|
|
35879
|
-
|
|
35924
|
+
this.TitleColor=g_JSChartResource.ChartSimpleRadar.TextColor;
|
|
35925
|
+
this.TextFontConfig=CloneData(g_JSChartResource.ChartSimpleRadar.TextFont);
|
|
35926
|
+
this.Offset=CloneData(g_JSChartResource.ChartSimpleRadar.Offset);
|
|
35927
|
+
this.BorderColor=g_JSChartResource.ChartSimpleRadar.BorderColor;
|
|
35928
|
+
this.AryBGColor=g_JSChartResource.ChartSimpleRadar.AryBGColor.slice();//背景色
|
|
35929
|
+
this.AryAreaConfig=g_JSChartResource.ChartSimpleRadar.AryArea.slice(); //面积图颜色
|
|
35930
|
+
}
|
|
35880
35931
|
|
|
35881
|
-
|
|
35882
|
-
|
|
35883
|
-
|
|
35884
|
-
|
|
35932
|
+
this.DrawBorder=function() //画边框
|
|
35933
|
+
{
|
|
35934
|
+
this.Canvas.strokeStyle = this.BorderColor;
|
|
35935
|
+
this.Canvas.font=this.TextFont;
|
|
35936
|
+
for(var i=0;i<this.AryBorder.length;++i)
|
|
35885
35937
|
{
|
|
35886
|
-
var rate =
|
|
35887
|
-
var
|
|
35888
|
-
|
|
35938
|
+
var rate = this.AryBorder[i];
|
|
35939
|
+
var radius=this.RectClient.Radius*rate;
|
|
35940
|
+
var bFirstDraw=true;
|
|
35941
|
+
for(var j=0;j<this.AryIndexCache.length;++j)
|
|
35889
35942
|
{
|
|
35890
|
-
var item=this.
|
|
35891
|
-
|
|
35892
|
-
|
|
35893
|
-
if (
|
|
35943
|
+
var item=this.AryIndexCache[j];
|
|
35944
|
+
var x = this.CenterPoint.X + radius * Math.cos(item.Angle * Math.PI / 180);
|
|
35945
|
+
var y = this.CenterPoint.Y + radius * Math.sin(item.Angle * Math.PI / 180);
|
|
35946
|
+
if (bFirstDraw)
|
|
35894
35947
|
{
|
|
35895
35948
|
this.Canvas.beginPath();
|
|
35896
|
-
this.Canvas.moveTo(
|
|
35897
|
-
|
|
35949
|
+
this.Canvas.moveTo(x,y);
|
|
35950
|
+
bFirstDraw=false;
|
|
35898
35951
|
}
|
|
35899
35952
|
else
|
|
35900
35953
|
{
|
|
35901
|
-
this.Canvas.lineTo(
|
|
35954
|
+
this.Canvas.lineTo(x,y);
|
|
35902
35955
|
}
|
|
35903
35956
|
}
|
|
35904
35957
|
|
|
35905
35958
|
this.Canvas.closePath();
|
|
35906
35959
|
this.Canvas.stroke();
|
|
35907
|
-
|
|
35908
|
-
this.
|
|
35960
|
+
|
|
35961
|
+
if (IFrameSplitOperator.IsNonEmptyArray(this.AryBGColor))
|
|
35962
|
+
{
|
|
35963
|
+
this.Canvas.fillStyle = this.AryBGColor[i%this.AryBGColor.length];
|
|
35964
|
+
this.Canvas.fill();
|
|
35965
|
+
}
|
|
35909
35966
|
}
|
|
35910
35967
|
|
|
35911
35968
|
this.Canvas.beginPath();
|
|
35912
|
-
for(
|
|
35969
|
+
for(var i=0;i<this.AryIndexCache.length;++i)
|
|
35913
35970
|
{
|
|
35914
|
-
var item=this.
|
|
35915
|
-
|
|
35916
|
-
|
|
35971
|
+
var item=this.AryIndexCache[i];
|
|
35972
|
+
var x = this.CenterPoint.X + item.Radius * Math.cos(item.Angle * Math.PI / 180);
|
|
35973
|
+
var y = this.CenterPoint.Y + item.Radius * Math.sin(item.Angle * Math.PI / 180);
|
|
35917
35974
|
this.Canvas.moveTo(this.CenterPoint.X,this.CenterPoint.Y);
|
|
35918
|
-
this.Canvas.lineTo(
|
|
35919
|
-
this.DrawText(item);
|
|
35975
|
+
this.Canvas.lineTo(x,y);
|
|
35976
|
+
this.DrawText(item, x, y);
|
|
35920
35977
|
}
|
|
35921
35978
|
this.Canvas.stroke();
|
|
35979
|
+
|
|
35980
|
+
}
|
|
35981
|
+
|
|
35982
|
+
this.GetRadarRate=function(indexItem, value)
|
|
35983
|
+
{
|
|
35984
|
+
var range={ Max:100, Min:0 };
|
|
35985
|
+
if (IFrameSplitOperator.IsNumber(indexItem.Max)) range.Max=indexItem.Max;
|
|
35986
|
+
if (IFrameSplitOperator.IsNumber(indexItem.Min)) range.Min=indexItem.Min;
|
|
35987
|
+
|
|
35988
|
+
if (value>range.Max) value=range.Max;
|
|
35989
|
+
else if (value<range.Min) value=range.Min;
|
|
35990
|
+
|
|
35991
|
+
return (value-range.Min)/(range.Max-range.Min);
|
|
35922
35992
|
}
|
|
35923
35993
|
|
|
35924
35994
|
this.DrawArea=function()
|
|
35925
35995
|
{
|
|
35926
|
-
if (
|
|
35996
|
+
if (this.MapDataCache.size<=0) return;
|
|
35927
35997
|
|
|
35928
|
-
|
|
35929
|
-
|
|
35930
|
-
this.Canvas.beginPath();
|
|
35931
|
-
var isFirstDraw=true;
|
|
35932
|
-
for(let i in this.DataPoint)
|
|
35998
|
+
var index=0;
|
|
35999
|
+
for(var mapItem of this.MapDataCache)
|
|
35933
36000
|
{
|
|
35934
|
-
var
|
|
35935
|
-
|
|
36001
|
+
var mapData=mapItem[1].MapData;
|
|
36002
|
+
|
|
36003
|
+
var bFirstDraw=true;
|
|
36004
|
+
var pointCount=0;
|
|
36005
|
+
for(var i=0;i<this.AryIndexCache.length;++i)
|
|
35936
36006
|
{
|
|
35937
|
-
this.
|
|
35938
|
-
|
|
35939
|
-
|
|
36007
|
+
var indexItem=this.AryIndexCache[i];
|
|
36008
|
+
if (!indexItem.Data || !indexItem.Data.Name) continue;
|
|
36009
|
+
if (!mapData.has(indexItem.Data.Name)) continue;
|
|
36010
|
+
var item=mapData.get(indexItem.Data.Name);
|
|
36011
|
+
if (!item.Data && !IFrameSplitOperator.IsNumber(item.Data.Value)) conintue;
|
|
36012
|
+
|
|
36013
|
+
var widthRate=this.GetRadarRate(indexItem, item.Data.Value);
|
|
36014
|
+
var x = this.CenterPoint.X+indexItem.Radius*widthRate*Math.cos(indexItem.Angle * Math.PI / 180);
|
|
36015
|
+
var y = this.CenterPoint.Y+indexItem.Radius*widthRate*Math.sin(indexItem.Angle * Math.PI / 180);
|
|
36016
|
+
|
|
36017
|
+
if (bFirstDraw)
|
|
36018
|
+
{
|
|
36019
|
+
this.Canvas.beginPath();
|
|
36020
|
+
this.Canvas.moveTo(x,y);
|
|
36021
|
+
bFirstDraw=false;
|
|
36022
|
+
++pointCount;
|
|
36023
|
+
}
|
|
36024
|
+
else
|
|
36025
|
+
{
|
|
36026
|
+
this.Canvas.lineTo(x,y);
|
|
36027
|
+
++pointCount;
|
|
36028
|
+
}
|
|
35940
36029
|
}
|
|
35941
|
-
|
|
36030
|
+
|
|
36031
|
+
if (pointCount>0)
|
|
35942
36032
|
{
|
|
35943
|
-
this.Canvas.
|
|
36033
|
+
this.Canvas.closePath();
|
|
36034
|
+
|
|
36035
|
+
var config=this.AryAreaConfig[index%this.AryAreaConfig.length];
|
|
36036
|
+
if (config.Color)
|
|
36037
|
+
{
|
|
36038
|
+
this.Canvas.fillStyle = config.Color;
|
|
36039
|
+
this.Canvas.fill();
|
|
36040
|
+
}
|
|
36041
|
+
|
|
36042
|
+
if (config.LineColor)
|
|
36043
|
+
{
|
|
36044
|
+
this.Canvas.strokeStyle = config.LineColor;
|
|
36045
|
+
this.Canvas.stroke();
|
|
36046
|
+
}
|
|
35944
36047
|
}
|
|
35945
|
-
}
|
|
35946
36048
|
|
|
35947
|
-
|
|
35948
|
-
|
|
35949
|
-
this.Canvas.stroke();
|
|
36049
|
+
++index;
|
|
36050
|
+
}
|
|
35950
36051
|
}
|
|
35951
36052
|
|
|
35952
|
-
this.DrawText=function(item)
|
|
36053
|
+
this.DrawText=function(item, x, y)
|
|
35953
36054
|
{
|
|
35954
|
-
if (!item.
|
|
36055
|
+
if (!item.Data || !item.Data.Name) return;
|
|
35955
36056
|
|
|
35956
36057
|
//JSConsole.Chart.Log(item.Text, item.Angle);
|
|
35957
36058
|
this.Canvas.fillStyle = this.TitleColor;
|
|
35958
|
-
var xText =
|
|
36059
|
+
var xText = x, yText =y;
|
|
36060
|
+
|
|
36061
|
+
var angle=item.Angle%360;
|
|
35959
36062
|
|
|
35960
36063
|
//显示每个角度的位置
|
|
35961
|
-
if (
|
|
36064
|
+
if (angle > 0 && angle < 45) {
|
|
35962
36065
|
this.Canvas.textAlign = 'left';
|
|
35963
36066
|
this.Canvas.textBaseline = 'middle';
|
|
35964
36067
|
xText += 2;
|
|
35965
36068
|
}
|
|
35966
|
-
else if (
|
|
36069
|
+
else if (angle >= 45 && angle < 90) {
|
|
35967
36070
|
this.Canvas.textAlign = 'left';
|
|
35968
36071
|
this.Canvas.textBaseline = 'top';
|
|
35969
36072
|
xText += 2;
|
|
35970
36073
|
}
|
|
35971
|
-
else if (
|
|
36074
|
+
else if (angle==90)
|
|
36075
|
+
{
|
|
36076
|
+
this.Canvas.textAlign = 'center';
|
|
36077
|
+
this.Canvas.textBaseline = 'top';
|
|
36078
|
+
yText+=2;
|
|
36079
|
+
}
|
|
36080
|
+
else if (angle >= 90 && angle < 135) {
|
|
35972
36081
|
this.Canvas.textAlign = 'right';
|
|
35973
36082
|
this.Canvas.textBaseline = 'top';
|
|
35974
36083
|
xText -= 2;
|
|
35975
36084
|
}
|
|
35976
|
-
else if (
|
|
36085
|
+
else if (angle >= 135 && angle < 180) {
|
|
35977
36086
|
this.Canvas.textAlign = 'right';
|
|
35978
36087
|
this.Canvas.textBaseline = 'top';
|
|
35979
36088
|
xText -= 2;
|
|
35980
36089
|
}
|
|
35981
|
-
else if (
|
|
36090
|
+
else if (angle >= 180 && angle < 225) {
|
|
35982
36091
|
this.Canvas.textAlign = 'right';
|
|
35983
36092
|
this.Canvas.textBaseline = 'middle';
|
|
35984
36093
|
xText -= 2;
|
|
35985
36094
|
}
|
|
35986
|
-
else if (
|
|
36095
|
+
else if (angle >= 225 && angle <= 270) {
|
|
35987
36096
|
this.Canvas.textAlign = 'center';
|
|
35988
36097
|
this.Canvas.textBaseline = 'bottom';
|
|
35989
36098
|
}
|
|
35990
|
-
else if (
|
|
36099
|
+
else if (angle > 270 && angle < 315) {
|
|
35991
36100
|
this.Canvas.textAlign = 'left';
|
|
35992
36101
|
this.Canvas.textBaseline = 'bottom';
|
|
35993
36102
|
xText += 2;
|
|
35994
36103
|
}
|
|
35995
|
-
else
|
|
36104
|
+
else
|
|
36105
|
+
{
|
|
35996
36106
|
this.Canvas.textAlign = 'left';
|
|
35997
36107
|
this.Canvas.textBaseline = 'middle';
|
|
35998
36108
|
xText += 2;
|
|
35999
36109
|
}
|
|
36000
36110
|
|
|
36001
|
-
this.Canvas.fillText(item.
|
|
36111
|
+
this.Canvas.fillText(item.Data.Name, xText, yText);
|
|
36002
36112
|
}
|
|
36003
36113
|
|
|
36004
36114
|
this.Draw=function()
|
|
36005
36115
|
{
|
|
36006
|
-
this.
|
|
36007
|
-
this.
|
|
36008
|
-
this.
|
|
36009
|
-
|
|
36010
|
-
|
|
36011
|
-
else
|
|
36012
|
-
this.CalculatePoints(this.Data.Data);
|
|
36116
|
+
this.AryIndexCache=[];
|
|
36117
|
+
this.MapData=new Map();
|
|
36118
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIndex)) return;
|
|
36119
|
+
|
|
36120
|
+
this.CalculateSize();
|
|
36013
36121
|
|
|
36014
36122
|
this.DrawBorder();
|
|
36123
|
+
|
|
36015
36124
|
this.DrawArea();
|
|
36016
36125
|
}
|
|
36017
36126
|
|
|
36018
|
-
this.
|
|
36127
|
+
this.BuildCacheData=function()
|
|
36019
36128
|
{
|
|
36020
|
-
|
|
36021
|
-
let right=this.ChartBorder.GetRight();
|
|
36022
|
-
let top=this.ChartBorder.GetTop();
|
|
36023
|
-
let bottom=this.ChartBorder.GetBottom();
|
|
36024
|
-
let width=this.ChartBorder.GetWidth();
|
|
36025
|
-
let height=this.ChartBorder.GetHeight();
|
|
36129
|
+
this.MapDataCache=new Map();
|
|
36026
36130
|
|
|
36027
|
-
|
|
36028
|
-
let radius=Math.min(width/2,height/2)-2 //半径
|
|
36029
|
-
let count=Math.max(5,data?data.length:0);
|
|
36030
|
-
let averageAngle=360/count;
|
|
36031
|
-
for(let i=0;i<count;++i)
|
|
36131
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
36032
36132
|
{
|
|
36033
|
-
|
|
36034
|
-
|
|
36133
|
+
var item=this.Data.Data[i];
|
|
36134
|
+
if (!this.MapDataCache.has(item.Group))
|
|
36135
|
+
{
|
|
36136
|
+
this.MapDataCache.set(item.Group, { MapData:new Map() })
|
|
36137
|
+
}
|
|
36138
|
+
|
|
36139
|
+
var mpaItem=this.MapDataCache.get(item.Group);
|
|
36140
|
+
mpaItem.MapData.set(item.Name, { Data:item });
|
|
36141
|
+
}
|
|
36142
|
+
}
|
|
36143
|
+
|
|
36144
|
+
this.CalculateSize=function(data)
|
|
36145
|
+
{
|
|
36146
|
+
var border=this.ChartBorder.GetBorder();
|
|
36147
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
36148
|
+
this.TextFont=`${this.TextFontConfig.Size*pixelRatio}px ${ this.TextFontConfig.Name}`;
|
|
36149
|
+
var fontHeight=this.GetFontHeight(this.TextFont,"擎")+1;
|
|
36035
36150
|
|
|
36036
|
-
|
|
36151
|
+
var maxTextWidth=0;
|
|
36152
|
+
if (IFrameSplitOperator.IsNonEmptyArray(this.AryIndex))
|
|
36153
|
+
{
|
|
36154
|
+
for(var i=0;i<this.AryIndex.length;++i)
|
|
36037
36155
|
{
|
|
36038
|
-
var item=
|
|
36039
|
-
|
|
36040
|
-
|
|
36041
|
-
if (
|
|
36042
|
-
|
|
36043
|
-
|
|
36044
|
-
|
|
36045
|
-
|
|
36046
|
-
|
|
36047
|
-
|
|
36048
|
-
|
|
36049
|
-
|
|
36050
|
-
|
|
36051
|
-
|
|
36052
|
-
|
|
36053
|
-
|
|
36156
|
+
var item=this.AryIndex[i];
|
|
36157
|
+
if (!item.Name) continue;
|
|
36158
|
+
var textWidth=this.Canvas.measureText(item.Name).width;
|
|
36159
|
+
if (maxTextWidth<textWidth) maxTextWidth=textWidth;
|
|
36160
|
+
}
|
|
36161
|
+
}
|
|
36162
|
+
|
|
36163
|
+
var radius=this.Radius*2*pixelRatio; //半径
|
|
36164
|
+
this.RectClient={ Width:radius*2, Height:radius*2, Radius:radius };
|
|
36165
|
+
this.RectClient.Right=border.Right+this.Offset.X-maxTextWidth;
|
|
36166
|
+
this.RectClient.Top=border.TopEx+this.Offset.Y+fontHeight;
|
|
36167
|
+
this.RectClient.Left=this.RectClient.Right-this.RectClient.Width;
|
|
36168
|
+
this.RectClient.Bottom=this.RectClient.Top+this.RectClient.Height;
|
|
36169
|
+
|
|
36170
|
+
var ptCenter={X:this.RectClient.Left+this.RectClient.Width/2, Y:this.RectClient.Top+this.RectClient.Height/2}; //中心点
|
|
36171
|
+
|
|
36172
|
+
var count=Math.max(5,this.AryIndex.length);
|
|
36173
|
+
var averageAngle=360/count;
|
|
36174
|
+
for(var i=0;i<count;++i)
|
|
36175
|
+
{
|
|
36176
|
+
var angle=i*averageAngle+this.StartAngle;
|
|
36054
36177
|
|
|
36055
|
-
|
|
36178
|
+
var indexItem={ Data:null, Index:i, Angle:angle, Radius:radius };
|
|
36179
|
+
if (this.AryIndex && this.AryIndex[i])
|
|
36180
|
+
{
|
|
36181
|
+
indexItem.Data=this.AryIndex[i];
|
|
36056
36182
|
}
|
|
36057
36183
|
|
|
36058
|
-
this.
|
|
36184
|
+
this.AryIndexCache.push(indexItem);
|
|
36059
36185
|
}
|
|
36060
36186
|
|
|
36061
36187
|
this.CenterPoint=ptCenter;
|
|
@@ -36064,7 +36190,7 @@ function ChartSimpleRadar()
|
|
|
36064
36190
|
//空数据
|
|
36065
36191
|
this.DrawEmptyData=function()
|
|
36066
36192
|
{
|
|
36067
|
-
JSConsole.Chart.Log('[
|
|
36193
|
+
JSConsole.Chart.Log('[ChartSimpleRadar::DrawEmptyData]')
|
|
36068
36194
|
}
|
|
36069
36195
|
}
|
|
36070
36196
|
|
|
@@ -44720,98 +44846,219 @@ function ChartMultiPoint()
|
|
|
44720
44846
|
delete this.newMethod;
|
|
44721
44847
|
|
|
44722
44848
|
this.ClassName="ChartMultiPoint";
|
|
44723
|
-
this.PointGroup=[]; // [ {Point:[ {
|
|
44849
|
+
this.PointGroup=[]; // [ {Point:[ {Date, Time, Value }, ], Color: }, ]
|
|
44724
44850
|
|
|
44725
44851
|
|
|
44726
44852
|
this.IsHScreen=false;
|
|
44727
44853
|
this.LineWidth=1;
|
|
44728
44854
|
this.PointRadius=5;
|
|
44729
44855
|
|
|
44856
|
+
this.MapCache=null; //key=date/date-time value={ Data:[] }
|
|
44857
|
+
this.GetKValue=ChartData.GetKValue;
|
|
44858
|
+
|
|
44859
|
+
this.BuildKey=function(item)
|
|
44860
|
+
{
|
|
44861
|
+
if (IFrameSplitOperator.IsNumber(item.Time)) return `${item.Date}-${item.Time}`;
|
|
44862
|
+
else return item.Date;
|
|
44863
|
+
}
|
|
44864
|
+
|
|
44865
|
+
this.GetItem=function(kItem)
|
|
44866
|
+
{
|
|
44867
|
+
if (!this.MapCache || this.MapCache.size<=0) return null;
|
|
44868
|
+
|
|
44869
|
+
var key=this.BuildKey(kItem);
|
|
44870
|
+
if (!this.MapCache.has(key)) return null;
|
|
44871
|
+
|
|
44872
|
+
return this.MapCache.get(key);
|
|
44873
|
+
}
|
|
44874
|
+
|
|
44875
|
+
this.BuildCacheData=function()
|
|
44876
|
+
{
|
|
44877
|
+
var mapData=new Map();
|
|
44878
|
+
this.MapCache=mapData;
|
|
44879
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.PointGroup)) return;
|
|
44880
|
+
|
|
44881
|
+
for(var i=0; i<this.PointGroup.length; ++i)
|
|
44882
|
+
{
|
|
44883
|
+
var groupItem=this.PointGroup[i];
|
|
44884
|
+
if (!groupItem || !IFrameSplitOperator.IsNonEmptyArray(groupItem.Point)) continue;
|
|
44885
|
+
|
|
44886
|
+
var clrConfig= { Color:groupItem.Color, BGColor:groupItem.BGColor, LineWidth:this.LineWidth, Radius:this.PointRadius, Name:groupItem.Name };
|
|
44887
|
+
if (IFrameSplitOperator.IsNumber(groupItem.PointRadius)) clrConfig.Radius=groupItem.PointRadius;
|
|
44888
|
+
|
|
44889
|
+
for(var j=0; j<groupItem.Point.length; ++j)
|
|
44890
|
+
{
|
|
44891
|
+
var point=groupItem.Point[j];
|
|
44892
|
+
var key=this.BuildKey(point);
|
|
44893
|
+
|
|
44894
|
+
var item={ Data:point, ColorConfig:clrConfig }
|
|
44895
|
+
if (mapData.has(key))
|
|
44896
|
+
{
|
|
44897
|
+
var mapItem=mapData.get(key);
|
|
44898
|
+
mapItem.Data.push(item);
|
|
44899
|
+
}
|
|
44900
|
+
else
|
|
44901
|
+
{
|
|
44902
|
+
mapData.set(key,{ Data:[item] });
|
|
44903
|
+
}
|
|
44904
|
+
}
|
|
44905
|
+
}
|
|
44906
|
+
}
|
|
44907
|
+
|
|
44730
44908
|
this.Draw=function()
|
|
44731
44909
|
{
|
|
44732
|
-
if (!this.IsShow || this.ChartFrame.IsMinSize) return;
|
|
44733
|
-
if (
|
|
44910
|
+
if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
|
|
44911
|
+
if (this.IsShowIndexTitleOnly()) return;
|
|
44912
|
+
if (this.IsHideScriptIndex()) return;
|
|
44913
|
+
|
|
44914
|
+
if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return; //k线数据
|
|
44734
44915
|
if (!IFrameSplitOperator.IsNonEmptyArray(this.PointGroup)) return;
|
|
44916
|
+
if (!this.MapCache || this.MapCache.size<=0) return;
|
|
44735
44917
|
|
|
44736
44918
|
this.IsHScreen=(this.ChartFrame.IsHScreen===true);
|
|
44737
44919
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
44738
|
-
var
|
|
44739
|
-
var
|
|
44920
|
+
var dataWidth=this.ChartFrame.DataWidth;
|
|
44921
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
44922
|
+
var isMinute=this.IsMinuteFrame();
|
|
44923
|
+
|
|
44924
|
+
var border=this.GetBorder();
|
|
44925
|
+
if (this.IsHScreen)
|
|
44926
|
+
{
|
|
44927
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
44928
|
+
var chartright=border.BottomEx;
|
|
44929
|
+
var chartLeft=border.TopEx;
|
|
44930
|
+
}
|
|
44931
|
+
else
|
|
44932
|
+
{
|
|
44933
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
44934
|
+
var chartright=border.RightEx;
|
|
44935
|
+
var chartLeft=border.LeftEx;
|
|
44936
|
+
}
|
|
44937
|
+
|
|
44938
|
+
//计算所有的点位置
|
|
44939
|
+
var mapPoint=new Map();
|
|
44940
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
44941
|
+
{
|
|
44942
|
+
var kItem=this.Data.Data[i];
|
|
44943
|
+
var key=this.BuildKey(kItem);
|
|
44944
|
+
if (!this.MapCache.has(key)) continue;
|
|
44945
|
+
var mapItem=this.MapCache.get(key);
|
|
44946
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data)) continue;
|
|
44947
|
+
|
|
44948
|
+
if (isMinute)
|
|
44949
|
+
{
|
|
44950
|
+
var x=this.ChartFrame.GetXFromIndex(j);
|
|
44951
|
+
}
|
|
44952
|
+
else
|
|
44953
|
+
{
|
|
44954
|
+
var left=xOffset;
|
|
44955
|
+
var right=xOffset+dataWidth;
|
|
44956
|
+
if (right>chartright) break;
|
|
44957
|
+
var x=left+(right-left)/2;
|
|
44958
|
+
}
|
|
44959
|
+
|
|
44960
|
+
this.CalculateItem(mapItem, kItem, x, mapPoint);
|
|
44961
|
+
}
|
|
44962
|
+
|
|
44963
|
+
if (mapPoint.size<=0) return;
|
|
44740
44964
|
|
|
44741
44965
|
this.Canvas.save();
|
|
44742
44966
|
this.ClipClient(this.IsHScreen);
|
|
44743
|
-
|
|
44744
|
-
|
|
44967
|
+
|
|
44968
|
+
this.DrawAllPoint(mapPoint);
|
|
44969
|
+
|
|
44970
|
+
this.Canvas.restore();
|
|
44971
|
+
}
|
|
44972
|
+
|
|
44973
|
+
this.CalculateItem=function(groupItem, kItem, x, mapPoint)
|
|
44974
|
+
{
|
|
44975
|
+
for(var i=0; i<groupItem.Data.length; ++i)
|
|
44976
|
+
{
|
|
44977
|
+
var item=groupItem.Data[i];
|
|
44978
|
+
var value=item.Data.Value;
|
|
44979
|
+
if (IFrameSplitOperator.IsString(item.Data.Value)) value=this.GetKValue(kItem,item.Data.Value);
|
|
44980
|
+
if (!IFrameSplitOperator.IsNumber(value)) continue;
|
|
44981
|
+
|
|
44982
|
+
var y=this.ChartFrame.GetYFromData(value,false);
|
|
44983
|
+
|
|
44984
|
+
var strConfig=JSON.stringify(item.ColorConfig);
|
|
44985
|
+
if (!mapPoint.has(strConfig)) mapPoint.set(strConfig, { AryPoint:[]});
|
|
44986
|
+
var mapItem=mapPoint.get(strConfig);
|
|
44987
|
+
|
|
44988
|
+
mapItem.AryPoint.push({ X:x, Y:y, Data:item });
|
|
44989
|
+
}
|
|
44990
|
+
}
|
|
44991
|
+
|
|
44992
|
+
this.DrawAllPoint=function(mapPoint)
|
|
44993
|
+
{
|
|
44994
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
44995
|
+
|
|
44996
|
+
for(var mapItem of mapPoint)
|
|
44745
44997
|
{
|
|
44746
|
-
var
|
|
44747
|
-
|
|
44748
|
-
var
|
|
44749
|
-
var lineWidth=this.LineWidth;
|
|
44750
|
-
var radius=this.PointRadius;
|
|
44751
|
-
if (IFrameSplitOperator.IsNumber(item.LineWidth)) lineWidth=item.LineWidth;
|
|
44752
|
-
if (IFrameSplitOperator.IsNumber(item.PointRadius)) radius=item.PointRadius;
|
|
44998
|
+
var aryPoint=mapItem[1].AryPoint;
|
|
44999
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(aryPoint)) continue;
|
|
45000
|
+
var config=null;
|
|
44753
45001
|
var path=new Path2D();
|
|
44754
45002
|
var count=0;
|
|
44755
|
-
|
|
44756
|
-
for(var j=0; j<item.Point.length; ++j)
|
|
45003
|
+
for(var i=0;i<aryPoint.length;++i)
|
|
44757
45004
|
{
|
|
44758
|
-
var
|
|
44759
|
-
if (!
|
|
44760
|
-
|
|
44761
|
-
var index=point.Index-offset;
|
|
44762
|
-
if (index>=0 && index<xPointCount)
|
|
44763
|
-
{
|
|
44764
|
-
var x=this.ChartFrame.GetXFromIndex(index);
|
|
44765
|
-
var y=this.ChartFrame.GetYFromData(point.Value, false);
|
|
45005
|
+
var item=aryPoint[i];
|
|
45006
|
+
if (!config) config=item.Data.ColorConfig;
|
|
44766
45007
|
|
|
44767
|
-
|
|
44768
|
-
|
|
44769
|
-
|
|
44770
|
-
|
|
44771
|
-
|
|
45008
|
+
var pointPath = new Path2D();
|
|
45009
|
+
if (this.IsHScreen)
|
|
45010
|
+
pointPath.arc(item.Y,item.X,config.Radius*pixelRatio,0,360,false);
|
|
45011
|
+
else
|
|
45012
|
+
pointPath.arc(item.X,item.Y,config.Radius**pixelRatio,0,360,false);
|
|
44772
45013
|
|
|
44773
|
-
|
|
44774
|
-
|
|
44775
|
-
}
|
|
45014
|
+
path.addPath(pointPath);
|
|
45015
|
+
++count;
|
|
44776
45016
|
}
|
|
44777
45017
|
|
|
44778
|
-
if (count>0 &&
|
|
45018
|
+
if (count>0 && config)
|
|
44779
45019
|
{
|
|
44780
|
-
|
|
44781
|
-
|
|
44782
|
-
|
|
45020
|
+
if (config.BGColor)
|
|
45021
|
+
{
|
|
45022
|
+
this.Canvas.fillStyle=config.BGColor; //背景填充颜色
|
|
45023
|
+
this.Canvas.fill(path);
|
|
45024
|
+
}
|
|
44783
45025
|
|
|
44784
|
-
if (
|
|
44785
|
-
|
|
45026
|
+
if (config.Color)
|
|
45027
|
+
{
|
|
45028
|
+
this.Canvas.lineWidth=config.LineWidth*pixelRatio;
|
|
45029
|
+
this.Canvas.strokeStyle=config.Color;
|
|
45030
|
+
this.Canvas.stroke(path);
|
|
45031
|
+
}
|
|
44786
45032
|
}
|
|
44787
|
-
|
|
44788
45033
|
}
|
|
44789
|
-
|
|
44790
|
-
this.Canvas.restore();
|
|
44791
45034
|
}
|
|
44792
45035
|
|
|
44793
45036
|
this.GetMaxMin=function()
|
|
44794
45037
|
{
|
|
44795
45038
|
var range={ Min:null, Max:null };
|
|
45039
|
+
if(!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return range;
|
|
45040
|
+
if (!this.MapCache || this.MapCache.size<=0) return;
|
|
44796
45041
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
44797
|
-
var start=this.Data.DataOffset;
|
|
44798
|
-
var end=start+xPointCount;
|
|
44799
45042
|
|
|
44800
|
-
for(var i=0;
|
|
45043
|
+
for(var i=this.Data.DataOffset,j=0, k=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
|
|
44801
45044
|
{
|
|
44802
|
-
var
|
|
44803
|
-
|
|
45045
|
+
var kItem=this.Data.Data[i];
|
|
45046
|
+
var key=this.BuildKey(kItem);
|
|
45047
|
+
if (!this.MapCache.has(key)) continue;
|
|
45048
|
+
var mapItem=this.MapCache.get(key);
|
|
45049
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data)) continue;
|
|
44804
45050
|
|
|
44805
|
-
for(
|
|
45051
|
+
for(k=0;k<mapItem.Data.length;++k)
|
|
44806
45052
|
{
|
|
44807
|
-
var
|
|
44808
|
-
|
|
44809
|
-
|
|
44810
|
-
|
|
44811
|
-
|
|
44812
|
-
|
|
44813
|
-
|
|
44814
|
-
|
|
45053
|
+
var item=mapItem.Data[k];
|
|
45054
|
+
var value=item.Data.Value;
|
|
45055
|
+
if (IFrameSplitOperator.IsString(item.Data.Value)) value=this.GetKValue(kItem,item.Data.Value);
|
|
45056
|
+
if (!IFrameSplitOperator.IsNumber(value)) continue;
|
|
45057
|
+
|
|
45058
|
+
if (range.Max==null) range.Max=value;
|
|
45059
|
+
else if (range.Max<value) range.Max=value;
|
|
45060
|
+
if (range.Min==null) range.Min=value;
|
|
45061
|
+
else if (range.Min>value) range.Min=value;
|
|
44815
45062
|
}
|
|
44816
45063
|
}
|
|
44817
45064
|
|
|
@@ -45078,6 +45325,8 @@ function ChartMultiSVGIconV2()
|
|
|
45078
45325
|
this.IconRect=[]; //0=序号,1=区域
|
|
45079
45326
|
|
|
45080
45327
|
this.MapCache=null; //key=date/date-time value={ Data:[] }
|
|
45328
|
+
this.GetKValue=ChartData.GetKValue;
|
|
45329
|
+
|
|
45081
45330
|
|
|
45082
45331
|
this.BuildKey=function(item)
|
|
45083
45332
|
{
|
|
@@ -45192,28 +45441,7 @@ function ChartMultiSVGIconV2()
|
|
|
45192
45441
|
|
|
45193
45442
|
this.Canvas.restore();
|
|
45194
45443
|
}
|
|
45195
|
-
|
|
45196
|
-
this.GetKValue=function(kItem, valueName)
|
|
45197
|
-
{
|
|
45198
|
-
switch(valueName)
|
|
45199
|
-
{
|
|
45200
|
-
case "HIGH":
|
|
45201
|
-
case "H":
|
|
45202
|
-
return kItem.High;
|
|
45203
|
-
case "L":
|
|
45204
|
-
case "LOW":
|
|
45205
|
-
return kItem.Low;
|
|
45206
|
-
case "C":
|
|
45207
|
-
case "CLOSE":
|
|
45208
|
-
return kItem.Close;
|
|
45209
|
-
case "O":
|
|
45210
|
-
case "OPEN":
|
|
45211
|
-
return KItem.Open;
|
|
45212
|
-
default:
|
|
45213
|
-
return null;
|
|
45214
|
-
}
|
|
45215
|
-
}
|
|
45216
|
-
|
|
45444
|
+
|
|
45217
45445
|
this.DrawItem=function(groupItem, kItem, x, drawInfo)
|
|
45218
45446
|
{
|
|
45219
45447
|
if (!IFrameSplitOperator.IsNonEmptyArray(groupItem.Data)) return;
|
|
@@ -61169,24 +61397,29 @@ function DynamicChartTitlePainting()
|
|
|
61169
61397
|
|
|
61170
61398
|
this.ForamtMultiPointTitle=function(dataIndex, dataInfo)
|
|
61171
61399
|
{
|
|
61172
|
-
if (!
|
|
61400
|
+
if (!dataInfo.GetItemCallback) return null;
|
|
61401
|
+
if (!dataInfo.Data || !IFrameSplitOperator.IsNonEmptyArray(dataInfo.Data.Data)) return null;
|
|
61402
|
+
var kItem=dataInfo.Data.Data[dataIndex];
|
|
61403
|
+
if (!kItem) return null;
|
|
61404
|
+
|
|
61405
|
+
var group=dataInfo.GetItemCallback(kItem);
|
|
61406
|
+
if (!group || !IFrameSplitOperator.IsNonEmptyArray(group.Data)) return null;
|
|
61173
61407
|
|
|
61174
61408
|
var aryText=[];
|
|
61175
|
-
for(var i=0;i<
|
|
61409
|
+
for(var i=0;i<group.Data.length;++i)
|
|
61176
61410
|
{
|
|
61177
|
-
var
|
|
61178
|
-
|
|
61179
|
-
|
|
61180
|
-
|
|
61181
|
-
|
|
61182
|
-
|
|
61183
|
-
|
|
61184
|
-
|
|
61185
|
-
|
|
61186
|
-
|
|
61187
|
-
|
|
61188
|
-
|
|
61189
|
-
}
|
|
61411
|
+
var item=group.Data[i];
|
|
61412
|
+
var config=item.ColorConfig;
|
|
61413
|
+
|
|
61414
|
+
var color=null;
|
|
61415
|
+
if (config.BGColor) color=config.BGColor;
|
|
61416
|
+
else if (config.Color) color=config.Color;
|
|
61417
|
+
|
|
61418
|
+
if (config.Name) aryText.push({ Text:`${config.Name}:`, Color:color });
|
|
61419
|
+
|
|
61420
|
+
var value=item.Data.Value;
|
|
61421
|
+
if (IFrameSplitOperator.IsString(item.Data.Value)) value=ChartData.GetKValue(kItem, item.Data.Value);
|
|
61422
|
+
aryText.push({ Text:this.FormatValue(value, dataInfo), Color:color});
|
|
61190
61423
|
}
|
|
61191
61424
|
|
|
61192
61425
|
if (!IFrameSplitOperator.IsNonEmptyArray(aryText)) return null;
|
|
@@ -61957,6 +62190,11 @@ function DynamicChartTitlePainting()
|
|
|
61957
62190
|
aryText=this.FromatStackedBarTitle(value, item);
|
|
61958
62191
|
if (!aryText) continue;
|
|
61959
62192
|
}
|
|
62193
|
+
else if (item.DataType=="ChartMultiPoint")
|
|
62194
|
+
{
|
|
62195
|
+
aryText=this.ForamtMultiPointTitle(dataIndex, item);
|
|
62196
|
+
if (!aryText) continue;
|
|
62197
|
+
}
|
|
61960
62198
|
else
|
|
61961
62199
|
{
|
|
61962
62200
|
valueText=this.FormatValue(value,item);
|
|
@@ -74961,6 +75199,20 @@ function JSChartResource()
|
|
|
74961
75199
|
Offset:{ X:-5, Y:5 }
|
|
74962
75200
|
}
|
|
74963
75201
|
|
|
75202
|
+
this.ChartSimpleRadar=
|
|
75203
|
+
{
|
|
75204
|
+
TextFont:{ Family:'微软雅黑' , Size:12 },
|
|
75205
|
+
BorderColor:"rgb(169,169,169)",
|
|
75206
|
+
Offset:{ X:-5, Y:5 },
|
|
75207
|
+
TextColor:"rgb(105,105,105)",
|
|
75208
|
+
AryBGColor:['rgba(255,255,255,0.9)', 'rgba(230, 234, 242,0.9)'],
|
|
75209
|
+
AryArea:
|
|
75210
|
+
[
|
|
75211
|
+
{ Color:"rgba(242,154,118,0.4)", LineColor:"rgb(242,154,118)"},
|
|
75212
|
+
{ Color:"rgba(121,197,228,0.4)", LineColor:"rgb(92,165,196)"},
|
|
75213
|
+
],
|
|
75214
|
+
}
|
|
75215
|
+
|
|
74964
75216
|
//手机端tooltip
|
|
74965
75217
|
this.TooltipPaint = {
|
|
74966
75218
|
BGColor:'rgba(250,250,250,0.8)', //背景色
|
|
@@ -76192,6 +76444,7 @@ function JSChartResource()
|
|
|
76192
76444
|
|
|
76193
76445
|
if (style.ChartSimpleTable) this.SetChartSimpleTable(style.ChartSimpleTable);
|
|
76194
76446
|
if (style.ChartSimplePie) this.SetChartSimplePie(style.ChartSimplePie);
|
|
76447
|
+
if (style.ChartSimpleRadar) this.SetChartSimpleRadar(style.ChartSimpleRadar);
|
|
76195
76448
|
|
|
76196
76449
|
if (style.DRAWICON)
|
|
76197
76450
|
{
|
|
@@ -77285,6 +77538,30 @@ function JSChartResource()
|
|
|
77285
77538
|
}
|
|
77286
77539
|
}
|
|
77287
77540
|
|
|
77541
|
+
this.SetChartSimpleRadar=function(style)
|
|
77542
|
+
{
|
|
77543
|
+
var dest=this.ChartSimpleRadar;
|
|
77544
|
+
if (style.TextFont)
|
|
77545
|
+
{
|
|
77546
|
+
var item=style.TextFont;
|
|
77547
|
+
if (item.Name) dest.TextFont.Name=item.Name;
|
|
77548
|
+
if (IFrameSplitOperator.IsNumber(item.Size)) dest.TextFont.Size=item.Size;
|
|
77549
|
+
}
|
|
77550
|
+
|
|
77551
|
+
if (style.BorderColor) dest.BorderColor=style.BorderColor;
|
|
77552
|
+
if (style.TextColor) dest.TextColor=style.TextColor;
|
|
77553
|
+
|
|
77554
|
+
if (style.Offset)
|
|
77555
|
+
{
|
|
77556
|
+
var item=style.Offset;
|
|
77557
|
+
if (IFrameSplitOperator.IsNumber(item.X)) dest.Offset.X=item.X;
|
|
77558
|
+
if (IFrameSplitOperator.IsNumber(item.Y)) dest.Offset.Y=item.Y;
|
|
77559
|
+
}
|
|
77560
|
+
|
|
77561
|
+
if (IFrameSplitOperator.IsNonEmptyArray(style.AryBGColor)) dest.AryBGColor=style.AryBGColor.slice();
|
|
77562
|
+
if (IFrameSplitOperator.IsNonEmptyArray(style.AryArea)) dest.AryArea=style.AryArea.slice();
|
|
77563
|
+
}
|
|
77564
|
+
|
|
77288
77565
|
}
|
|
77289
77566
|
|
|
77290
77567
|
var g_JSChartResource=new JSChartResource();
|
|
@@ -83898,18 +84175,18 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
83898
84175
|
{
|
|
83899
84176
|
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
83900
84177
|
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
83901
|
-
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
84178
|
+
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId, CursorIndex:this.CursorIndex, Point:{ X:x*pixelTatio, Y:y*pixelTatio}}, e);
|
|
83902
84179
|
|
|
83903
84180
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);
|
|
83904
84181
|
if (event)
|
|
83905
84182
|
{
|
|
83906
|
-
var data={ X:x, Y:y, Event:e, FrameID:frameId };
|
|
84183
|
+
var data={ X:x, Y:y, Event:e, FrameID:frameId, Point:{ X:x*pixelTatio, Y:y*pixelTatio}, CursorIndex:this.CursorIndex, };
|
|
83907
84184
|
event.Callback(event,data,this);
|
|
83908
84185
|
}
|
|
83909
84186
|
}
|
|
83910
84187
|
|
|
83911
84188
|
//右键菜单数据
|
|
83912
|
-
this.GetRightMenuData=function(frameID)
|
|
84189
|
+
this.GetRightMenuData=function(frameID, option)
|
|
83913
84190
|
{
|
|
83914
84191
|
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
83915
84192
|
var klineChart=this.ChartPaint[0];
|
|
@@ -83952,6 +84229,17 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
83952
84229
|
var bPopMinuteChart=false;
|
|
83953
84230
|
if (this.PopMinuteChart) bPopMinuteChart=true;
|
|
83954
84231
|
|
|
84232
|
+
var kItem=null;
|
|
84233
|
+
if (frameID>=0 && option && IFrameSplitOperator.IsNumber(option.CursorIndex))
|
|
84234
|
+
{
|
|
84235
|
+
var kData=this.GetKData();
|
|
84236
|
+
if (kData && IFrameSplitOperator.IsNonEmptyArray(kData.Data))
|
|
84237
|
+
{
|
|
84238
|
+
var dataIndex=kData.DataOffset+option.CursorIndex;
|
|
84239
|
+
if (dataIndex>=0 && dataIndex<kData.Data.length) kItem=kData.Data[dataIndex];
|
|
84240
|
+
}
|
|
84241
|
+
}
|
|
84242
|
+
|
|
83955
84243
|
var aryMenu=
|
|
83956
84244
|
[
|
|
83957
84245
|
{
|
|
@@ -84234,6 +84522,17 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84234
84522
|
}
|
|
84235
84523
|
}
|
|
84236
84524
|
}
|
|
84525
|
+
else if (item.Name=="其他设置")
|
|
84526
|
+
{
|
|
84527
|
+
if (kItem)
|
|
84528
|
+
{
|
|
84529
|
+
var bLocked=this.IsLockCorssCursor();
|
|
84530
|
+
if (bLocked)
|
|
84531
|
+
item.SubMenu.push({ Name:"锁十字光标", Data:{ ID: JSCHART_MENU_ID.CMD_UNLOCK_CROSSCURSOR }, Checked:bLocked });
|
|
84532
|
+
else
|
|
84533
|
+
item.SubMenu.push({ Name:"锁十字光标", Data:{ ID: JSCHART_MENU_ID.CMD_LOCK_CROSSCURSOR, Args:[{ KItem:{Date:kItem.Date, Time:kItem.Time}, Draw:true }] }, Checked:bLocked });
|
|
84534
|
+
}
|
|
84535
|
+
}
|
|
84237
84536
|
}
|
|
84238
84537
|
|
|
84239
84538
|
return aryMenu;
|
|
@@ -85837,19 +86136,36 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
85837
86136
|
if (option && option.Draw) this.Draw();
|
|
85838
86137
|
}
|
|
85839
86138
|
|
|
86139
|
+
//option={ KItem:{ Date:, Time:}}
|
|
85840
86140
|
this.LockCorssCursor=function(option)
|
|
85841
86141
|
{
|
|
85842
|
-
if (
|
|
85843
|
-
|
|
85844
|
-
|
|
86142
|
+
if (option && option.KItem) //指定日期时间
|
|
86143
|
+
{
|
|
86144
|
+
var kData=this.GetKData();
|
|
86145
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
|
|
85845
86146
|
|
|
85846
|
-
|
|
85847
|
-
|
|
85848
|
-
|
|
86147
|
+
var kItem={ Date:option.KItem.Date, Time:option.KItem.Time, Index:-1};
|
|
86148
|
+
kData.FindDataIndexByDateTime([kItem]);
|
|
86149
|
+
if (kItem.Index<0) return false;
|
|
85849
86150
|
|
|
85850
|
-
|
|
85851
|
-
|
|
85852
|
-
|
|
86151
|
+
var xItem=this.GlobalOption.LockCorssCursor.X;
|
|
86152
|
+
xItem.KLine={ DataIndex:kItem.Index, Date:kItem.Date, Time:kItem.Time };
|
|
86153
|
+
xItem.Enable=true;
|
|
86154
|
+
}
|
|
86155
|
+
else
|
|
86156
|
+
{
|
|
86157
|
+
if (this.CursorIndex<0) return false;
|
|
86158
|
+
var kData=this.GetKData();
|
|
86159
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
|
|
86160
|
+
|
|
86161
|
+
var dataIndex=kData.DataOffset+parseInt(this.CursorIndex.toFixed(0));
|
|
86162
|
+
var kItem=kData.Data[dataIndex];
|
|
86163
|
+
if (!kItem) return false;
|
|
86164
|
+
|
|
86165
|
+
var xItem=this.GlobalOption.LockCorssCursor.X;
|
|
86166
|
+
xItem.KLine={ DataIndex:dataIndex, Date:kItem.Date, Time:kItem.Time };
|
|
86167
|
+
xItem.Enable=true;
|
|
86168
|
+
}
|
|
85853
86169
|
|
|
85854
86170
|
if (option && option.Draw) this.Draw();
|
|
85855
86171
|
return true;
|
|
@@ -85872,7 +86188,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
85872
86188
|
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return position;
|
|
85873
86189
|
|
|
85874
86190
|
position.CursorIndex=xItem.KLine.DataIndex-kData.DataOffset;
|
|
85875
|
-
position.LastPoint.X=this.Frame.GetXFromIndex(position.CursorIndex);
|
|
86191
|
+
position.LastPoint.X=this.Frame.GetXFromIndex(position.CursorIndex, false);
|
|
85876
86192
|
|
|
85877
86193
|
var border=this.Frame.ChartBorder.GetBorder();
|
|
85878
86194
|
if (position.LastPoint.Y<border.Top || position.LastPoint.Y>border.Bottom) //超出图形框子, 调整为收盘价
|
|
@@ -87945,18 +88261,18 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
87945
88261
|
{
|
|
87946
88262
|
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
87947
88263
|
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
87948
|
-
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
88264
|
+
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId, CursorIndex:this.CursorIndex, Point:{ X:x*pixelTatio, Y:y*pixelTatio} }, e);
|
|
87949
88265
|
|
|
87950
88266
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);
|
|
87951
88267
|
if (event)
|
|
87952
88268
|
{
|
|
87953
|
-
var data={ X:x, Y:y, Event:e, FrameID:frameId };
|
|
88269
|
+
var data={ X:x, Y:y, Event:e, FrameID:frameId, CursorIndex:this.CursorIndex, Point:{ X:x*pixelTatio, Y:y*pixelTatio} };
|
|
87954
88270
|
event.Callback(event,data,this);
|
|
87955
88271
|
}
|
|
87956
88272
|
}
|
|
87957
88273
|
|
|
87958
88274
|
//右键菜单数据
|
|
87959
|
-
this.GetRightMenuData=function(frameID)
|
|
88275
|
+
this.GetRightMenuData=function(frameID, option)
|
|
87960
88276
|
{
|
|
87961
88277
|
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
87962
88278
|
|
|
@@ -88083,11 +88399,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
88083
88399
|
}
|
|
88084
88400
|
|
|
88085
88401
|
|
|
88086
|
-
|
|
88402
|
+
|
|
88087
88403
|
for(var i=0;i<aryMenu.length;++i)
|
|
88088
88404
|
{
|
|
88089
88405
|
var item=aryMenu[i];
|
|
88090
|
-
if (item.Name=="叠加品种")
|
|
88406
|
+
if (item.Name=="叠加品种") //删除菜单
|
|
88091
88407
|
{
|
|
88092
88408
|
for(var j=0;j<item.SubMenu.length;++j)
|
|
88093
88409
|
{
|
|
@@ -88099,6 +88415,10 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
88099
88415
|
}
|
|
88100
88416
|
}
|
|
88101
88417
|
}
|
|
88418
|
+
else if (item.Name=="其他设置")
|
|
88419
|
+
{
|
|
88420
|
+
|
|
88421
|
+
}
|
|
88102
88422
|
}
|
|
88103
88423
|
|
|
88104
88424
|
return aryMenu;
|
|
@@ -112491,6 +112811,48 @@ function JSDraw(errorHandler,symbolData)
|
|
|
112491
112811
|
|
|
112492
112812
|
return result={ DrawData:{ Data:aryCell, Radius:radius }, DrawType:"DRAW_SIMPLE_PIE" };
|
|
112493
112813
|
}
|
|
112814
|
+
|
|
112815
|
+
this.RADAR_CELL=function(name, data, max, min)
|
|
112816
|
+
{
|
|
112817
|
+
var cellItem={ Name:name, Max:100, Min:0, Value:null };
|
|
112818
|
+
if (IFrameSplitOperator.IsNumber(data))
|
|
112819
|
+
{
|
|
112820
|
+
cellItem.Value=data;
|
|
112821
|
+
}
|
|
112822
|
+
else if (IFrameSplitOperator.IsString(data))
|
|
112823
|
+
{
|
|
112824
|
+
cellItem.Value=parseFloat(data);
|
|
112825
|
+
}
|
|
112826
|
+
else if (IFrameSplitOperator.IsNonEmptyArray(data))
|
|
112827
|
+
{
|
|
112828
|
+
var lastValue=data[data.length-1];
|
|
112829
|
+
if (IFrameSplitOperator.IsNumber(lastValue)) cellItem.Value=lastValue;
|
|
112830
|
+
else if (IFrameSplitOperator.IsString(lastValue)) cellItem.Value=parseFloat(lastValue);
|
|
112831
|
+
}
|
|
112832
|
+
|
|
112833
|
+
if (IFrameSplitOperator.IsNumber(max)) cellItem.Max=max;
|
|
112834
|
+
if (IFrameSplitOperator.IsNumber(min)) cellItem.Min=min;
|
|
112835
|
+
|
|
112836
|
+
return cellItem;
|
|
112837
|
+
}
|
|
112838
|
+
|
|
112839
|
+
this.DRAWRADAR=function(args)
|
|
112840
|
+
{
|
|
112841
|
+
var radius=args[0];
|
|
112842
|
+
var color=args[1];
|
|
112843
|
+
|
|
112844
|
+
var aryIndex=[];
|
|
112845
|
+
var aryData=[];
|
|
112846
|
+
for(var i=2;i<args.length;++i)
|
|
112847
|
+
{
|
|
112848
|
+
var item=args[i];
|
|
112849
|
+
|
|
112850
|
+
aryIndex.push({ Name:item.Name, Max:item.Max, Min:item.Min });
|
|
112851
|
+
aryData.push({ Value:item.Value, Name:item.Name, Group:"Default"});
|
|
112852
|
+
}
|
|
112853
|
+
|
|
112854
|
+
return result={ DrawData:{ Data:aryData, AryIndex:aryIndex, Radius:radius, AryArea:[{ LineColor:color }] }, DrawType:"DRAW_SIMPLE_RADAR" };
|
|
112855
|
+
}
|
|
112494
112856
|
}
|
|
112495
112857
|
|
|
112496
112858
|
|
|
@@ -112545,7 +112907,7 @@ JSDraw.prototype.IsDrawFunction=function(name)
|
|
|
112545
112907
|
'DRAWOVERLAYLINE',"FILLRGN", "FILLRGN2","FILLTOPRGN", "FILLBOTTOMRGN", "FILLVERTICALRGN","FLOATRGN","DRAWSL", "DRAWGBK2","DRAWGBK_DIV",
|
|
112546
112908
|
"VERTLINE","HORLINE","TIPICON",
|
|
112547
112909
|
"BUY","SELL","SELLSHORT","BUYSHORT",
|
|
112548
|
-
"DRAWLASTBARICON","DRAWLASTBARNUMBER", "DRAWLASTBARTEXT","DRAWTABLE","DRAWPIE",
|
|
112910
|
+
"DRAWLASTBARICON","DRAWLASTBARNUMBER", "DRAWLASTBARTEXT","DRAWTABLE","DRAWPIE","DRAWRADAR",
|
|
112549
112911
|
]);
|
|
112550
112912
|
if (setFunctionName.has(name)) return true;
|
|
112551
112913
|
|
|
@@ -119434,6 +119796,14 @@ function JSExecute(ast,option)
|
|
|
119434
119796
|
node.Draw=this.Draw.DRAWPIE(args);
|
|
119435
119797
|
node.Out=[];
|
|
119436
119798
|
break;
|
|
119799
|
+
//雷达图
|
|
119800
|
+
case "RADAR_CELL":
|
|
119801
|
+
node.Out=this.Draw.RADAR_CELL(args[0],args[1],args[2],args[3]);
|
|
119802
|
+
break;
|
|
119803
|
+
case "DRAWRADAR":
|
|
119804
|
+
node.Draw=this.Draw.DRAWRADAR(args);
|
|
119805
|
+
node.Out=[];
|
|
119806
|
+
break;
|
|
119437
119807
|
|
|
119438
119808
|
default:
|
|
119439
119809
|
node.Out=this.Algorithm.CallFunction(funcName, args, node, this.SymbolData);
|
|
@@ -122450,6 +122820,35 @@ function ScriptIndex(name,script,args,option)
|
|
|
122450
122820
|
hqChart.ChartPaint.push(chart);
|
|
122451
122821
|
}
|
|
122452
122822
|
|
|
122823
|
+
this.CreateSimpleRadar=function(hqChart,windowIndex,varItem,id)
|
|
122824
|
+
{
|
|
122825
|
+
var chart=new ChartSimpleRadar();
|
|
122826
|
+
chart.Canvas=hqChart.Canvas;
|
|
122827
|
+
chart.Name=varItem.Name;
|
|
122828
|
+
chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
|
|
122829
|
+
chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
|
|
122830
|
+
|
|
122831
|
+
if (varItem.Draw && varItem.Draw.DrawData)
|
|
122832
|
+
{
|
|
122833
|
+
var drawData=varItem.Draw.DrawData;
|
|
122834
|
+
if (drawData.Data) chart.Data.Data=drawData.Data;
|
|
122835
|
+
if (drawData.AryIndex) chart.AryIndex=drawData.AryIndex;
|
|
122836
|
+
if (IFrameSplitOperator.IsPlusNumber(drawData.Radius)) chart.Radius=drawData.Radius;
|
|
122837
|
+
if (drawData.BorderColor) chart.BorderColor=drawData.BorderColor;
|
|
122838
|
+
|
|
122839
|
+
if (drawData.TextFont) chart.TextFontConfig=drawData.TextFont;
|
|
122840
|
+
if (drawData.TextColor) chart.TextColor=drawData.TextColor;
|
|
122841
|
+
if (drawData.BorderColor) chart.BorderColor=drawData.BorderColor;
|
|
122842
|
+
if (IFrameSplitOperator.IsNumber(drawData.XOffset)) chart.Offset.X=drawData.XOffset;
|
|
122843
|
+
if (IFrameSplitOperator.IsNumber(drawData.YOffset)) chart.Offset.Y=drawData.YOffset;
|
|
122844
|
+
if (IFrameSplitOperator.IsNonEmptyArray(drawData.AryArea)) chart.AryAreaConfig=drawData.AryArea;
|
|
122845
|
+
|
|
122846
|
+
chart.BuildCacheData();
|
|
122847
|
+
}
|
|
122848
|
+
|
|
122849
|
+
hqChart.ChartPaint.push(chart);
|
|
122850
|
+
}
|
|
122851
|
+
|
|
122453
122852
|
this.CreateTradeIcon=function(hqChart,windowIndex,varItem,id)
|
|
122454
122853
|
{
|
|
122455
122854
|
var chart=new ChartTradeIcon();
|
|
@@ -122824,16 +123223,18 @@ function ScriptIndex(name,script,args,option)
|
|
|
122824
123223
|
chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
|
|
122825
123224
|
chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
|
|
122826
123225
|
|
|
122827
|
-
chart.Data=hqChart.ChartPaint[0].Data
|
|
123226
|
+
chart.Data=hqChart.ChartPaint[0].Data; //绑定K线
|
|
122828
123227
|
chart.PointGroup=varItem.Draw.DrawData;
|
|
122829
123228
|
if (varItem.Draw.Name) chart.Name=varItem.Draw.Name;
|
|
123229
|
+
chart.BuildCacheData();
|
|
123230
|
+
|
|
122830
123231
|
this.SetChartIndexName(chart);
|
|
122831
123232
|
hqChart.ChartPaint.push(chart);
|
|
122832
123233
|
|
|
122833
|
-
|
|
123234
|
+
var titleIndex=windowIndex+1;
|
|
122834
123235
|
var titleData=new DynamicTitleData(chart.Data,chart.Name, null);
|
|
122835
123236
|
titleData.DataType="ChartMultiPoint";
|
|
122836
|
-
titleData.
|
|
123237
|
+
titleData.GetItemCallback=(kItem)=>{ return chart.GetItem(kItem); }
|
|
122837
123238
|
hqChart.TitlePaint[titleIndex].Data[i]=titleData;
|
|
122838
123239
|
}
|
|
122839
123240
|
|
|
@@ -123325,6 +123726,10 @@ function ScriptIndex(name,script,args,option)
|
|
|
123325
123726
|
break;
|
|
123326
123727
|
case "DRAW_SIMPLE_PIE":
|
|
123327
123728
|
this.CreateSimplePie(hqChart,windowIndex,item,i);
|
|
123729
|
+
break;
|
|
123730
|
+
case "DRAW_SIMPLE_RADAR":
|
|
123731
|
+
this.CreateSimpleRadar(hqChart,windowIndex,item,i);
|
|
123732
|
+
break;
|
|
123328
123733
|
case "BUY":
|
|
123329
123734
|
case "SELL":
|
|
123330
123735
|
case "SELLSHORT":
|
|
@@ -123677,7 +124082,10 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
123677
124082
|
break;
|
|
123678
124083
|
case "DRAW_SIMPLE_PIE":
|
|
123679
124084
|
this.CreateSimplePie(hqChart,windowIndex,item,i);
|
|
123680
|
-
|
|
124085
|
+
break;
|
|
124086
|
+
case "DRAW_SIMPLE_RADAR":
|
|
124087
|
+
this.CreateSimpleRadar(hqChart,windowIndex,item,i);
|
|
124088
|
+
break;
|
|
123681
124089
|
case "KLINE_BG":
|
|
123682
124090
|
this.CreateBackgroud(hqChart,windowIndex,item,i);
|
|
123683
124091
|
break;
|
|
@@ -124541,7 +124949,7 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
124541
124949
|
frame.ChartPaint.push(chart);
|
|
124542
124950
|
}
|
|
124543
124951
|
|
|
124544
|
-
this.CreateMultiPoint=function(hqChart,windowIndex,varItem,
|
|
124952
|
+
this.CreateMultiPoint=function(hqChart,windowIndex,varItem,id)
|
|
124545
124953
|
{
|
|
124546
124954
|
var overlayIndex=this.OverlayIndex;
|
|
124547
124955
|
var frame=overlayIndex.Frame;
|
|
@@ -124554,6 +124962,17 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
124554
124962
|
|
|
124555
124963
|
chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
|
|
124556
124964
|
chart.PointGroup=varItem.Draw.DrawData;
|
|
124965
|
+
chart.BuildCacheData();
|
|
124966
|
+
|
|
124967
|
+
var titleIndex=windowIndex+1;
|
|
124968
|
+
var titlePaint=hqChart.TitlePaint[titleIndex];
|
|
124969
|
+
var titleData=new DynamicTitleData(chart.Data,varItem.Name,null);
|
|
124970
|
+
titleData.DataType="ChartMultiPoint";
|
|
124971
|
+
titleData.GetItemCallback=(kItem)=>{ return chart.GetItem(kItem); }
|
|
124972
|
+
titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;
|
|
124973
|
+
|
|
124974
|
+
this.SetChartIndexName(chart);
|
|
124975
|
+
|
|
124557
124976
|
frame.ChartPaint.push(chart);
|
|
124558
124977
|
}
|
|
124559
124978
|
|
|
@@ -124745,6 +125164,39 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
124745
125164
|
frame.ChartPaint.push(chart);
|
|
124746
125165
|
}
|
|
124747
125166
|
|
|
125167
|
+
this.CreateSimpleRadar=function(hqChart,windowIndex,varItem,id)
|
|
125168
|
+
{
|
|
125169
|
+
var overlayIndex=this.OverlayIndex;
|
|
125170
|
+
var frame=overlayIndex.Frame;
|
|
125171
|
+
var chart=new ChartSimpleRadar();
|
|
125172
|
+
chart.Canvas=hqChart.Canvas;
|
|
125173
|
+
chart.Name=varItem.Name;
|
|
125174
|
+
chart.ChartBorder=frame.Frame.ChartBorder;
|
|
125175
|
+
chart.ChartFrame=frame.Frame;
|
|
125176
|
+
chart.Identify=overlayIndex.Identify;
|
|
125177
|
+
chart.HQChart=hqChart;
|
|
125178
|
+
|
|
125179
|
+
if (varItem.Draw && varItem.Draw.DrawData)
|
|
125180
|
+
{
|
|
125181
|
+
var drawData=varItem.Draw.DrawData;
|
|
125182
|
+
if (drawData.Data) chart.Data.Data=drawData.Data;
|
|
125183
|
+
if (drawData.AryIndex) chart.AryIndex=drawData.AryIndex;
|
|
125184
|
+
if (IFrameSplitOperator.IsPlusNumber(drawData.Radius)) chart.Radius=drawData.Radius;
|
|
125185
|
+
if (drawData.BorderColor) chart.BorderColor=drawData.BorderColor;
|
|
125186
|
+
|
|
125187
|
+
if (drawData.TextFont) chart.TextFontConfig=drawData.TextFont;
|
|
125188
|
+
if (drawData.TextColor) chart.TextColor=drawData.TextColor;
|
|
125189
|
+
if (drawData.BorderColor) chart.BorderColor=drawData.BorderColor;
|
|
125190
|
+
if (IFrameSplitOperator.IsNumber(drawData.XOffset)) chart.Offset.X=drawData.XOffset;
|
|
125191
|
+
if (IFrameSplitOperator.IsNumber(drawData.YOffset)) chart.Offset.Y=drawData.YOffset;
|
|
125192
|
+
if (IFrameSplitOperator.IsNonEmptyArray(drawData.AryArea)) chart.AryAreaConfig=drawData.AryArea;
|
|
125193
|
+
|
|
125194
|
+
chart.BuildCacheData();
|
|
125195
|
+
}
|
|
125196
|
+
|
|
125197
|
+
frame.ChartPaint.push(chart);
|
|
125198
|
+
}
|
|
125199
|
+
|
|
124748
125200
|
this.CreateChartVericaltLine=function(hqChart,windowIndex,varItem,id)
|
|
124749
125201
|
{
|
|
124750
125202
|
var overlayIndex=this.OverlayIndex;
|
|
@@ -125717,14 +126169,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
125717
126169
|
drawItem.Text=draw.Text;
|
|
125718
126170
|
drawItem.Name=draw.Name;
|
|
125719
126171
|
drawItem.DrawType=draw.DrawType;
|
|
125720
|
-
drawItem.DrawData=
|
|
125721
|
-
if (IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData))
|
|
125722
|
-
{
|
|
125723
|
-
for(var k=0; k<drawItem.DrawData.length; ++k)
|
|
125724
|
-
{
|
|
125725
|
-
this.GetKLineData(drawItem.DrawData[k].Point, hqChart);
|
|
125726
|
-
}
|
|
125727
|
-
}
|
|
126172
|
+
drawItem.DrawData=draw.DrawData;
|
|
125728
126173
|
|
|
125729
126174
|
outVarItem.Draw=drawItem;
|
|
125730
126175
|
result.push(outVarItem);
|
|
@@ -125958,6 +126403,17 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
125958
126403
|
outVarItem.Draw=drawItem;
|
|
125959
126404
|
result.push(outVarItem);
|
|
125960
126405
|
}
|
|
126406
|
+
else if (draw.DrawType=="DRAW_SIMPLE_RADAR")
|
|
126407
|
+
{
|
|
126408
|
+
drawItem.Name=draw.Name;
|
|
126409
|
+
drawItem.Type=draw.Type;
|
|
126410
|
+
|
|
126411
|
+
drawItem.DrawType=draw.DrawType;
|
|
126412
|
+
drawItem.DrawData=draw.DrawData; //{ AryIndex:[ ], Data:[] };
|
|
126413
|
+
|
|
126414
|
+
outVarItem.Draw=drawItem;
|
|
126415
|
+
result.push(outVarItem);
|
|
126416
|
+
}
|
|
125961
126417
|
else
|
|
125962
126418
|
{
|
|
125963
126419
|
var find=g_ScriptIndexChartFactory.Get(draw.DrawType); //外部挂接
|
|
@@ -126260,14 +126716,7 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
126260
126716
|
drawItem.Text=draw.Text;
|
|
126261
126717
|
drawItem.Name=draw.Name;
|
|
126262
126718
|
drawItem.DrawType=draw.DrawType;
|
|
126263
|
-
drawItem.DrawData=
|
|
126264
|
-
if (IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData))
|
|
126265
|
-
{
|
|
126266
|
-
for(var k=0; k<drawItem.DrawData.length; ++k)
|
|
126267
|
-
{
|
|
126268
|
-
this.GetKLineData(drawItem.DrawData[k].Point, hqChart);
|
|
126269
|
-
}
|
|
126270
|
-
}
|
|
126719
|
+
drawItem.DrawData=draw.DrawData;
|
|
126271
126720
|
|
|
126272
126721
|
outVarItem.Draw=drawItem;
|
|
126273
126722
|
result.push(outVarItem);
|
|
@@ -127574,6 +128023,20 @@ function GetBlackStyle()
|
|
|
127574
128023
|
BorderColor:"rgb(220,220,220)",
|
|
127575
128024
|
},
|
|
127576
128025
|
|
|
128026
|
+
ChartSimpleRadar:
|
|
128027
|
+
{
|
|
128028
|
+
//TextFont:{ Family:'微软雅黑' , Size:12 },
|
|
128029
|
+
BorderColor:"rgb(230, 230, 230)",
|
|
128030
|
+
//Offset:{ X:-5, Y:5 },
|
|
128031
|
+
TextColor:"rgb(250, 250, 250)",
|
|
128032
|
+
AryBGColor:['rgba(63,61,82,0.9)','rgba(56,55,80,0.9)'],
|
|
128033
|
+
AryArea:
|
|
128034
|
+
[
|
|
128035
|
+
{ Color:"rgba(242,154,118,0.4)", LineColor:"rgb(242,154,118)"},
|
|
128036
|
+
{ Color:"rgba(121,197,228,0.4)", LineColor:"rgb(92,165,196)"},
|
|
128037
|
+
],
|
|
128038
|
+
},
|
|
128039
|
+
|
|
127577
128040
|
ChartDrawVolProfile:
|
|
127578
128041
|
{
|
|
127579
128042
|
BGColor:"rgba(244,250,254,0.3)",
|
|
@@ -142109,7 +142572,7 @@ function ScrollBarBGChart()
|
|
|
142109
142572
|
|
|
142110
142573
|
|
|
142111
142574
|
|
|
142112
|
-
var HQCHART_VERSION="1.1.
|
|
142575
|
+
var HQCHART_VERSION="1.1.14335";
|
|
142113
142576
|
|
|
142114
142577
|
function PrintHQChartVersion()
|
|
142115
142578
|
{
|