hqchart 1.1.13171 → 1.1.13191
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.
- package/lib/umychart.vue.js +304 -272
- package/package.json +1 -1
- package/src/jscommon/umychart.js +903 -1620
- package/src/jscommon/umychart.popMenu.js +311 -0
- package/src/jscommon/umychart.resource/css/tools.css +135 -0
- package/src/jscommon/umychart.resource/css/umychart.popmenu.css +129 -0
- package/src/jscommon/umychart.resource/font/iconfont.css +7 -3
- package/src/jscommon/umychart.resource/font/iconfont.ttf +0 -0
- package/src/jscommon/umychart.resource/font/iconfont.woff +0 -0
- package/src/jscommon/umychart.resource/font/iconfont.woff2 +0 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +904 -1621
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +1219 -1622
|
@@ -4211,11 +4211,12 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4211
4211
|
chart.ModifyIndexDialog=this.ModifyIndexDialog;
|
|
4212
4212
|
chart.ChangeIndexDialog=this.ChangeIndexDialog;
|
|
4213
4213
|
chart.MinuteDialog=this.MinuteDialog;
|
|
4214
|
+
|
|
4215
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
4214
4216
|
|
|
4215
4217
|
//右键菜单
|
|
4216
|
-
if (option.IsShowRightMenu
|
|
4218
|
+
if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
|
|
4217
4219
|
if (option.ScriptError) chart.ScriptErrorCallback=option.ScriptError;
|
|
4218
|
-
chart.SelectRectRightMenu=new KLineSelectRightMenu(this.DivElement);
|
|
4219
4220
|
if (option.EnableScrollUpDown==true) chart.EnableScrollUpDown=option.EnableScrollUpDown;
|
|
4220
4221
|
if (option.DisableMouse==true) chart.DisableMouse=option.DisableMouse;
|
|
4221
4222
|
if (option.TouchMoveMinAngle) chart.TouchMoveMinAngle=option.TouchMoveMinAngle;
|
|
@@ -4429,8 +4430,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4429
4430
|
chart.Frame.SubFrame[i].Frame.IsShowYText[1]=item.IsShowRightText;
|
|
4430
4431
|
chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowRightText=item.IsShowRightText; //显示右边刻度
|
|
4431
4432
|
}
|
|
4432
|
-
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace;
|
|
4433
|
-
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace;
|
|
4433
|
+
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;
|
|
4434
|
+
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;
|
|
4434
4435
|
|
|
4435
4436
|
if (item.RightTextPosition>0) chart.Frame.SubFrame[i].Frame.YTextPosition[1]=item.RightTextPosition;
|
|
4436
4437
|
if (item.LeftTextPosition>0) chart.Frame.SubFrame[i].Frame.YTextPosition[0]=item.LeftTextPosition;
|
|
@@ -4629,7 +4630,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4629
4630
|
chart.MinuteDialog=this.MinuteDialog;
|
|
4630
4631
|
|
|
4631
4632
|
//右键菜单
|
|
4632
|
-
if (option.IsShowRightMenu
|
|
4633
|
+
if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
|
|
4633
4634
|
|
|
4634
4635
|
if (option.KLine) //k线图的属性设置
|
|
4635
4636
|
{
|
|
@@ -4732,6 +4733,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4732
4733
|
chart.ModifyIndexDialog=this.ModifyIndexDialog;
|
|
4733
4734
|
chart.ChangeIndexDialog=this.ChangeIndexDialog;
|
|
4734
4735
|
|
|
4736
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
4737
|
+
|
|
4735
4738
|
var windowsCount=2;
|
|
4736
4739
|
if (option.Windows && option.Windows.length>0) windowsCount+=option.Windows.length; //指标窗口从第3个窗口开始
|
|
4737
4740
|
if (option.EnableScrollUpDown==true) chart.EnableScrollUpDown=option.EnableScrollUpDown;
|
|
@@ -4847,7 +4850,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4847
4850
|
|
|
4848
4851
|
if (option.MinuteInfo) chart.CreateMinuteInfo(option.MinuteInfo);
|
|
4849
4852
|
|
|
4850
|
-
if (option.IsShowRightMenu
|
|
4853
|
+
if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
|
|
4851
4854
|
|
|
4852
4855
|
if (IFrameSplitOperator.IsNumber(option.DayCount)) chart.DayCount=option.DayCount;
|
|
4853
4856
|
|
|
@@ -4899,8 +4902,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4899
4902
|
if (IFrameSplitOperator.IsNumber(item.YTextBaseline)) chart.Frame.SubFrame[i].Frame.YTextBaseline=item.YTextBaseline;
|
|
4900
4903
|
if (IFrameSplitOperator.IsBool(item.IsShowIndexTitle)) chart.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;
|
|
4901
4904
|
|
|
4902
|
-
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace;
|
|
4903
|
-
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace;
|
|
4905
|
+
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;
|
|
4906
|
+
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;
|
|
4904
4907
|
|
|
4905
4908
|
//是否显示关闭集合竞价按钮
|
|
4906
4909
|
if (IFrameSplitOperator.IsNumber(item.CloseBeforeButton)) chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;
|
|
@@ -5566,6 +5569,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5566
5569
|
if (!chart) return false;
|
|
5567
5570
|
|
|
5568
5571
|
this.JSChartContainer=chart;
|
|
5572
|
+
chart.DivElement=this.DivElement;
|
|
5569
5573
|
|
|
5570
5574
|
if (option.DefaultCursor) chart.DefaultCursor=option.DefaultCursor;
|
|
5571
5575
|
if (option.OnCreatedCallback) option.OnCreatedCallback(chart);
|
|
@@ -5573,6 +5577,10 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5573
5577
|
//是否自动更新
|
|
5574
5578
|
if (option.IsAutoUpdate!=null) chart.IsAutoUpdate=option.IsAutoUpdate;
|
|
5575
5579
|
if (option.AutoUpdateFrequency>0) chart.AutoUpdateFrequency=option.AutoUpdateFrequency;
|
|
5580
|
+
|
|
5581
|
+
//内置菜单
|
|
5582
|
+
if (option.EnablePopMenuV2===true) chart.InitalPopMenu();
|
|
5583
|
+
|
|
5576
5584
|
//注册事件
|
|
5577
5585
|
if (option.EventCallback)
|
|
5578
5586
|
{
|
|
@@ -5599,19 +5607,6 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5599
5607
|
this.DivElement.JSChart=this; //div中保存一份
|
|
5600
5608
|
this.JSChartContainer.Draw();
|
|
5601
5609
|
}
|
|
5602
|
-
|
|
5603
|
-
if (IFrameSplitOperator.IsBool(option.CheckLatestVerion) && option.CheckLatestVerion==false)
|
|
5604
|
-
{
|
|
5605
|
-
|
|
5606
|
-
}
|
|
5607
|
-
else if (JSChart.LastVersion==null)
|
|
5608
|
-
{
|
|
5609
|
-
if (chart && typeof(chart.GetLatestVersion)=='function')
|
|
5610
|
-
{
|
|
5611
|
-
//由于域名都要备案,获取最新版本接口停止使用
|
|
5612
|
-
//chart.GetLatestVersion();
|
|
5613
|
-
}
|
|
5614
|
-
}
|
|
5615
5610
|
}
|
|
5616
5611
|
|
|
5617
5612
|
//创建工具条
|
|
@@ -6055,6 +6050,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
6055
6050
|
return this.JSChartContainer.ChangePriceGap(option);
|
|
6056
6051
|
}
|
|
6057
6052
|
}
|
|
6053
|
+
|
|
6054
|
+
this.PopupMenuByTab=function(menuData, rtTab)
|
|
6055
|
+
{
|
|
6056
|
+
if(this.JSChartContainer && typeof(this.JSChartContainer.PopupMenuByTab)=='function')
|
|
6057
|
+
{
|
|
6058
|
+
JSConsole.Chart.Log('[JSChart:ChangePriceGap] ');
|
|
6059
|
+
return this.JSChartContainer.PopupMenuByTab(menuData, rtTab);
|
|
6060
|
+
}
|
|
6061
|
+
}
|
|
6058
6062
|
}
|
|
6059
6063
|
|
|
6060
6064
|
JSChart.LastVersion=null; //最新的版本号
|
|
@@ -6260,6 +6264,12 @@ JSChart.ToFixedRect=function(value)
|
|
|
6260
6264
|
return ToFixedRect(value);
|
|
6261
6265
|
}
|
|
6262
6266
|
|
|
6267
|
+
JSChart.GetScrollPosition=function()
|
|
6268
|
+
{
|
|
6269
|
+
return GetScrollPosition();
|
|
6270
|
+
}
|
|
6271
|
+
|
|
6272
|
+
|
|
6263
6273
|
|
|
6264
6274
|
|
|
6265
6275
|
var JSCHART_EVENT_ID=
|
|
@@ -6545,6 +6555,40 @@ var JSCHART_WORKER_MESSAGE_ID=
|
|
|
6545
6555
|
ERROR_EXECUTE_SCRIPT:3,
|
|
6546
6556
|
}
|
|
6547
6557
|
|
|
6558
|
+
var JSCHART_MENU_ID=
|
|
6559
|
+
{
|
|
6560
|
+
CMD_CHANGE_PERIOD_ID:1, //切换周期
|
|
6561
|
+
CMD_CHANGE_WINDOW_COUNT_ID:2, //窗口个数
|
|
6562
|
+
CMD_CHANGE_RIGHT_ID:3, //复权
|
|
6563
|
+
CMD_CHANGE_INDEX_ID:4, //切换指标
|
|
6564
|
+
CMD_CHANGE_COLOR_INDEX_ID:5, //五彩K线指标
|
|
6565
|
+
CMD_CHANGE_TRADE_INDEX_ID:6, //专家系统(交易指标)
|
|
6566
|
+
CMD_DELETE_COLOR_INDEX_ID:7, //删除五彩K线指标
|
|
6567
|
+
CMD_DELETE_TRADE_INDEX_ID:8, //删除专家系统(交易指标)
|
|
6568
|
+
CMD_CHANGE_KLINE_TYPE_ID:9, //切换K线类型
|
|
6569
|
+
CMD_CHANGE_PRICE_GAP_ID:10, //缺口提示
|
|
6570
|
+
CMD_OVERLAY_SYMBOL_ID:11, //叠加品种
|
|
6571
|
+
CMD_DELETE_ALL_OVERLAY_SYMBOL_ID:12, //删除所有叠加品种
|
|
6572
|
+
CMD_CHANGE_COORDINATETYPE_ID:13, //切换坐标类型
|
|
6573
|
+
CMD_CHANGE_KLINE_INFO_ID:14, //切换信息地雷
|
|
6574
|
+
CMD_DELETE_ALL_KLINE_INFO_ID:15, //清空信息地雷
|
|
6575
|
+
CMD_CHANGE_DRAG_MODE_ID:16, //切换拖动模式
|
|
6576
|
+
CMD_CHANGE_BG_SPLIT_ID:17, //背景分割
|
|
6577
|
+
|
|
6578
|
+
CMD_SHOW_DRAWTOOL_ID:18, //画图工具
|
|
6579
|
+
CMD_HIDE_DRAWTOOL_ID:19,
|
|
6580
|
+
|
|
6581
|
+
CMD_SHOW_STOCKCHIP_ID:20, //筹码分布
|
|
6582
|
+
CMD_HIDE_STOCKCHIP_ID:21,
|
|
6583
|
+
|
|
6584
|
+
CMD_ENABLE_SELECT_RECT_ID:22, //启动区间选择
|
|
6585
|
+
CMD_CHANGE_DAY_COUNT_ID:23, //切换天数
|
|
6586
|
+
CMD_SHOW_BEFORE_DATA_ID:24, //显示|隐藏集合竞价
|
|
6587
|
+
|
|
6588
|
+
CMD_SELECTED_ZOOM_ID:25, //选中放大
|
|
6589
|
+
CMD_SELECTED_SUMMARY_ID:26, //区间统计
|
|
6590
|
+
}
|
|
6591
|
+
|
|
6548
6592
|
|
|
6549
6593
|
function PhoneDBClick()
|
|
6550
6594
|
{
|
|
@@ -6708,9 +6752,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6708
6752
|
this.SelectRect.oncontextmenu=function() { return false; }; //屏蔽选中区域系统右键菜单
|
|
6709
6753
|
uielement.parentNode.appendChild(this.SelectRect);
|
|
6710
6754
|
|
|
6711
|
-
//区间选择右键菜单
|
|
6712
|
-
this.SelectRectRightMenu;
|
|
6713
|
-
|
|
6714
6755
|
//坐标轴风格方法 double-更加数值型分割 price-更加股票价格分割
|
|
6715
6756
|
this.FrameSplitData=new Map();
|
|
6716
6757
|
this.FrameSplitData.set("double",new SplitData());
|
|
@@ -6770,12 +6811,23 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6770
6811
|
|
|
6771
6812
|
this.StockCache={ Data:null }; //扩展数据缓存数据
|
|
6772
6813
|
|
|
6814
|
+
this.JSPopMenu; //内置菜单
|
|
6815
|
+
this.IsShowRightMenu=true; //显示右键菜单
|
|
6816
|
+
|
|
6773
6817
|
|
|
6774
6818
|
this.ClearStockCache=function()
|
|
6775
6819
|
{
|
|
6776
6820
|
this.StockCache.Data=null;
|
|
6777
6821
|
}
|
|
6778
6822
|
|
|
6823
|
+
this.InitalPopMenu=function() //初始化弹出窗口
|
|
6824
|
+
{
|
|
6825
|
+
if (this.JSPopMenu) return;
|
|
6826
|
+
|
|
6827
|
+
this.JSPopMenu=new JSPopMenu(); //内置菜单
|
|
6828
|
+
this.JSPopMenu.Inital();
|
|
6829
|
+
}
|
|
6830
|
+
|
|
6779
6831
|
//obj={ Element:, Canvas: }
|
|
6780
6832
|
this.SetCorssCursorElement=function(obj)
|
|
6781
6833
|
{
|
|
@@ -6825,61 +6877,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6825
6877
|
{
|
|
6826
6878
|
this.IsDestroy=true;
|
|
6827
6879
|
this.StopAutoUpdate();
|
|
6828
|
-
|
|
6829
|
-
if (this.GetLatestVersionTimer!=null)
|
|
6830
|
-
{
|
|
6831
|
-
clearTimeout(this.GetLatestVersionTimer);
|
|
6832
|
-
this.GetLatestVersionTimer=null;
|
|
6833
|
-
}
|
|
6834
6880
|
}
|
|
6835
6881
|
|
|
6836
6882
|
this.ChartDestory=this.ChartDestroy; //老版本写错了,需要兼容下
|
|
6837
6883
|
|
|
6838
|
-
|
|
6839
|
-
this.GetLatestVersionTimer=null; //获取最新版本
|
|
6840
|
-
this.GetLatestVersion=function()
|
|
6841
|
-
{
|
|
6842
|
-
if (this.GetLatestVersionTimer!=null)
|
|
6843
|
-
{
|
|
6844
|
-
clearTimeout(this.GetLatestVersionTimer);
|
|
6845
|
-
this.GetLatestVersionTimer=null;
|
|
6846
|
-
}
|
|
6847
|
-
|
|
6848
|
-
var roundeTime=Math.floor(Math.random()*50);
|
|
6849
|
-
var waittimer=1000*60*3+(roundeTime*1000);
|
|
6850
|
-
var value="aHR0cHM6Ly9ocWNoYXJ0LnplYWxpbmsuY29tL2FwaS9HZXRWZXJzaW9u";
|
|
6851
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] wait for get hqchart latest version. ",waittimer);
|
|
6852
|
-
this.GetLatestVersionTimer = setTimeout(()=>
|
|
6853
|
-
{
|
|
6854
|
-
var width=0, height=0;
|
|
6855
|
-
if (this.Frame && this.Frame.ChartBorder)
|
|
6856
|
-
{
|
|
6857
|
-
width=this.Frame.ChartBorder.GetChartWidth();
|
|
6858
|
-
height=this.Frame.ChartBorder.GetChartHeight();
|
|
6859
|
-
}
|
|
6860
|
-
|
|
6861
|
-
var url=`${atob(value)}?width=${width}&height=${height}&type=h5`;
|
|
6862
|
-
|
|
6863
|
-
if (JSChart.LastVersion!=null) return; //只请求一次
|
|
6864
|
-
|
|
6865
|
-
JSNetwork.HttpRequest({
|
|
6866
|
-
url: url,
|
|
6867
|
-
type:"get",
|
|
6868
|
-
dataType: "json",
|
|
6869
|
-
async:true,
|
|
6870
|
-
success:function(data)
|
|
6871
|
-
{
|
|
6872
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] hqchart latest version. ",data);
|
|
6873
|
-
JSChart.LastVersion=data;
|
|
6874
|
-
},
|
|
6875
|
-
error:function(request, textStatus, errorThrown)
|
|
6876
|
-
{
|
|
6877
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] Get HQChart latest version failed.", request);
|
|
6878
|
-
}
|
|
6879
|
-
});
|
|
6880
|
-
}, waittimer);
|
|
6881
|
-
}
|
|
6882
|
-
|
|
6883
6884
|
//设置焦点
|
|
6884
6885
|
this.SetFocus=function()
|
|
6885
6886
|
{
|
|
@@ -6995,6 +6996,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6995
6996
|
this.UIOnContextMenu=function(e)
|
|
6996
6997
|
{
|
|
6997
6998
|
if (this.ChartSplashPaint && this.ChartSplashPaint.IsEnableSplash == true) return;
|
|
6999
|
+
if (!this.IsShowRightMenu) return;
|
|
6998
7000
|
|
|
6999
7001
|
var x = e.clientX-this.UIElement.getBoundingClientRect().left;
|
|
7000
7002
|
var y = e.clientY-this.UIElement.getBoundingClientRect().top;
|
|
@@ -7236,7 +7238,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7236
7238
|
}
|
|
7237
7239
|
|
|
7238
7240
|
this.HideSelectRect();
|
|
7239
|
-
if (this.SelectRectRightMenu) this.SelectRectRightMenu.Hide();
|
|
7240
7241
|
if (this.ChartPictureMenu) this.ChartPictureMenu.Hide();
|
|
7241
7242
|
|
|
7242
7243
|
var paint=this.GetRectSelectPaint();
|
|
@@ -7876,17 +7877,19 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7876
7877
|
}
|
|
7877
7878
|
else
|
|
7878
7879
|
{
|
|
7879
|
-
if (isShowMenu
|
|
7880
|
+
if (isShowMenu)
|
|
7880
7881
|
{
|
|
7881
|
-
|
|
7882
|
-
{
|
|
7882
|
+
var data=
|
|
7883
|
+
{
|
|
7883
7884
|
Chart:this,
|
|
7884
7885
|
X:drag.LastMove.X-uielement.getBoundingClientRect().left,
|
|
7885
7886
|
Y:drag.LastMove.Y-uielement.getBoundingClientRect().top,
|
|
7886
7887
|
SelectData:selectData, //区间选择的数据
|
|
7887
7888
|
RectSelectPaint:paint //区间选择背景
|
|
7888
7889
|
};
|
|
7889
|
-
|
|
7890
|
+
|
|
7891
|
+
e.data=data;
|
|
7892
|
+
this.PopupSelectRectMenuV2(data, e);
|
|
7890
7893
|
}
|
|
7891
7894
|
}
|
|
7892
7895
|
}
|
|
@@ -12938,6 +12941,225 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12938
12941
|
}
|
|
12939
12942
|
}
|
|
12940
12943
|
}
|
|
12944
|
+
|
|
12945
|
+
this.PopupMenuByTab=function(menuData, rtTab)
|
|
12946
|
+
{
|
|
12947
|
+
if (!this.JSPopMenu) return;
|
|
12948
|
+
|
|
12949
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
12950
|
+
var rtCell={ Left:rtTab.Left/pixelRatio, Right:rtTab.Right/pixelRatio, Bottom:rtTab.Bottom/pixelRatio, Top:rtTab.Top/pixelRatio };
|
|
12951
|
+
rtCell.Width=rtCell.Right-rtCell.Left;
|
|
12952
|
+
rtCell.Height=rtCell.Bottom-rtCell.Top;
|
|
12953
|
+
|
|
12954
|
+
var rtClient=this.UIElement.getBoundingClientRect();
|
|
12955
|
+
var rtScroll=GetScrollPosition();
|
|
12956
|
+
|
|
12957
|
+
var offsetLeft=rtClient.left+rtScroll.Left;
|
|
12958
|
+
var offsetTop=rtClient.top+rtScroll.Top;
|
|
12959
|
+
rtCell.Left+=offsetLeft;
|
|
12960
|
+
rtCell.Right+=offsetLeft;
|
|
12961
|
+
rtCell.Top+=offsetTop;
|
|
12962
|
+
rtCell.Bottom+=offsetTop;
|
|
12963
|
+
|
|
12964
|
+
this.JSPopMenu.CreatePopMenu(menuData);
|
|
12965
|
+
this.JSPopMenu.PopupMenuByTab(rtCell);
|
|
12966
|
+
}
|
|
12967
|
+
|
|
12968
|
+
this.PopuMenuByRClick=function(menuData, x, y)
|
|
12969
|
+
{
|
|
12970
|
+
var rtClient=this.UIElement.getBoundingClientRect();
|
|
12971
|
+
var rtScroll=GetScrollPosition();
|
|
12972
|
+
|
|
12973
|
+
x+=rtClient.left+rtScroll.Left;
|
|
12974
|
+
y+=rtClient.top+rtScroll.Top;
|
|
12975
|
+
|
|
12976
|
+
this.JSPopMenu.CreatePopMenu(menuData);
|
|
12977
|
+
this.JSPopMenu.PopupMenuByRight(x,y);
|
|
12978
|
+
}
|
|
12979
|
+
|
|
12980
|
+
//点击右键菜单
|
|
12981
|
+
this.OnClickRightMenu=function(data)
|
|
12982
|
+
{
|
|
12983
|
+
JSConsole.Chart.Log('[JSChartContainer::OnClickRightMenu] ',data);
|
|
12984
|
+
if (!data || !data.Data) return;
|
|
12985
|
+
|
|
12986
|
+
var cmdID=data.Data.ID; //命令ID
|
|
12987
|
+
var aryArgs=data.Data.Args; //参数
|
|
12988
|
+
var param=null, srcParam=null; //原始值
|
|
12989
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryArgs))
|
|
12990
|
+
{
|
|
12991
|
+
srcParam=aryArgs[0];
|
|
12992
|
+
if (IFrameSplitOperator.IsNumber(aryArgs[0])) param=aryArgs[0];
|
|
12993
|
+
}
|
|
12994
|
+
|
|
12995
|
+
switch(cmdID)
|
|
12996
|
+
{
|
|
12997
|
+
case JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID:
|
|
12998
|
+
if (this.ChangePeriod && param!=null)
|
|
12999
|
+
this.ChangePeriod(param);
|
|
13000
|
+
break;
|
|
13001
|
+
case JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID:
|
|
13002
|
+
if (this.ChangeIndexWindowCount && param!=null)
|
|
13003
|
+
this.ChangeIndexWindowCount(param);
|
|
13004
|
+
break;
|
|
13005
|
+
case JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID:
|
|
13006
|
+
if (this.ChangeRight && param!=null)
|
|
13007
|
+
this.ChangeRight(param);
|
|
13008
|
+
break;
|
|
13009
|
+
case JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID:
|
|
13010
|
+
if (this.ChangeIndex && param!=null && aryArgs[1])
|
|
13011
|
+
this.ChangeIndex(param,aryArgs[1]);
|
|
13012
|
+
break;
|
|
13013
|
+
|
|
13014
|
+
case JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID:
|
|
13015
|
+
case JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID:
|
|
13016
|
+
if (this.ChangeInstructionIndex && aryArgs[0])
|
|
13017
|
+
this.ChangeInstructionIndex(aryArgs[0]);
|
|
13018
|
+
break;
|
|
13019
|
+
case JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID: //删除五彩K线指标
|
|
13020
|
+
case JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID: //删除专家系统(交易指标)
|
|
13021
|
+
if (this.CancelInstructionIndex) this.CancelInstructionIndex();
|
|
13022
|
+
break;
|
|
13023
|
+
case JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID: //切换K线类型
|
|
13024
|
+
if (this.ChangeKLineDrawType && param!=null)
|
|
13025
|
+
this.ChangeKLineDrawType(param,aryArgs[1],aryArgs[2]);
|
|
13026
|
+
break;
|
|
13027
|
+
case JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID: //缺口提示
|
|
13028
|
+
if (this.ChangePriceGap && IFrameSplitOperator.IsBool(aryArgs[0]))
|
|
13029
|
+
{
|
|
13030
|
+
if (aryArgs[0]==false)
|
|
13031
|
+
{
|
|
13032
|
+
this.ChangePriceGap({ Enable:aryArgs[0] });
|
|
13033
|
+
}
|
|
13034
|
+
else
|
|
13035
|
+
{
|
|
13036
|
+
if (IFrameSplitOperator.IsNumber(aryArgs[1]))
|
|
13037
|
+
this.ChangePriceGap({ Enable:aryArgs[0], Count:aryArgs[1] });
|
|
13038
|
+
}
|
|
13039
|
+
}
|
|
13040
|
+
break;
|
|
13041
|
+
case JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID:
|
|
13042
|
+
if (aryArgs[1]===true)
|
|
13043
|
+
{
|
|
13044
|
+
if (this.OverlaySymbol && aryArgs[0]) this.OverlaySymbol(aryArgs[0]);
|
|
13045
|
+
}
|
|
13046
|
+
else if (aryArgs[1]===false)
|
|
13047
|
+
{
|
|
13048
|
+
if (this.DeleteOverlaySymbol && aryArgs[0]) this.DeleteOverlaySymbol(aryArgs[0]);
|
|
13049
|
+
}
|
|
13050
|
+
break;
|
|
13051
|
+
case JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID:
|
|
13052
|
+
if (this.ClearOverlaySymbol) this.ClearOverlaySymbol();
|
|
13053
|
+
break;
|
|
13054
|
+
case JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID:
|
|
13055
|
+
if (this.ChangeCoordinateType && aryArgs[0]) this.ChangeCoordinateType(aryArgs[0]);
|
|
13056
|
+
break;
|
|
13057
|
+
case JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID:
|
|
13058
|
+
if (aryArgs[0] && IFrameSplitOperator.IsBool(aryArgs[1]))
|
|
13059
|
+
{
|
|
13060
|
+
if (aryArgs[1]==true && this.AddKLineInfo) this.AddKLineInfo(aryArgs[0],true);
|
|
13061
|
+
else if (aryArgs[1]==false && this.DeleteKLineInfo) this.DeleteKLineInfo(aryArgs[0]);
|
|
13062
|
+
}
|
|
13063
|
+
break;
|
|
13064
|
+
case JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID:
|
|
13065
|
+
if (this.ClearKLineInfo) this.ClearKLineInfo();
|
|
13066
|
+
break;
|
|
13067
|
+
case JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID:
|
|
13068
|
+
if (param!=null) this.DragMode=param;
|
|
13069
|
+
break;
|
|
13070
|
+
case JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID:
|
|
13071
|
+
if (IFrameSplitOperator.IsBool(srcParam))
|
|
13072
|
+
{
|
|
13073
|
+
if (srcParam)
|
|
13074
|
+
{
|
|
13075
|
+
this.CreateExtendChart("SessionBreaksPaint", { });
|
|
13076
|
+
this.Draw();
|
|
13077
|
+
}
|
|
13078
|
+
else
|
|
13079
|
+
{
|
|
13080
|
+
var finder=this.GetExtendChartByClassName("SessionBreaksPaint");
|
|
13081
|
+
if (finder)
|
|
13082
|
+
{
|
|
13083
|
+
this.DeleteExtendChartByID(finder.Chart.ID);
|
|
13084
|
+
this.Draw();
|
|
13085
|
+
}
|
|
13086
|
+
}
|
|
13087
|
+
}
|
|
13088
|
+
break;
|
|
13089
|
+
case JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID:
|
|
13090
|
+
var option={Name:'画图工具', Top:this.Frame.ChartBorder.Top };
|
|
13091
|
+
var extendChart=this.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
13092
|
+
this.SetSizeChange(true);
|
|
13093
|
+
this.Draw();
|
|
13094
|
+
break;
|
|
13095
|
+
case JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:
|
|
13096
|
+
var drawTools=this.GetExtendChartByClassName('DrawToolsButton');
|
|
13097
|
+
if (drawTools)
|
|
13098
|
+
{
|
|
13099
|
+
var toolsWidth=drawTools.Chart.Width;
|
|
13100
|
+
var toolsIndex=parseInt(drawTools.Index);
|
|
13101
|
+
for(var i=toolsIndex+1; i<this.ExtendChartPaint.length; ++i) //在画图工具后面创建的需要减去工具的宽度
|
|
13102
|
+
{
|
|
13103
|
+
var item=this.ExtendChartPaint[i];
|
|
13104
|
+
if (item.ClassName=='StockChip')
|
|
13105
|
+
{
|
|
13106
|
+
item.Left-=toolsWidth;
|
|
13107
|
+
}
|
|
13108
|
+
}
|
|
13109
|
+
this.DeleteExtendChart(drawTools);
|
|
13110
|
+
this.Frame.ChartBorder.Right-=toolsWidth;
|
|
13111
|
+
this.SetSizeChange(true);
|
|
13112
|
+
this.Draw();
|
|
13113
|
+
}
|
|
13114
|
+
break;
|
|
13115
|
+
case JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID:
|
|
13116
|
+
var option={Name:'筹码分布', ShowType:1, Width:230 };
|
|
13117
|
+
var extendChart=this.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
13118
|
+
this.SetSizeChange(true);
|
|
13119
|
+
this.Draw();
|
|
13120
|
+
break;
|
|
13121
|
+
case JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:
|
|
13122
|
+
var StockChip=chart.GetExtendChartByClassName('StockChip');
|
|
13123
|
+
if (StockChip)
|
|
13124
|
+
{
|
|
13125
|
+
var chipWidth=StockChip.Chart.Width;
|
|
13126
|
+
var chipIndex=parseInt(StockChip.Index);
|
|
13127
|
+
for(var i=chipIndex+1; i<this.ExtendChartPaint.length; ++i) //在筹码后面创建的需要筹码的宽度
|
|
13128
|
+
{
|
|
13129
|
+
var item=this.ExtendChartPaint[i];
|
|
13130
|
+
if (item.ClassName=='DrawToolsButton')
|
|
13131
|
+
{
|
|
13132
|
+
item.Left-=chipWidth;
|
|
13133
|
+
}
|
|
13134
|
+
}
|
|
13135
|
+
this.DeleteExtendChart(StockChip);
|
|
13136
|
+
this.Frame.ChartBorder.Right-=chipWidth;
|
|
13137
|
+
this.SetSizeChange(true);
|
|
13138
|
+
this.Draw();
|
|
13139
|
+
}
|
|
13140
|
+
break;
|
|
13141
|
+
case JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID:
|
|
13142
|
+
if (IFrameSplitOperator.IsBool(srcParam))
|
|
13143
|
+
this.EnableSelectRect=srcParam;
|
|
13144
|
+
break;
|
|
13145
|
+
case JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID:
|
|
13146
|
+
if (this.ChangeDayCount && param!=null)
|
|
13147
|
+
this.ChangeDayCount(param);
|
|
13148
|
+
break;
|
|
13149
|
+
case JSCHART_MENU_ID.CMD_SHOW_BEFORE_DATA_ID:
|
|
13150
|
+
if (this.ShowCallAuctionData && IFrameSplitOperator.IsBool(srcParam))
|
|
13151
|
+
this.ShowCallAuctionData({ Left:srcParam, MultiDay:{ Left:srcParam }});
|
|
13152
|
+
break;
|
|
13153
|
+
|
|
13154
|
+
case JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID:
|
|
13155
|
+
if (this.ShowSelectData && srcParam) this.ShowSelectData(srcParam);
|
|
13156
|
+
break;
|
|
13157
|
+
case JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID:
|
|
13158
|
+
var dlg=new KLineSelectRectDialog(this.DivElement);
|
|
13159
|
+
dlg.DoModal(srcParam);
|
|
13160
|
+
break;
|
|
13161
|
+
}
|
|
13162
|
+
}
|
|
12941
13163
|
}
|
|
12942
13164
|
|
|
12943
13165
|
function GetDevicePixelRatio()
|
|
@@ -13035,11 +13257,12 @@ function GetScrollPosition()
|
|
|
13035
13257
|
var scrollPos={};
|
|
13036
13258
|
var scrollTop=0;
|
|
13037
13259
|
var scrollLeft=0;
|
|
13038
|
-
if(document.documentElement && document.documentElement.scrollTop)
|
|
13260
|
+
if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft))
|
|
13039
13261
|
{
|
|
13040
13262
|
scrollTop=document.documentElement.scrollTop;
|
|
13041
13263
|
scrollLeft=document.documentElement.scrollLeft;
|
|
13042
|
-
}
|
|
13264
|
+
}
|
|
13265
|
+
else if(document.body)
|
|
13043
13266
|
{
|
|
13044
13267
|
scrollTop=document.body.scrollTop;
|
|
13045
13268
|
scrollLeft=document.body.scrollLeft;
|
|
@@ -48003,7 +48226,8 @@ function FrameButtomToolbarPaint()
|
|
|
48003
48226
|
this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);
|
|
48004
48227
|
}
|
|
48005
48228
|
|
|
48006
|
-
var font=this.
|
|
48229
|
+
var font=this.GetTitleFont(rtBG.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom);
|
|
48230
|
+
var svgFont=this.GetSVGFont(rtBG.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom);
|
|
48007
48231
|
this.Canvas.textBaseline='middle';
|
|
48008
48232
|
this.Canvas.textAlign='center';
|
|
48009
48233
|
this.Canvas.font=font;
|
|
@@ -48011,9 +48235,23 @@ function FrameButtomToolbarPaint()
|
|
|
48011
48235
|
for(var i=0;i<this.AryButton.length;++i)
|
|
48012
48236
|
{
|
|
48013
48237
|
var item=this.AryButton[i];
|
|
48014
|
-
if (!item.Title) return;
|
|
48015
|
-
|
|
48016
|
-
var
|
|
48238
|
+
if (!item.Title && !(item.SVGButton && item.SVGButton.Symbol)) return;
|
|
48239
|
+
|
|
48240
|
+
var textWidth=0;
|
|
48241
|
+
if (item.Title)
|
|
48242
|
+
{
|
|
48243
|
+
textWidth=this.Canvas.measureText(item.Title).width+2;
|
|
48244
|
+
}
|
|
48245
|
+
|
|
48246
|
+
var svgButtonWidth=0;
|
|
48247
|
+
if (item.SVGButton && item.SVGButton.Symbol)
|
|
48248
|
+
{
|
|
48249
|
+
svgButtonWidth=this.ButtonConfig.SVG.Size;
|
|
48250
|
+
if (textWidth>0) svgButtonWidth+=this.ButtonConfig.SVG.MerginLeft;
|
|
48251
|
+
|
|
48252
|
+
}
|
|
48253
|
+
|
|
48254
|
+
var buttonWidth=textWidth+svgButtonWidth+this.ButtonConfig.Mergin.Left+this.ButtonConfig.Mergin.Right;
|
|
48017
48255
|
var rtButton={ Left:xBotton, Top:rtBG.Top, Bottom:rtBG.Bottom, Height:rtBG.Height, Width:buttonWidth };
|
|
48018
48256
|
rtButton.Right=rtButton.Left+rtButton.Width;
|
|
48019
48257
|
|
|
@@ -48050,12 +48288,50 @@ function FrameButtomToolbarPaint()
|
|
|
48050
48288
|
this.Canvas.stroke();
|
|
48051
48289
|
}
|
|
48052
48290
|
|
|
48053
|
-
|
|
48054
|
-
|
|
48055
|
-
|
|
48056
|
-
|
|
48291
|
+
if (item.Title)
|
|
48292
|
+
{
|
|
48293
|
+
this.Canvas.fillStyle=titleColor;
|
|
48294
|
+
var xText=rtButton.Left+(rtButton.Width-svgButtonWidth)/2; //居中
|
|
48295
|
+
var yText=rtButton.Top+this.ButtonConfig.Mergin.Top+(rtButton.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom)/2;
|
|
48296
|
+
this.Canvas.fillText(item.Title,xText,yText);
|
|
48297
|
+
}
|
|
48298
|
+
|
|
48299
|
+
|
|
48300
|
+
var rtSVG=null;
|
|
48301
|
+
if (item.SVGButton && item.SVGButton.Symbol)
|
|
48302
|
+
{
|
|
48303
|
+
this.Canvas.font=svgFont;
|
|
48304
|
+
this.Canvas.fillStyle=titleColor;
|
|
48305
|
+
var xText=rtButton.Right-this.ButtonConfig.SVG.Size/2-this.ButtonConfig.Mergin.Right;
|
|
48306
|
+
this.Canvas.fillText(item.SVGButton.Symbol,xText,yText);
|
|
48307
|
+
this.Canvas.font=font;
|
|
48308
|
+
|
|
48309
|
+
rtSVG={Left:rtButton.Right-this.ButtonConfig.Mergin.Right-this.ButtonConfig.SVG.Size, Top:rtButton.Top, Width:this.ButtonConfig.SVG.Size, Height:this.ButtonConfig.SVG.Size};
|
|
48310
|
+
rtSVG.Right=rtSVG.Left+rtSVG.Width;
|
|
48311
|
+
rtSVG.Bottom=rtSVG.Top+rtSVG.Height;
|
|
48312
|
+
}
|
|
48313
|
+
|
|
48314
|
+
//{ Rect:rtButton, ID:item.ID, Data:item, RectSVG:rtSVG }
|
|
48315
|
+
if (textWidth>0 && svgButtonWidth>0)
|
|
48316
|
+
{
|
|
48317
|
+
var rtText={ Left:rtButton.Left, Top:rtButton.Top, Bottom:rtButton.Bottom };
|
|
48318
|
+
rtText.Right=rtText.Left+textWidth+this.ButtonConfig.Mergin.Left+this.ButtonConfig.SVG.MerginLeft/2;
|
|
48319
|
+
var cacheItem={ Rect:rtText, ID:item.ID, Data:item, RectCell:rtButton, ButtonType:0 };
|
|
48320
|
+
this.AryRectButton.push(cacheItem);
|
|
48321
|
+
|
|
48322
|
+
var rtSVG={Left:rtText.Right, Right:rtButton.Right, Top:rtButton.Top, Bottom:rtButton.Bottom };
|
|
48323
|
+
var cacheItem={ Rect:rtSVG, ID:item.ID, Data:item, RectCell:rtButton, ButtonType:1 };
|
|
48324
|
+
this.AryRectButton.push(cacheItem);
|
|
48325
|
+
}
|
|
48326
|
+
else
|
|
48327
|
+
{
|
|
48328
|
+
var cacheItem={ Rect:rtButton, ID:item.ID, Data:item, RectCell:rtButton }; //RectCell 全部的大小
|
|
48329
|
+
if (textWidth>0) cacheItem.ButtonType=0;
|
|
48330
|
+
else if (svgButtonWidth>0) cacheItem.ButtonType=1;
|
|
48331
|
+
this.AryRectButton.push(cacheItem);
|
|
48332
|
+
}
|
|
48333
|
+
|
|
48057
48334
|
|
|
48058
|
-
this.AryRectButton.push({ Rect:rtButton, ID:item.ID, Data:item });
|
|
48059
48335
|
|
|
48060
48336
|
xBotton+=buttonWidth+1;
|
|
48061
48337
|
}
|
|
@@ -48084,13 +48360,22 @@ function FrameButtomToolbarPaint()
|
|
|
48084
48360
|
return null;
|
|
48085
48361
|
}
|
|
48086
48362
|
|
|
48087
|
-
this.
|
|
48363
|
+
this.GetTitleFont=function(height)
|
|
48088
48364
|
{
|
|
48089
48365
|
var config=this.ButtonConfig.Font;
|
|
48090
|
-
var fontSize=height;
|
|
48366
|
+
var fontSize=height*GetDevicePixelRatio();
|
|
48091
48367
|
if (IFrameSplitOperator.IsPlusNumber(config.Size)) fontSize=config.Size;
|
|
48092
48368
|
|
|
48093
|
-
var font=`${fontSize
|
|
48369
|
+
var font=`${fontSize}px ${config.Family}`;
|
|
48370
|
+
return font;
|
|
48371
|
+
}
|
|
48372
|
+
|
|
48373
|
+
this.GetSVGFont=function(height)
|
|
48374
|
+
{
|
|
48375
|
+
var config=this.ButtonConfig.SVG;
|
|
48376
|
+
var fontSize=height*GetDevicePixelRatio();
|
|
48377
|
+
if (IFrameSplitOperator.IsPlusNumber(config.Size)) fontSize=config.Size;
|
|
48378
|
+
var font=`${fontSize}px ${config.Family}`;
|
|
48094
48379
|
return font;
|
|
48095
48380
|
}
|
|
48096
48381
|
|
|
@@ -48103,7 +48388,7 @@ function FrameButtomToolbarPaint()
|
|
|
48103
48388
|
if (x>rect.Left && x<rect.Right && y>rect.Top && y<rect.Bottom)
|
|
48104
48389
|
{
|
|
48105
48390
|
var frame=this.GetFrame();
|
|
48106
|
-
var result={ ID:item.Data.ID, Rect:rect, FrameID:this.FrameID, Frame:frame, Data:item.Data };
|
|
48391
|
+
var result={ ID:item.Data.ID, Rect:rect, FrameID:this.FrameID, Frame:frame, Data:item.Data, ButtonType:item.ButtonType, RectCell:item.RectCell, };
|
|
48107
48392
|
return result;
|
|
48108
48393
|
}
|
|
48109
48394
|
}
|
|
@@ -57444,7 +57729,7 @@ function IChartDrawPicture()
|
|
|
57444
57729
|
if (option.LineWidth>0) this.LineWidth=option.LineWidth;
|
|
57445
57730
|
if (option.AreaColor) this.AreaColor=option.AreaColor;
|
|
57446
57731
|
if (option.PointColor) this.PointColor=option.PointColor;
|
|
57447
|
-
if (option.MoveOnPointColor) this.
|
|
57732
|
+
if (option.MoveOnPointColor) this.MoveOnPointColor=option.MoveOnPointColor;
|
|
57448
57733
|
if (option.PointRadius) this.PointRadius=option.PointRadius;
|
|
57449
57734
|
if (IFrameSplitOperator.IsNumber(option.SquareSize)) this.SquareSize=option.SquareSize;
|
|
57450
57735
|
if (IFrameSplitOperator.IsBool(option.IsShowPoint)) this.IsShowPoint=option.IsShowPoint;
|
|
@@ -57643,8 +57928,8 @@ function IChartDrawPicture()
|
|
|
57643
57928
|
for(var i=0; i<this.Point.length; ++i)
|
|
57644
57929
|
{
|
|
57645
57930
|
var item=this.Point[i];
|
|
57646
|
-
var xValue=parseInt(this.Frame.GetXData(item.Y));
|
|
57647
|
-
var yValue=this.Frame.GetYData(item.X);
|
|
57931
|
+
var xValue=parseInt(this.Frame.GetXData(item.Y,false));
|
|
57932
|
+
var yValue=this.Frame.GetYData(item.X,false);
|
|
57648
57933
|
|
|
57649
57934
|
var valueItem={ XValue:xValue, YValue:yValue };
|
|
57650
57935
|
var minuteItem=data.Data[xValue];
|
|
@@ -57658,8 +57943,8 @@ function IChartDrawPicture()
|
|
|
57658
57943
|
for(var i=0; i<this.Point.length; ++i)
|
|
57659
57944
|
{
|
|
57660
57945
|
var item=this.Point[i];
|
|
57661
|
-
var xValue=parseInt(this.Frame.GetXData(item.X));
|
|
57662
|
-
var yValue=this.Frame.GetYData(item.Y);
|
|
57946
|
+
var xValue=parseInt(this.Frame.GetXData(item.X,false));
|
|
57947
|
+
var yValue=this.Frame.GetYData(item.Y,false);
|
|
57663
57948
|
|
|
57664
57949
|
if (xValue>=data.Data.length) //超过当前数据,直接读固定时间
|
|
57665
57950
|
{
|
|
@@ -57734,7 +58019,7 @@ function IChartDrawPicture()
|
|
|
57734
58019
|
}
|
|
57735
58020
|
|
|
57736
58021
|
data.FindDataIndexByDateTime(aryDateTime);
|
|
57737
|
-
for(var i
|
|
58022
|
+
for(var i=0; i<aryDateTime.length; ++i)
|
|
57738
58023
|
{
|
|
57739
58024
|
var findItem=aryDateTime[i];
|
|
57740
58025
|
var valueItem=this.Value[i];
|
|
@@ -57742,6 +58027,17 @@ function IChartDrawPicture()
|
|
|
57742
58027
|
}
|
|
57743
58028
|
}
|
|
57744
58029
|
|
|
58030
|
+
//重置X索引数据
|
|
58031
|
+
this.ResetXValue=function()
|
|
58032
|
+
{
|
|
58033
|
+
for(var i=0; i<this.Value.length; ++i)
|
|
58034
|
+
{
|
|
58035
|
+
var item=this.Value[i];
|
|
58036
|
+
item.XValue=null;
|
|
58037
|
+
}
|
|
58038
|
+
return true;
|
|
58039
|
+
}
|
|
58040
|
+
|
|
57745
58041
|
//xStep,yStep 移动的偏移量
|
|
57746
58042
|
this.Move=function(xStep,yStep)
|
|
57747
58043
|
{
|
|
@@ -57867,6 +58163,8 @@ function IChartDrawPicture()
|
|
|
57867
58163
|
for(var i=0; i<this.Value.length; ++i)
|
|
57868
58164
|
{
|
|
57869
58165
|
var item=this.Value[i];
|
|
58166
|
+
if (!IFrameSplitOperator.IsNumber(item.XValue)) return null; //无效索引 不显示
|
|
58167
|
+
|
|
57870
58168
|
var dataIndex=item.XValue-data.DataOffset;
|
|
57871
58169
|
if (dataIndex<0 || dataIndex>=showCount) ++invaildX;
|
|
57872
58170
|
|
|
@@ -58937,7 +59235,7 @@ function ChartDrawPictureLine()
|
|
|
58937
59235
|
if (this.IsFrameMinSize()) return;
|
|
58938
59236
|
if (!this.IsShow) return;
|
|
58939
59237
|
|
|
58940
|
-
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:
|
|
59238
|
+
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:false} );
|
|
58941
59239
|
if (!drawPoint) return;
|
|
58942
59240
|
if (drawPoint.length!=2) return;
|
|
58943
59241
|
|
|
@@ -59557,8 +59855,9 @@ function ChartDrawHLine()
|
|
|
59557
59855
|
|
|
59558
59856
|
this.Button=
|
|
59559
59857
|
{
|
|
59560
|
-
CloseIcon: { Text:'\ue62b', Color:'rgb(255,255,255)', Family:"iconfont", Size:16 },
|
|
59561
|
-
SettingIcon: { Text:'\ue623',Color:'rgb(255,255,255)', Family:"iconfont", Size:16 }
|
|
59858
|
+
CloseIcon: { Text:'\ue62b', Color:'rgb(255,255,255)', Family:"iconfont", Size:16, ID:JSCHART_BUTTON_ID.DRAW_PICTURE_DELETE, TooltipText:null },
|
|
59859
|
+
SettingIcon: { Text:'\ue623',Color:'rgb(255,255,255)', Family:"iconfont", Size:16, ID:JSCHART_BUTTON_ID.DRAW_PICTURE_SETTING, TooltipText:null }
|
|
59860
|
+
//修改ID, Text , TooltipText 可以外部定制按钮
|
|
59562
59861
|
}
|
|
59563
59862
|
|
|
59564
59863
|
this.AryButton=[];
|
|
@@ -59752,6 +60051,7 @@ function ChartDrawHLine()
|
|
|
59752
60051
|
this.CalculateButtonSize();
|
|
59753
60052
|
this.DrawValueText(drawPoint[0].Y, rtDraw, labInfo);
|
|
59754
60053
|
if (labInfo) this.DrawRightLab(labInfo, rtDraw);
|
|
60054
|
+
if (labInfo) this.DrawCustomHLine(labInfo, drawPoint[0].Y);
|
|
59755
60055
|
}
|
|
59756
60056
|
|
|
59757
60057
|
|
|
@@ -59891,6 +60191,53 @@ function ChartDrawHLine()
|
|
|
59891
60191
|
}
|
|
59892
60192
|
}
|
|
59893
60193
|
|
|
60194
|
+
this.DrawCustomHLine=function(labInfo, yLine)
|
|
60195
|
+
{
|
|
60196
|
+
if (!labInfo) return;
|
|
60197
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(labInfo.AryLine)) return;
|
|
60198
|
+
|
|
60199
|
+
var left=this.Frame.ChartBorder.GetLeft();
|
|
60200
|
+
var right=this.Frame.ChartBorder.GetRight();
|
|
60201
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
60202
|
+
|
|
60203
|
+
var yMax=yLine, yMin=yLine;
|
|
60204
|
+
for(var i=0;i<labInfo.AryLine.length;++i)
|
|
60205
|
+
{
|
|
60206
|
+
var item=labInfo.AryLine[i];
|
|
60207
|
+
if (!IFrameSplitOperator.IsNumber(item.Value)) continue;
|
|
60208
|
+
|
|
60209
|
+
var y=this.Frame.GetYFromData(item.Value);
|
|
60210
|
+
var yFixed=ToFixedPoint(y);
|
|
60211
|
+
var xRight=right;
|
|
60212
|
+
if (IFrameSplitOperator.IsNumber(item.Width)) xRight=left+item.Width*pixelRatio;
|
|
60213
|
+
if (item.Color) this.Canvas.strokeStyle=item.Color;
|
|
60214
|
+
else this.Canvas.strokeStyle=this.LineColor;
|
|
60215
|
+
|
|
60216
|
+
this.Canvas.beginPath();
|
|
60217
|
+
this.Canvas.moveTo(left,yFixed);
|
|
60218
|
+
this.Canvas.lineTo(xRight,yFixed);
|
|
60219
|
+
this.Canvas.stroke();
|
|
60220
|
+
|
|
60221
|
+
if (yMax<yFixed) yMax=yFixed;
|
|
60222
|
+
if (yMin>yFixed) yMin=yFixed;
|
|
60223
|
+
}
|
|
60224
|
+
|
|
60225
|
+
if (yMax!=yMin && labInfo.VLine)
|
|
60226
|
+
{
|
|
60227
|
+
var item=labInfo.VLine;
|
|
60228
|
+
var x=left+20*pixelRatio;
|
|
60229
|
+
if (IFrameSplitOperator.IsNumber(item.XOffset)) x=left+item.XOffset*pixelRatio;
|
|
60230
|
+
x=ToFixedPoint(x);
|
|
60231
|
+
if (item.Color) this.Canvas.strokeStyle=item.Color;
|
|
60232
|
+
else this.Canvas.strokeStyle=this.LineColor;
|
|
60233
|
+
|
|
60234
|
+
this.Canvas.beginPath();
|
|
60235
|
+
this.Canvas.moveTo(x,yMax);
|
|
60236
|
+
this.Canvas.lineTo(x,yMin);
|
|
60237
|
+
this.Canvas.stroke();
|
|
60238
|
+
}
|
|
60239
|
+
}
|
|
60240
|
+
|
|
59894
60241
|
this.DrawValueText=function(y, rtDraw, labInfo)
|
|
59895
60242
|
{
|
|
59896
60243
|
var left=this.Frame.ChartBorder.GetLeft();
|
|
@@ -60035,7 +60382,7 @@ function ChartDrawHLine()
|
|
|
60035
60382
|
this.Canvas.fillStyle=icon.Color;
|
|
60036
60383
|
this.Canvas.fillText(this.Button.SettingIcon.Text,xCenter,yCenter);
|
|
60037
60384
|
|
|
60038
|
-
this.AryButton.push({Rect:rtButton, ID:
|
|
60385
|
+
this.AryButton.push({Rect:rtButton, ID:icon.ID, TooltipText:icon.TooltipText});
|
|
60039
60386
|
|
|
60040
60387
|
/*
|
|
60041
60388
|
if (this.ColseButtonSize>0)
|
|
@@ -60067,7 +60414,7 @@ function ChartDrawHLine()
|
|
|
60067
60414
|
this.Canvas.fillStyle=icon.Color;
|
|
60068
60415
|
this.Canvas.fillText(this.Button.CloseIcon.Text,xCenter,yCenter);
|
|
60069
60416
|
|
|
60070
|
-
this.AryButton.push({Rect:rtButton,ID:
|
|
60417
|
+
this.AryButton.push({Rect:rtButton,ID:icon.ID, TooltipText:icon.TooltipText });
|
|
60071
60418
|
|
|
60072
60419
|
left=rtButton.Right;
|
|
60073
60420
|
}
|
|
@@ -68770,12 +69117,14 @@ function JSChartResource()
|
|
|
68770
69117
|
BorderColor:"rgb(204,204,204)",
|
|
68771
69118
|
Button:
|
|
68772
69119
|
{
|
|
68773
|
-
Font:{ Family:"微软雅黑" },
|
|
69120
|
+
Font:{ Family:"微软雅黑", Size:12*GetDevicePixelRatio() },
|
|
68774
69121
|
TitleColor: { Selected:"rgb(255,255,255)", Default:"rgb(125,125,125)", MoveOn:"rgb(234,85,4)" },
|
|
68775
69122
|
BGColor: { Selected:"rgb(234,85,4)", Default:"rgb(235,235,235)", MoveOn:"rgb(242,242,242)" },
|
|
68776
69123
|
BorderColor:"rgb(204,204,204)",
|
|
68777
69124
|
|
|
68778
|
-
Mergin: { Left:5*GetDevicePixelRatio(), Right:5*GetDevicePixelRatio(), Top:4*GetDevicePixelRatio(), Bottom:2*GetDevicePixelRatio() }
|
|
69125
|
+
Mergin: { Left:5*GetDevicePixelRatio(), Right:5*GetDevicePixelRatio(), Top:4*GetDevicePixelRatio(), Bottom:2*GetDevicePixelRatio() },
|
|
69126
|
+
|
|
69127
|
+
SVG:{ Family:"iconfont", Size:12*GetDevicePixelRatio(), MerginLeft:4*GetDevicePixelRatio() }
|
|
68779
69128
|
}
|
|
68780
69129
|
}
|
|
68781
69130
|
|
|
@@ -69794,6 +70143,15 @@ function JSChartResource()
|
|
|
69794
70143
|
if (IFrameSplitOperator.IsNumber(item.Top)) destItem.Top=item.Top;
|
|
69795
70144
|
if (IFrameSplitOperator.IsNumber(item.Bottom)) destItem.Bottom=item.Bottom;
|
|
69796
70145
|
}
|
|
70146
|
+
|
|
70147
|
+
if (button.SVG)
|
|
70148
|
+
{
|
|
70149
|
+
var item=button.SVG;
|
|
70150
|
+
var destItem=this.FrameButtomToolbar.Button.SVG;
|
|
70151
|
+
if (IFrameSplitOperator.IsNumber(item.Size)) destItem.Size=item.Size;
|
|
70152
|
+
if (IFrameSplitOperator.IsNumber(item.MerginLeft)) destItem.MerginLeft=item.MerginLeft;
|
|
70153
|
+
if (item.Family) destItem.Family=item.Family;
|
|
70154
|
+
}
|
|
69797
70155
|
}
|
|
69798
70156
|
|
|
69799
70157
|
}
|
|
@@ -72056,10 +72414,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72056
72414
|
isShowMenu=data.IsShowMenu;
|
|
72057
72415
|
}
|
|
72058
72416
|
|
|
72059
|
-
|
|
72060
|
-
if (isShowMenu && this.SelectRectRightMenu)
|
|
72417
|
+
if (isShowMenu)
|
|
72061
72418
|
{
|
|
72062
|
-
|
|
72419
|
+
var data=
|
|
72063
72420
|
{
|
|
72064
72421
|
Chart:this,
|
|
72065
72422
|
X:x,
|
|
@@ -72067,8 +72424,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72067
72424
|
SelectData:selectData, //区间选择的数据
|
|
72068
72425
|
RectSelectPaint:paint //区间选择背景
|
|
72069
72426
|
};
|
|
72427
|
+
e.data=data;
|
|
72070
72428
|
|
|
72071
|
-
this.
|
|
72429
|
+
this.PopupSelectRectMenuV2(data, e);
|
|
72072
72430
|
}
|
|
72073
72431
|
}
|
|
72074
72432
|
|
|
@@ -72103,7 +72461,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72103
72461
|
this.ShowSelectData=function(selectData)
|
|
72104
72462
|
{
|
|
72105
72463
|
this.HideSelectRect();
|
|
72106
|
-
if (this.SelectRectRightMenu) this.SelectRectRightMenu.Hide();
|
|
72107
72464
|
|
|
72108
72465
|
JSConsole.Chart.Log('[KLineChartContainer::ShowSelectData] selectData', selectData);
|
|
72109
72466
|
var dataOffset=selectData.Start;
|
|
@@ -72188,9 +72545,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72188
72545
|
isShowMenu=data.IsShowMenu;
|
|
72189
72546
|
}
|
|
72190
72547
|
|
|
72191
|
-
if (isShowMenu
|
|
72548
|
+
if (isShowMenu)
|
|
72192
72549
|
{
|
|
72193
|
-
|
|
72550
|
+
var data=
|
|
72194
72551
|
{
|
|
72195
72552
|
Chart:this,
|
|
72196
72553
|
X:corssCursor.LastPoint.X/pixelTatio,
|
|
@@ -72198,7 +72555,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72198
72555
|
SelectData:selectData, //区间选择的数据
|
|
72199
72556
|
RectSelectPaint:paint //区间选择背景
|
|
72200
72557
|
};
|
|
72201
|
-
|
|
72558
|
+
e.data=data
|
|
72559
|
+
|
|
72560
|
+
this.PopupSelectRectMenuV2(data, e);
|
|
72202
72561
|
}
|
|
72203
72562
|
}
|
|
72204
72563
|
|
|
@@ -76105,32 +76464,315 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
76105
76464
|
}
|
|
76106
76465
|
}
|
|
76107
76466
|
|
|
76108
|
-
|
|
76109
76467
|
//注册鼠标右键事件
|
|
76110
76468
|
this.OnRightMenu=function(x,y,e)
|
|
76111
76469
|
{
|
|
76112
76470
|
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
76113
|
-
|
|
76114
|
-
{
|
|
76115
|
-
|
|
76116
|
-
e.data={ Chart:this, FrameID:frameId };
|
|
76117
|
-
this.RightMenu.DoModal(e);
|
|
76118
|
-
}
|
|
76119
|
-
|
|
76471
|
+
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
76472
|
+
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
76473
|
+
|
|
76120
76474
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);
|
|
76121
76475
|
if (event)
|
|
76122
76476
|
{
|
|
76123
|
-
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
76124
76477
|
var data={ X:x, Y:y, Event:e, FrameID:frameId };
|
|
76125
76478
|
event.Callback(event,data,this);
|
|
76126
76479
|
}
|
|
76127
76480
|
}
|
|
76128
76481
|
|
|
76482
|
+
//右键菜单数据
|
|
76483
|
+
this.GetRightMenuData=function(frameID)
|
|
76484
|
+
{
|
|
76485
|
+
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
76486
|
+
var klineChart=this.ChartPaint[0];
|
|
76487
|
+
var priceGap=klineChart.PriceGap; //缺口配置信息
|
|
76488
|
+
var coordinateType=null, yCoordinateType=null; //坐标类型
|
|
76489
|
+
var mainFrame=null;
|
|
76490
|
+
if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
|
|
76491
|
+
if (mainFrame)
|
|
76492
|
+
{
|
|
76493
|
+
coordinateType=mainFrame.CoordinateType;
|
|
76494
|
+
if (mainFrame.YSplitOperator) yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
|
|
76495
|
+
}
|
|
76496
|
+
|
|
76497
|
+
var aryKLineInfo=[]; //信息地雷
|
|
76498
|
+
for(var i=0;i<this.ChartInfo.length;++i)
|
|
76499
|
+
{
|
|
76500
|
+
var item=this.ChartInfo[i];
|
|
76501
|
+
if (item && item.ClassName) aryKLineInfo.push(item.ClassName);
|
|
76502
|
+
}
|
|
76503
|
+
|
|
76504
|
+
var aryOverlaySymbol=[]; //叠加的股票列表
|
|
76505
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
76506
|
+
{
|
|
76507
|
+
var item=this.OverlayChartPaint[i];
|
|
76508
|
+
if (item && item.Symbol) aryOverlaySymbol.push(item.Symbol)
|
|
76509
|
+
}
|
|
76510
|
+
|
|
76511
|
+
var bBGSpit=false, bShowDrawTool=false, bShowStockChip=false;
|
|
76512
|
+
if (this.GetExtendChartByClassName("SessionBreaksPaint")) bBGSpit=true;
|
|
76513
|
+
if (this.GetExtendChartByClassName('DrawToolsButton')) bShowDrawTool=true; //画图工具
|
|
76514
|
+
if (this.GetExtendChartByClassName('StockChip')) bShowStockChip=true; //筹码
|
|
76515
|
+
|
|
76516
|
+
var aryMenu=
|
|
76517
|
+
[
|
|
76518
|
+
{
|
|
76519
|
+
Name:"分析周期",
|
|
76520
|
+
SubMenu:
|
|
76521
|
+
[
|
|
76522
|
+
{ Name:"日线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[0] }, Checked:this.Period==0 },
|
|
76523
|
+
{ Name:"周线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[1] }, Checked:this.Period==1 },
|
|
76524
|
+
{ Name:"双周线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[21]}, Checked:this.Period==21 },
|
|
76525
|
+
{ Name:"月线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[2]}, Checked:this.Period==2 },
|
|
76526
|
+
{ Name:"季线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[9]}, Checked:this.Period==9 },
|
|
76527
|
+
{ Name:"半年", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[22]}, Checked:this.Period==22 },
|
|
76528
|
+
{ Name:"年线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[3]}, Checked:this.Period==3 },
|
|
76529
|
+
{ Name:"1分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[4]}, Checked:this.Period==4 },
|
|
76530
|
+
{ Name:"5分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[5]}, Checked:this.Period==5 },
|
|
76531
|
+
{ Name:"15分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[6]}, Checked:this.Period==6 },
|
|
76532
|
+
{ Name:"30分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[7]}, Checked:this.Period==7 },
|
|
76533
|
+
{ Name:"60分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[8]}, Checked:this.Period==8 },
|
|
76534
|
+
{ Name:"2小时", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[11]}, Checked:this.Period==11 },
|
|
76535
|
+
{ Name:"4小时", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[12]}, Checked:this.Period==12 },
|
|
76536
|
+
{ Name:"分笔", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[10]}, Checked:this.Period==10 },
|
|
76537
|
+
{ Name:"自定义周期:3分钟", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[20003]}, Checked:this.Period==20003 },
|
|
76538
|
+
{ Name:"自定义周期:35分钟", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[20035]}, Checked:this.Period==20035 },
|
|
76539
|
+
{ Name:"自定义周期:8日", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[40008]}, Checked:this.Period==40008 },
|
|
76540
|
+
]
|
|
76541
|
+
},
|
|
76542
|
+
{
|
|
76543
|
+
Name:"指标切换",
|
|
76544
|
+
SubMenu:
|
|
76545
|
+
[
|
|
76546
|
+
{ Name:"均线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "均线"]}},
|
|
76547
|
+
{ Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BOLL"]}},
|
|
76548
|
+
{ Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
|
|
76549
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
|
|
76550
|
+
{ Name:"VOL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "VOL"]}},
|
|
76551
|
+
{ Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
|
|
76552
|
+
{ Name:"BRAR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BRAR"]}},
|
|
76553
|
+
{ Name:"WR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "WR"]}},
|
|
76554
|
+
]
|
|
76555
|
+
},
|
|
76556
|
+
{
|
|
76557
|
+
Name:"五彩K线",
|
|
76558
|
+
SubMenu:
|
|
76559
|
+
[
|
|
76560
|
+
{ Name:"十字星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-十字星"]}},
|
|
76561
|
+
{ Name:"早晨之星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-早晨之星"]}},
|
|
76562
|
+
{ Name:"垂死十字", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-垂死十字"]}},
|
|
76563
|
+
{ Name:"三只乌鸦", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-三只乌鸦"]}},
|
|
76564
|
+
{ Name:"光脚阴线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-光脚阴线"]}},
|
|
76565
|
+
{ Name:"黄昏之星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-黄昏之星"]}},
|
|
76566
|
+
]
|
|
76567
|
+
|
|
76568
|
+
},
|
|
76569
|
+
{
|
|
76570
|
+
Name:"专家系统",
|
|
76571
|
+
SubMenu:
|
|
76572
|
+
[
|
|
76573
|
+
{ Name:"BIAS", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-BIAS"]}},
|
|
76574
|
+
{ Name:"CCI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-CCI"]}},
|
|
76575
|
+
{ Name:"DMI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-DMI"]}},
|
|
76576
|
+
{ Name:"KD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-KD"]}},
|
|
76577
|
+
{ Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-BOLL"]}},
|
|
76578
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-KDJ"]}},
|
|
76579
|
+
]
|
|
76580
|
+
},
|
|
76581
|
+
{
|
|
76582
|
+
Name:"信息地雷",
|
|
76583
|
+
SubMenu:
|
|
76584
|
+
[
|
|
76585
|
+
{ Name:"公告", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["公告", !aryKLineInfo.includes("AnnouncementInfo")]}, Checked:aryKLineInfo.includes("AnnouncementInfo") },
|
|
76586
|
+
{ Name:"业绩预告", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["业绩预告", !aryKLineInfo.includes("PforecastInfo")]}, Checked:aryKLineInfo.includes("PforecastInfo") },
|
|
76587
|
+
{ Name:"调研", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["调研", !aryKLineInfo.includes("ResearchInfo") ]}, Checked:aryKLineInfo.includes("ResearchInfo") },
|
|
76588
|
+
{ Name:"大宗交易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["大宗交易", !aryKLineInfo.includes("BlockTrading")]}, Checked:aryKLineInfo.includes("BlockTrading") },
|
|
76589
|
+
{ Name:"龙虎榜", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["龙虎榜", !aryKLineInfo.includes("TradeDetail")]}, Checked:aryKLineInfo.includes("TradeDetail") },
|
|
76590
|
+
{ Name:"互动易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["互动易", !aryKLineInfo.includes("InvestorInfo")]}, Checked:aryKLineInfo.includes("InvestorInfo") },
|
|
76591
|
+
]
|
|
76592
|
+
},
|
|
76593
|
+
{
|
|
76594
|
+
Name:"缺口提示",
|
|
76595
|
+
SubMenu:
|
|
76596
|
+
[
|
|
76597
|
+
{ Name:"显示1个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 1]}, Checked:(priceGap.Enable==true && priceGap.Count==1) },
|
|
76598
|
+
{ Name:"显示2个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 2]}, Checked:(priceGap.Enable==true && priceGap.Count==2) },
|
|
76599
|
+
{ Name:"显示3个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 3]}, Checked:(priceGap.Enable==true && priceGap.Count==3) },
|
|
76600
|
+
{ Name:"隐藏缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[false]}, Checked:priceGap.Enable==false },
|
|
76601
|
+
]
|
|
76602
|
+
},
|
|
76603
|
+
{
|
|
76604
|
+
Name:"叠加品种",
|
|
76605
|
+
SubMenu:
|
|
76606
|
+
[
|
|
76607
|
+
{ Name:"上证指数", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000001.sh", !aryOverlaySymbol.includes("000001.sh")]}, Checked:aryOverlaySymbol.includes("000001.sh") },
|
|
76608
|
+
{ Name:"深证成指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399001.sz", !aryOverlaySymbol.includes("399001.sz")]}, Checked:aryOverlaySymbol.includes("399001.sz") },
|
|
76609
|
+
{ Name:"中小板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399005.sz", !aryOverlaySymbol.includes("399005.sz")]}, Checked:aryOverlaySymbol.includes("399005.sz") },
|
|
76610
|
+
{ Name:"创业板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399006.sz", !aryOverlaySymbol.includes("399006.sz")]}, Checked:aryOverlaySymbol.includes("399006.sz") },
|
|
76611
|
+
{ Name:"沪深300", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000300.sh", !aryOverlaySymbol.includes("000300.sh")]}, Checked:aryOverlaySymbol.includes("000300.sh")},
|
|
76612
|
+
]
|
|
76613
|
+
},
|
|
76614
|
+
{
|
|
76615
|
+
Name:"主图线型",
|
|
76616
|
+
SubMenu:
|
|
76617
|
+
[
|
|
76618
|
+
{ Name:"K线(空心阳线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[3]} },
|
|
76619
|
+
{ Name:"K线(实心阳线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[0]} },
|
|
76620
|
+
{ Name:"美国线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[2, true, { IsThinAKBar:false }]} },
|
|
76621
|
+
{ Name:"美国线(细)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[2, true, { IsThinAKBar:true }]} },
|
|
76622
|
+
{ Name:"收盘线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[1]} },
|
|
76623
|
+
{ Name:"收盘面积", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[4]} },
|
|
76624
|
+
{ Name:"K线(空心阳线阴线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[6]} },
|
|
76625
|
+
{ Name:"Heikin Ashi", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[11]} },
|
|
76626
|
+
{ Name:"Line Break", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[12]} },
|
|
76627
|
+
{ Name:"High-low", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[13]} },
|
|
76628
|
+
{ Name:"HLC Area", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[15]} },
|
|
76629
|
+
]
|
|
76630
|
+
},
|
|
76631
|
+
{
|
|
76632
|
+
Name:"坐标类型",
|
|
76633
|
+
SubMenu:
|
|
76634
|
+
[
|
|
76635
|
+
{ Name:"反转坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ IsReverse:coordinateType==0 }]}, Checked:coordinateType==1 },
|
|
76636
|
+
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
76637
|
+
|
|
76638
|
+
{ Name:"普通坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:0 }]}, Checked:yCoordinateType==0 },
|
|
76639
|
+
{ Name:"百分比坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:1 }]}, Checked:yCoordinateType==1 },
|
|
76640
|
+
{ Name:"对数坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:2 }]}, Checked:yCoordinateType==2 },
|
|
76641
|
+
{ Name:"等比坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:3 }]}, Checked:yCoordinateType==3 },
|
|
76642
|
+
{ Name:"等分坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:4 }]}, Checked:yCoordinateType==4 },
|
|
76643
|
+
{ Name:"黄金分割", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:5 }]}, Checked:yCoordinateType==5},
|
|
76644
|
+
|
|
76645
|
+
]
|
|
76646
|
+
},
|
|
76647
|
+
{
|
|
76648
|
+
Name:"指标窗口个数",
|
|
76649
|
+
SubMenu:
|
|
76650
|
+
[
|
|
76651
|
+
{ Name:"1个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[2]}, Checked:2==windowCount },
|
|
76652
|
+
{ Name:"2个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[3]}, Checked:3==windowCount },
|
|
76653
|
+
{ Name:"3个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[4]}, Checked:4==windowCount },
|
|
76654
|
+
{ Name:"4个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[5]}, Checked:5==windowCount },
|
|
76655
|
+
{ Name:"5个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[6]}, Checked:6==windowCount },
|
|
76656
|
+
]
|
|
76657
|
+
},
|
|
76658
|
+
{
|
|
76659
|
+
Name:"其他设置",
|
|
76660
|
+
SubMenu:
|
|
76661
|
+
[
|
|
76662
|
+
|
|
76663
|
+
{ Name:"禁止拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[0]}, Checked:0==this.DragMode },
|
|
76664
|
+
{ Name:"启动拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1]}, Checked:1==this.DragMode },
|
|
76665
|
+
{ Name:"区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[2]}, Checked:2==this.DragMode },
|
|
76666
|
+
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
76667
|
+
|
|
76668
|
+
{ Name:"背景分割", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID, Args:[!bBGSpit]}, Checked:bBGSpit},
|
|
76669
|
+
|
|
76670
|
+
{ Name:"画图工具", Data:{ ID:bShowDrawTool?JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID, Args:[]}, Checked:bShowDrawTool},
|
|
76671
|
+
|
|
76672
|
+
{ Name:"移动筹码图", Data:{ ID:bShowStockChip?JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID, Args:[]}, Checked:bShowStockChip},
|
|
76673
|
+
]
|
|
76674
|
+
}
|
|
76675
|
+
];
|
|
76676
|
+
|
|
76677
|
+
//复权
|
|
76678
|
+
if(!MARKET_SUFFIX_NAME.IsSHSZIndex(this.Symbol) && !MARKET_SUFFIX_NAME.IsBIT(this.Symbol))
|
|
76679
|
+
{
|
|
76680
|
+
var rightMenu=
|
|
76681
|
+
{
|
|
76682
|
+
Name:"复权处理",
|
|
76683
|
+
SubMenu:
|
|
76684
|
+
[
|
|
76685
|
+
{ Name:"不复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[0]}, Checked:0==this.Right },
|
|
76686
|
+
{ Name:"前复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[1]}, Checked:1==this.Right },
|
|
76687
|
+
{ Name:"后复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[2]}, Checked:2==this.Right }
|
|
76688
|
+
]
|
|
76689
|
+
};
|
|
76690
|
+
|
|
76691
|
+
aryMenu.splice(1,0,rightMenu);
|
|
76692
|
+
}
|
|
76693
|
+
|
|
76694
|
+
//删除菜单
|
|
76695
|
+
for(var i=0;i<aryMenu.length;++i)
|
|
76696
|
+
{
|
|
76697
|
+
var item=aryMenu[i];
|
|
76698
|
+
if (item.Name=="五彩K线")
|
|
76699
|
+
{
|
|
76700
|
+
if (this.ColorIndex)
|
|
76701
|
+
{
|
|
76702
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76703
|
+
item.SubMenu.push({ Name:"删除五彩K线", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID} });
|
|
76704
|
+
}
|
|
76705
|
+
}
|
|
76706
|
+
else if (item.Name=="专家系统")
|
|
76707
|
+
{
|
|
76708
|
+
if (this.TradeIndex)
|
|
76709
|
+
{
|
|
76710
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76711
|
+
item.SubMenu.push({ Name:"删除专家系统", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID} });
|
|
76712
|
+
}
|
|
76713
|
+
}
|
|
76714
|
+
else if (item.Name=="叠加品种")
|
|
76715
|
+
{
|
|
76716
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
76717
|
+
{
|
|
76718
|
+
if (item.SubMenu[j].Checked)
|
|
76719
|
+
{
|
|
76720
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76721
|
+
item.SubMenu.push({ Name:"取消叠加", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID} });
|
|
76722
|
+
break;
|
|
76723
|
+
}
|
|
76724
|
+
}
|
|
76725
|
+
}
|
|
76726
|
+
else if (item.Name=="信息地雷")
|
|
76727
|
+
{
|
|
76728
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
76729
|
+
{
|
|
76730
|
+
if (item.SubMenu[j].Checked)
|
|
76731
|
+
{
|
|
76732
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76733
|
+
item.SubMenu.push({ Name:"删除所有", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID} });
|
|
76734
|
+
break;
|
|
76735
|
+
}
|
|
76736
|
+
}
|
|
76737
|
+
}
|
|
76738
|
+
}
|
|
76739
|
+
|
|
76740
|
+
return aryMenu;
|
|
76741
|
+
}
|
|
76742
|
+
|
|
76743
|
+
this.PopupRightMenuV2=function(data,e)
|
|
76744
|
+
{
|
|
76745
|
+
if (!this.JSPopMenu) return;
|
|
76746
|
+
var x=data.X, y=data.Y;
|
|
76747
|
+
var frameID=data.FrameID;
|
|
76748
|
+
var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
76749
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
76750
|
+
|
|
76751
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
76752
|
+
}
|
|
76753
|
+
|
|
76754
|
+
this.PopupSelectRectMenuV2=function(data, e)
|
|
76755
|
+
{
|
|
76756
|
+
var aryMenu=
|
|
76757
|
+
[
|
|
76758
|
+
{ Name:"区间统计", Data:{ ID:JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID, Args:[e] }},
|
|
76759
|
+
{ Name:"区间放大", Data:{ ID:JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID, Args:[data.SelectData] }}
|
|
76760
|
+
];
|
|
76761
|
+
|
|
76762
|
+
var menuData={ Menu:aryMenu, Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
76763
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
76764
|
+
var x=data.X, y=data.Y;
|
|
76765
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
76766
|
+
}
|
|
76767
|
+
|
|
76129
76768
|
//重新加载画图工具(切换股票|周期)
|
|
76130
76769
|
this.ReloadChartDrawPicture=function()
|
|
76131
76770
|
{
|
|
76132
76771
|
this.ChartDrawPicture=[];
|
|
76133
|
-
this.
|
|
76772
|
+
if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.IsSelected=false;
|
|
76773
|
+
this.SelectChartDrawPicture=null;
|
|
76774
|
+
this.CurrentChartDrawPicture=null;
|
|
76775
|
+
|
|
76134
76776
|
if (this.ChartDrawStorage)
|
|
76135
76777
|
{
|
|
76136
76778
|
this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData( {Symbol:this.Symbol, Period:this.Period} );
|
|
@@ -77521,7 +78163,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
77521
78163
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_EXTENDCHART_BUTTON);
|
|
77522
78164
|
if (event && event.Callback)
|
|
77523
78165
|
{
|
|
77524
|
-
var data={ Info:button, PreventDefault:false }; //PreventDefault 是否阻止内置的点击处理
|
|
78166
|
+
var data={ Info:button, PreventDefault:false, e:e }; //PreventDefault 是否阻止内置的点击处理
|
|
77525
78167
|
event.Callback(event,data,this);
|
|
77526
78168
|
if (data.PreventDefault) return;
|
|
77527
78169
|
}
|
|
@@ -79488,22 +80130,135 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79488
80130
|
//注册鼠标右键事件
|
|
79489
80131
|
this.OnRightMenu=function(x,y,e)
|
|
79490
80132
|
{
|
|
79491
|
-
|
|
79492
|
-
|
|
79493
|
-
|
|
79494
|
-
|
|
79495
|
-
this.RightMenu.DoModal(e);
|
|
79496
|
-
}
|
|
79497
|
-
|
|
80133
|
+
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
80134
|
+
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
80135
|
+
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
80136
|
+
|
|
79498
80137
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);
|
|
79499
80138
|
if (event)
|
|
79500
80139
|
{
|
|
79501
|
-
var frameId=this.Frame.PtInFrame(x,y);
|
|
79502
80140
|
var data={ X:x, Y:y, Event:e, FrameID:frameId };
|
|
79503
80141
|
event.Callback(event,data,this);
|
|
79504
80142
|
}
|
|
79505
80143
|
}
|
|
79506
80144
|
|
|
80145
|
+
//右键菜单数据
|
|
80146
|
+
this.GetRightMenuData=function(frameID)
|
|
80147
|
+
{
|
|
80148
|
+
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
80149
|
+
|
|
80150
|
+
var aryOverlaySymbol=[]; //叠加的股票列表
|
|
80151
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
80152
|
+
{
|
|
80153
|
+
var item=this.OverlayChartPaint[i];
|
|
80154
|
+
if (item && item.Symbol) aryOverlaySymbol.push(item.Symbol)
|
|
80155
|
+
}
|
|
80156
|
+
|
|
80157
|
+
var bShowDrawTool=false;
|
|
80158
|
+
if (this.GetExtendChartByClassName('DrawToolsButton')) bShowDrawTool=true; //画图工具
|
|
80159
|
+
|
|
80160
|
+
var aryMenu=
|
|
80161
|
+
[
|
|
80162
|
+
{
|
|
80163
|
+
Name:"叠加品种",
|
|
80164
|
+
SubMenu:
|
|
80165
|
+
[
|
|
80166
|
+
{ Name:"上证指数", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000001.sh", !aryOverlaySymbol.includes("000001.sh")]}, Checked:aryOverlaySymbol.includes("000001.sh") },
|
|
80167
|
+
{ Name:"深证成指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399001.sz", !aryOverlaySymbol.includes("399001.sz")]}, Checked:aryOverlaySymbol.includes("399001.sz") },
|
|
80168
|
+
{ Name:"中小板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399005.sz", !aryOverlaySymbol.includes("399005.sz")]}, Checked:aryOverlaySymbol.includes("399005.sz") },
|
|
80169
|
+
{ Name:"创业板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399006.sz", !aryOverlaySymbol.includes("399006.sz")]}, Checked:aryOverlaySymbol.includes("399006.sz") },
|
|
80170
|
+
{ Name:"沪深300", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000300.sh", !aryOverlaySymbol.includes("000300.sh")]}, Checked:aryOverlaySymbol.includes("000300.sh")},
|
|
80171
|
+
]
|
|
80172
|
+
},
|
|
80173
|
+
{
|
|
80174
|
+
Name:"多日分时图",
|
|
80175
|
+
SubMenu:
|
|
80176
|
+
[
|
|
80177
|
+
{ Name:"当日分时图", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[1]}, Checked:this.DayCount==1 },
|
|
80178
|
+
{ Name:"最近2日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[2]}, Checked:this.DayCount==2 },
|
|
80179
|
+
{ Name:"最近3日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[3]}, Checked:this.DayCount==3 },
|
|
80180
|
+
{ Name:"最近4日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[4]}, Checked:this.DayCount==4 },
|
|
80181
|
+
{ Name:"最近5日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[5]}, Checked:this.DayCount==5 },
|
|
80182
|
+
]
|
|
80183
|
+
},
|
|
80184
|
+
{
|
|
80185
|
+
Name:"指标窗口个数",
|
|
80186
|
+
SubMenu:
|
|
80187
|
+
[
|
|
80188
|
+
{ Name:"1个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[2]}, Checked:3==windowCount },
|
|
80189
|
+
{ Name:"2个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[3]}, Checked:4==windowCount },
|
|
80190
|
+
{ Name:"3个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[4]}, Checked:5==windowCount },
|
|
80191
|
+
{ Name:"4个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[5]}, Checked:6==windowCount },
|
|
80192
|
+
{ Name:"5个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[6]}, Checked:7==windowCount },
|
|
80193
|
+
]
|
|
80194
|
+
},
|
|
80195
|
+
{
|
|
80196
|
+
Name:"指标切换",
|
|
80197
|
+
SubMenu:
|
|
80198
|
+
[
|
|
80199
|
+
{ Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
|
|
80200
|
+
{ Name:"DMI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "DMI"]}},
|
|
80201
|
+
{ Name:"DMA", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "DMA"]}},
|
|
80202
|
+
{ Name:"BRAR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BRAR"]}},
|
|
80203
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
|
|
80204
|
+
{ Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
|
|
80205
|
+
{ Name:"WR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "WR"]}},
|
|
80206
|
+
{ Name:"CCI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "CCI"]}},
|
|
80207
|
+
{ Name:"TRIX", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "TRIX"]}},
|
|
80208
|
+
]
|
|
80209
|
+
},
|
|
80210
|
+
{
|
|
80211
|
+
Name:"区间选择",Data:{ ID: JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID, Args:[!this.EnableSelectRect]}, Checked:this.EnableSelectRect
|
|
80212
|
+
},
|
|
80213
|
+
{
|
|
80214
|
+
Name:"其他设置",
|
|
80215
|
+
SubMenu:
|
|
80216
|
+
[
|
|
80217
|
+
{ Name:"画图工具", Data:{ ID:bShowDrawTool?JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID, Args:[]}, Checked:bShowDrawTool},
|
|
80218
|
+
]
|
|
80219
|
+
}
|
|
80220
|
+
|
|
80221
|
+
];
|
|
80222
|
+
|
|
80223
|
+
if (MARKET_SUFFIX_NAME.IsSHSZStockA(this.Symbol))
|
|
80224
|
+
{
|
|
80225
|
+
var item={ Name:"集合竞价",Data:{ ID: JSCHART_MENU_ID.CMD_SHOW_BEFORE_DATA_ID, Args:[!this.IsShowBeforeData] }, Checked:this.IsShowBeforeData };
|
|
80226
|
+
aryMenu.splice(4,0,item);
|
|
80227
|
+
}
|
|
80228
|
+
|
|
80229
|
+
|
|
80230
|
+
//删除菜单
|
|
80231
|
+
for(var i=0;i<aryMenu.length;++i)
|
|
80232
|
+
{
|
|
80233
|
+
var item=aryMenu[i];
|
|
80234
|
+
if (item.Name=="叠加品种")
|
|
80235
|
+
{
|
|
80236
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
80237
|
+
{
|
|
80238
|
+
if (item.SubMenu[j].Checked)
|
|
80239
|
+
{
|
|
80240
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
80241
|
+
item.SubMenu.push({ Name:"取消叠加", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID} });
|
|
80242
|
+
break;
|
|
80243
|
+
}
|
|
80244
|
+
}
|
|
80245
|
+
}
|
|
80246
|
+
}
|
|
80247
|
+
|
|
80248
|
+
return aryMenu;
|
|
80249
|
+
}
|
|
80250
|
+
|
|
80251
|
+
this.PopupRightMenuV2=function(data,e)
|
|
80252
|
+
{
|
|
80253
|
+
if (!this.JSPopMenu) return;
|
|
80254
|
+
var x=data.X, y=data.Y;
|
|
80255
|
+
var frameID=data.FrameID;
|
|
80256
|
+
var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
80257
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
80258
|
+
|
|
80259
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
80260
|
+
}
|
|
80261
|
+
|
|
79507
80262
|
this.OnWheel=function(e)
|
|
79508
80263
|
{
|
|
79509
80264
|
JSConsole.Chart.Log('[MinuteChartContainer::OnWheel]',e);
|
|
@@ -80608,15 +81363,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
80608
81363
|
this.ResetDayOffset();
|
|
80609
81364
|
}
|
|
80610
81365
|
|
|
80611
|
-
|
|
80612
|
-
{
|
|
80613
|
-
this.ChartDrawPicture=[];
|
|
80614
|
-
}
|
|
80615
|
-
else
|
|
80616
|
-
{
|
|
80617
|
-
this.ReloadChartDrawPicture();
|
|
80618
|
-
}
|
|
80619
|
-
|
|
81366
|
+
this.ReloadChartDrawPicture();
|
|
80620
81367
|
this.ResetDataStatus();
|
|
80621
81368
|
this.ClearIndexPaint(); //清空指标
|
|
80622
81369
|
this.Frame.ClearYCoordinateMaxMin();
|
|
@@ -81138,6 +81885,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
81138
81885
|
this.TitlePaint[0].IsShowDate=true;
|
|
81139
81886
|
this.UpdateDataOffset();
|
|
81140
81887
|
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
81888
|
+
this.CreateChartDrawPictureByStorage(); //创建画图工具
|
|
81141
81889
|
|
|
81142
81890
|
//执行脚本
|
|
81143
81891
|
if (this.Frame.SubFrame.length>2)
|
|
@@ -81436,7 +82184,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
81436
82184
|
this.UpdateLatestMinuteDataV2(minuteData);
|
|
81437
82185
|
this.UpdateHistoryMinuteUI(updateTime);
|
|
81438
82186
|
this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"} );
|
|
81439
|
-
this.RequestOverlayMinuteData();
|
|
82187
|
+
this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
|
|
81440
82188
|
this.BindAllOverlayIndexData(this.SourceData);
|
|
81441
82189
|
this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
|
|
81442
82190
|
this.AutoUpdate();
|
|
@@ -82856,7 +83604,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
82856
83604
|
this.ReloadChartDrawPicture=function()
|
|
82857
83605
|
{
|
|
82858
83606
|
this.ChartDrawPicture=[];
|
|
82859
|
-
this.
|
|
83607
|
+
if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.IsSelected=false;
|
|
83608
|
+
this.SelectChartDrawPicture=null;
|
|
83609
|
+
this.CurrentChartDrawPicture=null;
|
|
83610
|
+
this.MoveOnChartDrawPicture=null;
|
|
83611
|
+
|
|
82860
83612
|
if (this.ChartDrawStorage)
|
|
82861
83613
|
{
|
|
82862
83614
|
this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData( { Symbol:this.Symbol, Period:888888888 } );
|
|
@@ -82867,7 +83619,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
82867
83619
|
{
|
|
82868
83620
|
if (!this.ChartDrawStorageCache || this.ChartDrawStorageCache.length<=0) return;
|
|
82869
83621
|
|
|
82870
|
-
|
|
83622
|
+
var self=this;
|
|
83623
|
+
for(var i=0; i<this.ChartDrawStorageCache.length; ++i)
|
|
82871
83624
|
{
|
|
82872
83625
|
var item=this.ChartDrawStorageCache[i];
|
|
82873
83626
|
if (item.FrameID<0 || !this.Frame.SubFrame || this.Frame.SubFrame.length<item.FrameID) continue;
|
|
@@ -82878,8 +83631,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
82878
83631
|
drawPicture.Canvas=this.Canvas;
|
|
82879
83632
|
drawPicture.Status=10;
|
|
82880
83633
|
drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
|
|
83634
|
+
if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
|
|
83635
|
+
drawPicture.ResetXValue();
|
|
82881
83636
|
drawPicture.UpdateXValue();
|
|
82882
83637
|
drawPicture.ValueToPoint();
|
|
83638
|
+
drawPicture.GetActiveDrawPicture=()=>{ return this.GetActiveDrawPicture(); }
|
|
82883
83639
|
|
|
82884
83640
|
if (drawPicture.ClassName==='ChartDrawPictureText') drawPicture.IsInitialized=true;
|
|
82885
83641
|
|
|
@@ -89419,1479 +90175,6 @@ function WaitDialog(divElement)
|
|
|
89419
90175
|
}
|
|
89420
90176
|
}
|
|
89421
90177
|
|
|
89422
|
-
//K线右键菜单类
|
|
89423
|
-
//id:"kline"
|
|
89424
|
-
function KLineRightMenu(divElement)
|
|
89425
|
-
{
|
|
89426
|
-
this.newMethod=IDivDialog; //派生
|
|
89427
|
-
this.newMethod(divElement);
|
|
89428
|
-
delete this.newMethod;
|
|
89429
|
-
|
|
89430
|
-
this.option={};
|
|
89431
|
-
|
|
89432
|
-
this.Create = function () {
|
|
89433
|
-
var _self = this;
|
|
89434
|
-
|
|
89435
|
-
this.ID=Guid();
|
|
89436
|
-
|
|
89437
|
-
_self.BindData();
|
|
89438
|
-
_self.BindEvent();
|
|
89439
|
-
}
|
|
89440
|
-
this.BindData=function(){
|
|
89441
|
-
var _self = this;
|
|
89442
|
-
|
|
89443
|
-
var id=this.DivElement.id;
|
|
89444
|
-
var $body = $("#" + id);
|
|
89445
|
-
|
|
89446
|
-
$body.find("div[id^='topMenu_']").remove();
|
|
89447
|
-
$body.find("div[id^='childMenu_']").remove();
|
|
89448
|
-
|
|
89449
|
-
var $topMenu = $("<div />");
|
|
89450
|
-
$topMenu.attr("id", "topMenu_"+_self.ID).addClass("context-menu-wrapper topmenu").hide();
|
|
89451
|
-
$body.append($topMenu);
|
|
89452
|
-
|
|
89453
|
-
var $topTable = $("<table />");
|
|
89454
|
-
$topTable.attr({ id: "topTable_" + _self.ID, cellspacing: "0", cellpadding: "0" }).addClass("context-menu");
|
|
89455
|
-
$topMenu.append($topTable);
|
|
89456
|
-
|
|
89457
|
-
$topTable.append(_self.childrenList(_self.option.data));
|
|
89458
|
-
|
|
89459
|
-
for (var i = 0; i < _self.option.data.length; i++) {
|
|
89460
|
-
var isHasChildren = typeof _self.option.data[i].children != "undefined";
|
|
89461
|
-
|
|
89462
|
-
if (isHasChildren) {
|
|
89463
|
-
|
|
89464
|
-
var $childMenu = $("<div />");
|
|
89465
|
-
$childMenu.attr({ id: "childMenu_"+_self.ID + i, "data-index": i }).addClass("context-menu-wrapper").hide();
|
|
89466
|
-
$body.append($childMenu);
|
|
89467
|
-
|
|
89468
|
-
var $childTable = $("<table />");
|
|
89469
|
-
$childTable.attr({ id: "childTable_" + _self.ID + i, cellspacing: "0", cellpadding: "0" }).addClass("context-menu");
|
|
89470
|
-
$childMenu.append($childTable);
|
|
89471
|
-
|
|
89472
|
-
$childTable.append(_self.childrenList(_self.option.data[i].children));
|
|
89473
|
-
}
|
|
89474
|
-
}
|
|
89475
|
-
}
|
|
89476
|
-
|
|
89477
|
-
this.Update=function()
|
|
89478
|
-
{
|
|
89479
|
-
var _self = this;
|
|
89480
|
-
//var id=this.DivElement.id;
|
|
89481
|
-
//var $body=$("#"+id);
|
|
89482
|
-
//
|
|
89483
|
-
//var $topTable = $("#topTable_" + _self.ID);
|
|
89484
|
-
//$topTable.empty();
|
|
89485
|
-
//$topTable.append(_self.childrenList(_self.option.data));
|
|
89486
|
-
//
|
|
89487
|
-
//for (var i = 0; i < _self.option.data.length; i++) {
|
|
89488
|
-
// var isHasChildren = typeof _self.option.data[i].children != "undefined";
|
|
89489
|
-
//
|
|
89490
|
-
// if (isHasChildren) {
|
|
89491
|
-
// var $childTable = $("#childTable_" + _self.ID + i);
|
|
89492
|
-
// $childTable.empty();
|
|
89493
|
-
// $childTable.append(_self.childrenList(_self.option.data[i].children));
|
|
89494
|
-
// }
|
|
89495
|
-
//}
|
|
89496
|
-
|
|
89497
|
-
_self.BindData();
|
|
89498
|
-
_self.BindEvent();
|
|
89499
|
-
}
|
|
89500
|
-
|
|
89501
|
-
this.childrenList = function(list) {
|
|
89502
|
-
var result = [];
|
|
89503
|
-
|
|
89504
|
-
for (var i = 0; i < list.length; i++) {
|
|
89505
|
-
var isBorder = typeof list[i].isBorder != "undefined" && list[i].isBorder;
|
|
89506
|
-
|
|
89507
|
-
var $tr = $("<tr />");
|
|
89508
|
-
$tr.addClass("font_Arial context-menu");
|
|
89509
|
-
if (isBorder)
|
|
89510
|
-
$tr.addClass("border");
|
|
89511
|
-
|
|
89512
|
-
var $td1 = $("<td />");
|
|
89513
|
-
if(list[i].selected){
|
|
89514
|
-
$td1.addClass("spacer context-menu").html("√");
|
|
89515
|
-
}else{
|
|
89516
|
-
$td1.addClass("spacer context-menu");
|
|
89517
|
-
}
|
|
89518
|
-
|
|
89519
|
-
var $td2 = $("<td />");
|
|
89520
|
-
$td2.addClass("text").html(list[i].text);
|
|
89521
|
-
|
|
89522
|
-
var $td3 = $("<td />");
|
|
89523
|
-
$td3.addClass("right shortcut");
|
|
89524
|
-
|
|
89525
|
-
var $td4 = $("<td />");
|
|
89526
|
-
$td4.addClass(typeof list[i].children != "undefined" ? "submenu-arrow" : "context-menu spacer");
|
|
89527
|
-
|
|
89528
|
-
$tr.append($td1).append($td2).append($td3).append($td4);
|
|
89529
|
-
|
|
89530
|
-
result.push($tr);
|
|
89531
|
-
}
|
|
89532
|
-
return result;
|
|
89533
|
-
}
|
|
89534
|
-
|
|
89535
|
-
this.Show=function (obj) {
|
|
89536
|
-
var _self = this;
|
|
89537
|
-
$.extend(_self.option, obj);
|
|
89538
|
-
|
|
89539
|
-
if (!_self.ID) _self.Create(); //判断是否重复创建
|
|
89540
|
-
else _self.Update(); //更新菜单状态
|
|
89541
|
-
|
|
89542
|
-
var $topMenu = $("#topMenu_"+_self.ID),
|
|
89543
|
-
topWidth = $topMenu.outerWidth(),
|
|
89544
|
-
topHeight = $topMenu.outerHeight();
|
|
89545
|
-
|
|
89546
|
-
var x = _self.option.x,
|
|
89547
|
-
y = _self.option.y;
|
|
89548
|
-
|
|
89549
|
-
if (topWidth > _self.option.position.X + _self.option.position.W- x) //超过了右边距
|
|
89550
|
-
x = x - topWidth;
|
|
89551
|
-
|
|
89552
|
-
if (topHeight > _self.option.position.Y +_self.option.position.H - y)//超过了下边距
|
|
89553
|
-
y = y - topHeight;
|
|
89554
|
-
|
|
89555
|
-
$topMenu.hide();
|
|
89556
|
-
$topMenu.css({ position:"absolute",left: x + "px", top: y + "px" }).show();
|
|
89557
|
-
|
|
89558
|
-
this.isInit = true;
|
|
89559
|
-
}
|
|
89560
|
-
|
|
89561
|
-
this.Hide=function () {
|
|
89562
|
-
var _self = this;
|
|
89563
|
-
if (typeof($)=="undefined") return;
|
|
89564
|
-
$("#topMenu_" + _self.ID).hide();
|
|
89565
|
-
$("[id^='childMenu_" + _self.ID + "']").hide();
|
|
89566
|
-
}
|
|
89567
|
-
|
|
89568
|
-
this.BindEvent=function () {
|
|
89569
|
-
var _self = this;
|
|
89570
|
-
var $childMenu = $("[id^='childMenu_" + _self.ID + "']");
|
|
89571
|
-
|
|
89572
|
-
$("#topTable_" + _self.ID).find("tr").mouseenter(function () {
|
|
89573
|
-
var $this = $(this),
|
|
89574
|
-
index = $this.index(),
|
|
89575
|
-
$topMenu = $("#topMenu_" + _self.ID),
|
|
89576
|
-
$child = $("#childMenu_" + _self.ID + index),
|
|
89577
|
-
trWidth = $this.outerWidth(),
|
|
89578
|
-
trHeight = $this.outerHeight();
|
|
89579
|
-
|
|
89580
|
-
var left = $topMenu.position().left + trWidth + 1;
|
|
89581
|
-
var top = $topMenu.position().top + (trHeight * index);
|
|
89582
|
-
|
|
89583
|
-
if (trWidth > _self.option.position.X + _self.option.position.W - left) //超过了右边距
|
|
89584
|
-
left = left - trWidth - $topMenu.outerWidth() - 2;
|
|
89585
|
-
|
|
89586
|
-
if ($child.outerHeight() > _self.option.position.Y +_self.option.position.H - top)//超过了下边距
|
|
89587
|
-
top = $topMenu.position().top + $topMenu.outerHeight() - $child.outerHeight();
|
|
89588
|
-
|
|
89589
|
-
$childMenu.hide();
|
|
89590
|
-
$child.css({ left: left + "px", top: top + "px" }).show();
|
|
89591
|
-
}).mouseleave(function () {
|
|
89592
|
-
var index = $(this).index();
|
|
89593
|
-
setTimeout(function () {
|
|
89594
|
-
if ($("#childMenu_" + _self.ID + index).attr("data-isShow") != 1) {
|
|
89595
|
-
$("#childMenu_" + _self.ID + index).hide();
|
|
89596
|
-
}
|
|
89597
|
-
}, 10)
|
|
89598
|
-
|
|
89599
|
-
}).click(function () {
|
|
89600
|
-
var $this = $(this);
|
|
89601
|
-
var index = $this.index();
|
|
89602
|
-
|
|
89603
|
-
if ($.type(_self.option.data[index].click) == "function") {
|
|
89604
|
-
_self.option.data[index].click(_self.option.returnData);
|
|
89605
|
-
$this.hide();
|
|
89606
|
-
}
|
|
89607
|
-
}).contextmenu(function()
|
|
89608
|
-
{
|
|
89609
|
-
return false; //屏蔽系统右键菜单
|
|
89610
|
-
});
|
|
89611
|
-
|
|
89612
|
-
|
|
89613
|
-
$childMenu.mouseenter(function () {
|
|
89614
|
-
$(this).attr("data-isShow", "1");
|
|
89615
|
-
}).mouseleave(function () {
|
|
89616
|
-
$(this).attr("data-isShow", "0");
|
|
89617
|
-
}).contextmenu(function()
|
|
89618
|
-
{
|
|
89619
|
-
return false; //屏蔽系统右键菜单
|
|
89620
|
-
});
|
|
89621
|
-
|
|
89622
|
-
$childMenu.find("tr").click(function () {
|
|
89623
|
-
var $this = $(this);
|
|
89624
|
-
var divIndex = parseInt($this.closest("div").attr("data-index"));
|
|
89625
|
-
var trIndex = $this.index();
|
|
89626
|
-
|
|
89627
|
-
if ($.type(_self.option.data[divIndex].children[trIndex].click) == "function") {
|
|
89628
|
-
_self.option.data[divIndex].children[trIndex].click(_self.option.windowIndex || 1);
|
|
89629
|
-
$childMenu.hide();
|
|
89630
|
-
}
|
|
89631
|
-
});
|
|
89632
|
-
}
|
|
89633
|
-
|
|
89634
|
-
this.GetPeriod=function (chart)
|
|
89635
|
-
{
|
|
89636
|
-
var data=
|
|
89637
|
-
[
|
|
89638
|
-
{
|
|
89639
|
-
text: "日线", Value:0,
|
|
89640
|
-
click: function () { chart.ChangePeriod(0); }
|
|
89641
|
-
},
|
|
89642
|
-
{
|
|
89643
|
-
text: "周线",Value:1,
|
|
89644
|
-
click: function () { chart.ChangePeriod(1); }
|
|
89645
|
-
},
|
|
89646
|
-
{
|
|
89647
|
-
text: "双周线",Value:21,
|
|
89648
|
-
click: function () { chart.ChangePeriod(21); }
|
|
89649
|
-
},
|
|
89650
|
-
{
|
|
89651
|
-
text: "月线",Value:2,
|
|
89652
|
-
click: function () { chart.ChangePeriod(2); }
|
|
89653
|
-
},
|
|
89654
|
-
{
|
|
89655
|
-
text: "季线",Value:9,
|
|
89656
|
-
click: function () { chart.ChangePeriod(9); }
|
|
89657
|
-
},
|
|
89658
|
-
{
|
|
89659
|
-
text: "半年",Value:22,
|
|
89660
|
-
click: function () { chart.ChangePeriod(22); }
|
|
89661
|
-
},
|
|
89662
|
-
{
|
|
89663
|
-
text: "年线",Value:3,
|
|
89664
|
-
click: function () { chart.ChangePeriod(3); }
|
|
89665
|
-
},
|
|
89666
|
-
{
|
|
89667
|
-
text: "1分",Value:4,
|
|
89668
|
-
click: function () { chart.ChangePeriod(4); }
|
|
89669
|
-
},
|
|
89670
|
-
{
|
|
89671
|
-
text: "5分",Value:5,
|
|
89672
|
-
click: function () { chart.ChangePeriod(5); }
|
|
89673
|
-
},
|
|
89674
|
-
{
|
|
89675
|
-
text: "15分",Value:6,
|
|
89676
|
-
click: function () { chart.ChangePeriod(6); }
|
|
89677
|
-
},
|
|
89678
|
-
{
|
|
89679
|
-
text: "30分",Value:7,
|
|
89680
|
-
click: function () { chart.ChangePeriod(7); }
|
|
89681
|
-
},
|
|
89682
|
-
{
|
|
89683
|
-
text: "60分",Value:8,
|
|
89684
|
-
click: function () { chart.ChangePeriod(8); }
|
|
89685
|
-
},
|
|
89686
|
-
{
|
|
89687
|
-
text: "2小时",Value:11,
|
|
89688
|
-
click: function () { chart.ChangePeriod(11); }
|
|
89689
|
-
},
|
|
89690
|
-
{
|
|
89691
|
-
text: "4小时",Value:12,
|
|
89692
|
-
click: function () { chart.ChangePeriod(12); }
|
|
89693
|
-
},
|
|
89694
|
-
{
|
|
89695
|
-
text: "分笔",Value:10,
|
|
89696
|
-
click: function () { chart.ChangePeriod(10); }
|
|
89697
|
-
},
|
|
89698
|
-
{
|
|
89699
|
-
text: "自定义周期:3分钟",Value:20003,
|
|
89700
|
-
click: function () { chart.ChangePeriod(20003); }
|
|
89701
|
-
},
|
|
89702
|
-
{
|
|
89703
|
-
text: "自定义周期:35分钟",Value:20035,
|
|
89704
|
-
click: function () { chart.ChangePeriod(20035); }
|
|
89705
|
-
},
|
|
89706
|
-
{
|
|
89707
|
-
text: "自定义周期:8日",Value:40008,
|
|
89708
|
-
click: function () { chart.ChangePeriod(40008); }
|
|
89709
|
-
}
|
|
89710
|
-
];
|
|
89711
|
-
|
|
89712
|
-
for(var i in data)
|
|
89713
|
-
{
|
|
89714
|
-
var item=data[i];
|
|
89715
|
-
if (item.Value==chart.Period)
|
|
89716
|
-
{
|
|
89717
|
-
item.selected=true;
|
|
89718
|
-
break;
|
|
89719
|
-
}
|
|
89720
|
-
}
|
|
89721
|
-
|
|
89722
|
-
return data;
|
|
89723
|
-
}
|
|
89724
|
-
|
|
89725
|
-
this.GetRight=function(chart)
|
|
89726
|
-
{
|
|
89727
|
-
var data=
|
|
89728
|
-
[
|
|
89729
|
-
{
|
|
89730
|
-
text: "不复权",
|
|
89731
|
-
click: function () { chart.ChangeRight(0); }
|
|
89732
|
-
},
|
|
89733
|
-
{
|
|
89734
|
-
text: "前复权",
|
|
89735
|
-
click: function () { chart.ChangeRight(1); }
|
|
89736
|
-
},
|
|
89737
|
-
{
|
|
89738
|
-
text: "后复权",
|
|
89739
|
-
click: function () { chart.ChangeRight(2); }
|
|
89740
|
-
}
|
|
89741
|
-
];
|
|
89742
|
-
|
|
89743
|
-
if (chart.Right>=0 && chart.Right<data.length) data[chart.Right].selected=true;
|
|
89744
|
-
|
|
89745
|
-
return data;
|
|
89746
|
-
}
|
|
89747
|
-
|
|
89748
|
-
//指标
|
|
89749
|
-
this.GetIndex=function (chart)
|
|
89750
|
-
{
|
|
89751
|
-
return [{
|
|
89752
|
-
text: "均线",
|
|
89753
|
-
click: function (windowIndex) {
|
|
89754
|
-
chart.ChangeIndex(windowIndex, '均线')
|
|
89755
|
-
}
|
|
89756
|
-
}, {
|
|
89757
|
-
text: "BOLL",
|
|
89758
|
-
click: function (windowIndex) {
|
|
89759
|
-
chart.ChangeIndex(windowIndex, 'BOLL')
|
|
89760
|
-
},
|
|
89761
|
-
isBorder:true
|
|
89762
|
-
}, {
|
|
89763
|
-
text: "MACD",
|
|
89764
|
-
click: function (windowIndex) {
|
|
89765
|
-
chart.ChangeIndex(windowIndex, 'MACD')
|
|
89766
|
-
}
|
|
89767
|
-
}, {
|
|
89768
|
-
text: "KDJ",
|
|
89769
|
-
click: function (windowIndex) {
|
|
89770
|
-
chart.ChangeIndex(windowIndex, 'KDJ')
|
|
89771
|
-
}
|
|
89772
|
-
}, {
|
|
89773
|
-
text: "VOL",
|
|
89774
|
-
click: function (windowIndex) {
|
|
89775
|
-
chart.ChangeIndex(windowIndex, 'VOL')
|
|
89776
|
-
}
|
|
89777
|
-
}, {
|
|
89778
|
-
text: "RSI",
|
|
89779
|
-
click: function (windowIndex) {
|
|
89780
|
-
chart.ChangeIndex(windowIndex, 'RSI')
|
|
89781
|
-
}
|
|
89782
|
-
}, {
|
|
89783
|
-
text: "BRAR",
|
|
89784
|
-
click: function (windowIndex) {
|
|
89785
|
-
chart.ChangeIndex(windowIndex, 'BRAR')
|
|
89786
|
-
}
|
|
89787
|
-
}, {
|
|
89788
|
-
text: "WR",
|
|
89789
|
-
click: function (windowIndex) {
|
|
89790
|
-
chart.ChangeIndex(windowIndex, 'WR')
|
|
89791
|
-
}
|
|
89792
|
-
}, {
|
|
89793
|
-
text: "BIAS",
|
|
89794
|
-
click: function (windowIndex) {
|
|
89795
|
-
chart.ChangeIndex(windowIndex, 'BIAS')
|
|
89796
|
-
}
|
|
89797
|
-
}, {
|
|
89798
|
-
text: "OBV",
|
|
89799
|
-
click: function (windowIndex) {
|
|
89800
|
-
chart.ChangeIndex(windowIndex, 'OBV')
|
|
89801
|
-
}
|
|
89802
|
-
}, {
|
|
89803
|
-
text: "DMI",
|
|
89804
|
-
click: function (windowIndex) {
|
|
89805
|
-
chart.ChangeIndex(windowIndex, 'DMI')
|
|
89806
|
-
}
|
|
89807
|
-
}, {
|
|
89808
|
-
text: "CR",
|
|
89809
|
-
click: function (windowIndex) {
|
|
89810
|
-
chart.ChangeIndex(windowIndex, 'CR')
|
|
89811
|
-
}
|
|
89812
|
-
}, {
|
|
89813
|
-
text: "PSY",
|
|
89814
|
-
click: function (windowIndex) {
|
|
89815
|
-
chart.ChangeIndex(windowIndex, 'PSY')
|
|
89816
|
-
}
|
|
89817
|
-
}, {
|
|
89818
|
-
text: "CCI",
|
|
89819
|
-
click: function (windowIndex) {
|
|
89820
|
-
chart.ChangeIndex(windowIndex, 'CCI')
|
|
89821
|
-
}
|
|
89822
|
-
}, {
|
|
89823
|
-
text: "DMA",
|
|
89824
|
-
click: function (windowIndex) {
|
|
89825
|
-
chart.ChangeIndex(windowIndex, 'DMA')
|
|
89826
|
-
}
|
|
89827
|
-
}, {
|
|
89828
|
-
text: "TRIX",
|
|
89829
|
-
click: function (windowIndex) {
|
|
89830
|
-
chart.ChangeIndex(windowIndex, 'TRIX')
|
|
89831
|
-
}
|
|
89832
|
-
}, {
|
|
89833
|
-
text: "VR",
|
|
89834
|
-
click: function (windowIndex) {
|
|
89835
|
-
chart.ChangeIndex(windowIndex, 'VR')
|
|
89836
|
-
}
|
|
89837
|
-
}, {
|
|
89838
|
-
text: "EMV",
|
|
89839
|
-
click: function (windowIndex) {
|
|
89840
|
-
chart.ChangeIndex(windowIndex, 'EMV')
|
|
89841
|
-
}
|
|
89842
|
-
}, {
|
|
89843
|
-
text: "ROC",
|
|
89844
|
-
click: function (windowIndex) {
|
|
89845
|
-
chart.ChangeIndex(windowIndex, 'ROC')
|
|
89846
|
-
}
|
|
89847
|
-
}, {
|
|
89848
|
-
text: "MIM",
|
|
89849
|
-
click: function (windowIndex) {
|
|
89850
|
-
chart.ChangeIndex(windowIndex, 'MIM')
|
|
89851
|
-
}
|
|
89852
|
-
}, {
|
|
89853
|
-
text: "FSL",
|
|
89854
|
-
click: function (windowIndex) {
|
|
89855
|
-
chart.ChangeIndex(windowIndex, 'FSL')
|
|
89856
|
-
}
|
|
89857
|
-
} ]
|
|
89858
|
-
}
|
|
89859
|
-
|
|
89860
|
-
//五彩K线
|
|
89861
|
-
this.GetColorIndex=function (chart)
|
|
89862
|
-
{
|
|
89863
|
-
var data=
|
|
89864
|
-
[
|
|
89865
|
-
{
|
|
89866
|
-
text: "十字星",
|
|
89867
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-十字星') }
|
|
89868
|
-
},
|
|
89869
|
-
{
|
|
89870
|
-
text: "早晨之星",
|
|
89871
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-早晨之星') },
|
|
89872
|
-
},
|
|
89873
|
-
{
|
|
89874
|
-
text: "垂死十字",
|
|
89875
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-垂死十字') },
|
|
89876
|
-
},
|
|
89877
|
-
{
|
|
89878
|
-
text: "三只乌鸦",
|
|
89879
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-三只乌鸦') }
|
|
89880
|
-
},
|
|
89881
|
-
{
|
|
89882
|
-
text: "光脚阴线",
|
|
89883
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-光脚阴线') }
|
|
89884
|
-
},
|
|
89885
|
-
{
|
|
89886
|
-
text: "黄昏之星",
|
|
89887
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-黄昏之星') }
|
|
89888
|
-
}
|
|
89889
|
-
];
|
|
89890
|
-
|
|
89891
|
-
if (chart.ColorIndex)
|
|
89892
|
-
{
|
|
89893
|
-
data[data.length-1].isBorder=true;
|
|
89894
|
-
data.push(
|
|
89895
|
-
{
|
|
89896
|
-
text: "删除五彩K线",
|
|
89897
|
-
click: function (windowIndex) { chart.CancelInstructionIndex() }
|
|
89898
|
-
});
|
|
89899
|
-
}
|
|
89900
|
-
|
|
89901
|
-
return data;
|
|
89902
|
-
}
|
|
89903
|
-
|
|
89904
|
-
//专家系统
|
|
89905
|
-
this.GetTradeIndex=function(chart)
|
|
89906
|
-
{
|
|
89907
|
-
var data=
|
|
89908
|
-
[
|
|
89909
|
-
{
|
|
89910
|
-
text: "BIAS",
|
|
89911
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-BIAS') }
|
|
89912
|
-
},
|
|
89913
|
-
{
|
|
89914
|
-
text: "CCI",
|
|
89915
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-CCI') }
|
|
89916
|
-
},
|
|
89917
|
-
{
|
|
89918
|
-
text: "DMI",
|
|
89919
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-DMI') }
|
|
89920
|
-
},
|
|
89921
|
-
{
|
|
89922
|
-
text: "KD",
|
|
89923
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-KD') }
|
|
89924
|
-
},
|
|
89925
|
-
{
|
|
89926
|
-
text: "BOLL",
|
|
89927
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-BOLL') }
|
|
89928
|
-
},
|
|
89929
|
-
{
|
|
89930
|
-
text: "KDJ",
|
|
89931
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-KDJ') }
|
|
89932
|
-
}
|
|
89933
|
-
];
|
|
89934
|
-
|
|
89935
|
-
if (chart.TradeIndex)
|
|
89936
|
-
{
|
|
89937
|
-
data[data.length-1].isBorder=true;
|
|
89938
|
-
data.push(
|
|
89939
|
-
{
|
|
89940
|
-
text: "删除专家系统",
|
|
89941
|
-
click: function (windowIndex) { chart.CancelInstructionIndex()}
|
|
89942
|
-
});
|
|
89943
|
-
}
|
|
89944
|
-
return data;
|
|
89945
|
-
}
|
|
89946
|
-
|
|
89947
|
-
//叠加
|
|
89948
|
-
this.GetOverlay=function (chart)
|
|
89949
|
-
{
|
|
89950
|
-
var data=
|
|
89951
|
-
[
|
|
89952
|
-
{
|
|
89953
|
-
text: "上证指数",
|
|
89954
|
-
click: function () { chart.OverlaySymbol('000001.sh'); }
|
|
89955
|
-
},
|
|
89956
|
-
{
|
|
89957
|
-
text: "深证成指",
|
|
89958
|
-
click: function () { chart.OverlaySymbol('399001.sz'); }
|
|
89959
|
-
},
|
|
89960
|
-
{
|
|
89961
|
-
text: "中小板指",
|
|
89962
|
-
click: function () { chart.OverlaySymbol('399005.sz'); }
|
|
89963
|
-
},
|
|
89964
|
-
{
|
|
89965
|
-
text: "创业板指",
|
|
89966
|
-
click: function () { chart.OverlaySymbol('399006.sz'); }
|
|
89967
|
-
},
|
|
89968
|
-
{
|
|
89969
|
-
text: "沪深300",
|
|
89970
|
-
click: function () { chart.OverlaySymbol('000300.sh'); },
|
|
89971
|
-
}
|
|
89972
|
-
];
|
|
89973
|
-
|
|
89974
|
-
for(var i in chart.OverlayChartPaint)
|
|
89975
|
-
{
|
|
89976
|
-
var item=chart.OverlayChartPaint[i];
|
|
89977
|
-
var symbol=item.Symbol;
|
|
89978
|
-
const mapSymbol=new Map([['000001.sh',0],['399001.sz',1],['399005.sz',2],['399006.sz',3],['000300.sh',4]]);
|
|
89979
|
-
if (mapSymbol.has(symbol))
|
|
89980
|
-
{
|
|
89981
|
-
var menuItem=data[mapSymbol.get(symbol)];
|
|
89982
|
-
let delSymbol=symbol;
|
|
89983
|
-
menuItem.selected=true;
|
|
89984
|
-
menuItem.click=function () { chart.DeleteOverlaySymbol(delSymbol); };
|
|
89985
|
-
}
|
|
89986
|
-
}
|
|
89987
|
-
|
|
89988
|
-
if (chart.OverlayChartPaint && chart.OverlayChartPaint.length>0)
|
|
89989
|
-
{
|
|
89990
|
-
data[data.length-1].isBorder=true;
|
|
89991
|
-
data.push(
|
|
89992
|
-
{
|
|
89993
|
-
text: "取消叠加",
|
|
89994
|
-
click: function () { chart.ClearOverlaySymbol();}
|
|
89995
|
-
}
|
|
89996
|
-
);
|
|
89997
|
-
}
|
|
89998
|
-
|
|
89999
|
-
return data;
|
|
90000
|
-
}
|
|
90001
|
-
|
|
90002
|
-
//K线类型设置
|
|
90003
|
-
this.GetKLineType=function(chart)
|
|
90004
|
-
{
|
|
90005
|
-
var data=
|
|
90006
|
-
[
|
|
90007
|
-
{
|
|
90008
|
-
text: "K线(空心阳线)",
|
|
90009
|
-
click: function () { chart.ChangeKLineDrawType(3);}
|
|
90010
|
-
},
|
|
90011
|
-
{
|
|
90012
|
-
text: "K线(实心阳线)",
|
|
90013
|
-
click: function () { chart.ChangeKLineDrawType(0); }
|
|
90014
|
-
},
|
|
90015
|
-
{
|
|
90016
|
-
text: "美国线",
|
|
90017
|
-
click: function () { chart.ChangeKLineDrawType(2, true ,{ IsThinAKBar:false }); }
|
|
90018
|
-
},
|
|
90019
|
-
{
|
|
90020
|
-
text: "收盘线",
|
|
90021
|
-
click: function () { chart.ChangeKLineDrawType(1); }
|
|
90022
|
-
},
|
|
90023
|
-
{
|
|
90024
|
-
text: "收盘面积",
|
|
90025
|
-
click: function () { chart.ChangeKLineDrawType(4); }
|
|
90026
|
-
},
|
|
90027
|
-
{
|
|
90028
|
-
text: "K线(空心阳线阴线)",
|
|
90029
|
-
click: function () { chart.ChangeKLineDrawType(6);}
|
|
90030
|
-
},
|
|
90031
|
-
{
|
|
90032
|
-
text: "Heikin Ashi",
|
|
90033
|
-
click: function () { chart.ChangeKLineDrawType(11);}
|
|
90034
|
-
},
|
|
90035
|
-
{
|
|
90036
|
-
text: "Line Break",
|
|
90037
|
-
click: function () { chart.ChangeKLineDrawType(12);}
|
|
90038
|
-
},
|
|
90039
|
-
{
|
|
90040
|
-
text: "High-low",
|
|
90041
|
-
click: function () { chart.ChangeKLineDrawType(13);}
|
|
90042
|
-
},
|
|
90043
|
-
{
|
|
90044
|
-
text: "HLC Area",
|
|
90045
|
-
click: function () { chart.ChangeKLineDrawType(15);}
|
|
90046
|
-
}
|
|
90047
|
-
];
|
|
90048
|
-
|
|
90049
|
-
switch(chart.KLineDrawType)
|
|
90050
|
-
{
|
|
90051
|
-
case 0:
|
|
90052
|
-
data[1].selected=true;
|
|
90053
|
-
break;
|
|
90054
|
-
case 1:
|
|
90055
|
-
data[3].selected=true;
|
|
90056
|
-
break;
|
|
90057
|
-
case 2:
|
|
90058
|
-
data[2].selected=true;
|
|
90059
|
-
break;
|
|
90060
|
-
case 3:
|
|
90061
|
-
data[0].selected=true;
|
|
90062
|
-
break;
|
|
90063
|
-
case 4:
|
|
90064
|
-
data[4].selected=true;
|
|
90065
|
-
break;
|
|
90066
|
-
case 6:
|
|
90067
|
-
data[5].selected=true;
|
|
90068
|
-
break;
|
|
90069
|
-
case 11:
|
|
90070
|
-
data[6].selected=true;
|
|
90071
|
-
break;
|
|
90072
|
-
case 12:
|
|
90073
|
-
data[7].selected=true;
|
|
90074
|
-
break;
|
|
90075
|
-
case 13:
|
|
90076
|
-
data[8].selected=true;
|
|
90077
|
-
break;
|
|
90078
|
-
case 15:
|
|
90079
|
-
data[9].selected=true;
|
|
90080
|
-
break;
|
|
90081
|
-
}
|
|
90082
|
-
return data;
|
|
90083
|
-
}
|
|
90084
|
-
|
|
90085
|
-
//指标窗口个数
|
|
90086
|
-
this.GetIndexWindowCount=function(chart)
|
|
90087
|
-
{
|
|
90088
|
-
var data=
|
|
90089
|
-
[
|
|
90090
|
-
{
|
|
90091
|
-
text: "1个窗口",
|
|
90092
|
-
click: function () { chart.ChangeIndexWindowCount(1); }
|
|
90093
|
-
},
|
|
90094
|
-
{
|
|
90095
|
-
text: "2个窗口",
|
|
90096
|
-
click: function () { chart.ChangeIndexWindowCount(2); }
|
|
90097
|
-
},
|
|
90098
|
-
{
|
|
90099
|
-
text: "3个窗口",
|
|
90100
|
-
click: function () { chart.ChangeIndexWindowCount(3); }
|
|
90101
|
-
},
|
|
90102
|
-
{
|
|
90103
|
-
text: "4个窗口",
|
|
90104
|
-
click: function () { chart.ChangeIndexWindowCount(4); }
|
|
90105
|
-
},
|
|
90106
|
-
{
|
|
90107
|
-
text: "5个窗口",
|
|
90108
|
-
click: function () { chart.ChangeIndexWindowCount(5); }
|
|
90109
|
-
}
|
|
90110
|
-
];
|
|
90111
|
-
|
|
90112
|
-
var count=chart.Frame.SubFrame.length;
|
|
90113
|
-
if ((count-1)>=0 && (count-1)<data.length) data[count-1].selected=true; //选中
|
|
90114
|
-
|
|
90115
|
-
return data;
|
|
90116
|
-
}
|
|
90117
|
-
|
|
90118
|
-
//坐标类型
|
|
90119
|
-
this.GetCoordinateType=function(chart)
|
|
90120
|
-
{
|
|
90121
|
-
var data=
|
|
90122
|
-
[
|
|
90123
|
-
{
|
|
90124
|
-
text: "普通坐标",
|
|
90125
|
-
click: function () { chart.ChangeCoordinateType( {Type:0} ); }
|
|
90126
|
-
},
|
|
90127
|
-
{
|
|
90128
|
-
text: "百分比坐标",
|
|
90129
|
-
click: function () { chart.ChangeCoordinateType( {Type:1} ); }
|
|
90130
|
-
},
|
|
90131
|
-
{
|
|
90132
|
-
text: "反转坐标",
|
|
90133
|
-
click: function () { chart.ChangeCoordinateType( { IsReverse:true } ); }
|
|
90134
|
-
},
|
|
90135
|
-
{
|
|
90136
|
-
text: "对数坐标",
|
|
90137
|
-
click: function () { chart.ChangeCoordinateType( {Type:2} ); }
|
|
90138
|
-
},
|
|
90139
|
-
{
|
|
90140
|
-
text: "等比坐标",
|
|
90141
|
-
click: function () { chart.ChangeCoordinateType( {Type:3} ); }
|
|
90142
|
-
},
|
|
90143
|
-
{
|
|
90144
|
-
text: "等分坐标",
|
|
90145
|
-
click: function () { chart.ChangeCoordinateType( {Type:4} ); }
|
|
90146
|
-
},
|
|
90147
|
-
{
|
|
90148
|
-
text: "黄金分割",
|
|
90149
|
-
click: function () { chart.ChangeCoordinateType( {Type:5} ); }
|
|
90150
|
-
}
|
|
90151
|
-
];
|
|
90152
|
-
|
|
90153
|
-
if (chart.Frame && chart.Frame.SubFrame && chart.Frame.SubFrame.length>0)
|
|
90154
|
-
{
|
|
90155
|
-
if (chart.Frame.SubFrame[0].Frame.CoordinateType==1)
|
|
90156
|
-
{
|
|
90157
|
-
data[2].selected=true;
|
|
90158
|
-
data[2].click=function() { chart.ChangeCoordinateType( { IsReverse:false } ); } //取消反转
|
|
90159
|
-
}
|
|
90160
|
-
|
|
90161
|
-
if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==1) data[1].selected=true; //百分比
|
|
90162
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==0) data[0].selected=true; //普通坐标
|
|
90163
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==2) data[3].selected=true; //对数
|
|
90164
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==3) data[4].selected=true; //等比坐标
|
|
90165
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==4) data[5].selected=true; //等分坐标
|
|
90166
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==5) data[6].selected=true; //黄金分割
|
|
90167
|
-
}
|
|
90168
|
-
|
|
90169
|
-
return data;
|
|
90170
|
-
}
|
|
90171
|
-
|
|
90172
|
-
//拖拽模式
|
|
90173
|
-
this.GetDragModeType=function(chart)
|
|
90174
|
-
{
|
|
90175
|
-
var data=
|
|
90176
|
-
[
|
|
90177
|
-
{
|
|
90178
|
-
text: "禁止拖拽",
|
|
90179
|
-
click: function () { chart.DragMode=0; }
|
|
90180
|
-
},
|
|
90181
|
-
{
|
|
90182
|
-
text: "启动拖拽",
|
|
90183
|
-
click: function () { chart.DragMode=1; }
|
|
90184
|
-
},
|
|
90185
|
-
{
|
|
90186
|
-
text: "区间选择",
|
|
90187
|
-
click: function () { chart.DragMode=2; }
|
|
90188
|
-
}
|
|
90189
|
-
];
|
|
90190
|
-
|
|
90191
|
-
if (chart.DragMode>=0 && chart.DragMode<data.length) data[chart.DragMode].selected=true; //选中
|
|
90192
|
-
|
|
90193
|
-
return data;
|
|
90194
|
-
}
|
|
90195
|
-
|
|
90196
|
-
//工具
|
|
90197
|
-
this.GetTools=function(chart)
|
|
90198
|
-
{
|
|
90199
|
-
var data=[];
|
|
90200
|
-
var drawTools=chart.GetExtendChartByClassName('DrawToolsButton');
|
|
90201
|
-
if (drawTools)
|
|
90202
|
-
{
|
|
90203
|
-
data.push(
|
|
90204
|
-
{
|
|
90205
|
-
text: "关闭画图工具",
|
|
90206
|
-
click: function ()
|
|
90207
|
-
{
|
|
90208
|
-
var toolsWidth=drawTools.Chart.Width;
|
|
90209
|
-
var toolsIndex=parseInt(drawTools.Index);
|
|
90210
|
-
for(var i=toolsIndex+1; i<chart.ExtendChartPaint.length; ++i) //在画图工具后面创建的需要减去工具的宽度
|
|
90211
|
-
{
|
|
90212
|
-
var item=chart.ExtendChartPaint[i];
|
|
90213
|
-
if (item.ClassName=='StockChip')
|
|
90214
|
-
{
|
|
90215
|
-
item.Left-=toolsWidth;
|
|
90216
|
-
}
|
|
90217
|
-
}
|
|
90218
|
-
chart.DeleteExtendChart(drawTools);
|
|
90219
|
-
chart.Frame.ChartBorder.Right-=toolsWidth;
|
|
90220
|
-
chart.SetSizeChange(true);
|
|
90221
|
-
chart.Draw();
|
|
90222
|
-
}
|
|
90223
|
-
}
|
|
90224
|
-
);
|
|
90225
|
-
}
|
|
90226
|
-
else
|
|
90227
|
-
{
|
|
90228
|
-
data.push(
|
|
90229
|
-
{
|
|
90230
|
-
text: "画图工具",
|
|
90231
|
-
click: function () {
|
|
90232
|
-
var option={Name:'画图工具', Top:chart.Frame.ChartBorder.Top };
|
|
90233
|
-
var extendChart=chart.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
90234
|
-
chart.SetSizeChange(true);
|
|
90235
|
-
chart.Draw();
|
|
90236
|
-
}
|
|
90237
|
-
}
|
|
90238
|
-
);
|
|
90239
|
-
}
|
|
90240
|
-
|
|
90241
|
-
var StockChip=chart.GetExtendChartByClassName('StockChip');
|
|
90242
|
-
if (StockChip)
|
|
90243
|
-
{
|
|
90244
|
-
data.push(
|
|
90245
|
-
{
|
|
90246
|
-
text: "关闭移动筹码",
|
|
90247
|
-
click: function ()
|
|
90248
|
-
{
|
|
90249
|
-
var chipWidth=StockChip.Chart.Width;
|
|
90250
|
-
var chipIndex=parseInt(StockChip.Index);
|
|
90251
|
-
for(var i=chipIndex+1; i<chart.ExtendChartPaint.length; ++i) //在筹码后面创建的需要筹码的宽度
|
|
90252
|
-
{
|
|
90253
|
-
var item=chart.ExtendChartPaint[i];
|
|
90254
|
-
if (item.ClassName=='DrawToolsButton')
|
|
90255
|
-
{
|
|
90256
|
-
item.Left-=chipWidth;
|
|
90257
|
-
}
|
|
90258
|
-
}
|
|
90259
|
-
chart.DeleteExtendChart(StockChip);
|
|
90260
|
-
chart.Frame.ChartBorder.Right-=chipWidth;
|
|
90261
|
-
chart.SetSizeChange(true);
|
|
90262
|
-
chart.Draw();
|
|
90263
|
-
}
|
|
90264
|
-
|
|
90265
|
-
}
|
|
90266
|
-
);
|
|
90267
|
-
}
|
|
90268
|
-
else
|
|
90269
|
-
{
|
|
90270
|
-
data.push(
|
|
90271
|
-
{
|
|
90272
|
-
text: "移动筹码",
|
|
90273
|
-
click: function () {
|
|
90274
|
-
var option={Name:'筹码分布', ShowType:1, Width:230 };
|
|
90275
|
-
var extendChart=chart.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
90276
|
-
chart.SetSizeChange(true);
|
|
90277
|
-
chart.Draw();
|
|
90278
|
-
}
|
|
90279
|
-
}
|
|
90280
|
-
);
|
|
90281
|
-
}
|
|
90282
|
-
|
|
90283
|
-
return data;
|
|
90284
|
-
}
|
|
90285
|
-
|
|
90286
|
-
//缺口提示
|
|
90287
|
-
this.GetPriceGap=function(chart)
|
|
90288
|
-
{
|
|
90289
|
-
var klineChart=chart.ChartPaint[0];
|
|
90290
|
-
var priceGap=klineChart.PriceGap;
|
|
90291
|
-
var data=
|
|
90292
|
-
[
|
|
90293
|
-
{
|
|
90294
|
-
text: "显示1个缺口",
|
|
90295
|
-
click: function () { chart.ChangePriceGap({ Enable:true, Count:1 }); }
|
|
90296
|
-
},
|
|
90297
|
-
{
|
|
90298
|
-
text: "显示2个缺口",
|
|
90299
|
-
click: function () { chart.ChangePriceGap({ Enable:true, Count:2 }); }
|
|
90300
|
-
},
|
|
90301
|
-
{
|
|
90302
|
-
text: "显示3个缺口",
|
|
90303
|
-
click: function () { chart.ChangePriceGap({ Enable:true, Count:3 }); }
|
|
90304
|
-
},
|
|
90305
|
-
{
|
|
90306
|
-
text: "隐藏缺口",
|
|
90307
|
-
click: function () { chart.ChangePriceGap({ Enable:false }); }
|
|
90308
|
-
}
|
|
90309
|
-
];
|
|
90310
|
-
|
|
90311
|
-
if (!priceGap.Enable || priceGap.Count<=0)
|
|
90312
|
-
{
|
|
90313
|
-
data[data.length-1].selected=true; //选中
|
|
90314
|
-
}
|
|
90315
|
-
else if (priceGap.Enable && priceGap.Count>0)
|
|
90316
|
-
{
|
|
90317
|
-
var index=priceGap.Count-1;
|
|
90318
|
-
if (index>data.length-2) index=data.length-2;
|
|
90319
|
-
data[index].selected=true; //选中
|
|
90320
|
-
}
|
|
90321
|
-
|
|
90322
|
-
return data;
|
|
90323
|
-
}
|
|
90324
|
-
|
|
90325
|
-
this.GetBGSplit=function(chart)
|
|
90326
|
-
{
|
|
90327
|
-
var data=
|
|
90328
|
-
[
|
|
90329
|
-
{
|
|
90330
|
-
text: "启用",
|
|
90331
|
-
click: function ()
|
|
90332
|
-
{
|
|
90333
|
-
chart.CreateExtendChart("SessionBreaksPaint", { });
|
|
90334
|
-
chart.Draw();
|
|
90335
|
-
}
|
|
90336
|
-
},
|
|
90337
|
-
{
|
|
90338
|
-
text: "关闭",
|
|
90339
|
-
click: function ()
|
|
90340
|
-
{
|
|
90341
|
-
var finder=chart.GetExtendChartByClassName("SessionBreaksPaint");
|
|
90342
|
-
if (finder)
|
|
90343
|
-
{
|
|
90344
|
-
chart.DeleteExtendChartByID(finder.Chart.ID);
|
|
90345
|
-
chart.Draw();
|
|
90346
|
-
}
|
|
90347
|
-
}
|
|
90348
|
-
},
|
|
90349
|
-
];
|
|
90350
|
-
|
|
90351
|
-
var finder=chart.GetExtendChartByClassName("SessionBreaksPaint");
|
|
90352
|
-
if (finder) data[0].selected=true;
|
|
90353
|
-
else data[1].selected=true;
|
|
90354
|
-
|
|
90355
|
-
return data;
|
|
90356
|
-
}
|
|
90357
|
-
|
|
90358
|
-
|
|
90359
|
-
this.GetKLineInfo=function(chart)
|
|
90360
|
-
{
|
|
90361
|
-
var setInfo=new Set();
|
|
90362
|
-
for(var i in chart.ChartInfo)
|
|
90363
|
-
{
|
|
90364
|
-
var item=chart.ChartInfo[i];
|
|
90365
|
-
setInfo.add(item.ClassName);
|
|
90366
|
-
}
|
|
90367
|
-
|
|
90368
|
-
var aryKLineInfo=["公告","业绩预告","调研","大宗交易","龙虎榜","互动易"]
|
|
90369
|
-
|
|
90370
|
-
var data=[];
|
|
90371
|
-
for(var i in aryKLineInfo)
|
|
90372
|
-
{
|
|
90373
|
-
var infoName=aryKLineInfo[i];
|
|
90374
|
-
var classInfo=JSKLineInfoMap.GetClassInfo(infoName);
|
|
90375
|
-
if (!classInfo) continue;
|
|
90376
|
-
|
|
90377
|
-
var item=this.CreateKlineInfoItem(infoName, setInfo.has(classInfo.ClassName), chart);
|
|
90378
|
-
data.push(item);
|
|
90379
|
-
}
|
|
90380
|
-
|
|
90381
|
-
if (chart.ChartInfo.length>0)
|
|
90382
|
-
{
|
|
90383
|
-
data[data.length-1].isBorder=true;
|
|
90384
|
-
var item={ text:'删除所有', click:function() { chart.ClearKLineInfo()} };
|
|
90385
|
-
data.push(item);
|
|
90386
|
-
|
|
90387
|
-
}
|
|
90388
|
-
|
|
90389
|
-
return data;
|
|
90390
|
-
}
|
|
90391
|
-
|
|
90392
|
-
this.CreateKlineInfoItem=function(infoName,bExist,chart)
|
|
90393
|
-
{
|
|
90394
|
-
var item=
|
|
90395
|
-
{
|
|
90396
|
-
text:infoName,
|
|
90397
|
-
selected:bExist
|
|
90398
|
-
}
|
|
90399
|
-
|
|
90400
|
-
if (bExist) item.click=function() { chart.DeleteKLineInfo(infoName) };
|
|
90401
|
-
else item.click=function() { chart.AddKLineInfo(infoName,true) }
|
|
90402
|
-
|
|
90403
|
-
return item;
|
|
90404
|
-
}
|
|
90405
|
-
|
|
90406
|
-
this.DoModal=function(event)
|
|
90407
|
-
{
|
|
90408
|
-
var chart=event.data.Chart;
|
|
90409
|
-
var rightMenu=chart.RightMenu;
|
|
90410
|
-
var x = event.offsetX;
|
|
90411
|
-
var y = event.offsetY;
|
|
90412
|
-
|
|
90413
|
-
var dataList=[{
|
|
90414
|
-
text: "分析周期",
|
|
90415
|
-
children: this.GetPeriod(chart)
|
|
90416
|
-
},
|
|
90417
|
-
{
|
|
90418
|
-
text: "复权处理",
|
|
90419
|
-
children: this.GetRight(chart)
|
|
90420
|
-
},
|
|
90421
|
-
{
|
|
90422
|
-
text: "指标切换",
|
|
90423
|
-
children: this.GetIndex(chart)
|
|
90424
|
-
},
|
|
90425
|
-
{
|
|
90426
|
-
text:"五彩K线",
|
|
90427
|
-
children: this.GetColorIndex(chart)
|
|
90428
|
-
},
|
|
90429
|
-
{
|
|
90430
|
-
text:'专家系统',
|
|
90431
|
-
children: this.GetTradeIndex(chart)
|
|
90432
|
-
},
|
|
90433
|
-
{
|
|
90434
|
-
text:'信息地雷',
|
|
90435
|
-
children: this.GetKLineInfo(chart)
|
|
90436
|
-
},
|
|
90437
|
-
{
|
|
90438
|
-
text:'缺口提示',
|
|
90439
|
-
children: this.GetPriceGap(chart)
|
|
90440
|
-
},
|
|
90441
|
-
{
|
|
90442
|
-
text: "叠加品种",
|
|
90443
|
-
children: this.GetOverlay(chart)
|
|
90444
|
-
},
|
|
90445
|
-
{
|
|
90446
|
-
text:'主图线型',
|
|
90447
|
-
children: this.GetKLineType(chart)
|
|
90448
|
-
},
|
|
90449
|
-
{
|
|
90450
|
-
text:"坐标类型",
|
|
90451
|
-
children:this.GetCoordinateType(chart)
|
|
90452
|
-
},
|
|
90453
|
-
{
|
|
90454
|
-
text:'指标窗口个数',
|
|
90455
|
-
children: this.GetIndexWindowCount(chart)
|
|
90456
|
-
},
|
|
90457
|
-
{
|
|
90458
|
-
text:'鼠标拖拽',
|
|
90459
|
-
children: this.GetDragModeType(chart)
|
|
90460
|
-
},
|
|
90461
|
-
{
|
|
90462
|
-
text:"工具",
|
|
90463
|
-
children:this.GetTools(chart)
|
|
90464
|
-
},
|
|
90465
|
-
{
|
|
90466
|
-
text:"背景分割",
|
|
90467
|
-
children:this.GetBGSplit(chart)
|
|
90468
|
-
}
|
|
90469
|
-
];
|
|
90470
|
-
|
|
90471
|
-
var upperSymbol=chart.Symbol.toUpperCase();
|
|
90472
|
-
if(MARKET_SUFFIX_NAME.IsSHSZIndex(chart.Symbol) || MARKET_SUFFIX_NAME.IsBIT(upperSymbol))
|
|
90473
|
-
{
|
|
90474
|
-
dataList.splice(1,1);
|
|
90475
|
-
}
|
|
90476
|
-
|
|
90477
|
-
var identify=event.data.FrameID;
|
|
90478
|
-
var overlayIndex=this.GetOverlayIndex(chart,identify);
|
|
90479
|
-
if (overlayIndex && overlayIndex.length>0)
|
|
90480
|
-
{
|
|
90481
|
-
var delOverlayIndexMenu={ text:'删除叠加指标', children:this.GetDeleteOverlayIndex(chart,overlayIndex) }
|
|
90482
|
-
dataList.splice(3,0,delOverlayIndexMenu);
|
|
90483
|
-
}
|
|
90484
|
-
|
|
90485
|
-
JSConsole.Chart.Log('[KLineRightMenu::DoModal]',identify);
|
|
90486
|
-
rightMenu.Show({
|
|
90487
|
-
windowIndex :identify,
|
|
90488
|
-
x:x+chart.UIElement.offsetLeft,
|
|
90489
|
-
y:y+chart.UIElement.offsetTop,
|
|
90490
|
-
position:chart.Frame.Position,
|
|
90491
|
-
data:dataList
|
|
90492
|
-
})
|
|
90493
|
-
|
|
90494
|
-
$(document).click(function () {
|
|
90495
|
-
rightMenu.Hide();
|
|
90496
|
-
});
|
|
90497
|
-
}
|
|
90498
|
-
|
|
90499
|
-
this.GetOverlayIndex=function(chart, windowsIndex)
|
|
90500
|
-
{
|
|
90501
|
-
if (windowsIndex>=chart.Frame.SubFrame.length || windowsIndex<0) return [];
|
|
90502
|
-
|
|
90503
|
-
var result=[];
|
|
90504
|
-
var item=chart.Frame.SubFrame[windowsIndex];
|
|
90505
|
-
for(var i in item.OverlayIndex)
|
|
90506
|
-
{
|
|
90507
|
-
var overlayItem=item.OverlayIndex[i];
|
|
90508
|
-
result.push({Name:overlayItem.Script.Name, Identify:overlayItem.Identify});
|
|
90509
|
-
}
|
|
90510
|
-
|
|
90511
|
-
return result;
|
|
90512
|
-
}
|
|
90513
|
-
|
|
90514
|
-
this.GetDeleteOverlayIndex=function(chart,overlayIndex)
|
|
90515
|
-
{
|
|
90516
|
-
var data=[];
|
|
90517
|
-
for(var i in overlayIndex)
|
|
90518
|
-
{
|
|
90519
|
-
let identify=overlayIndex[i].Identify;
|
|
90520
|
-
data.push({text:overlayIndex[i].Name, click:function()
|
|
90521
|
-
{
|
|
90522
|
-
chart.DeleteOverlayWindowsIndex(identify)
|
|
90523
|
-
}});
|
|
90524
|
-
}
|
|
90525
|
-
|
|
90526
|
-
return data;
|
|
90527
|
-
}
|
|
90528
|
-
}
|
|
90529
|
-
|
|
90530
|
-
//K线区间选择右键菜单
|
|
90531
|
-
function KLineSelectRightMenu(divElement)
|
|
90532
|
-
{
|
|
90533
|
-
this.newMethod=KLineRightMenu; //派生
|
|
90534
|
-
this.newMethod(divElement);
|
|
90535
|
-
delete this.newMethod;
|
|
90536
|
-
|
|
90537
|
-
this.DoModal=function(event)
|
|
90538
|
-
{
|
|
90539
|
-
var chart=event.data.Chart;
|
|
90540
|
-
var rightMenu=this;
|
|
90541
|
-
var x = event.data.X;
|
|
90542
|
-
var y = event.data.Y;
|
|
90543
|
-
|
|
90544
|
-
var dataList=
|
|
90545
|
-
[
|
|
90546
|
-
{
|
|
90547
|
-
text: "区间统计",
|
|
90548
|
-
click: function ()
|
|
90549
|
-
{
|
|
90550
|
-
JSConsole.Chart.Log('[KLineSelectRightMenu::click] 区间统计');
|
|
90551
|
-
rightMenu.Hide();
|
|
90552
|
-
var dialog=new KLineSelectRectDialog(divElement);
|
|
90553
|
-
dialog.DoModal(event);
|
|
90554
|
-
}
|
|
90555
|
-
},
|
|
90556
|
-
{
|
|
90557
|
-
text:'区间放大',
|
|
90558
|
-
click:function()
|
|
90559
|
-
{
|
|
90560
|
-
JSConsole.Chart.Log('[KLineSelectRightMenu::click] 区间放大');
|
|
90561
|
-
var chart=event.data.Chart;
|
|
90562
|
-
chart.ShowSelectData(event.data.SelectData);
|
|
90563
|
-
}
|
|
90564
|
-
}
|
|
90565
|
-
];
|
|
90566
|
-
|
|
90567
|
-
rightMenu.Show({
|
|
90568
|
-
x:x,
|
|
90569
|
-
y:y,
|
|
90570
|
-
position:chart.Frame.Position,
|
|
90571
|
-
data:dataList
|
|
90572
|
-
});
|
|
90573
|
-
}
|
|
90574
|
-
|
|
90575
|
-
this.Show=function (obj)
|
|
90576
|
-
{
|
|
90577
|
-
var _self = this;
|
|
90578
|
-
$.extend(_self.option, obj);
|
|
90579
|
-
|
|
90580
|
-
//判断是否重复创建
|
|
90581
|
-
if (!_self.ID) _self.Create();
|
|
90582
|
-
//判断下如果DOM没了需要重新创建
|
|
90583
|
-
var divIdName='topMenu_'+_self.ID;
|
|
90584
|
-
var divDom=document.getElementById(divIdName);
|
|
90585
|
-
if (!divDom) _self.Create();
|
|
90586
|
-
|
|
90587
|
-
var $topMenu = $("#topMenu_"+_self.ID),
|
|
90588
|
-
topWidth = $topMenu.outerWidth(),
|
|
90589
|
-
topHeight = $topMenu.outerHeight();
|
|
90590
|
-
|
|
90591
|
-
$topMenu.contextmenu(function()
|
|
90592
|
-
{
|
|
90593
|
-
return false; //屏蔽系统右键菜单
|
|
90594
|
-
});
|
|
90595
|
-
|
|
90596
|
-
var x = _self.option.x,
|
|
90597
|
-
y = _self.option.y;
|
|
90598
|
-
|
|
90599
|
-
if (topWidth > _self.option.position.X + _self.option.position.W- x) //超过了右边距
|
|
90600
|
-
x = x - topWidth;
|
|
90601
|
-
|
|
90602
|
-
if (topHeight > _self.option.position.Y +_self.option.position.H - y)//超过了下边距
|
|
90603
|
-
y = y - topHeight;
|
|
90604
|
-
|
|
90605
|
-
$topMenu.hide();
|
|
90606
|
-
$topMenu.css({ position:"absolute",left: x + "px", top: y + "px" }).show();
|
|
90607
|
-
|
|
90608
|
-
$("#topMenu_" + _self.ID).find("tr").show(); //把菜单列表显示
|
|
90609
|
-
|
|
90610
|
-
this.isInit = true;
|
|
90611
|
-
}
|
|
90612
|
-
}
|
|
90613
|
-
|
|
90614
|
-
//分钟数据右键菜单
|
|
90615
|
-
function MinuteRightMenu(divElement)
|
|
90616
|
-
{
|
|
90617
|
-
this.newMethod=KLineRightMenu; //派生
|
|
90618
|
-
this.newMethod(divElement);
|
|
90619
|
-
delete this.newMethod;
|
|
90620
|
-
|
|
90621
|
-
this.DoModal=function(event)
|
|
90622
|
-
{
|
|
90623
|
-
var chart=event.data.Chart;
|
|
90624
|
-
var rightMenu=chart.RightMenu;
|
|
90625
|
-
var x = event.offsetX;
|
|
90626
|
-
var y = event.offsetY;
|
|
90627
|
-
|
|
90628
|
-
var dataList=
|
|
90629
|
-
[
|
|
90630
|
-
{
|
|
90631
|
-
text: "叠加品种",
|
|
90632
|
-
children: this.GetOverlay(chart)
|
|
90633
|
-
},
|
|
90634
|
-
{
|
|
90635
|
-
text: "多日分时图",
|
|
90636
|
-
children: this.GetDayCount(chart)
|
|
90637
|
-
},
|
|
90638
|
-
{
|
|
90639
|
-
text:'指标窗口个数',
|
|
90640
|
-
children: this.GetIndexWindowCount(chart)
|
|
90641
|
-
},
|
|
90642
|
-
{
|
|
90643
|
-
text: "副图指标切换",
|
|
90644
|
-
children: this.GetIndex(chart)
|
|
90645
|
-
},
|
|
90646
|
-
{
|
|
90647
|
-
text:"区间选择",
|
|
90648
|
-
children:this.GetSelectRect(chart)
|
|
90649
|
-
},
|
|
90650
|
-
|
|
90651
|
-
];
|
|
90652
|
-
|
|
90653
|
-
var symbol=chart.Symbol;
|
|
90654
|
-
if (MARKET_SUFFIX_NAME.IsSHSZStockA(symbol))
|
|
90655
|
-
{
|
|
90656
|
-
dataList.push({text:'集合竞价',children: this.GetShowBeforeData(chart)});
|
|
90657
|
-
}
|
|
90658
|
-
|
|
90659
|
-
dataList.push({text:"工具", children:this.GetTools(chart)});
|
|
90660
|
-
|
|
90661
|
-
var identify=event.data.FrameID;
|
|
90662
|
-
var overlayIndex=this.GetOverlayIndex(chart,identify);
|
|
90663
|
-
if (overlayIndex && overlayIndex.length>0)
|
|
90664
|
-
{
|
|
90665
|
-
var delOverlayIndexMenu={ text:'删除叠加指标', children:this.GetDeleteOverlayIndex(chart,overlayIndex) }
|
|
90666
|
-
dataList.splice(3,0,delOverlayIndexMenu);
|
|
90667
|
-
}
|
|
90668
|
-
|
|
90669
|
-
var identify=event.data.FrameID;
|
|
90670
|
-
JSConsole.Chart.Log('[MinuteRightMenu::DoModal]',identify);
|
|
90671
|
-
rightMenu.Show({
|
|
90672
|
-
windowIndex :identify,
|
|
90673
|
-
x:x+chart.UIElement.offsetLeft,
|
|
90674
|
-
y:y+chart.UIElement.offsetTop,
|
|
90675
|
-
position:chart.Frame.Position,
|
|
90676
|
-
data:dataList
|
|
90677
|
-
})
|
|
90678
|
-
|
|
90679
|
-
$(document).click(function () {
|
|
90680
|
-
rightMenu.Hide();
|
|
90681
|
-
});
|
|
90682
|
-
}
|
|
90683
|
-
|
|
90684
|
-
this.GetDayCount=function(chart)
|
|
90685
|
-
{
|
|
90686
|
-
var data=
|
|
90687
|
-
[
|
|
90688
|
-
{
|
|
90689
|
-
text: "当日分时图",
|
|
90690
|
-
click: function () { chart.ChangeDayCount(1); },
|
|
90691
|
-
isBorder:true
|
|
90692
|
-
},
|
|
90693
|
-
{
|
|
90694
|
-
text: "最近2日",
|
|
90695
|
-
click: function () { chart.ChangeDayCount(2); }
|
|
90696
|
-
},
|
|
90697
|
-
{
|
|
90698
|
-
text: "最近3日",
|
|
90699
|
-
click: function () { chart.ChangeDayCount(3); }
|
|
90700
|
-
},
|
|
90701
|
-
{
|
|
90702
|
-
text: "最近4日",
|
|
90703
|
-
click: function () { chart.ChangeDayCount(4); }
|
|
90704
|
-
},
|
|
90705
|
-
{
|
|
90706
|
-
text: "最近5日",
|
|
90707
|
-
click: function () { chart.ChangeDayCount(5); }
|
|
90708
|
-
},
|
|
90709
|
-
{
|
|
90710
|
-
text: "最近6日",
|
|
90711
|
-
click: function () { chart.ChangeDayCount(6); }
|
|
90712
|
-
}
|
|
90713
|
-
];
|
|
90714
|
-
|
|
90715
|
-
if ((chart.DayCount-1)>=0 && (chart.DayCount-1)<data.length) data[chart.DayCount-1].selected=true;
|
|
90716
|
-
|
|
90717
|
-
return data;
|
|
90718
|
-
}
|
|
90719
|
-
|
|
90720
|
-
this.GetIndex=function (chart)
|
|
90721
|
-
{
|
|
90722
|
-
var data=
|
|
90723
|
-
[
|
|
90724
|
-
{
|
|
90725
|
-
text: "MACD",
|
|
90726
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'MACD') }
|
|
90727
|
-
},
|
|
90728
|
-
{
|
|
90729
|
-
text: "DMI",
|
|
90730
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'DMI') }
|
|
90731
|
-
},
|
|
90732
|
-
{
|
|
90733
|
-
text: "DMA",
|
|
90734
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'DMA') }
|
|
90735
|
-
},
|
|
90736
|
-
{
|
|
90737
|
-
text: "BRAR",
|
|
90738
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'BRAR') }
|
|
90739
|
-
},
|
|
90740
|
-
{
|
|
90741
|
-
text: "KDJ",
|
|
90742
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'KDJ') }
|
|
90743
|
-
},
|
|
90744
|
-
{
|
|
90745
|
-
text: "RSI",
|
|
90746
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'RSI') }
|
|
90747
|
-
},
|
|
90748
|
-
{
|
|
90749
|
-
text: "WR",
|
|
90750
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'WR') }
|
|
90751
|
-
},
|
|
90752
|
-
{
|
|
90753
|
-
text: "CCI",
|
|
90754
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'CCI') }
|
|
90755
|
-
},
|
|
90756
|
-
{
|
|
90757
|
-
text: "TRIX",
|
|
90758
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'TRIX') }
|
|
90759
|
-
}
|
|
90760
|
-
];
|
|
90761
|
-
|
|
90762
|
-
return data;
|
|
90763
|
-
}
|
|
90764
|
-
|
|
90765
|
-
this.GetShowBeforeData=function(chart) //是否显示集合竞价
|
|
90766
|
-
{
|
|
90767
|
-
if (chart.IsShowBeforeData)
|
|
90768
|
-
{
|
|
90769
|
-
var data=
|
|
90770
|
-
[
|
|
90771
|
-
{
|
|
90772
|
-
text: "隐藏",
|
|
90773
|
-
click: function () { chart.ShowCallAuctionData( { Left:false, MultiDay:{ Left:false }} ); },
|
|
90774
|
-
}
|
|
90775
|
-
];
|
|
90776
|
-
|
|
90777
|
-
return data;
|
|
90778
|
-
}
|
|
90779
|
-
else
|
|
90780
|
-
{
|
|
90781
|
-
var data=
|
|
90782
|
-
[
|
|
90783
|
-
{
|
|
90784
|
-
text: "显示",
|
|
90785
|
-
click: function () { chart.ShowCallAuctionData({Left:true, MultiDay:{ Left:true }}); },
|
|
90786
|
-
}
|
|
90787
|
-
];
|
|
90788
|
-
|
|
90789
|
-
return data;
|
|
90790
|
-
}
|
|
90791
|
-
}
|
|
90792
|
-
|
|
90793
|
-
this.GetSelectRect=function(chart) //区间选择
|
|
90794
|
-
{
|
|
90795
|
-
if (chart.EnableSelectRect)
|
|
90796
|
-
{
|
|
90797
|
-
var data=
|
|
90798
|
-
[
|
|
90799
|
-
{
|
|
90800
|
-
text: "禁用区间选择",
|
|
90801
|
-
click: function () { chart.EnableSelectRect=false; },
|
|
90802
|
-
}
|
|
90803
|
-
];
|
|
90804
|
-
|
|
90805
|
-
return data;
|
|
90806
|
-
}
|
|
90807
|
-
else
|
|
90808
|
-
{
|
|
90809
|
-
var data=
|
|
90810
|
-
[
|
|
90811
|
-
{
|
|
90812
|
-
text: "启动区间选择",
|
|
90813
|
-
click: function () { chart.EnableSelectRect=true },
|
|
90814
|
-
}
|
|
90815
|
-
];
|
|
90816
|
-
|
|
90817
|
-
return data;
|
|
90818
|
-
}
|
|
90819
|
-
}
|
|
90820
|
-
|
|
90821
|
-
//指标窗口个数
|
|
90822
|
-
this.GetIndexWindowCount=function(chart)
|
|
90823
|
-
{
|
|
90824
|
-
var data=
|
|
90825
|
-
[
|
|
90826
|
-
{
|
|
90827
|
-
text: "1个窗口",
|
|
90828
|
-
click: function () { chart.ChangeIndexWindowCount(2); }
|
|
90829
|
-
},
|
|
90830
|
-
{
|
|
90831
|
-
text: "2个窗口",
|
|
90832
|
-
click: function () { chart.ChangeIndexWindowCount(3); }
|
|
90833
|
-
},
|
|
90834
|
-
{
|
|
90835
|
-
text: "3个窗口",
|
|
90836
|
-
click: function () { chart.ChangeIndexWindowCount(4); }
|
|
90837
|
-
},
|
|
90838
|
-
{
|
|
90839
|
-
text: "4个窗口",
|
|
90840
|
-
click: function () { chart.ChangeIndexWindowCount(5); }
|
|
90841
|
-
},
|
|
90842
|
-
{
|
|
90843
|
-
text: "5个窗口",
|
|
90844
|
-
click: function () { chart.ChangeIndexWindowCount(6); }
|
|
90845
|
-
}
|
|
90846
|
-
];
|
|
90847
|
-
|
|
90848
|
-
var count=chart.Frame.SubFrame.length-1;
|
|
90849
|
-
if ((count-1)>=0 && (count-1)<data.length) data[count-1].selected=true; //选中
|
|
90850
|
-
|
|
90851
|
-
return data;
|
|
90852
|
-
}
|
|
90853
|
-
|
|
90854
|
-
//工具
|
|
90855
|
-
this.GetTools=function(chart)
|
|
90856
|
-
{
|
|
90857
|
-
var data=[];
|
|
90858
|
-
var drawTools=chart.GetExtendChartByClassName('DrawToolsButton');
|
|
90859
|
-
if (drawTools)
|
|
90860
|
-
{
|
|
90861
|
-
data.push(
|
|
90862
|
-
{
|
|
90863
|
-
text: "关闭画图工具",
|
|
90864
|
-
click: function ()
|
|
90865
|
-
{
|
|
90866
|
-
var toolsWidth=drawTools.Chart.Width;
|
|
90867
|
-
var toolsIndex=parseInt(drawTools.Index);
|
|
90868
|
-
chart.DeleteExtendChart(drawTools);
|
|
90869
|
-
chart.Frame.ChartBorder.Right-=toolsWidth;
|
|
90870
|
-
chart.SetSizeChange(true);
|
|
90871
|
-
chart.Draw();
|
|
90872
|
-
}
|
|
90873
|
-
}
|
|
90874
|
-
);
|
|
90875
|
-
}
|
|
90876
|
-
else
|
|
90877
|
-
{
|
|
90878
|
-
data.push(
|
|
90879
|
-
{
|
|
90880
|
-
text: "画图工具",
|
|
90881
|
-
click: function () {
|
|
90882
|
-
var option={Name:'画图工具', Top:chart.Frame.ChartBorder.Top };
|
|
90883
|
-
var extendChart=chart.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
90884
|
-
chart.SetSizeChange(true);
|
|
90885
|
-
chart.Draw();
|
|
90886
|
-
}
|
|
90887
|
-
}
|
|
90888
|
-
);
|
|
90889
|
-
}
|
|
90890
|
-
|
|
90891
|
-
return data;
|
|
90892
|
-
}
|
|
90893
|
-
}
|
|
90894
|
-
|
|
90895
90178
|
//画图工具 单个图形设置
|
|
90896
90179
|
function ChartPictureSettingMenu(divElement)
|
|
90897
90180
|
{
|
|
@@ -134949,6 +134232,317 @@ function ScrollBarBGChart()
|
|
|
134949
134232
|
}
|
|
134950
134233
|
|
|
134951
134234
|
|
|
134235
|
+
/*
|
|
134236
|
+
Copyright (c) 2018 jones
|
|
134237
|
+
|
|
134238
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
134239
|
+
|
|
134240
|
+
开源项目 https://github.com/jones2000/HQChart
|
|
134241
|
+
|
|
134242
|
+
jones_2000@163.com
|
|
134243
|
+
|
|
134244
|
+
内置菜单 使用table模式
|
|
134245
|
+
*/
|
|
134246
|
+
|
|
134247
|
+
function JSPopMenu()
|
|
134248
|
+
{
|
|
134249
|
+
this.Data={ Menu:[], Position:0 }; //{ Name:, SVG, ID, bChecked:, SubMenu:[] } Position 0=右键菜单 1=Tab弹菜单 2=下拉菜单
|
|
134250
|
+
|
|
134251
|
+
this.RootDOM=null;
|
|
134252
|
+
this.TBodyDOM=null;
|
|
134253
|
+
this.ArySubRootDOM=[];
|
|
134254
|
+
|
|
134255
|
+
this.ClickCallback=null; //点击回调
|
|
134256
|
+
this.CheckedClassName="UMyChart_MenuItem_Span_Checked iconfont icon-checked"; //选中图标
|
|
134257
|
+
this.RightArrowClassName="UMyChart_MenuItem_Span_Arrow iconfont icon-menu_arraw_right"; //右侧箭头
|
|
134258
|
+
this.SelectedClassName="UMyChart_MenuItem_Tr_Selected";
|
|
134259
|
+
|
|
134260
|
+
this.AryTDClassName=
|
|
134261
|
+
[
|
|
134262
|
+
"UMyChart_MenuItem_Td_Status", //图标
|
|
134263
|
+
"UMyChart_MenuItem_Td_Content", //文字
|
|
134264
|
+
"UMyChart_MenuItem_Td_Shortcut", //快捷方式
|
|
134265
|
+
"UMyChart_MenuItem_Td_Arrow" //箭头
|
|
134266
|
+
];
|
|
134267
|
+
|
|
134268
|
+
this.Inital=function()
|
|
134269
|
+
{
|
|
134270
|
+
window.addEventListener('mousedown', (e)=>{ this.OnWindowMouseDown(e)});
|
|
134271
|
+
}
|
|
134272
|
+
|
|
134273
|
+
//创建菜单
|
|
134274
|
+
this.CreatePopMenu=function(data)
|
|
134275
|
+
{
|
|
134276
|
+
this.Clear();
|
|
134277
|
+
|
|
134278
|
+
var root=document.createElement("div");
|
|
134279
|
+
root.className="UMyChart_PopMenu";
|
|
134280
|
+
|
|
134281
|
+
var table=document.createElement("table");
|
|
134282
|
+
table.className="UMyChart_PopMenu_Table";
|
|
134283
|
+
root.appendChild(table);
|
|
134284
|
+
|
|
134285
|
+
var tbody=document.createElement("tbody");
|
|
134286
|
+
tbody.className="UMyChart_PopMenu_Tbody";
|
|
134287
|
+
table.appendChild(tbody);
|
|
134288
|
+
|
|
134289
|
+
|
|
134290
|
+
var rootData={ Root:root, TBody:tbody, Table:table };
|
|
134291
|
+
for(var i=0;i<data.Menu.length;++i)
|
|
134292
|
+
{
|
|
134293
|
+
var item=data.Menu[i];
|
|
134294
|
+
var trDom=this.CreateMenu(rootData, item);
|
|
134295
|
+
tbody.appendChild(trDom);
|
|
134296
|
+
}
|
|
134297
|
+
|
|
134298
|
+
document.body.appendChild(root);
|
|
134299
|
+
this.RootDOM=root;
|
|
134300
|
+
this.TBodyDOM=tbody;
|
|
134301
|
+
|
|
134302
|
+
if (IFrameSplitOperator.IsNumber(data.Position)) this.Data.Position=data.Position;
|
|
134303
|
+
if (data.ClickCallback) this.ClickCallback=data.ClickCallback;
|
|
134304
|
+
|
|
134305
|
+
}
|
|
134306
|
+
|
|
134307
|
+
//清除菜单
|
|
134308
|
+
this.Clear=function()
|
|
134309
|
+
{
|
|
134310
|
+
this.Data.Menu=[];
|
|
134311
|
+
this.Data.Position=JSPopMenu.POSITION_ID.RIGHT_MENU_ID;
|
|
134312
|
+
this.ClickCallback=null;
|
|
134313
|
+
|
|
134314
|
+
if (!this.RootDOM) return;
|
|
134315
|
+
|
|
134316
|
+
document.body.removeChild(this.RootDOM);
|
|
134317
|
+
this.RootDOM=null;
|
|
134318
|
+
this.TBodyDOM=null;
|
|
134319
|
+
|
|
134320
|
+
for(var i=0;i<this.ArySubRootDOM.length;++i)
|
|
134321
|
+
{
|
|
134322
|
+
document.body.removeChild(this.ArySubRootDOM[i]);
|
|
134323
|
+
}
|
|
134324
|
+
this.ArySubRootDOM=[]
|
|
134325
|
+
}
|
|
134326
|
+
|
|
134327
|
+
this.CreateMenu=function(parentItem, item)
|
|
134328
|
+
{
|
|
134329
|
+
var trDom=document.createElement("tr");
|
|
134330
|
+
trDom.className='UMyChart_MenuItem_Tr';
|
|
134331
|
+
|
|
134332
|
+
var prtTdDom=null;
|
|
134333
|
+
for(var i=0;i<this.AryTDClassName.length;++i)
|
|
134334
|
+
{
|
|
134335
|
+
var tdDom=document.createElement("td");
|
|
134336
|
+
tdDom.className=this.AryTDClassName[i];
|
|
134337
|
+
|
|
134338
|
+
if (i==0) //图标
|
|
134339
|
+
{
|
|
134340
|
+
if (item.Checked)
|
|
134341
|
+
{
|
|
134342
|
+
var spanDom=document.createElement("span");
|
|
134343
|
+
spanDom.className=this.CheckedClassName;
|
|
134344
|
+
spanDom.style["font-size"]="10px";
|
|
134345
|
+
tdDom.appendChild(spanDom);
|
|
134346
|
+
}
|
|
134347
|
+
}
|
|
134348
|
+
else if (i==1) //内容
|
|
134349
|
+
{
|
|
134350
|
+
tdDom.innerText=item.Name;
|
|
134351
|
+
}
|
|
134352
|
+
else if (i==2) //快捷方式
|
|
134353
|
+
{
|
|
134354
|
+
|
|
134355
|
+
}
|
|
134356
|
+
else if (i==3) //箭头
|
|
134357
|
+
{
|
|
134358
|
+
if (IFrameSplitOperator.IsNonEmptyArray(item.SubMenu))
|
|
134359
|
+
{
|
|
134360
|
+
var spanDom=document.createElement("span");
|
|
134361
|
+
spanDom.className=this.RightArrowClassName;
|
|
134362
|
+
spanDom.style["font-size"]="10px";
|
|
134363
|
+
tdDom.appendChild(spanDom);
|
|
134364
|
+
}
|
|
134365
|
+
}
|
|
134366
|
+
|
|
134367
|
+
trDom.appendChild(tdDom);
|
|
134368
|
+
}
|
|
134369
|
+
|
|
134370
|
+
if (IFrameSplitOperator.IsNonEmptyArray(item.SubMenu)) //子菜单
|
|
134371
|
+
{
|
|
134372
|
+
var subRoot=document.createElement("div");
|
|
134373
|
+
subRoot.className="UMyChart_PopSubMenu";
|
|
134374
|
+
|
|
134375
|
+
var subTable=document.createElement("table");
|
|
134376
|
+
subTable.className="UMyChart_PopMenu_Table";
|
|
134377
|
+
subRoot.appendChild(subTable);
|
|
134378
|
+
|
|
134379
|
+
var subTbody=document.createElement("tbody");
|
|
134380
|
+
subTbody.className="UMyChart_PopMenu_TBody";
|
|
134381
|
+
subTable.appendChild(subTbody);
|
|
134382
|
+
|
|
134383
|
+
var subRootData={ Root:subRoot, TBody:subTbody, Table:subTable };
|
|
134384
|
+
var preTrDom=null;
|
|
134385
|
+
for(var i=0;i<item.SubMenu.length;++i)
|
|
134386
|
+
{
|
|
134387
|
+
var subItem=item.SubMenu[i];
|
|
134388
|
+
if (subItem.Name==JSPopMenu.SEPARATOR_LINE_NAME)
|
|
134389
|
+
{
|
|
134390
|
+
var trSeparator=document.createElement("tr");
|
|
134391
|
+
trSeparator.className='UMyChart_MenuItem_Tr_Separator';
|
|
134392
|
+
var tdDom=document.createElement("td");
|
|
134393
|
+
tdDom.className="UMyChart_MenuItem_Td_Status_Separator";
|
|
134394
|
+
trSeparator.appendChild(tdDom);
|
|
134395
|
+
var tdDom=document.createElement("td");
|
|
134396
|
+
tdDom.className="UMyChart_MenuItem_Td_Separator";
|
|
134397
|
+
trSeparator.appendChild(tdDom);
|
|
134398
|
+
var tdDom=document.createElement("td");
|
|
134399
|
+
tdDom.className="UMyChart_MenuItem_Td_Separator";
|
|
134400
|
+
trSeparator.appendChild(tdDom);
|
|
134401
|
+
var tdDom=document.createElement("td");
|
|
134402
|
+
tdDom.className="UMyChart_MenuItem_Td_Separator";
|
|
134403
|
+
trSeparator.appendChild(tdDom);
|
|
134404
|
+
subTbody.appendChild(trSeparator);
|
|
134405
|
+
continue;
|
|
134406
|
+
}
|
|
134407
|
+
|
|
134408
|
+
var subTrDom=this.CreateMenu(subRootData, subItem);
|
|
134409
|
+
preTrDom=subTrDom;
|
|
134410
|
+
subTbody.appendChild(subTrDom);
|
|
134411
|
+
}
|
|
134412
|
+
|
|
134413
|
+
trDom.onmouseover=(e)=>{ this.OnMouseOver(e, parentItem, trDom, subRoot); }
|
|
134414
|
+
document.body.appendChild(subRoot);
|
|
134415
|
+
this.ArySubRootDOM.push(subRoot);
|
|
134416
|
+
}
|
|
134417
|
+
else
|
|
134418
|
+
{
|
|
134419
|
+
trDom.onmousedown=(e)=> { this.OnClickMenu(e, item, false); }; //菜单点击
|
|
134420
|
+
trDom.onmouseover=(e)=>{ this.OnMouseOver(e, parentItem); }
|
|
134421
|
+
}
|
|
134422
|
+
|
|
134423
|
+
return trDom;
|
|
134424
|
+
}
|
|
134425
|
+
|
|
134426
|
+
//弹tab菜单
|
|
134427
|
+
this.PopupMenuByTab=function(rtTab)
|
|
134428
|
+
{
|
|
134429
|
+
if (!this.RootDOM) return;
|
|
134430
|
+
if (!rtTab) return;
|
|
134431
|
+
|
|
134432
|
+
var xLeft=rtTab.Left;
|
|
134433
|
+
var yTop=rtTab.Top-this.RootDOM.offsetHeight;
|
|
134434
|
+
|
|
134435
|
+
this.RootDOM.style.visibility='visible';
|
|
134436
|
+
this.RootDOM.style.top = yTop + "px";
|
|
134437
|
+
this.RootDOM.style.left = xLeft + "px";
|
|
134438
|
+
}
|
|
134439
|
+
|
|
134440
|
+
//弹右键菜单
|
|
134441
|
+
this.PopupMenuByRight=function(x,y)
|
|
134442
|
+
{
|
|
134443
|
+
if (!this.RootDOM) return;
|
|
134444
|
+
if (!IFrameSplitOperator.IsNumber(x) || !IFrameSplitOperator.IsNumber(y)) return;
|
|
134445
|
+
|
|
134446
|
+
//菜单在当前屏幕无法显示需要调整
|
|
134447
|
+
var menuHeight=this.RootDOM.offsetHeight;
|
|
134448
|
+
var yMenuBottom=y+menuHeight;
|
|
134449
|
+
var yBottom=window.innerHeight-15;
|
|
134450
|
+
if (yMenuBottom>yBottom) y=yBottom-menuHeight;
|
|
134451
|
+
|
|
134452
|
+
var menuWidth=this.RootDOM.offsetWidth;
|
|
134453
|
+
var yMenuRight=x+menuWidth;
|
|
134454
|
+
var yRight=window.innerWidth-15;
|
|
134455
|
+
if (yMenuRight>yRight) x=yRight-menuWidth;
|
|
134456
|
+
|
|
134457
|
+
this.RootDOM.style.visibility='visible';
|
|
134458
|
+
this.RootDOM.style.top = y + "px";
|
|
134459
|
+
this.RootDOM.style.left = x + "px";
|
|
134460
|
+
}
|
|
134461
|
+
|
|
134462
|
+
this.OnClickMenu=function(e, item, bSubMenu)
|
|
134463
|
+
{
|
|
134464
|
+
console.log("[JSPopMenu::OnClickMenu] e=, item=, bSubMenu", e, item, bSubMenu);
|
|
134465
|
+
if (!this.ClickCallback) return;
|
|
134466
|
+
|
|
134467
|
+
this.ClickCallback(item);
|
|
134468
|
+
}
|
|
134469
|
+
|
|
134470
|
+
this.OnMouseOver=function(e, parentItem, trDom, subMenu)
|
|
134471
|
+
{
|
|
134472
|
+
if (parentItem && parentItem.PopMenu && parentItem.PopMenu!=subMenu)
|
|
134473
|
+
{
|
|
134474
|
+
parentItem.PopMenu.style.visibility="hidden";
|
|
134475
|
+
if (parentItem.PopRow) parentItem.PopRow.classList.remove(this.SelectedClassName);
|
|
134476
|
+
|
|
134477
|
+
parentItem.PopMenu=null;
|
|
134478
|
+
parentItem.PopRow=null;
|
|
134479
|
+
}
|
|
134480
|
+
|
|
134481
|
+
if (subMenu)
|
|
134482
|
+
{
|
|
134483
|
+
if (subMenu.style.visibility=="visible")
|
|
134484
|
+
{
|
|
134485
|
+
|
|
134486
|
+
}
|
|
134487
|
+
else
|
|
134488
|
+
{
|
|
134489
|
+
var rtParent=trDom.getBoundingClientRect();
|
|
134490
|
+
var x=rtParent.right, y=rtParent.top;
|
|
134491
|
+
|
|
134492
|
+
//菜单在当前屏幕无法显示需要调整
|
|
134493
|
+
var yBottom=window.innerHeight-15;
|
|
134494
|
+
var yRight=window.innerWidth-15;
|
|
134495
|
+
var menuHeight=subMenu.offsetHeight;
|
|
134496
|
+
var menuWidth=subMenu.offsetWidth;
|
|
134497
|
+
var yMenuBottom=y+menuHeight;
|
|
134498
|
+
var yMenuRight=x+menuWidth;
|
|
134499
|
+
|
|
134500
|
+
if (yMenuBottom>yBottom) y=yBottom-menuHeight;
|
|
134501
|
+
if (yMenuRight>yRight) x=rtParent.left-menuWidth;
|
|
134502
|
+
|
|
134503
|
+
subMenu.style.left=`${x}px`;
|
|
134504
|
+
subMenu.style.top=`${y}px`;
|
|
134505
|
+
|
|
134506
|
+
trDom.classList.add(this.SelectedClassName);
|
|
134507
|
+
|
|
134508
|
+
/*
|
|
134509
|
+
if (this.Data.Position==JSPopMenu.POSITION_ID.TAB_MENU_ID)
|
|
134510
|
+
{
|
|
134511
|
+
var yButton=parentItem.Root.getBoundingClientRect().bottom;
|
|
134512
|
+
var ySubButton=subMenu.getBoundingClientRect().bottom;
|
|
134513
|
+
if (yButton<ySubButton)
|
|
134514
|
+
{
|
|
134515
|
+
var yOffset=yButton-ySubButton;
|
|
134516
|
+
subMenu.style.top=`${yOffset}px`;
|
|
134517
|
+
}
|
|
134518
|
+
}
|
|
134519
|
+
*/
|
|
134520
|
+
|
|
134521
|
+
subMenu.style.visibility="visible";
|
|
134522
|
+
}
|
|
134523
|
+
|
|
134524
|
+
parentItem.PopMenu=subMenu;
|
|
134525
|
+
parentItem.PopRow=trDom;
|
|
134526
|
+
}
|
|
134527
|
+
}
|
|
134528
|
+
|
|
134529
|
+
|
|
134530
|
+
|
|
134531
|
+
this.OnWindowMouseDown=function(e)
|
|
134532
|
+
{
|
|
134533
|
+
if (!this.RootDOM) return;
|
|
134534
|
+
|
|
134535
|
+
console.log("[JSPopMenu::OnWindowMouseDown] e=", e);
|
|
134536
|
+
|
|
134537
|
+
this.Clear();
|
|
134538
|
+
}
|
|
134539
|
+
}
|
|
134540
|
+
|
|
134541
|
+
|
|
134542
|
+
JSPopMenu.POSITION_ID={ };
|
|
134543
|
+
JSPopMenu.POSITION_ID.RIGHT_MENU_ID=0;
|
|
134544
|
+
JSPopMenu.POSITION_ID.TAB_MENU_ID=1;
|
|
134545
|
+
JSPopMenu.SEPARATOR_LINE_NAME="MENU_SEPARATOR"; //分割线
|
|
134952
134546
|
///////////////////////////////////////////////////////////////////////////////////
|
|
134953
134547
|
// 工作线程计算指标示例
|
|
134954
134548
|
//
|
|
@@ -135070,7 +134664,7 @@ function HQChartScriptWorker()
|
|
|
135070
134664
|
|
|
135071
134665
|
|
|
135072
134666
|
|
|
135073
|
-
var HQCHART_VERSION="1.1.
|
|
134667
|
+
var HQCHART_VERSION="1.1.13190";
|
|
135074
134668
|
|
|
135075
134669
|
function PrintHQChartVersion()
|
|
135076
134670
|
{
|
|
@@ -135202,10 +134796,13 @@ export default {
|
|
|
135202
134796
|
JSCHART_DRAG_ID:JSCHART_DRAG_ID,
|
|
135203
134797
|
JSCHART_BUTTON_ID:JSCHART_BUTTON_ID,
|
|
135204
134798
|
JSCHART_DATA_FIELD_ID:JSCHART_DATA_FIELD_ID,
|
|
135205
|
-
JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID
|
|
134799
|
+
JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID,
|
|
134800
|
+
JSCHART_MENU_ID:JSCHART_MENU_ID
|
|
135206
134801
|
},
|
|
135207
134802
|
|
|
135208
134803
|
|
|
135209
134804
|
HQChartScriptWorker:HQChartScriptWorker, //计算工作线程
|
|
134805
|
+
|
|
134806
|
+
JSPopMenu:JSPopMenu, //弹出菜单
|
|
135210
134807
|
|
|
135211
134808
|
}
|