hqchart 1.1.12513 → 1.1.12522

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.
@@ -5712,6 +5712,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5712
5712
 
5713
5713
  this.JSChartContainer=chart;
5714
5714
 
5715
+ if (option.DefaultCursor) chart.DefaultCursor=option.DefaultCursor;
5715
5716
  if (option.OnCreatedCallback) option.OnCreatedCallback(chart);
5716
5717
 
5717
5718
  //是否自动更新
@@ -6817,6 +6818,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6817
6818
  this.IsClickShowCorssCursor=false; //手势点击显示十字光标
6818
6819
  this.ChartSplashPaint=null; //等待提示
6819
6820
  this.LoadDataSplashTitle="数据加载中"; //下载数据提示信息
6821
+ this.DefaultCursor="default"; //crosshair , default 默认手型
6820
6822
 
6821
6823
  //绘图缓存
6822
6824
  this.CacheCanvas=null;
@@ -7296,7 +7298,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7296
7298
  event.Callback(event, sendData, this);
7297
7299
  this.CustomChartDrag=sendData.ChartDrag;
7298
7300
 
7299
- if (sendData.Cusrsor) this.UIElement.style.cursor=sendData.Cusrsor;
7301
+ this.SetCursor(sendData);
7300
7302
  }
7301
7303
 
7302
7304
  this.TryDragMove_CustomChartDrag=function(sendData)
@@ -7375,7 +7377,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7375
7377
  {
7376
7378
  if (item.Type==4)
7377
7379
  {
7378
- this.UIElement.style.cursor="pointer";
7380
+ //this.UIElement.style.cursor="pointer";
7381
+ this.SetCursor({Cursor:"pointer"});
7379
7382
  var obj={ X:e.clientX };
7380
7383
  if (this.GetXDataIndex(obj))
7381
7384
  {
@@ -7385,7 +7388,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7385
7388
  }
7386
7389
  else
7387
7390
  {
7388
- this.UIElement.style.cursor="ew-resize";
7391
+ //this.UIElement.style.cursor="ew-resize";
7392
+ this.SetCursor({Cursor:"ew-resize"});
7389
7393
  this.RectSelectDrag={ Index:item.PointIndex, Type:item.Type };
7390
7394
  JSConsole.Chart.Log("[JSChartContainer::UIOnMouseDown] drag rect select ",item);
7391
7395
  }
@@ -7399,7 +7403,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7399
7403
  var dragBorder=this.Frame.PtInFrameBorder(x,y);
7400
7404
  if (dragBorder && dragBorder.Index>=0)
7401
7405
  {
7402
- this.UIElement.style.cursor="n-resize";
7406
+ //this.UIElement.style.cursor="n-resize";
7407
+ this.SetCursor({Cursor:"n-resize"});
7403
7408
  this.BorderDrag={ Index:dragBorder.Index };
7404
7409
  JSConsole.Chart.Log("[JSChartContainer::UIOnMouseDown] DragBorder ",dragBorder);
7405
7410
  }
@@ -7411,7 +7416,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7411
7416
  var dragY=this.TryYDrag(x,y);
7412
7417
  if (dragY)
7413
7418
  {
7414
- this.UIElement.style.cursor=dragY.Position==0 ? "n-resize":"row-resize";
7419
+ //this.UIElement.style.cursor=dragY.Position==0 ? "n-resize":"row-resize";
7420
+ var cursor=dragY.Position==0 ? "n-resize":"row-resize";
7421
+ this.SetCursor({Cursor:cursor});
7415
7422
  this.YDrag=dragY;
7416
7423
  JSConsole.Chart.Log("[JSChartContainer::UIOnMouseDown] dragY ",dragY);
7417
7424
  }
@@ -7420,7 +7427,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7420
7427
  var dragUpDown=this.TryUpDownDrag(x,y);
7421
7428
  if (dragUpDown)
7422
7429
  {
7423
- this.UIElement.style.cursor="pointer";
7430
+ //this.UIElement.style.cursor="pointer";
7431
+ this.SetCursor({Cursor:"pointer"});
7424
7432
  this.UpDownDrag=dragUpDown;
7425
7433
  JSConsole.Chart.Log("[JSChartContainer::UIOnMouseDown] dragUpDown ",dragUpDown);
7426
7434
  }
@@ -7743,8 +7751,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7743
7751
 
7744
7752
  if (moveSetp<5 && yMoveSetp<5) return;
7745
7753
 
7746
- this.UIElement.style.cursor="default";
7747
-
7754
+ //this.UIElement.style.cursor="default";
7755
+ this.SetCursor({Cursor:"default"});
7748
7756
  var x=drag.Click.X-uielement.getBoundingClientRect().left;
7749
7757
  var y=drag.Click.Y-uielement.getBoundingClientRect().top;
7750
7758
  var x2=e.clientX-uielement.getBoundingClientRect().left;
@@ -7773,7 +7781,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7773
7781
  {
7774
7782
  var yMove=e.clientY-drag.LastMove.Y;
7775
7783
  JSConsole.Chart.Log("[JSChartContainer::OnDragMode_One] UpDownDrag ",this.UpDownDrag,yMove);
7776
- this.UIElement.style.cursor="pointer";
7784
+ //this.UIElement.style.cursor="pointer";
7785
+ this.SetCursor({Cursor:"pointer"});
7777
7786
  if (this.OnUpDonwFrameY(this.UpDownDrag, yMove))
7778
7787
  {
7779
7788
  bNeedDraw=true;
@@ -7820,7 +7829,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7820
7829
  var oneStepWidth=this.GetMoveOneStepWidth();
7821
7830
  if (moveSetp<oneStepWidth)
7822
7831
  {
7823
- this.UIElement.style.cursor=cursorStatus;
7832
+ //this.UIElement.style.cursor=cursorStatus;
7833
+ this.SetCursor({Cursor:cursorStatus});
7824
7834
  if (bNeedDraw) this.Draw();
7825
7835
  return;
7826
7836
  }
@@ -7850,7 +7860,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7850
7860
  if (this.DragDownloadData) this.DragDownloadData();
7851
7861
  }
7852
7862
  }
7853
- this.UIElement.style.cursor=cursorStatus;
7863
+ //this.UIElement.style.cursor=cursorStatus;
7864
+ this.SetCursor({Cursor:cursorStatus});
7854
7865
  }
7855
7866
  drag.LastMove.X=e.clientX;
7856
7867
  }
@@ -7918,7 +7929,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7918
7929
  var chartMove=this.GetExtendChartByClassName("DragMovePaint");
7919
7930
  if (chartMove && chartMove.Chart) chartMove.Chart.Clear();
7920
7931
  if (!this.OnDragChart(this.IndexChartDrag)) this.DrawDynamicInfo();
7921
- this.UIElement.style.cursor="default";
7932
+ //this.UIElement.style.cursor="default";
7933
+ this.SetCursor({Cursor:"default"});
7922
7934
  }
7923
7935
  else if (this.CustomChartDrag)
7924
7936
  {
@@ -8008,7 +8020,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8008
8020
  //清空数据
8009
8021
  JSConsole.Chart.Log('[KLineChartContainer::document.onmouseup]',e);
8010
8022
  if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.DragInfo=null;
8011
- this.UIElement.style.cursor="default";
8023
+ //this.UIElement.style.cursor="default";
8024
+ this.SetCursor({Cursor:"default"});
8012
8025
  this.MouseDrag=null;
8013
8026
  this.ClickDownPoint=null;
8014
8027
  this.IsOnTouch=false;
@@ -9843,7 +9856,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9843
9856
  var frameID=this.Frame.PtInFrame(x,y);
9844
9857
  if (IFrameSplitOperator.IsNumber(frameID) && frameID>=0) //在K线内部移动,调整K线索引
9845
9858
  this.CursorIndex=this.Frame.GetXData(x);
9846
-
9847
9859
 
9848
9860
 
9849
9861
  if (this.EnableBorderDrag && this.Frame && !this.CurrentChartDrawPicture)
@@ -9966,13 +9978,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9966
9978
 
9967
9979
  if (drawPictrueData.PointIndex===100)
9968
9980
  {
9969
- if (drawPictrueData.Cursor) this.UIElement.style.cursor=drawPictrueData.Cursor;
9970
- else this.UIElement.style.cursor="move";
9981
+ if (drawPictrueData.Cursor) this.SetCursor(drawPictrueData); //this.UIElement.style.cursor=drawPictrueData.Cursor;
9982
+ else this.SetCursor({Cursor:"move"}); //this.UIElement.style.cursor="move";
9971
9983
  }
9972
9984
  else
9973
9985
  {
9974
- if (drawPictrueData.Cursor) this.UIElement.style.cursor=drawPictrueData.Cursor
9975
- else this.UIElement.style.cursor="pointer";
9986
+ if (drawPictrueData.Cursor) this.SetCursor(drawPictrueData); //this.UIElement.style.cursor=drawPictrueData.Cursor
9987
+ else this.SetCursor({Cursor:"pointer"}); //this.UIElement.style.cursor="pointer";
9976
9988
  }
9977
9989
 
9978
9990
  bDrawPicture=true;
@@ -9980,7 +9992,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9980
9992
  }
9981
9993
  else
9982
9994
  {
9983
- if (!this.MouseDrag) this.UIElement.style.cursor="default";
9995
+ if (!this.MouseDrag) this.SetCursor({Cursor:"default"}); //this.UIElement.style.cursor="default";
9984
9996
  }
9985
9997
  }
9986
9998
 
@@ -10003,7 +10015,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10003
10015
  this.DrawDynamicInfo(option);
10004
10016
  }
10005
10017
 
10006
- if (mouseStatus) this.UIElement.style.cursor=mouseStatus.Cursor;
10018
+ this.SetCursor(mouseStatus);
10007
10019
 
10008
10020
  if (this.IsShowTooltip && bDrawPicture==false)
10009
10021
  {
@@ -10031,6 +10043,17 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10031
10043
  }
10032
10044
  }
10033
10045
 
10046
+ //设置鼠标形状 {Cursor:鼠标形状 }
10047
+ this.SetCursor=function(obj)
10048
+ {
10049
+ if (!obj || !obj.Cursor) return;
10050
+
10051
+ if (obj.Cursor=="default")
10052
+ this.UIElement.style.cursor=this.DefaultCursor;
10053
+ else
10054
+ this.UIElement.style.cursor=obj.Cursor;
10055
+ }
10056
+
10034
10057
  this.OnKeyDown=function(e)
10035
10058
  {
10036
10059
  if (this.ChartSplashPaint && this.ChartSplashPaint.IsEnableSplash == true) return;
@@ -12784,6 +12807,7 @@ function CoordinateInfo()
12784
12807
  this.Value; //坐标数据
12785
12808
  this.Message=[]; //坐标输出文字信息 0=左 1=右 2=内左 3=内右
12786
12809
  this.TextColor=g_JSChartResource.FrameSplitTextColor //文字颜色
12810
+ this.TextBGColor; //文字背景色
12787
12811
  this.TextColor2; //右侧文字颜色,空使用TextColor
12788
12812
  this.Font=g_JSChartResource.FrameSplitTextFont; //字体
12789
12813
  this.LineColor=g_JSChartResource.FrameSplitPen; //线段颜色
@@ -14296,9 +14320,10 @@ function AverageWidthFrame()
14296
14320
  this.Canvas.font=this.VerticalInfo[i].Font;
14297
14321
 
14298
14322
  var textLeft=0;
14299
- this.Canvas.fillStyle=item.TextColor;
14323
+
14300
14324
  this.Canvas.strokeStyle=item.TextColor;
14301
14325
  var testWidth=this.Canvas.measureText(this.VerticalInfo[i].Message[0]).width;
14326
+ var textHeight=this.Canvas.measureText("擎").width;
14302
14327
  if (x<testWidth/2)
14303
14328
  {
14304
14329
  this.Canvas.textAlign="left";
@@ -14332,6 +14357,15 @@ function AverageWidthFrame()
14332
14357
  yText+=lineLength+2*pixelRatio;
14333
14358
  }
14334
14359
 
14360
+ //item.TextBGColor="rgb(0,255,0)";
14361
+ if (item.TextBGColor) //文字背景色
14362
+ {
14363
+ var rtText={ Left:textLeft, Top:yText+this.XBottomOffset, Width:testWidth, Height:textHeight };
14364
+ this.Canvas.fillStyle=item.TextBGColor;
14365
+ this.Canvas.fillRect(rtText.Left-1, rtText.Top, rtText.Width+2, rtText.Height);
14366
+ }
14367
+
14368
+ this.Canvas.fillStyle=item.TextColor;
14335
14369
  this.Canvas.fillText(this.VerticalInfo[i].Message[0],x,yText+this.XBottomOffset);
14336
14370
  textRightPrev=textLeft+testWidth;
14337
14371
  }
@@ -33105,6 +33139,7 @@ function ChartStick()
33105
33139
  this.Draw=function()
33106
33140
  {
33107
33141
  if (!this.IsShow || this.ChartFrame.IsMinSize) return;
33142
+ if (this.IsHideScriptIndex()) return;
33108
33143
 
33109
33144
  if (this.NotSupportMessage)
33110
33145
  {
@@ -33130,6 +33165,8 @@ function ChartLineStick()
33130
33165
  this.Draw=function()
33131
33166
  {
33132
33167
  if (!this.IsShow || this.ChartFrame.IsMinSize) return;
33168
+ if (this.IsShowIndexTitleOnly()) return;
33169
+ if (this.IsHideScriptIndex()) return;
33133
33170
 
33134
33171
  if (this.NotSupportMessage)
33135
33172
  {
@@ -43658,7 +43695,7 @@ function DrawToolsButton()
43658
43695
  { HTML: { Title: 'M头W底', IClass: 'iconfont icon-draw_wavemw', ID: 'icon-wavemw' }, Name: 'M头W底' },
43659
43696
  { HTML: { Title: '头肩型', IClass: 'iconfont icon-draw_head_shoulders_bt', ID: 'icon-Head-Shoulders' }, Name: '头肩型' },
43660
43697
  { HTML: { Title: '波浪尺', IClass: 'iconfont icon-waveruler', ID: 'icon-wave-ruler' }, Name: '波浪尺' },
43661
- { HTML: { Title: 'AB波浪尺', IClass: 'iconfont icon-waveruler', ID: 'icon-wave-ruler' }, Name: 'AB波浪尺' },
43698
+ { HTML: { Title: 'AB波浪尺', IClass: 'iconfont icon-waveruler', ID: 'icon-wave-ruler2' }, Name: 'AB波浪尺' },
43662
43699
  { HTML: { Title: '箱型线', IClass: 'iconfont icon-draw_box', ID: 'icon-drawbox' }, Name: '箱型线' },
43663
43700
  { HTML: { Title: '涂鸦线段', IClass: 'iconfont icon-draw_line', ID: 'icon-segment2' }, Name: '涂鸦线段' },
43664
43701
 
@@ -48846,6 +48883,7 @@ function FrameSplitMinuteX()
48846
48883
  info.Value=item[0];
48847
48884
  if (this.ShowText) info.Message[0]=item[3];
48848
48885
  if (item[4]) info.LineColor=item[4]; //线段颜色
48886
+ if (item[5]) info.TextBGColor=item[5]; //文字背景色
48849
48887
  this.Frame.VerticalInfo[i]=info;
48850
48888
  }
48851
48889
  }
@@ -52640,7 +52678,8 @@ function DynamicMinuteTitlePainting()
52640
52678
 
52641
52679
  if (beforeItem && dataItem) //盘前数据
52642
52680
  {
52643
- if (beforeItem.Date>dataItem.Date || (beforeItem.Date==dataItem.Date && beforeItem.Time>dataItem.Time && afterDataVer==1.0) )
52681
+ if (beforeItem.Date>dataItem.Date || (beforeItem.Date==dataItem.Date && beforeItem.Time>dataItem.Time && beforeDataVer==1.0)
52682
+ || (beforeItem.Date==dataItem.Date && parseInt(beforeItem.Time>dataItem.Time) && beforeDataVer==2.0))
52644
52683
  return { Type:2, Data:beforeItem, Ver: beforeDataVer, Explain:beforeExplain};
52645
52684
  }
52646
52685
 
@@ -56054,7 +56093,9 @@ IChartDrawPicture.ArrayDrawPricture=
56054
56093
  { Name:"AnchoredText", ClassName:"ChartDrawAnchoredText", Create:function() { return new ChartDrawAnchoredText();} },
56055
56094
  { Name:"PriceLabel", ClassName:"ChartDrawPriceLabel", Create:function() { return new ChartDrawPriceLabel();} },
56056
56095
  { Name:"PriceNote", ClassName:"ChartDrawPriceNote", Create:function() { return new ChartDrawPriceNote();} },
56057
- { Name:"FibWedge", ClassName:"ChartDrawFibWedge", Create:function(){ return new ChartDrawFibWedge(); }}
56096
+ { Name:"FibWedge", ClassName:"ChartDrawFibWedge", Create:function(){ return new ChartDrawFibWedge(); }},
56097
+ { Name:"FibRetracement", ClassName:"ChartFibRetracement", Create:function() { return new ChartFibRetracement(); }}, //斐波那契回测
56098
+ { Name:"FibSpeedResistanceFan", ClassName:"ChartFibSpeedResistanceFan", Create:function() { return new ChartFibSpeedResistanceFan(); }} //斐波那契扇形
56058
56099
  ];
56059
56100
 
56060
56101
  IChartDrawPicture.MapIonFont=new Map(
@@ -58325,7 +58366,7 @@ function ChartDrawPictureParallelChannel()
58325
58366
  var ptCenter=new Point();
58326
58367
  ptCenter.X=linePoint.Start.X+(linePoint.End.X-linePoint.Start.X)/2;
58327
58368
  ptCenter.Y=linePoint.Start.Y+(linePoint.End.Y-linePoint.Start.Y)/2;
58328
- drawPoint[3]=ptCenter;
58369
+ drawPoint[2]=ptCenter;
58329
58370
 
58330
58371
  this.Point[2]=ptCenter;
58331
58372
  var xValue=parseInt(this.Frame.GetXData(ptCenter.X))+data.DataOffset;
@@ -58758,6 +58799,7 @@ function ChartDrawPictureGannFan()
58758
58799
  else return 3;
58759
58800
  }
58760
58801
 
58802
+
58761
58803
  //isDotline 是否是虚线
58762
58804
  this.DrawLine=function(ptStart,ptEnd,isDottedline)
58763
58805
  {
@@ -63537,6 +63579,423 @@ function ChartDrawFibWedge()
63537
63579
 
63538
63580
  }
63539
63581
 
63582
+ //////////////////////////////////////////////////////////////////////////////
63583
+ // 斐波那契回测
63584
+ //
63585
+ function ChartFibRetracement()
63586
+ {
63587
+ this.newMethod=IChartDrawPicture; //派生
63588
+ this.newMethod();
63589
+ delete this.newMethod;
63590
+
63591
+ this.ClassName='ChartFibRetracement';
63592
+ this.PointCount=2;
63593
+ this.Font=12*GetDevicePixelRatio() +"px 微软雅黑";
63594
+ this.IsPointIn=this.IsPointIn_XYValue_Line;
63595
+ this.GetXYCoordinate=this.GetXYCoordinate_default;
63596
+ this.PointToValue_Default=this.PointToValue;
63597
+ this.OnlyMoveXIndex=true;
63598
+ this.IsSupportMagnet=true;
63599
+ this.LineDash=[6,3];
63600
+ this.LineWidth=1;
63601
+ this.EnableBGColor=true;
63602
+ this.ExtendLine={ Left:false, Right: false }; //延长线
63603
+
63604
+ this.AreaConfig=
63605
+ {
63606
+ AryData:
63607
+ [
63608
+ { Value: 0, Color:"rgb(128,128,128)", Enable:true },
63609
+ { Value: 0.236, Color:"rgb(242,52,69)", Enable:true },
63610
+ { Value: 0.382, Color:"rgb(255,152,0)",Enable:true },
63611
+ { Value: 0.5, Color:"rgb(76,175,80)", Enable:true },
63612
+ { Value: 0.618, Color:"rgb(8,153,129)", Enable:true },
63613
+ { Value: 0.786, Color:"rgb(0,188,212)" ,Enable:true },
63614
+ { Value: 1, Color:"rgb(120,123,134)", Enable:true },
63615
+ { Value: 1.618, Color:"rgb(41,98,255)",Enable:true },
63616
+ { Value: 2.618, Color:"rgb(242,54,69)",Enable:false },
63617
+ ],
63618
+
63619
+ Opacity:0.3
63620
+ }
63621
+
63622
+ this.SetOption=function(option)
63623
+ {
63624
+ if (!option) return;
63625
+
63626
+ if (option.Font) this.Font=option.Font;
63627
+ if (option.LineWidth) this.LineWidth=option.LineWidth;
63628
+ if (option.LineDash) this.LineDash=option.LineDash;
63629
+ if (IFrameSplitOperator.IsBool(option.EnableBGColor)) this.EnableBGColor=option.EnableBGColor;
63630
+ if (option.ExtendLine)
63631
+ {
63632
+ var item=option.ExtendLine;
63633
+ if (IFrameSplitOperator.IsBool(item.Left)) this.ExtendLine.Left=item.Left;
63634
+ if (IFrameSplitOperator.IsBool(item.Right)) this.ExtendLine.Left=item.Right;
63635
+ }
63636
+
63637
+ if (option.AreaConfig) this.AreaConfig=option.AreaConfig;
63638
+ }
63639
+
63640
+ //导出成存储格式
63641
+ this.ExportStorageData=function()
63642
+ {
63643
+ var storageData=this.ExportBaseData();
63644
+
63645
+ storageData.Value=[];
63646
+ for(var i=0;i<this.Value.length && i<this.PointCount;++i)
63647
+ {
63648
+ var item=this.Value[i];
63649
+ storageData.Value.push( { XValue:item.XValue, YValue:item.YValue } );
63650
+ }
63651
+
63652
+ storageData.Font=this.Font;
63653
+ storageData.EnableBGColor=this.EnableBGColor;
63654
+ storageData.LineDash=this.LineDash;
63655
+ storageData.ExtendLine={ Left:this.ExtendLine.Left, Right:this.ExtendLine.Right };
63656
+ storageData.AreaConfig=CloneData(this.AreaConfig);
63657
+
63658
+ return storageData;
63659
+ }
63660
+
63661
+ this.ImportStorageData=function(storageData)
63662
+ {
63663
+ if (storageData.Font) this.Font=storageData.Font;
63664
+ if (storageData.LineDash) this.LineDash=storageData.LineDash;
63665
+ if (IFrameSplitOperator.IsBool(storageData.EnableBGColor)) this.EnableBGColor=storageData.EnableBGColor;
63666
+ if (storageData.ExtendLine) this.ExtendLine=storageData.ExtendLine;
63667
+ if (storageData.AreaConfig) this.AreaConfig=storageData.AreaConfig;
63668
+ }
63669
+
63670
+ this.Draw=function()
63671
+ {
63672
+ this.LinePoint=[];
63673
+ if (this.IsFrameMinSize()) return;
63674
+ var bCheckXY=true;
63675
+ if (this.ExtendLine.Left || this.ExtendLine.Right) bCheckXY=false;
63676
+ var drawPoint=this.CalculateDrawPoint( {IsCheckX:bCheckXY, IsCheckY:bCheckXY} );
63677
+ if (!drawPoint) return;
63678
+ if (drawPoint.length!=2) return;
63679
+
63680
+ this.ClipFrame();
63681
+
63682
+ var ptStart=drawPoint[0];
63683
+ var ptEnd=drawPoint[1];
63684
+
63685
+ this.SetLineWidth();
63686
+ this.Canvas.strokeStyle=this.LineColor;
63687
+ this.Canvas.setLineDash(this.LineDash);
63688
+ this.Canvas.beginPath();
63689
+ this.Canvas.moveTo(ptStart.X,ptStart.Y);
63690
+ this.Canvas.lineTo(ptEnd.X,ptEnd.Y);
63691
+ this.Canvas.stroke();
63692
+ this.Canvas.setLineDash([]);
63693
+
63694
+ this.DrawBlock(ptStart, ptEnd);
63695
+
63696
+ this.RestoreLineWidth();
63697
+
63698
+ var line={Start:ptStart, End:ptEnd};
63699
+ this.LinePoint.push(line);
63700
+
63701
+ this.DrawPoint(drawPoint); //画点
63702
+ this.Canvas.restore();
63703
+ }
63704
+
63705
+ this.GetArrayAreaConfig=function()
63706
+ {
63707
+ var aryArea=[];
63708
+ for(var i=0;i<this.AreaConfig.AryData.length;++i)
63709
+ {
63710
+ var item=this.AreaConfig.AryData[i];
63711
+ if (item.Enable) aryArea.push(item);
63712
+ }
63713
+
63714
+ aryArea.sort((left,right)=>{ return right.Value-left.Value; })
63715
+
63716
+ return aryArea;
63717
+ }
63718
+
63719
+ this.DrawBlock=function(ptStart, ptEnd)
63720
+ {
63721
+ var yTop=Math.min(ptStart.Y, ptEnd.Y);
63722
+ var yBottom=Math.max(ptStart.Y, ptEnd.Y);
63723
+ var xLeft=Math.min(ptStart.X, ptEnd.X);
63724
+ var xRight=Math.max(ptStart.X, ptEnd.X);
63725
+ var height=yBottom-yTop;
63726
+ //var baseValue=Math.min(this.Value[0].YValue, this.Value[1].YValue);
63727
+ //var diffValue=Math.abs(this.Value[0].YValue-this.Value[1].YValue); //差值
63728
+
63729
+ if (this.ExtendLine.Right) xRight=this.Frame.ChartBorder.GetRight();
63730
+ if (this.ExtendLine.Left) xLeft=this.Frame.ChartBorder.GetLeft();
63731
+
63732
+ var aryArea=this.GetArrayAreaConfig();
63733
+ var yPre=null; //上一个点
63734
+ var clrArea=null;
63735
+ this.Canvas.font=this.Font;
63736
+ if (this.ExtendLine.Left) this.Canvas.textAlign="left";
63737
+ else this.Canvas.textAlign="right";
63738
+ this.Canvas.textBaseline="bottom";
63739
+
63740
+ for(var i=0;i<aryArea.length;++i)
63741
+ {
63742
+ var item=aryArea[i];
63743
+ var y=yBottom-height*item.Value;
63744
+ //var yValue=baseValue+diffValue*item.Value;
63745
+ yValue=this.Frame.GetYData(y,false);
63746
+ y=ToFixedPoint(y);
63747
+ if (this.EnableBGColor && IFrameSplitOperator.IsNumber(yPre))
63748
+ {
63749
+ var rtBG={ Left:xLeft, Right:xRight, Top:yPre, Bottom:y };
63750
+ rtBG.Width=rtBG.Right-rtBG.Left;
63751
+ rtBG.Height=rtBG.Bottom-rtBG.Top;
63752
+ this.Canvas.fillStyle=clrArea;
63753
+ this.Canvas.fillRect(rtBG.Left, rtBG.Top, rtBG.Width, rtBG.Height);
63754
+ }
63755
+
63756
+ this.Canvas.strokeStyle=item.Color;
63757
+ this.Canvas.beginPath();
63758
+ this.Canvas.moveTo(xLeft,y);
63759
+ this.Canvas.lineTo(xRight,y);
63760
+ this.Canvas.stroke();
63761
+
63762
+ var line={ Start:{X:xLeft, Y:y}, End:{X:xRight, Y:y} };
63763
+ this.LinePoint.push(line);
63764
+
63765
+ //文字
63766
+ var text=`${item.Value} (${yValue.toFixed(2)})`;
63767
+ this.Canvas.fillStyle=item.Color;
63768
+ if (this.ExtendLine.Left)
63769
+ this.Canvas.fillText(text,xLeft+2,y-2);
63770
+ else
63771
+ this.Canvas.fillText(text,xLeft-2,y-2);
63772
+
63773
+ yPre=y;
63774
+ clrArea=IChartDrawPicture.ColorToRGBA(item.Color, this.AreaConfig.Opacity);
63775
+ }
63776
+ }
63777
+
63778
+ }
63779
+
63780
+
63781
+ function ChartFibSpeedResistanceFan()
63782
+ {
63783
+ this.newMethod=IChartDrawPicture; //派生
63784
+ this.newMethod();
63785
+ delete this.newMethod;
63786
+
63787
+ this.ClassName='ChartFibSpeedResistanceFan';
63788
+ this.PointCount=2;
63789
+ this.Font=12*GetDevicePixelRatio() +"px 微软雅黑";
63790
+ this.IsPointIn=this.IsPointIn_XYValue_Line;
63791
+ this.GetXYCoordinate=this.GetXYCoordinate_default;
63792
+ this.PointToValue_Default=this.PointToValue;
63793
+ this.OnlyMoveXIndex=true;
63794
+ this.IsSupportMagnet=true;
63795
+ this.LineWidth=1;
63796
+ this.EnableBGColor=true;
63797
+
63798
+ this.AreaConfig=
63799
+ {
63800
+ AryYData:
63801
+ [
63802
+ { Value: 0, Color:"rgb(128,128,128)", Enable:true },
63803
+ { Value: 0.25, Color:"rgb(242,52,69)", Enable:true },
63804
+ { Value: 0.382, Color:"rgb(255,152,0)",Enable:true },
63805
+ { Value: 0.5, Color:"rgb(76,175,80)", Enable:true },
63806
+ { Value: 0.618, Color:"rgb(8,153,129)", Enable:true },
63807
+ { Value: 0.75, Color:"rgb(0,188,212)" ,Enable:true },
63808
+ { Value: 1, Color:"rgb(120,123,134)", Enable:true },
63809
+
63810
+ ],
63811
+
63812
+ AryXData:
63813
+ [
63814
+ { Value: 0, Color:"rgb(128,128,128)", Enable:true },
63815
+ { Value: 0.25, Color:"rgb(242,52,69)", Enable:true },
63816
+ { Value: 0.382, Color:"rgb(255,152,0)",Enable:true },
63817
+ { Value: 0.5, Color:"rgb(76,175,80)", Enable:true },
63818
+ { Value: 0.618, Color:"rgb(8,153,129)", Enable:true },
63819
+ { Value: 0.75, Color:"rgb(0,188,212)" ,Enable:true },
63820
+ { Value: 1, Color:"rgb(120,123,134)", Enable:true },
63821
+ ],
63822
+
63823
+ Opacity:0.3
63824
+ }
63825
+
63826
+ this.Draw=function()
63827
+ {
63828
+ this.LinePoint=[];
63829
+ if (this.IsFrameMinSize()) return;
63830
+ var bCheckXY=false;
63831
+ var drawPoint=this.CalculateDrawPoint( {IsCheckX:bCheckXY, IsCheckY:bCheckXY} );
63832
+ if (!drawPoint) return;
63833
+ if (drawPoint.length!=2) return;
63834
+
63835
+ this.ClipFrame();
63836
+
63837
+ var ptStart=drawPoint[0];
63838
+ var ptEnd=drawPoint[1];
63839
+
63840
+ this.SetLineWidth();
63841
+ this.DrawBlock(ptEnd, ptStart);
63842
+ this.RestoreLineWidth();
63843
+
63844
+ this.DrawPoint(drawPoint); //画点
63845
+ this.Canvas.restore();
63846
+ }
63847
+
63848
+ //获取在第几象限
63849
+ this.GetQuadrant=function(ptStart,ptEnd)
63850
+ {
63851
+ if (ptStart.X<ptEnd.X && ptStart.Y>ptEnd.Y) return 1;
63852
+ else if (ptStart.X>ptEnd.X && ptStart.Y>ptEnd.Y) return 2;
63853
+ else if (ptStart.X<ptEnd.X && ptStart.Y< ptEnd.Y) return 4;
63854
+ else return 3;
63855
+ }
63856
+
63857
+ this.DrawBlock=function(ptStart, ptEnd)
63858
+ {
63859
+ var center=ptEnd;
63860
+ var xDiff=ptEnd.X-ptStart.X;
63861
+ var yDiff=ptEnd.Y-ptStart.Y;
63862
+ var quadrant=this.GetQuadrant(center,ptStart); //象限
63863
+
63864
+ var aryYData=this.GetArrayAreaConfig(this.AreaConfig.AryYData);
63865
+ var ptPre=null; //上一个点
63866
+ var clrArea=null;
63867
+ this.Canvas.font=this.Font;
63868
+ var textOffset=4;
63869
+ if (quadrant==1 || quadrant==4)
63870
+ {
63871
+ this.Canvas.textAlign="right";
63872
+ textOffset=-4;
63873
+ }
63874
+ else
63875
+ {
63876
+ this.Canvas.textAlign="left";
63877
+ textOffset=4;
63878
+ }
63879
+ this.Canvas.textBaseline="middle";
63880
+ for(var i=0;i<aryYData.length;++i)
63881
+ {
63882
+ var item=aryYData[i];
63883
+ var y=item.Value*yDiff+ptStart.Y;
63884
+
63885
+ var pt=this.CalculateExtendLineEndPoint([center, {X:ptStart.X, Y:y}]);
63886
+
63887
+ if (ptPre)
63888
+ {
63889
+ this.Canvas.beginPath();
63890
+ this.Canvas.moveTo(center.X,center.Y);
63891
+ this.Canvas.lineTo(ptPre.X,ptPre.Y);
63892
+ this.Canvas.lineTo(pt.X,pt.Y);
63893
+ this.Canvas.closePath();
63894
+ this.Canvas.fillStyle=clrArea;
63895
+ this.Canvas.fill();
63896
+ }
63897
+
63898
+ this.Canvas.strokeStyle=item.Color;
63899
+ this.Canvas.beginPath();
63900
+ this.Canvas.moveTo(center.X,center.Y);
63901
+ this.Canvas.lineTo(pt.X,pt.Y);
63902
+ this.Canvas.stroke();
63903
+
63904
+ this.LinePoint.push({Start:center, End:pt});
63905
+
63906
+ if (item.Value!=1)
63907
+ {
63908
+ this.Canvas.strokeStyle=this.LineColor;
63909
+ this.Canvas.beginPath();
63910
+ this.Canvas.moveTo(center.X,y);
63911
+ this.Canvas.lineTo(ptStart.X,y);
63912
+ this.Canvas.stroke();
63913
+ }
63914
+
63915
+ ptPre=pt;
63916
+ clrArea=IChartDrawPicture.ColorToRGBA(item.Color, this.AreaConfig.Opacity);
63917
+
63918
+ //文字
63919
+ var text=`${item.Value}`;
63920
+ this.Canvas.fillStyle=item.Color;
63921
+ this.Canvas.fillText(text,center.X+textOffset,y);
63922
+ }
63923
+
63924
+ var aryXData=this.GetArrayAreaConfig(this.AreaConfig.AryXData);
63925
+ var ptPre=null;
63926
+ this.Canvas.textAlign="center";
63927
+ if (quadrant==3 || quadrant==4)
63928
+ {
63929
+ this.Canvas.textBaseline="bottom";
63930
+ textOffset=-5;
63931
+ }
63932
+ else
63933
+ {
63934
+ this.Canvas.textBaseline="top";
63935
+ textOffset=5;
63936
+ }
63937
+
63938
+ for(var i=0;i<aryXData.length;++i)
63939
+ {
63940
+ var item=aryXData[i];
63941
+ var x=item.Value*xDiff+ptStart.X;
63942
+
63943
+ var pt=this.CalculateExtendLineEndPoint([center, {X:x, Y:ptStart.Y}]);
63944
+
63945
+ if (ptPre) //面积
63946
+ {
63947
+ this.Canvas.beginPath();
63948
+ this.Canvas.moveTo(center.X,center.Y);
63949
+ this.Canvas.lineTo(ptPre.X,ptPre.Y);
63950
+ this.Canvas.lineTo(pt.X,pt.Y);
63951
+ this.Canvas.closePath();
63952
+ this.Canvas.fillStyle=clrArea;
63953
+ this.Canvas.fill();
63954
+ }
63955
+
63956
+ this.Canvas.strokeStyle=item.Color;
63957
+ this.Canvas.beginPath();
63958
+ this.Canvas.moveTo(center.X,center.Y);
63959
+ this.Canvas.lineTo(pt.X,pt.Y);
63960
+ this.Canvas.stroke();
63961
+
63962
+ this.LinePoint.push({Start:center, End:pt});
63963
+
63964
+ if (item.Value!=1)
63965
+ {
63966
+ this.Canvas.strokeStyle=this.LineColor;
63967
+ this.Canvas.beginPath();
63968
+ this.Canvas.moveTo(x,center.Y);
63969
+ this.Canvas.lineTo(x,ptStart.Y);
63970
+ this.Canvas.stroke();
63971
+ }
63972
+
63973
+ ptPre=pt;
63974
+ clrArea=IChartDrawPicture.ColorToRGBA(item.Color, this.AreaConfig.Opacity);
63975
+
63976
+ //文字
63977
+ var text=`${item.Value}`;
63978
+ this.Canvas.fillStyle=item.Color;
63979
+ this.Canvas.fillText(text,x,center.Y+textOffset);
63980
+ }
63981
+ }
63982
+
63983
+ this.GetArrayAreaConfig=function(aryData)
63984
+ {
63985
+ var aryArea=[];
63986
+ for(var i=0;i<aryData.length;++i)
63987
+ {
63988
+ var item=aryData[i];
63989
+ if (item.Enable) aryArea.push(item);
63990
+ }
63991
+
63992
+ aryArea.sort((left,right)=>{ return right.Value-left.Value; })
63993
+
63994
+ return aryArea;
63995
+ }
63996
+
63997
+ }
63998
+
63540
63999
  function ChartDrawStorage()
63541
64000
  {
63542
64001
  this.DrawData=new Map(); //画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{Guid, Symbol, Period, ClassName, Value}
@@ -74922,7 +75381,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
74922
75381
  if (moveSetp<5 && yMoveSetp<5) return;
74923
75382
  if (!this.EnableSelectRect) return;
74924
75383
 
74925
- this.UIElement.style.cursor="default";
75384
+ //this.UIElement.style.cursor="default";
75385
+ this.SetCursor({Cursor:"default"});
74926
75386
  var x=drag.Click.X-uielement.getBoundingClientRect().left;
74927
75387
  var y=drag.Click.Y-uielement.getBoundingClientRect().top;
74928
75388
  var x2=e.clientX-uielement.getBoundingClientRect().left;
@@ -89864,7 +90324,7 @@ function MinuteCoordinateData()
89864
90324
  {
89865
90325
  Full: //完整模式
89866
90326
  [
89867
- [0, 0, "rgb(200,200,200)", "09:30"], //[0]=索引 [1]=线段类型 [2]=文字颜色(弃用) [3]=刻度文字 [4]=线段颜色
90327
+ [0, 0, "rgb(200,200,200)", "09:30"], //[0]=索引 [1]=线段类型 [2]=文字颜色(弃用) [3]=刻度文字 [4]=线段颜色 [5]=背景色
89868
90328
  [31, 0, "RGB(200,200,200)", "10:00"],
89869
90329
  [61, 0, "RGB(200,200,200)", "10:30"],
89870
90330
  [91, 0, "RGB(200,200,200)", "11:00"],
@@ -128580,7 +129040,7 @@ function HQChartScriptWorker()
128580
129040
 
128581
129041
 
128582
129042
 
128583
- var HQCHART_VERSION="1.1.12512";
129043
+ var HQCHART_VERSION="1.1.12521";
128584
129044
 
128585
129045
  function PrintHQChartVersion()
128586
129046
  {