hqchart 1.1.13403 → 1.1.13409

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.
@@ -4040,6 +4040,17 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4040
4040
  if (IFrameSplitOperator.IsNumber(option.ZIndex)) element.style["z-index"]=option.ZIndex;
4041
4041
  }
4042
4042
 
4043
+ if (this.CanvasElement)
4044
+ {
4045
+ element.height=this.CanvasElement.height;
4046
+ element.width=this.CanvasElement.width;
4047
+ if (element.style)
4048
+ {
4049
+ element.style.width=this.CanvasElement.style.width;
4050
+ element.style.height=this.CanvasElement.style.height
4051
+ }
4052
+ }
4053
+
4043
4054
  divElement.appendChild(element);
4044
4055
 
4045
4056
  var item={ Element:element, Canvas:null };
@@ -4376,6 +4387,22 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4376
4387
  }
4377
4388
  }
4378
4389
 
4390
+ if (chart.ClassName=="KLineChartContainer")
4391
+ {
4392
+ if (!option.DragSelectRect)
4393
+ {
4394
+ option.DragSelectRect={ Enable:true }; //默认开启区间选中画布
4395
+ }
4396
+
4397
+ if (option.DragSelectRect)
4398
+ {
4399
+ var zindex=10;
4400
+ var item=option.DragSelectRect;
4401
+ if (IFrameSplitOperator.IsNumber(item.ZIndex)) zindex=item.ZIndex;
4402
+ if (item.Enable) this.CreateExtraCanvasElement(JSChart.RectDragCanvasKey, { ZIndex:zindex }); //创建独立的区间选择画布
4403
+ }
4404
+ }
4405
+
4379
4406
  //创建子窗口
4380
4407
  chart.Create(option.Windows.length, option);
4381
4408
 
@@ -4383,6 +4410,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4383
4410
 
4384
4411
  this.AdjustChartBorder(chart);
4385
4412
 
4413
+
4386
4414
  if (option.KLine)
4387
4415
  {
4388
4416
  if (option.KLine.PageSize > 0) //一屏显示的数据个数
@@ -4855,6 +4883,22 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4855
4883
  if (IFrameSplitOperator.IsBool(item.EnableMoveOn)) chart.SelectedChart.EnableMoveOn=item.EnableMoveOn;
4856
4884
  }
4857
4885
 
4886
+ if (chart.ClassName=="MinuteChartContainer")
4887
+ {
4888
+ if (!option.DragSelectRect)
4889
+ {
4890
+ option.DragSelectRect={ Enable:true }; //默认开启区间选中画布
4891
+ }
4892
+
4893
+ if (option.DragSelectRect)
4894
+ {
4895
+ var item=option.DragSelectRect;
4896
+ var zindex=10;
4897
+ if (IFrameSplitOperator.IsNumber(item.ZIndex)) zindex=item.ZIndex;
4898
+ if (item.Enable) this.CreateExtraCanvasElement(JSChart.RectDragCanvasKey, { ZIndex:zindex }); //创建独立的区间选择画布
4899
+ }
4900
+ }
4901
+
4858
4902
  //分页
4859
4903
  if (option.PageInfo) chart.SetPageInfo(option.PageInfo);
4860
4904
 
@@ -6108,6 +6152,7 @@ JSChart.LastVersion=null; //最新的版本号
6108
6152
  JSChart.EnableCanvasWillReadFrequently=false; //https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently
6109
6153
  JSChart.CorssCursorCanvasKey="hqchart_corsscursor";
6110
6154
  JSChart.TooltipCursorCanvasKey="hqchart_tooltip";
6155
+ JSChart.RectDragCanvasKey="hqchart_drag_rect";
6111
6156
 
6112
6157
  //初始化
6113
6158
  JSChart.Init=function(divElement,bScreen,bCacheCanvas)
@@ -6651,6 +6696,8 @@ var JSCHART_MENU_ID=
6651
6696
  CMD_ADD_OVERLAY_INDEX_ID:36, //添加叠加指标
6652
6697
 
6653
6698
  CMD_CHANGE_LANGUAGE_ID:37, //语言切换
6699
+
6700
+ CMD_CHANGE_DRAG_RECT_SHOW_MODE_ID:38,
6654
6701
  }
6655
6702
 
6656
6703
 
@@ -6734,6 +6781,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6734
6781
  this.EnableShowCorssCursor={ DrawPicture:true }; //DrawPicture=画图是否显示十字光标
6735
6782
  this.ChartPictureMenu; //画图工具 单个图形设置菜单
6736
6783
  this.ChartCorssCursor; //十字光标
6784
+ this.ChartDragSelectRect; //选择区间选中
6737
6785
  this.IsClickShowCorssCursor=false; //手势点击显示十字光标
6738
6786
  this.ChartSplashPaint=null; //等待提示
6739
6787
  this.LoadDataSplashTitle="数据加载中"; //下载数据提示信息
@@ -6807,16 +6855,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6807
6855
  this.IsShowTooltip=true; //是否显示K线tooltip
6808
6856
  this.TooltipCache={ Type:null, IsShow:false, X:null, Y:null, Data:null, InnerHTML:null }; //缓存tooltip数据
6809
6857
 
6810
- //区间选择
6811
- this.SelectRect=document.createElement("div");
6812
- this.SelectRect.className="jschart-selectrect";
6813
- this.SelectRect.style.background=g_JSChartResource.SelectRectBGColor;
6814
- this.SelectRect.style["pointer-events"]="none";
6815
- //this.SelectRect.style.opacity=g_JSChartResource.SelectRectAlpha;
6816
- this.SelectRect.id=Guid();
6817
- this.SelectRect.oncontextmenu=function() { return false; }; //屏蔽选中区域系统右键菜单
6818
- uielement.parentNode.appendChild(this.SelectRect);
6819
-
6820
6858
  //坐标轴风格方法 double-更加数值型分割 price-更加股票价格分割
6821
6859
  this.FrameSplitData=new Map();
6822
6860
  this.FrameSplitData.set("double",new SplitData());
@@ -7374,6 +7412,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7374
7412
  }
7375
7413
 
7376
7414
  this.HideSelectRect();
7415
+ this.ClearDragSelectRect();
7377
7416
  if (this.ChartPictureMenu) this.ChartPictureMenu.Hide();
7378
7417
 
7379
7418
  var paint=this.GetRectSelectPaint();
@@ -7777,13 +7816,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7777
7816
 
7778
7817
  if (moveSetp<5 && yMoveSetp<5) return;
7779
7818
 
7780
- //this.UIElement.style.cursor="default";
7781
7819
  this.SetCursor({Cursor:"default"});
7782
- var x=drag.Click.X-uielement.getBoundingClientRect().left;
7783
- var y=drag.Click.Y-uielement.getBoundingClientRect().top;
7784
- var x2=e.clientX-uielement.getBoundingClientRect().left;
7785
- var y2=e.clientY-uielement.getBoundingClientRect().top;
7786
- this.ShowSelectRect(x,y,x2,y2);
7820
+ var ptStart=this.PointAbsoluteToRelative(drag.Click.X, drag.Click.Y);
7821
+ var ptEnd=this.PointAbsoluteToRelative(e.clientX, e.clientY);
7822
+
7823
+ this.ShowDragSelectRect(ptStart, ptEnd);
7787
7824
 
7788
7825
  drag.LastMove.X=e.clientX;
7789
7826
  drag.LastMove.Y=e.clientY;
@@ -7995,7 +8032,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7995
8032
  selectData.JSChartContainer=this;
7996
8033
  selectData.Stock={Symbol:this.Symbol, Name:this.Name};
7997
8034
 
7998
- if (!this.BorderDrag && this.GetSelectRectData(selectData))
8035
+ if (this.ChartDragSelectRect.Enable && !this.BorderDrag && this.GetSelectRectData(selectData))
7999
8036
  {
8000
8037
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SELECT_RECT);
8001
8038
  var paint=this.GetRectSelectPaint();
@@ -8006,7 +8043,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8006
8043
  {
8007
8044
  X:drag.LastMove.X-uielement.getBoundingClientRect().left,
8008
8045
  Y:drag.LastMove.Y-uielement.getBoundingClientRect().top,
8009
- SelectData:selectData, //区间选择的数据
8046
+ SelectData:selectData, //区间选择的数据
8010
8047
  RectSelectPaint:paint, //区间选择背景
8011
8048
  IsShowMenu:true,
8012
8049
  e,e
@@ -9085,6 +9122,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9085
9122
  }
9086
9123
  }
9087
9124
 
9125
+ //清空画布
9126
+ this.ClearCanvas=function(canvas)
9127
+ {
9128
+ if (!canvas) return;
9129
+ if (!this.UIElement) return;
9130
+
9131
+ canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);
9132
+ }
9133
+
9088
9134
  this.Draw=function()
9089
9135
  {
9090
9136
  if (this.ChartCorssCursor) this.ChartCorssCursor.Status=0;
@@ -10923,36 +10969,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10923
10969
  if (this.Tooltip.style.display!="none") this.Tooltip.style.display = "none";
10924
10970
  }
10925
10971
 
10926
- this.ShowSelectRect=function(x,y,x2,y2)
10927
- {
10928
- var left = x;
10929
- var top = y;
10930
-
10931
- var border=this.Frame.ChartBorder.GetBorder();
10932
-
10933
- var borderRight=border.Right;
10934
- var borderLeft=border.Left;
10935
-
10936
- if (x>borderRight) x=borderRight;
10937
- if (x2>borderRight) x2=borderRight;
10938
-
10939
- if (x<borderLeft) x=borderLeft;
10940
- if (x2<borderLeft) x2=borderLeft;
10941
-
10942
- if (x>x2) left=x2;
10943
- if (y>y2) top=y2;
10944
-
10945
- var width=Math.abs(x-x2);
10946
- var height=Math.abs(y-y2);
10947
-
10948
- this.SelectRect.style.width = width+"px";
10949
- this.SelectRect.style.height =height+"px";
10950
- this.SelectRect.style.position = "absolute";
10951
- this.SelectRect.style.left = left +"px";
10952
- this.SelectRect.style.top = top +"px";
10953
- this.SelectRect.style.display = "block";
10954
- }
10955
-
10956
10972
  this.UpdateSelectRect=function(start,end)
10957
10973
  {
10958
10974
  if (!this.ChartPaint[0].Data) return;
@@ -10972,7 +10988,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10972
10988
 
10973
10989
  this.HideSelectRect=function()
10974
10990
  {
10975
- this.SelectRect.style.display = "none";
10991
+ this.ClearDragSelectRect();
10976
10992
  }
10977
10993
 
10978
10994
  this.ResetFrameXYSplit=function()
@@ -11767,11 +11783,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11767
11783
 
11768
11784
  this.ReloadExtendChartPaintResource=function(resource) //扩展画法重新加载配置
11769
11785
  {
11770
- for(var i in this.ExtendChartPaint)
11786
+ for(var i=0;i<this.ExtendChartPaint.length; ++i)
11771
11787
  {
11772
11788
  var item=this.ExtendChartPaint[i];
11773
11789
  if (item.ReloadResource) item.ReloadResource(resource);
11774
11790
  }
11791
+
11792
+ if (this.ChartDragSelectRect && this.ChartDragSelectRect.ReloadResource) this.ChartDragSelectRect.ReloadResource(resource);
11775
11793
  }
11776
11794
 
11777
11795
  this.ReloadChartDrawPictureResource=function(resource)
@@ -12472,14 +12490,19 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12472
12490
  //区间选择
12473
12491
  this.GetRectSelectPaint=function()
12474
12492
  {
12475
- for(var i=0;i<this.ExtendChartPaint.length;++i)
12476
- {
12477
- var item=this.ExtendChartPaint[i];
12478
- if (item.ClassName=="RectSelectPaint")
12479
- return item;
12480
- }
12493
+ var finder=this.GetExtendChartByClassName("RectSelectPaint");
12494
+ if (!finder) return null;
12481
12495
 
12482
- return null;
12496
+ return finder.Chart;
12497
+ }
12498
+
12499
+ //鼠标拖动区域
12500
+ this.GetRectDragPaint=function()
12501
+ {
12502
+ var finder=this.GetExtendChartByClassName("RectDragPaint");
12503
+ if (!finder) return null;
12504
+
12505
+ return finder.Chart;
12483
12506
  }
12484
12507
 
12485
12508
  this.SetRectSelectData=function(kItem, index)
@@ -13445,6 +13468,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13445
13468
  case JSCHART_MENU_ID.CMD_CHANGE_LANGUAGE_ID:
13446
13469
  if (srcParam) this.SetLanguage(srcParam);
13447
13470
  break;
13471
+
13472
+ case JSCHART_MENU_ID.CMD_CHANGE_DRAG_RECT_SHOW_MODE_ID:
13473
+ if (param!=null)
13474
+ {
13475
+ if (this.ChartDragSelectRect) this.ChartDragSelectRect.ShowMode=param;
13476
+ }
13477
+ break;
13448
13478
  }
13449
13479
  }
13450
13480
 
@@ -13588,6 +13618,37 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13588
13618
  {
13589
13619
  this.CurrentChartDrawPicture=null;
13590
13620
  }
13621
+
13622
+
13623
+ this.CreateDragSelectRect=function(option)
13624
+ {
13625
+ var chart=g_ExtendChartPaintFactory.Create("RectDragPaint",option);
13626
+ if (!chart) return null;
13627
+
13628
+ if (option && option.Enable===true) chart.Enable=true;
13629
+ chart.ChartBorder=this.Frame.ChartBorder;
13630
+ chart.ChartFrame=this.Frame;
13631
+ chart.HQChart=this;
13632
+ chart.SetOption(option);
13633
+
13634
+ this.ChartDragSelectRect=chart;
13635
+ }
13636
+
13637
+ this.ClearDragSelectRect=function()
13638
+ {
13639
+ if (!this.ChartDragSelectRect) return;
13640
+
13641
+ this.ChartDragSelectRect.ClearPoint();
13642
+ }
13643
+
13644
+ this.ShowDragSelectRect=function(ptStart, ptEnd)
13645
+ {
13646
+ if (!this.ChartDragSelectRect) return;
13647
+
13648
+ this.ChartDragSelectRect.SetFirstPoint(ptStart.X, ptStart.Y);
13649
+ this.ChartDragSelectRect.SetSecondPoint(ptEnd.X, ptEnd.Y);
13650
+ this.ChartDragSelectRect.Draw();
13651
+ }
13591
13652
  }
13592
13653
 
13593
13654
  function GetDevicePixelRatio()
@@ -23644,6 +23705,8 @@ function HistoryData()
23644
23705
  this.BFactor; //前复权
23645
23706
  this.AFactor; //后复权
23646
23707
 
23708
+ this.RightSeed; //本地计算的复权系数
23709
+
23647
23710
  /*
23648
23711
  {
23649
23712
  PriceOffset: 每个单元的价格间距,
@@ -24649,7 +24712,10 @@ function ChartData()
24649
24712
  for(--index; index>=0; --index)
24650
24713
  {
24651
24714
  if (yClose!=this.Data[index].Close) break;
24652
- result[index]=HistoryData.Copy(this.Data[index]);
24715
+ var newItem=HistoryData.Copy(this.Data[index]);
24716
+ newItem.RightSeed=seed;
24717
+ result[index]=newItem;
24718
+
24653
24719
  yClose=this.Data[index].YClose;
24654
24720
  }
24655
24721
 
@@ -24659,7 +24725,9 @@ function ChartData()
24659
24725
  if(yClose!=value && value!=0)
24660
24726
  seed *= yClose/value;
24661
24727
 
24662
- result[index]=HistoryData.CopyRight(this.Data[index],seed);
24728
+ var newItem=HistoryData.CopyRight(this.Data[index],seed);
24729
+ newItem.RightSeed=seed;
24730
+ result[index]=newItem
24663
24731
 
24664
24732
  yClose=this.Data[index].YClose;
24665
24733
  }
@@ -24674,7 +24742,9 @@ function ChartData()
24674
24742
  for(++index;index<this.Data.length;++index)
24675
24743
  {
24676
24744
  if (close!=this.Data[index].YClose) break;
24677
- result[index]=HistoryData.Copy(this.Data[index]);
24745
+ var newItem=HistoryData.Copy(this.Data[index]);
24746
+ newItem.RightSeed=seed;
24747
+ result[index]=newItem;
24678
24748
  close=this.Data[index].Close;
24679
24749
  }
24680
24750
 
@@ -24683,7 +24753,9 @@ function ChartData()
24683
24753
  if(close!=this.Data[index].YClose)
24684
24754
  seed *= close/this.Data[index].YClose;
24685
24755
 
24686
- result[index]=HistoryData.CopyRight(this.Data[index],seed);
24756
+ var newItem=HistoryData.CopyRight(this.Data[index],seed);
24757
+ newItem.RightSeed=seed;
24758
+ result[index]=newItem;
24687
24759
 
24688
24760
  close=this.Data[index].Close;
24689
24761
  }
@@ -44274,6 +44346,7 @@ function ExtendChartPaintFactory()
44274
44346
  [
44275
44347
  ["FrameSplitPaint", { Create:function() { return new FrameSplitPaint(); } }],
44276
44348
  ["RectSelectPaint", { Create:function() { return new RectSelectPaint(); } }],
44349
+ ["RectDragPaint", { Create:function() { return new RectDragPaint(); } }],
44277
44350
  ["DragMovePaint", { Create:function() { return new DragMovePaint(); } }],
44278
44351
  ["SessionBreaksPaint", { Create:function() { return new SessionBreaksPaint(); }}],
44279
44352
  ["FrameButtomToolbarPaint", {Create:function() { return new FrameButtomToolbarPaint(); }}]
@@ -47260,6 +47333,189 @@ function RectSelectPaint()
47260
47333
  }
47261
47334
  }
47262
47335
  }
47336
+
47337
+ //鼠标拖动选中区域
47338
+ function RectDragPaint()
47339
+ {
47340
+ this.newMethod=IExtendChartPainting; //派生
47341
+ this.newMethod();
47342
+ delete this.newMethod;
47343
+
47344
+ this.ClassName='RectDragPaint';
47345
+ this.LineColor=g_JSChartResource.RectDrag.LineColor; //竖线
47346
+ this.LineWidth=g_JSChartResource.RectDrag.LineWidth;
47347
+ this.BGColor=g_JSChartResource.RectDrag.BGColor;
47348
+ this.ShowMode=0; //0=只画边框 1=遮挡未选中区域 2=整体全选
47349
+ this.Enable=false;
47350
+
47351
+ this.FirstPoint;
47352
+ this.SecondPoint;
47353
+
47354
+ this.IsClearCanvas=true; //画布是否是清空状态
47355
+
47356
+ //设置参数接口
47357
+ this.SetOption=function(option)
47358
+ {
47359
+ if (option)
47360
+ {
47361
+ if (option.LineColor) this.LineColor=option.LineColor;
47362
+ if (option.BGColor) this.BGColor=option.BGColor;
47363
+ if (IFrameSplitOperator.IsNumber(option.ShowMode)) this.ShowMode=option.ShowMode;
47364
+ }
47365
+ }
47366
+
47367
+ this.ReloadResource=function(resource)
47368
+ {
47369
+ this.LineColor=g_JSChartResource.RectDrag.LineColor; //竖线
47370
+ this.LineWidth=g_JSChartResource.RectDrag.LineWidth;
47371
+ this.BGColor=g_JSChartResource.RectDrag.BGColor; //面积
47372
+ }
47373
+
47374
+ this.ClearPoint=function()
47375
+ {
47376
+ this.FirstPoint=null;
47377
+ this.SecondPoint=null;
47378
+
47379
+ if (!this.IsClearCanvas) this.Draw();
47380
+ }
47381
+
47382
+ this.SetFirstPoint=function(x, y)
47383
+ {
47384
+ this.FirstPoint={ X:x, Y:y };
47385
+ }
47386
+
47387
+ this.SetSecondPoint=function(x, y)
47388
+ {
47389
+ this.SecondPoint={ X:x, Y:y };
47390
+ }
47391
+
47392
+ this.DrawSelectedBorderMode=function(rtSelect)
47393
+ {
47394
+ this.Canvas.strokeStyle=this.LineColor;
47395
+ this.Canvas.strokeRect(ToFixedPoint(rtSelect.Left),ToFixedPoint(rtSelect.Top),ToFixedRect(rtSelect.Width),ToFixedRect(rtSelect.Height));
47396
+ }
47397
+
47398
+ this.DrawUnselectedMaskMode=function(rtSelect, rtClient)
47399
+ {
47400
+ if (this.BGColor)
47401
+ {
47402
+ this.Canvas.save();
47403
+
47404
+ var clipPath=new Path2D();
47405
+ clipPath.rect(rtClient.Left, rtClient.Top, rtClient.Width, rtSelect.Top-rtClient.Top);
47406
+
47407
+ var leftPath=new Path2D();
47408
+ leftPath.rect(rtClient.Left,rtSelect.Top, rtSelect.Left-rtClient.Left, rtSelect.Height);
47409
+ clipPath.addPath(leftPath);
47410
+
47411
+ var rightPath=new Path2D();
47412
+ rightPath.rect(rtSelect.Right,rtSelect.Top, rtClient.Right-rtSelect.Right, rtSelect.Height);
47413
+ clipPath.addPath(rightPath);
47414
+
47415
+ var bottmPath=new Path2D();
47416
+ bottmPath.rect(rtClient.Left,rtSelect.Bottom, rtClient.Width, rtClient.Bottom-rtSelect.Bottom);
47417
+ clipPath.addPath(bottmPath);
47418
+
47419
+ this.Canvas.clip(clipPath);
47420
+
47421
+ this.Canvas.fillStyle=this.BGColor;
47422
+ this.Canvas.fillRect(rtClient.Left,rtClient.Top,rtClient.Width,rtClient.Height);
47423
+
47424
+ this.Canvas.restore();
47425
+ }
47426
+
47427
+ this.Canvas.strokeStyle=this.LineColor;
47428
+ this.Canvas.strokeRect(ToFixedPoint(rtSelect.Left),ToFixedPoint(rtSelect.Top),ToFixedRect(rtSelect.Width),ToFixedRect(rtSelect.Height));
47429
+ }
47430
+
47431
+ this.DrawFullselectedMode=function(rtSelect, rtClient)
47432
+ {
47433
+ if (this.BGColor)
47434
+ {
47435
+ this.Canvas.save();
47436
+
47437
+ var clipPath=new Path2D();
47438
+ clipPath.rect(rtClient.Left, rtClient.Top, rtSelect.Left-rtClient.Left, rtClient.Height);
47439
+
47440
+ var rightPath=new Path2D();
47441
+ rightPath.rect(rtSelect.Right,rtClient.Top, rtClient.Right-rtSelect.Right, rtClient.Height);
47442
+ clipPath.addPath(rightPath);
47443
+
47444
+ this.Canvas.clip(clipPath);
47445
+
47446
+ this.Canvas.fillStyle=this.BGColor;
47447
+ this.Canvas.fillRect(rtClient.Left,rtClient.Top,rtClient.Width,rtClient.Height);
47448
+
47449
+ this.Canvas.restore();
47450
+ }
47451
+
47452
+ this.Canvas.strokeStyle=this.LineColor;
47453
+ this.Canvas.strokeRect(ToFixedPoint(rtSelect.Left),ToFixedPoint(rtClient.Top),ToFixedRect(rtSelect.Width),ToFixedRect(rtClient.Height));
47454
+ }
47455
+
47456
+ this.Draw=function()
47457
+ {
47458
+ if (!this.Enable) return;
47459
+ if (!this.HQChart) return;
47460
+
47461
+ var finder=this.HQChart.GetExtraCanvas(JSChart.RectDragCanvasKey);
47462
+ if (!finder) return;
47463
+
47464
+ this.Canvas=finder.Canvas;
47465
+ this.HQChart.ClearCanvas(this.Canvas);
47466
+ this.IsClearCanvas=true;
47467
+
47468
+ if (!this.FirstPoint && !this.SecondPoint) return;
47469
+
47470
+ var top=this.ChartBorder.GetTop();
47471
+ var bottom=this.ChartBorder.GetBottom();
47472
+ var left=this.ChartBorder.GetLeft();
47473
+ var right=this.ChartBorder.GetRight();
47474
+
47475
+ var rtClient={Left:left, Top:top, Right:right, Bottom:bottom };
47476
+ rtClient.Width=rtClient.Right-rtClient.Left;
47477
+ rtClient.Height=rtClient.Bottom-rtClient.Top;
47478
+
47479
+ var rtSelect=
47480
+ {
47481
+ Left:Math.min(this.FirstPoint.X,this.SecondPoint.X),
47482
+ Right:Math.max(this.FirstPoint.X,this.SecondPoint.X),
47483
+ Top:Math.min(this.FirstPoint.Y,this.SecondPoint.Y),
47484
+ Bottom:Math.max(this.FirstPoint.Y,this.SecondPoint.Y)
47485
+ }
47486
+
47487
+ if (rtSelect.Top<top) rtSelect.Top=top;
47488
+ else if (rtSelect.Top>bottom) rtSelect.Top=bottom;
47489
+ if (rtSelect.Bottom<top) rtSelect.Bottom=top;
47490
+ else if (rtSelect.Bottom>bottom) rtSelect.Bottom=bottom;
47491
+
47492
+ if (rtSelect.Left<left) rtSelect.Left=left;
47493
+ else if (rtSelect.Left>right) rtSelect.Left=right;
47494
+ if (rtSelect.Right<left) rtSelect.Right=left;
47495
+ else if (rtSelect.Right>right) rtSelect.Right=right;
47496
+
47497
+ rtSelect.Width=rtSelect.Right-rtSelect.Left;
47498
+ rtSelect.Height=rtSelect.Bottom-rtSelect.Top;
47499
+
47500
+ switch(this.ShowMode)
47501
+ {
47502
+ case 1:
47503
+ this.DrawUnselectedMaskMode(rtSelect,rtClient);
47504
+ break;
47505
+ case 2:
47506
+ this.DrawFullselectedMode(rtSelect,rtClient);
47507
+ break;
47508
+ default:
47509
+ this.DrawSelectedBorderMode(rtSelect);
47510
+ break;
47511
+ }
47512
+
47513
+
47514
+
47515
+ this.IsClearCanvas=false;
47516
+ }
47517
+ }
47518
+
47263
47519
  //深度图 支持横屏
47264
47520
  /*
47265
47521
  数据格式:
@@ -61362,8 +61618,8 @@ function ChartDrawHLine()
61362
61618
  var bottom=this.Frame.ChartBorder.GetBottomEx();
61363
61619
  var pixelTatio = GetDevicePixelRatio();
61364
61620
 
61365
- if (IFrameSplitOperator.IsNumber(labInfo.TopOffset)) top-=labInfo.TopOffset;
61366
- if (IFrameSplitOperator.IsNumber(labInfo.BottomOffset)) bottom+=labInfo.BottomOffset;
61621
+ if (labInfo && IFrameSplitOperator.IsNumber(labInfo.TopOffset)) top-=labInfo.TopOffset;
61622
+ if (labInfo && IFrameSplitOperator.IsNumber(labInfo.BottomOffset)) bottom+=labInfo.BottomOffset;
61367
61623
 
61368
61624
  var yValue=this.Frame.GetYData(y,false);
61369
61625
  var strValue=yValue.toFixed(this.Precision);
@@ -70440,6 +70696,7 @@ function JSChartResource()
70440
70696
  RangeTextSubBGColor:'rgb(54,54,54)',
70441
70697
  }
70442
70698
 
70699
+ //选中图形
70443
70700
  this.SelectedChart=
70444
70701
  {
70445
70702
  LineWidth:1,
@@ -70449,6 +70706,14 @@ function JSChartResource()
70449
70706
  BGColor:"rgb(255,255,255)"
70450
70707
  }
70451
70708
 
70709
+ //鼠标区间选中
70710
+ this.RectDrag=
70711
+ {
70712
+ LineColor:"rgb(0,0,0)", //竖线
70713
+ LineWidth:1*GetDevicePixelRatio(),
70714
+ BGColor:"rgba(128,128,128,0.2)", //面积
70715
+ }
70716
+
70452
70717
  this.DragMovePaint=
70453
70718
  {
70454
70719
  TextColor:"rgb(0,0,0)",
@@ -71182,6 +71447,16 @@ function JSChartResource()
71182
71447
  if (item.RangeTextSubBGColor) this.RectSelect.RangeTextSubBGColor=item.RangeTextSubBGColor;
71183
71448
  }
71184
71449
 
71450
+ if (style.RectDrag)
71451
+ {
71452
+ var item=style.RectDrag;
71453
+ var dest=this.RectDrag;
71454
+
71455
+ if (item.LineColor) dest.LineColor=item.LineColor;
71456
+ if (IFrameSplitOperator.IsPlusNumber(item.LineWidth)) dest.LineWidth=item.LineWidth;
71457
+ if (item.BGColor) dest.BGColor=item.BGColor;
71458
+ }
71459
+
71185
71460
  if (style.OrderFlow)
71186
71461
  {
71187
71462
  item=style.OrderFlow;
@@ -73577,6 +73852,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
73577
73852
  this.CreateMainKLine();
73578
73853
  this.CreateExtendChart("RectSelectPaint", option? option.SelectRect:null); //区间统计
73579
73854
  if (this.EnableIndexChartDrag) this.CreateExtendChart("DragMovePaint");
73855
+ this.CreateDragSelectRect(option? option.DragSelectRect:null);
73580
73856
 
73581
73857
  //子窗口动态标题
73582
73858
  for(var i in this.Frame.SubFrame)
@@ -73617,6 +73893,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
73617
73893
  if (bRegisterWheel) this.UIElement.addEventListener("wheel", (e)=>{ this.OnWheel(e); }, true); //上下滚动消息
73618
73894
  }
73619
73895
 
73896
+
73897
+
73620
73898
  this.OnCustomKeyDown=function(keyID, e) //自定义键盘事件
73621
73899
  {
73622
73900
  if (keyID==37 && e.ctrlKey) //Ctrl+Left
@@ -78389,7 +78667,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
78389
78667
 
78390
78668
  { Name:"禁止拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[0]}, Checked:0==this.DragMode },
78391
78669
  { Name:"启动拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1]}, Checked:1==this.DragMode },
78392
- { Name:"区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[2]}, Checked:2==this.DragMode },
78670
+ { Name:"左键区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[2]}, Checked:2==this.DragMode },
78393
78671
  { Name:JSPopMenu.SEPARATOR_LINE_NAME },
78394
78672
 
78395
78673
  { Name:"背景分割", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID, Args:[!bBGSpit]}, Checked:bBGSpit},
@@ -78415,6 +78693,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
78415
78693
  { Name:"繁体", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_LANGUAGE_ID, Args:["TC"]}, Checked:this.LanguageID==JSCHART_LANGUAGE_ID.LANGUAGE_TRADITIONAL_CHINESE_ID },
78416
78694
  ]
78417
78695
  },
78696
+ {
78697
+ Name:"区间选择样式",
78698
+ SubMenu:
78699
+ [
78700
+ { Name:"样式1(默认)", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_RECT_SHOW_MODE_ID, Args:[0]}, Checked:0==this.ChartDragSelectRect.ShowMode },
78701
+ { Name:"样式2", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_RECT_SHOW_MODE_ID, Args:[1]}, Checked:1==this.ChartDragSelectRect.ShowMode },
78702
+ { Name:"样式3", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_RECT_SHOW_MODE_ID, Args:[2]}, Checked:2==this.ChartDragSelectRect.ShowMode },
78703
+ ]
78704
+ }
78418
78705
  ]
78419
78706
  }
78420
78707
  ];
@@ -80784,11 +81071,10 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
80784
81071
 
80785
81072
  //this.UIElement.style.cursor="default";
80786
81073
  this.SetCursor({Cursor:"default"});
80787
- var x=drag.Click.X-uielement.getBoundingClientRect().left;
80788
- var y=drag.Click.Y-uielement.getBoundingClientRect().top;
80789
- var x2=e.clientX-uielement.getBoundingClientRect().left;
80790
- var y2=e.clientY-uielement.getBoundingClientRect().top;
80791
- this.ShowSelectRect(x,y,x2,y2);
81074
+ var ptStart=this.PointAbsoluteToRelative(drag.Click.X, drag.Click.Y);
81075
+ var ptEnd=this.PointAbsoluteToRelative(e.clientX, e.clientY);
81076
+
81077
+ this.ShowDragSelectRect(ptStart, ptEnd);
80792
81078
 
80793
81079
  drag.LastMove.X=e.clientX;
80794
81080
  drag.LastMove.Y=e.clientY;
@@ -81959,6 +82245,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
81959
82245
  SubMenu:
81960
82246
  [
81961
82247
  { Name:"画图工具", Data:{ ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID, Args:[]}, Checked:this.IsShowDrawToolDialog()},
82248
+
82249
+ {
82250
+ Name:"区间选择样式",
82251
+ SubMenu:
82252
+ [
82253
+ { Name:"样式1(默认)", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_RECT_SHOW_MODE_ID, Args:[0]}, Checked:0==this.ChartDragSelectRect.ShowMode },
82254
+ { Name:"样式2", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_RECT_SHOW_MODE_ID, Args:[1]}, Checked:1==this.ChartDragSelectRect.ShowMode },
82255
+ { Name:"样式3", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_RECT_SHOW_MODE_ID, Args:[2]}, Checked:2==this.ChartDragSelectRect.ShowMode },
82256
+ ]
82257
+ }
81962
82258
  ]
81963
82259
  }
81964
82260
 
@@ -82149,6 +82445,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
82149
82445
  this.CreateMainKLine();
82150
82446
  this.CreateExtendChart("RectSelectPaint", option? option.SelectRect:null); //区间统计
82151
82447
  if (this.EnableIndexChartDrag) this.CreateExtendChart("DragMovePaint");
82448
+ this.CreateDragSelectRect(option? option.DragSelectRect:null);
82152
82449
 
82153
82450
  //子窗口动态标题
82154
82451
  for(var i=0;i<this.Frame.SubFrame.length; ++i)
@@ -122757,6 +123054,13 @@ function GetBlackStyle()
122757
123054
  AreaColor:"rgba(26,13,7,0.5)", //面积
122758
123055
  },
122759
123056
 
123057
+ RectDrag:
123058
+ {
123059
+ LineColor:"rgb(220,220,220)",
123060
+ LineWidth:1*GetDevicePixelRatio(),
123061
+ BGColor:"rgba(220,220,220,0.2)", //面积
123062
+ },
123063
+
122760
123064
  SelectedChart:
122761
123065
  {
122762
123066
  LineWidth:1,
@@ -137670,7 +137974,7 @@ function HQChartScriptWorker()
137670
137974
 
137671
137975
 
137672
137976
 
137673
- var HQCHART_VERSION="1.1.13402";
137977
+ var HQCHART_VERSION="1.1.13408";
137674
137978
 
137675
137979
  function PrintHQChartVersion()
137676
137980
  {