hqchart 1.1.13182 → 1.1.13194

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.
@@ -279,9 +279,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
279
279
  var pixelRatio=GetDevicePixelRatio();
280
280
 
281
281
  //右键菜单
282
- if (option.IsShowRightMenu==true) chart.RightMenu=new KLineRightMenu(this.DivElement);
282
+ if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
283
283
  if (option.ScriptError) chart.ScriptErrorCallback=option.ScriptError;
284
- chart.SelectRectRightMenu=new KLineSelectRightMenu(this.DivElement);
285
284
  if (option.EnableScrollUpDown==true) chart.EnableScrollUpDown=option.EnableScrollUpDown;
286
285
  if (option.DisableMouse==true) chart.DisableMouse=option.DisableMouse;
287
286
  if (option.TouchMoveMinAngle) chart.TouchMoveMinAngle=option.TouchMoveMinAngle;
@@ -695,7 +694,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
695
694
  chart.MinuteDialog=this.MinuteDialog;
696
695
 
697
696
  //右键菜单
698
- if (option.IsShowRightMenu==true) chart.RightMenu=new KLineRightMenu(this.DivElement);
697
+ if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
699
698
 
700
699
  if (option.KLine) //k线图的属性设置
701
700
  {
@@ -915,7 +914,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
915
914
 
916
915
  if (option.MinuteInfo) chart.CreateMinuteInfo(option.MinuteInfo);
917
916
 
918
- if (option.IsShowRightMenu==true) chart.RightMenu=new MinuteRightMenu(this.DivElement);
917
+ if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
919
918
 
920
919
  if (IFrameSplitOperator.IsNumber(option.DayCount)) chart.DayCount=option.DayCount;
921
920
 
@@ -1634,6 +1633,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1634
1633
  if (!chart) return false;
1635
1634
 
1636
1635
  this.JSChartContainer=chart;
1636
+ chart.DivElement=this.DivElement;
1637
1637
 
1638
1638
  if (option.DefaultCursor) chart.DefaultCursor=option.DefaultCursor;
1639
1639
  if (option.OnCreatedCallback) option.OnCreatedCallback(chart);
@@ -1641,13 +1641,10 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
1641
1641
  //是否自动更新
1642
1642
  if (option.IsAutoUpdate!=null) chart.IsAutoUpdate=option.IsAutoUpdate;
1643
1643
  if (option.AutoUpdateFrequency>0) chart.AutoUpdateFrequency=option.AutoUpdateFrequency;
1644
+
1644
1645
  //内置菜单
1645
- if (option.EnablePopMenuV2===true)
1646
- {
1647
- chart.JSPopMenu=new JSPopMenu();
1648
- chart.JSPopMenu.Inital();
1649
- chart.EnablePopMenuV2=true;
1650
- }
1646
+ if (option.EnablePopMenuV2===true) chart.InitalPopMenu();
1647
+
1651
1648
  //注册事件
1652
1649
  if (option.EventCallback)
1653
1650
  {
@@ -2122,10 +2119,19 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
2122
2119
  {
2123
2120
  if(this.JSChartContainer && typeof(this.JSChartContainer.PopupMenuByTab)=='function')
2124
2121
  {
2125
- JSConsole.Chart.Log('[JSChart:ChangePriceGap] ');
2122
+ JSConsole.Chart.Log('[JSChart:PopupMenuByTab] ');
2126
2123
  return this.JSChartContainer.PopupMenuByTab(menuData, rtTab);
2127
2124
  }
2128
2125
  }
2126
+
2127
+ this.PopupMenuByDrapdown=function(menuData, rtButton)
2128
+ {
2129
+ if(this.JSChartContainer && typeof(this.JSChartContainer.PopupMenuByDrapdown)=='function')
2130
+ {
2131
+ JSConsole.Chart.Log('[JSChart:PopupMenuByDrapdown] ');
2132
+ return this.JSChartContainer.PopupMenuByDrapdown(menuData, rtButton);
2133
+ }
2134
+ }
2129
2135
  }
2130
2136
 
2131
2137
  JSChart.LastVersion=null; //最新的版本号
@@ -2650,6 +2656,10 @@ var JSCHART_MENU_ID=
2650
2656
 
2651
2657
  CMD_ENABLE_SELECT_RECT_ID:22, //启动区间选择
2652
2658
  CMD_CHANGE_DAY_COUNT_ID:23, //切换天数
2659
+ CMD_SHOW_BEFORE_DATA_ID:24, //显示|隐藏集合竞价
2660
+
2661
+ CMD_SELECTED_ZOOM_ID:25, //选中放大
2662
+ CMD_SELECTED_SUMMARY_ID:26, //区间统计
2653
2663
  }
2654
2664
 
2655
2665
 
@@ -2737,11 +2747,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
2737
2747
  this.LoadDataSplashTitle="数据加载中"; //下载数据提示信息
2738
2748
  this.DefaultCursor="default"; //crosshair , default 默认手型
2739
2749
 
2740
- this.EnablePopMenuV2=false;
2741
- this.JSPopMenu; //内置菜单
2742
- //this.JSPopMenu=new JSPopMenu(); //内置菜单
2743
- //this.JSPopMenu.Inital();
2744
-
2745
2750
  //绘图缓存
2746
2751
  this.CacheCanvas=null;
2747
2752
  this.CacheElement=null;
@@ -2820,9 +2825,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
2820
2825
  this.SelectRect.oncontextmenu=function() { return false; }; //屏蔽选中区域系统右键菜单
2821
2826
  uielement.parentNode.appendChild(this.SelectRect);
2822
2827
 
2823
- //区间选择右键菜单
2824
- this.SelectRectRightMenu;
2825
-
2826
2828
  //坐标轴风格方法 double-更加数值型分割 price-更加股票价格分割
2827
2829
  this.FrameSplitData=new Map();
2828
2830
  this.FrameSplitData.set("double",new SplitData());
@@ -2882,12 +2884,23 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
2882
2884
 
2883
2885
  this.StockCache={ Data:null }; //扩展数据缓存数据
2884
2886
 
2887
+ this.JSPopMenu; //内置菜单
2888
+ this.IsShowRightMenu=true; //显示右键菜单
2889
+
2885
2890
 
2886
2891
  this.ClearStockCache=function()
2887
2892
  {
2888
2893
  this.StockCache.Data=null;
2889
2894
  }
2890
2895
 
2896
+ this.InitalPopMenu=function() //初始化弹出窗口
2897
+ {
2898
+ if (this.JSPopMenu) return;
2899
+
2900
+ this.JSPopMenu=new JSPopMenu(); //内置菜单
2901
+ this.JSPopMenu.Inital();
2902
+ }
2903
+
2891
2904
  //obj={ Element:, Canvas: }
2892
2905
  this.SetCorssCursorElement=function(obj)
2893
2906
  {
@@ -3056,6 +3069,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
3056
3069
  this.UIOnContextMenu=function(e)
3057
3070
  {
3058
3071
  if (this.ChartSplashPaint && this.ChartSplashPaint.IsEnableSplash == true) return;
3072
+ if (!this.IsShowRightMenu) return;
3059
3073
 
3060
3074
  var x = e.clientX-this.UIElement.getBoundingClientRect().left;
3061
3075
  var y = e.clientY-this.UIElement.getBoundingClientRect().top;
@@ -3297,7 +3311,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
3297
3311
  }
3298
3312
 
3299
3313
  this.HideSelectRect();
3300
- if (this.SelectRectRightMenu) this.SelectRectRightMenu.Hide();
3301
3314
  if (this.ChartPictureMenu) this.ChartPictureMenu.Hide();
3302
3315
 
3303
3316
  var paint=this.GetRectSelectPaint();
@@ -3937,17 +3950,19 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
3937
3950
  }
3938
3951
  else
3939
3952
  {
3940
- if (isShowMenu && this.SelectRectRightMenu)
3953
+ if (isShowMenu)
3941
3954
  {
3942
- e.data=
3943
- {
3955
+ var data=
3956
+ {
3944
3957
  Chart:this,
3945
3958
  X:drag.LastMove.X-uielement.getBoundingClientRect().left,
3946
3959
  Y:drag.LastMove.Y-uielement.getBoundingClientRect().top,
3947
3960
  SelectData:selectData, //区间选择的数据
3948
3961
  RectSelectPaint:paint //区间选择背景
3949
3962
  };
3950
- this.SelectRectRightMenu.DoModal(e);
3963
+
3964
+ e.data=data;
3965
+ this.PopupSelectRectMenuV2(data, e);
3951
3966
  }
3952
3967
  }
3953
3968
  }
@@ -9000,6 +9015,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9000
9015
  }
9001
9016
  }
9002
9017
 
9018
+ //点tab弹菜单
9003
9019
  this.PopupMenuByTab=function(menuData, rtTab)
9004
9020
  {
9005
9021
  if (!this.JSPopMenu) return;
@@ -9023,7 +9039,32 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9023
9039
  this.JSPopMenu.PopupMenuByTab(rtCell);
9024
9040
  }
9025
9041
 
9026
- this.PopuMenuByRClick=function(menuData, x, y)
9042
+ //下拉菜单
9043
+ this.PopupMenuByDrapdown=function(menuData, rtButton)
9044
+ {
9045
+ if (!this.JSPopMenu) return;
9046
+
9047
+ var pixelRatio=GetDevicePixelRatio();
9048
+ var rtCell={ Left:rtButton.Left/pixelRatio, Right:rtButton.Right/pixelRatio, Bottom:rtButton.Bottom/pixelRatio, Top:rtButton.Top/pixelRatio };
9049
+ rtCell.Width=rtCell.Right-rtCell.Left;
9050
+ rtCell.Height=rtCell.Bottom-rtCell.Top;
9051
+
9052
+ var rtClient=this.UIElement.getBoundingClientRect();
9053
+ var rtScroll=GetScrollPosition();
9054
+
9055
+ var offsetLeft=rtClient.left+rtScroll.Left;
9056
+ var offsetTop=rtClient.top+rtScroll.Top;
9057
+ rtCell.Left+=offsetLeft;
9058
+ rtCell.Right+=offsetLeft;
9059
+ rtCell.Top+=offsetTop;
9060
+ rtCell.Bottom+=offsetTop;
9061
+
9062
+ this.JSPopMenu.CreatePopMenu(menuData);
9063
+ this.JSPopMenu.PopupMenuByDrapdown(rtCell);
9064
+ }
9065
+
9066
+ //右键菜单
9067
+ this.PopupMenuByRClick=function(menuData, x, y)
9027
9068
  {
9028
9069
  var rtClient=this.UIElement.getBoundingClientRect();
9029
9070
  var rtScroll=GetScrollPosition();
@@ -9204,6 +9245,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9204
9245
  if (this.ChangeDayCount && param!=null)
9205
9246
  this.ChangeDayCount(param);
9206
9247
  break;
9248
+ case JSCHART_MENU_ID.CMD_SHOW_BEFORE_DATA_ID:
9249
+ if (this.ShowCallAuctionData && IFrameSplitOperator.IsBool(srcParam))
9250
+ this.ShowCallAuctionData({ Left:srcParam, MultiDay:{ Left:srcParam }});
9251
+ break;
9252
+
9253
+ case JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID:
9254
+ if (this.ShowSelectData && srcParam) this.ShowSelectData(srcParam);
9255
+ break;
9256
+ case JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID:
9257
+ var dlg=new KLineSelectRectDialog(this.DivElement);
9258
+ dlg.DoModal(srcParam);
9259
+ break;
9207
9260
  }
9208
9261
  }
9209
9262
  }
@@ -12432,7 +12485,7 @@ function MinuteFrame()
12432
12485
  for(var i=0;i<this.CustomToolbar.length;++i)
12433
12486
  {
12434
12487
  var item=this.CustomToolbar[i];
12435
- if (item.ID && item.Style) aryButton.push({ ID:item.ID, Style:item.Style, TooltipText:item.TooltipText });
12488
+ if (item.ID && item.Style) aryButton.push({ ID:item.ID, Style:item.Style, TooltipText:item.TooltipText, Data:item.Data });
12436
12489
  }
12437
12490
  }
12438
12491
 
@@ -14562,7 +14615,7 @@ function KLineFrame()
14562
14615
  var item=this.CustomToolbar[i];
14563
14616
  if (item.ID && item.Style)
14564
14617
  {
14565
- var btnItem={ ID:item.ID, Style:item.Style, TooltipText:item.TooltipText};
14618
+ var btnItem={ ID:item.ID, Style:item.Style, TooltipText:item.TooltipText, Data:item.Data };
14566
14619
 
14567
14620
  if (item.IsLeft===true) //左侧按钮
14568
14621
  {
@@ -14628,7 +14681,7 @@ function KLineFrame()
14628
14681
  var item=this.CustomToolbar[i];
14629
14682
  if (item.ID && item.Style)
14630
14683
  {
14631
- var btnItem={ ID:item.ID, Style:item.Style, TooltipText:item.TooltipText};
14684
+ var btnItem={ ID:item.ID, Style:item.Style, TooltipText:item.TooltipText, Data:item.Data };
14632
14685
  if (item.IsLeft===true) aryLeftButton.push(btnItem); //左侧按钮
14633
14686
  }
14634
14687
  }
@@ -53634,7 +53687,7 @@ function DynamicChartTitlePainting()
53634
53687
  var rtButton={ Left:left, YCenter:yCenter };
53635
53688
  this.DrawButton(item, rtButton, moveonPoint, mouseStatus);
53636
53689
 
53637
- this.Buttons.push({ ID:item.ID, Rect:rtButton, FrameID:this.Frame.Identify, Type:0 }); //Type 0=主图按钮 1=附图按钮 2=主图指标名字按钮
53690
+ this.Buttons.push({ ID:item.ID, Rect:rtButton, FrameID:this.Frame.Identify, Type:0, Data:item.Data }); //Type 0=主图按钮 1=附图按钮 2=主图指标名字按钮
53638
53691
 
53639
53692
  left=rtButton.Right;
53640
53693
 
@@ -53695,7 +53748,7 @@ function DynamicChartTitlePainting()
53695
53748
  var rect=item.Rect;
53696
53749
  if (x>rect.Left && x<rect.Right && y>rect.Top && y<rect.Bottom)
53697
53750
  {
53698
- var result= { ID:item.ID, Rect:rect, FrameID:item.FrameID, Type:item.Type };
53751
+ var result= { ID:item.ID, Rect:rect, FrameID:item.FrameID, Type:item.Type, Data:item.Data };
53699
53752
  if (item.Type==1)
53700
53753
  {
53701
53754
  result.Title=item.Title;
@@ -55901,8 +55954,9 @@ function ChartDrawHLine()
55901
55954
 
55902
55955
  this.Button=
55903
55956
  {
55904
- CloseIcon: { Text:'\ue62b', Color:'rgb(255,255,255)', Family:"iconfont", Size:16 },
55905
- SettingIcon: { Text:'\ue623',Color:'rgb(255,255,255)', Family:"iconfont", Size:16 }
55957
+ CloseIcon: { Text:'\ue62b', Color:'rgb(255,255,255)', Family:"iconfont", Size:16, ID:JSCHART_BUTTON_ID.DRAW_PICTURE_DELETE, TooltipText:null },
55958
+ SettingIcon: { Text:'\ue623',Color:'rgb(255,255,255)', Family:"iconfont", Size:16, ID:JSCHART_BUTTON_ID.DRAW_PICTURE_SETTING, TooltipText:null }
55959
+ //修改ID, Text , TooltipText 可以外部定制按钮
55906
55960
  }
55907
55961
 
55908
55962
  this.AryButton=[];
@@ -56096,6 +56150,7 @@ function ChartDrawHLine()
56096
56150
  this.CalculateButtonSize();
56097
56151
  this.DrawValueText(drawPoint[0].Y, rtDraw, labInfo);
56098
56152
  if (labInfo) this.DrawRightLab(labInfo, rtDraw);
56153
+ if (labInfo) this.DrawCustomHLine(labInfo, drawPoint[0].Y);
56099
56154
  }
56100
56155
 
56101
56156
 
@@ -56235,6 +56290,53 @@ function ChartDrawHLine()
56235
56290
  }
56236
56291
  }
56237
56292
 
56293
+ this.DrawCustomHLine=function(labInfo, yLine)
56294
+ {
56295
+ if (!labInfo) return;
56296
+ if (!IFrameSplitOperator.IsNonEmptyArray(labInfo.AryLine)) return;
56297
+
56298
+ var left=this.Frame.ChartBorder.GetLeft();
56299
+ var right=this.Frame.ChartBorder.GetRight();
56300
+ var pixelRatio=GetDevicePixelRatio();
56301
+
56302
+ var yMax=yLine, yMin=yLine;
56303
+ for(var i=0;i<labInfo.AryLine.length;++i)
56304
+ {
56305
+ var item=labInfo.AryLine[i];
56306
+ if (!IFrameSplitOperator.IsNumber(item.Value)) continue;
56307
+
56308
+ var y=this.Frame.GetYFromData(item.Value);
56309
+ var yFixed=ToFixedPoint(y);
56310
+ var xRight=right;
56311
+ if (IFrameSplitOperator.IsNumber(item.Width)) xRight=left+item.Width*pixelRatio;
56312
+ if (item.Color) this.Canvas.strokeStyle=item.Color;
56313
+ else this.Canvas.strokeStyle=this.LineColor;
56314
+
56315
+ this.Canvas.beginPath();
56316
+ this.Canvas.moveTo(left,yFixed);
56317
+ this.Canvas.lineTo(xRight,yFixed);
56318
+ this.Canvas.stroke();
56319
+
56320
+ if (yMax<yFixed) yMax=yFixed;
56321
+ if (yMin>yFixed) yMin=yFixed;
56322
+ }
56323
+
56324
+ if (yMax!=yMin && labInfo.VLine)
56325
+ {
56326
+ var item=labInfo.VLine;
56327
+ var x=left+20*pixelRatio;
56328
+ if (IFrameSplitOperator.IsNumber(item.XOffset)) x=left+item.XOffset*pixelRatio;
56329
+ x=ToFixedPoint(x);
56330
+ if (item.Color) this.Canvas.strokeStyle=item.Color;
56331
+ else this.Canvas.strokeStyle=this.LineColor;
56332
+
56333
+ this.Canvas.beginPath();
56334
+ this.Canvas.moveTo(x,yMax);
56335
+ this.Canvas.lineTo(x,yMin);
56336
+ this.Canvas.stroke();
56337
+ }
56338
+ }
56339
+
56238
56340
  this.DrawValueText=function(y, rtDraw, labInfo)
56239
56341
  {
56240
56342
  var left=this.Frame.ChartBorder.GetLeft();
@@ -56379,7 +56481,7 @@ function ChartDrawHLine()
56379
56481
  this.Canvas.fillStyle=icon.Color;
56380
56482
  this.Canvas.fillText(this.Button.SettingIcon.Text,xCenter,yCenter);
56381
56483
 
56382
- this.AryButton.push({Rect:rtButton, ID:JSCHART_BUTTON_ID.DRAW_PICTURE_SETTING});
56484
+ this.AryButton.push({Rect:rtButton, ID:icon.ID, TooltipText:icon.TooltipText});
56383
56485
 
56384
56486
  /*
56385
56487
  if (this.ColseButtonSize>0)
@@ -56411,7 +56513,7 @@ function ChartDrawHLine()
56411
56513
  this.Canvas.fillStyle=icon.Color;
56412
56514
  this.Canvas.fillText(this.Button.CloseIcon.Text,xCenter,yCenter);
56413
56515
 
56414
- this.AryButton.push({Rect:rtButton,ID:JSCHART_BUTTON_ID.DRAW_PICTURE_DELETE });
56516
+ this.AryButton.push({Rect:rtButton,ID:icon.ID, TooltipText:icon.TooltipText });
56415
56517
 
56416
56518
  left=rtButton.Right;
56417
56519
  }
@@ -68411,10 +68513,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68411
68513
  isShowMenu=data.IsShowMenu;
68412
68514
  }
68413
68515
 
68414
-
68415
- if (isShowMenu && this.SelectRectRightMenu)
68516
+ if (isShowMenu)
68416
68517
  {
68417
- e.data=
68518
+ var data=
68418
68519
  {
68419
68520
  Chart:this,
68420
68521
  X:x,
@@ -68422,8 +68523,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68422
68523
  SelectData:selectData, //区间选择的数据
68423
68524
  RectSelectPaint:paint //区间选择背景
68424
68525
  };
68526
+ e.data=data;
68425
68527
 
68426
- this.SelectRectRightMenu.DoModal(e);
68528
+ this.PopupSelectRectMenuV2(data, e);
68427
68529
  }
68428
68530
  }
68429
68531
 
@@ -68458,7 +68560,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68458
68560
  this.ShowSelectData=function(selectData)
68459
68561
  {
68460
68562
  this.HideSelectRect();
68461
- if (this.SelectRectRightMenu) this.SelectRectRightMenu.Hide();
68462
68563
 
68463
68564
  JSConsole.Chart.Log('[KLineChartContainer::ShowSelectData] selectData', selectData);
68464
68565
  var dataOffset=selectData.Start;
@@ -68543,9 +68644,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68543
68644
  isShowMenu=data.IsShowMenu;
68544
68645
  }
68545
68646
 
68546
- if (isShowMenu && this.SelectRectRightMenu)
68647
+ if (isShowMenu)
68547
68648
  {
68548
- e.data=
68649
+ var data=
68549
68650
  {
68550
68651
  Chart:this,
68551
68652
  X:corssCursor.LastPoint.X/pixelTatio,
@@ -68553,7 +68654,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68553
68654
  SelectData:selectData, //区间选择的数据
68554
68655
  RectSelectPaint:paint //区间选择背景
68555
68656
  };
68556
- this.SelectRectRightMenu.DoModal(e);
68657
+ e.data=data
68658
+
68659
+ this.PopupSelectRectMenuV2(data, e);
68557
68660
  }
68558
68661
  }
68559
68662
 
@@ -72464,22 +72567,12 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72464
72567
  this.OnRightMenu=function(x,y,e)
72465
72568
  {
72466
72569
  var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
72467
- if (this.EnablePopMenuV2)
72468
- {
72469
- var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
72470
- this.PopuRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
72471
- }
72472
- else if (this.RightMenu)
72473
- {
72474
- var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
72475
- e.data={ Chart:this, FrameID:frameId };
72476
- this.RightMenu.DoModal(e);
72477
- }
72478
-
72570
+ var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
72571
+ this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
72572
+
72479
72573
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);
72480
72574
  if (event)
72481
72575
  {
72482
- var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
72483
72576
  var data={ X:x, Y:y, Event:e, FrameID:frameId };
72484
72577
  event.Callback(event,data,this);
72485
72578
  }
@@ -72746,7 +72839,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72746
72839
  return aryMenu;
72747
72840
  }
72748
72841
 
72749
- this.PopuRightMenuV2=function(data,e)
72842
+ this.PopupRightMenuV2=function(data,e)
72750
72843
  {
72751
72844
  if (!this.JSPopMenu) return;
72752
72845
  var x=data.X, y=data.Y;
@@ -72754,7 +72847,21 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72754
72847
  var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
72755
72848
  menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
72756
72849
 
72757
- this.PopuMenuByRClick(menuData, x, y);
72850
+ this.PopupMenuByRClick(menuData, x, y);
72851
+ }
72852
+
72853
+ this.PopupSelectRectMenuV2=function(data, e)
72854
+ {
72855
+ var aryMenu=
72856
+ [
72857
+ { Name:"区间统计", Data:{ ID:JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID, Args:[e] }},
72858
+ { Name:"区间放大", Data:{ ID:JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID, Args:[data.SelectData] }}
72859
+ ];
72860
+
72861
+ var menuData={ Menu:aryMenu, Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
72862
+ menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
72863
+ var x=data.X, y=data.Y;
72864
+ this.PopupMenuByRClick(menuData, x, y);
72758
72865
  }
72759
72866
 
72760
72867
  //重新加载画图工具(切换股票|周期)
@@ -74143,7 +74250,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
74143
74250
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_TITLE_BUTTON);
74144
74251
  if (event && event.Callback)
74145
74252
  {
74146
- var data={ Info:button, PreventDefault:false }; //PreventDefault 是否阻止内置的点击处理
74253
+ var data={ Info:button, PreventDefault:false, e:e }; //PreventDefault 是否阻止内置的点击处理
74147
74254
  event.Callback(event,data,this);
74148
74255
  if (data.PreventDefault) return;
74149
74256
  }
@@ -76123,22 +76230,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
76123
76230
  this.OnRightMenu=function(x,y,e)
76124
76231
  {
76125
76232
  var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
76126
- if (this.EnablePopMenuV2)
76127
- {
76128
- var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
76129
- this.PopuRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
76130
- }
76131
- else if (this.RightMenu)
76132
- {
76133
- var frameId=this.Frame.PtInFrame(x,y);
76134
- e.data={ Chart:this, FrameID:frameId };
76135
- this.RightMenu.DoModal(e);
76136
- }
76137
-
76233
+ var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
76234
+ this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
76235
+
76138
76236
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);
76139
76237
  if (event)
76140
76238
  {
76141
- var frameId=this.Frame.PtInFrame(x,y);
76142
76239
  var data={ X:x, Y:y, Event:e, FrameID:frameId };
76143
76240
  event.Callback(event,data,this);
76144
76241
  }
@@ -76156,6 +76253,9 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
76156
76253
  if (item && item.Symbol) aryOverlaySymbol.push(item.Symbol)
76157
76254
  }
76158
76255
 
76256
+ var bShowDrawTool=false;
76257
+ if (this.GetExtendChartByClassName('DrawToolsButton')) bShowDrawTool=true; //画图工具
76258
+
76159
76259
  var aryMenu=
76160
76260
  [
76161
76261
  {
@@ -76208,10 +76308,23 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
76208
76308
  },
76209
76309
  {
76210
76310
  Name:"区间选择",Data:{ ID: JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID, Args:[!this.EnableSelectRect]}, Checked:this.EnableSelectRect
76311
+ },
76312
+ {
76313
+ Name:"其他设置",
76314
+ SubMenu:
76315
+ [
76316
+ { Name:"画图工具", Data:{ ID:bShowDrawTool?JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID, Args:[]}, Checked:bShowDrawTool},
76317
+ ]
76211
76318
  }
76212
76319
 
76213
76320
  ];
76214
76321
 
76322
+ if (MARKET_SUFFIX_NAME.IsSHSZStockA(this.Symbol))
76323
+ {
76324
+ var item={ Name:"集合竞价",Data:{ ID: JSCHART_MENU_ID.CMD_SHOW_BEFORE_DATA_ID, Args:[!this.IsShowBeforeData] }, Checked:this.IsShowBeforeData };
76325
+ aryMenu.splice(4,0,item);
76326
+ }
76327
+
76215
76328
 
76216
76329
  //删除菜单
76217
76330
  for(var i=0;i<aryMenu.length;++i)
@@ -76234,7 +76347,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
76234
76347
  return aryMenu;
76235
76348
  }
76236
76349
 
76237
- this.PopuRightMenuV2=function(data,e)
76350
+ this.PopupRightMenuV2=function(data,e)
76238
76351
  {
76239
76352
  if (!this.JSPopMenu) return;
76240
76353
  var x=data.X, y=data.Y;
@@ -76242,7 +76355,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
76242
76355
  var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
76243
76356
  menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
76244
76357
 
76245
- this.PopuMenuByRClick(menuData, x, y);
76358
+ this.PopupMenuByRClick(menuData, x, y);
76246
76359
  }
76247
76360
 
76248
76361
  this.OnWheel=function(e)
@@ -86161,1479 +86274,6 @@ function WaitDialog(divElement)
86161
86274
  }
86162
86275
  }
86163
86276
 
86164
- //K线右键菜单类
86165
- //id:"kline"
86166
- function KLineRightMenu(divElement)
86167
- {
86168
- this.newMethod=IDivDialog; //派生
86169
- this.newMethod(divElement);
86170
- delete this.newMethod;
86171
-
86172
- this.option={};
86173
-
86174
- this.Create = function () {
86175
- var _self = this;
86176
-
86177
- this.ID=Guid();
86178
-
86179
- _self.BindData();
86180
- _self.BindEvent();
86181
- }
86182
- this.BindData=function(){
86183
- var _self = this;
86184
-
86185
- var id=this.DivElement.id;
86186
- var $body = $("#" + id);
86187
-
86188
- $body.find("div[id^='topMenu_']").remove();
86189
- $body.find("div[id^='childMenu_']").remove();
86190
-
86191
- var $topMenu = $("<div />");
86192
- $topMenu.attr("id", "topMenu_"+_self.ID).addClass("context-menu-wrapper topmenu").hide();
86193
- $body.append($topMenu);
86194
-
86195
- var $topTable = $("<table />");
86196
- $topTable.attr({ id: "topTable_" + _self.ID, cellspacing: "0", cellpadding: "0" }).addClass("context-menu");
86197
- $topMenu.append($topTable);
86198
-
86199
- $topTable.append(_self.childrenList(_self.option.data));
86200
-
86201
- for (var i = 0; i < _self.option.data.length; i++) {
86202
- var isHasChildren = typeof _self.option.data[i].children != "undefined";
86203
-
86204
- if (isHasChildren) {
86205
-
86206
- var $childMenu = $("<div />");
86207
- $childMenu.attr({ id: "childMenu_"+_self.ID + i, "data-index": i }).addClass("context-menu-wrapper").hide();
86208
- $body.append($childMenu);
86209
-
86210
- var $childTable = $("<table />");
86211
- $childTable.attr({ id: "childTable_" + _self.ID + i, cellspacing: "0", cellpadding: "0" }).addClass("context-menu");
86212
- $childMenu.append($childTable);
86213
-
86214
- $childTable.append(_self.childrenList(_self.option.data[i].children));
86215
- }
86216
- }
86217
- }
86218
-
86219
- this.Update=function()
86220
- {
86221
- var _self = this;
86222
- //var id=this.DivElement.id;
86223
- //var $body=$("#"+id);
86224
- //
86225
- //var $topTable = $("#topTable_" + _self.ID);
86226
- //$topTable.empty();
86227
- //$topTable.append(_self.childrenList(_self.option.data));
86228
- //
86229
- //for (var i = 0; i < _self.option.data.length; i++) {
86230
- // var isHasChildren = typeof _self.option.data[i].children != "undefined";
86231
- //
86232
- // if (isHasChildren) {
86233
- // var $childTable = $("#childTable_" + _self.ID + i);
86234
- // $childTable.empty();
86235
- // $childTable.append(_self.childrenList(_self.option.data[i].children));
86236
- // }
86237
- //}
86238
-
86239
- _self.BindData();
86240
- _self.BindEvent();
86241
- }
86242
-
86243
- this.childrenList = function(list) {
86244
- var result = [];
86245
-
86246
- for (var i = 0; i < list.length; i++) {
86247
- var isBorder = typeof list[i].isBorder != "undefined" && list[i].isBorder;
86248
-
86249
- var $tr = $("<tr />");
86250
- $tr.addClass("font_Arial context-menu");
86251
- if (isBorder)
86252
- $tr.addClass("border");
86253
-
86254
- var $td1 = $("<td />");
86255
- if(list[i].selected){
86256
- $td1.addClass("spacer context-menu").html("√");
86257
- }else{
86258
- $td1.addClass("spacer context-menu");
86259
- }
86260
-
86261
- var $td2 = $("<td />");
86262
- $td2.addClass("text").html(list[i].text);
86263
-
86264
- var $td3 = $("<td />");
86265
- $td3.addClass("right shortcut");
86266
-
86267
- var $td4 = $("<td />");
86268
- $td4.addClass(typeof list[i].children != "undefined" ? "submenu-arrow" : "context-menu spacer");
86269
-
86270
- $tr.append($td1).append($td2).append($td3).append($td4);
86271
-
86272
- result.push($tr);
86273
- }
86274
- return result;
86275
- }
86276
-
86277
- this.Show=function (obj) {
86278
- var _self = this;
86279
- $.extend(_self.option, obj);
86280
-
86281
- if (!_self.ID) _self.Create(); //判断是否重复创建
86282
- else _self.Update(); //更新菜单状态
86283
-
86284
- var $topMenu = $("#topMenu_"+_self.ID),
86285
- topWidth = $topMenu.outerWidth(),
86286
- topHeight = $topMenu.outerHeight();
86287
-
86288
- var x = _self.option.x,
86289
- y = _self.option.y;
86290
-
86291
- if (topWidth > _self.option.position.X + _self.option.position.W- x) //超过了右边距
86292
- x = x - topWidth;
86293
-
86294
- if (topHeight > _self.option.position.Y +_self.option.position.H - y)//超过了下边距
86295
- y = y - topHeight;
86296
-
86297
- $topMenu.hide();
86298
- $topMenu.css({ position:"absolute",left: x + "px", top: y + "px" }).show();
86299
-
86300
- this.isInit = true;
86301
- }
86302
-
86303
- this.Hide=function () {
86304
- var _self = this;
86305
- if (typeof($)=="undefined") return;
86306
- $("#topMenu_" + _self.ID).hide();
86307
- $("[id^='childMenu_" + _self.ID + "']").hide();
86308
- }
86309
-
86310
- this.BindEvent=function () {
86311
- var _self = this;
86312
- var $childMenu = $("[id^='childMenu_" + _self.ID + "']");
86313
-
86314
- $("#topTable_" + _self.ID).find("tr").mouseenter(function () {
86315
- var $this = $(this),
86316
- index = $this.index(),
86317
- $topMenu = $("#topMenu_" + _self.ID),
86318
- $child = $("#childMenu_" + _self.ID + index),
86319
- trWidth = $this.outerWidth(),
86320
- trHeight = $this.outerHeight();
86321
-
86322
- var left = $topMenu.position().left + trWidth + 1;
86323
- var top = $topMenu.position().top + (trHeight * index);
86324
-
86325
- if (trWidth > _self.option.position.X + _self.option.position.W - left) //超过了右边距
86326
- left = left - trWidth - $topMenu.outerWidth() - 2;
86327
-
86328
- if ($child.outerHeight() > _self.option.position.Y +_self.option.position.H - top)//超过了下边距
86329
- top = $topMenu.position().top + $topMenu.outerHeight() - $child.outerHeight();
86330
-
86331
- $childMenu.hide();
86332
- $child.css({ left: left + "px", top: top + "px" }).show();
86333
- }).mouseleave(function () {
86334
- var index = $(this).index();
86335
- setTimeout(function () {
86336
- if ($("#childMenu_" + _self.ID + index).attr("data-isShow") != 1) {
86337
- $("#childMenu_" + _self.ID + index).hide();
86338
- }
86339
- }, 10)
86340
-
86341
- }).click(function () {
86342
- var $this = $(this);
86343
- var index = $this.index();
86344
-
86345
- if ($.type(_self.option.data[index].click) == "function") {
86346
- _self.option.data[index].click(_self.option.returnData);
86347
- $this.hide();
86348
- }
86349
- }).contextmenu(function()
86350
- {
86351
- return false; //屏蔽系统右键菜单
86352
- });
86353
-
86354
-
86355
- $childMenu.mouseenter(function () {
86356
- $(this).attr("data-isShow", "1");
86357
- }).mouseleave(function () {
86358
- $(this).attr("data-isShow", "0");
86359
- }).contextmenu(function()
86360
- {
86361
- return false; //屏蔽系统右键菜单
86362
- });
86363
-
86364
- $childMenu.find("tr").click(function () {
86365
- var $this = $(this);
86366
- var divIndex = parseInt($this.closest("div").attr("data-index"));
86367
- var trIndex = $this.index();
86368
-
86369
- if ($.type(_self.option.data[divIndex].children[trIndex].click) == "function") {
86370
- _self.option.data[divIndex].children[trIndex].click(_self.option.windowIndex || 1);
86371
- $childMenu.hide();
86372
- }
86373
- });
86374
- }
86375
-
86376
- this.GetPeriod=function (chart)
86377
- {
86378
- var data=
86379
- [
86380
- {
86381
- text: "日线", Value:0,
86382
- click: function () { chart.ChangePeriod(0); }
86383
- },
86384
- {
86385
- text: "周线",Value:1,
86386
- click: function () { chart.ChangePeriod(1); }
86387
- },
86388
- {
86389
- text: "双周线",Value:21,
86390
- click: function () { chart.ChangePeriod(21); }
86391
- },
86392
- {
86393
- text: "月线",Value:2,
86394
- click: function () { chart.ChangePeriod(2); }
86395
- },
86396
- {
86397
- text: "季线",Value:9,
86398
- click: function () { chart.ChangePeriod(9); }
86399
- },
86400
- {
86401
- text: "半年",Value:22,
86402
- click: function () { chart.ChangePeriod(22); }
86403
- },
86404
- {
86405
- text: "年线",Value:3,
86406
- click: function () { chart.ChangePeriod(3); }
86407
- },
86408
- {
86409
- text: "1分",Value:4,
86410
- click: function () { chart.ChangePeriod(4); }
86411
- },
86412
- {
86413
- text: "5分",Value:5,
86414
- click: function () { chart.ChangePeriod(5); }
86415
- },
86416
- {
86417
- text: "15分",Value:6,
86418
- click: function () { chart.ChangePeriod(6); }
86419
- },
86420
- {
86421
- text: "30分",Value:7,
86422
- click: function () { chart.ChangePeriod(7); }
86423
- },
86424
- {
86425
- text: "60分",Value:8,
86426
- click: function () { chart.ChangePeriod(8); }
86427
- },
86428
- {
86429
- text: "2小时",Value:11,
86430
- click: function () { chart.ChangePeriod(11); }
86431
- },
86432
- {
86433
- text: "4小时",Value:12,
86434
- click: function () { chart.ChangePeriod(12); }
86435
- },
86436
- {
86437
- text: "分笔",Value:10,
86438
- click: function () { chart.ChangePeriod(10); }
86439
- },
86440
- {
86441
- text: "自定义周期:3分钟",Value:20003,
86442
- click: function () { chart.ChangePeriod(20003); }
86443
- },
86444
- {
86445
- text: "自定义周期:35分钟",Value:20035,
86446
- click: function () { chart.ChangePeriod(20035); }
86447
- },
86448
- {
86449
- text: "自定义周期:8日",Value:40008,
86450
- click: function () { chart.ChangePeriod(40008); }
86451
- }
86452
- ];
86453
-
86454
- for(var i in data)
86455
- {
86456
- var item=data[i];
86457
- if (item.Value==chart.Period)
86458
- {
86459
- item.selected=true;
86460
- break;
86461
- }
86462
- }
86463
-
86464
- return data;
86465
- }
86466
-
86467
- this.GetRight=function(chart)
86468
- {
86469
- var data=
86470
- [
86471
- {
86472
- text: "不复权",
86473
- click: function () { chart.ChangeRight(0); }
86474
- },
86475
- {
86476
- text: "前复权",
86477
- click: function () { chart.ChangeRight(1); }
86478
- },
86479
- {
86480
- text: "后复权",
86481
- click: function () { chart.ChangeRight(2); }
86482
- }
86483
- ];
86484
-
86485
- if (chart.Right>=0 && chart.Right<data.length) data[chart.Right].selected=true;
86486
-
86487
- return data;
86488
- }
86489
-
86490
- //指标
86491
- this.GetIndex=function (chart)
86492
- {
86493
- return [{
86494
- text: "均线",
86495
- click: function (windowIndex) {
86496
- chart.ChangeIndex(windowIndex, '均线')
86497
- }
86498
- }, {
86499
- text: "BOLL",
86500
- click: function (windowIndex) {
86501
- chart.ChangeIndex(windowIndex, 'BOLL')
86502
- },
86503
- isBorder:true
86504
- }, {
86505
- text: "MACD",
86506
- click: function (windowIndex) {
86507
- chart.ChangeIndex(windowIndex, 'MACD')
86508
- }
86509
- }, {
86510
- text: "KDJ",
86511
- click: function (windowIndex) {
86512
- chart.ChangeIndex(windowIndex, 'KDJ')
86513
- }
86514
- }, {
86515
- text: "VOL",
86516
- click: function (windowIndex) {
86517
- chart.ChangeIndex(windowIndex, 'VOL')
86518
- }
86519
- }, {
86520
- text: "RSI",
86521
- click: function (windowIndex) {
86522
- chart.ChangeIndex(windowIndex, 'RSI')
86523
- }
86524
- }, {
86525
- text: "BRAR",
86526
- click: function (windowIndex) {
86527
- chart.ChangeIndex(windowIndex, 'BRAR')
86528
- }
86529
- }, {
86530
- text: "WR",
86531
- click: function (windowIndex) {
86532
- chart.ChangeIndex(windowIndex, 'WR')
86533
- }
86534
- }, {
86535
- text: "BIAS",
86536
- click: function (windowIndex) {
86537
- chart.ChangeIndex(windowIndex, 'BIAS')
86538
- }
86539
- }, {
86540
- text: "OBV",
86541
- click: function (windowIndex) {
86542
- chart.ChangeIndex(windowIndex, 'OBV')
86543
- }
86544
- }, {
86545
- text: "DMI",
86546
- click: function (windowIndex) {
86547
- chart.ChangeIndex(windowIndex, 'DMI')
86548
- }
86549
- }, {
86550
- text: "CR",
86551
- click: function (windowIndex) {
86552
- chart.ChangeIndex(windowIndex, 'CR')
86553
- }
86554
- }, {
86555
- text: "PSY",
86556
- click: function (windowIndex) {
86557
- chart.ChangeIndex(windowIndex, 'PSY')
86558
- }
86559
- }, {
86560
- text: "CCI",
86561
- click: function (windowIndex) {
86562
- chart.ChangeIndex(windowIndex, 'CCI')
86563
- }
86564
- }, {
86565
- text: "DMA",
86566
- click: function (windowIndex) {
86567
- chart.ChangeIndex(windowIndex, 'DMA')
86568
- }
86569
- }, {
86570
- text: "TRIX",
86571
- click: function (windowIndex) {
86572
- chart.ChangeIndex(windowIndex, 'TRIX')
86573
- }
86574
- }, {
86575
- text: "VR",
86576
- click: function (windowIndex) {
86577
- chart.ChangeIndex(windowIndex, 'VR')
86578
- }
86579
- }, {
86580
- text: "EMV",
86581
- click: function (windowIndex) {
86582
- chart.ChangeIndex(windowIndex, 'EMV')
86583
- }
86584
- }, {
86585
- text: "ROC",
86586
- click: function (windowIndex) {
86587
- chart.ChangeIndex(windowIndex, 'ROC')
86588
- }
86589
- }, {
86590
- text: "MIM",
86591
- click: function (windowIndex) {
86592
- chart.ChangeIndex(windowIndex, 'MIM')
86593
- }
86594
- }, {
86595
- text: "FSL",
86596
- click: function (windowIndex) {
86597
- chart.ChangeIndex(windowIndex, 'FSL')
86598
- }
86599
- } ]
86600
- }
86601
-
86602
- //五彩K线
86603
- this.GetColorIndex=function (chart)
86604
- {
86605
- var data=
86606
- [
86607
- {
86608
- text: "十字星",
86609
- click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-十字星') }
86610
- },
86611
- {
86612
- text: "早晨之星",
86613
- click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-早晨之星') },
86614
- },
86615
- {
86616
- text: "垂死十字",
86617
- click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-垂死十字') },
86618
- },
86619
- {
86620
- text: "三只乌鸦",
86621
- click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-三只乌鸦') }
86622
- },
86623
- {
86624
- text: "光脚阴线",
86625
- click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-光脚阴线') }
86626
- },
86627
- {
86628
- text: "黄昏之星",
86629
- click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-黄昏之星') }
86630
- }
86631
- ];
86632
-
86633
- if (chart.ColorIndex)
86634
- {
86635
- data[data.length-1].isBorder=true;
86636
- data.push(
86637
- {
86638
- text: "删除五彩K线",
86639
- click: function (windowIndex) { chart.CancelInstructionIndex() }
86640
- });
86641
- }
86642
-
86643
- return data;
86644
- }
86645
-
86646
- //专家系统
86647
- this.GetTradeIndex=function(chart)
86648
- {
86649
- var data=
86650
- [
86651
- {
86652
- text: "BIAS",
86653
- click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-BIAS') }
86654
- },
86655
- {
86656
- text: "CCI",
86657
- click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-CCI') }
86658
- },
86659
- {
86660
- text: "DMI",
86661
- click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-DMI') }
86662
- },
86663
- {
86664
- text: "KD",
86665
- click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-KD') }
86666
- },
86667
- {
86668
- text: "BOLL",
86669
- click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-BOLL') }
86670
- },
86671
- {
86672
- text: "KDJ",
86673
- click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-KDJ') }
86674
- }
86675
- ];
86676
-
86677
- if (chart.TradeIndex)
86678
- {
86679
- data[data.length-1].isBorder=true;
86680
- data.push(
86681
- {
86682
- text: "删除专家系统",
86683
- click: function (windowIndex) { chart.CancelInstructionIndex()}
86684
- });
86685
- }
86686
- return data;
86687
- }
86688
-
86689
- //叠加
86690
- this.GetOverlay=function (chart)
86691
- {
86692
- var data=
86693
- [
86694
- {
86695
- text: "上证指数",
86696
- click: function () { chart.OverlaySymbol('000001.sh'); }
86697
- },
86698
- {
86699
- text: "深证成指",
86700
- click: function () { chart.OverlaySymbol('399001.sz'); }
86701
- },
86702
- {
86703
- text: "中小板指",
86704
- click: function () { chart.OverlaySymbol('399005.sz'); }
86705
- },
86706
- {
86707
- text: "创业板指",
86708
- click: function () { chart.OverlaySymbol('399006.sz'); }
86709
- },
86710
- {
86711
- text: "沪深300",
86712
- click: function () { chart.OverlaySymbol('000300.sh'); },
86713
- }
86714
- ];
86715
-
86716
- for(var i in chart.OverlayChartPaint)
86717
- {
86718
- var item=chart.OverlayChartPaint[i];
86719
- var symbol=item.Symbol;
86720
- const mapSymbol=new Map([['000001.sh',0],['399001.sz',1],['399005.sz',2],['399006.sz',3],['000300.sh',4]]);
86721
- if (mapSymbol.has(symbol))
86722
- {
86723
- var menuItem=data[mapSymbol.get(symbol)];
86724
- let delSymbol=symbol;
86725
- menuItem.selected=true;
86726
- menuItem.click=function () { chart.DeleteOverlaySymbol(delSymbol); };
86727
- }
86728
- }
86729
-
86730
- if (chart.OverlayChartPaint && chart.OverlayChartPaint.length>0)
86731
- {
86732
- data[data.length-1].isBorder=true;
86733
- data.push(
86734
- {
86735
- text: "取消叠加",
86736
- click: function () { chart.ClearOverlaySymbol();}
86737
- }
86738
- );
86739
- }
86740
-
86741
- return data;
86742
- }
86743
-
86744
- //K线类型设置
86745
- this.GetKLineType=function(chart)
86746
- {
86747
- var data=
86748
- [
86749
- {
86750
- text: "K线(空心阳线)",
86751
- click: function () { chart.ChangeKLineDrawType(3);}
86752
- },
86753
- {
86754
- text: "K线(实心阳线)",
86755
- click: function () { chart.ChangeKLineDrawType(0); }
86756
- },
86757
- {
86758
- text: "美国线",
86759
- click: function () { chart.ChangeKLineDrawType(2, true ,{ IsThinAKBar:false }); }
86760
- },
86761
- {
86762
- text: "收盘线",
86763
- click: function () { chart.ChangeKLineDrawType(1); }
86764
- },
86765
- {
86766
- text: "收盘面积",
86767
- click: function () { chart.ChangeKLineDrawType(4); }
86768
- },
86769
- {
86770
- text: "K线(空心阳线阴线)",
86771
- click: function () { chart.ChangeKLineDrawType(6);}
86772
- },
86773
- {
86774
- text: "Heikin Ashi",
86775
- click: function () { chart.ChangeKLineDrawType(11);}
86776
- },
86777
- {
86778
- text: "Line Break",
86779
- click: function () { chart.ChangeKLineDrawType(12);}
86780
- },
86781
- {
86782
- text: "High-low",
86783
- click: function () { chart.ChangeKLineDrawType(13);}
86784
- },
86785
- {
86786
- text: "HLC Area",
86787
- click: function () { chart.ChangeKLineDrawType(15);}
86788
- }
86789
- ];
86790
-
86791
- switch(chart.KLineDrawType)
86792
- {
86793
- case 0:
86794
- data[1].selected=true;
86795
- break;
86796
- case 1:
86797
- data[3].selected=true;
86798
- break;
86799
- case 2:
86800
- data[2].selected=true;
86801
- break;
86802
- case 3:
86803
- data[0].selected=true;
86804
- break;
86805
- case 4:
86806
- data[4].selected=true;
86807
- break;
86808
- case 6:
86809
- data[5].selected=true;
86810
- break;
86811
- case 11:
86812
- data[6].selected=true;
86813
- break;
86814
- case 12:
86815
- data[7].selected=true;
86816
- break;
86817
- case 13:
86818
- data[8].selected=true;
86819
- break;
86820
- case 15:
86821
- data[9].selected=true;
86822
- break;
86823
- }
86824
- return data;
86825
- }
86826
-
86827
- //指标窗口个数
86828
- this.GetIndexWindowCount=function(chart)
86829
- {
86830
- var data=
86831
- [
86832
- {
86833
- text: "1个窗口",
86834
- click: function () { chart.ChangeIndexWindowCount(1); }
86835
- },
86836
- {
86837
- text: "2个窗口",
86838
- click: function () { chart.ChangeIndexWindowCount(2); }
86839
- },
86840
- {
86841
- text: "3个窗口",
86842
- click: function () { chart.ChangeIndexWindowCount(3); }
86843
- },
86844
- {
86845
- text: "4个窗口",
86846
- click: function () { chart.ChangeIndexWindowCount(4); }
86847
- },
86848
- {
86849
- text: "5个窗口",
86850
- click: function () { chart.ChangeIndexWindowCount(5); }
86851
- }
86852
- ];
86853
-
86854
- var count=chart.Frame.SubFrame.length;
86855
- if ((count-1)>=0 && (count-1)<data.length) data[count-1].selected=true; //选中
86856
-
86857
- return data;
86858
- }
86859
-
86860
- //坐标类型
86861
- this.GetCoordinateType=function(chart)
86862
- {
86863
- var data=
86864
- [
86865
- {
86866
- text: "普通坐标",
86867
- click: function () { chart.ChangeCoordinateType( {Type:0} ); }
86868
- },
86869
- {
86870
- text: "百分比坐标",
86871
- click: function () { chart.ChangeCoordinateType( {Type:1} ); }
86872
- },
86873
- {
86874
- text: "反转坐标",
86875
- click: function () { chart.ChangeCoordinateType( { IsReverse:true } ); }
86876
- },
86877
- {
86878
- text: "对数坐标",
86879
- click: function () { chart.ChangeCoordinateType( {Type:2} ); }
86880
- },
86881
- {
86882
- text: "等比坐标",
86883
- click: function () { chart.ChangeCoordinateType( {Type:3} ); }
86884
- },
86885
- {
86886
- text: "等分坐标",
86887
- click: function () { chart.ChangeCoordinateType( {Type:4} ); }
86888
- },
86889
- {
86890
- text: "黄金分割",
86891
- click: function () { chart.ChangeCoordinateType( {Type:5} ); }
86892
- }
86893
- ];
86894
-
86895
- if (chart.Frame && chart.Frame.SubFrame && chart.Frame.SubFrame.length>0)
86896
- {
86897
- if (chart.Frame.SubFrame[0].Frame.CoordinateType==1)
86898
- {
86899
- data[2].selected=true;
86900
- data[2].click=function() { chart.ChangeCoordinateType( { IsReverse:false } ); } //取消反转
86901
- }
86902
-
86903
- if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==1) data[1].selected=true; //百分比
86904
- else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==0) data[0].selected=true; //普通坐标
86905
- else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==2) data[3].selected=true; //对数
86906
- else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==3) data[4].selected=true; //等比坐标
86907
- else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==4) data[5].selected=true; //等分坐标
86908
- else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==5) data[6].selected=true; //黄金分割
86909
- }
86910
-
86911
- return data;
86912
- }
86913
-
86914
- //拖拽模式
86915
- this.GetDragModeType=function(chart)
86916
- {
86917
- var data=
86918
- [
86919
- {
86920
- text: "禁止拖拽",
86921
- click: function () { chart.DragMode=0; }
86922
- },
86923
- {
86924
- text: "启动拖拽",
86925
- click: function () { chart.DragMode=1; }
86926
- },
86927
- {
86928
- text: "区间选择",
86929
- click: function () { chart.DragMode=2; }
86930
- }
86931
- ];
86932
-
86933
- if (chart.DragMode>=0 && chart.DragMode<data.length) data[chart.DragMode].selected=true; //选中
86934
-
86935
- return data;
86936
- }
86937
-
86938
- //工具
86939
- this.GetTools=function(chart)
86940
- {
86941
- var data=[];
86942
- var drawTools=chart.GetExtendChartByClassName('DrawToolsButton');
86943
- if (drawTools)
86944
- {
86945
- data.push(
86946
- {
86947
- text: "关闭画图工具",
86948
- click: function ()
86949
- {
86950
- var toolsWidth=drawTools.Chart.Width;
86951
- var toolsIndex=parseInt(drawTools.Index);
86952
- for(var i=toolsIndex+1; i<chart.ExtendChartPaint.length; ++i) //在画图工具后面创建的需要减去工具的宽度
86953
- {
86954
- var item=chart.ExtendChartPaint[i];
86955
- if (item.ClassName=='StockChip')
86956
- {
86957
- item.Left-=toolsWidth;
86958
- }
86959
- }
86960
- chart.DeleteExtendChart(drawTools);
86961
- chart.Frame.ChartBorder.Right-=toolsWidth;
86962
- chart.SetSizeChange(true);
86963
- chart.Draw();
86964
- }
86965
- }
86966
- );
86967
- }
86968
- else
86969
- {
86970
- data.push(
86971
- {
86972
- text: "画图工具",
86973
- click: function () {
86974
- var option={Name:'画图工具', Top:chart.Frame.ChartBorder.Top };
86975
- var extendChart=chart.CreateExtendChart(option.Name, option); //创建扩展图形
86976
- chart.SetSizeChange(true);
86977
- chart.Draw();
86978
- }
86979
- }
86980
- );
86981
- }
86982
-
86983
- var StockChip=chart.GetExtendChartByClassName('StockChip');
86984
- if (StockChip)
86985
- {
86986
- data.push(
86987
- {
86988
- text: "关闭移动筹码",
86989
- click: function ()
86990
- {
86991
- var chipWidth=StockChip.Chart.Width;
86992
- var chipIndex=parseInt(StockChip.Index);
86993
- for(var i=chipIndex+1; i<chart.ExtendChartPaint.length; ++i) //在筹码后面创建的需要筹码的宽度
86994
- {
86995
- var item=chart.ExtendChartPaint[i];
86996
- if (item.ClassName=='DrawToolsButton')
86997
- {
86998
- item.Left-=chipWidth;
86999
- }
87000
- }
87001
- chart.DeleteExtendChart(StockChip);
87002
- chart.Frame.ChartBorder.Right-=chipWidth;
87003
- chart.SetSizeChange(true);
87004
- chart.Draw();
87005
- }
87006
-
87007
- }
87008
- );
87009
- }
87010
- else
87011
- {
87012
- data.push(
87013
- {
87014
- text: "移动筹码",
87015
- click: function () {
87016
- var option={Name:'筹码分布', ShowType:1, Width:230 };
87017
- var extendChart=chart.CreateExtendChart(option.Name, option); //创建扩展图形
87018
- chart.SetSizeChange(true);
87019
- chart.Draw();
87020
- }
87021
- }
87022
- );
87023
- }
87024
-
87025
- return data;
87026
- }
87027
-
87028
- //缺口提示
87029
- this.GetPriceGap=function(chart)
87030
- {
87031
- var klineChart=chart.ChartPaint[0];
87032
- var priceGap=klineChart.PriceGap;
87033
- var data=
87034
- [
87035
- {
87036
- text: "显示1个缺口",
87037
- click: function () { chart.ChangePriceGap({ Enable:true, Count:1 }); }
87038
- },
87039
- {
87040
- text: "显示2个缺口",
87041
- click: function () { chart.ChangePriceGap({ Enable:true, Count:2 }); }
87042
- },
87043
- {
87044
- text: "显示3个缺口",
87045
- click: function () { chart.ChangePriceGap({ Enable:true, Count:3 }); }
87046
- },
87047
- {
87048
- text: "隐藏缺口",
87049
- click: function () { chart.ChangePriceGap({ Enable:false }); }
87050
- }
87051
- ];
87052
-
87053
- if (!priceGap.Enable || priceGap.Count<=0)
87054
- {
87055
- data[data.length-1].selected=true; //选中
87056
- }
87057
- else if (priceGap.Enable && priceGap.Count>0)
87058
- {
87059
- var index=priceGap.Count-1;
87060
- if (index>data.length-2) index=data.length-2;
87061
- data[index].selected=true; //选中
87062
- }
87063
-
87064
- return data;
87065
- }
87066
-
87067
- this.GetBGSplit=function(chart)
87068
- {
87069
- var data=
87070
- [
87071
- {
87072
- text: "启用",
87073
- click: function ()
87074
- {
87075
- chart.CreateExtendChart("SessionBreaksPaint", { });
87076
- chart.Draw();
87077
- }
87078
- },
87079
- {
87080
- text: "关闭",
87081
- click: function ()
87082
- {
87083
- var finder=chart.GetExtendChartByClassName("SessionBreaksPaint");
87084
- if (finder)
87085
- {
87086
- chart.DeleteExtendChartByID(finder.Chart.ID);
87087
- chart.Draw();
87088
- }
87089
- }
87090
- },
87091
- ];
87092
-
87093
- var finder=chart.GetExtendChartByClassName("SessionBreaksPaint");
87094
- if (finder) data[0].selected=true;
87095
- else data[1].selected=true;
87096
-
87097
- return data;
87098
- }
87099
-
87100
-
87101
- this.GetKLineInfo=function(chart)
87102
- {
87103
- var setInfo=new Set();
87104
- for(var i in chart.ChartInfo)
87105
- {
87106
- var item=chart.ChartInfo[i];
87107
- setInfo.add(item.ClassName);
87108
- }
87109
-
87110
- var aryKLineInfo=["公告","业绩预告","调研","大宗交易","龙虎榜","互动易"]
87111
-
87112
- var data=[];
87113
- for(var i in aryKLineInfo)
87114
- {
87115
- var infoName=aryKLineInfo[i];
87116
- var classInfo=JSKLineInfoMap.GetClassInfo(infoName);
87117
- if (!classInfo) continue;
87118
-
87119
- var item=this.CreateKlineInfoItem(infoName, setInfo.has(classInfo.ClassName), chart);
87120
- data.push(item);
87121
- }
87122
-
87123
- if (chart.ChartInfo.length>0)
87124
- {
87125
- data[data.length-1].isBorder=true;
87126
- var item={ text:'删除所有', click:function() { chart.ClearKLineInfo()} };
87127
- data.push(item);
87128
-
87129
- }
87130
-
87131
- return data;
87132
- }
87133
-
87134
- this.CreateKlineInfoItem=function(infoName,bExist,chart)
87135
- {
87136
- var item=
87137
- {
87138
- text:infoName,
87139
- selected:bExist
87140
- }
87141
-
87142
- if (bExist) item.click=function() { chart.DeleteKLineInfo(infoName) };
87143
- else item.click=function() { chart.AddKLineInfo(infoName,true) }
87144
-
87145
- return item;
87146
- }
87147
-
87148
- this.DoModal=function(event)
87149
- {
87150
- var chart=event.data.Chart;
87151
- var rightMenu=chart.RightMenu;
87152
- var x = event.offsetX;
87153
- var y = event.offsetY;
87154
-
87155
- var dataList=[{
87156
- text: "分析周期",
87157
- children: this.GetPeriod(chart)
87158
- },
87159
- {
87160
- text: "复权处理",
87161
- children: this.GetRight(chart)
87162
- },
87163
- {
87164
- text: "指标切换",
87165
- children: this.GetIndex(chart)
87166
- },
87167
- {
87168
- text:"五彩K线",
87169
- children: this.GetColorIndex(chart)
87170
- },
87171
- {
87172
- text:'专家系统',
87173
- children: this.GetTradeIndex(chart)
87174
- },
87175
- {
87176
- text:'信息地雷',
87177
- children: this.GetKLineInfo(chart)
87178
- },
87179
- {
87180
- text:'缺口提示',
87181
- children: this.GetPriceGap(chart)
87182
- },
87183
- {
87184
- text: "叠加品种",
87185
- children: this.GetOverlay(chart)
87186
- },
87187
- {
87188
- text:'主图线型',
87189
- children: this.GetKLineType(chart)
87190
- },
87191
- {
87192
- text:"坐标类型",
87193
- children:this.GetCoordinateType(chart)
87194
- },
87195
- {
87196
- text:'指标窗口个数',
87197
- children: this.GetIndexWindowCount(chart)
87198
- },
87199
- {
87200
- text:'鼠标拖拽',
87201
- children: this.GetDragModeType(chart)
87202
- },
87203
- {
87204
- text:"工具",
87205
- children:this.GetTools(chart)
87206
- },
87207
- {
87208
- text:"背景分割",
87209
- children:this.GetBGSplit(chart)
87210
- }
87211
- ];
87212
-
87213
- var upperSymbol=chart.Symbol.toUpperCase();
87214
- if(MARKET_SUFFIX_NAME.IsSHSZIndex(chart.Symbol) || MARKET_SUFFIX_NAME.IsBIT(upperSymbol))
87215
- {
87216
- dataList.splice(1,1);
87217
- }
87218
-
87219
- var identify=event.data.FrameID;
87220
- var overlayIndex=this.GetOverlayIndex(chart,identify);
87221
- if (overlayIndex && overlayIndex.length>0)
87222
- {
87223
- var delOverlayIndexMenu={ text:'删除叠加指标', children:this.GetDeleteOverlayIndex(chart,overlayIndex) }
87224
- dataList.splice(3,0,delOverlayIndexMenu);
87225
- }
87226
-
87227
- JSConsole.Chart.Log('[KLineRightMenu::DoModal]',identify);
87228
- rightMenu.Show({
87229
- windowIndex :identify,
87230
- x:x+chart.UIElement.offsetLeft,
87231
- y:y+chart.UIElement.offsetTop,
87232
- position:chart.Frame.Position,
87233
- data:dataList
87234
- })
87235
-
87236
- $(document).click(function () {
87237
- rightMenu.Hide();
87238
- });
87239
- }
87240
-
87241
- this.GetOverlayIndex=function(chart, windowsIndex)
87242
- {
87243
- if (windowsIndex>=chart.Frame.SubFrame.length || windowsIndex<0) return [];
87244
-
87245
- var result=[];
87246
- var item=chart.Frame.SubFrame[windowsIndex];
87247
- for(var i in item.OverlayIndex)
87248
- {
87249
- var overlayItem=item.OverlayIndex[i];
87250
- result.push({Name:overlayItem.Script.Name, Identify:overlayItem.Identify});
87251
- }
87252
-
87253
- return result;
87254
- }
87255
-
87256
- this.GetDeleteOverlayIndex=function(chart,overlayIndex)
87257
- {
87258
- var data=[];
87259
- for(var i in overlayIndex)
87260
- {
87261
- let identify=overlayIndex[i].Identify;
87262
- data.push({text:overlayIndex[i].Name, click:function()
87263
- {
87264
- chart.DeleteOverlayWindowsIndex(identify)
87265
- }});
87266
- }
87267
-
87268
- return data;
87269
- }
87270
- }
87271
-
87272
- //K线区间选择右键菜单
87273
- function KLineSelectRightMenu(divElement)
87274
- {
87275
- this.newMethod=KLineRightMenu; //派生
87276
- this.newMethod(divElement);
87277
- delete this.newMethod;
87278
-
87279
- this.DoModal=function(event)
87280
- {
87281
- var chart=event.data.Chart;
87282
- var rightMenu=this;
87283
- var x = event.data.X;
87284
- var y = event.data.Y;
87285
-
87286
- var dataList=
87287
- [
87288
- {
87289
- text: "区间统计",
87290
- click: function ()
87291
- {
87292
- JSConsole.Chart.Log('[KLineSelectRightMenu::click] 区间统计');
87293
- rightMenu.Hide();
87294
- var dialog=new KLineSelectRectDialog(divElement);
87295
- dialog.DoModal(event);
87296
- }
87297
- },
87298
- {
87299
- text:'区间放大',
87300
- click:function()
87301
- {
87302
- JSConsole.Chart.Log('[KLineSelectRightMenu::click] 区间放大');
87303
- var chart=event.data.Chart;
87304
- chart.ShowSelectData(event.data.SelectData);
87305
- }
87306
- }
87307
- ];
87308
-
87309
- rightMenu.Show({
87310
- x:x,
87311
- y:y,
87312
- position:chart.Frame.Position,
87313
- data:dataList
87314
- });
87315
- }
87316
-
87317
- this.Show=function (obj)
87318
- {
87319
- var _self = this;
87320
- $.extend(_self.option, obj);
87321
-
87322
- //判断是否重复创建
87323
- if (!_self.ID) _self.Create();
87324
- //判断下如果DOM没了需要重新创建
87325
- var divIdName='topMenu_'+_self.ID;
87326
- var divDom=document.getElementById(divIdName);
87327
- if (!divDom) _self.Create();
87328
-
87329
- var $topMenu = $("#topMenu_"+_self.ID),
87330
- topWidth = $topMenu.outerWidth(),
87331
- topHeight = $topMenu.outerHeight();
87332
-
87333
- $topMenu.contextmenu(function()
87334
- {
87335
- return false; //屏蔽系统右键菜单
87336
- });
87337
-
87338
- var x = _self.option.x,
87339
- y = _self.option.y;
87340
-
87341
- if (topWidth > _self.option.position.X + _self.option.position.W- x) //超过了右边距
87342
- x = x - topWidth;
87343
-
87344
- if (topHeight > _self.option.position.Y +_self.option.position.H - y)//超过了下边距
87345
- y = y - topHeight;
87346
-
87347
- $topMenu.hide();
87348
- $topMenu.css({ position:"absolute",left: x + "px", top: y + "px" }).show();
87349
-
87350
- $("#topMenu_" + _self.ID).find("tr").show(); //把菜单列表显示
87351
-
87352
- this.isInit = true;
87353
- }
87354
- }
87355
-
87356
- //分钟数据右键菜单
87357
- function MinuteRightMenu(divElement)
87358
- {
87359
- this.newMethod=KLineRightMenu; //派生
87360
- this.newMethod(divElement);
87361
- delete this.newMethod;
87362
-
87363
- this.DoModal=function(event)
87364
- {
87365
- var chart=event.data.Chart;
87366
- var rightMenu=chart.RightMenu;
87367
- var x = event.offsetX;
87368
- var y = event.offsetY;
87369
-
87370
- var dataList=
87371
- [
87372
- {
87373
- text: "叠加品种",
87374
- children: this.GetOverlay(chart)
87375
- },
87376
- {
87377
- text: "多日分时图",
87378
- children: this.GetDayCount(chart)
87379
- },
87380
- {
87381
- text:'指标窗口个数',
87382
- children: this.GetIndexWindowCount(chart)
87383
- },
87384
- {
87385
- text: "副图指标切换",
87386
- children: this.GetIndex(chart)
87387
- },
87388
- {
87389
- text:"区间选择",
87390
- children:this.GetSelectRect(chart)
87391
- },
87392
-
87393
- ];
87394
-
87395
- var symbol=chart.Symbol;
87396
- if (MARKET_SUFFIX_NAME.IsSHSZStockA(symbol))
87397
- {
87398
- dataList.push({text:'集合竞价',children: this.GetShowBeforeData(chart)});
87399
- }
87400
-
87401
- dataList.push({text:"工具", children:this.GetTools(chart)});
87402
-
87403
- var identify=event.data.FrameID;
87404
- var overlayIndex=this.GetOverlayIndex(chart,identify);
87405
- if (overlayIndex && overlayIndex.length>0)
87406
- {
87407
- var delOverlayIndexMenu={ text:'删除叠加指标', children:this.GetDeleteOverlayIndex(chart,overlayIndex) }
87408
- dataList.splice(3,0,delOverlayIndexMenu);
87409
- }
87410
-
87411
- var identify=event.data.FrameID;
87412
- JSConsole.Chart.Log('[MinuteRightMenu::DoModal]',identify);
87413
- rightMenu.Show({
87414
- windowIndex :identify,
87415
- x:x+chart.UIElement.offsetLeft,
87416
- y:y+chart.UIElement.offsetTop,
87417
- position:chart.Frame.Position,
87418
- data:dataList
87419
- })
87420
-
87421
- $(document).click(function () {
87422
- rightMenu.Hide();
87423
- });
87424
- }
87425
-
87426
- this.GetDayCount=function(chart)
87427
- {
87428
- var data=
87429
- [
87430
- {
87431
- text: "当日分时图",
87432
- click: function () { chart.ChangeDayCount(1); },
87433
- isBorder:true
87434
- },
87435
- {
87436
- text: "最近2日",
87437
- click: function () { chart.ChangeDayCount(2); }
87438
- },
87439
- {
87440
- text: "最近3日",
87441
- click: function () { chart.ChangeDayCount(3); }
87442
- },
87443
- {
87444
- text: "最近4日",
87445
- click: function () { chart.ChangeDayCount(4); }
87446
- },
87447
- {
87448
- text: "最近5日",
87449
- click: function () { chart.ChangeDayCount(5); }
87450
- },
87451
- {
87452
- text: "最近6日",
87453
- click: function () { chart.ChangeDayCount(6); }
87454
- }
87455
- ];
87456
-
87457
- if ((chart.DayCount-1)>=0 && (chart.DayCount-1)<data.length) data[chart.DayCount-1].selected=true;
87458
-
87459
- return data;
87460
- }
87461
-
87462
- this.GetIndex=function (chart)
87463
- {
87464
- var data=
87465
- [
87466
- {
87467
- text: "MACD",
87468
- click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'MACD') }
87469
- },
87470
- {
87471
- text: "DMI",
87472
- click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'DMI') }
87473
- },
87474
- {
87475
- text: "DMA",
87476
- click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'DMA') }
87477
- },
87478
- {
87479
- text: "BRAR",
87480
- click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'BRAR') }
87481
- },
87482
- {
87483
- text: "KDJ",
87484
- click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'KDJ') }
87485
- },
87486
- {
87487
- text: "RSI",
87488
- click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'RSI') }
87489
- },
87490
- {
87491
- text: "WR",
87492
- click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'WR') }
87493
- },
87494
- {
87495
- text: "CCI",
87496
- click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'CCI') }
87497
- },
87498
- {
87499
- text: "TRIX",
87500
- click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'TRIX') }
87501
- }
87502
- ];
87503
-
87504
- return data;
87505
- }
87506
-
87507
- this.GetShowBeforeData=function(chart) //是否显示集合竞价
87508
- {
87509
- if (chart.IsShowBeforeData)
87510
- {
87511
- var data=
87512
- [
87513
- {
87514
- text: "隐藏",
87515
- click: function () { chart.ShowCallAuctionData( { Left:false, MultiDay:{ Left:false }} ); },
87516
- }
87517
- ];
87518
-
87519
- return data;
87520
- }
87521
- else
87522
- {
87523
- var data=
87524
- [
87525
- {
87526
- text: "显示",
87527
- click: function () { chart.ShowCallAuctionData({Left:true, MultiDay:{ Left:true }}); },
87528
- }
87529
- ];
87530
-
87531
- return data;
87532
- }
87533
- }
87534
-
87535
- this.GetSelectRect=function(chart) //区间选择
87536
- {
87537
- if (chart.EnableSelectRect)
87538
- {
87539
- var data=
87540
- [
87541
- {
87542
- text: "禁用区间选择",
87543
- click: function () { chart.EnableSelectRect=false; },
87544
- }
87545
- ];
87546
-
87547
- return data;
87548
- }
87549
- else
87550
- {
87551
- var data=
87552
- [
87553
- {
87554
- text: "启动区间选择",
87555
- click: function () { chart.EnableSelectRect=true },
87556
- }
87557
- ];
87558
-
87559
- return data;
87560
- }
87561
- }
87562
-
87563
- //指标窗口个数
87564
- this.GetIndexWindowCount=function(chart)
87565
- {
87566
- var data=
87567
- [
87568
- {
87569
- text: "1个窗口",
87570
- click: function () { chart.ChangeIndexWindowCount(2); }
87571
- },
87572
- {
87573
- text: "2个窗口",
87574
- click: function () { chart.ChangeIndexWindowCount(3); }
87575
- },
87576
- {
87577
- text: "3个窗口",
87578
- click: function () { chart.ChangeIndexWindowCount(4); }
87579
- },
87580
- {
87581
- text: "4个窗口",
87582
- click: function () { chart.ChangeIndexWindowCount(5); }
87583
- },
87584
- {
87585
- text: "5个窗口",
87586
- click: function () { chart.ChangeIndexWindowCount(6); }
87587
- }
87588
- ];
87589
-
87590
- var count=chart.Frame.SubFrame.length-1;
87591
- if ((count-1)>=0 && (count-1)<data.length) data[count-1].selected=true; //选中
87592
-
87593
- return data;
87594
- }
87595
-
87596
- //工具
87597
- this.GetTools=function(chart)
87598
- {
87599
- var data=[];
87600
- var drawTools=chart.GetExtendChartByClassName('DrawToolsButton');
87601
- if (drawTools)
87602
- {
87603
- data.push(
87604
- {
87605
- text: "关闭画图工具",
87606
- click: function ()
87607
- {
87608
- var toolsWidth=drawTools.Chart.Width;
87609
- var toolsIndex=parseInt(drawTools.Index);
87610
- chart.DeleteExtendChart(drawTools);
87611
- chart.Frame.ChartBorder.Right-=toolsWidth;
87612
- chart.SetSizeChange(true);
87613
- chart.Draw();
87614
- }
87615
- }
87616
- );
87617
- }
87618
- else
87619
- {
87620
- data.push(
87621
- {
87622
- text: "画图工具",
87623
- click: function () {
87624
- var option={Name:'画图工具', Top:chart.Frame.ChartBorder.Top };
87625
- var extendChart=chart.CreateExtendChart(option.Name, option); //创建扩展图形
87626
- chart.SetSizeChange(true);
87627
- chart.Draw();
87628
- }
87629
- }
87630
- );
87631
- }
87632
-
87633
- return data;
87634
- }
87635
- }
87636
-
87637
86277
  //画图工具 单个图形设置
87638
86278
  function ChartPictureSettingMenu(divElement)
87639
86279
  {