hqchart 1.1.14593 → 1.1.14604

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.
@@ -4457,6 +4457,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4457
4457
  {
4458
4458
  var item=option.EnableXDrag;
4459
4459
  if (IFrameSplitOperator.IsBool(item.Bottom)) chart.EnableXDrag.Bottom=item.Bottom;
4460
+ if (item.LButton && IFrameSplitOperator.IsNumber(item.LButton.Type)) chart.EnableXDrag.LButton.Type=item.LButton.Type;
4461
+ if (item.RButton && IFrameSplitOperator.IsNumber(item.RButton.Type)) chart.EnableXDrag.RButton.Type=item.RButton.Type;
4460
4462
  }
4461
4463
 
4462
4464
  if (option.KLineTooltip)
@@ -5015,6 +5017,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5015
5017
  if (IFrameSplitOperator.IsBool(option.EnableIndexChartDrag)) chart.EnableIndexChartDrag=option.EnableIndexChartDrag;
5016
5018
  if (IFrameSplitOperator.IsBool(option.EnableVerifyRecvData)) chart.EnableVerifyRecvData=option.EnableVerifyRecvData;
5017
5019
  if (IFrameSplitOperator.IsBool(option.EnableNightDayBG)) chart.EnableNightDayBG=option.EnableNightDayBG;
5020
+ if (IFrameSplitOperator.IsNumber(option.MaxDayCount)) chart.MaxDayCount=option.MaxDayCount;
5018
5021
 
5019
5022
  //老版本开启左键区间选择
5020
5023
  if (IFrameSplitOperator.IsBool(option.EnableSelectRect))
@@ -6648,6 +6651,17 @@ JSChart.GetfloatPrecision=function(symbol)
6648
6651
  return GetfloatPrecision(symbol);
6649
6652
  }
6650
6653
 
6654
+ //获取不带后缀的代码
6655
+ JSChart.GetShortSymbol=function(symbol)
6656
+ {
6657
+ if (IFrameSplitOperator.IsString(symbol)) return null;
6658
+ var pos=symbol.lastIndexOf(".");
6659
+ if (pos<=0) return symbol;
6660
+
6661
+ return symbol.slice(0,pos);
6662
+ }
6663
+
6664
+
6651
6665
  var JSCHART_EVENT_ID=
6652
6666
  {
6653
6667
  //RECV_KLINE_MATCH:1, //接收到形态匹配
@@ -7246,7 +7260,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7246
7260
  Wheel:false, WheelYMove:5 //是否可以滚轴缩放Y轴最大最小值
7247
7261
  };
7248
7262
 
7249
- this.EnableXDrag={ Bottom:true }; //X轴拖动缩放
7263
+ this.EnableXDrag={ Bottom:true, LButton:{ Type:1 }, RButton:{ Type:2 } }; //X轴拖动缩放 Type: 1=拖动K线 2=缩放K线
7250
7264
 
7251
7265
  this.EnableZoomIndexWindow=false; //是否支持双击缩放附图窗口
7252
7266
  this.EnableVerifyRecvData=false; //是否检测接收到的数据
@@ -7813,7 +7827,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7813
7827
 
7814
7828
  if (this.ChartSplashPaint && this.ChartSplashPaint.IsEnableSplash == true) return;
7815
7829
  if (!this.IsShowRightMenu) return;
7816
- if (this.PreventRightMenu.Enable) return;
7830
+ if (this.PreventRightMenu.Enable)
7831
+ {
7832
+ this.PreventRightMenu.Enable=false; //生效一次就可以
7833
+ return;
7834
+ }
7817
7835
 
7818
7836
  var x = e.clientX-this.UIElement.getBoundingClientRect().left;
7819
7837
  var y = e.clientY-this.UIElement.getBoundingClientRect().top;
@@ -8476,7 +8494,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8476
8494
  }
8477
8495
  else if (drag.Click && drag.Click.IsInFrameBottom)
8478
8496
  {
8479
- this.OnDragXCoordinateZoom(drag, {X:moveSetp, Y:moveSetpY}, e);
8497
+ var dragType=this.GetDragXCoordinateType(e,"DocOnMouseMove");
8498
+
8499
+ if (dragType==2)
8500
+ this.OnDragXCoordinateZoom(drag, {X:moveSetp, Y:moveSetpY}, e);
8501
+ else if (dragType==1)
8502
+ this.OnDragXCoordinateKLine(drag, {X:moveSetp, Y:moveSetpY}, e);
8480
8503
  }
8481
8504
  else if ((bLButtonSelectRect || bRButtonSelectRect) && !isDragSelectRect && !isDragSubSelectRect && !bShfitDragKLine) //左右键区间选择
8482
8505
  {
@@ -8499,6 +8522,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8499
8522
  }
8500
8523
  }
8501
8524
 
8525
+ //X轴坐标拖动 缩放K线
8502
8526
  this.OnDragXCoordinateZoom=function(drag, moveData, e)
8503
8527
  {
8504
8528
  var moveSetp=moveData.X;
@@ -8531,6 +8555,56 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8531
8555
  this.SetCursor({Cursor:cursorStatus});
8532
8556
  }
8533
8557
 
8558
+ //X轴坐标拖动 拖动K线
8559
+ this.OnDragXCoordinateKLine=function(drag, moveData, e)
8560
+ {
8561
+ var moveSetpX=moveData.X;
8562
+ var moveSetpY=moveData.Y;
8563
+
8564
+ if (moveSetpX<5) return false;
8565
+
8566
+ var isLeft=true;
8567
+ if (drag.LastMove.X<e.clientX) isLeft=false; //右移数据
8568
+
8569
+ var cursorStatus="pointer";
8570
+ var oneStepWidth=this.GetMoveOneStepWidth();
8571
+ if (moveSetpX<oneStepWidth)
8572
+ {
8573
+ this.SetCursor({Cursor:cursorStatus});
8574
+ return false;
8575
+ }
8576
+
8577
+ var bNeedDraw=false;
8578
+ if(this.DataMove(moveSetpX,isLeft))
8579
+ {
8580
+ this.UpdataDataoffset();
8581
+ //this.UpdatePointByCursorIndex(); //推拽数据的时候不需要把鼠标位置更新到K线上
8582
+ this.UpdateFrameMaxMin();
8583
+ this.ResetFrameXYSplit();
8584
+ bNeedDraw=true;
8585
+ }
8586
+ else
8587
+ {
8588
+ if (this.DragDownloadData)
8589
+ {
8590
+ this.DragDownloadData();
8591
+ if (this.ChartSplashPaint && this.ChartSplashPaint.IsEnableSplash) return true;
8592
+ }
8593
+ }
8594
+
8595
+ drag.LastMove.X=e.clientX;
8596
+ this.SetCursor({Cursor:cursorStatus});
8597
+
8598
+ if (bNeedDraw)
8599
+ {
8600
+ this.Draw();
8601
+ this.OnKLinePageChange("datamove");
8602
+ }
8603
+
8604
+ return true;
8605
+ }
8606
+
8607
+
8534
8608
  this.OnDragMode_One=function(moveData, e)
8535
8609
  {
8536
8610
  var moveSetp=moveData.X;
@@ -8634,6 +8708,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8634
8708
  }
8635
8709
  }
8636
8710
 
8711
+
8637
8712
  this.GetXDataIndex=function(obj)
8638
8713
  {
8639
8714
  if (!this.ChartPaint[0] || !this.ChartPaint[0].Data) return false;
@@ -8733,6 +8808,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8733
8808
  {
8734
8809
  if (this.OnMinuteSelectRectMouseUp) this.OnMinuteSelectRectMouseUp(e); //分时图区间选择
8735
8810
  }
8811
+ else if (this.MouseDrag && this.MouseDrag.Click && this.MouseDrag.Click.IsInFrameBottom)
8812
+ {
8813
+ if (e && e.button===2 && this.EnableXDrag.RButton.Type>=1) this.PreventRightMenu.Enable=true;
8814
+ }
8736
8815
  else if ((bLButtonSelectRect || bRButtonSelectRect) && !bShfitDragKLine) //K线图区间选择
8737
8816
  {
8738
8817
  var drag=this.MouseDrag;
@@ -11064,7 +11143,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11064
11143
  //X轴拖动缩放
11065
11144
  if (this.ClassName=="KLineChartContainer" && this.EnableXDrag.Bottom && this.Frame.PtInFrameBottom(x,y))
11066
11145
  {
11067
- mouseStatus={ Cursor:"ew-resize", Name:"FrameButtom"};
11146
+ //var dragType=this.GetDragXCoordinateType(e,"OnMouseMove");
11147
+ //mouseStatus={ Cursor:"pointer", Name:"FrameButtom"};
11068
11148
  JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] frame bottom ");
11069
11149
  }
11070
11150
 
@@ -14609,7 +14689,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
14609
14689
  if (this.ClearKLineInfo) this.ClearKLineInfo();
14610
14690
  break;
14611
14691
  case JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID:
14612
- if (param!=null) this.DragMode=param;
14692
+ if (param!=null)
14693
+ {
14694
+ this.DragMode=param;
14695
+ if (this.DragMode==1 && IFrameSplitOperator.IsBool(aryArgs[1])) //shift+左键拖动
14696
+ this.KLineDragConfig.EnableShfit=aryArgs[1];
14697
+ }
14613
14698
  break;
14614
14699
  case JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID:
14615
14700
  if (IFrameSplitOperator.IsBool(srcParam))
@@ -14863,6 +14948,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
14863
14948
  break;
14864
14949
  case JSCHART_MENU_ID.CMD_ENABLE_XDRAG_BOTTOM_ID:
14865
14950
  if (IFrameSplitOperator.IsBool(srcParam)) this.EnableXDrag.Bottom=srcParam;
14951
+ if (IFrameSplitOperator.IsNonEmptyArray(aryArgs) && IFrameSplitOperator.IsNumber(aryArgs[1])) this.EnableXDrag.LButton.Type=aryArgs[1];
14952
+ if (IFrameSplitOperator.IsNonEmptyArray(aryArgs) && IFrameSplitOperator.IsNumber(aryArgs[2])) this.EnableXDrag.RButton.Type=aryArgs[2];
14866
14953
  break;
14867
14954
  case JSCHART_MENU_ID.CMD_FULLSCREEN_SUMMARY_ID:
14868
14955
  this.FullScreenSummary();
@@ -15314,6 +15401,17 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
15314
15401
  return true;
15315
15402
  }
15316
15403
 
15404
+ this.GetDragXCoordinateType=function(event, funcName)
15405
+ {
15406
+ if (funcName=="DocOnMouseMove")
15407
+ {
15408
+ if (event.buttons==1) return this.EnableXDrag.LButton.Type; //左键
15409
+ else if (event.buttons==2) return this.EnableXDrag.RButton.Type;//右键
15410
+ }
15411
+
15412
+ return null;
15413
+ }
15414
+
15317
15415
  this.OnMarkRectSelect=function(e)
15318
15416
  {
15319
15417
  var corssCursor=this.ChartCorssCursor; //十字光标
@@ -86887,10 +86985,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
86887
86985
  Name:"其他设置",
86888
86986
  SubMenu:
86889
86987
  [
86890
-
86891
- { Name:"禁止拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[0]}, Checked:0==this.DragMode },
86892
- { Name:"启动拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1]}, Checked:1==this.DragMode },
86893
- { Name:"X轴拖动缩放", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_XDRAG_BOTTOM_ID, Args:[!this.EnableXDrag.Bottom]}, Checked:this.EnableXDrag.Bottom },
86894
86988
  { Name:"左键区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_LBUTTON_SELECT_RECT_ID, Args:[!bLButtonSelectRect]}, Checked:bLButtonSelectRect },
86895
86989
  { Name:"右键区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_RBUTTON_SELECT_RECT_ID, Args:[!bRButtonSelectRect]}, Checked:bRButtonSelectRect },
86896
86990
  { Name:JSPopMenu.SEPARATOR_LINE_NAME },
@@ -86947,6 +87041,27 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
86947
87041
  { Name:"启用", Data:{ ID:JSCHART_MENU_ID.CMD_KLINE_TOOLTIP_ATTRIBUTE, Args:[{Enable:!this.KLineTooltipConfig.Enable}]}, Checked:this.KLineTooltipConfig.Enable },
86948
87042
  { Name:"键盘左右显示", Data:{ ID:JSCHART_MENU_ID.CMD_KLINE_TOOLTIP_ATTRIBUTE, Args:[{EnableKeyDown:!this.KLineTooltipConfig.EnableKeyDown}]}, Checked:this.KLineTooltipConfig.EnableKeyDown },
86949
87043
  ]
87044
+ },
87045
+ {
87046
+ Name:"X轴拖动",
87047
+ SubMenu:
87048
+ [
87049
+ { Name:"启动", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_XDRAG_BOTTOM_ID, Args:[!this.EnableXDrag.Bottom]}, Checked:this.EnableXDrag.Bottom },
87050
+ { Name:"左键拖动K线", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_XDRAG_BOTTOM_ID, Args:[null, this.EnableXDrag.LButton.Type===1?0:1]}, Checked:this.EnableXDrag.LButton.Type===1 && this.EnableXDrag.Bottom },
87051
+ { Name:"左键缩放K线", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_XDRAG_BOTTOM_ID, Args:[null, this.EnableXDrag.LButton.Type===2?0:2]}, Checked:this.EnableXDrag.LButton.Type===2 && this.EnableXDrag.Bottom },
87052
+
87053
+ { Name:"右键拖动K线", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_XDRAG_BOTTOM_ID, Args:[null, null, this.EnableXDrag.RButton.Type===1?0:1]}, Checked:this.EnableXDrag.RButton.Type===1 && this.EnableXDrag.Bottom },
87054
+ { Name:"右键缩放K线", Data:{ ID:JSCHART_MENU_ID.CMD_ENABLE_XDRAG_BOTTOM_ID, Args:[null, null, this.EnableXDrag.RButton.Type===2?0:2]}, Checked:this.EnableXDrag.RButton.Type===2 && this.EnableXDrag.Bottom },
87055
+ ]
87056
+ },
87057
+ {
87058
+ Name:"K线拖动",
87059
+ SubMenu:
87060
+ [
87061
+ { Name:"禁用", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[0]}, Checked:0==this.DragMode },
87062
+ { Name:"左键拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1, false]}, Checked:1==(this.DragMode && !this.KLineDragConfig.EnableShfit) },
87063
+ { Name:"Shift+左键拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1, true]}, Checked:1==(this.DragMode && this.KLineDragConfig.EnableShfit) },
87064
+ ]
86950
87065
  }
86951
87066
  ]
86952
87067
  }
@@ -89161,6 +89276,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
89161
89276
  this.AutoUpdateTimer; //自动更新定时器
89162
89277
  this.TradeDate=0; //行情交易日期
89163
89278
  this.DayCount=1; //显示几天的数据
89279
+ this.MaxDayCount=-1; //最大显示天数 -1 无限制
89164
89280
  this.DayData; //多日分钟数据
89165
89281
  this.LimitPrice; //涨停价格 { Max:null, Min:null };
89166
89282
 
@@ -89721,8 +89837,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
89721
89837
  if (!startItem || !endItem) return;
89722
89838
 
89723
89839
  JSConsole.Chart.Log('[MinuteChartContainer::UpdateSelectRect]',startItem,endItem);
89724
- paint.SetPoint(startItem, { Index:0 });
89725
- paint.SetPoint(endItem, { Index:1 });
89840
+ paint.SetPoint(startItem, { Index:0 , DataIndex:start });
89841
+ paint.SetPoint(endItem, { Index:1,DataIndex:end });
89726
89842
 
89727
89843
  this.Draw();
89728
89844
  }
@@ -89749,7 +89865,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
89749
89865
  var item = kData.Data[dataIndex];
89750
89866
  JSConsole.Chart.Log("[MinuteChartContainer::MoveRectSelectPoint] point, item", obj.PointIndex, item);
89751
89867
 
89752
- if (!paint.SetPoint(item,{ Index: obj.PointIndex })) return false;
89868
+ if (!paint.SetPoint(item,{ Index: obj.PointIndex,DataIndex:dataIndex })) return false;
89753
89869
 
89754
89870
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAG_SELECT_RECT);
89755
89871
  if (event)
@@ -91185,10 +91301,22 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
91185
91301
 
91186
91302
  if (x>=rtClient.Left && x<=rtClient.Right && y>=rtClient.Top && y<=rtClient.Bottom ) isInClient=true;
91187
91303
 
91188
- if (!this.OnWheel_ZoomUpDownFrameY(e,x,y)) return;
91304
+ var bPreventDefault=false;
91305
+ if (this.OnWheel_ChangeDayCount(e,x,y)) //ctrl+上下滚轴
91306
+ {
91307
+ bPreventDefault=true;
91308
+ }
91309
+ else
91310
+ {
91311
+ if (this.OnWheel_ZoomUpDownFrameY(e,x,y))
91312
+ bPreventDefault=true;
91313
+ }
91189
91314
 
91190
- if(e.preventDefault) e.preventDefault();
91191
- else e.returnValue = false;
91315
+ if (bPreventDefault)
91316
+ {
91317
+ if(e.preventDefault) e.preventDefault();
91318
+ else e.returnValue = false;
91319
+ }
91192
91320
  }
91193
91321
 
91194
91322
  //通过滚轴缩放Y轴
@@ -91218,6 +91346,28 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
91218
91346
  return true;
91219
91347
  }
91220
91348
 
91349
+ this.OnWheel_ChangeDayCount=function(e, x, y)
91350
+ {
91351
+ if (!e.ctrlKey) return false;
91352
+
91353
+ var wheelValue=e.wheelDelta;
91354
+ if (!IFrameSplitOperator.IsObjectExist(e.wheelDelta))
91355
+ wheelValue=e.deltaY* -0.01;
91356
+
91357
+ var value=wheelValue>=0?-1:1;
91358
+ var dayCount=this.DayCount;
91359
+
91360
+ dayCount+=value;
91361
+ if (IFrameSplitOperator.IsPlusNumber(dayCount))
91362
+ {
91363
+ if (IFrameSplitOperator.IsPlusNumber(this.MaxDayCount) && dayCount>this.MaxDayCount) return true;
91364
+
91365
+ this.ChangeDayCount(dayCount);
91366
+ }
91367
+
91368
+ return true;
91369
+ }
91370
+
91221
91371
  this.OnDoubleClick=function(x,y,e)
91222
91372
  {
91223
91373
  JSConsole.Chart.Log("[MinuteChartContainer::OnDoubleClick]", e);
@@ -91367,7 +91517,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
91367
91517
  this.ChartCorssCursor.StringFormatY.ShareAfterVol=this.ShareAfterVol;
91368
91518
  this.ChartCorssCursor.CallAcutionXOperator=new CallAcutionXOperator();
91369
91519
  this.ChartCorssCursor.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
91370
-
91520
+ this.ChartCorssCursor.OnChangeStatusCallback=(data, obj)=>{ this.OnChangeCorssCursorStatus(data,obj); }
91371
91521
 
91372
91522
  //创建等待提示
91373
91523
  this.ChartSplashPaint = new ChartSplashPaint();
@@ -131103,7 +131253,7 @@ function GetBlackStyle()
131103
131253
  Color:"rgba(255,250, 250,0.8)",
131104
131254
  TextColor:'rgba(0,0, 0, 0.8)',
131105
131255
 
131106
- MoveRowColor:'rgb(135,206,250)',
131256
+ MoveRowColor:'rgb(37,47,69)',
131107
131257
  SrcRowColor:'rgb(49,48,56)',
131108
131258
  },
131109
131259
 
@@ -133192,6 +133342,16 @@ function JSReportChart(divElement)
133192
133342
  if (this.JSChartContainer) this.JSChartContainer.SetSelectedRow(option);
133193
133343
  }
133194
133344
 
133345
+ this.DeleteSymbol=function(arySymbol, option)
133346
+ {
133347
+ if (this.JSChartContainer) this.JSChartContainer.DeleteSymbol(arySymbol, option);
133348
+ }
133349
+
133350
+ this.AddSymbol=function(arySymbol, option)
133351
+ {
133352
+ if (this.JSChartContainer) this.JSChartContainer.AddSymbol(arySymbol, option);
133353
+ }
133354
+
133195
133355
  this.EnableFilter=function(bEnable, option) //启动|关闭筛选
133196
133356
  {
133197
133357
  if (this.JSChartContainer) this.JSChartContainer.EnableFilter(bEnable, option);
@@ -134096,22 +134256,108 @@ function JSReportChartContainer(uielement)
134096
134256
  this.UpdateStockData();
134097
134257
  }
134098
134258
 
134099
- this.AutoUpdateEvent=function(bStart, explain) //自定更新事件, 是给websocket使用
134259
+ //删除股票
134260
+ this.DeleteSymbol=function(arySymbol, option)
134100
134261
  {
134101
- var eventID=bStart ? JSCHART_EVENT_ID.RECV_START_AUTOUPDATE:JSCHART_EVENT_ID.RECV_STOP_AUTOUPDATE;
134102
- if (!this.mapEvent.has(eventID)) return;
134262
+ if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return false;
134103
134263
 
134104
- var self=this;
134105
- var event=this.mapEvent.get(eventID);
134106
- var data={ Stock:{ Symbol:this.Symbol, Name:this.Name, DayCount:this.DayCount }, Explain: explain };
134107
- if (bStart)
134264
+ var setSymbol=new Set(arySymbol);
134265
+ var bFinder=false;
134266
+ if (IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data))
134108
134267
  {
134109
- data.Callback=function(data) //数据到达更新回调
134110
- {
134111
- self.RecvDealUpdateData(data);
134268
+ var aryData=[];
134269
+ for(var i=0;i<this.SourceData.Data.length;++i)
134270
+ {
134271
+ var item=this.SourceData.Data[i];
134272
+ if (setSymbol.has(item))
134273
+ {
134274
+ bFinder=true;
134275
+ continue;
134276
+ }
134277
+ aryData.push(item);
134112
134278
  }
134279
+
134280
+ if (bFinder) this.SourceData.Data=aryData;
134113
134281
  }
134114
- event.Callback(event,data,this);
134282
+
134283
+ if (IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))
134284
+ {
134285
+ var aryData=[];
134286
+ for(var i=0;i<this.Data.Data.length;++i)
134287
+ {
134288
+ var item=this.Data.Data[i];
134289
+ if (setSymbol.has(item))
134290
+ {
134291
+ bFinder=true;
134292
+ continue;
134293
+ }
134294
+ aryData.push(item);
134295
+ }
134296
+
134297
+ if (bFinder) this.Data.Data=aryData;
134298
+ }
134299
+
134300
+ if (!bFinder) return false;
134301
+
134302
+ this.Draw();
134303
+ this.UpdateStockData();
134304
+
134305
+ return true;
134306
+ }
134307
+
134308
+ //添加股票
134309
+ this.AddSymbol=function(arySymbol, option)
134310
+ {
134311
+ if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return false;
134312
+
134313
+ var bDuplicate=true;
134314
+ if (option && IFrameSplitOperator.IsBool(option.Duplicate)) bDuplicate=option.Duplicate; //是否去重
134315
+
134316
+ var mapSymbol=new Map();
134317
+ for(var i=0;i<arySymbol.length;++i)
134318
+ {
134319
+ var item={ Symbol:arySymbol[i], IsExist:false, IsExist2:false };
134320
+ mapSymbol.set(item.Symbol, item);
134321
+ }
134322
+
134323
+ if (bDuplicate)
134324
+ {
134325
+ if (IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data))
134326
+ {
134327
+ for(var i=0;i<this.SourceData.Data.length;++i)
134328
+ {
134329
+ var item=this.Data.Data[i];
134330
+ if (mapSymbol.has(item))
134331
+ {
134332
+ mapSymbol.get(item).IsExist=true;
134333
+ }
134334
+ }
134335
+ }
134336
+
134337
+ if (IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))
134338
+ {
134339
+ for(var i=0;i<this.Data.Data.length;++i)
134340
+ {
134341
+ var item=this.Data.Data[i];
134342
+ if (mapSymbol.has(item))
134343
+ {
134344
+ mapSymbol.get(item).IsExist2=true;
134345
+ }
134346
+ }
134347
+ }
134348
+ }
134349
+
134350
+ for(var mapItem of mapSymbol)
134351
+ {
134352
+ var item=mapItem[1];
134353
+ if (!item.IsExist) this.SourceData.Data.push(item.Symbol);
134354
+ if (!item.IsExist2) this.Data.Data.push(item.Symbol);
134355
+ }
134356
+
134357
+ this.Draw();
134358
+ this.UpdateStockData();
134359
+
134360
+ return true;
134115
134361
  }
134116
134362
 
134117
134363
  //下载码表
@@ -134646,7 +134892,6 @@ function JSReportChartContainer(uielement)
134646
134892
  this.StopAutoUpdate=function()
134647
134893
  {
134648
134894
  this.CancelAutoUpdate();
134649
- this.AutoUpdateEvent(false,'JSDealChartContainer::StopAutoUpdate');
134650
134895
  if (!this.IsAutoUpdate) return;
134651
134896
  this.IsAutoUpdate=false;
134652
134897
  }
@@ -151685,6 +151930,15 @@ function JSPopKeyboard()
151685
151930
  }
151686
151931
  }
151687
151932
 
151933
+ this.Destroy=function()
151934
+ {
151935
+ if (this.DivDialog) document.body.removeChild(this.DivDialog);
151936
+ this.DivDialog=null;
151937
+ this.TitleBox=null;
151938
+ if (!this.Keyboard.JSChart) this.Keyboard.JSChart.ChartDestory();
151939
+ this.Keyboard.JSChart=null;
151940
+ }
151941
+
151688
151942
  this.Create=function()
151689
151943
  {
151690
151944
  var divDom=document.createElement('div');
@@ -156398,7 +156652,7 @@ function HQChartScriptWorker()
156398
156652
 
156399
156653
 
156400
156654
 
156401
- var HQCHART_VERSION="1.1.14592";
156655
+ var HQCHART_VERSION="1.1.14603";
156402
156656
 
156403
156657
  function PrintHQChartVersion()
156404
156658
  {