hqchart 1.1.14542 → 1.1.14555
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 +44 -29
- package/package.json +1 -1
- package/src/jscommon/umychart.PopMinuteChart.js +260 -5
- package/src/jscommon/umychart.js +179 -135
- package/src/jscommon/umychart.style.js +5 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +185 -136
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +445 -141
|
@@ -30,6 +30,17 @@ function JSPopMinuteChart()
|
|
|
30
30
|
Option:JSPopMinuteChart.GetMinuteOption(),
|
|
31
31
|
JSChart:null,
|
|
32
32
|
Date:null,
|
|
33
|
+
Symbol:null,
|
|
34
|
+
Name:null,
|
|
35
|
+
Chart:null,
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
this.ClearCache=function()
|
|
39
|
+
{
|
|
40
|
+
this.Minute.Date=null;
|
|
41
|
+
this.Minute.Symbol=null;
|
|
42
|
+
this.Minute.Name=null;
|
|
43
|
+
this.Minute.Chart=null;
|
|
33
44
|
}
|
|
34
45
|
|
|
35
46
|
this.Inital=function(hqchart, option)
|
|
@@ -43,6 +54,11 @@ function JSPopMinuteChart()
|
|
|
43
54
|
var item=CloneData(option.Option); //复制一份出来
|
|
44
55
|
this.Minute.Option=Object.assign(this.Minute.Option,item);
|
|
45
56
|
}
|
|
57
|
+
|
|
58
|
+
if (option.EnableMarkBG) //标记背景
|
|
59
|
+
{
|
|
60
|
+
this.HQChart.CreateExtendChart("MarkPopMinutePaint");
|
|
61
|
+
}
|
|
46
62
|
}
|
|
47
63
|
}
|
|
48
64
|
|
|
@@ -83,6 +99,15 @@ function JSPopMinuteChart()
|
|
|
83
99
|
if (this.HQChart) this.Minute.Option.Language=g_JSChartLocalization.GetLanguageName(this.HQChart.LanguageID);
|
|
84
100
|
this.Minute.Option.OnCreatedCallback=(chart)=>{ this.OnCreateHQChart(chart); }
|
|
85
101
|
this.Minute.Option.NetworkFilter=(data, callback)=>{ this.NetworkFilter(data, callback); }
|
|
102
|
+
|
|
103
|
+
this.Minute.Option.EventCallback=
|
|
104
|
+
[
|
|
105
|
+
{
|
|
106
|
+
event:JSCHART_EVENT_ID.ON_KEYDOWN, //键盘消息
|
|
107
|
+
callback:(event, data, obj)=>{ this.OnKeyDown(event, data, obj); }
|
|
108
|
+
},
|
|
109
|
+
];
|
|
110
|
+
|
|
86
111
|
chart.SetOption(this.Minute.Option); //设置K线配置
|
|
87
112
|
|
|
88
113
|
document.body.appendChild(divDom);
|
|
@@ -143,14 +168,16 @@ function JSPopMinuteChart()
|
|
|
143
168
|
if (!data.Symbol || !IFrameSplitOperator.IsPlusNumber(data.Date)) return;
|
|
144
169
|
|
|
145
170
|
this.Date=data.Date;
|
|
146
|
-
|
|
147
|
-
if (data.Name)
|
|
148
|
-
|
|
149
|
-
|
|
171
|
+
this.Symbol=this.Name=data.Symbol;
|
|
172
|
+
if (data.Name) this.Name=data.Name;
|
|
173
|
+
this.Chart=data.Chart;
|
|
174
|
+
|
|
175
|
+
this.UpdateDialogTitle();
|
|
150
176
|
|
|
151
177
|
if (this.Minute.JSChart)
|
|
152
178
|
{
|
|
153
|
-
this.Minute.JSChart.ChangeSymbol(
|
|
179
|
+
this.Minute.JSChart.ChangeSymbol(this.Symbol);
|
|
180
|
+
this.MarkKLineBG();
|
|
154
181
|
}
|
|
155
182
|
|
|
156
183
|
if (!this.Minute.Option.EnableResize)
|
|
@@ -173,11 +200,19 @@ function JSPopMinuteChart()
|
|
|
173
200
|
this.DivDialog.style.left = x + "px";
|
|
174
201
|
}
|
|
175
202
|
|
|
203
|
+
this.UpdateDialogTitle=function()
|
|
204
|
+
{
|
|
205
|
+
var title=`${this.Name} ${IFrameSplitOperator.FormatDateString(this.Date)} 分时图 PageUp/PageDown翻页`;
|
|
206
|
+
this.TitleBox.DivName.innerText=title;
|
|
207
|
+
}
|
|
208
|
+
|
|
176
209
|
this.Close=function(e)
|
|
177
210
|
{
|
|
178
211
|
if (!this.DivDialog) return;
|
|
179
212
|
|
|
213
|
+
this.ClearCache();
|
|
180
214
|
this.DivDialog.style.visibility='hidden';
|
|
215
|
+
this.ClearMarkKLineBG();
|
|
181
216
|
}
|
|
182
217
|
|
|
183
218
|
this.OnMouseDownTitle=function(e)
|
|
@@ -239,6 +274,114 @@ function JSPopMinuteChart()
|
|
|
239
274
|
|
|
240
275
|
if (this.Minute.JSChart) this.Minute.JSChart.SetLanguage(language);
|
|
241
276
|
}
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
this.OnKeyDown=function(event, data, obj)
|
|
280
|
+
{
|
|
281
|
+
switch(data.KeyID)
|
|
282
|
+
{
|
|
283
|
+
case 33: //page up
|
|
284
|
+
data.PreventDefault=true;
|
|
285
|
+
var date=this.GetNextDate(1);
|
|
286
|
+
if (IFrameSplitOperator.IsPlusNumber(date)) this.ChangeDate(date);
|
|
287
|
+
break;
|
|
288
|
+
case 34: //page down
|
|
289
|
+
data.PreventDefault=true;
|
|
290
|
+
var date=this.GetNextDate(-1);
|
|
291
|
+
if (IFrameSplitOperator.IsPlusNumber(date)) this.ChangeDate(date);
|
|
292
|
+
break;
|
|
293
|
+
default:
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
this.GetNextDate=function(step)
|
|
299
|
+
{
|
|
300
|
+
if (!this.Chart) return null;
|
|
301
|
+
if (!IFrameSplitOperator.IsNumber(this.Date)) return null;
|
|
302
|
+
if (step==0) return null;
|
|
303
|
+
|
|
304
|
+
var kData=this.Chart.Data;
|
|
305
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return null;
|
|
306
|
+
|
|
307
|
+
var index=-1;
|
|
308
|
+
for(var i=0;i<kData.Data.length;++i)
|
|
309
|
+
{
|
|
310
|
+
var kItem=kData.Data[i];
|
|
311
|
+
if (!kItem) continue;
|
|
312
|
+
|
|
313
|
+
if (kItem.Date==this.Date)
|
|
314
|
+
{
|
|
315
|
+
index=i;
|
|
316
|
+
break;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
if (index<0) return null;
|
|
321
|
+
|
|
322
|
+
var date=null;
|
|
323
|
+
if (step>0)
|
|
324
|
+
{
|
|
325
|
+
for(var i=1, j=0;j<step && index+i<kData.Data.length;++i)
|
|
326
|
+
{
|
|
327
|
+
var kItem=kData.Data[index+i];
|
|
328
|
+
if (!kItem || !IFrameSplitOperator.IsNumber(kItem.Date)) continue;
|
|
329
|
+
|
|
330
|
+
date=kItem.Date;
|
|
331
|
+
++j;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
else
|
|
335
|
+
{
|
|
336
|
+
step=Math.abs(step);
|
|
337
|
+
for(var i=1, j=0;j<step && index-i>=0;++i)
|
|
338
|
+
{
|
|
339
|
+
var kItem=kData.Data[index-i];
|
|
340
|
+
if (!kItem || !IFrameSplitOperator.IsNumber(kItem.Date)) continue;
|
|
341
|
+
|
|
342
|
+
date=kItem.Date;
|
|
343
|
+
++j;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
if (date==this.Date) return null;
|
|
348
|
+
|
|
349
|
+
return date;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
//修改日期
|
|
353
|
+
this.ChangeDate=function(date)
|
|
354
|
+
{
|
|
355
|
+
if (!this.Minute.JSChart) return;
|
|
356
|
+
|
|
357
|
+
this.Date=date;
|
|
358
|
+
this.UpdateDialogTitle();
|
|
359
|
+
this.Minute.JSChart.ChangeSymbol(this.Symbol);
|
|
360
|
+
this.MarkKLineBG();
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
this.MarkKLineBG=function()
|
|
364
|
+
{
|
|
365
|
+
if (!this.HQChart) return;
|
|
366
|
+
|
|
367
|
+
var finder=this.HQChart.GetExtendChartByClassName("MarkPopMinutePaint");
|
|
368
|
+
if (!finder || !finder.Chart) return;
|
|
369
|
+
|
|
370
|
+
finder.Chart.SetDate([this.Date]);
|
|
371
|
+
this.HQChart.Draw();
|
|
372
|
+
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
this.ClearMarkKLineBG=function()
|
|
376
|
+
{
|
|
377
|
+
if (!this.HQChart) return;
|
|
378
|
+
|
|
379
|
+
var finder=this.HQChart.GetExtendChartByClassName("MarkPopMinutePaint");
|
|
380
|
+
if (!finder || !finder.Chart) return;
|
|
381
|
+
|
|
382
|
+
finder.Chart.ClearData();
|
|
383
|
+
this.HQChart.Draw();
|
|
384
|
+
}
|
|
242
385
|
}
|
|
243
386
|
|
|
244
387
|
|
|
@@ -570,6 +713,118 @@ JSTooltipMinuteChart.GetMinuteOption=function()
|
|
|
570
713
|
}
|
|
571
714
|
|
|
572
715
|
|
|
716
|
+
///////////////////////////////////////////////////////
|
|
717
|
+
// K线上标记选中
|
|
718
|
+
|
|
719
|
+
function MarkPopMinutePaint()
|
|
720
|
+
{
|
|
721
|
+
this.newMethod=IExtendChartPainting; //派生
|
|
722
|
+
this.newMethod();
|
|
723
|
+
delete this.newMethod;
|
|
724
|
+
|
|
725
|
+
this.ClassName="MarkPopMinutePaint";
|
|
726
|
+
this.MapDate; //标记日期
|
|
727
|
+
this.BGColor="rgba(100,100,100,0.2)";
|
|
728
|
+
this.LineWidth=g_JSChartResource.PopMinuteChart.Mark.LineWidth;
|
|
729
|
+
this.LineColor=g_JSChartResource.PopMinuteChart.Mark.LineColor;
|
|
730
|
+
this.SubFrame;
|
|
731
|
+
this.IsDynamic=true;
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
this.ReloadResource=function(resource)
|
|
735
|
+
{
|
|
736
|
+
this.LineWidth=g_JSChartResource.PopMinuteChart.Mark.LineWidth;
|
|
737
|
+
this.LineColor=g_JSChartResource.PopMinuteChart.Mark.LineColor;
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
this.SetDate=function(aryDate)
|
|
741
|
+
{
|
|
742
|
+
this.MapDate=new Map();
|
|
743
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryDate))
|
|
744
|
+
{
|
|
745
|
+
for(var i=0;i<aryDate.length;++i)
|
|
746
|
+
{
|
|
747
|
+
var date=aryDate[i];
|
|
748
|
+
this.MapDate.set(date, { Date:date} );
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
this.ClearData=function()
|
|
754
|
+
{
|
|
755
|
+
this.MapDate=null;
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
this.Draw=function()
|
|
759
|
+
{
|
|
760
|
+
this.SubFrame=null;
|
|
761
|
+
if (!this.HQChart) return;
|
|
762
|
+
if (!this.ChartFrame || !IFrameSplitOperator.IsNonEmptyArray(this.ChartFrame.SubFrame)) return;
|
|
763
|
+
if (!this.MapDate || this.MapDate.size<=0) return;
|
|
764
|
+
|
|
765
|
+
var kData=this.HQChart.GetKData();
|
|
766
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
|
|
767
|
+
this.SubFrame=this.ChartFrame.SubFrame[0].Frame;
|
|
768
|
+
if (!this.SubFrame) return;
|
|
769
|
+
|
|
770
|
+
var dataWidth=this.SubFrame.DataWidth;
|
|
771
|
+
var distanceWidth=this.SubFrame.DistanceWidth;
|
|
772
|
+
var xPointCount=this.SubFrame.XPointCount;
|
|
773
|
+
var border=this.SubFrame.GetBorder();
|
|
774
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
775
|
+
var chartright=border.RightEx;
|
|
776
|
+
|
|
777
|
+
var startIndex=kData.DataOffset;
|
|
778
|
+
var aryBG=[];
|
|
779
|
+
for(var i=startIndex,j=0;i<kData.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
780
|
+
{
|
|
781
|
+
var kItem=kData.Data[i];
|
|
782
|
+
if (!kItem) continue;
|
|
783
|
+
if (!this.MapDate.has(kItem.Date)) continue
|
|
784
|
+
|
|
785
|
+
var left=xOffset;
|
|
786
|
+
var right=xOffset+dataWidth;
|
|
787
|
+
var x=left+(right-left)/2;
|
|
788
|
+
|
|
789
|
+
var bgItem={ Left:left, XCenter:x, Right:right, DataIndex:i, DataWidth:dataWidth };
|
|
790
|
+
aryBG.push(bgItem);
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryBG))
|
|
794
|
+
{
|
|
795
|
+
this.Canvas.save();
|
|
796
|
+
this.DrawBG(aryBG);
|
|
797
|
+
this.Canvas.restore();
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
this.SubFrame=null;
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
this.DrawBG=function(aryBG)
|
|
804
|
+
{
|
|
805
|
+
var border=this.ChartFrame.ChartBorder.GetBorder();
|
|
806
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
807
|
+
if (this.MapDate.size==1) //标记一天
|
|
808
|
+
{
|
|
809
|
+
var item=aryBG[0];
|
|
810
|
+
var lineWidth=this.LineWidth*pixelRatio;
|
|
811
|
+
if (item.DataWidth<=4) lineWidth=1*pixelRatio;
|
|
812
|
+
|
|
813
|
+
this.Canvas.lineWidth=lineWidth;
|
|
814
|
+
this.Canvas.strokeStyle=this.LineColor;
|
|
815
|
+
this.Canvas.beginPath();
|
|
816
|
+
this.Canvas.moveTo(item.XCenter,border.TopEx);
|
|
817
|
+
this.Canvas.lineTo(item.XCenter,border.BottomEx);
|
|
818
|
+
this.Canvas.stroke();
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
JSChart.RegisterExtendChartClass("MarkPopMinutePaint", { Create:function() { return new MarkPopMinutePaint}} );
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
|
|
573
828
|
|
|
574
829
|
|
|
575
830
|
|