hqchart 1.1.15292 → 1.1.15304
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 +27 -22
- package/package.json +1 -1
- package/src/jscommon/umychart.NetworkFilterTest.js +97 -0
- package/src/jscommon/umychart.complier.js +14 -2
- package/src/jscommon/umychart.js +86 -18
- package/src/jscommon/umychart.testdata.js +97 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +101 -21
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +97 -0
- package/src/jscommon/umychart.vue/umychart.vue.js +101 -21
package/src/jscommon/umychart.js
CHANGED
|
@@ -3138,6 +3138,7 @@ var JSCHART_MENU_ID=
|
|
|
3138
3138
|
CMD_CORSS_X_TEXTALIGN_ID:61, //十字光标 底部文字对齐方式
|
|
3139
3139
|
|
|
3140
3140
|
CMD_CHANGE_YRIGHT_TEXT_FORMAT:62, //分时图主图 右侧刻度格式
|
|
3141
|
+
CMD_ENABLE_ZOOM_Y_ID:63, //放大缩小Y坐标 { FrameID:, Enable: , Range:{ Max:, Min: }}
|
|
3141
3142
|
|
|
3142
3143
|
|
|
3143
3144
|
CMD_REPORT_CHANGE_BLOCK_ID:100, //报价列表 切换板块ID
|
|
@@ -11940,6 +11941,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11940
11941
|
this.ResetFrameXYSplit();
|
|
11941
11942
|
this.Draw();
|
|
11942
11943
|
break;
|
|
11944
|
+
case JSCHART_MENU_ID.CMD_ENABLE_ZOOM_Y_ID:
|
|
11945
|
+
if (!srcParam) return false;
|
|
11946
|
+
if (this.EnableZoomYCoordinate) this.EnableZoomYCoordinate(srcParam);
|
|
11947
|
+
break;
|
|
11943
11948
|
}
|
|
11944
11949
|
}
|
|
11945
11950
|
|
|
@@ -30618,12 +30623,13 @@ function ChartKLine()
|
|
|
30618
30623
|
if (this.TradeIcon) this.DrawTradeIcon()
|
|
30619
30624
|
else this.DrawTrade();
|
|
30620
30625
|
|
|
30626
|
+
if (this.PriceGap.Enable) this.DrawPriceGap();
|
|
30627
|
+
|
|
30621
30628
|
this.Canvas.restore();
|
|
30622
30629
|
|
|
30623
30630
|
this.UpdateGlobalLatestPoint();
|
|
30624
30631
|
|
|
30625
30632
|
this.DrawPredictionLine();
|
|
30626
|
-
if (this.PriceGap.Enable) this.DrawPriceGap();
|
|
30627
30633
|
|
|
30628
30634
|
if (this.IsShowMaxMinPrice) //标注最大值最小值
|
|
30629
30635
|
{
|
|
@@ -39668,6 +39674,7 @@ function ChartDrawText_Fix()
|
|
|
39668
39674
|
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
|
|
39669
39675
|
if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Value) || !IFrameSplitOperator.IsNonEmptyArray(data.Text)) return;
|
|
39670
39676
|
|
|
39677
|
+
var splitWord="&"; //内置分隔符
|
|
39671
39678
|
for(var i=0;i<kData.Data.length;++i)
|
|
39672
39679
|
{
|
|
39673
39680
|
var value=data.Value[i];
|
|
@@ -39678,6 +39685,18 @@ function ChartDrawText_Fix()
|
|
|
39678
39685
|
|
|
39679
39686
|
var kItem=kData.Data[i];
|
|
39680
39687
|
var item={ Value:value, Text:text, Date:kItem.Date, Time:kItem.Time };
|
|
39688
|
+
if (text.includes(splitWord)) //&自动换行
|
|
39689
|
+
{
|
|
39690
|
+
var aryText=[];
|
|
39691
|
+
var aryValue=text.split(splitWord);
|
|
39692
|
+
for(var j=0;j<aryValue.length;++j)
|
|
39693
|
+
{
|
|
39694
|
+
var value=aryValue[j];
|
|
39695
|
+
if (value) aryText.push({ Name:value});
|
|
39696
|
+
}
|
|
39697
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryText)) item.Text=aryText;
|
|
39698
|
+
}
|
|
39699
|
+
|
|
39681
39700
|
var key=this.BuildKey(item);
|
|
39682
39701
|
|
|
39683
39702
|
/* //测试
|
|
@@ -58095,7 +58114,7 @@ function FrameSplitMinuteX()
|
|
|
58095
58114
|
width=width/GetDevicePixelRatio();
|
|
58096
58115
|
|
|
58097
58116
|
const minuteCoordinate = g_MinuteCoordinateData;
|
|
58098
|
-
var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol,width);
|
|
58117
|
+
var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol, width, this.Frame.GlobalOption);
|
|
58099
58118
|
var minuteCount=xcoordinateData.Count;
|
|
58100
58119
|
var minuteMiddleCount=xcoordinateData.MiddleCount>0? xcoordinateData.MiddleCount: parseInt(minuteCount/2);
|
|
58101
58120
|
var xcoordinate = xcoordinateData.Data;
|
|
@@ -60761,7 +60780,8 @@ function HQMinuteTimeStringFormat()
|
|
|
60761
60780
|
this.MultiDayBeforeOpenData; //多日分时图 盘前数据
|
|
60762
60781
|
this.MultiDayAfterCloseData; //多日分时图 收盘数据
|
|
60763
60782
|
|
|
60764
|
-
this.GetEventCallback
|
|
60783
|
+
this.GetEventCallback;
|
|
60784
|
+
this.HQChart;
|
|
60765
60785
|
|
|
60766
60786
|
this.GetBeforeOpen=function()
|
|
60767
60787
|
{
|
|
@@ -60859,7 +60879,9 @@ function HQMinuteTimeStringFormat()
|
|
|
60859
60879
|
if (this.Frame && this.Frame.MinuteCount) showIndex=index%this.Frame.MinuteCount;
|
|
60860
60880
|
|
|
60861
60881
|
var timeStringData=g_MinuteTimeStringData;
|
|
60862
|
-
var
|
|
60882
|
+
var globalOption=null;
|
|
60883
|
+
if (this.HQChart) globalOption=this.HQChart.GlobalOption;
|
|
60884
|
+
var timeData=timeStringData.GetTimeData(this.Symbol, globalOption);
|
|
60863
60885
|
if (!timeData) return false;
|
|
60864
60886
|
|
|
60865
60887
|
if (showIndex<0) showIndex=0;
|
|
@@ -88242,12 +88264,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
88242
88264
|
var bDaySummary=klineChart.DaySummary.Enable;
|
|
88243
88265
|
var infoPosition=klineChart.InfoPosition;
|
|
88244
88266
|
var coordinateType=null, yCoordinateType=null; //坐标类型
|
|
88267
|
+
var bZoomYCoordinate=false;
|
|
88245
88268
|
var mainFrame=null;
|
|
88246
88269
|
if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
|
|
88247
88270
|
if (mainFrame)
|
|
88248
88271
|
{
|
|
88249
88272
|
coordinateType=mainFrame.CoordinateType;
|
|
88250
|
-
if (mainFrame.YSplitOperator)
|
|
88273
|
+
if (mainFrame.YSplitOperator)
|
|
88274
|
+
{
|
|
88275
|
+
yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
|
|
88276
|
+
if (mainFrame.YSplitOperator.FixedYMaxMin && mainFrame.YSplitOperator.EnableZoomUpDown)
|
|
88277
|
+
bZoomYCoordinate=true;
|
|
88278
|
+
}
|
|
88279
|
+
|
|
88251
88280
|
}
|
|
88252
88281
|
|
|
88253
88282
|
var aryKLineInfo=[]; //信息地雷
|
|
@@ -88509,6 +88538,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
88509
88538
|
|
|
88510
88539
|
{ Name:"显示走完剩余时间", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_KLINE_DAY_SUMMARY_ID, Args:[!bDaySummary]}, Checked:bDaySummary},
|
|
88511
88540
|
|
|
88541
|
+
{ Name:"拖动Y轴", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_ZOOM_Y_ID, Args:[{FrameID:0, Enable:!bZoomYCoordinate }, ]}, Checked:bZoomYCoordinate},
|
|
88542
|
+
|
|
88512
88543
|
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
88513
88544
|
{
|
|
88514
88545
|
Name:"鼠标形状",
|
|
@@ -90382,6 +90413,41 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
90382
90413
|
|
|
90383
90414
|
return false;
|
|
90384
90415
|
}
|
|
90416
|
+
|
|
90417
|
+
//option={ FrameID:, Enable: }
|
|
90418
|
+
this.EnableZoomYCoordinate=function(option)
|
|
90419
|
+
{
|
|
90420
|
+
if (!option) return false;
|
|
90421
|
+
if (!IFrameSplitOperator.IsNumber(option.FrameID)) return false;
|
|
90422
|
+
if (!IFrameSplitOperator.IsBool(option.Enable)) return false;
|
|
90423
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)) return false;
|
|
90424
|
+
if (option.FrameID<0 || option.FrameID>this.Frame.SubFrame.length) return false;
|
|
90425
|
+
|
|
90426
|
+
var item=this.Frame.SubFrame[option.FrameID];
|
|
90427
|
+
if (!item || !item.Frame || !item.Frame.YSplitOperator) return false;
|
|
90428
|
+
|
|
90429
|
+
var frame=item.Frame;
|
|
90430
|
+
var splitOper=frame.YSplitOperator;
|
|
90431
|
+
|
|
90432
|
+
if (option.Enable)
|
|
90433
|
+
{
|
|
90434
|
+
var max=frame.HorizontalMax, min=frame.HorizontalMin;
|
|
90435
|
+
if (!IFrameSplitOperator.IsNumber(max) || !IFrameSplitOperator.IsNumber(min)) return false;
|
|
90436
|
+
|
|
90437
|
+
splitOper.FixedYMaxMin={ Max:max, Min:min };
|
|
90438
|
+
splitOper.EnableZoomUpDown=true;
|
|
90439
|
+
frame.XYSplit=true;
|
|
90440
|
+
this.ChartDragSelectRect.EnableLButton=false;
|
|
90441
|
+
}
|
|
90442
|
+
else
|
|
90443
|
+
{
|
|
90444
|
+
splitOper.FixedYMaxMin=null
|
|
90445
|
+
splitOper.EnableZoomUpDown=false;
|
|
90446
|
+
frame.XYSplit=true;
|
|
90447
|
+
}
|
|
90448
|
+
|
|
90449
|
+
this.Draw();
|
|
90450
|
+
}
|
|
90385
90451
|
}
|
|
90386
90452
|
|
|
90387
90453
|
//API 返回数据 转化为array[]
|
|
@@ -93134,7 +93200,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
93134
93200
|
this.ChartCorssCursor.PtInClient=(x,y)=>{ return this.PtInClient(x,y); }
|
|
93135
93201
|
this.ChartCorssCursor.Canvas=this.Canvas;
|
|
93136
93202
|
this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
|
|
93137
|
-
this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
|
|
93203
|
+
this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); };
|
|
93204
|
+
this.ChartCorssCursor.StringFormatX.HQChart=this;
|
|
93138
93205
|
this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
|
|
93139
93206
|
this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
|
|
93140
93207
|
this.ChartCorssCursor.StringFormatY.LanguageID=this.LanguageID;
|
|
@@ -99156,6 +99223,7 @@ function MinuteChartHScreenContainer(uielement)
|
|
|
99156
99223
|
this.ChartCorssCursor.Canvas=this.Canvas;
|
|
99157
99224
|
this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
|
|
99158
99225
|
this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
|
|
99226
|
+
this.ChartCorssCursor.StringFormatX.HQChart=this;
|
|
99159
99227
|
this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
|
|
99160
99228
|
this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
|
|
99161
99229
|
this.ChartCorssCursor.StringFormatY.HQChart=this;
|
|
@@ -102792,7 +102860,7 @@ function MinuteTimeStringData()
|
|
|
102792
102860
|
return data;
|
|
102793
102861
|
}
|
|
102794
102862
|
|
|
102795
|
-
this.GetTimeData = function (symbol)
|
|
102863
|
+
this.GetTimeData = function (symbol, option)
|
|
102796
102864
|
{
|
|
102797
102865
|
if (!symbol) return this.SHSZ;
|
|
102798
102866
|
|
|
@@ -102808,7 +102876,7 @@ function MinuteTimeStringData()
|
|
|
102808
102876
|
if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol)) return this.GetUSA(upperSymbol);
|
|
102809
102877
|
if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol) || MARKET_SUFFIX_NAME.IsCZCE(upperSymbol) || MARKET_SUFFIX_NAME.IsDCE(upperSymbol) || MARKET_SUFFIX_NAME.IsSHFE(upperSymbol) || MARKET_SUFFIX_NAME.IsGZFE(upperSymbol))
|
|
102810
102878
|
{
|
|
102811
|
-
var splitData = g_FuturesTimeData.GetSplitData(upperSymbol);
|
|
102879
|
+
var splitData = g_FuturesTimeData.GetSplitData(upperSymbol, option);
|
|
102812
102880
|
if (!splitData) return null;
|
|
102813
102881
|
return this.GetFutures(splitData);
|
|
102814
102882
|
}
|
|
@@ -103273,8 +103341,8 @@ function MinuteCoordinateData()
|
|
|
103273
103341
|
}
|
|
103274
103342
|
|
|
103275
103343
|
|
|
103276
|
-
|
|
103277
|
-
this.GetCoordinateData = function (symbol, width)
|
|
103344
|
+
// option=GlobalOption
|
|
103345
|
+
this.GetCoordinateData = function (symbol, width, option)
|
|
103278
103346
|
{
|
|
103279
103347
|
var data = null;
|
|
103280
103348
|
if (!symbol)
|
|
@@ -103299,7 +103367,7 @@ function MinuteCoordinateData()
|
|
|
103299
103367
|
else if (MARKET_SUFFIX_NAME.IsJP(upperSymbol))
|
|
103300
103368
|
data=this.GetJPData(upperSymbol,width);
|
|
103301
103369
|
else if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol) || MARKET_SUFFIX_NAME.IsCZCE(upperSymbol) || MARKET_SUFFIX_NAME.IsDCE(upperSymbol) || MARKET_SUFFIX_NAME.IsSHFE(upperSymbol) || MARKET_SUFFIX_NAME.IsGZFE(upperSymbol))
|
|
103302
|
-
return this.GetChinatFuturesData(upperSymbol,width);
|
|
103370
|
+
return this.GetChinatFuturesData(upperSymbol, width, option);
|
|
103303
103371
|
else if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol))
|
|
103304
103372
|
data = this.GetUSAData(upperSymbol,width);
|
|
103305
103373
|
else if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol))
|
|
@@ -103381,9 +103449,9 @@ function MinuteCoordinateData()
|
|
|
103381
103449
|
return result;
|
|
103382
103450
|
}
|
|
103383
103451
|
|
|
103384
|
-
this.GetFuturesData = function (upperSymbol,width,timeData)
|
|
103452
|
+
this.GetFuturesData = function (upperSymbol,width,timeData, option)
|
|
103385
103453
|
{
|
|
103386
|
-
var splitData = timeData.GetSplitData(upperSymbol);
|
|
103454
|
+
var splitData = timeData.GetSplitData(upperSymbol, option);
|
|
103387
103455
|
if (!splitData) return null;
|
|
103388
103456
|
var stringData = g_MinuteTimeStringData.GetFutures(splitData);
|
|
103389
103457
|
if (!stringData) return null;
|
|
@@ -103422,9 +103490,9 @@ function MinuteCoordinateData()
|
|
|
103422
103490
|
return result;
|
|
103423
103491
|
}
|
|
103424
103492
|
|
|
103425
|
-
this.GetChinatFuturesData=function(upperSymbol,width)
|
|
103493
|
+
this.GetChinatFuturesData=function(upperSymbol, width, option)
|
|
103426
103494
|
{
|
|
103427
|
-
return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData);
|
|
103495
|
+
return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData, option);
|
|
103428
103496
|
}
|
|
103429
103497
|
|
|
103430
103498
|
this.GetNYMEXData=function(upperSymbol,width)
|
|
@@ -104230,7 +104298,7 @@ function FuturesTimeData()
|
|
|
104230
104298
|
}
|
|
104231
104299
|
}
|
|
104232
104300
|
|
|
104233
|
-
this.GetData=function(upperSymbol)
|
|
104301
|
+
this.GetData=function(upperSymbol, option)
|
|
104234
104302
|
{
|
|
104235
104303
|
var oneWord = upperSymbol.charAt(0);
|
|
104236
104304
|
var twoWords = upperSymbol.substr(0,2);
|
|
@@ -104275,9 +104343,9 @@ function FuturesTimeData()
|
|
|
104275
104343
|
return null;
|
|
104276
104344
|
}
|
|
104277
104345
|
|
|
104278
|
-
this.GetSplitData = function (upperSymbol)
|
|
104346
|
+
this.GetSplitData = function (upperSymbol, option)
|
|
104279
104347
|
{
|
|
104280
|
-
var data=this.GetData(upperSymbol);
|
|
104348
|
+
var data=this.GetData(upperSymbol, option);
|
|
104281
104349
|
if (!data) return null;
|
|
104282
104350
|
|
|
104283
104351
|
return this.TIME_SPLIT[data.Time];
|
|
@@ -2760,6 +2760,10 @@ HQData.Report_APIIndex=function(data, callback)
|
|
|
2760
2760
|
HQData.APIIndex_BASELINE_BAR(data, callback);
|
|
2761
2761
|
else if (request.Data.indexname=="API_VERTLINE")
|
|
2762
2762
|
HQData.APIIndex_VERTLINE(data, callback);
|
|
2763
|
+
else if (request.Data.indexname=="API_DRAWTEXT_FIX")
|
|
2764
|
+
HQData.APIIndex_DRAWTEXT_FIX(data, callback);
|
|
2765
|
+
else if (request.Data.indexname=="API_DRAWNUMBER_FIX")
|
|
2766
|
+
HQData.APIIndex_DRAWNUMBER_FIX(data, callback);
|
|
2763
2767
|
|
|
2764
2768
|
else if (request.Data.indexname=="API_ERRORMESSAGE")
|
|
2765
2769
|
HQData.APIIndex_ErrorMessage(data, callback);
|
|
@@ -4455,6 +4459,99 @@ HQData.API_CHART_AREA_TEXT=function(data, callback)
|
|
|
4455
4459
|
}
|
|
4456
4460
|
|
|
4457
4461
|
|
|
4462
|
+
HQData.APIIndex_DRAWTEXT_FIX=function(data, callback)
|
|
4463
|
+
{
|
|
4464
|
+
data.PreventDefault=true;
|
|
4465
|
+
var hqchart=data.HQChart;
|
|
4466
|
+
var kData=hqchart.GetKData();
|
|
4467
|
+
|
|
4468
|
+
var textData=
|
|
4469
|
+
{
|
|
4470
|
+
name:'DRAWTEXT_FIX', type:1,
|
|
4471
|
+
Draw:
|
|
4472
|
+
{
|
|
4473
|
+
DrawType:'DRAWTEXT_FIX',
|
|
4474
|
+
DrawData: { Value:[], Text:[] },
|
|
4475
|
+
Position:{ X:0.5, Y:0.2, Type:1 }
|
|
4476
|
+
},
|
|
4477
|
+
Color:"rgb(30,144,255)",
|
|
4478
|
+
Font:`italic bold 2.2em "Fira Sans", sans-serif`,
|
|
4479
|
+
};
|
|
4480
|
+
|
|
4481
|
+
for(var i=0;i<kData.Data.length;++i)
|
|
4482
|
+
{
|
|
4483
|
+
var kItem=kData.Data[i];
|
|
4484
|
+
|
|
4485
|
+
if (i%50==1)
|
|
4486
|
+
{
|
|
4487
|
+
textData.Draw.DrawData.Value[i]=1;
|
|
4488
|
+
//textData.Draw.DrawData.Text[i]=`${kItem.Date}-${i}`;
|
|
4489
|
+
textData.Draw.DrawData.Text[i]=[{ Name:`${kItem.Date}-${i}`}, { Name:`第2行${i}`}];
|
|
4490
|
+
}
|
|
4491
|
+
else
|
|
4492
|
+
{
|
|
4493
|
+
textData.Draw.DrawData.Value[i]=0;
|
|
4494
|
+
}
|
|
4495
|
+
}
|
|
4496
|
+
|
|
4497
|
+
var apiData=
|
|
4498
|
+
{
|
|
4499
|
+
code:0,
|
|
4500
|
+
stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
|
|
4501
|
+
outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[textData] }
|
|
4502
|
+
};
|
|
4503
|
+
|
|
4504
|
+
console.log('[HQData.APIIndex_PARTLINE] apiData ', apiData);
|
|
4505
|
+
callback(apiData);
|
|
4506
|
+
}
|
|
4507
|
+
|
|
4508
|
+
HQData.APIIndex_DRAWNUMBER_FIX=function(data, callback)
|
|
4509
|
+
{
|
|
4510
|
+
data.PreventDefault=true;
|
|
4511
|
+
var hqchart=data.HQChart;
|
|
4512
|
+
var kData=hqchart.GetKData();
|
|
4513
|
+
|
|
4514
|
+
var textData=
|
|
4515
|
+
{
|
|
4516
|
+
name:'DRAWNUMBER_FIX', type:1,
|
|
4517
|
+
Draw:
|
|
4518
|
+
{
|
|
4519
|
+
DrawType:'DRAWNUMBER_FIX',
|
|
4520
|
+
DrawData: { Value:[], Text:[] },
|
|
4521
|
+
Position:{ X:0.5, Y:0.2, Type:1 }
|
|
4522
|
+
},
|
|
4523
|
+
Color:"rgb(30,144,255)",
|
|
4524
|
+
Font:`italic bold 2.2em "Fira Sans", sans-serif`,
|
|
4525
|
+
};
|
|
4526
|
+
|
|
4527
|
+
for(var i=0;i<kData.Data.length;++i)
|
|
4528
|
+
{
|
|
4529
|
+
var kItem=kData.Data[i];
|
|
4530
|
+
|
|
4531
|
+
if (i%50==1)
|
|
4532
|
+
{
|
|
4533
|
+
textData.Draw.DrawData.Value[i]=1;
|
|
4534
|
+
textData.Draw.DrawData.Text[i]=`${i.toFixed(2)}`
|
|
4535
|
+
//textData.Draw.DrawData.Text[i]=[{ Name:`${kItem.Date}-${i}`}, { Name:`第2行${i}`}];
|
|
4536
|
+
}
|
|
4537
|
+
else
|
|
4538
|
+
{
|
|
4539
|
+
textData.Draw.DrawData.Value[i]=0;
|
|
4540
|
+
}
|
|
4541
|
+
}
|
|
4542
|
+
|
|
4543
|
+
var apiData=
|
|
4544
|
+
{
|
|
4545
|
+
code:0,
|
|
4546
|
+
stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
|
|
4547
|
+
outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[textData] }
|
|
4548
|
+
};
|
|
4549
|
+
|
|
4550
|
+
console.log('[HQData.APIIndex_PARTLINE] apiData ', apiData);
|
|
4551
|
+
callback(apiData);
|
|
4552
|
+
}
|
|
4553
|
+
|
|
4554
|
+
|
|
4458
4555
|
HQData.APIIndex_ErrorMessage=function(data, callback)
|
|
4459
4556
|
{
|
|
4460
4557
|
data.PreventDefault=true;
|
|
@@ -7234,6 +7234,7 @@ var JSCHART_MENU_ID=
|
|
|
7234
7234
|
CMD_CORSS_X_TEXTALIGN_ID:61, //十字光标 底部文字对齐方式
|
|
7235
7235
|
|
|
7236
7236
|
CMD_CHANGE_YRIGHT_TEXT_FORMAT:62, //分时图主图 右侧刻度格式
|
|
7237
|
+
CMD_ENABLE_ZOOM_Y_ID:63, //放大缩小Y坐标 { FrameID:, Enable: , Range:{ Max:, Min: }}
|
|
7237
7238
|
|
|
7238
7239
|
|
|
7239
7240
|
CMD_REPORT_CHANGE_BLOCK_ID:100, //报价列表 切换板块ID
|
|
@@ -16036,6 +16037,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
16036
16037
|
this.ResetFrameXYSplit();
|
|
16037
16038
|
this.Draw();
|
|
16038
16039
|
break;
|
|
16040
|
+
case JSCHART_MENU_ID.CMD_ENABLE_ZOOM_Y_ID:
|
|
16041
|
+
if (!srcParam) return false;
|
|
16042
|
+
if (this.EnableZoomYCoordinate) this.EnableZoomYCoordinate(srcParam);
|
|
16043
|
+
break;
|
|
16039
16044
|
}
|
|
16040
16045
|
}
|
|
16041
16046
|
|
|
@@ -34714,12 +34719,13 @@ function ChartKLine()
|
|
|
34714
34719
|
if (this.TradeIcon) this.DrawTradeIcon()
|
|
34715
34720
|
else this.DrawTrade();
|
|
34716
34721
|
|
|
34722
|
+
if (this.PriceGap.Enable) this.DrawPriceGap();
|
|
34723
|
+
|
|
34717
34724
|
this.Canvas.restore();
|
|
34718
34725
|
|
|
34719
34726
|
this.UpdateGlobalLatestPoint();
|
|
34720
34727
|
|
|
34721
34728
|
this.DrawPredictionLine();
|
|
34722
|
-
if (this.PriceGap.Enable) this.DrawPriceGap();
|
|
34723
34729
|
|
|
34724
34730
|
if (this.IsShowMaxMinPrice) //标注最大值最小值
|
|
34725
34731
|
{
|
|
@@ -43764,6 +43770,7 @@ function ChartDrawText_Fix()
|
|
|
43764
43770
|
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
|
|
43765
43771
|
if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Value) || !IFrameSplitOperator.IsNonEmptyArray(data.Text)) return;
|
|
43766
43772
|
|
|
43773
|
+
var splitWord="&"; //内置分隔符
|
|
43767
43774
|
for(var i=0;i<kData.Data.length;++i)
|
|
43768
43775
|
{
|
|
43769
43776
|
var value=data.Value[i];
|
|
@@ -43774,6 +43781,18 @@ function ChartDrawText_Fix()
|
|
|
43774
43781
|
|
|
43775
43782
|
var kItem=kData.Data[i];
|
|
43776
43783
|
var item={ Value:value, Text:text, Date:kItem.Date, Time:kItem.Time };
|
|
43784
|
+
if (text.includes(splitWord)) //&自动换行
|
|
43785
|
+
{
|
|
43786
|
+
var aryText=[];
|
|
43787
|
+
var aryValue=text.split(splitWord);
|
|
43788
|
+
for(var j=0;j<aryValue.length;++j)
|
|
43789
|
+
{
|
|
43790
|
+
var value=aryValue[j];
|
|
43791
|
+
if (value) aryText.push({ Name:value});
|
|
43792
|
+
}
|
|
43793
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryText)) item.Text=aryText;
|
|
43794
|
+
}
|
|
43795
|
+
|
|
43777
43796
|
var key=this.BuildKey(item);
|
|
43778
43797
|
|
|
43779
43798
|
/* //测试
|
|
@@ -62191,7 +62210,7 @@ function FrameSplitMinuteX()
|
|
|
62191
62210
|
width=width/GetDevicePixelRatio();
|
|
62192
62211
|
|
|
62193
62212
|
const minuteCoordinate = g_MinuteCoordinateData;
|
|
62194
|
-
var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol,width);
|
|
62213
|
+
var xcoordinateData = minuteCoordinate.GetCoordinateData(this.Symbol, width, this.Frame.GlobalOption);
|
|
62195
62214
|
var minuteCount=xcoordinateData.Count;
|
|
62196
62215
|
var minuteMiddleCount=xcoordinateData.MiddleCount>0? xcoordinateData.MiddleCount: parseInt(minuteCount/2);
|
|
62197
62216
|
var xcoordinate = xcoordinateData.Data;
|
|
@@ -64857,7 +64876,8 @@ function HQMinuteTimeStringFormat()
|
|
|
64857
64876
|
this.MultiDayBeforeOpenData; //多日分时图 盘前数据
|
|
64858
64877
|
this.MultiDayAfterCloseData; //多日分时图 收盘数据
|
|
64859
64878
|
|
|
64860
|
-
this.GetEventCallback
|
|
64879
|
+
this.GetEventCallback;
|
|
64880
|
+
this.HQChart;
|
|
64861
64881
|
|
|
64862
64882
|
this.GetBeforeOpen=function()
|
|
64863
64883
|
{
|
|
@@ -64955,7 +64975,9 @@ function HQMinuteTimeStringFormat()
|
|
|
64955
64975
|
if (this.Frame && this.Frame.MinuteCount) showIndex=index%this.Frame.MinuteCount;
|
|
64956
64976
|
|
|
64957
64977
|
var timeStringData=g_MinuteTimeStringData;
|
|
64958
|
-
var
|
|
64978
|
+
var globalOption=null;
|
|
64979
|
+
if (this.HQChart) globalOption=this.HQChart.GlobalOption;
|
|
64980
|
+
var timeData=timeStringData.GetTimeData(this.Symbol, globalOption);
|
|
64959
64981
|
if (!timeData) return false;
|
|
64960
64982
|
|
|
64961
64983
|
if (showIndex<0) showIndex=0;
|
|
@@ -92338,12 +92360,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
92338
92360
|
var bDaySummary=klineChart.DaySummary.Enable;
|
|
92339
92361
|
var infoPosition=klineChart.InfoPosition;
|
|
92340
92362
|
var coordinateType=null, yCoordinateType=null; //坐标类型
|
|
92363
|
+
var bZoomYCoordinate=false;
|
|
92341
92364
|
var mainFrame=null;
|
|
92342
92365
|
if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
|
|
92343
92366
|
if (mainFrame)
|
|
92344
92367
|
{
|
|
92345
92368
|
coordinateType=mainFrame.CoordinateType;
|
|
92346
|
-
if (mainFrame.YSplitOperator)
|
|
92369
|
+
if (mainFrame.YSplitOperator)
|
|
92370
|
+
{
|
|
92371
|
+
yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
|
|
92372
|
+
if (mainFrame.YSplitOperator.FixedYMaxMin && mainFrame.YSplitOperator.EnableZoomUpDown)
|
|
92373
|
+
bZoomYCoordinate=true;
|
|
92374
|
+
}
|
|
92375
|
+
|
|
92347
92376
|
}
|
|
92348
92377
|
|
|
92349
92378
|
var aryKLineInfo=[]; //信息地雷
|
|
@@ -92605,6 +92634,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
92605
92634
|
|
|
92606
92635
|
{ Name:"显示走完剩余时间", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_KLINE_DAY_SUMMARY_ID, Args:[!bDaySummary]}, Checked:bDaySummary},
|
|
92607
92636
|
|
|
92637
|
+
{ Name:"拖动Y轴", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_ZOOM_Y_ID, Args:[{FrameID:0, Enable:!bZoomYCoordinate }, ]}, Checked:bZoomYCoordinate},
|
|
92638
|
+
|
|
92608
92639
|
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
92609
92640
|
{
|
|
92610
92641
|
Name:"鼠标形状",
|
|
@@ -94478,6 +94509,41 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
94478
94509
|
|
|
94479
94510
|
return false;
|
|
94480
94511
|
}
|
|
94512
|
+
|
|
94513
|
+
//option={ FrameID:, Enable: }
|
|
94514
|
+
this.EnableZoomYCoordinate=function(option)
|
|
94515
|
+
{
|
|
94516
|
+
if (!option) return false;
|
|
94517
|
+
if (!IFrameSplitOperator.IsNumber(option.FrameID)) return false;
|
|
94518
|
+
if (!IFrameSplitOperator.IsBool(option.Enable)) return false;
|
|
94519
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)) return false;
|
|
94520
|
+
if (option.FrameID<0 || option.FrameID>this.Frame.SubFrame.length) return false;
|
|
94521
|
+
|
|
94522
|
+
var item=this.Frame.SubFrame[option.FrameID];
|
|
94523
|
+
if (!item || !item.Frame || !item.Frame.YSplitOperator) return false;
|
|
94524
|
+
|
|
94525
|
+
var frame=item.Frame;
|
|
94526
|
+
var splitOper=frame.YSplitOperator;
|
|
94527
|
+
|
|
94528
|
+
if (option.Enable)
|
|
94529
|
+
{
|
|
94530
|
+
var max=frame.HorizontalMax, min=frame.HorizontalMin;
|
|
94531
|
+
if (!IFrameSplitOperator.IsNumber(max) || !IFrameSplitOperator.IsNumber(min)) return false;
|
|
94532
|
+
|
|
94533
|
+
splitOper.FixedYMaxMin={ Max:max, Min:min };
|
|
94534
|
+
splitOper.EnableZoomUpDown=true;
|
|
94535
|
+
frame.XYSplit=true;
|
|
94536
|
+
this.ChartDragSelectRect.EnableLButton=false;
|
|
94537
|
+
}
|
|
94538
|
+
else
|
|
94539
|
+
{
|
|
94540
|
+
splitOper.FixedYMaxMin=null
|
|
94541
|
+
splitOper.EnableZoomUpDown=false;
|
|
94542
|
+
frame.XYSplit=true;
|
|
94543
|
+
}
|
|
94544
|
+
|
|
94545
|
+
this.Draw();
|
|
94546
|
+
}
|
|
94481
94547
|
}
|
|
94482
94548
|
|
|
94483
94549
|
//API 返回数据 转化为array[]
|
|
@@ -97230,7 +97296,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
97230
97296
|
this.ChartCorssCursor.PtInClient=(x,y)=>{ return this.PtInClient(x,y); }
|
|
97231
97297
|
this.ChartCorssCursor.Canvas=this.Canvas;
|
|
97232
97298
|
this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
|
|
97233
|
-
this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
|
|
97299
|
+
this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); };
|
|
97300
|
+
this.ChartCorssCursor.StringFormatX.HQChart=this;
|
|
97234
97301
|
this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
|
|
97235
97302
|
this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
|
|
97236
97303
|
this.ChartCorssCursor.StringFormatY.LanguageID=this.LanguageID;
|
|
@@ -103252,6 +103319,7 @@ function MinuteChartHScreenContainer(uielement)
|
|
|
103252
103319
|
this.ChartCorssCursor.Canvas=this.Canvas;
|
|
103253
103320
|
this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");
|
|
103254
103321
|
this.ChartCorssCursor.StringFormatX.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
|
|
103322
|
+
this.ChartCorssCursor.StringFormatX.HQChart=this;
|
|
103255
103323
|
this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
|
|
103256
103324
|
this.ChartCorssCursor.StringFormatY.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
|
|
103257
103325
|
this.ChartCorssCursor.StringFormatY.HQChart=this;
|
|
@@ -106888,7 +106956,7 @@ function MinuteTimeStringData()
|
|
|
106888
106956
|
return data;
|
|
106889
106957
|
}
|
|
106890
106958
|
|
|
106891
|
-
this.GetTimeData = function (symbol)
|
|
106959
|
+
this.GetTimeData = function (symbol, option)
|
|
106892
106960
|
{
|
|
106893
106961
|
if (!symbol) return this.SHSZ;
|
|
106894
106962
|
|
|
@@ -106904,7 +106972,7 @@ function MinuteTimeStringData()
|
|
|
106904
106972
|
if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol)) return this.GetUSA(upperSymbol);
|
|
106905
106973
|
if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol) || MARKET_SUFFIX_NAME.IsCZCE(upperSymbol) || MARKET_SUFFIX_NAME.IsDCE(upperSymbol) || MARKET_SUFFIX_NAME.IsSHFE(upperSymbol) || MARKET_SUFFIX_NAME.IsGZFE(upperSymbol))
|
|
106906
106974
|
{
|
|
106907
|
-
var splitData = g_FuturesTimeData.GetSplitData(upperSymbol);
|
|
106975
|
+
var splitData = g_FuturesTimeData.GetSplitData(upperSymbol, option);
|
|
106908
106976
|
if (!splitData) return null;
|
|
106909
106977
|
return this.GetFutures(splitData);
|
|
106910
106978
|
}
|
|
@@ -107369,8 +107437,8 @@ function MinuteCoordinateData()
|
|
|
107369
107437
|
}
|
|
107370
107438
|
|
|
107371
107439
|
|
|
107372
|
-
|
|
107373
|
-
this.GetCoordinateData = function (symbol, width)
|
|
107440
|
+
// option=GlobalOption
|
|
107441
|
+
this.GetCoordinateData = function (symbol, width, option)
|
|
107374
107442
|
{
|
|
107375
107443
|
var data = null;
|
|
107376
107444
|
if (!symbol)
|
|
@@ -107395,7 +107463,7 @@ function MinuteCoordinateData()
|
|
|
107395
107463
|
else if (MARKET_SUFFIX_NAME.IsJP(upperSymbol))
|
|
107396
107464
|
data=this.GetJPData(upperSymbol,width);
|
|
107397
107465
|
else if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol) || MARKET_SUFFIX_NAME.IsCZCE(upperSymbol) || MARKET_SUFFIX_NAME.IsDCE(upperSymbol) || MARKET_SUFFIX_NAME.IsSHFE(upperSymbol) || MARKET_SUFFIX_NAME.IsGZFE(upperSymbol))
|
|
107398
|
-
return this.GetChinatFuturesData(upperSymbol,width);
|
|
107466
|
+
return this.GetChinatFuturesData(upperSymbol, width, option);
|
|
107399
107467
|
else if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol))
|
|
107400
107468
|
data = this.GetUSAData(upperSymbol,width);
|
|
107401
107469
|
else if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol))
|
|
@@ -107477,9 +107545,9 @@ function MinuteCoordinateData()
|
|
|
107477
107545
|
return result;
|
|
107478
107546
|
}
|
|
107479
107547
|
|
|
107480
|
-
this.GetFuturesData = function (upperSymbol,width,timeData)
|
|
107548
|
+
this.GetFuturesData = function (upperSymbol,width,timeData, option)
|
|
107481
107549
|
{
|
|
107482
|
-
var splitData = timeData.GetSplitData(upperSymbol);
|
|
107550
|
+
var splitData = timeData.GetSplitData(upperSymbol, option);
|
|
107483
107551
|
if (!splitData) return null;
|
|
107484
107552
|
var stringData = g_MinuteTimeStringData.GetFutures(splitData);
|
|
107485
107553
|
if (!stringData) return null;
|
|
@@ -107518,9 +107586,9 @@ function MinuteCoordinateData()
|
|
|
107518
107586
|
return result;
|
|
107519
107587
|
}
|
|
107520
107588
|
|
|
107521
|
-
this.GetChinatFuturesData=function(upperSymbol,width)
|
|
107589
|
+
this.GetChinatFuturesData=function(upperSymbol, width, option)
|
|
107522
107590
|
{
|
|
107523
|
-
return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData);
|
|
107591
|
+
return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData, option);
|
|
107524
107592
|
}
|
|
107525
107593
|
|
|
107526
107594
|
this.GetNYMEXData=function(upperSymbol,width)
|
|
@@ -108326,7 +108394,7 @@ function FuturesTimeData()
|
|
|
108326
108394
|
}
|
|
108327
108395
|
}
|
|
108328
108396
|
|
|
108329
|
-
this.GetData=function(upperSymbol)
|
|
108397
|
+
this.GetData=function(upperSymbol, option)
|
|
108330
108398
|
{
|
|
108331
108399
|
var oneWord = upperSymbol.charAt(0);
|
|
108332
108400
|
var twoWords = upperSymbol.substr(0,2);
|
|
@@ -108371,9 +108439,9 @@ function FuturesTimeData()
|
|
|
108371
108439
|
return null;
|
|
108372
108440
|
}
|
|
108373
108441
|
|
|
108374
|
-
this.GetSplitData = function (upperSymbol)
|
|
108442
|
+
this.GetSplitData = function (upperSymbol, option)
|
|
108375
108443
|
{
|
|
108376
|
-
var data=this.GetData(upperSymbol);
|
|
108444
|
+
var data=this.GetData(upperSymbol, option);
|
|
108377
108445
|
if (!data) return null;
|
|
108378
108446
|
|
|
108379
108447
|
return this.TIME_SPLIT[data.Time];
|
|
@@ -136196,14 +136264,14 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
136196
136264
|
var indexData=[];
|
|
136197
136265
|
var outVarItem={Name:item.name,Type:item.type};
|
|
136198
136266
|
if (item.color) outVarItem.Color=item.color;
|
|
136267
|
+
else if (item.Color) outVarItem.Color=item.Color;
|
|
136199
136268
|
if (IFrameSplitOperator.IsBool(item.IsShowTitle)) outVarItem.IsShowTitle = item.IsShowTitle; //是否显示指标标题
|
|
136200
136269
|
if (IFrameSplitOperator.IsNumber(item.DrawVAlign)) outVarItem.DrawVAlign = item.DrawVAlign;
|
|
136201
136270
|
if (IFrameSplitOperator.IsNumber(item.DrawAlign)) outVarItem.DrawAlign = item.DrawAlign;
|
|
136271
|
+
if (item.Font) outVarItem.Font=item.Font;
|
|
136202
136272
|
if (item.data)
|
|
136203
136273
|
{
|
|
136204
136274
|
outVarItem.Data=this.FittingArray(item.data,date,time,hqChart);
|
|
136205
|
-
|
|
136206
|
-
if (item.color) outVarItem.Color=item.color;
|
|
136207
136275
|
if (item.linewidth) outVarItem.LineWidth=item.linewidth;
|
|
136208
136276
|
if (IFrameSplitOperator.IsBool(item.isshow)) outVarItem.IsShow = item.isshow; //是否绘制线段
|
|
136209
136277
|
if (item.isexdata==true) outVarItem.IsExData = true;
|
|
@@ -136243,6 +136311,18 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
136243
136311
|
|
|
136244
136312
|
result.push(outVarItem);
|
|
136245
136313
|
}
|
|
136314
|
+
else if (draw.DrawType=="DRAWTEXT_FIX" || draw.DrawType=="DRAWNUMBER_FIX")
|
|
136315
|
+
{
|
|
136316
|
+
drawItem.Text=draw.Text;
|
|
136317
|
+
drawItem.Name=draw.Name;
|
|
136318
|
+
drawItem.DrawType=draw.DrawType;
|
|
136319
|
+
drawItem.DrawData={ Value:null, Text:null };
|
|
136320
|
+
drawItem.DrawData.Value=this.FittingArray(draw.DrawData.Value,date,time,hqChart);
|
|
136321
|
+
drawItem.DrawData.Text=this.FittingArray(draw.DrawData.Text,date,time,hqChart);
|
|
136322
|
+
drawItem.Position=draw.Position;
|
|
136323
|
+
outVarItem.Draw=drawItem;
|
|
136324
|
+
result.push(outVarItem);
|
|
136325
|
+
}
|
|
136246
136326
|
else if (draw.DrawType=="VERTLINE") //竖线
|
|
136247
136327
|
{
|
|
136248
136328
|
drawItem.Text=draw.Text;
|
|
@@ -154931,7 +155011,7 @@ function ScrollBarBGChart()
|
|
|
154931
155011
|
|
|
154932
155012
|
|
|
154933
155013
|
|
|
154934
|
-
var HQCHART_VERSION="1.1.
|
|
155014
|
+
var HQCHART_VERSION="1.1.15303";
|
|
154935
155015
|
|
|
154936
155016
|
function PrintHQChartVersion()
|
|
154937
155017
|
{
|