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.
@@ -284,6 +284,11 @@ function JSReportChart(divElement)
284
284
  if (this.JSChartContainer) this.JSChartContainer.SetSelectedRow(option);
285
285
  }
286
286
 
287
+ this.DeleteSymbol=function(arySymbol, option)
288
+ {
289
+ if (this.JSChartContainer) this.JSChartContainer.DeleteSymbol(arySymbol, option);
290
+ }
291
+
287
292
  this.EnableFilter=function(bEnable, option) //启动|关闭筛选
288
293
  {
289
294
  if (this.JSChartContainer) this.JSChartContainer.EnableFilter(bEnable, option);
@@ -1188,6 +1193,55 @@ function JSReportChartContainer(uielement)
1188
1193
  this.UpdateStockData();
1189
1194
  }
1190
1195
 
1196
+ //删除股票
1197
+ this.DeleteSymbol=function(arySymbol, option)
1198
+ {
1199
+ if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return false;
1200
+
1201
+ var setSymbol=new Set(arySymbol);
1202
+ var bFinder=false;
1203
+ if (IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data))
1204
+ {
1205
+ var aryData=[];
1206
+ for(var i=0;i<this.SourceData.Data.length;++i)
1207
+ {
1208
+ var item=this.SourceData.Data[i];
1209
+ if (setSymbol.has(item))
1210
+ {
1211
+ bFinder=true;
1212
+ continue;
1213
+ }
1214
+ aryData.push(item);
1215
+ }
1216
+
1217
+ if (bFinder) this.SourceData.Data=aryData;
1218
+ }
1219
+
1220
+ if (IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))
1221
+ {
1222
+ var aryData=[];
1223
+ for(var i=0;i<this.Data.Data.length;++i)
1224
+ {
1225
+ var item=this.Data.Data[i];
1226
+ if (setSymbol.has(item))
1227
+ {
1228
+ bFinder=true;
1229
+ continue;
1230
+ }
1231
+ aryData.push(item);
1232
+ }
1233
+
1234
+ if (bFinder) this.Data.Data=aryData;
1235
+ }
1236
+
1237
+ if (!bFinder) return false;
1238
+
1239
+ this.Draw();
1240
+ this.UpdateStockData();
1241
+
1242
+ return true;
1243
+ }
1244
+
1191
1245
  this.AutoUpdateEvent=function(bStart, explain) //自定更新事件, 是给websocket使用
1192
1246
  {
1193
1247
  var eventID=bStart ? JSCHART_EVENT_ID.RECV_START_AUTOUPDATE:JSCHART_EVENT_ID.RECV_STOP_AUTOUPDATE;
@@ -7202,7 +7202,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7202
7202
  Wheel:false, WheelYMove:5 //是否可以滚轴缩放Y轴最大最小值
7203
7203
  };
7204
7204
 
7205
- this.EnableXDrag={ Bottom:true }; //X轴拖动缩放
7205
+ this.EnableXDrag={ Bottom:true, LButton:{ Type:1 }, RButton:{ Type:2 } }; //X轴拖动缩放 Type: 1=拖动K线 2=缩放K线
7206
7206
 
7207
7207
  this.EnableZoomIndexWindow=false; //是否支持双击缩放附图窗口
7208
7208
  this.EnableVerifyRecvData=false; //是否检测接收到的数据
@@ -8432,7 +8432,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8432
8432
  }
8433
8433
  else if (drag.Click && drag.Click.IsInFrameBottom)
8434
8434
  {
8435
- this.OnDragXCoordinateZoom(drag, {X:moveSetp, Y:moveSetpY}, e);
8435
+ var dragType=this.GetDragXCoordinateType(e,"DocOnMouseMove");
8436
+
8437
+ if (dragType==2)
8438
+ this.OnDragXCoordinateZoom(drag, {X:moveSetp, Y:moveSetpY}, e);
8439
+ else if (dragType==1)
8440
+ this.OnDragXCoordinateKLine(drag, {X:moveSetp, Y:moveSetpY}, e);
8436
8441
  }
8437
8442
  else if ((bLButtonSelectRect || bRButtonSelectRect) && !isDragSelectRect && !isDragSubSelectRect && !bShfitDragKLine) //左右键区间选择
8438
8443
  {
@@ -8455,6 +8460,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8455
8460
  }
8456
8461
  }
8457
8462
 
8463
+ //X轴坐标拖动 缩放K线
8458
8464
  this.OnDragXCoordinateZoom=function(drag, moveData, e)
8459
8465
  {
8460
8466
  var moveSetp=moveData.X;
@@ -8487,6 +8493,56 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8487
8493
  this.SetCursor({Cursor:cursorStatus});
8488
8494
  }
8489
8495
 
8496
+ //X轴坐标拖动 拖动K线
8497
+ this.OnDragXCoordinateKLine=function(drag, moveData, e)
8498
+ {
8499
+ var moveSetpX=moveData.X;
8500
+ var moveSetpY=moveData.Y;
8501
+
8502
+ if (moveSetpX<5) return false;
8503
+
8504
+ var isLeft=true;
8505
+ if (drag.LastMove.X<e.clientX) isLeft=false; //右移数据
8506
+
8507
+ var cursorStatus="pointer";
8508
+ var oneStepWidth=this.GetMoveOneStepWidth();
8509
+ if (moveSetpX<oneStepWidth)
8510
+ {
8511
+ this.SetCursor({Cursor:cursorStatus});
8512
+ return false;
8513
+ }
8514
+
8515
+ var bNeedDraw=false;
8516
+ if(this.DataMove(moveSetpX,isLeft))
8517
+ {
8518
+ this.UpdataDataoffset();
8519
+ //this.UpdatePointByCursorIndex(); //推拽数据的时候不需要把鼠标位置更新到K线上
8520
+ this.UpdateFrameMaxMin();
8521
+ this.ResetFrameXYSplit();
8522
+ bNeedDraw=true;
8523
+ }
8524
+ else
8525
+ {
8526
+ if (this.DragDownloadData)
8527
+ {
8528
+ this.DragDownloadData();
8529
+ if (this.ChartSplashPaint && this.ChartSplashPaint.IsEnableSplash) return true;
8530
+ }
8531
+ }
8532
+
8533
+ drag.LastMove.X=e.clientX;
8534
+ this.SetCursor({Cursor:cursorStatus});
8535
+
8536
+ if (bNeedDraw)
8537
+ {
8538
+ this.Draw();
8539
+ this.OnKLinePageChange("datamove");
8540
+ }
8541
+
8542
+ return true;
8543
+ }
8544
+
8545
+
8490
8546
  this.OnDragMode_One=function(moveData, e)
8491
8547
  {
8492
8548
  var moveSetp=moveData.X;
@@ -8590,6 +8646,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8590
8646
  }
8591
8647
  }
8592
8648
 
8649
+
8593
8650
  this.GetXDataIndex=function(obj)
8594
8651
  {
8595
8652
  if (!this.ChartPaint[0] || !this.ChartPaint[0].Data) return false;
@@ -8688,6 +8745,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8688
8745
  else if (IsMinuteChart)
8689
8746
  {
8690
8747
  if (this.OnMinuteSelectRectMouseUp) this.OnMinuteSelectRectMouseUp(e); //分时图区间选择
8748
+ }
8749
+ else if (this.MouseDrag && this.MouseDrag.Click && this.MouseDrag.Click.IsInFrameBottom)
8750
+ {
8751
+
8691
8752
  }
8692
8753
  else if ((bLButtonSelectRect || bRButtonSelectRect) && !bShfitDragKLine) //K线图区间选择
8693
8754
  {
@@ -11020,7 +11081,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11020
11081
  //X轴拖动缩放
11021
11082
  if (this.ClassName=="KLineChartContainer" && this.EnableXDrag.Bottom && this.Frame.PtInFrameBottom(x,y))
11022
11083
  {
11023
- mouseStatus={ Cursor:"ew-resize", Name:"FrameButtom"};
11084
+ //var dragType=this.GetDragXCoordinateType(e,"OnMouseMove");
11085
+ //mouseStatus={ Cursor:"pointer", Name:"FrameButtom"};
11024
11086
  JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] frame bottom ");
11025
11087
  }
11026
11088
 
@@ -11269,6 +11331,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11269
11331
  if (this.OnCustomKeyDown(keyID, e))
11270
11332
  break;
11271
11333
  }
11334
+
11335
+ //K线 如果超出K线数据了 调整到最后一个数据
11336
+ if (this.FixCursorIndexValid && this.FixCursorIndexValid())
11337
+ {
11338
+ this.UpdatePointByCursorIndex();
11339
+ this.DrawDynamicInfo();
11340
+ this.ShowTooltipByKeyDown();
11341
+ break;
11342
+ }
11272
11343
 
11273
11344
  if (this.CursorIndex<=0.99999)
11274
11345
  {
@@ -11300,6 +11371,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11300
11371
  break;
11301
11372
  }
11302
11373
 
11374
+ //K线 如果超出K线数据了 调整到最后一个数据
11375
+ if (this.FixCursorIndexValid && this.FixCursorIndexValid())
11376
+ {
11377
+ this.UpdatePointByCursorIndex();
11378
+ this.DrawDynamicInfo();
11379
+ this.ShowTooltipByKeyDown();
11380
+ break;
11381
+ }
11382
+
11303
11383
  var xPointcount=0;
11304
11384
  if (this.Frame.XPointCount) xPointcount=this.Frame.XPointCount;
11305
11385
  else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;
@@ -11720,13 +11800,21 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11720
11800
  return;
11721
11801
  }
11722
11802
 
11803
+ var kData=this.GetKData();
11804
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return;
11805
+
11723
11806
  var index=Math.abs(this.CursorIndex-0.5);
11724
11807
  index=parseInt(index.toFixed(0));
11725
11808
  if (this.ClassName=='KLineChartContainer' || this.ClassName=='KLineTrainChartContainer') index=this.CursorIndex;
11726
11809
 
11810
+ var dataIndex=kData.DataOffset+index;
11811
+ if (dataIndex<0 || dataIndex>=kData.Data.length) return;
11812
+ var kItem=kData.Data[dataIndex];
11813
+ if (!kItem) return;
11814
+
11727
11815
  var data=this.Frame.Data;
11728
11816
  var toolTip=new TooltipData();
11729
- toolTip.Data=data.Data[data.DataOffset+index];
11817
+ toolTip.Data=kItem;
11730
11818
  toolTip.ChartPaint=this.ChartPaint[0];
11731
11819
 
11732
11820
  var pixelTatio = GetDevicePixelRatio();
@@ -14539,7 +14627,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
14539
14627
  if (this.ClearKLineInfo) this.ClearKLineInfo();
14540
14628
  break;
14541
14629
  case JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID:
14542
- if (param!=null) this.DragMode=param;
14630
+ if (param!=null)
14631
+ {
14632
+ this.DragMode=param;
14633
+ if (this.DragMode==1 && IFrameSplitOperator.IsBool(aryArgs[1])) //shift+左键拖动
14634
+ this.KLineDragConfig.EnableShfit=aryArgs[1];
14635
+ }
14543
14636
  break;
14544
14637
  case JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID:
14545
14638
  if (IFrameSplitOperator.IsBool(srcParam))
@@ -15244,6 +15337,17 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
15244
15337
  return true;
15245
15338
  }
15246
15339
 
15340
+ this.GetDragXCoordinateType=function(event, funcName)
15341
+ {
15342
+ if (funcName=="DocOnMouseMove")
15343
+ {
15344
+ if (event.buttons==1) return this.EnableXDrag.LButton.Type; //左键
15345
+ else if (event.buttons==2) return this.EnableXDrag.RButton.Type;//右键
15346
+ }
15347
+
15348
+ return null;
15349
+ }
15350
+
15247
15351
  this.OnMarkRectSelect=function(e)
15248
15352
  {
15249
15353
  var corssCursor=this.ChartCorssCursor; //十字光标
@@ -86819,7 +86923,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
86819
86923
  [
86820
86924
 
86821
86925
  { Name:"禁止拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[0]}, Checked:0==this.DragMode },
86822
- { Name:"启动拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1]}, Checked:1==this.DragMode },
86926
+ { Name:"启动右键拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1, false]}, Checked:1==(this.DragMode && !this.KLineDragConfig.EnableShfit) },
86927
+ { Name:"启动Shift+右键拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1, true]}, Checked:1==(this.DragMode && this.KLineDragConfig.EnableShfit) },
86823
86928
  { Name:"X轴拖动缩放", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_XDRAG_BOTTOM_ID, Args:[!this.EnableXDrag.Bottom]}, Checked:this.EnableXDrag.Bottom },
86824
86929
  { Name:"左键区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_LBUTTON_SELECT_RECT_ID, Args:[!bLButtonSelectRect]}, Checked:bLButtonSelectRect },
86825
86930
  { Name:"右键区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_RBUTTON_SELECT_RECT_ID, Args:[!bRButtonSelectRect]}, Checked:bRButtonSelectRect },
@@ -88654,6 +88759,22 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
88654
88759
 
88655
88760
  return result;
88656
88761
  }
88762
+
88763
+ //修正十字光标位置有效的K线
88764
+ this.FixCursorIndexValid=function()
88765
+ {
88766
+ var kData=this.GetKData();
88767
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
88768
+
88769
+ var dataIndex=this.CursorIndex+kData.DataOffset;
88770
+ if (dataIndex>=kData.Data.length)
88771
+ {
88772
+ this.CursorIndex=kData.Data.length-kData.DataOffset-1;
88773
+ return true;
88774
+ }
88775
+
88776
+ return false;
88777
+ }
88657
88778
  }
88658
88779
 
88659
88780
  //API 返回数据 转化为array[]
@@ -89635,8 +89756,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
89635
89756
  if (!startItem || !endItem) return;
89636
89757
 
89637
89758
  JSConsole.Chart.Log('[MinuteChartContainer::UpdateSelectRect]',startItem,endItem);
89638
- paint.SetPoint(startItem, { Index:0 });
89639
- paint.SetPoint(endItem, { Index:1 });
89759
+ paint.SetPoint(startItem, { Index:0 , DataIndex:start });
89760
+ paint.SetPoint(endItem, { Index:1,DataIndex:end });
89640
89761
 
89641
89762
  this.Draw();
89642
89763
  }
@@ -89663,7 +89784,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
89663
89784
  var item = kData.Data[dataIndex];
89664
89785
  JSConsole.Chart.Log("[MinuteChartContainer::MoveRectSelectPoint] point, item", obj.PointIndex, item);
89665
89786
 
89666
- if (!paint.SetPoint(item,{ Index: obj.PointIndex })) return false;
89787
+ if (!paint.SetPoint(item,{ Index: obj.PointIndex,DataIndex:dataIndex })) return false;
89667
89788
 
89668
89789
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAG_SELECT_RECT);
89669
89790
  if (event)
@@ -133106,6 +133227,11 @@ function JSReportChart(divElement)
133106
133227
  if (this.JSChartContainer) this.JSChartContainer.SetSelectedRow(option);
133107
133228
  }
133108
133229
 
133230
+ this.DeleteSymbol=function(arySymbol, option)
133231
+ {
133232
+ if (this.JSChartContainer) this.JSChartContainer.DeleteSymbol(arySymbol, option);
133233
+ }
133234
+
133109
133235
  this.EnableFilter=function(bEnable, option) //启动|关闭筛选
133110
133236
  {
133111
133237
  if (this.JSChartContainer) this.JSChartContainer.EnableFilter(bEnable, option);
@@ -134010,6 +134136,55 @@ function JSReportChartContainer(uielement)
134010
134136
  this.UpdateStockData();
134011
134137
  }
134012
134138
 
134139
+ //删除股票
134140
+ this.DeleteSymbol=function(arySymbol, option)
134141
+ {
134142
+ if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return false;
134143
+
134144
+ var setSymbol=new Set(arySymbol);
134145
+ var bFinder=false;
134146
+ if (IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data))
134147
+ {
134148
+ var aryData=[];
134149
+ for(var i=0;i<this.SourceData.Data.length;++i)
134150
+ {
134151
+ var item=this.SourceData.Data[i];
134152
+ if (setSymbol.has(item))
134153
+ {
134154
+ bFinder=true;
134155
+ continue;
134156
+ }
134157
+ aryData.push(item);
134158
+ }
134159
+
134160
+ if (bFinder) this.SourceData.Data=aryData;
134161
+ }
134162
+
134163
+ if (IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))
134164
+ {
134165
+ var aryData=[];
134166
+ for(var i=0;i<this.Data.Data.length;++i)
134167
+ {
134168
+ var item=this.Data.Data[i];
134169
+ if (setSymbol.has(item))
134170
+ {
134171
+ bFinder=true;
134172
+ continue;
134173
+ }
134174
+ aryData.push(item);
134175
+ }
134176
+
134177
+ if (bFinder) this.Data.Data=aryData;
134178
+ }
134179
+
134180
+ if (!bFinder) return false;
134181
+
134182
+ this.Draw();
134183
+ this.UpdateStockData();
134184
+
134185
+ return true;
134186
+ }
134187
+
134013
134188
  this.AutoUpdateEvent=function(bStart, explain) //自定更新事件, 是给websocket使用
134014
134189
  {
134015
134190
  var eventID=bStart ? JSCHART_EVENT_ID.RECV_START_AUTOUPDATE:JSCHART_EVENT_ID.RECV_STOP_AUTOUPDATE;
@@ -145656,7 +145831,7 @@ function ScrollBarBGChart()
145656
145831
 
145657
145832
 
145658
145833
 
145659
- var HQCHART_VERSION="1.1.14590";
145834
+ var HQCHART_VERSION="1.1.14597";
145660
145835
 
145661
145836
  function PrintHQChartVersion()
145662
145837
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.14590";
8
+ var HQCHART_VERSION="1.1.14597";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {