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
package/src/jscommon/umychart.js
CHANGED
|
@@ -275,11 +275,12 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
275
275
|
chart.ModifyIndexDialog=this.ModifyIndexDialog;
|
|
276
276
|
chart.ChangeIndexDialog=this.ChangeIndexDialog;
|
|
277
277
|
chart.MinuteDialog=this.MinuteDialog;
|
|
278
|
+
|
|
279
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
278
280
|
|
|
279
281
|
//右键菜单
|
|
280
|
-
if (option.IsShowRightMenu
|
|
282
|
+
if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
|
|
281
283
|
if (option.ScriptError) chart.ScriptErrorCallback=option.ScriptError;
|
|
282
|
-
chart.SelectRectRightMenu=new KLineSelectRightMenu(this.DivElement);
|
|
283
284
|
if (option.EnableScrollUpDown==true) chart.EnableScrollUpDown=option.EnableScrollUpDown;
|
|
284
285
|
if (option.DisableMouse==true) chart.DisableMouse=option.DisableMouse;
|
|
285
286
|
if (option.TouchMoveMinAngle) chart.TouchMoveMinAngle=option.TouchMoveMinAngle;
|
|
@@ -493,8 +494,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
493
494
|
chart.Frame.SubFrame[i].Frame.IsShowYText[1]=item.IsShowRightText;
|
|
494
495
|
chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowRightText=item.IsShowRightText; //显示右边刻度
|
|
495
496
|
}
|
|
496
|
-
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace;
|
|
497
|
-
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace;
|
|
497
|
+
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;
|
|
498
|
+
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;
|
|
498
499
|
|
|
499
500
|
if (item.RightTextPosition>0) chart.Frame.SubFrame[i].Frame.YTextPosition[1]=item.RightTextPosition;
|
|
500
501
|
if (item.LeftTextPosition>0) chart.Frame.SubFrame[i].Frame.YTextPosition[0]=item.LeftTextPosition;
|
|
@@ -693,7 +694,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
693
694
|
chart.MinuteDialog=this.MinuteDialog;
|
|
694
695
|
|
|
695
696
|
//右键菜单
|
|
696
|
-
if (option.IsShowRightMenu
|
|
697
|
+
if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
|
|
697
698
|
|
|
698
699
|
if (option.KLine) //k线图的属性设置
|
|
699
700
|
{
|
|
@@ -796,6 +797,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
796
797
|
chart.ModifyIndexDialog=this.ModifyIndexDialog;
|
|
797
798
|
chart.ChangeIndexDialog=this.ChangeIndexDialog;
|
|
798
799
|
|
|
800
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
801
|
+
|
|
799
802
|
var windowsCount=2;
|
|
800
803
|
if (option.Windows && option.Windows.length>0) windowsCount+=option.Windows.length; //指标窗口从第3个窗口开始
|
|
801
804
|
if (option.EnableScrollUpDown==true) chart.EnableScrollUpDown=option.EnableScrollUpDown;
|
|
@@ -911,7 +914,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
911
914
|
|
|
912
915
|
if (option.MinuteInfo) chart.CreateMinuteInfo(option.MinuteInfo);
|
|
913
916
|
|
|
914
|
-
if (option.IsShowRightMenu
|
|
917
|
+
if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
|
|
915
918
|
|
|
916
919
|
if (IFrameSplitOperator.IsNumber(option.DayCount)) chart.DayCount=option.DayCount;
|
|
917
920
|
|
|
@@ -963,8 +966,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
963
966
|
if (IFrameSplitOperator.IsNumber(item.YTextBaseline)) chart.Frame.SubFrame[i].Frame.YTextBaseline=item.YTextBaseline;
|
|
964
967
|
if (IFrameSplitOperator.IsBool(item.IsShowIndexTitle)) chart.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;
|
|
965
968
|
|
|
966
|
-
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace;
|
|
967
|
-
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace;
|
|
969
|
+
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;
|
|
970
|
+
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;
|
|
968
971
|
|
|
969
972
|
//是否显示关闭集合竞价按钮
|
|
970
973
|
if (IFrameSplitOperator.IsNumber(item.CloseBeforeButton)) chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;
|
|
@@ -1630,6 +1633,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1630
1633
|
if (!chart) return false;
|
|
1631
1634
|
|
|
1632
1635
|
this.JSChartContainer=chart;
|
|
1636
|
+
chart.DivElement=this.DivElement;
|
|
1633
1637
|
|
|
1634
1638
|
if (option.DefaultCursor) chart.DefaultCursor=option.DefaultCursor;
|
|
1635
1639
|
if (option.OnCreatedCallback) option.OnCreatedCallback(chart);
|
|
@@ -1637,6 +1641,10 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1637
1641
|
//是否自动更新
|
|
1638
1642
|
if (option.IsAutoUpdate!=null) chart.IsAutoUpdate=option.IsAutoUpdate;
|
|
1639
1643
|
if (option.AutoUpdateFrequency>0) chart.AutoUpdateFrequency=option.AutoUpdateFrequency;
|
|
1644
|
+
|
|
1645
|
+
//内置菜单
|
|
1646
|
+
if (option.EnablePopMenuV2===true) chart.InitalPopMenu();
|
|
1647
|
+
|
|
1640
1648
|
//注册事件
|
|
1641
1649
|
if (option.EventCallback)
|
|
1642
1650
|
{
|
|
@@ -1663,19 +1671,6 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1663
1671
|
this.DivElement.JSChart=this; //div中保存一份
|
|
1664
1672
|
this.JSChartContainer.Draw();
|
|
1665
1673
|
}
|
|
1666
|
-
|
|
1667
|
-
if (IFrameSplitOperator.IsBool(option.CheckLatestVerion) && option.CheckLatestVerion==false)
|
|
1668
|
-
{
|
|
1669
|
-
|
|
1670
|
-
}
|
|
1671
|
-
else if (JSChart.LastVersion==null)
|
|
1672
|
-
{
|
|
1673
|
-
if (chart && typeof(chart.GetLatestVersion)=='function')
|
|
1674
|
-
{
|
|
1675
|
-
//由于域名都要备案,获取最新版本接口停止使用
|
|
1676
|
-
//chart.GetLatestVersion();
|
|
1677
|
-
}
|
|
1678
|
-
}
|
|
1679
1674
|
}
|
|
1680
1675
|
|
|
1681
1676
|
//创建工具条
|
|
@@ -2119,6 +2114,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
2119
2114
|
return this.JSChartContainer.ChangePriceGap(option);
|
|
2120
2115
|
}
|
|
2121
2116
|
}
|
|
2117
|
+
|
|
2118
|
+
this.PopupMenuByTab=function(menuData, rtTab)
|
|
2119
|
+
{
|
|
2120
|
+
if(this.JSChartContainer && typeof(this.JSChartContainer.PopupMenuByTab)=='function')
|
|
2121
|
+
{
|
|
2122
|
+
JSConsole.Chart.Log('[JSChart:ChangePriceGap] ');
|
|
2123
|
+
return this.JSChartContainer.PopupMenuByTab(menuData, rtTab);
|
|
2124
|
+
}
|
|
2125
|
+
}
|
|
2122
2126
|
}
|
|
2123
2127
|
|
|
2124
2128
|
JSChart.LastVersion=null; //最新的版本号
|
|
@@ -2324,6 +2328,12 @@ JSChart.ToFixedRect=function(value)
|
|
|
2324
2328
|
return ToFixedRect(value);
|
|
2325
2329
|
}
|
|
2326
2330
|
|
|
2331
|
+
JSChart.GetScrollPosition=function()
|
|
2332
|
+
{
|
|
2333
|
+
return GetScrollPosition();
|
|
2334
|
+
}
|
|
2335
|
+
|
|
2336
|
+
|
|
2327
2337
|
|
|
2328
2338
|
|
|
2329
2339
|
var JSCHART_EVENT_ID=
|
|
@@ -2609,6 +2619,40 @@ var JSCHART_WORKER_MESSAGE_ID=
|
|
|
2609
2619
|
ERROR_EXECUTE_SCRIPT:3,
|
|
2610
2620
|
}
|
|
2611
2621
|
|
|
2622
|
+
var JSCHART_MENU_ID=
|
|
2623
|
+
{
|
|
2624
|
+
CMD_CHANGE_PERIOD_ID:1, //切换周期
|
|
2625
|
+
CMD_CHANGE_WINDOW_COUNT_ID:2, //窗口个数
|
|
2626
|
+
CMD_CHANGE_RIGHT_ID:3, //复权
|
|
2627
|
+
CMD_CHANGE_INDEX_ID:4, //切换指标
|
|
2628
|
+
CMD_CHANGE_COLOR_INDEX_ID:5, //五彩K线指标
|
|
2629
|
+
CMD_CHANGE_TRADE_INDEX_ID:6, //专家系统(交易指标)
|
|
2630
|
+
CMD_DELETE_COLOR_INDEX_ID:7, //删除五彩K线指标
|
|
2631
|
+
CMD_DELETE_TRADE_INDEX_ID:8, //删除专家系统(交易指标)
|
|
2632
|
+
CMD_CHANGE_KLINE_TYPE_ID:9, //切换K线类型
|
|
2633
|
+
CMD_CHANGE_PRICE_GAP_ID:10, //缺口提示
|
|
2634
|
+
CMD_OVERLAY_SYMBOL_ID:11, //叠加品种
|
|
2635
|
+
CMD_DELETE_ALL_OVERLAY_SYMBOL_ID:12, //删除所有叠加品种
|
|
2636
|
+
CMD_CHANGE_COORDINATETYPE_ID:13, //切换坐标类型
|
|
2637
|
+
CMD_CHANGE_KLINE_INFO_ID:14, //切换信息地雷
|
|
2638
|
+
CMD_DELETE_ALL_KLINE_INFO_ID:15, //清空信息地雷
|
|
2639
|
+
CMD_CHANGE_DRAG_MODE_ID:16, //切换拖动模式
|
|
2640
|
+
CMD_CHANGE_BG_SPLIT_ID:17, //背景分割
|
|
2641
|
+
|
|
2642
|
+
CMD_SHOW_DRAWTOOL_ID:18, //画图工具
|
|
2643
|
+
CMD_HIDE_DRAWTOOL_ID:19,
|
|
2644
|
+
|
|
2645
|
+
CMD_SHOW_STOCKCHIP_ID:20, //筹码分布
|
|
2646
|
+
CMD_HIDE_STOCKCHIP_ID:21,
|
|
2647
|
+
|
|
2648
|
+
CMD_ENABLE_SELECT_RECT_ID:22, //启动区间选择
|
|
2649
|
+
CMD_CHANGE_DAY_COUNT_ID:23, //切换天数
|
|
2650
|
+
CMD_SHOW_BEFORE_DATA_ID:24, //显示|隐藏集合竞价
|
|
2651
|
+
|
|
2652
|
+
CMD_SELECTED_ZOOM_ID:25, //选中放大
|
|
2653
|
+
CMD_SELECTED_SUMMARY_ID:26, //区间统计
|
|
2654
|
+
}
|
|
2655
|
+
|
|
2612
2656
|
|
|
2613
2657
|
function PhoneDBClick()
|
|
2614
2658
|
{
|
|
@@ -2772,9 +2816,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
2772
2816
|
this.SelectRect.oncontextmenu=function() { return false; }; //屏蔽选中区域系统右键菜单
|
|
2773
2817
|
uielement.parentNode.appendChild(this.SelectRect);
|
|
2774
2818
|
|
|
2775
|
-
//区间选择右键菜单
|
|
2776
|
-
this.SelectRectRightMenu;
|
|
2777
|
-
|
|
2778
2819
|
//坐标轴风格方法 double-更加数值型分割 price-更加股票价格分割
|
|
2779
2820
|
this.FrameSplitData=new Map();
|
|
2780
2821
|
this.FrameSplitData.set("double",new SplitData());
|
|
@@ -2834,12 +2875,23 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
2834
2875
|
|
|
2835
2876
|
this.StockCache={ Data:null }; //扩展数据缓存数据
|
|
2836
2877
|
|
|
2878
|
+
this.JSPopMenu; //内置菜单
|
|
2879
|
+
this.IsShowRightMenu=true; //显示右键菜单
|
|
2880
|
+
|
|
2837
2881
|
|
|
2838
2882
|
this.ClearStockCache=function()
|
|
2839
2883
|
{
|
|
2840
2884
|
this.StockCache.Data=null;
|
|
2841
2885
|
}
|
|
2842
2886
|
|
|
2887
|
+
this.InitalPopMenu=function() //初始化弹出窗口
|
|
2888
|
+
{
|
|
2889
|
+
if (this.JSPopMenu) return;
|
|
2890
|
+
|
|
2891
|
+
this.JSPopMenu=new JSPopMenu(); //内置菜单
|
|
2892
|
+
this.JSPopMenu.Inital();
|
|
2893
|
+
}
|
|
2894
|
+
|
|
2843
2895
|
//obj={ Element:, Canvas: }
|
|
2844
2896
|
this.SetCorssCursorElement=function(obj)
|
|
2845
2897
|
{
|
|
@@ -2889,61 +2941,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
2889
2941
|
{
|
|
2890
2942
|
this.IsDestroy=true;
|
|
2891
2943
|
this.StopAutoUpdate();
|
|
2892
|
-
|
|
2893
|
-
if (this.GetLatestVersionTimer!=null)
|
|
2894
|
-
{
|
|
2895
|
-
clearTimeout(this.GetLatestVersionTimer);
|
|
2896
|
-
this.GetLatestVersionTimer=null;
|
|
2897
|
-
}
|
|
2898
2944
|
}
|
|
2899
2945
|
|
|
2900
2946
|
this.ChartDestory=this.ChartDestroy; //老版本写错了,需要兼容下
|
|
2901
2947
|
|
|
2902
|
-
|
|
2903
|
-
this.GetLatestVersionTimer=null; //获取最新版本
|
|
2904
|
-
this.GetLatestVersion=function()
|
|
2905
|
-
{
|
|
2906
|
-
if (this.GetLatestVersionTimer!=null)
|
|
2907
|
-
{
|
|
2908
|
-
clearTimeout(this.GetLatestVersionTimer);
|
|
2909
|
-
this.GetLatestVersionTimer=null;
|
|
2910
|
-
}
|
|
2911
|
-
|
|
2912
|
-
var roundeTime=Math.floor(Math.random()*50);
|
|
2913
|
-
var waittimer=1000*60*3+(roundeTime*1000);
|
|
2914
|
-
var value="aHR0cHM6Ly9ocWNoYXJ0LnplYWxpbmsuY29tL2FwaS9HZXRWZXJzaW9u";
|
|
2915
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] wait for get hqchart latest version. ",waittimer);
|
|
2916
|
-
this.GetLatestVersionTimer = setTimeout(()=>
|
|
2917
|
-
{
|
|
2918
|
-
var width=0, height=0;
|
|
2919
|
-
if (this.Frame && this.Frame.ChartBorder)
|
|
2920
|
-
{
|
|
2921
|
-
width=this.Frame.ChartBorder.GetChartWidth();
|
|
2922
|
-
height=this.Frame.ChartBorder.GetChartHeight();
|
|
2923
|
-
}
|
|
2924
|
-
|
|
2925
|
-
var url=`${atob(value)}?width=${width}&height=${height}&type=h5`;
|
|
2926
|
-
|
|
2927
|
-
if (JSChart.LastVersion!=null) return; //只请求一次
|
|
2928
|
-
|
|
2929
|
-
JSNetwork.HttpRequest({
|
|
2930
|
-
url: url,
|
|
2931
|
-
type:"get",
|
|
2932
|
-
dataType: "json",
|
|
2933
|
-
async:true,
|
|
2934
|
-
success:function(data)
|
|
2935
|
-
{
|
|
2936
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] hqchart latest version. ",data);
|
|
2937
|
-
JSChart.LastVersion=data;
|
|
2938
|
-
},
|
|
2939
|
-
error:function(request, textStatus, errorThrown)
|
|
2940
|
-
{
|
|
2941
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] Get HQChart latest version failed.", request);
|
|
2942
|
-
}
|
|
2943
|
-
});
|
|
2944
|
-
}, waittimer);
|
|
2945
|
-
}
|
|
2946
|
-
|
|
2947
2948
|
//设置焦点
|
|
2948
2949
|
this.SetFocus=function()
|
|
2949
2950
|
{
|
|
@@ -3059,6 +3060,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3059
3060
|
this.UIOnContextMenu=function(e)
|
|
3060
3061
|
{
|
|
3061
3062
|
if (this.ChartSplashPaint && this.ChartSplashPaint.IsEnableSplash == true) return;
|
|
3063
|
+
if (!this.IsShowRightMenu) return;
|
|
3062
3064
|
|
|
3063
3065
|
var x = e.clientX-this.UIElement.getBoundingClientRect().left;
|
|
3064
3066
|
var y = e.clientY-this.UIElement.getBoundingClientRect().top;
|
|
@@ -3300,7 +3302,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3300
3302
|
}
|
|
3301
3303
|
|
|
3302
3304
|
this.HideSelectRect();
|
|
3303
|
-
if (this.SelectRectRightMenu) this.SelectRectRightMenu.Hide();
|
|
3304
3305
|
if (this.ChartPictureMenu) this.ChartPictureMenu.Hide();
|
|
3305
3306
|
|
|
3306
3307
|
var paint=this.GetRectSelectPaint();
|
|
@@ -3940,17 +3941,19 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3940
3941
|
}
|
|
3941
3942
|
else
|
|
3942
3943
|
{
|
|
3943
|
-
if (isShowMenu
|
|
3944
|
+
if (isShowMenu)
|
|
3944
3945
|
{
|
|
3945
|
-
|
|
3946
|
-
{
|
|
3946
|
+
var data=
|
|
3947
|
+
{
|
|
3947
3948
|
Chart:this,
|
|
3948
3949
|
X:drag.LastMove.X-uielement.getBoundingClientRect().left,
|
|
3949
3950
|
Y:drag.LastMove.Y-uielement.getBoundingClientRect().top,
|
|
3950
3951
|
SelectData:selectData, //区间选择的数据
|
|
3951
3952
|
RectSelectPaint:paint //区间选择背景
|
|
3952
3953
|
};
|
|
3953
|
-
|
|
3954
|
+
|
|
3955
|
+
e.data=data;
|
|
3956
|
+
this.PopupSelectRectMenuV2(data, e);
|
|
3954
3957
|
}
|
|
3955
3958
|
}
|
|
3956
3959
|
}
|
|
@@ -9002,6 +9005,225 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9002
9005
|
}
|
|
9003
9006
|
}
|
|
9004
9007
|
}
|
|
9008
|
+
|
|
9009
|
+
this.PopupMenuByTab=function(menuData, rtTab)
|
|
9010
|
+
{
|
|
9011
|
+
if (!this.JSPopMenu) return;
|
|
9012
|
+
|
|
9013
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
9014
|
+
var rtCell={ Left:rtTab.Left/pixelRatio, Right:rtTab.Right/pixelRatio, Bottom:rtTab.Bottom/pixelRatio, Top:rtTab.Top/pixelRatio };
|
|
9015
|
+
rtCell.Width=rtCell.Right-rtCell.Left;
|
|
9016
|
+
rtCell.Height=rtCell.Bottom-rtCell.Top;
|
|
9017
|
+
|
|
9018
|
+
var rtClient=this.UIElement.getBoundingClientRect();
|
|
9019
|
+
var rtScroll=GetScrollPosition();
|
|
9020
|
+
|
|
9021
|
+
var offsetLeft=rtClient.left+rtScroll.Left;
|
|
9022
|
+
var offsetTop=rtClient.top+rtScroll.Top;
|
|
9023
|
+
rtCell.Left+=offsetLeft;
|
|
9024
|
+
rtCell.Right+=offsetLeft;
|
|
9025
|
+
rtCell.Top+=offsetTop;
|
|
9026
|
+
rtCell.Bottom+=offsetTop;
|
|
9027
|
+
|
|
9028
|
+
this.JSPopMenu.CreatePopMenu(menuData);
|
|
9029
|
+
this.JSPopMenu.PopupMenuByTab(rtCell);
|
|
9030
|
+
}
|
|
9031
|
+
|
|
9032
|
+
this.PopuMenuByRClick=function(menuData, x, y)
|
|
9033
|
+
{
|
|
9034
|
+
var rtClient=this.UIElement.getBoundingClientRect();
|
|
9035
|
+
var rtScroll=GetScrollPosition();
|
|
9036
|
+
|
|
9037
|
+
x+=rtClient.left+rtScroll.Left;
|
|
9038
|
+
y+=rtClient.top+rtScroll.Top;
|
|
9039
|
+
|
|
9040
|
+
this.JSPopMenu.CreatePopMenu(menuData);
|
|
9041
|
+
this.JSPopMenu.PopupMenuByRight(x,y);
|
|
9042
|
+
}
|
|
9043
|
+
|
|
9044
|
+
//点击右键菜单
|
|
9045
|
+
this.OnClickRightMenu=function(data)
|
|
9046
|
+
{
|
|
9047
|
+
JSConsole.Chart.Log('[JSChartContainer::OnClickRightMenu] ',data);
|
|
9048
|
+
if (!data || !data.Data) return;
|
|
9049
|
+
|
|
9050
|
+
var cmdID=data.Data.ID; //命令ID
|
|
9051
|
+
var aryArgs=data.Data.Args; //参数
|
|
9052
|
+
var param=null, srcParam=null; //原始值
|
|
9053
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryArgs))
|
|
9054
|
+
{
|
|
9055
|
+
srcParam=aryArgs[0];
|
|
9056
|
+
if (IFrameSplitOperator.IsNumber(aryArgs[0])) param=aryArgs[0];
|
|
9057
|
+
}
|
|
9058
|
+
|
|
9059
|
+
switch(cmdID)
|
|
9060
|
+
{
|
|
9061
|
+
case JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID:
|
|
9062
|
+
if (this.ChangePeriod && param!=null)
|
|
9063
|
+
this.ChangePeriod(param);
|
|
9064
|
+
break;
|
|
9065
|
+
case JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID:
|
|
9066
|
+
if (this.ChangeIndexWindowCount && param!=null)
|
|
9067
|
+
this.ChangeIndexWindowCount(param);
|
|
9068
|
+
break;
|
|
9069
|
+
case JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID:
|
|
9070
|
+
if (this.ChangeRight && param!=null)
|
|
9071
|
+
this.ChangeRight(param);
|
|
9072
|
+
break;
|
|
9073
|
+
case JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID:
|
|
9074
|
+
if (this.ChangeIndex && param!=null && aryArgs[1])
|
|
9075
|
+
this.ChangeIndex(param,aryArgs[1]);
|
|
9076
|
+
break;
|
|
9077
|
+
|
|
9078
|
+
case JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID:
|
|
9079
|
+
case JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID:
|
|
9080
|
+
if (this.ChangeInstructionIndex && aryArgs[0])
|
|
9081
|
+
this.ChangeInstructionIndex(aryArgs[0]);
|
|
9082
|
+
break;
|
|
9083
|
+
case JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID: //删除五彩K线指标
|
|
9084
|
+
case JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID: //删除专家系统(交易指标)
|
|
9085
|
+
if (this.CancelInstructionIndex) this.CancelInstructionIndex();
|
|
9086
|
+
break;
|
|
9087
|
+
case JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID: //切换K线类型
|
|
9088
|
+
if (this.ChangeKLineDrawType && param!=null)
|
|
9089
|
+
this.ChangeKLineDrawType(param,aryArgs[1],aryArgs[2]);
|
|
9090
|
+
break;
|
|
9091
|
+
case JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID: //缺口提示
|
|
9092
|
+
if (this.ChangePriceGap && IFrameSplitOperator.IsBool(aryArgs[0]))
|
|
9093
|
+
{
|
|
9094
|
+
if (aryArgs[0]==false)
|
|
9095
|
+
{
|
|
9096
|
+
this.ChangePriceGap({ Enable:aryArgs[0] });
|
|
9097
|
+
}
|
|
9098
|
+
else
|
|
9099
|
+
{
|
|
9100
|
+
if (IFrameSplitOperator.IsNumber(aryArgs[1]))
|
|
9101
|
+
this.ChangePriceGap({ Enable:aryArgs[0], Count:aryArgs[1] });
|
|
9102
|
+
}
|
|
9103
|
+
}
|
|
9104
|
+
break;
|
|
9105
|
+
case JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID:
|
|
9106
|
+
if (aryArgs[1]===true)
|
|
9107
|
+
{
|
|
9108
|
+
if (this.OverlaySymbol && aryArgs[0]) this.OverlaySymbol(aryArgs[0]);
|
|
9109
|
+
}
|
|
9110
|
+
else if (aryArgs[1]===false)
|
|
9111
|
+
{
|
|
9112
|
+
if (this.DeleteOverlaySymbol && aryArgs[0]) this.DeleteOverlaySymbol(aryArgs[0]);
|
|
9113
|
+
}
|
|
9114
|
+
break;
|
|
9115
|
+
case JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID:
|
|
9116
|
+
if (this.ClearOverlaySymbol) this.ClearOverlaySymbol();
|
|
9117
|
+
break;
|
|
9118
|
+
case JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID:
|
|
9119
|
+
if (this.ChangeCoordinateType && aryArgs[0]) this.ChangeCoordinateType(aryArgs[0]);
|
|
9120
|
+
break;
|
|
9121
|
+
case JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID:
|
|
9122
|
+
if (aryArgs[0] && IFrameSplitOperator.IsBool(aryArgs[1]))
|
|
9123
|
+
{
|
|
9124
|
+
if (aryArgs[1]==true && this.AddKLineInfo) this.AddKLineInfo(aryArgs[0],true);
|
|
9125
|
+
else if (aryArgs[1]==false && this.DeleteKLineInfo) this.DeleteKLineInfo(aryArgs[0]);
|
|
9126
|
+
}
|
|
9127
|
+
break;
|
|
9128
|
+
case JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID:
|
|
9129
|
+
if (this.ClearKLineInfo) this.ClearKLineInfo();
|
|
9130
|
+
break;
|
|
9131
|
+
case JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID:
|
|
9132
|
+
if (param!=null) this.DragMode=param;
|
|
9133
|
+
break;
|
|
9134
|
+
case JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID:
|
|
9135
|
+
if (IFrameSplitOperator.IsBool(srcParam))
|
|
9136
|
+
{
|
|
9137
|
+
if (srcParam)
|
|
9138
|
+
{
|
|
9139
|
+
this.CreateExtendChart("SessionBreaksPaint", { });
|
|
9140
|
+
this.Draw();
|
|
9141
|
+
}
|
|
9142
|
+
else
|
|
9143
|
+
{
|
|
9144
|
+
var finder=this.GetExtendChartByClassName("SessionBreaksPaint");
|
|
9145
|
+
if (finder)
|
|
9146
|
+
{
|
|
9147
|
+
this.DeleteExtendChartByID(finder.Chart.ID);
|
|
9148
|
+
this.Draw();
|
|
9149
|
+
}
|
|
9150
|
+
}
|
|
9151
|
+
}
|
|
9152
|
+
break;
|
|
9153
|
+
case JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID:
|
|
9154
|
+
var option={Name:'画图工具', Top:this.Frame.ChartBorder.Top };
|
|
9155
|
+
var extendChart=this.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
9156
|
+
this.SetSizeChange(true);
|
|
9157
|
+
this.Draw();
|
|
9158
|
+
break;
|
|
9159
|
+
case JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:
|
|
9160
|
+
var drawTools=this.GetExtendChartByClassName('DrawToolsButton');
|
|
9161
|
+
if (drawTools)
|
|
9162
|
+
{
|
|
9163
|
+
var toolsWidth=drawTools.Chart.Width;
|
|
9164
|
+
var toolsIndex=parseInt(drawTools.Index);
|
|
9165
|
+
for(var i=toolsIndex+1; i<this.ExtendChartPaint.length; ++i) //在画图工具后面创建的需要减去工具的宽度
|
|
9166
|
+
{
|
|
9167
|
+
var item=this.ExtendChartPaint[i];
|
|
9168
|
+
if (item.ClassName=='StockChip')
|
|
9169
|
+
{
|
|
9170
|
+
item.Left-=toolsWidth;
|
|
9171
|
+
}
|
|
9172
|
+
}
|
|
9173
|
+
this.DeleteExtendChart(drawTools);
|
|
9174
|
+
this.Frame.ChartBorder.Right-=toolsWidth;
|
|
9175
|
+
this.SetSizeChange(true);
|
|
9176
|
+
this.Draw();
|
|
9177
|
+
}
|
|
9178
|
+
break;
|
|
9179
|
+
case JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID:
|
|
9180
|
+
var option={Name:'筹码分布', ShowType:1, Width:230 };
|
|
9181
|
+
var extendChart=this.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
9182
|
+
this.SetSizeChange(true);
|
|
9183
|
+
this.Draw();
|
|
9184
|
+
break;
|
|
9185
|
+
case JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:
|
|
9186
|
+
var StockChip=chart.GetExtendChartByClassName('StockChip');
|
|
9187
|
+
if (StockChip)
|
|
9188
|
+
{
|
|
9189
|
+
var chipWidth=StockChip.Chart.Width;
|
|
9190
|
+
var chipIndex=parseInt(StockChip.Index);
|
|
9191
|
+
for(var i=chipIndex+1; i<this.ExtendChartPaint.length; ++i) //在筹码后面创建的需要筹码的宽度
|
|
9192
|
+
{
|
|
9193
|
+
var item=this.ExtendChartPaint[i];
|
|
9194
|
+
if (item.ClassName=='DrawToolsButton')
|
|
9195
|
+
{
|
|
9196
|
+
item.Left-=chipWidth;
|
|
9197
|
+
}
|
|
9198
|
+
}
|
|
9199
|
+
this.DeleteExtendChart(StockChip);
|
|
9200
|
+
this.Frame.ChartBorder.Right-=chipWidth;
|
|
9201
|
+
this.SetSizeChange(true);
|
|
9202
|
+
this.Draw();
|
|
9203
|
+
}
|
|
9204
|
+
break;
|
|
9205
|
+
case JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID:
|
|
9206
|
+
if (IFrameSplitOperator.IsBool(srcParam))
|
|
9207
|
+
this.EnableSelectRect=srcParam;
|
|
9208
|
+
break;
|
|
9209
|
+
case JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID:
|
|
9210
|
+
if (this.ChangeDayCount && param!=null)
|
|
9211
|
+
this.ChangeDayCount(param);
|
|
9212
|
+
break;
|
|
9213
|
+
case JSCHART_MENU_ID.CMD_SHOW_BEFORE_DATA_ID:
|
|
9214
|
+
if (this.ShowCallAuctionData && IFrameSplitOperator.IsBool(srcParam))
|
|
9215
|
+
this.ShowCallAuctionData({ Left:srcParam, MultiDay:{ Left:srcParam }});
|
|
9216
|
+
break;
|
|
9217
|
+
|
|
9218
|
+
case JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID:
|
|
9219
|
+
if (this.ShowSelectData && srcParam) this.ShowSelectData(srcParam);
|
|
9220
|
+
break;
|
|
9221
|
+
case JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID:
|
|
9222
|
+
var dlg=new KLineSelectRectDialog(this.DivElement);
|
|
9223
|
+
dlg.DoModal(srcParam);
|
|
9224
|
+
break;
|
|
9225
|
+
}
|
|
9226
|
+
}
|
|
9005
9227
|
}
|
|
9006
9228
|
|
|
9007
9229
|
function GetDevicePixelRatio()
|
|
@@ -9099,11 +9321,12 @@ function GetScrollPosition()
|
|
|
9099
9321
|
var scrollPos={};
|
|
9100
9322
|
var scrollTop=0;
|
|
9101
9323
|
var scrollLeft=0;
|
|
9102
|
-
if(document.documentElement && document.documentElement.scrollTop)
|
|
9324
|
+
if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft))
|
|
9103
9325
|
{
|
|
9104
9326
|
scrollTop=document.documentElement.scrollTop;
|
|
9105
9327
|
scrollLeft=document.documentElement.scrollLeft;
|
|
9106
|
-
}
|
|
9328
|
+
}
|
|
9329
|
+
else if(document.body)
|
|
9107
9330
|
{
|
|
9108
9331
|
scrollTop=document.body.scrollTop;
|
|
9109
9332
|
scrollLeft=document.body.scrollLeft;
|
|
@@ -44067,7 +44290,8 @@ function FrameButtomToolbarPaint()
|
|
|
44067
44290
|
this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);
|
|
44068
44291
|
}
|
|
44069
44292
|
|
|
44070
|
-
var font=this.
|
|
44293
|
+
var font=this.GetTitleFont(rtBG.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom);
|
|
44294
|
+
var svgFont=this.GetSVGFont(rtBG.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom);
|
|
44071
44295
|
this.Canvas.textBaseline='middle';
|
|
44072
44296
|
this.Canvas.textAlign='center';
|
|
44073
44297
|
this.Canvas.font=font;
|
|
@@ -44075,9 +44299,23 @@ function FrameButtomToolbarPaint()
|
|
|
44075
44299
|
for(var i=0;i<this.AryButton.length;++i)
|
|
44076
44300
|
{
|
|
44077
44301
|
var item=this.AryButton[i];
|
|
44078
|
-
if (!item.Title) return;
|
|
44079
|
-
|
|
44080
|
-
var
|
|
44302
|
+
if (!item.Title && !(item.SVGButton && item.SVGButton.Symbol)) return;
|
|
44303
|
+
|
|
44304
|
+
var textWidth=0;
|
|
44305
|
+
if (item.Title)
|
|
44306
|
+
{
|
|
44307
|
+
textWidth=this.Canvas.measureText(item.Title).width+2;
|
|
44308
|
+
}
|
|
44309
|
+
|
|
44310
|
+
var svgButtonWidth=0;
|
|
44311
|
+
if (item.SVGButton && item.SVGButton.Symbol)
|
|
44312
|
+
{
|
|
44313
|
+
svgButtonWidth=this.ButtonConfig.SVG.Size;
|
|
44314
|
+
if (textWidth>0) svgButtonWidth+=this.ButtonConfig.SVG.MerginLeft;
|
|
44315
|
+
|
|
44316
|
+
}
|
|
44317
|
+
|
|
44318
|
+
var buttonWidth=textWidth+svgButtonWidth+this.ButtonConfig.Mergin.Left+this.ButtonConfig.Mergin.Right;
|
|
44081
44319
|
var rtButton={ Left:xBotton, Top:rtBG.Top, Bottom:rtBG.Bottom, Height:rtBG.Height, Width:buttonWidth };
|
|
44082
44320
|
rtButton.Right=rtButton.Left+rtButton.Width;
|
|
44083
44321
|
|
|
@@ -44114,12 +44352,50 @@ function FrameButtomToolbarPaint()
|
|
|
44114
44352
|
this.Canvas.stroke();
|
|
44115
44353
|
}
|
|
44116
44354
|
|
|
44117
|
-
|
|
44118
|
-
|
|
44119
|
-
|
|
44120
|
-
|
|
44355
|
+
if (item.Title)
|
|
44356
|
+
{
|
|
44357
|
+
this.Canvas.fillStyle=titleColor;
|
|
44358
|
+
var xText=rtButton.Left+(rtButton.Width-svgButtonWidth)/2; //居中
|
|
44359
|
+
var yText=rtButton.Top+this.ButtonConfig.Mergin.Top+(rtButton.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom)/2;
|
|
44360
|
+
this.Canvas.fillText(item.Title,xText,yText);
|
|
44361
|
+
}
|
|
44362
|
+
|
|
44363
|
+
|
|
44364
|
+
var rtSVG=null;
|
|
44365
|
+
if (item.SVGButton && item.SVGButton.Symbol)
|
|
44366
|
+
{
|
|
44367
|
+
this.Canvas.font=svgFont;
|
|
44368
|
+
this.Canvas.fillStyle=titleColor;
|
|
44369
|
+
var xText=rtButton.Right-this.ButtonConfig.SVG.Size/2-this.ButtonConfig.Mergin.Right;
|
|
44370
|
+
this.Canvas.fillText(item.SVGButton.Symbol,xText,yText);
|
|
44371
|
+
this.Canvas.font=font;
|
|
44372
|
+
|
|
44373
|
+
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};
|
|
44374
|
+
rtSVG.Right=rtSVG.Left+rtSVG.Width;
|
|
44375
|
+
rtSVG.Bottom=rtSVG.Top+rtSVG.Height;
|
|
44376
|
+
}
|
|
44377
|
+
|
|
44378
|
+
//{ Rect:rtButton, ID:item.ID, Data:item, RectSVG:rtSVG }
|
|
44379
|
+
if (textWidth>0 && svgButtonWidth>0)
|
|
44380
|
+
{
|
|
44381
|
+
var rtText={ Left:rtButton.Left, Top:rtButton.Top, Bottom:rtButton.Bottom };
|
|
44382
|
+
rtText.Right=rtText.Left+textWidth+this.ButtonConfig.Mergin.Left+this.ButtonConfig.SVG.MerginLeft/2;
|
|
44383
|
+
var cacheItem={ Rect:rtText, ID:item.ID, Data:item, RectCell:rtButton, ButtonType:0 };
|
|
44384
|
+
this.AryRectButton.push(cacheItem);
|
|
44385
|
+
|
|
44386
|
+
var rtSVG={Left:rtText.Right, Right:rtButton.Right, Top:rtButton.Top, Bottom:rtButton.Bottom };
|
|
44387
|
+
var cacheItem={ Rect:rtSVG, ID:item.ID, Data:item, RectCell:rtButton, ButtonType:1 };
|
|
44388
|
+
this.AryRectButton.push(cacheItem);
|
|
44389
|
+
}
|
|
44390
|
+
else
|
|
44391
|
+
{
|
|
44392
|
+
var cacheItem={ Rect:rtButton, ID:item.ID, Data:item, RectCell:rtButton }; //RectCell 全部的大小
|
|
44393
|
+
if (textWidth>0) cacheItem.ButtonType=0;
|
|
44394
|
+
else if (svgButtonWidth>0) cacheItem.ButtonType=1;
|
|
44395
|
+
this.AryRectButton.push(cacheItem);
|
|
44396
|
+
}
|
|
44397
|
+
|
|
44121
44398
|
|
|
44122
|
-
this.AryRectButton.push({ Rect:rtButton, ID:item.ID, Data:item });
|
|
44123
44399
|
|
|
44124
44400
|
xBotton+=buttonWidth+1;
|
|
44125
44401
|
}
|
|
@@ -44148,13 +44424,22 @@ function FrameButtomToolbarPaint()
|
|
|
44148
44424
|
return null;
|
|
44149
44425
|
}
|
|
44150
44426
|
|
|
44151
|
-
this.
|
|
44427
|
+
this.GetTitleFont=function(height)
|
|
44152
44428
|
{
|
|
44153
44429
|
var config=this.ButtonConfig.Font;
|
|
44154
|
-
var fontSize=height;
|
|
44430
|
+
var fontSize=height*GetDevicePixelRatio();
|
|
44155
44431
|
if (IFrameSplitOperator.IsPlusNumber(config.Size)) fontSize=config.Size;
|
|
44156
44432
|
|
|
44157
|
-
var font=`${fontSize
|
|
44433
|
+
var font=`${fontSize}px ${config.Family}`;
|
|
44434
|
+
return font;
|
|
44435
|
+
}
|
|
44436
|
+
|
|
44437
|
+
this.GetSVGFont=function(height)
|
|
44438
|
+
{
|
|
44439
|
+
var config=this.ButtonConfig.SVG;
|
|
44440
|
+
var fontSize=height*GetDevicePixelRatio();
|
|
44441
|
+
if (IFrameSplitOperator.IsPlusNumber(config.Size)) fontSize=config.Size;
|
|
44442
|
+
var font=`${fontSize}px ${config.Family}`;
|
|
44158
44443
|
return font;
|
|
44159
44444
|
}
|
|
44160
44445
|
|
|
@@ -44167,7 +44452,7 @@ function FrameButtomToolbarPaint()
|
|
|
44167
44452
|
if (x>rect.Left && x<rect.Right && y>rect.Top && y<rect.Bottom)
|
|
44168
44453
|
{
|
|
44169
44454
|
var frame=this.GetFrame();
|
|
44170
|
-
var result={ ID:item.Data.ID, Rect:rect, FrameID:this.FrameID, Frame:frame, Data:item.Data };
|
|
44455
|
+
var result={ ID:item.Data.ID, Rect:rect, FrameID:this.FrameID, Frame:frame, Data:item.Data, ButtonType:item.ButtonType, RectCell:item.RectCell, };
|
|
44171
44456
|
return result;
|
|
44172
44457
|
}
|
|
44173
44458
|
}
|
|
@@ -53508,7 +53793,7 @@ function IChartDrawPicture()
|
|
|
53508
53793
|
if (option.LineWidth>0) this.LineWidth=option.LineWidth;
|
|
53509
53794
|
if (option.AreaColor) this.AreaColor=option.AreaColor;
|
|
53510
53795
|
if (option.PointColor) this.PointColor=option.PointColor;
|
|
53511
|
-
if (option.MoveOnPointColor) this.
|
|
53796
|
+
if (option.MoveOnPointColor) this.MoveOnPointColor=option.MoveOnPointColor;
|
|
53512
53797
|
if (option.PointRadius) this.PointRadius=option.PointRadius;
|
|
53513
53798
|
if (IFrameSplitOperator.IsNumber(option.SquareSize)) this.SquareSize=option.SquareSize;
|
|
53514
53799
|
if (IFrameSplitOperator.IsBool(option.IsShowPoint)) this.IsShowPoint=option.IsShowPoint;
|
|
@@ -53707,8 +53992,8 @@ function IChartDrawPicture()
|
|
|
53707
53992
|
for(var i=0; i<this.Point.length; ++i)
|
|
53708
53993
|
{
|
|
53709
53994
|
var item=this.Point[i];
|
|
53710
|
-
var xValue=parseInt(this.Frame.GetXData(item.Y));
|
|
53711
|
-
var yValue=this.Frame.GetYData(item.X);
|
|
53995
|
+
var xValue=parseInt(this.Frame.GetXData(item.Y,false));
|
|
53996
|
+
var yValue=this.Frame.GetYData(item.X,false);
|
|
53712
53997
|
|
|
53713
53998
|
var valueItem={ XValue:xValue, YValue:yValue };
|
|
53714
53999
|
var minuteItem=data.Data[xValue];
|
|
@@ -53722,8 +54007,8 @@ function IChartDrawPicture()
|
|
|
53722
54007
|
for(var i=0; i<this.Point.length; ++i)
|
|
53723
54008
|
{
|
|
53724
54009
|
var item=this.Point[i];
|
|
53725
|
-
var xValue=parseInt(this.Frame.GetXData(item.X));
|
|
53726
|
-
var yValue=this.Frame.GetYData(item.Y);
|
|
54010
|
+
var xValue=parseInt(this.Frame.GetXData(item.X,false));
|
|
54011
|
+
var yValue=this.Frame.GetYData(item.Y,false);
|
|
53727
54012
|
|
|
53728
54013
|
if (xValue>=data.Data.length) //超过当前数据,直接读固定时间
|
|
53729
54014
|
{
|
|
@@ -53798,7 +54083,7 @@ function IChartDrawPicture()
|
|
|
53798
54083
|
}
|
|
53799
54084
|
|
|
53800
54085
|
data.FindDataIndexByDateTime(aryDateTime);
|
|
53801
|
-
for(var i
|
|
54086
|
+
for(var i=0; i<aryDateTime.length; ++i)
|
|
53802
54087
|
{
|
|
53803
54088
|
var findItem=aryDateTime[i];
|
|
53804
54089
|
var valueItem=this.Value[i];
|
|
@@ -53806,6 +54091,17 @@ function IChartDrawPicture()
|
|
|
53806
54091
|
}
|
|
53807
54092
|
}
|
|
53808
54093
|
|
|
54094
|
+
//重置X索引数据
|
|
54095
|
+
this.ResetXValue=function()
|
|
54096
|
+
{
|
|
54097
|
+
for(var i=0; i<this.Value.length; ++i)
|
|
54098
|
+
{
|
|
54099
|
+
var item=this.Value[i];
|
|
54100
|
+
item.XValue=null;
|
|
54101
|
+
}
|
|
54102
|
+
return true;
|
|
54103
|
+
}
|
|
54104
|
+
|
|
53809
54105
|
//xStep,yStep 移动的偏移量
|
|
53810
54106
|
this.Move=function(xStep,yStep)
|
|
53811
54107
|
{
|
|
@@ -53931,6 +54227,8 @@ function IChartDrawPicture()
|
|
|
53931
54227
|
for(var i=0; i<this.Value.length; ++i)
|
|
53932
54228
|
{
|
|
53933
54229
|
var item=this.Value[i];
|
|
54230
|
+
if (!IFrameSplitOperator.IsNumber(item.XValue)) return null; //无效索引 不显示
|
|
54231
|
+
|
|
53934
54232
|
var dataIndex=item.XValue-data.DataOffset;
|
|
53935
54233
|
if (dataIndex<0 || dataIndex>=showCount) ++invaildX;
|
|
53936
54234
|
|
|
@@ -55001,7 +55299,7 @@ function ChartDrawPictureLine()
|
|
|
55001
55299
|
if (this.IsFrameMinSize()) return;
|
|
55002
55300
|
if (!this.IsShow) return;
|
|
55003
55301
|
|
|
55004
|
-
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:
|
|
55302
|
+
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:false} );
|
|
55005
55303
|
if (!drawPoint) return;
|
|
55006
55304
|
if (drawPoint.length!=2) return;
|
|
55007
55305
|
|
|
@@ -55621,8 +55919,9 @@ function ChartDrawHLine()
|
|
|
55621
55919
|
|
|
55622
55920
|
this.Button=
|
|
55623
55921
|
{
|
|
55624
|
-
CloseIcon: { Text:'\ue62b', Color:'rgb(255,255,255)', Family:"iconfont", Size:16 },
|
|
55625
|
-
SettingIcon: { Text:'\ue623',Color:'rgb(255,255,255)', Family:"iconfont", Size:16 }
|
|
55922
|
+
CloseIcon: { Text:'\ue62b', Color:'rgb(255,255,255)', Family:"iconfont", Size:16, ID:JSCHART_BUTTON_ID.DRAW_PICTURE_DELETE, TooltipText:null },
|
|
55923
|
+
SettingIcon: { Text:'\ue623',Color:'rgb(255,255,255)', Family:"iconfont", Size:16, ID:JSCHART_BUTTON_ID.DRAW_PICTURE_SETTING, TooltipText:null }
|
|
55924
|
+
//修改ID, Text , TooltipText 可以外部定制按钮
|
|
55626
55925
|
}
|
|
55627
55926
|
|
|
55628
55927
|
this.AryButton=[];
|
|
@@ -55816,6 +56115,7 @@ function ChartDrawHLine()
|
|
|
55816
56115
|
this.CalculateButtonSize();
|
|
55817
56116
|
this.DrawValueText(drawPoint[0].Y, rtDraw, labInfo);
|
|
55818
56117
|
if (labInfo) this.DrawRightLab(labInfo, rtDraw);
|
|
56118
|
+
if (labInfo) this.DrawCustomHLine(labInfo, drawPoint[0].Y);
|
|
55819
56119
|
}
|
|
55820
56120
|
|
|
55821
56121
|
|
|
@@ -55955,6 +56255,53 @@ function ChartDrawHLine()
|
|
|
55955
56255
|
}
|
|
55956
56256
|
}
|
|
55957
56257
|
|
|
56258
|
+
this.DrawCustomHLine=function(labInfo, yLine)
|
|
56259
|
+
{
|
|
56260
|
+
if (!labInfo) return;
|
|
56261
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(labInfo.AryLine)) return;
|
|
56262
|
+
|
|
56263
|
+
var left=this.Frame.ChartBorder.GetLeft();
|
|
56264
|
+
var right=this.Frame.ChartBorder.GetRight();
|
|
56265
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
56266
|
+
|
|
56267
|
+
var yMax=yLine, yMin=yLine;
|
|
56268
|
+
for(var i=0;i<labInfo.AryLine.length;++i)
|
|
56269
|
+
{
|
|
56270
|
+
var item=labInfo.AryLine[i];
|
|
56271
|
+
if (!IFrameSplitOperator.IsNumber(item.Value)) continue;
|
|
56272
|
+
|
|
56273
|
+
var y=this.Frame.GetYFromData(item.Value);
|
|
56274
|
+
var yFixed=ToFixedPoint(y);
|
|
56275
|
+
var xRight=right;
|
|
56276
|
+
if (IFrameSplitOperator.IsNumber(item.Width)) xRight=left+item.Width*pixelRatio;
|
|
56277
|
+
if (item.Color) this.Canvas.strokeStyle=item.Color;
|
|
56278
|
+
else this.Canvas.strokeStyle=this.LineColor;
|
|
56279
|
+
|
|
56280
|
+
this.Canvas.beginPath();
|
|
56281
|
+
this.Canvas.moveTo(left,yFixed);
|
|
56282
|
+
this.Canvas.lineTo(xRight,yFixed);
|
|
56283
|
+
this.Canvas.stroke();
|
|
56284
|
+
|
|
56285
|
+
if (yMax<yFixed) yMax=yFixed;
|
|
56286
|
+
if (yMin>yFixed) yMin=yFixed;
|
|
56287
|
+
}
|
|
56288
|
+
|
|
56289
|
+
if (yMax!=yMin && labInfo.VLine)
|
|
56290
|
+
{
|
|
56291
|
+
var item=labInfo.VLine;
|
|
56292
|
+
var x=left+20*pixelRatio;
|
|
56293
|
+
if (IFrameSplitOperator.IsNumber(item.XOffset)) x=left+item.XOffset*pixelRatio;
|
|
56294
|
+
x=ToFixedPoint(x);
|
|
56295
|
+
if (item.Color) this.Canvas.strokeStyle=item.Color;
|
|
56296
|
+
else this.Canvas.strokeStyle=this.LineColor;
|
|
56297
|
+
|
|
56298
|
+
this.Canvas.beginPath();
|
|
56299
|
+
this.Canvas.moveTo(x,yMax);
|
|
56300
|
+
this.Canvas.lineTo(x,yMin);
|
|
56301
|
+
this.Canvas.stroke();
|
|
56302
|
+
}
|
|
56303
|
+
}
|
|
56304
|
+
|
|
55958
56305
|
this.DrawValueText=function(y, rtDraw, labInfo)
|
|
55959
56306
|
{
|
|
55960
56307
|
var left=this.Frame.ChartBorder.GetLeft();
|
|
@@ -56099,7 +56446,7 @@ function ChartDrawHLine()
|
|
|
56099
56446
|
this.Canvas.fillStyle=icon.Color;
|
|
56100
56447
|
this.Canvas.fillText(this.Button.SettingIcon.Text,xCenter,yCenter);
|
|
56101
56448
|
|
|
56102
|
-
this.AryButton.push({Rect:rtButton, ID:
|
|
56449
|
+
this.AryButton.push({Rect:rtButton, ID:icon.ID, TooltipText:icon.TooltipText});
|
|
56103
56450
|
|
|
56104
56451
|
/*
|
|
56105
56452
|
if (this.ColseButtonSize>0)
|
|
@@ -56131,7 +56478,7 @@ function ChartDrawHLine()
|
|
|
56131
56478
|
this.Canvas.fillStyle=icon.Color;
|
|
56132
56479
|
this.Canvas.fillText(this.Button.CloseIcon.Text,xCenter,yCenter);
|
|
56133
56480
|
|
|
56134
|
-
this.AryButton.push({Rect:rtButton,ID:
|
|
56481
|
+
this.AryButton.push({Rect:rtButton,ID:icon.ID, TooltipText:icon.TooltipText });
|
|
56135
56482
|
|
|
56136
56483
|
left=rtButton.Right;
|
|
56137
56484
|
}
|
|
@@ -64834,12 +65181,14 @@ function JSChartResource()
|
|
|
64834
65181
|
BorderColor:"rgb(204,204,204)",
|
|
64835
65182
|
Button:
|
|
64836
65183
|
{
|
|
64837
|
-
Font:{ Family:"微软雅黑" },
|
|
65184
|
+
Font:{ Family:"微软雅黑", Size:12*GetDevicePixelRatio() },
|
|
64838
65185
|
TitleColor: { Selected:"rgb(255,255,255)", Default:"rgb(125,125,125)", MoveOn:"rgb(234,85,4)" },
|
|
64839
65186
|
BGColor: { Selected:"rgb(234,85,4)", Default:"rgb(235,235,235)", MoveOn:"rgb(242,242,242)" },
|
|
64840
65187
|
BorderColor:"rgb(204,204,204)",
|
|
64841
65188
|
|
|
64842
|
-
Mergin: { Left:5*GetDevicePixelRatio(), Right:5*GetDevicePixelRatio(), Top:4*GetDevicePixelRatio(), Bottom:2*GetDevicePixelRatio() }
|
|
65189
|
+
Mergin: { Left:5*GetDevicePixelRatio(), Right:5*GetDevicePixelRatio(), Top:4*GetDevicePixelRatio(), Bottom:2*GetDevicePixelRatio() },
|
|
65190
|
+
|
|
65191
|
+
SVG:{ Family:"iconfont", Size:12*GetDevicePixelRatio(), MerginLeft:4*GetDevicePixelRatio() }
|
|
64843
65192
|
}
|
|
64844
65193
|
}
|
|
64845
65194
|
|
|
@@ -65858,6 +66207,15 @@ function JSChartResource()
|
|
|
65858
66207
|
if (IFrameSplitOperator.IsNumber(item.Top)) destItem.Top=item.Top;
|
|
65859
66208
|
if (IFrameSplitOperator.IsNumber(item.Bottom)) destItem.Bottom=item.Bottom;
|
|
65860
66209
|
}
|
|
66210
|
+
|
|
66211
|
+
if (button.SVG)
|
|
66212
|
+
{
|
|
66213
|
+
var item=button.SVG;
|
|
66214
|
+
var destItem=this.FrameButtomToolbar.Button.SVG;
|
|
66215
|
+
if (IFrameSplitOperator.IsNumber(item.Size)) destItem.Size=item.Size;
|
|
66216
|
+
if (IFrameSplitOperator.IsNumber(item.MerginLeft)) destItem.MerginLeft=item.MerginLeft;
|
|
66217
|
+
if (item.Family) destItem.Family=item.Family;
|
|
66218
|
+
}
|
|
65861
66219
|
}
|
|
65862
66220
|
|
|
65863
66221
|
}
|
|
@@ -68120,10 +68478,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
68120
68478
|
isShowMenu=data.IsShowMenu;
|
|
68121
68479
|
}
|
|
68122
68480
|
|
|
68123
|
-
|
|
68124
|
-
if (isShowMenu && this.SelectRectRightMenu)
|
|
68481
|
+
if (isShowMenu)
|
|
68125
68482
|
{
|
|
68126
|
-
|
|
68483
|
+
var data=
|
|
68127
68484
|
{
|
|
68128
68485
|
Chart:this,
|
|
68129
68486
|
X:x,
|
|
@@ -68131,8 +68488,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
68131
68488
|
SelectData:selectData, //区间选择的数据
|
|
68132
68489
|
RectSelectPaint:paint //区间选择背景
|
|
68133
68490
|
};
|
|
68491
|
+
e.data=data;
|
|
68134
68492
|
|
|
68135
|
-
this.
|
|
68493
|
+
this.PopupSelectRectMenuV2(data, e);
|
|
68136
68494
|
}
|
|
68137
68495
|
}
|
|
68138
68496
|
|
|
@@ -68167,7 +68525,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
68167
68525
|
this.ShowSelectData=function(selectData)
|
|
68168
68526
|
{
|
|
68169
68527
|
this.HideSelectRect();
|
|
68170
|
-
if (this.SelectRectRightMenu) this.SelectRectRightMenu.Hide();
|
|
68171
68528
|
|
|
68172
68529
|
JSConsole.Chart.Log('[KLineChartContainer::ShowSelectData] selectData', selectData);
|
|
68173
68530
|
var dataOffset=selectData.Start;
|
|
@@ -68252,9 +68609,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
68252
68609
|
isShowMenu=data.IsShowMenu;
|
|
68253
68610
|
}
|
|
68254
68611
|
|
|
68255
|
-
if (isShowMenu
|
|
68612
|
+
if (isShowMenu)
|
|
68256
68613
|
{
|
|
68257
|
-
|
|
68614
|
+
var data=
|
|
68258
68615
|
{
|
|
68259
68616
|
Chart:this,
|
|
68260
68617
|
X:corssCursor.LastPoint.X/pixelTatio,
|
|
@@ -68262,7 +68619,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
68262
68619
|
SelectData:selectData, //区间选择的数据
|
|
68263
68620
|
RectSelectPaint:paint //区间选择背景
|
|
68264
68621
|
};
|
|
68265
|
-
|
|
68622
|
+
e.data=data
|
|
68623
|
+
|
|
68624
|
+
this.PopupSelectRectMenuV2(data, e);
|
|
68266
68625
|
}
|
|
68267
68626
|
}
|
|
68268
68627
|
|
|
@@ -72169,32 +72528,315 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72169
72528
|
}
|
|
72170
72529
|
}
|
|
72171
72530
|
|
|
72172
|
-
|
|
72173
72531
|
//注册鼠标右键事件
|
|
72174
72532
|
this.OnRightMenu=function(x,y,e)
|
|
72175
72533
|
{
|
|
72176
72534
|
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
72177
|
-
|
|
72178
|
-
{
|
|
72179
|
-
|
|
72180
|
-
e.data={ Chart:this, FrameID:frameId };
|
|
72181
|
-
this.RightMenu.DoModal(e);
|
|
72182
|
-
}
|
|
72183
|
-
|
|
72535
|
+
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
72536
|
+
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
72537
|
+
|
|
72184
72538
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);
|
|
72185
72539
|
if (event)
|
|
72186
72540
|
{
|
|
72187
|
-
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
72188
72541
|
var data={ X:x, Y:y, Event:e, FrameID:frameId };
|
|
72189
72542
|
event.Callback(event,data,this);
|
|
72190
72543
|
}
|
|
72191
72544
|
}
|
|
72192
72545
|
|
|
72546
|
+
//右键菜单数据
|
|
72547
|
+
this.GetRightMenuData=function(frameID)
|
|
72548
|
+
{
|
|
72549
|
+
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
72550
|
+
var klineChart=this.ChartPaint[0];
|
|
72551
|
+
var priceGap=klineChart.PriceGap; //缺口配置信息
|
|
72552
|
+
var coordinateType=null, yCoordinateType=null; //坐标类型
|
|
72553
|
+
var mainFrame=null;
|
|
72554
|
+
if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
|
|
72555
|
+
if (mainFrame)
|
|
72556
|
+
{
|
|
72557
|
+
coordinateType=mainFrame.CoordinateType;
|
|
72558
|
+
if (mainFrame.YSplitOperator) yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
|
|
72559
|
+
}
|
|
72560
|
+
|
|
72561
|
+
var aryKLineInfo=[]; //信息地雷
|
|
72562
|
+
for(var i=0;i<this.ChartInfo.length;++i)
|
|
72563
|
+
{
|
|
72564
|
+
var item=this.ChartInfo[i];
|
|
72565
|
+
if (item && item.ClassName) aryKLineInfo.push(item.ClassName);
|
|
72566
|
+
}
|
|
72567
|
+
|
|
72568
|
+
var aryOverlaySymbol=[]; //叠加的股票列表
|
|
72569
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
72570
|
+
{
|
|
72571
|
+
var item=this.OverlayChartPaint[i];
|
|
72572
|
+
if (item && item.Symbol) aryOverlaySymbol.push(item.Symbol)
|
|
72573
|
+
}
|
|
72574
|
+
|
|
72575
|
+
var bBGSpit=false, bShowDrawTool=false, bShowStockChip=false;
|
|
72576
|
+
if (this.GetExtendChartByClassName("SessionBreaksPaint")) bBGSpit=true;
|
|
72577
|
+
if (this.GetExtendChartByClassName('DrawToolsButton')) bShowDrawTool=true; //画图工具
|
|
72578
|
+
if (this.GetExtendChartByClassName('StockChip')) bShowStockChip=true; //筹码
|
|
72579
|
+
|
|
72580
|
+
var aryMenu=
|
|
72581
|
+
[
|
|
72582
|
+
{
|
|
72583
|
+
Name:"分析周期",
|
|
72584
|
+
SubMenu:
|
|
72585
|
+
[
|
|
72586
|
+
{ Name:"日线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[0] }, Checked:this.Period==0 },
|
|
72587
|
+
{ Name:"周线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[1] }, Checked:this.Period==1 },
|
|
72588
|
+
{ Name:"双周线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[21]}, Checked:this.Period==21 },
|
|
72589
|
+
{ Name:"月线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[2]}, Checked:this.Period==2 },
|
|
72590
|
+
{ Name:"季线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[9]}, Checked:this.Period==9 },
|
|
72591
|
+
{ Name:"半年", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[22]}, Checked:this.Period==22 },
|
|
72592
|
+
{ Name:"年线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[3]}, Checked:this.Period==3 },
|
|
72593
|
+
{ Name:"1分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[4]}, Checked:this.Period==4 },
|
|
72594
|
+
{ Name:"5分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[5]}, Checked:this.Period==5 },
|
|
72595
|
+
{ Name:"15分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[6]}, Checked:this.Period==6 },
|
|
72596
|
+
{ Name:"30分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[7]}, Checked:this.Period==7 },
|
|
72597
|
+
{ Name:"60分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[8]}, Checked:this.Period==8 },
|
|
72598
|
+
{ Name:"2小时", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[11]}, Checked:this.Period==11 },
|
|
72599
|
+
{ Name:"4小时", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[12]}, Checked:this.Period==12 },
|
|
72600
|
+
{ Name:"分笔", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[10]}, Checked:this.Period==10 },
|
|
72601
|
+
{ Name:"自定义周期:3分钟", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[20003]}, Checked:this.Period==20003 },
|
|
72602
|
+
{ Name:"自定义周期:35分钟", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[20035]}, Checked:this.Period==20035 },
|
|
72603
|
+
{ Name:"自定义周期:8日", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[40008]}, Checked:this.Period==40008 },
|
|
72604
|
+
]
|
|
72605
|
+
},
|
|
72606
|
+
{
|
|
72607
|
+
Name:"指标切换",
|
|
72608
|
+
SubMenu:
|
|
72609
|
+
[
|
|
72610
|
+
{ Name:"均线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "均线"]}},
|
|
72611
|
+
{ Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BOLL"]}},
|
|
72612
|
+
{ Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
|
|
72613
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
|
|
72614
|
+
{ Name:"VOL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "VOL"]}},
|
|
72615
|
+
{ Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
|
|
72616
|
+
{ Name:"BRAR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BRAR"]}},
|
|
72617
|
+
{ Name:"WR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "WR"]}},
|
|
72618
|
+
]
|
|
72619
|
+
},
|
|
72620
|
+
{
|
|
72621
|
+
Name:"五彩K线",
|
|
72622
|
+
SubMenu:
|
|
72623
|
+
[
|
|
72624
|
+
{ Name:"十字星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-十字星"]}},
|
|
72625
|
+
{ Name:"早晨之星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-早晨之星"]}},
|
|
72626
|
+
{ Name:"垂死十字", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-垂死十字"]}},
|
|
72627
|
+
{ Name:"三只乌鸦", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-三只乌鸦"]}},
|
|
72628
|
+
{ Name:"光脚阴线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-光脚阴线"]}},
|
|
72629
|
+
{ Name:"黄昏之星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-黄昏之星"]}},
|
|
72630
|
+
]
|
|
72631
|
+
|
|
72632
|
+
},
|
|
72633
|
+
{
|
|
72634
|
+
Name:"专家系统",
|
|
72635
|
+
SubMenu:
|
|
72636
|
+
[
|
|
72637
|
+
{ Name:"BIAS", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-BIAS"]}},
|
|
72638
|
+
{ Name:"CCI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-CCI"]}},
|
|
72639
|
+
{ Name:"DMI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-DMI"]}},
|
|
72640
|
+
{ Name:"KD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-KD"]}},
|
|
72641
|
+
{ Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-BOLL"]}},
|
|
72642
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-KDJ"]}},
|
|
72643
|
+
]
|
|
72644
|
+
},
|
|
72645
|
+
{
|
|
72646
|
+
Name:"信息地雷",
|
|
72647
|
+
SubMenu:
|
|
72648
|
+
[
|
|
72649
|
+
{ Name:"公告", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["公告", !aryKLineInfo.includes("AnnouncementInfo")]}, Checked:aryKLineInfo.includes("AnnouncementInfo") },
|
|
72650
|
+
{ Name:"业绩预告", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["业绩预告", !aryKLineInfo.includes("PforecastInfo")]}, Checked:aryKLineInfo.includes("PforecastInfo") },
|
|
72651
|
+
{ Name:"调研", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["调研", !aryKLineInfo.includes("ResearchInfo") ]}, Checked:aryKLineInfo.includes("ResearchInfo") },
|
|
72652
|
+
{ Name:"大宗交易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["大宗交易", !aryKLineInfo.includes("BlockTrading")]}, Checked:aryKLineInfo.includes("BlockTrading") },
|
|
72653
|
+
{ Name:"龙虎榜", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["龙虎榜", !aryKLineInfo.includes("TradeDetail")]}, Checked:aryKLineInfo.includes("TradeDetail") },
|
|
72654
|
+
{ Name:"互动易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["互动易", !aryKLineInfo.includes("InvestorInfo")]}, Checked:aryKLineInfo.includes("InvestorInfo") },
|
|
72655
|
+
]
|
|
72656
|
+
},
|
|
72657
|
+
{
|
|
72658
|
+
Name:"缺口提示",
|
|
72659
|
+
SubMenu:
|
|
72660
|
+
[
|
|
72661
|
+
{ Name:"显示1个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 1]}, Checked:(priceGap.Enable==true && priceGap.Count==1) },
|
|
72662
|
+
{ Name:"显示2个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 2]}, Checked:(priceGap.Enable==true && priceGap.Count==2) },
|
|
72663
|
+
{ Name:"显示3个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 3]}, Checked:(priceGap.Enable==true && priceGap.Count==3) },
|
|
72664
|
+
{ Name:"隐藏缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[false]}, Checked:priceGap.Enable==false },
|
|
72665
|
+
]
|
|
72666
|
+
},
|
|
72667
|
+
{
|
|
72668
|
+
Name:"叠加品种",
|
|
72669
|
+
SubMenu:
|
|
72670
|
+
[
|
|
72671
|
+
{ Name:"上证指数", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000001.sh", !aryOverlaySymbol.includes("000001.sh")]}, Checked:aryOverlaySymbol.includes("000001.sh") },
|
|
72672
|
+
{ Name:"深证成指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399001.sz", !aryOverlaySymbol.includes("399001.sz")]}, Checked:aryOverlaySymbol.includes("399001.sz") },
|
|
72673
|
+
{ Name:"中小板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399005.sz", !aryOverlaySymbol.includes("399005.sz")]}, Checked:aryOverlaySymbol.includes("399005.sz") },
|
|
72674
|
+
{ Name:"创业板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399006.sz", !aryOverlaySymbol.includes("399006.sz")]}, Checked:aryOverlaySymbol.includes("399006.sz") },
|
|
72675
|
+
{ Name:"沪深300", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000300.sh", !aryOverlaySymbol.includes("000300.sh")]}, Checked:aryOverlaySymbol.includes("000300.sh")},
|
|
72676
|
+
]
|
|
72677
|
+
},
|
|
72678
|
+
{
|
|
72679
|
+
Name:"主图线型",
|
|
72680
|
+
SubMenu:
|
|
72681
|
+
[
|
|
72682
|
+
{ Name:"K线(空心阳线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[3]} },
|
|
72683
|
+
{ Name:"K线(实心阳线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[0]} },
|
|
72684
|
+
{ Name:"美国线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[2, true, { IsThinAKBar:false }]} },
|
|
72685
|
+
{ Name:"美国线(细)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[2, true, { IsThinAKBar:true }]} },
|
|
72686
|
+
{ Name:"收盘线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[1]} },
|
|
72687
|
+
{ Name:"收盘面积", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[4]} },
|
|
72688
|
+
{ Name:"K线(空心阳线阴线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[6]} },
|
|
72689
|
+
{ Name:"Heikin Ashi", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[11]} },
|
|
72690
|
+
{ Name:"Line Break", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[12]} },
|
|
72691
|
+
{ Name:"High-low", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[13]} },
|
|
72692
|
+
{ Name:"HLC Area", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[15]} },
|
|
72693
|
+
]
|
|
72694
|
+
},
|
|
72695
|
+
{
|
|
72696
|
+
Name:"坐标类型",
|
|
72697
|
+
SubMenu:
|
|
72698
|
+
[
|
|
72699
|
+
{ Name:"反转坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ IsReverse:coordinateType==0 }]}, Checked:coordinateType==1 },
|
|
72700
|
+
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
72701
|
+
|
|
72702
|
+
{ Name:"普通坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:0 }]}, Checked:yCoordinateType==0 },
|
|
72703
|
+
{ Name:"百分比坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:1 }]}, Checked:yCoordinateType==1 },
|
|
72704
|
+
{ Name:"对数坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:2 }]}, Checked:yCoordinateType==2 },
|
|
72705
|
+
{ Name:"等比坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:3 }]}, Checked:yCoordinateType==3 },
|
|
72706
|
+
{ Name:"等分坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:4 }]}, Checked:yCoordinateType==4 },
|
|
72707
|
+
{ Name:"黄金分割", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:5 }]}, Checked:yCoordinateType==5},
|
|
72708
|
+
|
|
72709
|
+
]
|
|
72710
|
+
},
|
|
72711
|
+
{
|
|
72712
|
+
Name:"指标窗口个数",
|
|
72713
|
+
SubMenu:
|
|
72714
|
+
[
|
|
72715
|
+
{ Name:"1个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[2]}, Checked:2==windowCount },
|
|
72716
|
+
{ Name:"2个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[3]}, Checked:3==windowCount },
|
|
72717
|
+
{ Name:"3个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[4]}, Checked:4==windowCount },
|
|
72718
|
+
{ Name:"4个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[5]}, Checked:5==windowCount },
|
|
72719
|
+
{ Name:"5个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[6]}, Checked:6==windowCount },
|
|
72720
|
+
]
|
|
72721
|
+
},
|
|
72722
|
+
{
|
|
72723
|
+
Name:"其他设置",
|
|
72724
|
+
SubMenu:
|
|
72725
|
+
[
|
|
72726
|
+
|
|
72727
|
+
{ Name:"禁止拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[0]}, Checked:0==this.DragMode },
|
|
72728
|
+
{ Name:"启动拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1]}, Checked:1==this.DragMode },
|
|
72729
|
+
{ Name:"区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[2]}, Checked:2==this.DragMode },
|
|
72730
|
+
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
72731
|
+
|
|
72732
|
+
{ Name:"背景分割", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID, Args:[!bBGSpit]}, Checked:bBGSpit},
|
|
72733
|
+
|
|
72734
|
+
{ Name:"画图工具", Data:{ ID:bShowDrawTool?JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID, Args:[]}, Checked:bShowDrawTool},
|
|
72735
|
+
|
|
72736
|
+
{ Name:"移动筹码图", Data:{ ID:bShowStockChip?JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID, Args:[]}, Checked:bShowStockChip},
|
|
72737
|
+
]
|
|
72738
|
+
}
|
|
72739
|
+
];
|
|
72740
|
+
|
|
72741
|
+
//复权
|
|
72742
|
+
if(!MARKET_SUFFIX_NAME.IsSHSZIndex(this.Symbol) && !MARKET_SUFFIX_NAME.IsBIT(this.Symbol))
|
|
72743
|
+
{
|
|
72744
|
+
var rightMenu=
|
|
72745
|
+
{
|
|
72746
|
+
Name:"复权处理",
|
|
72747
|
+
SubMenu:
|
|
72748
|
+
[
|
|
72749
|
+
{ Name:"不复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[0]}, Checked:0==this.Right },
|
|
72750
|
+
{ Name:"前复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[1]}, Checked:1==this.Right },
|
|
72751
|
+
{ Name:"后复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[2]}, Checked:2==this.Right }
|
|
72752
|
+
]
|
|
72753
|
+
};
|
|
72754
|
+
|
|
72755
|
+
aryMenu.splice(1,0,rightMenu);
|
|
72756
|
+
}
|
|
72757
|
+
|
|
72758
|
+
//删除菜单
|
|
72759
|
+
for(var i=0;i<aryMenu.length;++i)
|
|
72760
|
+
{
|
|
72761
|
+
var item=aryMenu[i];
|
|
72762
|
+
if (item.Name=="五彩K线")
|
|
72763
|
+
{
|
|
72764
|
+
if (this.ColorIndex)
|
|
72765
|
+
{
|
|
72766
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
72767
|
+
item.SubMenu.push({ Name:"删除五彩K线", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID} });
|
|
72768
|
+
}
|
|
72769
|
+
}
|
|
72770
|
+
else if (item.Name=="专家系统")
|
|
72771
|
+
{
|
|
72772
|
+
if (this.TradeIndex)
|
|
72773
|
+
{
|
|
72774
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
72775
|
+
item.SubMenu.push({ Name:"删除专家系统", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID} });
|
|
72776
|
+
}
|
|
72777
|
+
}
|
|
72778
|
+
else if (item.Name=="叠加品种")
|
|
72779
|
+
{
|
|
72780
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
72781
|
+
{
|
|
72782
|
+
if (item.SubMenu[j].Checked)
|
|
72783
|
+
{
|
|
72784
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
72785
|
+
item.SubMenu.push({ Name:"取消叠加", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID} });
|
|
72786
|
+
break;
|
|
72787
|
+
}
|
|
72788
|
+
}
|
|
72789
|
+
}
|
|
72790
|
+
else if (item.Name=="信息地雷")
|
|
72791
|
+
{
|
|
72792
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
72793
|
+
{
|
|
72794
|
+
if (item.SubMenu[j].Checked)
|
|
72795
|
+
{
|
|
72796
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
72797
|
+
item.SubMenu.push({ Name:"删除所有", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID} });
|
|
72798
|
+
break;
|
|
72799
|
+
}
|
|
72800
|
+
}
|
|
72801
|
+
}
|
|
72802
|
+
}
|
|
72803
|
+
|
|
72804
|
+
return aryMenu;
|
|
72805
|
+
}
|
|
72806
|
+
|
|
72807
|
+
this.PopupRightMenuV2=function(data,e)
|
|
72808
|
+
{
|
|
72809
|
+
if (!this.JSPopMenu) return;
|
|
72810
|
+
var x=data.X, y=data.Y;
|
|
72811
|
+
var frameID=data.FrameID;
|
|
72812
|
+
var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
72813
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
72814
|
+
|
|
72815
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
72816
|
+
}
|
|
72817
|
+
|
|
72818
|
+
this.PopupSelectRectMenuV2=function(data, e)
|
|
72819
|
+
{
|
|
72820
|
+
var aryMenu=
|
|
72821
|
+
[
|
|
72822
|
+
{ Name:"区间统计", Data:{ ID:JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID, Args:[e] }},
|
|
72823
|
+
{ Name:"区间放大", Data:{ ID:JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID, Args:[data.SelectData] }}
|
|
72824
|
+
];
|
|
72825
|
+
|
|
72826
|
+
var menuData={ Menu:aryMenu, Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
72827
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
72828
|
+
var x=data.X, y=data.Y;
|
|
72829
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
72830
|
+
}
|
|
72831
|
+
|
|
72193
72832
|
//重新加载画图工具(切换股票|周期)
|
|
72194
72833
|
this.ReloadChartDrawPicture=function()
|
|
72195
72834
|
{
|
|
72196
72835
|
this.ChartDrawPicture=[];
|
|
72197
|
-
this.
|
|
72836
|
+
if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.IsSelected=false;
|
|
72837
|
+
this.SelectChartDrawPicture=null;
|
|
72838
|
+
this.CurrentChartDrawPicture=null;
|
|
72839
|
+
|
|
72198
72840
|
if (this.ChartDrawStorage)
|
|
72199
72841
|
{
|
|
72200
72842
|
this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData( {Symbol:this.Symbol, Period:this.Period} );
|
|
@@ -73585,7 +74227,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73585
74227
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_EXTENDCHART_BUTTON);
|
|
73586
74228
|
if (event && event.Callback)
|
|
73587
74229
|
{
|
|
73588
|
-
var data={ Info:button, PreventDefault:false }; //PreventDefault 是否阻止内置的点击处理
|
|
74230
|
+
var data={ Info:button, PreventDefault:false, e:e }; //PreventDefault 是否阻止内置的点击处理
|
|
73589
74231
|
event.Callback(event,data,this);
|
|
73590
74232
|
if (data.PreventDefault) return;
|
|
73591
74233
|
}
|
|
@@ -75552,22 +76194,135 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
75552
76194
|
//注册鼠标右键事件
|
|
75553
76195
|
this.OnRightMenu=function(x,y,e)
|
|
75554
76196
|
{
|
|
75555
|
-
|
|
75556
|
-
|
|
75557
|
-
|
|
75558
|
-
|
|
75559
|
-
this.RightMenu.DoModal(e);
|
|
75560
|
-
}
|
|
75561
|
-
|
|
76197
|
+
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
76198
|
+
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
76199
|
+
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
76200
|
+
|
|
75562
76201
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);
|
|
75563
76202
|
if (event)
|
|
75564
76203
|
{
|
|
75565
|
-
var frameId=this.Frame.PtInFrame(x,y);
|
|
75566
76204
|
var data={ X:x, Y:y, Event:e, FrameID:frameId };
|
|
75567
76205
|
event.Callback(event,data,this);
|
|
75568
76206
|
}
|
|
75569
76207
|
}
|
|
75570
76208
|
|
|
76209
|
+
//右键菜单数据
|
|
76210
|
+
this.GetRightMenuData=function(frameID)
|
|
76211
|
+
{
|
|
76212
|
+
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
76213
|
+
|
|
76214
|
+
var aryOverlaySymbol=[]; //叠加的股票列表
|
|
76215
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
76216
|
+
{
|
|
76217
|
+
var item=this.OverlayChartPaint[i];
|
|
76218
|
+
if (item && item.Symbol) aryOverlaySymbol.push(item.Symbol)
|
|
76219
|
+
}
|
|
76220
|
+
|
|
76221
|
+
var bShowDrawTool=false;
|
|
76222
|
+
if (this.GetExtendChartByClassName('DrawToolsButton')) bShowDrawTool=true; //画图工具
|
|
76223
|
+
|
|
76224
|
+
var aryMenu=
|
|
76225
|
+
[
|
|
76226
|
+
{
|
|
76227
|
+
Name:"叠加品种",
|
|
76228
|
+
SubMenu:
|
|
76229
|
+
[
|
|
76230
|
+
{ Name:"上证指数", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000001.sh", !aryOverlaySymbol.includes("000001.sh")]}, Checked:aryOverlaySymbol.includes("000001.sh") },
|
|
76231
|
+
{ Name:"深证成指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399001.sz", !aryOverlaySymbol.includes("399001.sz")]}, Checked:aryOverlaySymbol.includes("399001.sz") },
|
|
76232
|
+
{ Name:"中小板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399005.sz", !aryOverlaySymbol.includes("399005.sz")]}, Checked:aryOverlaySymbol.includes("399005.sz") },
|
|
76233
|
+
{ Name:"创业板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399006.sz", !aryOverlaySymbol.includes("399006.sz")]}, Checked:aryOverlaySymbol.includes("399006.sz") },
|
|
76234
|
+
{ Name:"沪深300", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000300.sh", !aryOverlaySymbol.includes("000300.sh")]}, Checked:aryOverlaySymbol.includes("000300.sh")},
|
|
76235
|
+
]
|
|
76236
|
+
},
|
|
76237
|
+
{
|
|
76238
|
+
Name:"多日分时图",
|
|
76239
|
+
SubMenu:
|
|
76240
|
+
[
|
|
76241
|
+
{ Name:"当日分时图", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[1]}, Checked:this.DayCount==1 },
|
|
76242
|
+
{ Name:"最近2日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[2]}, Checked:this.DayCount==2 },
|
|
76243
|
+
{ Name:"最近3日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[3]}, Checked:this.DayCount==3 },
|
|
76244
|
+
{ Name:"最近4日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[4]}, Checked:this.DayCount==4 },
|
|
76245
|
+
{ Name:"最近5日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[5]}, Checked:this.DayCount==5 },
|
|
76246
|
+
]
|
|
76247
|
+
},
|
|
76248
|
+
{
|
|
76249
|
+
Name:"指标窗口个数",
|
|
76250
|
+
SubMenu:
|
|
76251
|
+
[
|
|
76252
|
+
{ Name:"1个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[2]}, Checked:3==windowCount },
|
|
76253
|
+
{ Name:"2个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[3]}, Checked:4==windowCount },
|
|
76254
|
+
{ Name:"3个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[4]}, Checked:5==windowCount },
|
|
76255
|
+
{ Name:"4个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[5]}, Checked:6==windowCount },
|
|
76256
|
+
{ Name:"5个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[6]}, Checked:7==windowCount },
|
|
76257
|
+
]
|
|
76258
|
+
},
|
|
76259
|
+
{
|
|
76260
|
+
Name:"指标切换",
|
|
76261
|
+
SubMenu:
|
|
76262
|
+
[
|
|
76263
|
+
{ Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
|
|
76264
|
+
{ Name:"DMI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "DMI"]}},
|
|
76265
|
+
{ Name:"DMA", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "DMA"]}},
|
|
76266
|
+
{ Name:"BRAR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BRAR"]}},
|
|
76267
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
|
|
76268
|
+
{ Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
|
|
76269
|
+
{ Name:"WR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "WR"]}},
|
|
76270
|
+
{ Name:"CCI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "CCI"]}},
|
|
76271
|
+
{ Name:"TRIX", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "TRIX"]}},
|
|
76272
|
+
]
|
|
76273
|
+
},
|
|
76274
|
+
{
|
|
76275
|
+
Name:"区间选择",Data:{ ID: JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID, Args:[!this.EnableSelectRect]}, Checked:this.EnableSelectRect
|
|
76276
|
+
},
|
|
76277
|
+
{
|
|
76278
|
+
Name:"其他设置",
|
|
76279
|
+
SubMenu:
|
|
76280
|
+
[
|
|
76281
|
+
{ Name:"画图工具", Data:{ ID:bShowDrawTool?JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID, Args:[]}, Checked:bShowDrawTool},
|
|
76282
|
+
]
|
|
76283
|
+
}
|
|
76284
|
+
|
|
76285
|
+
];
|
|
76286
|
+
|
|
76287
|
+
if (MARKET_SUFFIX_NAME.IsSHSZStockA(this.Symbol))
|
|
76288
|
+
{
|
|
76289
|
+
var item={ Name:"集合竞价",Data:{ ID: JSCHART_MENU_ID.CMD_SHOW_BEFORE_DATA_ID, Args:[!this.IsShowBeforeData] }, Checked:this.IsShowBeforeData };
|
|
76290
|
+
aryMenu.splice(4,0,item);
|
|
76291
|
+
}
|
|
76292
|
+
|
|
76293
|
+
|
|
76294
|
+
//删除菜单
|
|
76295
|
+
for(var i=0;i<aryMenu.length;++i)
|
|
76296
|
+
{
|
|
76297
|
+
var item=aryMenu[i];
|
|
76298
|
+
if (item.Name=="叠加品种")
|
|
76299
|
+
{
|
|
76300
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
76301
|
+
{
|
|
76302
|
+
if (item.SubMenu[j].Checked)
|
|
76303
|
+
{
|
|
76304
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76305
|
+
item.SubMenu.push({ Name:"取消叠加", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID} });
|
|
76306
|
+
break;
|
|
76307
|
+
}
|
|
76308
|
+
}
|
|
76309
|
+
}
|
|
76310
|
+
}
|
|
76311
|
+
|
|
76312
|
+
return aryMenu;
|
|
76313
|
+
}
|
|
76314
|
+
|
|
76315
|
+
this.PopupRightMenuV2=function(data,e)
|
|
76316
|
+
{
|
|
76317
|
+
if (!this.JSPopMenu) return;
|
|
76318
|
+
var x=data.X, y=data.Y;
|
|
76319
|
+
var frameID=data.FrameID;
|
|
76320
|
+
var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
76321
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
76322
|
+
|
|
76323
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
76324
|
+
}
|
|
76325
|
+
|
|
75571
76326
|
this.OnWheel=function(e)
|
|
75572
76327
|
{
|
|
75573
76328
|
JSConsole.Chart.Log('[MinuteChartContainer::OnWheel]',e);
|
|
@@ -76672,15 +77427,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
76672
77427
|
this.ResetDayOffset();
|
|
76673
77428
|
}
|
|
76674
77429
|
|
|
76675
|
-
|
|
76676
|
-
{
|
|
76677
|
-
this.ChartDrawPicture=[];
|
|
76678
|
-
}
|
|
76679
|
-
else
|
|
76680
|
-
{
|
|
76681
|
-
this.ReloadChartDrawPicture();
|
|
76682
|
-
}
|
|
76683
|
-
|
|
77430
|
+
this.ReloadChartDrawPicture();
|
|
76684
77431
|
this.ResetDataStatus();
|
|
76685
77432
|
this.ClearIndexPaint(); //清空指标
|
|
76686
77433
|
this.Frame.ClearYCoordinateMaxMin();
|
|
@@ -77202,6 +77949,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
77202
77949
|
this.TitlePaint[0].IsShowDate=true;
|
|
77203
77950
|
this.UpdateDataOffset();
|
|
77204
77951
|
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
77952
|
+
this.CreateChartDrawPictureByStorage(); //创建画图工具
|
|
77205
77953
|
|
|
77206
77954
|
//执行脚本
|
|
77207
77955
|
if (this.Frame.SubFrame.length>2)
|
|
@@ -77500,7 +78248,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
77500
78248
|
this.UpdateLatestMinuteDataV2(minuteData);
|
|
77501
78249
|
this.UpdateHistoryMinuteUI(updateTime);
|
|
77502
78250
|
this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"} );
|
|
77503
|
-
this.RequestOverlayMinuteData();
|
|
78251
|
+
this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
|
|
77504
78252
|
this.BindAllOverlayIndexData(this.SourceData);
|
|
77505
78253
|
this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
|
|
77506
78254
|
this.AutoUpdate();
|
|
@@ -78920,7 +79668,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
78920
79668
|
this.ReloadChartDrawPicture=function()
|
|
78921
79669
|
{
|
|
78922
79670
|
this.ChartDrawPicture=[];
|
|
78923
|
-
this.
|
|
79671
|
+
if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.IsSelected=false;
|
|
79672
|
+
this.SelectChartDrawPicture=null;
|
|
79673
|
+
this.CurrentChartDrawPicture=null;
|
|
79674
|
+
this.MoveOnChartDrawPicture=null;
|
|
79675
|
+
|
|
78924
79676
|
if (this.ChartDrawStorage)
|
|
78925
79677
|
{
|
|
78926
79678
|
this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData( { Symbol:this.Symbol, Period:888888888 } );
|
|
@@ -78931,7 +79683,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
78931
79683
|
{
|
|
78932
79684
|
if (!this.ChartDrawStorageCache || this.ChartDrawStorageCache.length<=0) return;
|
|
78933
79685
|
|
|
78934
|
-
|
|
79686
|
+
var self=this;
|
|
79687
|
+
for(var i=0; i<this.ChartDrawStorageCache.length; ++i)
|
|
78935
79688
|
{
|
|
78936
79689
|
var item=this.ChartDrawStorageCache[i];
|
|
78937
79690
|
if (item.FrameID<0 || !this.Frame.SubFrame || this.Frame.SubFrame.length<item.FrameID) continue;
|
|
@@ -78942,8 +79695,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
78942
79695
|
drawPicture.Canvas=this.Canvas;
|
|
78943
79696
|
drawPicture.Status=10;
|
|
78944
79697
|
drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
|
|
79698
|
+
if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
|
|
79699
|
+
drawPicture.ResetXValue();
|
|
78945
79700
|
drawPicture.UpdateXValue();
|
|
78946
79701
|
drawPicture.ValueToPoint();
|
|
79702
|
+
drawPicture.GetActiveDrawPicture=()=>{ return this.GetActiveDrawPicture(); }
|
|
78947
79703
|
|
|
78948
79704
|
if (drawPicture.ClassName==='ChartDrawPictureText') drawPicture.IsInitialized=true;
|
|
78949
79705
|
|
|
@@ -85483,1479 +86239,6 @@ function WaitDialog(divElement)
|
|
|
85483
86239
|
}
|
|
85484
86240
|
}
|
|
85485
86241
|
|
|
85486
|
-
//K线右键菜单类
|
|
85487
|
-
//id:"kline"
|
|
85488
|
-
function KLineRightMenu(divElement)
|
|
85489
|
-
{
|
|
85490
|
-
this.newMethod=IDivDialog; //派生
|
|
85491
|
-
this.newMethod(divElement);
|
|
85492
|
-
delete this.newMethod;
|
|
85493
|
-
|
|
85494
|
-
this.option={};
|
|
85495
|
-
|
|
85496
|
-
this.Create = function () {
|
|
85497
|
-
var _self = this;
|
|
85498
|
-
|
|
85499
|
-
this.ID=Guid();
|
|
85500
|
-
|
|
85501
|
-
_self.BindData();
|
|
85502
|
-
_self.BindEvent();
|
|
85503
|
-
}
|
|
85504
|
-
this.BindData=function(){
|
|
85505
|
-
var _self = this;
|
|
85506
|
-
|
|
85507
|
-
var id=this.DivElement.id;
|
|
85508
|
-
var $body = $("#" + id);
|
|
85509
|
-
|
|
85510
|
-
$body.find("div[id^='topMenu_']").remove();
|
|
85511
|
-
$body.find("div[id^='childMenu_']").remove();
|
|
85512
|
-
|
|
85513
|
-
var $topMenu = $("<div />");
|
|
85514
|
-
$topMenu.attr("id", "topMenu_"+_self.ID).addClass("context-menu-wrapper topmenu").hide();
|
|
85515
|
-
$body.append($topMenu);
|
|
85516
|
-
|
|
85517
|
-
var $topTable = $("<table />");
|
|
85518
|
-
$topTable.attr({ id: "topTable_" + _self.ID, cellspacing: "0", cellpadding: "0" }).addClass("context-menu");
|
|
85519
|
-
$topMenu.append($topTable);
|
|
85520
|
-
|
|
85521
|
-
$topTable.append(_self.childrenList(_self.option.data));
|
|
85522
|
-
|
|
85523
|
-
for (var i = 0; i < _self.option.data.length; i++) {
|
|
85524
|
-
var isHasChildren = typeof _self.option.data[i].children != "undefined";
|
|
85525
|
-
|
|
85526
|
-
if (isHasChildren) {
|
|
85527
|
-
|
|
85528
|
-
var $childMenu = $("<div />");
|
|
85529
|
-
$childMenu.attr({ id: "childMenu_"+_self.ID + i, "data-index": i }).addClass("context-menu-wrapper").hide();
|
|
85530
|
-
$body.append($childMenu);
|
|
85531
|
-
|
|
85532
|
-
var $childTable = $("<table />");
|
|
85533
|
-
$childTable.attr({ id: "childTable_" + _self.ID + i, cellspacing: "0", cellpadding: "0" }).addClass("context-menu");
|
|
85534
|
-
$childMenu.append($childTable);
|
|
85535
|
-
|
|
85536
|
-
$childTable.append(_self.childrenList(_self.option.data[i].children));
|
|
85537
|
-
}
|
|
85538
|
-
}
|
|
85539
|
-
}
|
|
85540
|
-
|
|
85541
|
-
this.Update=function()
|
|
85542
|
-
{
|
|
85543
|
-
var _self = this;
|
|
85544
|
-
//var id=this.DivElement.id;
|
|
85545
|
-
//var $body=$("#"+id);
|
|
85546
|
-
//
|
|
85547
|
-
//var $topTable = $("#topTable_" + _self.ID);
|
|
85548
|
-
//$topTable.empty();
|
|
85549
|
-
//$topTable.append(_self.childrenList(_self.option.data));
|
|
85550
|
-
//
|
|
85551
|
-
//for (var i = 0; i < _self.option.data.length; i++) {
|
|
85552
|
-
// var isHasChildren = typeof _self.option.data[i].children != "undefined";
|
|
85553
|
-
//
|
|
85554
|
-
// if (isHasChildren) {
|
|
85555
|
-
// var $childTable = $("#childTable_" + _self.ID + i);
|
|
85556
|
-
// $childTable.empty();
|
|
85557
|
-
// $childTable.append(_self.childrenList(_self.option.data[i].children));
|
|
85558
|
-
// }
|
|
85559
|
-
//}
|
|
85560
|
-
|
|
85561
|
-
_self.BindData();
|
|
85562
|
-
_self.BindEvent();
|
|
85563
|
-
}
|
|
85564
|
-
|
|
85565
|
-
this.childrenList = function(list) {
|
|
85566
|
-
var result = [];
|
|
85567
|
-
|
|
85568
|
-
for (var i = 0; i < list.length; i++) {
|
|
85569
|
-
var isBorder = typeof list[i].isBorder != "undefined" && list[i].isBorder;
|
|
85570
|
-
|
|
85571
|
-
var $tr = $("<tr />");
|
|
85572
|
-
$tr.addClass("font_Arial context-menu");
|
|
85573
|
-
if (isBorder)
|
|
85574
|
-
$tr.addClass("border");
|
|
85575
|
-
|
|
85576
|
-
var $td1 = $("<td />");
|
|
85577
|
-
if(list[i].selected){
|
|
85578
|
-
$td1.addClass("spacer context-menu").html("√");
|
|
85579
|
-
}else{
|
|
85580
|
-
$td1.addClass("spacer context-menu");
|
|
85581
|
-
}
|
|
85582
|
-
|
|
85583
|
-
var $td2 = $("<td />");
|
|
85584
|
-
$td2.addClass("text").html(list[i].text);
|
|
85585
|
-
|
|
85586
|
-
var $td3 = $("<td />");
|
|
85587
|
-
$td3.addClass("right shortcut");
|
|
85588
|
-
|
|
85589
|
-
var $td4 = $("<td />");
|
|
85590
|
-
$td4.addClass(typeof list[i].children != "undefined" ? "submenu-arrow" : "context-menu spacer");
|
|
85591
|
-
|
|
85592
|
-
$tr.append($td1).append($td2).append($td3).append($td4);
|
|
85593
|
-
|
|
85594
|
-
result.push($tr);
|
|
85595
|
-
}
|
|
85596
|
-
return result;
|
|
85597
|
-
}
|
|
85598
|
-
|
|
85599
|
-
this.Show=function (obj) {
|
|
85600
|
-
var _self = this;
|
|
85601
|
-
$.extend(_self.option, obj);
|
|
85602
|
-
|
|
85603
|
-
if (!_self.ID) _self.Create(); //判断是否重复创建
|
|
85604
|
-
else _self.Update(); //更新菜单状态
|
|
85605
|
-
|
|
85606
|
-
var $topMenu = $("#topMenu_"+_self.ID),
|
|
85607
|
-
topWidth = $topMenu.outerWidth(),
|
|
85608
|
-
topHeight = $topMenu.outerHeight();
|
|
85609
|
-
|
|
85610
|
-
var x = _self.option.x,
|
|
85611
|
-
y = _self.option.y;
|
|
85612
|
-
|
|
85613
|
-
if (topWidth > _self.option.position.X + _self.option.position.W- x) //超过了右边距
|
|
85614
|
-
x = x - topWidth;
|
|
85615
|
-
|
|
85616
|
-
if (topHeight > _self.option.position.Y +_self.option.position.H - y)//超过了下边距
|
|
85617
|
-
y = y - topHeight;
|
|
85618
|
-
|
|
85619
|
-
$topMenu.hide();
|
|
85620
|
-
$topMenu.css({ position:"absolute",left: x + "px", top: y + "px" }).show();
|
|
85621
|
-
|
|
85622
|
-
this.isInit = true;
|
|
85623
|
-
}
|
|
85624
|
-
|
|
85625
|
-
this.Hide=function () {
|
|
85626
|
-
var _self = this;
|
|
85627
|
-
if (typeof($)=="undefined") return;
|
|
85628
|
-
$("#topMenu_" + _self.ID).hide();
|
|
85629
|
-
$("[id^='childMenu_" + _self.ID + "']").hide();
|
|
85630
|
-
}
|
|
85631
|
-
|
|
85632
|
-
this.BindEvent=function () {
|
|
85633
|
-
var _self = this;
|
|
85634
|
-
var $childMenu = $("[id^='childMenu_" + _self.ID + "']");
|
|
85635
|
-
|
|
85636
|
-
$("#topTable_" + _self.ID).find("tr").mouseenter(function () {
|
|
85637
|
-
var $this = $(this),
|
|
85638
|
-
index = $this.index(),
|
|
85639
|
-
$topMenu = $("#topMenu_" + _self.ID),
|
|
85640
|
-
$child = $("#childMenu_" + _self.ID + index),
|
|
85641
|
-
trWidth = $this.outerWidth(),
|
|
85642
|
-
trHeight = $this.outerHeight();
|
|
85643
|
-
|
|
85644
|
-
var left = $topMenu.position().left + trWidth + 1;
|
|
85645
|
-
var top = $topMenu.position().top + (trHeight * index);
|
|
85646
|
-
|
|
85647
|
-
if (trWidth > _self.option.position.X + _self.option.position.W - left) //超过了右边距
|
|
85648
|
-
left = left - trWidth - $topMenu.outerWidth() - 2;
|
|
85649
|
-
|
|
85650
|
-
if ($child.outerHeight() > _self.option.position.Y +_self.option.position.H - top)//超过了下边距
|
|
85651
|
-
top = $topMenu.position().top + $topMenu.outerHeight() - $child.outerHeight();
|
|
85652
|
-
|
|
85653
|
-
$childMenu.hide();
|
|
85654
|
-
$child.css({ left: left + "px", top: top + "px" }).show();
|
|
85655
|
-
}).mouseleave(function () {
|
|
85656
|
-
var index = $(this).index();
|
|
85657
|
-
setTimeout(function () {
|
|
85658
|
-
if ($("#childMenu_" + _self.ID + index).attr("data-isShow") != 1) {
|
|
85659
|
-
$("#childMenu_" + _self.ID + index).hide();
|
|
85660
|
-
}
|
|
85661
|
-
}, 10)
|
|
85662
|
-
|
|
85663
|
-
}).click(function () {
|
|
85664
|
-
var $this = $(this);
|
|
85665
|
-
var index = $this.index();
|
|
85666
|
-
|
|
85667
|
-
if ($.type(_self.option.data[index].click) == "function") {
|
|
85668
|
-
_self.option.data[index].click(_self.option.returnData);
|
|
85669
|
-
$this.hide();
|
|
85670
|
-
}
|
|
85671
|
-
}).contextmenu(function()
|
|
85672
|
-
{
|
|
85673
|
-
return false; //屏蔽系统右键菜单
|
|
85674
|
-
});
|
|
85675
|
-
|
|
85676
|
-
|
|
85677
|
-
$childMenu.mouseenter(function () {
|
|
85678
|
-
$(this).attr("data-isShow", "1");
|
|
85679
|
-
}).mouseleave(function () {
|
|
85680
|
-
$(this).attr("data-isShow", "0");
|
|
85681
|
-
}).contextmenu(function()
|
|
85682
|
-
{
|
|
85683
|
-
return false; //屏蔽系统右键菜单
|
|
85684
|
-
});
|
|
85685
|
-
|
|
85686
|
-
$childMenu.find("tr").click(function () {
|
|
85687
|
-
var $this = $(this);
|
|
85688
|
-
var divIndex = parseInt($this.closest("div").attr("data-index"));
|
|
85689
|
-
var trIndex = $this.index();
|
|
85690
|
-
|
|
85691
|
-
if ($.type(_self.option.data[divIndex].children[trIndex].click) == "function") {
|
|
85692
|
-
_self.option.data[divIndex].children[trIndex].click(_self.option.windowIndex || 1);
|
|
85693
|
-
$childMenu.hide();
|
|
85694
|
-
}
|
|
85695
|
-
});
|
|
85696
|
-
}
|
|
85697
|
-
|
|
85698
|
-
this.GetPeriod=function (chart)
|
|
85699
|
-
{
|
|
85700
|
-
var data=
|
|
85701
|
-
[
|
|
85702
|
-
{
|
|
85703
|
-
text: "日线", Value:0,
|
|
85704
|
-
click: function () { chart.ChangePeriod(0); }
|
|
85705
|
-
},
|
|
85706
|
-
{
|
|
85707
|
-
text: "周线",Value:1,
|
|
85708
|
-
click: function () { chart.ChangePeriod(1); }
|
|
85709
|
-
},
|
|
85710
|
-
{
|
|
85711
|
-
text: "双周线",Value:21,
|
|
85712
|
-
click: function () { chart.ChangePeriod(21); }
|
|
85713
|
-
},
|
|
85714
|
-
{
|
|
85715
|
-
text: "月线",Value:2,
|
|
85716
|
-
click: function () { chart.ChangePeriod(2); }
|
|
85717
|
-
},
|
|
85718
|
-
{
|
|
85719
|
-
text: "季线",Value:9,
|
|
85720
|
-
click: function () { chart.ChangePeriod(9); }
|
|
85721
|
-
},
|
|
85722
|
-
{
|
|
85723
|
-
text: "半年",Value:22,
|
|
85724
|
-
click: function () { chart.ChangePeriod(22); }
|
|
85725
|
-
},
|
|
85726
|
-
{
|
|
85727
|
-
text: "年线",Value:3,
|
|
85728
|
-
click: function () { chart.ChangePeriod(3); }
|
|
85729
|
-
},
|
|
85730
|
-
{
|
|
85731
|
-
text: "1分",Value:4,
|
|
85732
|
-
click: function () { chart.ChangePeriod(4); }
|
|
85733
|
-
},
|
|
85734
|
-
{
|
|
85735
|
-
text: "5分",Value:5,
|
|
85736
|
-
click: function () { chart.ChangePeriod(5); }
|
|
85737
|
-
},
|
|
85738
|
-
{
|
|
85739
|
-
text: "15分",Value:6,
|
|
85740
|
-
click: function () { chart.ChangePeriod(6); }
|
|
85741
|
-
},
|
|
85742
|
-
{
|
|
85743
|
-
text: "30分",Value:7,
|
|
85744
|
-
click: function () { chart.ChangePeriod(7); }
|
|
85745
|
-
},
|
|
85746
|
-
{
|
|
85747
|
-
text: "60分",Value:8,
|
|
85748
|
-
click: function () { chart.ChangePeriod(8); }
|
|
85749
|
-
},
|
|
85750
|
-
{
|
|
85751
|
-
text: "2小时",Value:11,
|
|
85752
|
-
click: function () { chart.ChangePeriod(11); }
|
|
85753
|
-
},
|
|
85754
|
-
{
|
|
85755
|
-
text: "4小时",Value:12,
|
|
85756
|
-
click: function () { chart.ChangePeriod(12); }
|
|
85757
|
-
},
|
|
85758
|
-
{
|
|
85759
|
-
text: "分笔",Value:10,
|
|
85760
|
-
click: function () { chart.ChangePeriod(10); }
|
|
85761
|
-
},
|
|
85762
|
-
{
|
|
85763
|
-
text: "自定义周期:3分钟",Value:20003,
|
|
85764
|
-
click: function () { chart.ChangePeriod(20003); }
|
|
85765
|
-
},
|
|
85766
|
-
{
|
|
85767
|
-
text: "自定义周期:35分钟",Value:20035,
|
|
85768
|
-
click: function () { chart.ChangePeriod(20035); }
|
|
85769
|
-
},
|
|
85770
|
-
{
|
|
85771
|
-
text: "自定义周期:8日",Value:40008,
|
|
85772
|
-
click: function () { chart.ChangePeriod(40008); }
|
|
85773
|
-
}
|
|
85774
|
-
];
|
|
85775
|
-
|
|
85776
|
-
for(var i in data)
|
|
85777
|
-
{
|
|
85778
|
-
var item=data[i];
|
|
85779
|
-
if (item.Value==chart.Period)
|
|
85780
|
-
{
|
|
85781
|
-
item.selected=true;
|
|
85782
|
-
break;
|
|
85783
|
-
}
|
|
85784
|
-
}
|
|
85785
|
-
|
|
85786
|
-
return data;
|
|
85787
|
-
}
|
|
85788
|
-
|
|
85789
|
-
this.GetRight=function(chart)
|
|
85790
|
-
{
|
|
85791
|
-
var data=
|
|
85792
|
-
[
|
|
85793
|
-
{
|
|
85794
|
-
text: "不复权",
|
|
85795
|
-
click: function () { chart.ChangeRight(0); }
|
|
85796
|
-
},
|
|
85797
|
-
{
|
|
85798
|
-
text: "前复权",
|
|
85799
|
-
click: function () { chart.ChangeRight(1); }
|
|
85800
|
-
},
|
|
85801
|
-
{
|
|
85802
|
-
text: "后复权",
|
|
85803
|
-
click: function () { chart.ChangeRight(2); }
|
|
85804
|
-
}
|
|
85805
|
-
];
|
|
85806
|
-
|
|
85807
|
-
if (chart.Right>=0 && chart.Right<data.length) data[chart.Right].selected=true;
|
|
85808
|
-
|
|
85809
|
-
return data;
|
|
85810
|
-
}
|
|
85811
|
-
|
|
85812
|
-
//指标
|
|
85813
|
-
this.GetIndex=function (chart)
|
|
85814
|
-
{
|
|
85815
|
-
return [{
|
|
85816
|
-
text: "均线",
|
|
85817
|
-
click: function (windowIndex) {
|
|
85818
|
-
chart.ChangeIndex(windowIndex, '均线')
|
|
85819
|
-
}
|
|
85820
|
-
}, {
|
|
85821
|
-
text: "BOLL",
|
|
85822
|
-
click: function (windowIndex) {
|
|
85823
|
-
chart.ChangeIndex(windowIndex, 'BOLL')
|
|
85824
|
-
},
|
|
85825
|
-
isBorder:true
|
|
85826
|
-
}, {
|
|
85827
|
-
text: "MACD",
|
|
85828
|
-
click: function (windowIndex) {
|
|
85829
|
-
chart.ChangeIndex(windowIndex, 'MACD')
|
|
85830
|
-
}
|
|
85831
|
-
}, {
|
|
85832
|
-
text: "KDJ",
|
|
85833
|
-
click: function (windowIndex) {
|
|
85834
|
-
chart.ChangeIndex(windowIndex, 'KDJ')
|
|
85835
|
-
}
|
|
85836
|
-
}, {
|
|
85837
|
-
text: "VOL",
|
|
85838
|
-
click: function (windowIndex) {
|
|
85839
|
-
chart.ChangeIndex(windowIndex, 'VOL')
|
|
85840
|
-
}
|
|
85841
|
-
}, {
|
|
85842
|
-
text: "RSI",
|
|
85843
|
-
click: function (windowIndex) {
|
|
85844
|
-
chart.ChangeIndex(windowIndex, 'RSI')
|
|
85845
|
-
}
|
|
85846
|
-
}, {
|
|
85847
|
-
text: "BRAR",
|
|
85848
|
-
click: function (windowIndex) {
|
|
85849
|
-
chart.ChangeIndex(windowIndex, 'BRAR')
|
|
85850
|
-
}
|
|
85851
|
-
}, {
|
|
85852
|
-
text: "WR",
|
|
85853
|
-
click: function (windowIndex) {
|
|
85854
|
-
chart.ChangeIndex(windowIndex, 'WR')
|
|
85855
|
-
}
|
|
85856
|
-
}, {
|
|
85857
|
-
text: "BIAS",
|
|
85858
|
-
click: function (windowIndex) {
|
|
85859
|
-
chart.ChangeIndex(windowIndex, 'BIAS')
|
|
85860
|
-
}
|
|
85861
|
-
}, {
|
|
85862
|
-
text: "OBV",
|
|
85863
|
-
click: function (windowIndex) {
|
|
85864
|
-
chart.ChangeIndex(windowIndex, 'OBV')
|
|
85865
|
-
}
|
|
85866
|
-
}, {
|
|
85867
|
-
text: "DMI",
|
|
85868
|
-
click: function (windowIndex) {
|
|
85869
|
-
chart.ChangeIndex(windowIndex, 'DMI')
|
|
85870
|
-
}
|
|
85871
|
-
}, {
|
|
85872
|
-
text: "CR",
|
|
85873
|
-
click: function (windowIndex) {
|
|
85874
|
-
chart.ChangeIndex(windowIndex, 'CR')
|
|
85875
|
-
}
|
|
85876
|
-
}, {
|
|
85877
|
-
text: "PSY",
|
|
85878
|
-
click: function (windowIndex) {
|
|
85879
|
-
chart.ChangeIndex(windowIndex, 'PSY')
|
|
85880
|
-
}
|
|
85881
|
-
}, {
|
|
85882
|
-
text: "CCI",
|
|
85883
|
-
click: function (windowIndex) {
|
|
85884
|
-
chart.ChangeIndex(windowIndex, 'CCI')
|
|
85885
|
-
}
|
|
85886
|
-
}, {
|
|
85887
|
-
text: "DMA",
|
|
85888
|
-
click: function (windowIndex) {
|
|
85889
|
-
chart.ChangeIndex(windowIndex, 'DMA')
|
|
85890
|
-
}
|
|
85891
|
-
}, {
|
|
85892
|
-
text: "TRIX",
|
|
85893
|
-
click: function (windowIndex) {
|
|
85894
|
-
chart.ChangeIndex(windowIndex, 'TRIX')
|
|
85895
|
-
}
|
|
85896
|
-
}, {
|
|
85897
|
-
text: "VR",
|
|
85898
|
-
click: function (windowIndex) {
|
|
85899
|
-
chart.ChangeIndex(windowIndex, 'VR')
|
|
85900
|
-
}
|
|
85901
|
-
}, {
|
|
85902
|
-
text: "EMV",
|
|
85903
|
-
click: function (windowIndex) {
|
|
85904
|
-
chart.ChangeIndex(windowIndex, 'EMV')
|
|
85905
|
-
}
|
|
85906
|
-
}, {
|
|
85907
|
-
text: "ROC",
|
|
85908
|
-
click: function (windowIndex) {
|
|
85909
|
-
chart.ChangeIndex(windowIndex, 'ROC')
|
|
85910
|
-
}
|
|
85911
|
-
}, {
|
|
85912
|
-
text: "MIM",
|
|
85913
|
-
click: function (windowIndex) {
|
|
85914
|
-
chart.ChangeIndex(windowIndex, 'MIM')
|
|
85915
|
-
}
|
|
85916
|
-
}, {
|
|
85917
|
-
text: "FSL",
|
|
85918
|
-
click: function (windowIndex) {
|
|
85919
|
-
chart.ChangeIndex(windowIndex, 'FSL')
|
|
85920
|
-
}
|
|
85921
|
-
} ]
|
|
85922
|
-
}
|
|
85923
|
-
|
|
85924
|
-
//五彩K线
|
|
85925
|
-
this.GetColorIndex=function (chart)
|
|
85926
|
-
{
|
|
85927
|
-
var data=
|
|
85928
|
-
[
|
|
85929
|
-
{
|
|
85930
|
-
text: "十字星",
|
|
85931
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-十字星') }
|
|
85932
|
-
},
|
|
85933
|
-
{
|
|
85934
|
-
text: "早晨之星",
|
|
85935
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-早晨之星') },
|
|
85936
|
-
},
|
|
85937
|
-
{
|
|
85938
|
-
text: "垂死十字",
|
|
85939
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-垂死十字') },
|
|
85940
|
-
},
|
|
85941
|
-
{
|
|
85942
|
-
text: "三只乌鸦",
|
|
85943
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-三只乌鸦') }
|
|
85944
|
-
},
|
|
85945
|
-
{
|
|
85946
|
-
text: "光脚阴线",
|
|
85947
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-光脚阴线') }
|
|
85948
|
-
},
|
|
85949
|
-
{
|
|
85950
|
-
text: "黄昏之星",
|
|
85951
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-黄昏之星') }
|
|
85952
|
-
}
|
|
85953
|
-
];
|
|
85954
|
-
|
|
85955
|
-
if (chart.ColorIndex)
|
|
85956
|
-
{
|
|
85957
|
-
data[data.length-1].isBorder=true;
|
|
85958
|
-
data.push(
|
|
85959
|
-
{
|
|
85960
|
-
text: "删除五彩K线",
|
|
85961
|
-
click: function (windowIndex) { chart.CancelInstructionIndex() }
|
|
85962
|
-
});
|
|
85963
|
-
}
|
|
85964
|
-
|
|
85965
|
-
return data;
|
|
85966
|
-
}
|
|
85967
|
-
|
|
85968
|
-
//专家系统
|
|
85969
|
-
this.GetTradeIndex=function(chart)
|
|
85970
|
-
{
|
|
85971
|
-
var data=
|
|
85972
|
-
[
|
|
85973
|
-
{
|
|
85974
|
-
text: "BIAS",
|
|
85975
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-BIAS') }
|
|
85976
|
-
},
|
|
85977
|
-
{
|
|
85978
|
-
text: "CCI",
|
|
85979
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-CCI') }
|
|
85980
|
-
},
|
|
85981
|
-
{
|
|
85982
|
-
text: "DMI",
|
|
85983
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-DMI') }
|
|
85984
|
-
},
|
|
85985
|
-
{
|
|
85986
|
-
text: "KD",
|
|
85987
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-KD') }
|
|
85988
|
-
},
|
|
85989
|
-
{
|
|
85990
|
-
text: "BOLL",
|
|
85991
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-BOLL') }
|
|
85992
|
-
},
|
|
85993
|
-
{
|
|
85994
|
-
text: "KDJ",
|
|
85995
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-KDJ') }
|
|
85996
|
-
}
|
|
85997
|
-
];
|
|
85998
|
-
|
|
85999
|
-
if (chart.TradeIndex)
|
|
86000
|
-
{
|
|
86001
|
-
data[data.length-1].isBorder=true;
|
|
86002
|
-
data.push(
|
|
86003
|
-
{
|
|
86004
|
-
text: "删除专家系统",
|
|
86005
|
-
click: function (windowIndex) { chart.CancelInstructionIndex()}
|
|
86006
|
-
});
|
|
86007
|
-
}
|
|
86008
|
-
return data;
|
|
86009
|
-
}
|
|
86010
|
-
|
|
86011
|
-
//叠加
|
|
86012
|
-
this.GetOverlay=function (chart)
|
|
86013
|
-
{
|
|
86014
|
-
var data=
|
|
86015
|
-
[
|
|
86016
|
-
{
|
|
86017
|
-
text: "上证指数",
|
|
86018
|
-
click: function () { chart.OverlaySymbol('000001.sh'); }
|
|
86019
|
-
},
|
|
86020
|
-
{
|
|
86021
|
-
text: "深证成指",
|
|
86022
|
-
click: function () { chart.OverlaySymbol('399001.sz'); }
|
|
86023
|
-
},
|
|
86024
|
-
{
|
|
86025
|
-
text: "中小板指",
|
|
86026
|
-
click: function () { chart.OverlaySymbol('399005.sz'); }
|
|
86027
|
-
},
|
|
86028
|
-
{
|
|
86029
|
-
text: "创业板指",
|
|
86030
|
-
click: function () { chart.OverlaySymbol('399006.sz'); }
|
|
86031
|
-
},
|
|
86032
|
-
{
|
|
86033
|
-
text: "沪深300",
|
|
86034
|
-
click: function () { chart.OverlaySymbol('000300.sh'); },
|
|
86035
|
-
}
|
|
86036
|
-
];
|
|
86037
|
-
|
|
86038
|
-
for(var i in chart.OverlayChartPaint)
|
|
86039
|
-
{
|
|
86040
|
-
var item=chart.OverlayChartPaint[i];
|
|
86041
|
-
var symbol=item.Symbol;
|
|
86042
|
-
const mapSymbol=new Map([['000001.sh',0],['399001.sz',1],['399005.sz',2],['399006.sz',3],['000300.sh',4]]);
|
|
86043
|
-
if (mapSymbol.has(symbol))
|
|
86044
|
-
{
|
|
86045
|
-
var menuItem=data[mapSymbol.get(symbol)];
|
|
86046
|
-
let delSymbol=symbol;
|
|
86047
|
-
menuItem.selected=true;
|
|
86048
|
-
menuItem.click=function () { chart.DeleteOverlaySymbol(delSymbol); };
|
|
86049
|
-
}
|
|
86050
|
-
}
|
|
86051
|
-
|
|
86052
|
-
if (chart.OverlayChartPaint && chart.OverlayChartPaint.length>0)
|
|
86053
|
-
{
|
|
86054
|
-
data[data.length-1].isBorder=true;
|
|
86055
|
-
data.push(
|
|
86056
|
-
{
|
|
86057
|
-
text: "取消叠加",
|
|
86058
|
-
click: function () { chart.ClearOverlaySymbol();}
|
|
86059
|
-
}
|
|
86060
|
-
);
|
|
86061
|
-
}
|
|
86062
|
-
|
|
86063
|
-
return data;
|
|
86064
|
-
}
|
|
86065
|
-
|
|
86066
|
-
//K线类型设置
|
|
86067
|
-
this.GetKLineType=function(chart)
|
|
86068
|
-
{
|
|
86069
|
-
var data=
|
|
86070
|
-
[
|
|
86071
|
-
{
|
|
86072
|
-
text: "K线(空心阳线)",
|
|
86073
|
-
click: function () { chart.ChangeKLineDrawType(3);}
|
|
86074
|
-
},
|
|
86075
|
-
{
|
|
86076
|
-
text: "K线(实心阳线)",
|
|
86077
|
-
click: function () { chart.ChangeKLineDrawType(0); }
|
|
86078
|
-
},
|
|
86079
|
-
{
|
|
86080
|
-
text: "美国线",
|
|
86081
|
-
click: function () { chart.ChangeKLineDrawType(2, true ,{ IsThinAKBar:false }); }
|
|
86082
|
-
},
|
|
86083
|
-
{
|
|
86084
|
-
text: "收盘线",
|
|
86085
|
-
click: function () { chart.ChangeKLineDrawType(1); }
|
|
86086
|
-
},
|
|
86087
|
-
{
|
|
86088
|
-
text: "收盘面积",
|
|
86089
|
-
click: function () { chart.ChangeKLineDrawType(4); }
|
|
86090
|
-
},
|
|
86091
|
-
{
|
|
86092
|
-
text: "K线(空心阳线阴线)",
|
|
86093
|
-
click: function () { chart.ChangeKLineDrawType(6);}
|
|
86094
|
-
},
|
|
86095
|
-
{
|
|
86096
|
-
text: "Heikin Ashi",
|
|
86097
|
-
click: function () { chart.ChangeKLineDrawType(11);}
|
|
86098
|
-
},
|
|
86099
|
-
{
|
|
86100
|
-
text: "Line Break",
|
|
86101
|
-
click: function () { chart.ChangeKLineDrawType(12);}
|
|
86102
|
-
},
|
|
86103
|
-
{
|
|
86104
|
-
text: "High-low",
|
|
86105
|
-
click: function () { chart.ChangeKLineDrawType(13);}
|
|
86106
|
-
},
|
|
86107
|
-
{
|
|
86108
|
-
text: "HLC Area",
|
|
86109
|
-
click: function () { chart.ChangeKLineDrawType(15);}
|
|
86110
|
-
}
|
|
86111
|
-
];
|
|
86112
|
-
|
|
86113
|
-
switch(chart.KLineDrawType)
|
|
86114
|
-
{
|
|
86115
|
-
case 0:
|
|
86116
|
-
data[1].selected=true;
|
|
86117
|
-
break;
|
|
86118
|
-
case 1:
|
|
86119
|
-
data[3].selected=true;
|
|
86120
|
-
break;
|
|
86121
|
-
case 2:
|
|
86122
|
-
data[2].selected=true;
|
|
86123
|
-
break;
|
|
86124
|
-
case 3:
|
|
86125
|
-
data[0].selected=true;
|
|
86126
|
-
break;
|
|
86127
|
-
case 4:
|
|
86128
|
-
data[4].selected=true;
|
|
86129
|
-
break;
|
|
86130
|
-
case 6:
|
|
86131
|
-
data[5].selected=true;
|
|
86132
|
-
break;
|
|
86133
|
-
case 11:
|
|
86134
|
-
data[6].selected=true;
|
|
86135
|
-
break;
|
|
86136
|
-
case 12:
|
|
86137
|
-
data[7].selected=true;
|
|
86138
|
-
break;
|
|
86139
|
-
case 13:
|
|
86140
|
-
data[8].selected=true;
|
|
86141
|
-
break;
|
|
86142
|
-
case 15:
|
|
86143
|
-
data[9].selected=true;
|
|
86144
|
-
break;
|
|
86145
|
-
}
|
|
86146
|
-
return data;
|
|
86147
|
-
}
|
|
86148
|
-
|
|
86149
|
-
//指标窗口个数
|
|
86150
|
-
this.GetIndexWindowCount=function(chart)
|
|
86151
|
-
{
|
|
86152
|
-
var data=
|
|
86153
|
-
[
|
|
86154
|
-
{
|
|
86155
|
-
text: "1个窗口",
|
|
86156
|
-
click: function () { chart.ChangeIndexWindowCount(1); }
|
|
86157
|
-
},
|
|
86158
|
-
{
|
|
86159
|
-
text: "2个窗口",
|
|
86160
|
-
click: function () { chart.ChangeIndexWindowCount(2); }
|
|
86161
|
-
},
|
|
86162
|
-
{
|
|
86163
|
-
text: "3个窗口",
|
|
86164
|
-
click: function () { chart.ChangeIndexWindowCount(3); }
|
|
86165
|
-
},
|
|
86166
|
-
{
|
|
86167
|
-
text: "4个窗口",
|
|
86168
|
-
click: function () { chart.ChangeIndexWindowCount(4); }
|
|
86169
|
-
},
|
|
86170
|
-
{
|
|
86171
|
-
text: "5个窗口",
|
|
86172
|
-
click: function () { chart.ChangeIndexWindowCount(5); }
|
|
86173
|
-
}
|
|
86174
|
-
];
|
|
86175
|
-
|
|
86176
|
-
var count=chart.Frame.SubFrame.length;
|
|
86177
|
-
if ((count-1)>=0 && (count-1)<data.length) data[count-1].selected=true; //选中
|
|
86178
|
-
|
|
86179
|
-
return data;
|
|
86180
|
-
}
|
|
86181
|
-
|
|
86182
|
-
//坐标类型
|
|
86183
|
-
this.GetCoordinateType=function(chart)
|
|
86184
|
-
{
|
|
86185
|
-
var data=
|
|
86186
|
-
[
|
|
86187
|
-
{
|
|
86188
|
-
text: "普通坐标",
|
|
86189
|
-
click: function () { chart.ChangeCoordinateType( {Type:0} ); }
|
|
86190
|
-
},
|
|
86191
|
-
{
|
|
86192
|
-
text: "百分比坐标",
|
|
86193
|
-
click: function () { chart.ChangeCoordinateType( {Type:1} ); }
|
|
86194
|
-
},
|
|
86195
|
-
{
|
|
86196
|
-
text: "反转坐标",
|
|
86197
|
-
click: function () { chart.ChangeCoordinateType( { IsReverse:true } ); }
|
|
86198
|
-
},
|
|
86199
|
-
{
|
|
86200
|
-
text: "对数坐标",
|
|
86201
|
-
click: function () { chart.ChangeCoordinateType( {Type:2} ); }
|
|
86202
|
-
},
|
|
86203
|
-
{
|
|
86204
|
-
text: "等比坐标",
|
|
86205
|
-
click: function () { chart.ChangeCoordinateType( {Type:3} ); }
|
|
86206
|
-
},
|
|
86207
|
-
{
|
|
86208
|
-
text: "等分坐标",
|
|
86209
|
-
click: function () { chart.ChangeCoordinateType( {Type:4} ); }
|
|
86210
|
-
},
|
|
86211
|
-
{
|
|
86212
|
-
text: "黄金分割",
|
|
86213
|
-
click: function () { chart.ChangeCoordinateType( {Type:5} ); }
|
|
86214
|
-
}
|
|
86215
|
-
];
|
|
86216
|
-
|
|
86217
|
-
if (chart.Frame && chart.Frame.SubFrame && chart.Frame.SubFrame.length>0)
|
|
86218
|
-
{
|
|
86219
|
-
if (chart.Frame.SubFrame[0].Frame.CoordinateType==1)
|
|
86220
|
-
{
|
|
86221
|
-
data[2].selected=true;
|
|
86222
|
-
data[2].click=function() { chart.ChangeCoordinateType( { IsReverse:false } ); } //取消反转
|
|
86223
|
-
}
|
|
86224
|
-
|
|
86225
|
-
if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==1) data[1].selected=true; //百分比
|
|
86226
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==0) data[0].selected=true; //普通坐标
|
|
86227
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==2) data[3].selected=true; //对数
|
|
86228
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==3) data[4].selected=true; //等比坐标
|
|
86229
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==4) data[5].selected=true; //等分坐标
|
|
86230
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==5) data[6].selected=true; //黄金分割
|
|
86231
|
-
}
|
|
86232
|
-
|
|
86233
|
-
return data;
|
|
86234
|
-
}
|
|
86235
|
-
|
|
86236
|
-
//拖拽模式
|
|
86237
|
-
this.GetDragModeType=function(chart)
|
|
86238
|
-
{
|
|
86239
|
-
var data=
|
|
86240
|
-
[
|
|
86241
|
-
{
|
|
86242
|
-
text: "禁止拖拽",
|
|
86243
|
-
click: function () { chart.DragMode=0; }
|
|
86244
|
-
},
|
|
86245
|
-
{
|
|
86246
|
-
text: "启动拖拽",
|
|
86247
|
-
click: function () { chart.DragMode=1; }
|
|
86248
|
-
},
|
|
86249
|
-
{
|
|
86250
|
-
text: "区间选择",
|
|
86251
|
-
click: function () { chart.DragMode=2; }
|
|
86252
|
-
}
|
|
86253
|
-
];
|
|
86254
|
-
|
|
86255
|
-
if (chart.DragMode>=0 && chart.DragMode<data.length) data[chart.DragMode].selected=true; //选中
|
|
86256
|
-
|
|
86257
|
-
return data;
|
|
86258
|
-
}
|
|
86259
|
-
|
|
86260
|
-
//工具
|
|
86261
|
-
this.GetTools=function(chart)
|
|
86262
|
-
{
|
|
86263
|
-
var data=[];
|
|
86264
|
-
var drawTools=chart.GetExtendChartByClassName('DrawToolsButton');
|
|
86265
|
-
if (drawTools)
|
|
86266
|
-
{
|
|
86267
|
-
data.push(
|
|
86268
|
-
{
|
|
86269
|
-
text: "关闭画图工具",
|
|
86270
|
-
click: function ()
|
|
86271
|
-
{
|
|
86272
|
-
var toolsWidth=drawTools.Chart.Width;
|
|
86273
|
-
var toolsIndex=parseInt(drawTools.Index);
|
|
86274
|
-
for(var i=toolsIndex+1; i<chart.ExtendChartPaint.length; ++i) //在画图工具后面创建的需要减去工具的宽度
|
|
86275
|
-
{
|
|
86276
|
-
var item=chart.ExtendChartPaint[i];
|
|
86277
|
-
if (item.ClassName=='StockChip')
|
|
86278
|
-
{
|
|
86279
|
-
item.Left-=toolsWidth;
|
|
86280
|
-
}
|
|
86281
|
-
}
|
|
86282
|
-
chart.DeleteExtendChart(drawTools);
|
|
86283
|
-
chart.Frame.ChartBorder.Right-=toolsWidth;
|
|
86284
|
-
chart.SetSizeChange(true);
|
|
86285
|
-
chart.Draw();
|
|
86286
|
-
}
|
|
86287
|
-
}
|
|
86288
|
-
);
|
|
86289
|
-
}
|
|
86290
|
-
else
|
|
86291
|
-
{
|
|
86292
|
-
data.push(
|
|
86293
|
-
{
|
|
86294
|
-
text: "画图工具",
|
|
86295
|
-
click: function () {
|
|
86296
|
-
var option={Name:'画图工具', Top:chart.Frame.ChartBorder.Top };
|
|
86297
|
-
var extendChart=chart.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
86298
|
-
chart.SetSizeChange(true);
|
|
86299
|
-
chart.Draw();
|
|
86300
|
-
}
|
|
86301
|
-
}
|
|
86302
|
-
);
|
|
86303
|
-
}
|
|
86304
|
-
|
|
86305
|
-
var StockChip=chart.GetExtendChartByClassName('StockChip');
|
|
86306
|
-
if (StockChip)
|
|
86307
|
-
{
|
|
86308
|
-
data.push(
|
|
86309
|
-
{
|
|
86310
|
-
text: "关闭移动筹码",
|
|
86311
|
-
click: function ()
|
|
86312
|
-
{
|
|
86313
|
-
var chipWidth=StockChip.Chart.Width;
|
|
86314
|
-
var chipIndex=parseInt(StockChip.Index);
|
|
86315
|
-
for(var i=chipIndex+1; i<chart.ExtendChartPaint.length; ++i) //在筹码后面创建的需要筹码的宽度
|
|
86316
|
-
{
|
|
86317
|
-
var item=chart.ExtendChartPaint[i];
|
|
86318
|
-
if (item.ClassName=='DrawToolsButton')
|
|
86319
|
-
{
|
|
86320
|
-
item.Left-=chipWidth;
|
|
86321
|
-
}
|
|
86322
|
-
}
|
|
86323
|
-
chart.DeleteExtendChart(StockChip);
|
|
86324
|
-
chart.Frame.ChartBorder.Right-=chipWidth;
|
|
86325
|
-
chart.SetSizeChange(true);
|
|
86326
|
-
chart.Draw();
|
|
86327
|
-
}
|
|
86328
|
-
|
|
86329
|
-
}
|
|
86330
|
-
);
|
|
86331
|
-
}
|
|
86332
|
-
else
|
|
86333
|
-
{
|
|
86334
|
-
data.push(
|
|
86335
|
-
{
|
|
86336
|
-
text: "移动筹码",
|
|
86337
|
-
click: function () {
|
|
86338
|
-
var option={Name:'筹码分布', ShowType:1, Width:230 };
|
|
86339
|
-
var extendChart=chart.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
86340
|
-
chart.SetSizeChange(true);
|
|
86341
|
-
chart.Draw();
|
|
86342
|
-
}
|
|
86343
|
-
}
|
|
86344
|
-
);
|
|
86345
|
-
}
|
|
86346
|
-
|
|
86347
|
-
return data;
|
|
86348
|
-
}
|
|
86349
|
-
|
|
86350
|
-
//缺口提示
|
|
86351
|
-
this.GetPriceGap=function(chart)
|
|
86352
|
-
{
|
|
86353
|
-
var klineChart=chart.ChartPaint[0];
|
|
86354
|
-
var priceGap=klineChart.PriceGap;
|
|
86355
|
-
var data=
|
|
86356
|
-
[
|
|
86357
|
-
{
|
|
86358
|
-
text: "显示1个缺口",
|
|
86359
|
-
click: function () { chart.ChangePriceGap({ Enable:true, Count:1 }); }
|
|
86360
|
-
},
|
|
86361
|
-
{
|
|
86362
|
-
text: "显示2个缺口",
|
|
86363
|
-
click: function () { chart.ChangePriceGap({ Enable:true, Count:2 }); }
|
|
86364
|
-
},
|
|
86365
|
-
{
|
|
86366
|
-
text: "显示3个缺口",
|
|
86367
|
-
click: function () { chart.ChangePriceGap({ Enable:true, Count:3 }); }
|
|
86368
|
-
},
|
|
86369
|
-
{
|
|
86370
|
-
text: "隐藏缺口",
|
|
86371
|
-
click: function () { chart.ChangePriceGap({ Enable:false }); }
|
|
86372
|
-
}
|
|
86373
|
-
];
|
|
86374
|
-
|
|
86375
|
-
if (!priceGap.Enable || priceGap.Count<=0)
|
|
86376
|
-
{
|
|
86377
|
-
data[data.length-1].selected=true; //选中
|
|
86378
|
-
}
|
|
86379
|
-
else if (priceGap.Enable && priceGap.Count>0)
|
|
86380
|
-
{
|
|
86381
|
-
var index=priceGap.Count-1;
|
|
86382
|
-
if (index>data.length-2) index=data.length-2;
|
|
86383
|
-
data[index].selected=true; //选中
|
|
86384
|
-
}
|
|
86385
|
-
|
|
86386
|
-
return data;
|
|
86387
|
-
}
|
|
86388
|
-
|
|
86389
|
-
this.GetBGSplit=function(chart)
|
|
86390
|
-
{
|
|
86391
|
-
var data=
|
|
86392
|
-
[
|
|
86393
|
-
{
|
|
86394
|
-
text: "启用",
|
|
86395
|
-
click: function ()
|
|
86396
|
-
{
|
|
86397
|
-
chart.CreateExtendChart("SessionBreaksPaint", { });
|
|
86398
|
-
chart.Draw();
|
|
86399
|
-
}
|
|
86400
|
-
},
|
|
86401
|
-
{
|
|
86402
|
-
text: "关闭",
|
|
86403
|
-
click: function ()
|
|
86404
|
-
{
|
|
86405
|
-
var finder=chart.GetExtendChartByClassName("SessionBreaksPaint");
|
|
86406
|
-
if (finder)
|
|
86407
|
-
{
|
|
86408
|
-
chart.DeleteExtendChartByID(finder.Chart.ID);
|
|
86409
|
-
chart.Draw();
|
|
86410
|
-
}
|
|
86411
|
-
}
|
|
86412
|
-
},
|
|
86413
|
-
];
|
|
86414
|
-
|
|
86415
|
-
var finder=chart.GetExtendChartByClassName("SessionBreaksPaint");
|
|
86416
|
-
if (finder) data[0].selected=true;
|
|
86417
|
-
else data[1].selected=true;
|
|
86418
|
-
|
|
86419
|
-
return data;
|
|
86420
|
-
}
|
|
86421
|
-
|
|
86422
|
-
|
|
86423
|
-
this.GetKLineInfo=function(chart)
|
|
86424
|
-
{
|
|
86425
|
-
var setInfo=new Set();
|
|
86426
|
-
for(var i in chart.ChartInfo)
|
|
86427
|
-
{
|
|
86428
|
-
var item=chart.ChartInfo[i];
|
|
86429
|
-
setInfo.add(item.ClassName);
|
|
86430
|
-
}
|
|
86431
|
-
|
|
86432
|
-
var aryKLineInfo=["公告","业绩预告","调研","大宗交易","龙虎榜","互动易"]
|
|
86433
|
-
|
|
86434
|
-
var data=[];
|
|
86435
|
-
for(var i in aryKLineInfo)
|
|
86436
|
-
{
|
|
86437
|
-
var infoName=aryKLineInfo[i];
|
|
86438
|
-
var classInfo=JSKLineInfoMap.GetClassInfo(infoName);
|
|
86439
|
-
if (!classInfo) continue;
|
|
86440
|
-
|
|
86441
|
-
var item=this.CreateKlineInfoItem(infoName, setInfo.has(classInfo.ClassName), chart);
|
|
86442
|
-
data.push(item);
|
|
86443
|
-
}
|
|
86444
|
-
|
|
86445
|
-
if (chart.ChartInfo.length>0)
|
|
86446
|
-
{
|
|
86447
|
-
data[data.length-1].isBorder=true;
|
|
86448
|
-
var item={ text:'删除所有', click:function() { chart.ClearKLineInfo()} };
|
|
86449
|
-
data.push(item);
|
|
86450
|
-
|
|
86451
|
-
}
|
|
86452
|
-
|
|
86453
|
-
return data;
|
|
86454
|
-
}
|
|
86455
|
-
|
|
86456
|
-
this.CreateKlineInfoItem=function(infoName,bExist,chart)
|
|
86457
|
-
{
|
|
86458
|
-
var item=
|
|
86459
|
-
{
|
|
86460
|
-
text:infoName,
|
|
86461
|
-
selected:bExist
|
|
86462
|
-
}
|
|
86463
|
-
|
|
86464
|
-
if (bExist) item.click=function() { chart.DeleteKLineInfo(infoName) };
|
|
86465
|
-
else item.click=function() { chart.AddKLineInfo(infoName,true) }
|
|
86466
|
-
|
|
86467
|
-
return item;
|
|
86468
|
-
}
|
|
86469
|
-
|
|
86470
|
-
this.DoModal=function(event)
|
|
86471
|
-
{
|
|
86472
|
-
var chart=event.data.Chart;
|
|
86473
|
-
var rightMenu=chart.RightMenu;
|
|
86474
|
-
var x = event.offsetX;
|
|
86475
|
-
var y = event.offsetY;
|
|
86476
|
-
|
|
86477
|
-
var dataList=[{
|
|
86478
|
-
text: "分析周期",
|
|
86479
|
-
children: this.GetPeriod(chart)
|
|
86480
|
-
},
|
|
86481
|
-
{
|
|
86482
|
-
text: "复权处理",
|
|
86483
|
-
children: this.GetRight(chart)
|
|
86484
|
-
},
|
|
86485
|
-
{
|
|
86486
|
-
text: "指标切换",
|
|
86487
|
-
children: this.GetIndex(chart)
|
|
86488
|
-
},
|
|
86489
|
-
{
|
|
86490
|
-
text:"五彩K线",
|
|
86491
|
-
children: this.GetColorIndex(chart)
|
|
86492
|
-
},
|
|
86493
|
-
{
|
|
86494
|
-
text:'专家系统',
|
|
86495
|
-
children: this.GetTradeIndex(chart)
|
|
86496
|
-
},
|
|
86497
|
-
{
|
|
86498
|
-
text:'信息地雷',
|
|
86499
|
-
children: this.GetKLineInfo(chart)
|
|
86500
|
-
},
|
|
86501
|
-
{
|
|
86502
|
-
text:'缺口提示',
|
|
86503
|
-
children: this.GetPriceGap(chart)
|
|
86504
|
-
},
|
|
86505
|
-
{
|
|
86506
|
-
text: "叠加品种",
|
|
86507
|
-
children: this.GetOverlay(chart)
|
|
86508
|
-
},
|
|
86509
|
-
{
|
|
86510
|
-
text:'主图线型',
|
|
86511
|
-
children: this.GetKLineType(chart)
|
|
86512
|
-
},
|
|
86513
|
-
{
|
|
86514
|
-
text:"坐标类型",
|
|
86515
|
-
children:this.GetCoordinateType(chart)
|
|
86516
|
-
},
|
|
86517
|
-
{
|
|
86518
|
-
text:'指标窗口个数',
|
|
86519
|
-
children: this.GetIndexWindowCount(chart)
|
|
86520
|
-
},
|
|
86521
|
-
{
|
|
86522
|
-
text:'鼠标拖拽',
|
|
86523
|
-
children: this.GetDragModeType(chart)
|
|
86524
|
-
},
|
|
86525
|
-
{
|
|
86526
|
-
text:"工具",
|
|
86527
|
-
children:this.GetTools(chart)
|
|
86528
|
-
},
|
|
86529
|
-
{
|
|
86530
|
-
text:"背景分割",
|
|
86531
|
-
children:this.GetBGSplit(chart)
|
|
86532
|
-
}
|
|
86533
|
-
];
|
|
86534
|
-
|
|
86535
|
-
var upperSymbol=chart.Symbol.toUpperCase();
|
|
86536
|
-
if(MARKET_SUFFIX_NAME.IsSHSZIndex(chart.Symbol) || MARKET_SUFFIX_NAME.IsBIT(upperSymbol))
|
|
86537
|
-
{
|
|
86538
|
-
dataList.splice(1,1);
|
|
86539
|
-
}
|
|
86540
|
-
|
|
86541
|
-
var identify=event.data.FrameID;
|
|
86542
|
-
var overlayIndex=this.GetOverlayIndex(chart,identify);
|
|
86543
|
-
if (overlayIndex && overlayIndex.length>0)
|
|
86544
|
-
{
|
|
86545
|
-
var delOverlayIndexMenu={ text:'删除叠加指标', children:this.GetDeleteOverlayIndex(chart,overlayIndex) }
|
|
86546
|
-
dataList.splice(3,0,delOverlayIndexMenu);
|
|
86547
|
-
}
|
|
86548
|
-
|
|
86549
|
-
JSConsole.Chart.Log('[KLineRightMenu::DoModal]',identify);
|
|
86550
|
-
rightMenu.Show({
|
|
86551
|
-
windowIndex :identify,
|
|
86552
|
-
x:x+chart.UIElement.offsetLeft,
|
|
86553
|
-
y:y+chart.UIElement.offsetTop,
|
|
86554
|
-
position:chart.Frame.Position,
|
|
86555
|
-
data:dataList
|
|
86556
|
-
})
|
|
86557
|
-
|
|
86558
|
-
$(document).click(function () {
|
|
86559
|
-
rightMenu.Hide();
|
|
86560
|
-
});
|
|
86561
|
-
}
|
|
86562
|
-
|
|
86563
|
-
this.GetOverlayIndex=function(chart, windowsIndex)
|
|
86564
|
-
{
|
|
86565
|
-
if (windowsIndex>=chart.Frame.SubFrame.length || windowsIndex<0) return [];
|
|
86566
|
-
|
|
86567
|
-
var result=[];
|
|
86568
|
-
var item=chart.Frame.SubFrame[windowsIndex];
|
|
86569
|
-
for(var i in item.OverlayIndex)
|
|
86570
|
-
{
|
|
86571
|
-
var overlayItem=item.OverlayIndex[i];
|
|
86572
|
-
result.push({Name:overlayItem.Script.Name, Identify:overlayItem.Identify});
|
|
86573
|
-
}
|
|
86574
|
-
|
|
86575
|
-
return result;
|
|
86576
|
-
}
|
|
86577
|
-
|
|
86578
|
-
this.GetDeleteOverlayIndex=function(chart,overlayIndex)
|
|
86579
|
-
{
|
|
86580
|
-
var data=[];
|
|
86581
|
-
for(var i in overlayIndex)
|
|
86582
|
-
{
|
|
86583
|
-
let identify=overlayIndex[i].Identify;
|
|
86584
|
-
data.push({text:overlayIndex[i].Name, click:function()
|
|
86585
|
-
{
|
|
86586
|
-
chart.DeleteOverlayWindowsIndex(identify)
|
|
86587
|
-
}});
|
|
86588
|
-
}
|
|
86589
|
-
|
|
86590
|
-
return data;
|
|
86591
|
-
}
|
|
86592
|
-
}
|
|
86593
|
-
|
|
86594
|
-
//K线区间选择右键菜单
|
|
86595
|
-
function KLineSelectRightMenu(divElement)
|
|
86596
|
-
{
|
|
86597
|
-
this.newMethod=KLineRightMenu; //派生
|
|
86598
|
-
this.newMethod(divElement);
|
|
86599
|
-
delete this.newMethod;
|
|
86600
|
-
|
|
86601
|
-
this.DoModal=function(event)
|
|
86602
|
-
{
|
|
86603
|
-
var chart=event.data.Chart;
|
|
86604
|
-
var rightMenu=this;
|
|
86605
|
-
var x = event.data.X;
|
|
86606
|
-
var y = event.data.Y;
|
|
86607
|
-
|
|
86608
|
-
var dataList=
|
|
86609
|
-
[
|
|
86610
|
-
{
|
|
86611
|
-
text: "区间统计",
|
|
86612
|
-
click: function ()
|
|
86613
|
-
{
|
|
86614
|
-
JSConsole.Chart.Log('[KLineSelectRightMenu::click] 区间统计');
|
|
86615
|
-
rightMenu.Hide();
|
|
86616
|
-
var dialog=new KLineSelectRectDialog(divElement);
|
|
86617
|
-
dialog.DoModal(event);
|
|
86618
|
-
}
|
|
86619
|
-
},
|
|
86620
|
-
{
|
|
86621
|
-
text:'区间放大',
|
|
86622
|
-
click:function()
|
|
86623
|
-
{
|
|
86624
|
-
JSConsole.Chart.Log('[KLineSelectRightMenu::click] 区间放大');
|
|
86625
|
-
var chart=event.data.Chart;
|
|
86626
|
-
chart.ShowSelectData(event.data.SelectData);
|
|
86627
|
-
}
|
|
86628
|
-
}
|
|
86629
|
-
];
|
|
86630
|
-
|
|
86631
|
-
rightMenu.Show({
|
|
86632
|
-
x:x,
|
|
86633
|
-
y:y,
|
|
86634
|
-
position:chart.Frame.Position,
|
|
86635
|
-
data:dataList
|
|
86636
|
-
});
|
|
86637
|
-
}
|
|
86638
|
-
|
|
86639
|
-
this.Show=function (obj)
|
|
86640
|
-
{
|
|
86641
|
-
var _self = this;
|
|
86642
|
-
$.extend(_self.option, obj);
|
|
86643
|
-
|
|
86644
|
-
//判断是否重复创建
|
|
86645
|
-
if (!_self.ID) _self.Create();
|
|
86646
|
-
//判断下如果DOM没了需要重新创建
|
|
86647
|
-
var divIdName='topMenu_'+_self.ID;
|
|
86648
|
-
var divDom=document.getElementById(divIdName);
|
|
86649
|
-
if (!divDom) _self.Create();
|
|
86650
|
-
|
|
86651
|
-
var $topMenu = $("#topMenu_"+_self.ID),
|
|
86652
|
-
topWidth = $topMenu.outerWidth(),
|
|
86653
|
-
topHeight = $topMenu.outerHeight();
|
|
86654
|
-
|
|
86655
|
-
$topMenu.contextmenu(function()
|
|
86656
|
-
{
|
|
86657
|
-
return false; //屏蔽系统右键菜单
|
|
86658
|
-
});
|
|
86659
|
-
|
|
86660
|
-
var x = _self.option.x,
|
|
86661
|
-
y = _self.option.y;
|
|
86662
|
-
|
|
86663
|
-
if (topWidth > _self.option.position.X + _self.option.position.W- x) //超过了右边距
|
|
86664
|
-
x = x - topWidth;
|
|
86665
|
-
|
|
86666
|
-
if (topHeight > _self.option.position.Y +_self.option.position.H - y)//超过了下边距
|
|
86667
|
-
y = y - topHeight;
|
|
86668
|
-
|
|
86669
|
-
$topMenu.hide();
|
|
86670
|
-
$topMenu.css({ position:"absolute",left: x + "px", top: y + "px" }).show();
|
|
86671
|
-
|
|
86672
|
-
$("#topMenu_" + _self.ID).find("tr").show(); //把菜单列表显示
|
|
86673
|
-
|
|
86674
|
-
this.isInit = true;
|
|
86675
|
-
}
|
|
86676
|
-
}
|
|
86677
|
-
|
|
86678
|
-
//分钟数据右键菜单
|
|
86679
|
-
function MinuteRightMenu(divElement)
|
|
86680
|
-
{
|
|
86681
|
-
this.newMethod=KLineRightMenu; //派生
|
|
86682
|
-
this.newMethod(divElement);
|
|
86683
|
-
delete this.newMethod;
|
|
86684
|
-
|
|
86685
|
-
this.DoModal=function(event)
|
|
86686
|
-
{
|
|
86687
|
-
var chart=event.data.Chart;
|
|
86688
|
-
var rightMenu=chart.RightMenu;
|
|
86689
|
-
var x = event.offsetX;
|
|
86690
|
-
var y = event.offsetY;
|
|
86691
|
-
|
|
86692
|
-
var dataList=
|
|
86693
|
-
[
|
|
86694
|
-
{
|
|
86695
|
-
text: "叠加品种",
|
|
86696
|
-
children: this.GetOverlay(chart)
|
|
86697
|
-
},
|
|
86698
|
-
{
|
|
86699
|
-
text: "多日分时图",
|
|
86700
|
-
children: this.GetDayCount(chart)
|
|
86701
|
-
},
|
|
86702
|
-
{
|
|
86703
|
-
text:'指标窗口个数',
|
|
86704
|
-
children: this.GetIndexWindowCount(chart)
|
|
86705
|
-
},
|
|
86706
|
-
{
|
|
86707
|
-
text: "副图指标切换",
|
|
86708
|
-
children: this.GetIndex(chart)
|
|
86709
|
-
},
|
|
86710
|
-
{
|
|
86711
|
-
text:"区间选择",
|
|
86712
|
-
children:this.GetSelectRect(chart)
|
|
86713
|
-
},
|
|
86714
|
-
|
|
86715
|
-
];
|
|
86716
|
-
|
|
86717
|
-
var symbol=chart.Symbol;
|
|
86718
|
-
if (MARKET_SUFFIX_NAME.IsSHSZStockA(symbol))
|
|
86719
|
-
{
|
|
86720
|
-
dataList.push({text:'集合竞价',children: this.GetShowBeforeData(chart)});
|
|
86721
|
-
}
|
|
86722
|
-
|
|
86723
|
-
dataList.push({text:"工具", children:this.GetTools(chart)});
|
|
86724
|
-
|
|
86725
|
-
var identify=event.data.FrameID;
|
|
86726
|
-
var overlayIndex=this.GetOverlayIndex(chart,identify);
|
|
86727
|
-
if (overlayIndex && overlayIndex.length>0)
|
|
86728
|
-
{
|
|
86729
|
-
var delOverlayIndexMenu={ text:'删除叠加指标', children:this.GetDeleteOverlayIndex(chart,overlayIndex) }
|
|
86730
|
-
dataList.splice(3,0,delOverlayIndexMenu);
|
|
86731
|
-
}
|
|
86732
|
-
|
|
86733
|
-
var identify=event.data.FrameID;
|
|
86734
|
-
JSConsole.Chart.Log('[MinuteRightMenu::DoModal]',identify);
|
|
86735
|
-
rightMenu.Show({
|
|
86736
|
-
windowIndex :identify,
|
|
86737
|
-
x:x+chart.UIElement.offsetLeft,
|
|
86738
|
-
y:y+chart.UIElement.offsetTop,
|
|
86739
|
-
position:chart.Frame.Position,
|
|
86740
|
-
data:dataList
|
|
86741
|
-
})
|
|
86742
|
-
|
|
86743
|
-
$(document).click(function () {
|
|
86744
|
-
rightMenu.Hide();
|
|
86745
|
-
});
|
|
86746
|
-
}
|
|
86747
|
-
|
|
86748
|
-
this.GetDayCount=function(chart)
|
|
86749
|
-
{
|
|
86750
|
-
var data=
|
|
86751
|
-
[
|
|
86752
|
-
{
|
|
86753
|
-
text: "当日分时图",
|
|
86754
|
-
click: function () { chart.ChangeDayCount(1); },
|
|
86755
|
-
isBorder:true
|
|
86756
|
-
},
|
|
86757
|
-
{
|
|
86758
|
-
text: "最近2日",
|
|
86759
|
-
click: function () { chart.ChangeDayCount(2); }
|
|
86760
|
-
},
|
|
86761
|
-
{
|
|
86762
|
-
text: "最近3日",
|
|
86763
|
-
click: function () { chart.ChangeDayCount(3); }
|
|
86764
|
-
},
|
|
86765
|
-
{
|
|
86766
|
-
text: "最近4日",
|
|
86767
|
-
click: function () { chart.ChangeDayCount(4); }
|
|
86768
|
-
},
|
|
86769
|
-
{
|
|
86770
|
-
text: "最近5日",
|
|
86771
|
-
click: function () { chart.ChangeDayCount(5); }
|
|
86772
|
-
},
|
|
86773
|
-
{
|
|
86774
|
-
text: "最近6日",
|
|
86775
|
-
click: function () { chart.ChangeDayCount(6); }
|
|
86776
|
-
}
|
|
86777
|
-
];
|
|
86778
|
-
|
|
86779
|
-
if ((chart.DayCount-1)>=0 && (chart.DayCount-1)<data.length) data[chart.DayCount-1].selected=true;
|
|
86780
|
-
|
|
86781
|
-
return data;
|
|
86782
|
-
}
|
|
86783
|
-
|
|
86784
|
-
this.GetIndex=function (chart)
|
|
86785
|
-
{
|
|
86786
|
-
var data=
|
|
86787
|
-
[
|
|
86788
|
-
{
|
|
86789
|
-
text: "MACD",
|
|
86790
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'MACD') }
|
|
86791
|
-
},
|
|
86792
|
-
{
|
|
86793
|
-
text: "DMI",
|
|
86794
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'DMI') }
|
|
86795
|
-
},
|
|
86796
|
-
{
|
|
86797
|
-
text: "DMA",
|
|
86798
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'DMA') }
|
|
86799
|
-
},
|
|
86800
|
-
{
|
|
86801
|
-
text: "BRAR",
|
|
86802
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'BRAR') }
|
|
86803
|
-
},
|
|
86804
|
-
{
|
|
86805
|
-
text: "KDJ",
|
|
86806
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'KDJ') }
|
|
86807
|
-
},
|
|
86808
|
-
{
|
|
86809
|
-
text: "RSI",
|
|
86810
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'RSI') }
|
|
86811
|
-
},
|
|
86812
|
-
{
|
|
86813
|
-
text: "WR",
|
|
86814
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'WR') }
|
|
86815
|
-
},
|
|
86816
|
-
{
|
|
86817
|
-
text: "CCI",
|
|
86818
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'CCI') }
|
|
86819
|
-
},
|
|
86820
|
-
{
|
|
86821
|
-
text: "TRIX",
|
|
86822
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'TRIX') }
|
|
86823
|
-
}
|
|
86824
|
-
];
|
|
86825
|
-
|
|
86826
|
-
return data;
|
|
86827
|
-
}
|
|
86828
|
-
|
|
86829
|
-
this.GetShowBeforeData=function(chart) //是否显示集合竞价
|
|
86830
|
-
{
|
|
86831
|
-
if (chart.IsShowBeforeData)
|
|
86832
|
-
{
|
|
86833
|
-
var data=
|
|
86834
|
-
[
|
|
86835
|
-
{
|
|
86836
|
-
text: "隐藏",
|
|
86837
|
-
click: function () { chart.ShowCallAuctionData( { Left:false, MultiDay:{ Left:false }} ); },
|
|
86838
|
-
}
|
|
86839
|
-
];
|
|
86840
|
-
|
|
86841
|
-
return data;
|
|
86842
|
-
}
|
|
86843
|
-
else
|
|
86844
|
-
{
|
|
86845
|
-
var data=
|
|
86846
|
-
[
|
|
86847
|
-
{
|
|
86848
|
-
text: "显示",
|
|
86849
|
-
click: function () { chart.ShowCallAuctionData({Left:true, MultiDay:{ Left:true }}); },
|
|
86850
|
-
}
|
|
86851
|
-
];
|
|
86852
|
-
|
|
86853
|
-
return data;
|
|
86854
|
-
}
|
|
86855
|
-
}
|
|
86856
|
-
|
|
86857
|
-
this.GetSelectRect=function(chart) //区间选择
|
|
86858
|
-
{
|
|
86859
|
-
if (chart.EnableSelectRect)
|
|
86860
|
-
{
|
|
86861
|
-
var data=
|
|
86862
|
-
[
|
|
86863
|
-
{
|
|
86864
|
-
text: "禁用区间选择",
|
|
86865
|
-
click: function () { chart.EnableSelectRect=false; },
|
|
86866
|
-
}
|
|
86867
|
-
];
|
|
86868
|
-
|
|
86869
|
-
return data;
|
|
86870
|
-
}
|
|
86871
|
-
else
|
|
86872
|
-
{
|
|
86873
|
-
var data=
|
|
86874
|
-
[
|
|
86875
|
-
{
|
|
86876
|
-
text: "启动区间选择",
|
|
86877
|
-
click: function () { chart.EnableSelectRect=true },
|
|
86878
|
-
}
|
|
86879
|
-
];
|
|
86880
|
-
|
|
86881
|
-
return data;
|
|
86882
|
-
}
|
|
86883
|
-
}
|
|
86884
|
-
|
|
86885
|
-
//指标窗口个数
|
|
86886
|
-
this.GetIndexWindowCount=function(chart)
|
|
86887
|
-
{
|
|
86888
|
-
var data=
|
|
86889
|
-
[
|
|
86890
|
-
{
|
|
86891
|
-
text: "1个窗口",
|
|
86892
|
-
click: function () { chart.ChangeIndexWindowCount(2); }
|
|
86893
|
-
},
|
|
86894
|
-
{
|
|
86895
|
-
text: "2个窗口",
|
|
86896
|
-
click: function () { chart.ChangeIndexWindowCount(3); }
|
|
86897
|
-
},
|
|
86898
|
-
{
|
|
86899
|
-
text: "3个窗口",
|
|
86900
|
-
click: function () { chart.ChangeIndexWindowCount(4); }
|
|
86901
|
-
},
|
|
86902
|
-
{
|
|
86903
|
-
text: "4个窗口",
|
|
86904
|
-
click: function () { chart.ChangeIndexWindowCount(5); }
|
|
86905
|
-
},
|
|
86906
|
-
{
|
|
86907
|
-
text: "5个窗口",
|
|
86908
|
-
click: function () { chart.ChangeIndexWindowCount(6); }
|
|
86909
|
-
}
|
|
86910
|
-
];
|
|
86911
|
-
|
|
86912
|
-
var count=chart.Frame.SubFrame.length-1;
|
|
86913
|
-
if ((count-1)>=0 && (count-1)<data.length) data[count-1].selected=true; //选中
|
|
86914
|
-
|
|
86915
|
-
return data;
|
|
86916
|
-
}
|
|
86917
|
-
|
|
86918
|
-
//工具
|
|
86919
|
-
this.GetTools=function(chart)
|
|
86920
|
-
{
|
|
86921
|
-
var data=[];
|
|
86922
|
-
var drawTools=chart.GetExtendChartByClassName('DrawToolsButton');
|
|
86923
|
-
if (drawTools)
|
|
86924
|
-
{
|
|
86925
|
-
data.push(
|
|
86926
|
-
{
|
|
86927
|
-
text: "关闭画图工具",
|
|
86928
|
-
click: function ()
|
|
86929
|
-
{
|
|
86930
|
-
var toolsWidth=drawTools.Chart.Width;
|
|
86931
|
-
var toolsIndex=parseInt(drawTools.Index);
|
|
86932
|
-
chart.DeleteExtendChart(drawTools);
|
|
86933
|
-
chart.Frame.ChartBorder.Right-=toolsWidth;
|
|
86934
|
-
chart.SetSizeChange(true);
|
|
86935
|
-
chart.Draw();
|
|
86936
|
-
}
|
|
86937
|
-
}
|
|
86938
|
-
);
|
|
86939
|
-
}
|
|
86940
|
-
else
|
|
86941
|
-
{
|
|
86942
|
-
data.push(
|
|
86943
|
-
{
|
|
86944
|
-
text: "画图工具",
|
|
86945
|
-
click: function () {
|
|
86946
|
-
var option={Name:'画图工具', Top:chart.Frame.ChartBorder.Top };
|
|
86947
|
-
var extendChart=chart.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
86948
|
-
chart.SetSizeChange(true);
|
|
86949
|
-
chart.Draw();
|
|
86950
|
-
}
|
|
86951
|
-
}
|
|
86952
|
-
);
|
|
86953
|
-
}
|
|
86954
|
-
|
|
86955
|
-
return data;
|
|
86956
|
-
}
|
|
86957
|
-
}
|
|
86958
|
-
|
|
86959
86242
|
//画图工具 单个图形设置
|
|
86960
86243
|
function ChartPictureSettingMenu(divElement)
|
|
86961
86244
|
{
|