hqchart 1.1.15011 → 1.1.15018
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 +250 -223
- package/package.json +1 -1
- package/src/jscommon/umychart.DialogTooltip.js +158 -2
- package/src/jscommon/umychart.complier.js +94 -0
- package/src/jscommon/umychart.js +517 -4
- package/src/jscommon/umychart.resource/css/tools.css +25 -0
- package/src/jscommon/umychart.style.js +7 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +619 -5
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +777 -7
package/src/jscommon/umychart.js
CHANGED
|
@@ -813,12 +813,27 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
813
813
|
var item=option.LatestPointFlash;
|
|
814
814
|
if (item.Enable)
|
|
815
815
|
{
|
|
816
|
-
|
|
816
|
+
var zIndex=6;
|
|
817
|
+
if (IFrameSplitOperator.IsNumber(item.ZIndex)) zIndex=item.ZIndex;
|
|
818
|
+
this.CreateExtraCanvasElement(JSChart.LatestPointFlashKey, { ZIndex:zIndex });
|
|
817
819
|
chart.CreateExtendChart("LatestPointFlashPaint", item);
|
|
818
820
|
chart.StartLatestPointFlash();
|
|
819
821
|
}
|
|
820
822
|
}
|
|
821
823
|
|
|
824
|
+
if (option.KLineCountDown)
|
|
825
|
+
{
|
|
826
|
+
var item=option.KLineCountDown;
|
|
827
|
+
if (item.Enable)
|
|
828
|
+
{
|
|
829
|
+
var zIndex=4;
|
|
830
|
+
if (IFrameSplitOperator.IsNumber(item.ZIndex)) zIndex=item.ZIndex;
|
|
831
|
+
this.CreateExtraCanvasElement(JSChart.KLineCountDownKey, { ZIndex:zIndex });
|
|
832
|
+
chart.CreateExtendChart("KLineCountDownPaint", item);
|
|
833
|
+
chart.StartCountDown();
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
|
|
822
837
|
return chart;
|
|
823
838
|
}
|
|
824
839
|
|
|
@@ -1877,6 +1892,9 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1877
1892
|
if (option.FloatTooltip && option.FloatTooltip.Enable)
|
|
1878
1893
|
chart.InitalFloatTooltip(option.FloatTooltip);
|
|
1879
1894
|
|
|
1895
|
+
if (option.SmallFloatTooltip && option.SmallFloatTooltip.Enable)
|
|
1896
|
+
chart.InitalSmallFloatTooltip(option.SmallFloatTooltip);
|
|
1897
|
+
|
|
1880
1898
|
if (option.SelectRectDialog && option.SelectRectDialog.Enable)
|
|
1881
1899
|
chart.InitalSelectRectDialog(option.SelectRectDialog);
|
|
1882
1900
|
|
|
@@ -2389,6 +2407,7 @@ JSChart.CorssCursorCanvasKey="hqchart_corsscursor";
|
|
|
2389
2407
|
JSChart.TooltipCursorCanvasKey="hqchart_tooltip";
|
|
2390
2408
|
JSChart.RectDragCanvasKey="hqchart_drag_rect";
|
|
2391
2409
|
JSChart.LatestPointFlashKey="hqchart_point_flash"; //最新数据点闪烁
|
|
2410
|
+
JSChart.KLineCountDownKey="hqchart_kline_countdown"; //倒计时
|
|
2392
2411
|
|
|
2393
2412
|
//初始化
|
|
2394
2413
|
JSChart.Init=function(divElement,bScreen,bCacheCanvas)
|
|
@@ -2835,6 +2854,8 @@ var JSCHART_EVENT_ID=
|
|
|
2835
2854
|
ON_REPORT_SHOW_TOOLTIP:175, //报价列表 提示信息\
|
|
2836
2855
|
|
|
2837
2856
|
ON_FORMAT_TVLONGPOSITION_LABEL:176,
|
|
2857
|
+
|
|
2858
|
+
ON_FORMAT_COUNTDOWN_TEXT:177, //倒计时
|
|
2838
2859
|
}
|
|
2839
2860
|
|
|
2840
2861
|
var JSCHART_OPERATOR_ID=
|
|
@@ -3302,7 +3323,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3302
3323
|
this.DisplayLatestOption={ Timer:null, Enable: false, DelayTime:60*1000*3, LastPoint:null };
|
|
3303
3324
|
this.DrawDynamicInfoOption={ Timer:null, Enable:false , DelayTime:10 };
|
|
3304
3325
|
|
|
3305
|
-
this.LatestPointFlashOption={ Timer:null, DelayTime:100 };
|
|
3326
|
+
this.LatestPointFlashOption={ Timer:null, DelayTime:100 }; //最后一个数据闪烁
|
|
3327
|
+
this.CountDownOption={ Timer:null, DelayTime:300 }; //倒计时
|
|
3306
3328
|
|
|
3307
3329
|
this.CustomChartDrag; //自定义图形的拖拽操作 { Type:, Data: }
|
|
3308
3330
|
|
|
@@ -3320,6 +3342,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3320
3342
|
this.FloatTooltip; //浮动tooltip信息
|
|
3321
3343
|
this.DialogSearchIndex; //指标搜索
|
|
3322
3344
|
this.DialogModifyIndexParam; //指标参数修改
|
|
3345
|
+
this.SmallFloatTooltipGroup; //小浮框tooltip信息集合
|
|
3323
3346
|
|
|
3324
3347
|
|
|
3325
3348
|
this.RestoreFocusTimer=null; //恢复焦点定时器
|
|
@@ -3404,6 +3427,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3404
3427
|
|
|
3405
3428
|
this.GlobalOption.LatestPoint=null;
|
|
3406
3429
|
this.GlobalOption.TradeStatus=null;
|
|
3430
|
+
this.GlobalOption.CountDown=null;
|
|
3407
3431
|
}
|
|
3408
3432
|
|
|
3409
3433
|
this.RestoreFocus=function(delay)
|
|
@@ -3476,6 +3500,17 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3476
3500
|
this.FloatTooltip.Create();
|
|
3477
3501
|
}
|
|
3478
3502
|
|
|
3503
|
+
|
|
3504
|
+
this.InitalSmallFloatTooltip=function(option)
|
|
3505
|
+
{
|
|
3506
|
+
if (this.SmallFloatTooltipGroup) return;
|
|
3507
|
+
|
|
3508
|
+
this.SmallFloatTooltipGroup=new JSSmallFloatTooltipGroup();
|
|
3509
|
+
this.SmallFloatTooltipGroup.Inital(this, option);
|
|
3510
|
+
this.SmallFloatTooltipGroup.Create();
|
|
3511
|
+
}
|
|
3512
|
+
|
|
3513
|
+
|
|
3479
3514
|
this.InitalModifyDrawDialog=function()
|
|
3480
3515
|
{
|
|
3481
3516
|
if ( this.DialogModifyDraw) return;
|
|
@@ -3653,6 +3688,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3653
3688
|
this.FloatTooltip.Hide();
|
|
3654
3689
|
}
|
|
3655
3690
|
|
|
3691
|
+
this.HideSmallFloatTooltip=function()
|
|
3692
|
+
{
|
|
3693
|
+
if (!this.SmallFloatTooltipGroup) return;
|
|
3694
|
+
|
|
3695
|
+
this.SmallFloatTooltipGroup.Hide();
|
|
3696
|
+
}
|
|
3697
|
+
|
|
3656
3698
|
this.DestroyTooltipDialog=function()
|
|
3657
3699
|
{
|
|
3658
3700
|
if (!this.DialogTooltip) return;
|
|
@@ -3669,6 +3711,14 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3669
3711
|
this.FloatTooltip=null;
|
|
3670
3712
|
}
|
|
3671
3713
|
|
|
3714
|
+
this.DestroySmallFloatTooltip=function()
|
|
3715
|
+
{
|
|
3716
|
+
if (!this.SmallFloatTooltipGroup) return;
|
|
3717
|
+
|
|
3718
|
+
this.SmallFloatTooltipGroup.Destroy();
|
|
3719
|
+
this.SmallFloatTooltipGroup=null;
|
|
3720
|
+
}
|
|
3721
|
+
|
|
3672
3722
|
this.DestroySearchIndexDialog=function()
|
|
3673
3723
|
{
|
|
3674
3724
|
if (!this.DialogSearchIndex) return;
|
|
@@ -3722,6 +3772,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3722
3772
|
{
|
|
3723
3773
|
this.HideFloatTooltip();
|
|
3724
3774
|
this.CloseTooltipDialog();
|
|
3775
|
+
this.HideSmallFloatTooltip();
|
|
3725
3776
|
|
|
3726
3777
|
if (this.DialogDrawTool) this.DialogDrawTool.Close();
|
|
3727
3778
|
this.CloseModifyDrawDialog();
|
|
@@ -3811,6 +3862,30 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3811
3862
|
chart.FlashCount=flashCount;
|
|
3812
3863
|
}
|
|
3813
3864
|
|
|
3865
|
+
this.StartCountDown=function()
|
|
3866
|
+
{
|
|
3867
|
+
this.CountDownOption.Timer=setInterval(()=>
|
|
3868
|
+
{
|
|
3869
|
+
this.DrawCountDown();
|
|
3870
|
+
}, this.CountDownOption.DelayTime);
|
|
3871
|
+
}
|
|
3872
|
+
|
|
3873
|
+
this.DrawCountDown=function()
|
|
3874
|
+
{
|
|
3875
|
+
var finder=this.GetExtendChartByClassName("KLineCountDownPaint");
|
|
3876
|
+
if (finder && finder.Chart)
|
|
3877
|
+
finder.Chart.Draw();
|
|
3878
|
+
}
|
|
3879
|
+
|
|
3880
|
+
this.StopCountDown=function()
|
|
3881
|
+
{
|
|
3882
|
+
if (this.CountDownOption.Timer)
|
|
3883
|
+
{
|
|
3884
|
+
clearInterval(this.CountDownOption.Timer);
|
|
3885
|
+
this.CountDownOption.Timer=null;
|
|
3886
|
+
}
|
|
3887
|
+
}
|
|
3888
|
+
|
|
3814
3889
|
this.ChartDestroy=function() //销毁
|
|
3815
3890
|
{
|
|
3816
3891
|
this.IsDestroy=true;
|
|
@@ -3818,6 +3893,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3818
3893
|
|
|
3819
3894
|
this.DestroyTooltipDialog();
|
|
3820
3895
|
this.DestroyFloatTooltip();
|
|
3896
|
+
this.DestroySmallFloatTooltip();
|
|
3821
3897
|
|
|
3822
3898
|
this.DestroySearchIndexDialog();
|
|
3823
3899
|
this.DestroyDialogModifyIndexParam();
|
|
@@ -3832,6 +3908,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3832
3908
|
if (this.DestroyPopMinuteChart) this.DestroyPopMinuteChart();
|
|
3833
3909
|
|
|
3834
3910
|
this.StopLatestPointFlash();
|
|
3911
|
+
this.StopCountDown();
|
|
3835
3912
|
|
|
3836
3913
|
document.oncontextmenu=null;
|
|
3837
3914
|
this.RemoveAllEventListener();
|
|
@@ -7274,6 +7351,49 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7274
7351
|
return null;
|
|
7275
7352
|
}
|
|
7276
7353
|
|
|
7354
|
+
this.GetCorssCursorTooltipData=function(option)
|
|
7355
|
+
{
|
|
7356
|
+
if (!this.ChartCorssCursor) return null;
|
|
7357
|
+
if (this.ChartCorssCursor.Status===0) return null;
|
|
7358
|
+
|
|
7359
|
+
var kItem=this.ChartCorssCursor.StringFormatX.KItem;
|
|
7360
|
+
if (!kItem) return null;
|
|
7361
|
+
|
|
7362
|
+
//X轴取十字光标坐标
|
|
7363
|
+
var toolTip={ AryData:[], X:this.ChartCorssCursor.StringFormatX.Point.X };
|
|
7364
|
+
|
|
7365
|
+
for(var i=0;i<this.ChartPaint.length;++i)
|
|
7366
|
+
{
|
|
7367
|
+
var item=this.ChartPaint[i];
|
|
7368
|
+
if (!item.GetCorssCursorTooltipData) continue;
|
|
7369
|
+
|
|
7370
|
+
item.GetCorssCursorTooltipData(kItem, toolTip);
|
|
7371
|
+
}
|
|
7372
|
+
|
|
7373
|
+
if (IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame))
|
|
7374
|
+
{
|
|
7375
|
+
for(var i=0;i<this.Frame.SubFrame.length;++i)
|
|
7376
|
+
{
|
|
7377
|
+
var subFrame=this.Frame.SubFrame[i];
|
|
7378
|
+
for(var j=0;j<subFrame.OverlayIndex.length;++j)
|
|
7379
|
+
{
|
|
7380
|
+
var overlayItem=subFrame.OverlayIndex[j];
|
|
7381
|
+
for(var k=0;k<overlayItem.ChartPaint.length;++k)
|
|
7382
|
+
{
|
|
7383
|
+
var item=overlayItem.ChartPaint[k];
|
|
7384
|
+
if (!item.GetCorssCursorTooltipData) continue;
|
|
7385
|
+
|
|
7386
|
+
item.GetCorssCursorTooltipData(kItem, toolTip);
|
|
7387
|
+
}
|
|
7388
|
+
}
|
|
7389
|
+
}
|
|
7390
|
+
}
|
|
7391
|
+
|
|
7392
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(toolTip.AryData)) return null;
|
|
7393
|
+
|
|
7394
|
+
return toolTip;
|
|
7395
|
+
}
|
|
7396
|
+
|
|
7277
7397
|
this.PtInExtendChartButtons=function(x,y)
|
|
7278
7398
|
{
|
|
7279
7399
|
for(var i=0;i<this.ExtendChartPaint.length; ++i)
|
|
@@ -7587,6 +7707,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7587
7707
|
}
|
|
7588
7708
|
}
|
|
7589
7709
|
|
|
7710
|
+
var corssTooltipData=this.GetCorssCursorTooltipData(null);
|
|
7711
|
+
if (corssTooltipData) this.DrawSmallFloatTooltip(corssTooltipData);
|
|
7712
|
+
else this.HideSmallFloatTooltip();
|
|
7713
|
+
|
|
7590
7714
|
this.SetCursor(mouseStatus);
|
|
7591
7715
|
}
|
|
7592
7716
|
|
|
@@ -8311,6 +8435,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8311
8435
|
|
|
8312
8436
|
this.ShowTooltipByKeyDown=function()
|
|
8313
8437
|
{
|
|
8438
|
+
var corssTooltipData=this.GetCorssCursorTooltipData(null);
|
|
8439
|
+
if (corssTooltipData) this.DrawSmallFloatTooltip(corssTooltipData);
|
|
8440
|
+
else this.HideSmallFloatTooltip();
|
|
8441
|
+
|
|
8314
8442
|
if (!this.KLineTooltipConfig.Enable || !this.KLineTooltipConfig.EnableKeyDown)
|
|
8315
8443
|
{
|
|
8316
8444
|
this.HideFloatTooltip();
|
|
@@ -8329,7 +8457,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8329
8457
|
var kItem=kData.Data[dataIndex];
|
|
8330
8458
|
if (!kItem) return;
|
|
8331
8459
|
|
|
8332
|
-
var data=this.Frame.Data;
|
|
8333
8460
|
var toolTip=new TooltipData();
|
|
8334
8461
|
toolTip.Data=kItem;
|
|
8335
8462
|
toolTip.ChartPaint=this.ChartPaint[0];
|
|
@@ -8697,6 +8824,29 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8697
8824
|
if (this.Tooltip.style.display!="none") this.Tooltip.style.display = "none";
|
|
8698
8825
|
|
|
8699
8826
|
this.HideFloatTooltip();
|
|
8827
|
+
this.HideSmallFloatTooltip();
|
|
8828
|
+
}
|
|
8829
|
+
|
|
8830
|
+
this.DrawSmallFloatTooltip=function(toolTip)
|
|
8831
|
+
{
|
|
8832
|
+
if (!this.SmallFloatTooltipGroup) return;
|
|
8833
|
+
|
|
8834
|
+
this.UpdateSmallFloatTooltip(toolTip)
|
|
8835
|
+
}
|
|
8836
|
+
|
|
8837
|
+
this.UpdateSmallFloatTooltip=function(toolTip)
|
|
8838
|
+
{
|
|
8839
|
+
if (!this.SmallFloatTooltipGroup) return;
|
|
8840
|
+
|
|
8841
|
+
var sendData=
|
|
8842
|
+
{
|
|
8843
|
+
Tooltip:toolTip,
|
|
8844
|
+
Symbol:this.Symbol,
|
|
8845
|
+
Name:this.Name,
|
|
8846
|
+
DataType:1,
|
|
8847
|
+
};
|
|
8848
|
+
|
|
8849
|
+
this.SmallFloatTooltipGroup.Update(sendData);
|
|
8700
8850
|
}
|
|
8701
8851
|
|
|
8702
8852
|
this.UpdateSelectRect=function(start,end)
|
|
@@ -47494,6 +47644,69 @@ function ChartStackedBar()
|
|
|
47494
47644
|
|
|
47495
47645
|
}
|
|
47496
47646
|
|
|
47647
|
+
//绘制随光标移动的浮动文字。
|
|
47648
|
+
//用法:DRAWFLAGTEXT(COND,PRICE,TEXT),光标处当COND条件满足时,在PRICE位置用半透明窗口显示文字TEXT,随光标移动而移动。将\\n插入TEXT内容中可实现文字换行。
|
|
47649
|
+
//例如:DRAWFLAGTEXT(CLOSE/OPEN>1.08,LOW,'大阳线')表示当光标移动到涨幅大于8%的地方,在最低价位置显示'大阳线'字样的浮动窗口。
|
|
47650
|
+
function ChartDrawFlagText()
|
|
47651
|
+
{
|
|
47652
|
+
this.newMethod=IChartPainting; //派生
|
|
47653
|
+
this.newMethod();
|
|
47654
|
+
delete this.newMethod;
|
|
47655
|
+
|
|
47656
|
+
this.ClassName="ChartDrawFlagText";
|
|
47657
|
+
|
|
47658
|
+
this.MapCache=null; //key=date/date-time value={ Date:, Time:, Data:[ ] }
|
|
47659
|
+
this.AryData=[];
|
|
47660
|
+
|
|
47661
|
+
this.GetKValue=ChartData.GetKValue;
|
|
47662
|
+
this.BuildCacheData=function()
|
|
47663
|
+
{
|
|
47664
|
+
var mapData=new Map();
|
|
47665
|
+
this.MapCache=mapData;
|
|
47666
|
+
if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return;
|
|
47667
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.AryData)) return;
|
|
47668
|
+
|
|
47669
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
47670
|
+
{
|
|
47671
|
+
var item=this.AryData[i];
|
|
47672
|
+
if (!item) continue;
|
|
47673
|
+
|
|
47674
|
+
var kItem=this.Data.Data[i];
|
|
47675
|
+
item.Date=kItem.Date;
|
|
47676
|
+
item.Time=kItem.Time;
|
|
47677
|
+
|
|
47678
|
+
var key=this.BuildKey(kItem);
|
|
47679
|
+
mapData.set(key, item);
|
|
47680
|
+
}
|
|
47681
|
+
}
|
|
47682
|
+
|
|
47683
|
+
this.Draw=function()
|
|
47684
|
+
{
|
|
47685
|
+
|
|
47686
|
+
}
|
|
47687
|
+
|
|
47688
|
+
this.GetCorssCursorTooltipData=function(kItem, tooltip)
|
|
47689
|
+
{
|
|
47690
|
+
if (!kItem) return null;
|
|
47691
|
+
if (!this.MapCache) return null;
|
|
47692
|
+
|
|
47693
|
+
var key=this.BuildKey(kItem);
|
|
47694
|
+
if (!this.MapCache.has(key)) return null;
|
|
47695
|
+
|
|
47696
|
+
var item=this.MapCache.get(key);
|
|
47697
|
+
if (item.YValue>this.ChartFrame.HorizontalMax || item.YValue<this.ChartFrame.HorizontalMin) return null;
|
|
47698
|
+
|
|
47699
|
+
var y=this.ChartFrame.GetYFromData(item.YValue,false);
|
|
47700
|
+
tooltip.AryData.push({ Data:item, Y:y, ChartPaint:this, Type:1 });
|
|
47701
|
+
return item;
|
|
47702
|
+
}
|
|
47703
|
+
|
|
47704
|
+
this.GetMaxMin=function()
|
|
47705
|
+
{
|
|
47706
|
+
return {Min:null, Max:null};
|
|
47707
|
+
}
|
|
47708
|
+
}
|
|
47709
|
+
|
|
47497
47710
|
//锁 支持横屏
|
|
47498
47711
|
function ChartLock()
|
|
47499
47712
|
{
|
|
@@ -47922,7 +48135,8 @@ function ExtendChartPaintFactory()
|
|
|
47922
48135
|
["DragMovePaint", { Create:function() { return new DragMovePaint(); } }],
|
|
47923
48136
|
["SessionBreaksPaint", { Create:function() { return new SessionBreaksPaint(); }}],
|
|
47924
48137
|
["FrameButtomToolbarPaint", {Create:function() { return new FrameButtomToolbarPaint(); }}],
|
|
47925
|
-
["LatestPointFlashPaint", {Create:function() { return new LatestPointFlashPaint(); }}]
|
|
48138
|
+
["LatestPointFlashPaint", {Create:function() { return new LatestPointFlashPaint(); }}],
|
|
48139
|
+
["KLineCountDownPaint", { Create:function(){ return new KLineCountDownPaint(); }}]
|
|
47926
48140
|
]
|
|
47927
48141
|
);
|
|
47928
48142
|
|
|
@@ -52664,6 +52878,238 @@ function LatestPointFlashPaint()
|
|
|
52664
52878
|
}
|
|
52665
52879
|
}
|
|
52666
52880
|
|
|
52881
|
+
|
|
52882
|
+
//K线倒计时
|
|
52883
|
+
function KLineCountDownPaint()
|
|
52884
|
+
{
|
|
52885
|
+
this.newMethod=IExtendChartPainting; //派生
|
|
52886
|
+
this.newMethod();
|
|
52887
|
+
delete this.newMethod;
|
|
52888
|
+
|
|
52889
|
+
this.ClassName='KLineCountDownPaint';
|
|
52890
|
+
this.HQChart;
|
|
52891
|
+
this.CanvasEx;
|
|
52892
|
+
this.Frequency=500; //闪烁频率ms
|
|
52893
|
+
this.Font=g_JSChartResource.KLineCountDownPaint.Font;
|
|
52894
|
+
this.PriceColor=g_JSChartResource.KLineCountDownPaint.PriceColor;
|
|
52895
|
+
this.TimeColor=g_JSChartResource.KLineCountDownPaint.TimeColor;
|
|
52896
|
+
|
|
52897
|
+
this.TextMargin=CloneData(g_JSChartResource.KLineCountDownPaint.TextMargin);
|
|
52898
|
+
this.LabelMargin=CloneData(g_JSChartResource.KLineCountDownPaint.LabelMargin);
|
|
52899
|
+
this.LineConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Line); //{ IsShow:true, Width:1, Dash:[3,4] };
|
|
52900
|
+
|
|
52901
|
+
this.UnchangeConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Unchange);
|
|
52902
|
+
this.UpConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Up);
|
|
52903
|
+
this.DownConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Down);
|
|
52904
|
+
|
|
52905
|
+
//临时使用
|
|
52906
|
+
this.MainFrame;
|
|
52907
|
+
this.LastItem;
|
|
52908
|
+
|
|
52909
|
+
this.SetOption=function(option)
|
|
52910
|
+
{
|
|
52911
|
+
if (this.HQChart)
|
|
52912
|
+
{
|
|
52913
|
+
var extraElement=this.HQChart.GetExtraCanvas(JSChart.KLineCountDownKey);
|
|
52914
|
+
if (extraElement && extraElement.Canvas) this.CanvasEx=extraElement.Canvas; //绑定独立的画布
|
|
52915
|
+
}
|
|
52916
|
+
|
|
52917
|
+
if (option)
|
|
52918
|
+
{
|
|
52919
|
+
if (IFrameSplitOperator.IsNumber(option.Frequency)) this.Frequency=option.Frequency;
|
|
52920
|
+
if (option.TextMargin) CopyMarginConfig(option.TextMargin, this.TextMargin);
|
|
52921
|
+
if (option.LabelMargin) CopyMarginConfig(option.LabelMargin, this.LabelMargin);
|
|
52922
|
+
if (option.UnchangeColor) this.UnchangeColor=option.UnchangeColor;
|
|
52923
|
+
if (option.UpColor) this.UpColor=option.UpColor;
|
|
52924
|
+
if (option.DownColor) this.DownColor=option.DownColor;
|
|
52925
|
+
|
|
52926
|
+
if (option.Line)
|
|
52927
|
+
{
|
|
52928
|
+
var item=option.Line;
|
|
52929
|
+
if (IFrameSplitOperator.IsBool(item.IsShow)) this.LineConfig.IsShow=item.IsShow;
|
|
52930
|
+
if (IFrameSplitOperator.IsNumber(item.Width)) this.LineConfig.Width=item.Width;
|
|
52931
|
+
if (item.Dash) this.LineConfig.Dash=item.Dash;
|
|
52932
|
+
}
|
|
52933
|
+
}
|
|
52934
|
+
}
|
|
52935
|
+
|
|
52936
|
+
this.ReloadResource=function(resource)
|
|
52937
|
+
{
|
|
52938
|
+
this.Font=g_JSChartResource.KLineCountDownPaint.Font;
|
|
52939
|
+
this.PriceColor=g_JSChartResource.KLineCountDownPaint.PriceColor;
|
|
52940
|
+
this.TimeColor=g_JSChartResource.KLineCountDownPaint.TimeColor;
|
|
52941
|
+
|
|
52942
|
+
this.TextMargin=CloneData(g_JSChartResource.KLineCountDownPaint.TextMargin);
|
|
52943
|
+
this.LabelMargin=CloneData(g_JSChartResource.KLineCountDownPaint.LabelMargin);
|
|
52944
|
+
this.LineConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Line); //{ IsShow:true, Width:1, Dash:[3,4] };
|
|
52945
|
+
|
|
52946
|
+
this.UnchangeConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Unchange);
|
|
52947
|
+
this.UpConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Up);
|
|
52948
|
+
this.DownConfig=CloneData(g_JSChartResource.KLineCountDownPaint.Down);
|
|
52949
|
+
}
|
|
52950
|
+
|
|
52951
|
+
this.Draw=function()
|
|
52952
|
+
{
|
|
52953
|
+
this.MainFrame=null;
|
|
52954
|
+
this.LastItem=null;
|
|
52955
|
+
|
|
52956
|
+
if (!this.HQChart) return;
|
|
52957
|
+
if (!this.CanvasEx) return;
|
|
52958
|
+
this.HQChart.ClearCanvas(this.CanvasEx);
|
|
52959
|
+
var kData=this.HQChart.GetKData();
|
|
52960
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
|
|
52961
|
+
|
|
52962
|
+
var lastItem=kData.Data[kData.Data.length-1];
|
|
52963
|
+
if (!lastItem || !IFrameSplitOperator.IsNumber(lastItem.Close)) return;
|
|
52964
|
+
var frame=this.ChartFrame.SubFrame[0].Frame;
|
|
52965
|
+
if (!frame) return;
|
|
52966
|
+
var price=lastItem.Close;
|
|
52967
|
+
if (price>frame.HorizontalMax || price<frame.HorizontalMin) return;
|
|
52968
|
+
|
|
52969
|
+
if (frame.IsHScreen) return;
|
|
52970
|
+
|
|
52971
|
+
this.MainFrame=frame;
|
|
52972
|
+
this.LastItem=lastItem;
|
|
52973
|
+
|
|
52974
|
+
this.CanvasEx.save();
|
|
52975
|
+
this.DrawDownPaint();
|
|
52976
|
+
this.CanvasEx.restore();
|
|
52977
|
+
|
|
52978
|
+
this.MainFrame=null;
|
|
52979
|
+
this.LastItem=null;
|
|
52980
|
+
//if (!this.HQChart.GlobalOption || !this.HQChart.GlobalOption.CountDown) return;
|
|
52981
|
+
}
|
|
52982
|
+
|
|
52983
|
+
this.DrawDownPaint=function()
|
|
52984
|
+
{
|
|
52985
|
+
if (!this.MainFrame || !this.LastItem || !IFrameSplitOperator.IsNumber(this.LastItem.Close)) return;
|
|
52986
|
+
|
|
52987
|
+
var decNum=GetfloatPrecision(this.HQChart.Symbol); //小数位数
|
|
52988
|
+
var yPrice=this.MainFrame.GetYFromData(this.LastItem.Close,false);
|
|
52989
|
+
var strPrice=this.LastItem.Close.toFixed(decNum);
|
|
52990
|
+
|
|
52991
|
+
var config=this.GetColorConfig(this.LastItem);
|
|
52992
|
+
var out={ BGColor:config.BGColor, Font:this.Font, AryText:[ ], YPrice:yPrice };
|
|
52993
|
+
|
|
52994
|
+
var item={ Text:strPrice, Color:config.PriceColor };
|
|
52995
|
+
out.AryText.push(item);
|
|
52996
|
+
|
|
52997
|
+
var item={ Text:"--:--", Color:config.TimeColor};
|
|
52998
|
+
out.AryText.push(item);
|
|
52999
|
+
|
|
53000
|
+
var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_COUNTDOWN_TEXT);
|
|
53001
|
+
if (event && event.Callback)
|
|
53002
|
+
{
|
|
53003
|
+
var sendData={ LastItem:this.LastItem, Frame:this.MainFrame, Out:out, Period:this.HQChart.Period, Symbol:this.HQChart.Symbol };
|
|
53004
|
+
event.Callback(event, sendData, this);
|
|
53005
|
+
}
|
|
53006
|
+
|
|
53007
|
+
if (!this.CalculateLableSize(out)) return;
|
|
53008
|
+
|
|
53009
|
+
this.DrawLable(out);
|
|
53010
|
+
}
|
|
53011
|
+
|
|
53012
|
+
this.CalculateLableSize=function(out)
|
|
53013
|
+
{
|
|
53014
|
+
if (!out || !IFrameSplitOperator.IsNonEmptyArray(out.AryText)) return false;
|
|
53015
|
+
|
|
53016
|
+
this.CanvasEx.font=this.Font;
|
|
53017
|
+
this.FontHeight=this.CanvasEx.measureText("O").width; //行高
|
|
53018
|
+
|
|
53019
|
+
var lableWidth=0, lableHeight=0
|
|
53020
|
+
for(var i=0; i<out.AryText.length; ++i)
|
|
53021
|
+
{
|
|
53022
|
+
var item=out.AryText[i];
|
|
53023
|
+
if (!item || !item.Text) continue;
|
|
53024
|
+
item.TextWidth=this.CanvasEx.measureText(item.Text).width;
|
|
53025
|
+
item.TextWidth+=this.TextMargin.Left+this.TextMargin.Right;
|
|
53026
|
+
|
|
53027
|
+
if (lableWidth<item.TextWidth) lableWidth=item.TextWidth;
|
|
53028
|
+
lableHeight+=this.FontHeight+this.TextMargin.Top+this.TextMargin.Bottom;
|
|
53029
|
+
}
|
|
53030
|
+
|
|
53031
|
+
out.Width=lableWidth+this.LabelMargin.Left+this.LabelMargin.Right;
|
|
53032
|
+
out.Height=lableHeight+this.LabelMargin.Top+this.LabelMargin.Bottom;
|
|
53033
|
+
|
|
53034
|
+
return true;
|
|
53035
|
+
}
|
|
53036
|
+
|
|
53037
|
+
this.FixedRect=function(rt)
|
|
53038
|
+
{
|
|
53039
|
+
rt.Left=ToFixedRect(rt.Left);
|
|
53040
|
+
rt.Top=ToFixedRect(rt.Top);
|
|
53041
|
+
rt.Width=ToFixedRect(rt.Width);
|
|
53042
|
+
rt.Height=ToFixedRect(rt.Height);
|
|
53043
|
+
|
|
53044
|
+
rt.Right=rt.Left+rt.Width;
|
|
53045
|
+
rt.Bottom=rt.Top+rt.Height;
|
|
53046
|
+
}
|
|
53047
|
+
|
|
53048
|
+
this.DrawLable=function(out)
|
|
53049
|
+
{
|
|
53050
|
+
if (!out || !IFrameSplitOperator.IsNonEmptyArray(out.AryText)) return;
|
|
53051
|
+
|
|
53052
|
+
var border=this.MainFrame.GetBorder();
|
|
53053
|
+
var chartBorder=this.MainFrame.ChartBorder;
|
|
53054
|
+
var lineHeight=this.FontHeight+this.TextMargin.Top+this.TextMargin.Bottom;
|
|
53055
|
+
if (chartBorder.Right>10 ) //外部刻度
|
|
53056
|
+
{
|
|
53057
|
+
var rtBG={ Left:border.Right, Top:out.YPrice-lineHeight/2, Width:out.Width, Height:out.Height };
|
|
53058
|
+
rtBG.Right=rtBG.Left+rtBG.Width;
|
|
53059
|
+
if (rtBG.Right>border.ChartWidth)
|
|
53060
|
+
{
|
|
53061
|
+
rtBG.Right=border.ChartWidth-1;
|
|
53062
|
+
rtBG.Left=rtBG.Right-rtBG.Width;
|
|
53063
|
+
}
|
|
53064
|
+
|
|
53065
|
+
this.FixedRect(rtBG);
|
|
53066
|
+
this.CanvasEx.fillStyle=out.BGColor;
|
|
53067
|
+
this.CanvasEx.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);
|
|
53068
|
+
}
|
|
53069
|
+
|
|
53070
|
+
this.Canvas.textAlign = "left";
|
|
53071
|
+
this.Canvas.textBaseline = "bottom";
|
|
53072
|
+
var yText=rtBG.Top+lineHeight+this.LabelMargin.Top;
|
|
53073
|
+
var xText=rtBG.Left+this.TextMargin.Left+this.LabelMargin.Left;
|
|
53074
|
+
for(var i=0;i<out.AryText.length;++i)
|
|
53075
|
+
{
|
|
53076
|
+
var item=out.AryText[i];
|
|
53077
|
+
var yOffset=this.TextMargin.YOffset;
|
|
53078
|
+
|
|
53079
|
+
this.CanvasEx.fillStyle=item.Color;
|
|
53080
|
+
this.CanvasEx.fillText(item.Text, xText, yText+yOffset-this.TextMargin.Bottom);
|
|
53081
|
+
|
|
53082
|
+
yText+=lineHeight;
|
|
53083
|
+
}
|
|
53084
|
+
|
|
53085
|
+
//线段
|
|
53086
|
+
var config=this.LineConfig;
|
|
53087
|
+
if (config.IsShow)
|
|
53088
|
+
{
|
|
53089
|
+
this.CanvasEx.strokeStyle=out.BGColor;
|
|
53090
|
+
this.CanvasEx.lineWidth=config.Width;
|
|
53091
|
+
if (IFrameSplitOperator.IsNonEmptyArray(config.Dash)) this.CanvasEx.setLineDash(config.Dash);
|
|
53092
|
+
this.CanvasEx.beginPath();
|
|
53093
|
+
var xLeft=border.LeftEx;
|
|
53094
|
+
var xRight=rtBG.Left;
|
|
53095
|
+
this.CanvasEx.moveTo(xLeft,ToFixedPoint(out.YPrice));
|
|
53096
|
+
this.CanvasEx.lineTo(xRight,ToFixedPoint(out.YPrice));
|
|
53097
|
+
this.CanvasEx.stroke();
|
|
53098
|
+
}
|
|
53099
|
+
}
|
|
53100
|
+
|
|
53101
|
+
this.GetColorConfig=function(kItem, symbol)
|
|
53102
|
+
{
|
|
53103
|
+
var config=this.UnchangeConfig;
|
|
53104
|
+
if (!kItem) return config;
|
|
53105
|
+
|
|
53106
|
+
if (kItem.Close>kItem.YClose) config=this.UpConfig;
|
|
53107
|
+
else if (kItem.Close<kItem.YClose) config=this.DownConfig;
|
|
53108
|
+
|
|
53109
|
+
return config;
|
|
53110
|
+
}
|
|
53111
|
+
}
|
|
53112
|
+
|
|
52667
53113
|
//拖拽效果图
|
|
52668
53114
|
var JSCHART_DRAGCHART_TYPE_ID=
|
|
52669
53115
|
{
|
|
@@ -77447,6 +77893,18 @@ function JSChartResource()
|
|
|
77447
77893
|
SplitLine:{ Color:'rgb(73,133,231)', Width:1*GetDevicePixelRatio(), Dash:[5*GetDevicePixelRatio(),5*GetDevicePixelRatio()] }
|
|
77448
77894
|
}
|
|
77449
77895
|
|
|
77896
|
+
this.KLineCountDownPaint=
|
|
77897
|
+
{
|
|
77898
|
+
Font:`${14*GetDevicePixelRatio()}px 微软雅黑`,
|
|
77899
|
+
TextMargin:{ Left:0, Right:0, Bottom:2, Top:2, YOffset:0 },
|
|
77900
|
+
LabelMargin:{ Left:5, Right:5, Bottom:4, Top:2 },
|
|
77901
|
+
Line:{ IsShow:true, Width:1, Dash:[5*GetDevicePixelRatio(), 5*GetDevicePixelRatio()] },
|
|
77902
|
+
|
|
77903
|
+
Unchange:{ BGColor:"rgb(0,0,0)", PriceColor:"rgb(250,250,250)", TimeColor:"rgb(190,190,190)" },
|
|
77904
|
+
Up:{ BGColor:"rgb(238,21,21)", PriceColor:"rgb(250,250,250)", TimeColor:"rgb(190,190,190)" },
|
|
77905
|
+
Down:{ BGColor:"rgb(25,158,0)", PriceColor:"rgb(250,250,250)", TimeColor:"rgb(190,190,190)" },
|
|
77906
|
+
}
|
|
77907
|
+
|
|
77450
77908
|
|
|
77451
77909
|
//成交明细
|
|
77452
77910
|
this.DealList=
|
|
@@ -78779,6 +79237,61 @@ function JSChartResource()
|
|
|
78779
79237
|
if (style.ChartScatterPlotV2) this.SetChartScatterPlotV2(style.ChartScatterPlotV2);
|
|
78780
79238
|
|
|
78781
79239
|
if (style.ChartDrawTVLongPosition) this.SetChartDrawTVLongPosition(style.ChartDrawTVLongPosition);
|
|
79240
|
+
if (style.KLineCountDownPaint) this.SetKLineCountDownPaint(style.KLineCountDownPaint);
|
|
79241
|
+
}
|
|
79242
|
+
|
|
79243
|
+
|
|
79244
|
+
this.SetKLineCountDownPaint=function(style)
|
|
79245
|
+
{
|
|
79246
|
+
var dest=this.KLineCountDownPaint;
|
|
79247
|
+
if (style.Font) dest.Font=style.Font;
|
|
79248
|
+
|
|
79249
|
+
if (style.TextMargin)
|
|
79250
|
+
{
|
|
79251
|
+
var item=style.TextMargin;
|
|
79252
|
+
CopyMarginConfig(dest.TextMargin, item);
|
|
79253
|
+
if (IFrameSplitOperator.IsNumber(item.YOffset)) dest.TextMargin.YOffset=item.YOffset;
|
|
79254
|
+
}
|
|
79255
|
+
|
|
79256
|
+
if (style.LabelMargin) CopyMarginConfig(dest.LabelMargin, style.LabelMargin);
|
|
79257
|
+
|
|
79258
|
+
if (style.Line)
|
|
79259
|
+
{
|
|
79260
|
+
var item=style.Line;
|
|
79261
|
+
if (IFrameSplitOperator.IsNumber(item.Width)) dest.Line.Width=item.Width;
|
|
79262
|
+
if (IFrameSplitOperator.IsBool(item.IsShow)) dest.Line.Width=item.Width;
|
|
79263
|
+
if (item.Dash) dest.Line.Dash=item.Dash;
|
|
79264
|
+
}
|
|
79265
|
+
|
|
79266
|
+
if (style.Unchange)
|
|
79267
|
+
{
|
|
79268
|
+
var item=style.Unchange;
|
|
79269
|
+
var subDest=dest.Unchange;
|
|
79270
|
+
|
|
79271
|
+
if (item.BGColor) subDest.BGColor=item.BGColor;
|
|
79272
|
+
if (item.PriceColor) subDest.PriceColor=item.PriceColor;
|
|
79273
|
+
if (item.TimeColor) subDest.TimeColor=item.TimeColor;
|
|
79274
|
+
}
|
|
79275
|
+
|
|
79276
|
+
if (style.Up)
|
|
79277
|
+
{
|
|
79278
|
+
var item=style.Up;
|
|
79279
|
+
var subDest=dest.Up;
|
|
79280
|
+
|
|
79281
|
+
if (item.BGColor) subDest.BGColor=item.BGColor;
|
|
79282
|
+
if (item.PriceColor) subDest.PriceColor=item.PriceColor;
|
|
79283
|
+
if (item.TimeColor) subDest.TimeColor=item.TimeColor;
|
|
79284
|
+
}
|
|
79285
|
+
|
|
79286
|
+
if (style.Down)
|
|
79287
|
+
{
|
|
79288
|
+
var item=style.Down;
|
|
79289
|
+
var subDest=dest.Down;
|
|
79290
|
+
|
|
79291
|
+
if (item.BGColor) subDest.BGColor=item.BGColor;
|
|
79292
|
+
if (item.PriceColor) subDest.PriceColor=item.PriceColor;
|
|
79293
|
+
if (item.TimeColor) subDest.TimeColor=item.TimeColor;
|
|
79294
|
+
}
|
|
78782
79295
|
}
|
|
78783
79296
|
|
|
78784
79297
|
|