hqchart 1.1.15455 → 1.1.15480

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.
@@ -271,6 +271,21 @@ function JSPopKeyboard()
271
271
  var x=xRight-width;
272
272
  var y=ybottom-height;
273
273
 
274
+ if (this.Keyboard.JSChart && this.Keyboard.JSChart.JSChartContainer)
275
+ {
276
+ var event=this.Keyboard.JSChart.JSChartContainer.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_SHOW);
277
+ if (event && event.Callback)
278
+ {
279
+ var data={ PreventDefault:false, Y:y, X:x, Height:height, Width:width };
280
+ event.Callback(event, data, this);
281
+ if (data.PreventDefault) return;
282
+
283
+ //修改显示位置
284
+ x=data.X;
285
+ y=data.Y;
286
+ }
287
+ }
288
+
274
289
  this.DivDialog.style.visibility='visible';
275
290
  this.DivDialog.style.top = y + "px";
276
291
  this.DivDialog.style.left = x + "px";
@@ -296,6 +311,19 @@ function JSPopKeyboard()
296
311
  return this.DivDialog.style.visibility==='visible';
297
312
  }
298
313
 
314
+ this.PopKeyboard=function(search)
315
+ {
316
+ if (!this.DivDialog) return;
317
+ if (this.IsShow()) return;
318
+
319
+ this.Show();
320
+ this.InputDOM.focus();
321
+ if (this.InputDOM.value=="")
322
+ {
323
+ if (search) this.InputDOM.value=search;
324
+ }
325
+ }
326
+
299
327
  this.OnGlobalKeydown=function(event)
300
328
  {
301
329
  if (!this.DivDialog) return;
@@ -462,10 +462,19 @@ function JSStatusBarChartContainer(uielement)
462
462
  var x = (e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;
463
463
  var y = (e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;
464
464
 
465
- if (e && e.button==0) //左键点击
465
+ if (e)
466
466
  {
467
- var ptClick={ X:this.ClickDownPoint.X, Y:this.ClickDownPoint.Y };
468
- this.TryClickPaintEvent(JSCHART_EVENT_ID.ON_CLICK_STATUSBAR_ITEM, ptClick, e);
467
+ if (e.button==0) //左键点击
468
+ {
469
+ var ptClick={ X:this.ClickDownPoint.X, Y:this.ClickDownPoint.Y };
470
+ this.TryClickPaintEvent(JSCHART_EVENT_ID.ON_CLICK_STATUSBAR_ITEM, ptClick, e);
471
+ }
472
+ else if (e.button==2) //右键点击
473
+ {
474
+ this.HideAllTooltip();
475
+ var ptClick={ X:this.ClickDownPoint.X, Y:this.ClickDownPoint.Y };
476
+ this.TryClickPaintEvent(JSCHART_EVENT_ID.ON_RCLICK_STATUSBAR_ITEM, ptClick, e);
477
+ }
469
478
  }
470
479
  }
471
480
 
@@ -551,7 +560,7 @@ function JSStatusBarChartContainer(uielement)
551
560
  {
552
561
  if (toolTip.Data)
553
562
  {
554
- var data= { X:e.clientX, Y:e.clientY, Tooltip:toolTip };
563
+ var data= { X:e.clientX, Y:e.clientY, Tooltip:toolTip, e:e };
555
564
  event.Callback(event, data, this);
556
565
  return true;
557
566
  }
@@ -72,6 +72,7 @@ function JSStockInfoChart(divElement)
72
72
  this.DivElement.JSChart=this; //div中保存一份
73
73
 
74
74
  if (option.EnableResize==true) this.CreateResizeListener();
75
+ if (option.EnablePopMenuV2===true) chart.InitalPopMenu();
75
76
 
76
77
  if (option.Symbol)
77
78
  {
@@ -273,6 +274,8 @@ function JSStockInfoChartContainer(uielement)
273
274
  this.AutoUpdateTimer=null;
274
275
  this.AutoUpdateFrequency=15000; //15秒更新一次数据
275
276
 
277
+ this.JSPopMenu; //内置菜单
278
+
276
279
  this.UIElement=uielement;
277
280
 
278
281
  this.IsDestroy=false; //是否已经销毁了
@@ -281,6 +284,8 @@ function JSStockInfoChartContainer(uielement)
281
284
  {
282
285
  this.IsDestroy=true;
283
286
  this.StopAutoUpdate();
287
+
288
+ this.DestroyPopMenu();
284
289
  }
285
290
 
286
291
  //设置事件回调
@@ -293,6 +298,37 @@ function JSStockInfoChartContainer(uielement)
293
298
  this.mapEvent.set(object.event,data);
294
299
  }
295
300
 
301
+ this.RemoveEventCallback=function(eventid)
302
+ {
303
+ if (!this.mapEvent.has(eventid)) return;
304
+
305
+ this.mapEvent.delete(eventid);
306
+ }
307
+
308
+ this.GetEventCallback=function(id) //获取事件回调
309
+ {
310
+ if (!this.mapEvent.has(id)) return null;
311
+ var item=this.mapEvent.get(id);
312
+ return item;
313
+ }
314
+
315
+ this.InitalPopMenu=function() //初始化弹出窗口
316
+ {
317
+ if (this.JSPopMenu) return;
318
+
319
+ this.JSPopMenu=new JSPopMenu(); //内置菜单
320
+ this.JSPopMenu.Inital();
321
+ }
322
+
323
+ this.DestroyPopMenu=function()
324
+ {
325
+ if (!this.JSPopMenu) return;
326
+
327
+ this.JSPopMenu.Destroy();
328
+ this.JSPopMenu=null;
329
+ }
330
+
331
+
296
332
  this.ClearData=function()
297
333
  {
298
334
  this.Data.Name=null;
@@ -334,14 +370,15 @@ function JSStockInfoChartContainer(uielement)
334
370
  {
335
371
  this.CancelAutoUpdate();
336
372
  this.ClearData();
373
+ this.ChartClearMouseOnData();
337
374
  this.Symbol=symbol;
338
375
  this.Data.Symbol=symbol;
339
376
 
340
377
  if (option)
341
378
  {
342
- if (IFrameSplitOperator.IsNonEmptyArray(option.Column)) this.SetColumn(option.Column);
379
+ if (IFrameSplitOperator.IsArray(option.Column)) this.SetColumn(option.Column);
343
380
  if (IFrameSplitOperator.IsNumber(option.BuySellCount)) this.SetBuySellCount(option.BuySellCount);
344
- if (IFrameSplitOperator.IsNonEmptyArray(option.MouseOnKey)) this.SetMouseOnKey(option.MouseOnKey);
381
+ if (IFrameSplitOperator.IsArray(option.MouseOnKey)) this.SetMouseOnKey(option.MouseOnKey);
345
382
  }
346
383
 
347
384
  this.Draw();
@@ -506,6 +543,20 @@ function JSStockInfoChartContainer(uielement)
506
543
  this.ClickDownPoint={ X:e.clientX, Y:e.clientY };
507
544
  var x = (e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;
508
545
  var y = (e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;
546
+
547
+ if (e)
548
+ {
549
+ if (e.button==0) //左键点击
550
+ {
551
+ var ptClick={ X:this.ClickDownPoint.X, Y:this.ClickDownPoint.Y };
552
+ this.TryClickPaintEvent(JSCHART_EVENT_ID.ON_CLICK_STOCKINFO_ITEM, ptClick, e);
553
+ }
554
+ else if (e.button==2) //右键点击
555
+ {
556
+ var ptClick={ X:this.ClickDownPoint.X, Y:this.ClickDownPoint.Y };
557
+ this.TryClickPaintEvent(JSCHART_EVENT_ID.ON_RCLICK_STOCKINFO_ITEM, ptClick, e);
558
+ }
559
+ }
509
560
  }
510
561
 
511
562
  this.UIOnContextMenu=function(e)
@@ -516,6 +567,87 @@ function JSStockInfoChartContainer(uielement)
516
567
  if (e.stopPropagation) e.stopPropagation();
517
568
  e.returnValue=false;
518
569
  }
570
+
571
+ var x = e.clientX-this.UIElement.getBoundingClientRect().left;
572
+ var y = e.clientY-this.UIElement.getBoundingClientRect().top;
573
+
574
+ this.OnRightMenu(x, y, e);
575
+ }
576
+
577
+ this.OnRightMenu=function(x,y,e)
578
+ {
579
+ if (!this.JSPopMenu) return;
580
+
581
+ var pixelTatio = GetDevicePixelRatio();
582
+ var toolTip=new TooltipData();
583
+ var data=null;
584
+ for(var i=0;i<this.ChartPaint.length;++i)
585
+ {
586
+ var item=this.ChartPaint[i];
587
+ if (item.GetTooltipData(x*pixelTatio,y*pixelTatio,toolTip))
588
+ {
589
+ if (toolTip.Data)
590
+ {
591
+ data= { Cell:toolTip.Data};
592
+ break;
593
+ }
594
+ }
595
+ }
596
+
597
+ if (!data) return;
598
+
599
+ data.e=e;
600
+ var menuData={ Menu:null, Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
601
+ menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
602
+
603
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_RIGHT_MENU);
604
+ if (event && event.Callback)
605
+ {
606
+ var sendData={ MenuData:menuData, Data:data };
607
+ event.Callback(event, sendData, this);
608
+ }
609
+
610
+ if (menuData.Menu) this.PopupMenuByRClick(menuData, x, y);
611
+ }
612
+
613
+ //右键菜单
614
+ this.PopupMenuByRClick=function(menuData, x, y)
615
+ {
616
+ if (!this.JSPopMenu) return;
617
+
618
+ var rtClient=this.UIElement.getBoundingClientRect();
619
+ var rtScroll=GetScrollPosition();
620
+
621
+ x+=rtClient.left+rtScroll.Left;
622
+ y+=rtClient.top+rtScroll.Top;
623
+
624
+ this.JSPopMenu.CreatePopMenu(menuData);
625
+ this.JSPopMenu.PopupMenuByRight(x,y);
626
+ }
627
+
628
+ //点击右键菜单
629
+ this.OnClickRightMenu=function(data)
630
+ {
631
+ JSConsole.Chart.Log('[JSStockInfoChartContainer::OnClickRightMenu] ',data);
632
+ if (!data || !data.Data) return;
633
+
634
+ var cmdID=data.Data.ID; //命令ID
635
+ var aryArgs=data.Data.Args; //参数
636
+
637
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MENU_COMMAND); //回调通知外部
638
+ if (event && event.Callback)
639
+ {
640
+ var data={ PreventDefault:false, CommandID:cmdID, Args:aryArgs, SrcData:data };
641
+ event.Callback(event,data,this);
642
+ if (data.PreventDefault) return;
643
+ }
644
+
645
+ this.ExecuteMenuCommand(cmdID, aryArgs);
646
+ }
647
+
648
+ this.ExecuteMenuCommand=function(cmdID, aryArgs)
649
+ {
650
+
519
651
  }
520
652
 
521
653
  this.UIOnMouseMove=function(e)
@@ -545,6 +677,36 @@ function JSStockInfoChartContainer(uielement)
545
677
  return false;
546
678
  }
547
679
 
680
+ this.TryClickPaintEvent=function(eventID, ptClick, e)
681
+ {
682
+ var event=this.GetEventCallback(eventID);
683
+ if (!event) return false;
684
+
685
+ if (ptClick.X==e.clientX && ptClick.Y==e.clientY)
686
+ {
687
+ var pixelTatio = GetDevicePixelRatio();
688
+ var x = (e.clientX-uielement.getBoundingClientRect().left)*pixelTatio;
689
+ var y = (e.clientY-uielement.getBoundingClientRect().top)*pixelTatio;
690
+
691
+ var toolTip=new TooltipData();
692
+ for(var i=0;i<this.ChartPaint.length;++i)
693
+ {
694
+ var item=this.ChartPaint[i];
695
+ if (item.GetTooltipData(x,y,toolTip))
696
+ {
697
+ if (toolTip.Data)
698
+ {
699
+ var data= { X:e.clientX, Y:e.clientY, Tooltip:toolTip };
700
+ event.Callback(event, data, this);
701
+ return true;
702
+ }
703
+ }
704
+ }
705
+ }
706
+
707
+ return false;
708
+ }
709
+
548
710
  this.UIOnMouseleave=function(e)
549
711
  {
550
712
  var option={ Update:false }
@@ -830,7 +992,7 @@ function ChartStockData()
830
992
 
831
993
  this.ClearMouseOnData=function(option)
832
994
  {
833
- if (!this.MouseOnItem)
995
+ if (this.MouseOnItem)
834
996
  {
835
997
  this.MouseOnItem=null;
836
998
  if (option) option.Update=true; //需要更新
@@ -909,6 +1071,26 @@ function ChartStockData()
909
1071
  return false;
910
1072
  }
911
1073
 
1074
+ this.GetTooltipData=function(x,y,tooltip)
1075
+ {
1076
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryCellRect)) return false;
1077
+
1078
+ for(var i=0;i<this.AryCellRect.length;++i)
1079
+ {
1080
+ var item=this.AryCellRect[i];
1081
+ var rect=item.Rect;
1082
+ if (Path2DHelper.PtInRect(x,y, rect))
1083
+ {
1084
+ tooltip.Data=item;
1085
+ tooltip.ChartPaint=this;
1086
+ tooltip.Type=151;
1087
+ return true;
1088
+ }
1089
+ }
1090
+
1091
+ return false;
1092
+ }
1093
+
912
1094
  this.Draw=function()
913
1095
  {
914
1096
  this.AryCellRect=[];
@@ -305,8 +305,8 @@ var Character =
305
305
  (cp >= 0x41 && cp <= 0x5A) ||
306
306
  (cp >= 0x61 && cp <= 0x7A) ||
307
307
  (cp === 0x5C) ||
308
- //【】▲▼
309
- (cp===0x3010 || cp===0x3011 || cp===0x25B2 || cp===0x25BC) ||
308
+ //【】▲▼ ↓↑←→
309
+ (cp===0x3010 || cp===0x3011 || cp===0x25B2 || cp===0x25BC) || (cp>=0x2190 && cp<=0x2193) ||
310
310
  ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(Character.FromCodePoint(cp)));
311
311
  },
312
312
 
@@ -317,8 +317,8 @@ var Character =
317
317
  (cp >= 0x61 && cp <= 0x7A) ||
318
318
  (cp >= 0x30 && cp <= 0x39) ||
319
319
  (cp === 0x5C) || (cp===0x23) ||
320
- //【】▲▼
321
- (cp===0x3010 || cp===0x3011 || cp===0x25B2 || cp===0x25BC) ||
320
+ //【】▲▼ ↓↑←→
321
+ (cp===0x3010 || cp===0x3011 || cp===0x25B2 || cp===0x25BC) || (cp>=0x2190 && cp<=0x2193) ||
322
322
  ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(Character.FromCodePoint(cp)));
323
323
  },
324
324
 
@@ -2700,6 +2700,15 @@ JSChart.GetShortSymbol=function(symbol)
2700
2700
  return symbol.slice(0,pos);
2701
2701
  }
2702
2702
 
2703
+ JSChart.CancelEvent=function(e)
2704
+ {
2705
+ if (!e) return;
2706
+
2707
+ if (e.preventDefault) e.preventDefault();
2708
+ if (e.stopPropagation) e.stopPropagation();
2709
+ e.returnValue=false;
2710
+ }
2711
+
2703
2712
 
2704
2713
  var JSCHART_EVENT_ID=
2705
2714
  {
@@ -2788,9 +2797,6 @@ var JSCHART_EVENT_ID=
2788
2797
  ON_DRAG_SUB_SELECT_RECT:66, //拖拽区间选择子区域
2789
2798
  ON_DRAG_SUB_SELECT_RECT_MOUSEUP:67, //拖拽区间选择子区域鼠标松开
2790
2799
 
2791
- ON_KEYBOARD_SELECTED:68, //键盘精灵选中回车
2792
- ON_KEYBOARD_MOUSEUP:69,
2793
-
2794
2800
  ON_CLICK_DRAWPICTURE_BUTTON:70, //画图工具按钮
2795
2801
  ON_FINISH_MOVE_DRAWPICTURE:71, //画图工具移动完成
2796
2802
 
@@ -2936,6 +2942,15 @@ var JSCHART_EVENT_ID=
2936
2942
 
2937
2943
  //工具条
2938
2944
  ON_CLICK_STATUSBAR_ITEM:301,
2945
+ ON_RCLICK_STATUSBAR_ITEM:302,
2946
+
2947
+ //5档买卖
2948
+ ON_CLICK_STOCKINFO_ITEM:350,
2949
+ ON_RCLICK_STOCKINFO_ITEM:351,
2950
+
2951
+ ON_KEYBOARD_SHOW:350, //显示键盘精灵
2952
+ ON_KEYBOARD_SELECTED:351, //键盘精灵选中回车
2953
+ ON_KEYBOARD_MOUSEUP:352,
2939
2954
  }
2940
2955
 
2941
2956
  var JSCHART_OPERATOR_ID=
@@ -27378,6 +27393,7 @@ function IChartPainting()
27378
27393
  if (!this.IsShow || this.ChartFrame.IsMinSize) return;
27379
27394
  var bHScreen=(this.ChartFrame.IsHScreen===true);
27380
27395
  if (bHScreen) return;
27396
+ if (!this.Data) return;
27381
27397
 
27382
27398
  var isMinute=this.IsMinuteFrame();
27383
27399
  var dataWidth=this.ChartFrame.DataWidth;
@@ -27518,6 +27534,7 @@ function IChartPainting()
27518
27534
  if (!this.IsShow || this.ChartFrame.IsMinSize) return null;
27519
27535
  var bHScreen=(this.ChartFrame.IsHScreen===true);
27520
27536
  if (bHScreen) return null;
27537
+ if (!this.Data) return null;
27521
27538
 
27522
27539
  var dataWidth=this.ChartFrame.DataWidth;
27523
27540
  var distanceWidth=this.ChartFrame.DistanceWidth;
@@ -103055,6 +103072,24 @@ var MARKET_SUFFIX_NAME=
103055
103072
  return false;
103056
103073
  },
103057
103074
 
103075
+ //是否包含前缀
103076
+ IsPrefixIncludes:function(symbol, aryPrefix)
103077
+ {
103078
+ if (!symbol) return false;
103079
+ var shortSymbol=this.GetShortSymbol(symbol);
103080
+ if (!shortSymbol) return false;
103081
+ shortSymbol=shortSymbol.toUpperCase();
103082
+
103083
+ for(var i=0;i<aryPrefix.length;++i)
103084
+ {
103085
+ var strValue=aryPrefix[i];
103086
+ if (!strValue) continue;
103087
+ if (shortSymbol.search(strValue)===0) return true;
103088
+ }
103089
+
103090
+ return false;
103091
+ },
103092
+
103058
103093
  IsChinaFutures:function(upperSymbol) //是否是国内期货 /期权
103059
103094
  {
103060
103095
  if (!upperSymbol) return false;
@@ -103169,15 +103204,26 @@ var MARKET_SUFFIX_NAME=
103169
103204
  return false;
103170
103205
  },
103171
103206
 
103207
+ //北交所股票代码全面启用“920”开头的六位数编码规则(如 920XXX),已于 2025 年 10 月 9 日完成存量与增量股票的统一切换,标志着其与新三板代码的脱钩。
103208
+ // 新代码通常将原 43、83、87 开头的旧代码前三位变更为 920,后三位保持不变
103172
103209
  IsBJStock:function(symbol) //北交所股票
103173
103210
  {
103174
103211
  if (!symbol) return false;
103175
103212
  var upperSymbol=symbol.toUpperCase();
103176
103213
  if (!this.IsBJ(upperSymbol)) return false;
103177
103214
 
103178
- var value=upperSymbol.charAt(0);
103215
+ if (upperSymbol.charAt(0)=='9' && upperSymbol.charAt(1)=='2' && upperSymbol.charAt(2)=='0') return true;
103216
+
103217
+ return false;
103218
+ },
103219
+
103220
+ IsBJIndex:function(symbol) //北交所指数 北交所指数代码通常以“899”开头,采用6位数字序列
103221
+ {
103222
+ if (!symbol) return false;
103223
+ var upperSymbol=symbol.toUpperCase();
103224
+ if (!this.IsBJ(upperSymbol)) return false;
103179
103225
 
103180
- if (value=='4' || value=='8') return true;
103226
+ if (upperSymbol.charAt(0)=='8' && upperSymbol.charAt(1)=='9' && upperSymbol.charAt(2)=='9') return true;
103181
103227
 
103182
103228
  return false;
103183
103229
  },
@@ -103193,11 +103239,11 @@ var MARKET_SUFFIX_NAME=
103193
103239
  return false;
103194
103240
  },
103195
103241
 
103196
- IsSHGEM:function(symbol) //创业板(growth enterprise market) 30开头
103242
+ IsSZGEM:function(symbol) //创业板(growth enterprise market) 30开头
103197
103243
  {
103198
103244
  if (!symbol) return false;
103199
103245
  var upperSymbol=symbol.toUpperCase();
103200
- if (!this.IsSH(upperSymbol)) return false;
103246
+ if (!this.IsSZ(upperSymbol)) return false;
103201
103247
  if (upperSymbol.charAt(0)=='3' && upperSymbol.charAt(1)=='0')
103202
103248
  return true;
103203
103249
 
@@ -103341,7 +103387,7 @@ var MARKET_SUFFIX_NAME=
103341
103387
  {
103342
103388
  if (!this.IsSHSZStockA(symbol)) return null;
103343
103389
  if (this.IsSHStockSTAR(symbol)) return {Max:0.2 , Min:-0.2}; //科创板 [20% - -20%]
103344
- if (this.IsSHGEM(symbol)) return { Max:0.2 , Min:-0.2}; //创业板 [20% - -20%]
103390
+ if (this.IsSZGEM(symbol)) return { Max:0.2 , Min:-0.2}; //创业板 [20% - -20%]
103345
103391
 
103346
103392
  if (!name) return null;
103347
103393
  if (name.indexOf('ST')>=0) return { Max:0.05, Min:-0.05 }; //ST 股票 [5% - -5%]
@@ -105258,6 +105304,7 @@ function FuturesTimeData()
105258
105304
  [MARKET_SUFFIX_NAME.SHFE + '-AO', {Time:4,Decimal:0,Name:'氧化铝'}],
105259
105305
  [MARKET_SUFFIX_NAME.SHFE + '-BR', {Time:6,Decimal:0,Name:'合成橡胶'}],
105260
105306
  [MARKET_SUFFIX_NAME.SHFE + '-AD', {Time:4,Decimal:0,Name:"铝合金"}],
105307
+ [MARKET_SUFFIX_NAME.SHFE + '-OP', {Time:6,Decimal:0,Name:"胶版印刷纸"}],
105261
105308
 
105262
105309
  //上期所-能源
105263
105310
  [MARKET_SUFFIX_NAME.SHFE + '-NR', {Time:6,Decimal:1,Name:'20号胶'}],
@@ -106819,59 +106866,6 @@ function GetfloatPrecision(symbol) //获取小数位数
106819
106866
  return defaultfloatPrecision;
106820
106867
  }
106821
106868
 
106822
- //把不连续的分时数据转成连续的分时数据
106823
- function GenerateMinuteStockJsonData(data)
106824
- {
106825
- var stock =
106826
- {
106827
- symbol:data.symbol, name:data.name,time:data.time, date:data.date,
106828
- price:data.price, open:data.open, yclose:data.yclose, high:data.high, low:data.low, vol:data.vol,amount:data.amount,
106829
- minute:[]
106830
- };
106831
-
106832
- var mapMinute=new Map();
106833
- for(var i in data.minute)
106834
- {
106835
- var item=data.minute[i];
106836
- mapMinute.set(item.time,item);
106837
- }
106838
-
106839
- var timeData=g_MinuteTimeStringData.GetTimeData(stock.symbol);
106840
- for(var i in timeData) //根据交易时间产生数据
106841
- {
106842
- var time=timeData[i];
106843
- var minuteItem={ time:time, vaild:false };
106844
- if (mapMinute.has(time))
106845
- {
106846
- var find=mapMinute.get(time);
106847
- minuteItem.vaild=true;
106848
- minuteItem.price=find.price;
106849
- minuteItem.open=find.open;
106850
- minuteItem.high=find.high;
106851
- minuteItem.low=find.low;
106852
- minuteItem.avprice=find.avprice;
106853
- minuteItem.vol=find.vol;
106854
- minuteItem.amount=find.amount;
106855
- if (IFrameSplitOperator.IsNumber(find.increase)) minuteItem.increase=find.increase;
106856
- if (IFrameSplitOperator.IsNumber(find.risefall)) minuteItem.risefall=find.risefall;
106857
- if (IFrameSplitOperator.IsNumber(find.position)) minuteItem.position=find.position;
106858
- }
106859
- stock.minute.push(minuteItem);
106860
- }
106861
-
106862
- var vaildCount=0;
106863
- for(var i=stock.minute.length-1;i>=0;--i)
106864
- {
106865
- vaildCount=i+1;
106866
- var item=stock.minute[i];
106867
- if (item.vaild==true) break;
106868
- }
106869
-
106870
- stock.minute=stock.minute.slice(0,vaildCount); //去掉最后无用的数据
106871
-
106872
- return stock;
106873
- }
106874
-
106875
106869
  function GetLocalTime(i) //得到标准时区的时间的函数
106876
106870
  {
106877
106871
  if (typeof i !== 'number') return;