hqchart 1.1.14591 → 1.1.14598

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.
@@ -7246,7 +7246,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7246
7246
  Wheel:false, WheelYMove:5 //是否可以滚轴缩放Y轴最大最小值
7247
7247
  };
7248
7248
 
7249
- this.EnableXDrag={ Bottom:true }; //X轴拖动缩放
7249
+ this.EnableXDrag={ Bottom:true, LButton:{ Type:1 }, RButton:{ Type:2 } }; //X轴拖动缩放 Type: 1=拖动K线 2=缩放K线
7250
7250
 
7251
7251
  this.EnableZoomIndexWindow=false; //是否支持双击缩放附图窗口
7252
7252
  this.EnableVerifyRecvData=false; //是否检测接收到的数据
@@ -8476,7 +8476,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8476
8476
  }
8477
8477
  else if (drag.Click && drag.Click.IsInFrameBottom)
8478
8478
  {
8479
- this.OnDragXCoordinateZoom(drag, {X:moveSetp, Y:moveSetpY}, e);
8479
+ var dragType=this.GetDragXCoordinateType(e,"DocOnMouseMove");
8480
+
8481
+ if (dragType==2)
8482
+ this.OnDragXCoordinateZoom(drag, {X:moveSetp, Y:moveSetpY}, e);
8483
+ else if (dragType==1)
8484
+ this.OnDragXCoordinateKLine(drag, {X:moveSetp, Y:moveSetpY}, e);
8480
8485
  }
8481
8486
  else if ((bLButtonSelectRect || bRButtonSelectRect) && !isDragSelectRect && !isDragSubSelectRect && !bShfitDragKLine) //左右键区间选择
8482
8487
  {
@@ -8499,6 +8504,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8499
8504
  }
8500
8505
  }
8501
8506
 
8507
+ //X轴坐标拖动 缩放K线
8502
8508
  this.OnDragXCoordinateZoom=function(drag, moveData, e)
8503
8509
  {
8504
8510
  var moveSetp=moveData.X;
@@ -8531,6 +8537,56 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8531
8537
  this.SetCursor({Cursor:cursorStatus});
8532
8538
  }
8533
8539
 
8540
+ //X轴坐标拖动 拖动K线
8541
+ this.OnDragXCoordinateKLine=function(drag, moveData, e)
8542
+ {
8543
+ var moveSetpX=moveData.X;
8544
+ var moveSetpY=moveData.Y;
8545
+
8546
+ if (moveSetpX<5) return false;
8547
+
8548
+ var isLeft=true;
8549
+ if (drag.LastMove.X<e.clientX) isLeft=false; //右移数据
8550
+
8551
+ var cursorStatus="pointer";
8552
+ var oneStepWidth=this.GetMoveOneStepWidth();
8553
+ if (moveSetpX<oneStepWidth)
8554
+ {
8555
+ this.SetCursor({Cursor:cursorStatus});
8556
+ return false;
8557
+ }
8558
+
8559
+ var bNeedDraw=false;
8560
+ if(this.DataMove(moveSetpX,isLeft))
8561
+ {
8562
+ this.UpdataDataoffset();
8563
+ //this.UpdatePointByCursorIndex(); //推拽数据的时候不需要把鼠标位置更新到K线上
8564
+ this.UpdateFrameMaxMin();
8565
+ this.ResetFrameXYSplit();
8566
+ bNeedDraw=true;
8567
+ }
8568
+ else
8569
+ {
8570
+ if (this.DragDownloadData)
8571
+ {
8572
+ this.DragDownloadData();
8573
+ if (this.ChartSplashPaint && this.ChartSplashPaint.IsEnableSplash) return true;
8574
+ }
8575
+ }
8576
+
8577
+ drag.LastMove.X=e.clientX;
8578
+ this.SetCursor({Cursor:cursorStatus});
8579
+
8580
+ if (bNeedDraw)
8581
+ {
8582
+ this.Draw();
8583
+ this.OnKLinePageChange("datamove");
8584
+ }
8585
+
8586
+ return true;
8587
+ }
8588
+
8589
+
8534
8590
  this.OnDragMode_One=function(moveData, e)
8535
8591
  {
8536
8592
  var moveSetp=moveData.X;
@@ -8634,6 +8690,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8634
8690
  }
8635
8691
  }
8636
8692
 
8693
+
8637
8694
  this.GetXDataIndex=function(obj)
8638
8695
  {
8639
8696
  if (!this.ChartPaint[0] || !this.ChartPaint[0].Data) return false;
@@ -8732,6 +8789,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8732
8789
  else if (IsMinuteChart)
8733
8790
  {
8734
8791
  if (this.OnMinuteSelectRectMouseUp) this.OnMinuteSelectRectMouseUp(e); //分时图区间选择
8792
+ }
8793
+ else if (this.MouseDrag && this.MouseDrag.Click && this.MouseDrag.Click.IsInFrameBottom)
8794
+ {
8795
+
8735
8796
  }
8736
8797
  else if ((bLButtonSelectRect || bRButtonSelectRect) && !bShfitDragKLine) //K线图区间选择
8737
8798
  {
@@ -11064,7 +11125,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11064
11125
  //X轴拖动缩放
11065
11126
  if (this.ClassName=="KLineChartContainer" && this.EnableXDrag.Bottom && this.Frame.PtInFrameBottom(x,y))
11066
11127
  {
11067
- mouseStatus={ Cursor:"ew-resize", Name:"FrameButtom"};
11128
+ //var dragType=this.GetDragXCoordinateType(e,"OnMouseMove");
11129
+ //mouseStatus={ Cursor:"pointer", Name:"FrameButtom"};
11068
11130
  JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] frame bottom ");
11069
11131
  }
11070
11132
 
@@ -11313,6 +11375,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11313
11375
  if (this.OnCustomKeyDown(keyID, e))
11314
11376
  break;
11315
11377
  }
11378
+
11379
+ //K线 如果超出K线数据了 调整到最后一个数据
11380
+ if (this.FixCursorIndexValid && this.FixCursorIndexValid())
11381
+ {
11382
+ this.UpdatePointByCursorIndex();
11383
+ this.DrawDynamicInfo();
11384
+ this.ShowTooltipByKeyDown();
11385
+ break;
11386
+ }
11316
11387
 
11317
11388
  if (this.CursorIndex<=0.99999)
11318
11389
  {
@@ -11344,6 +11415,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11344
11415
  break;
11345
11416
  }
11346
11417
 
11418
+ //K线 如果超出K线数据了 调整到最后一个数据
11419
+ if (this.FixCursorIndexValid && this.FixCursorIndexValid())
11420
+ {
11421
+ this.UpdatePointByCursorIndex();
11422
+ this.DrawDynamicInfo();
11423
+ this.ShowTooltipByKeyDown();
11424
+ break;
11425
+ }
11426
+
11347
11427
  var xPointcount=0;
11348
11428
  if (this.Frame.XPointCount) xPointcount=this.Frame.XPointCount;
11349
11429
  else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;
@@ -11764,13 +11844,21 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11764
11844
  return;
11765
11845
  }
11766
11846
 
11847
+ var kData=this.GetKData();
11848
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
11849
+
11767
11850
  var index=Math.abs(this.CursorIndex-0.5);
11768
11851
  index=parseInt(index.toFixed(0));
11769
11852
  if (this.ClassName=='KLineChartContainer' || this.ClassName=='KLineTrainChartContainer') index=this.CursorIndex;
11770
11853
 
11854
+ var dataIndex=kData.DataOffset+index;
11855
+ if (dataIndex<0 || dataIndex>=kData.Data.length) return;
11856
+ var kItem=kData.Data[dataIndex];
11857
+ if (!kItem) return;
11858
+
11771
11859
  var data=this.Frame.Data;
11772
11860
  var toolTip=new TooltipData();
11773
- toolTip.Data=data.Data[data.DataOffset+index];
11861
+ toolTip.Data=kItem;
11774
11862
  toolTip.ChartPaint=this.ChartPaint[0];
11775
11863
 
11776
11864
  var pixelTatio = GetDevicePixelRatio();
@@ -14583,7 +14671,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
14583
14671
  if (this.ClearKLineInfo) this.ClearKLineInfo();
14584
14672
  break;
14585
14673
  case JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID:
14586
- if (param!=null) this.DragMode=param;
14674
+ if (param!=null)
14675
+ {
14676
+ this.DragMode=param;
14677
+ if (this.DragMode==1 && IFrameSplitOperator.IsBool(aryArgs[1])) //shift+左键拖动
14678
+ this.KLineDragConfig.EnableShfit=aryArgs[1];
14679
+ }
14587
14680
  break;
14588
14681
  case JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID:
14589
14682
  if (IFrameSplitOperator.IsBool(srcParam))
@@ -15288,6 +15381,17 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
15288
15381
  return true;
15289
15382
  }
15290
15383
 
15384
+ this.GetDragXCoordinateType=function(event, funcName)
15385
+ {
15386
+ if (funcName=="DocOnMouseMove")
15387
+ {
15388
+ if (event.buttons==1) return this.EnableXDrag.LButton.Type; //左键
15389
+ else if (event.buttons==2) return this.EnableXDrag.RButton.Type;//右键
15390
+ }
15391
+
15392
+ return null;
15393
+ }
15394
+
15291
15395
  this.OnMarkRectSelect=function(e)
15292
15396
  {
15293
15397
  var corssCursor=this.ChartCorssCursor; //十字光标
@@ -86863,7 +86967,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
86863
86967
  [
86864
86968
 
86865
86969
  { Name:"禁止拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[0]}, Checked:0==this.DragMode },
86866
- { Name:"启动拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1]}, Checked:1==this.DragMode },
86970
+ { Name:"启动右键拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1, false]}, Checked:1==(this.DragMode && !this.KLineDragConfig.EnableShfit) },
86971
+ { Name:"启动Shift+右键拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1, true]}, Checked:1==(this.DragMode && this.KLineDragConfig.EnableShfit) },
86867
86972
  { Name:"X轴拖动缩放", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_XDRAG_BOTTOM_ID, Args:[!this.EnableXDrag.Bottom]}, Checked:this.EnableXDrag.Bottom },
86868
86973
  { Name:"左键区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_LBUTTON_SELECT_RECT_ID, Args:[!bLButtonSelectRect]}, Checked:bLButtonSelectRect },
86869
86974
  { Name:"右键区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_RBUTTON_SELECT_RECT_ID, Args:[!bRButtonSelectRect]}, Checked:bRButtonSelectRect },
@@ -88698,6 +88803,22 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
88698
88803
 
88699
88804
  return result;
88700
88805
  }
88806
+
88807
+ //修正十字光标位置有效的K线
88808
+ this.FixCursorIndexValid=function()
88809
+ {
88810
+ var kData=this.GetKData();
88811
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
88812
+
88813
+ var dataIndex=this.CursorIndex+kData.DataOffset;
88814
+ if (dataIndex>=kData.Data.length)
88815
+ {
88816
+ this.CursorIndex=kData.Data.length-kData.DataOffset-1;
88817
+ return true;
88818
+ }
88819
+
88820
+ return false;
88821
+ }
88701
88822
  }
88702
88823
 
88703
88824
  //API 返回数据 转化为array[]
@@ -89679,8 +89800,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
89679
89800
  if (!startItem || !endItem) return;
89680
89801
 
89681
89802
  JSConsole.Chart.Log('[MinuteChartContainer::UpdateSelectRect]',startItem,endItem);
89682
- paint.SetPoint(startItem, { Index:0 });
89683
- paint.SetPoint(endItem, { Index:1 });
89803
+ paint.SetPoint(startItem, { Index:0 , DataIndex:start });
89804
+ paint.SetPoint(endItem, { Index:1,DataIndex:end });
89684
89805
 
89685
89806
  this.Draw();
89686
89807
  }
@@ -89707,7 +89828,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
89707
89828
  var item = kData.Data[dataIndex];
89708
89829
  JSConsole.Chart.Log("[MinuteChartContainer::MoveRectSelectPoint] point, item", obj.PointIndex, item);
89709
89830
 
89710
- if (!paint.SetPoint(item,{ Index: obj.PointIndex })) return false;
89831
+ if (!paint.SetPoint(item,{ Index: obj.PointIndex,DataIndex:dataIndex })) return false;
89711
89832
 
89712
89833
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAG_SELECT_RECT);
89713
89834
  if (event)
@@ -133150,6 +133271,11 @@ function JSReportChart(divElement)
133150
133271
  if (this.JSChartContainer) this.JSChartContainer.SetSelectedRow(option);
133151
133272
  }
133152
133273
 
133274
+ this.DeleteSymbol=function(arySymbol, option)
133275
+ {
133276
+ if (this.JSChartContainer) this.JSChartContainer.DeleteSymbol(arySymbol, option);
133277
+ }
133278
+
133153
133279
  this.EnableFilter=function(bEnable, option) //启动|关闭筛选
133154
133280
  {
133155
133281
  if (this.JSChartContainer) this.JSChartContainer.EnableFilter(bEnable, option);
@@ -134054,6 +134180,55 @@ function JSReportChartContainer(uielement)
134054
134180
  this.UpdateStockData();
134055
134181
  }
134056
134182
 
134183
+ //删除股票
134184
+ this.DeleteSymbol=function(arySymbol, option)
134185
+ {
134186
+ if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return false;
134187
+
134188
+ var setSymbol=new Set(arySymbol);
134189
+ var bFinder=false;
134190
+ if (IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data))
134191
+ {
134192
+ var aryData=[];
134193
+ for(var i=0;i<this.SourceData.Data.length;++i)
134194
+ {
134195
+ var item=this.SourceData.Data[i];
134196
+ if (setSymbol.has(item))
134197
+ {
134198
+ bFinder=true;
134199
+ continue;
134200
+ }
134201
+ aryData.push(item);
134202
+ }
134203
+
134204
+ if (bFinder) this.SourceData.Data=aryData;
134205
+ }
134206
+
134207
+ if (IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))
134208
+ {
134209
+ var aryData=[];
134210
+ for(var i=0;i<this.Data.Data.length;++i)
134211
+ {
134212
+ var item=this.Data.Data[i];
134213
+ if (setSymbol.has(item))
134214
+ {
134215
+ bFinder=true;
134216
+ continue;
134217
+ }
134218
+ aryData.push(item);
134219
+ }
134220
+
134221
+ if (bFinder) this.Data.Data=aryData;
134222
+ }
134223
+
134224
+ if (!bFinder) return false;
134225
+
134226
+ this.Draw();
134227
+ this.UpdateStockData();
134228
+
134229
+ return true;
134230
+ }
134231
+
134057
134232
  this.AutoUpdateEvent=function(bStart, explain) //自定更新事件, 是给websocket使用
134058
134233
  {
134059
134234
  var eventID=bStart ? JSCHART_EVENT_ID.RECV_START_AUTOUPDATE:JSCHART_EVENT_ID.RECV_STOP_AUTOUPDATE;
@@ -156356,7 +156531,7 @@ function HQChartScriptWorker()
156356
156531
 
156357
156532
 
156358
156533
 
156359
- var HQCHART_VERSION="1.1.14590";
156534
+ var HQCHART_VERSION="1.1.14597";
156360
156535
 
156361
156536
  function PrintHQChartVersion()
156362
156537
  {