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
|
@@ -4167,11 +4167,12 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4167
4167
|
chart.ModifyIndexDialog=this.ModifyIndexDialog;
|
|
4168
4168
|
chart.ChangeIndexDialog=this.ChangeIndexDialog;
|
|
4169
4169
|
chart.MinuteDialog=this.MinuteDialog;
|
|
4170
|
+
|
|
4171
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
4170
4172
|
|
|
4171
4173
|
//右键菜单
|
|
4172
|
-
if (option.IsShowRightMenu
|
|
4174
|
+
if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
|
|
4173
4175
|
if (option.ScriptError) chart.ScriptErrorCallback=option.ScriptError;
|
|
4174
|
-
chart.SelectRectRightMenu=new KLineSelectRightMenu(this.DivElement);
|
|
4175
4176
|
if (option.EnableScrollUpDown==true) chart.EnableScrollUpDown=option.EnableScrollUpDown;
|
|
4176
4177
|
if (option.DisableMouse==true) chart.DisableMouse=option.DisableMouse;
|
|
4177
4178
|
if (option.TouchMoveMinAngle) chart.TouchMoveMinAngle=option.TouchMoveMinAngle;
|
|
@@ -4385,8 +4386,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4385
4386
|
chart.Frame.SubFrame[i].Frame.IsShowYText[1]=item.IsShowRightText;
|
|
4386
4387
|
chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowRightText=item.IsShowRightText; //显示右边刻度
|
|
4387
4388
|
}
|
|
4388
|
-
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace;
|
|
4389
|
-
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace;
|
|
4389
|
+
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;
|
|
4390
|
+
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;
|
|
4390
4391
|
|
|
4391
4392
|
if (item.RightTextPosition>0) chart.Frame.SubFrame[i].Frame.YTextPosition[1]=item.RightTextPosition;
|
|
4392
4393
|
if (item.LeftTextPosition>0) chart.Frame.SubFrame[i].Frame.YTextPosition[0]=item.LeftTextPosition;
|
|
@@ -4585,7 +4586,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4585
4586
|
chart.MinuteDialog=this.MinuteDialog;
|
|
4586
4587
|
|
|
4587
4588
|
//右键菜单
|
|
4588
|
-
if (option.IsShowRightMenu
|
|
4589
|
+
if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
|
|
4589
4590
|
|
|
4590
4591
|
if (option.KLine) //k线图的属性设置
|
|
4591
4592
|
{
|
|
@@ -4688,6 +4689,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4688
4689
|
chart.ModifyIndexDialog=this.ModifyIndexDialog;
|
|
4689
4690
|
chart.ChangeIndexDialog=this.ChangeIndexDialog;
|
|
4690
4691
|
|
|
4692
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
4693
|
+
|
|
4691
4694
|
var windowsCount=2;
|
|
4692
4695
|
if (option.Windows && option.Windows.length>0) windowsCount+=option.Windows.length; //指标窗口从第3个窗口开始
|
|
4693
4696
|
if (option.EnableScrollUpDown==true) chart.EnableScrollUpDown=option.EnableScrollUpDown;
|
|
@@ -4803,7 +4806,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4803
4806
|
|
|
4804
4807
|
if (option.MinuteInfo) chart.CreateMinuteInfo(option.MinuteInfo);
|
|
4805
4808
|
|
|
4806
|
-
if (option.IsShowRightMenu
|
|
4809
|
+
if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
|
|
4807
4810
|
|
|
4808
4811
|
if (IFrameSplitOperator.IsNumber(option.DayCount)) chart.DayCount=option.DayCount;
|
|
4809
4812
|
|
|
@@ -4855,8 +4858,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4855
4858
|
if (IFrameSplitOperator.IsNumber(item.YTextBaseline)) chart.Frame.SubFrame[i].Frame.YTextBaseline=item.YTextBaseline;
|
|
4856
4859
|
if (IFrameSplitOperator.IsBool(item.IsShowIndexTitle)) chart.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;
|
|
4857
4860
|
|
|
4858
|
-
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace;
|
|
4859
|
-
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace;
|
|
4861
|
+
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;
|
|
4862
|
+
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;
|
|
4860
4863
|
|
|
4861
4864
|
//是否显示关闭集合竞价按钮
|
|
4862
4865
|
if (IFrameSplitOperator.IsNumber(item.CloseBeforeButton)) chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;
|
|
@@ -5522,6 +5525,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5522
5525
|
if (!chart) return false;
|
|
5523
5526
|
|
|
5524
5527
|
this.JSChartContainer=chart;
|
|
5528
|
+
chart.DivElement=this.DivElement;
|
|
5525
5529
|
|
|
5526
5530
|
if (option.DefaultCursor) chart.DefaultCursor=option.DefaultCursor;
|
|
5527
5531
|
if (option.OnCreatedCallback) option.OnCreatedCallback(chart);
|
|
@@ -5529,6 +5533,10 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5529
5533
|
//是否自动更新
|
|
5530
5534
|
if (option.IsAutoUpdate!=null) chart.IsAutoUpdate=option.IsAutoUpdate;
|
|
5531
5535
|
if (option.AutoUpdateFrequency>0) chart.AutoUpdateFrequency=option.AutoUpdateFrequency;
|
|
5536
|
+
|
|
5537
|
+
//内置菜单
|
|
5538
|
+
if (option.EnablePopMenuV2===true) chart.InitalPopMenu();
|
|
5539
|
+
|
|
5532
5540
|
//注册事件
|
|
5533
5541
|
if (option.EventCallback)
|
|
5534
5542
|
{
|
|
@@ -5555,19 +5563,6 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5555
5563
|
this.DivElement.JSChart=this; //div中保存一份
|
|
5556
5564
|
this.JSChartContainer.Draw();
|
|
5557
5565
|
}
|
|
5558
|
-
|
|
5559
|
-
if (IFrameSplitOperator.IsBool(option.CheckLatestVerion) && option.CheckLatestVerion==false)
|
|
5560
|
-
{
|
|
5561
|
-
|
|
5562
|
-
}
|
|
5563
|
-
else if (JSChart.LastVersion==null)
|
|
5564
|
-
{
|
|
5565
|
-
if (chart && typeof(chart.GetLatestVersion)=='function')
|
|
5566
|
-
{
|
|
5567
|
-
//由于域名都要备案,获取最新版本接口停止使用
|
|
5568
|
-
//chart.GetLatestVersion();
|
|
5569
|
-
}
|
|
5570
|
-
}
|
|
5571
5566
|
}
|
|
5572
5567
|
|
|
5573
5568
|
//创建工具条
|
|
@@ -6011,6 +6006,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
6011
6006
|
return this.JSChartContainer.ChangePriceGap(option);
|
|
6012
6007
|
}
|
|
6013
6008
|
}
|
|
6009
|
+
|
|
6010
|
+
this.PopupMenuByTab=function(menuData, rtTab)
|
|
6011
|
+
{
|
|
6012
|
+
if(this.JSChartContainer && typeof(this.JSChartContainer.PopupMenuByTab)=='function')
|
|
6013
|
+
{
|
|
6014
|
+
JSConsole.Chart.Log('[JSChart:ChangePriceGap] ');
|
|
6015
|
+
return this.JSChartContainer.PopupMenuByTab(menuData, rtTab);
|
|
6016
|
+
}
|
|
6017
|
+
}
|
|
6014
6018
|
}
|
|
6015
6019
|
|
|
6016
6020
|
JSChart.LastVersion=null; //最新的版本号
|
|
@@ -6216,6 +6220,12 @@ JSChart.ToFixedRect=function(value)
|
|
|
6216
6220
|
return ToFixedRect(value);
|
|
6217
6221
|
}
|
|
6218
6222
|
|
|
6223
|
+
JSChart.GetScrollPosition=function()
|
|
6224
|
+
{
|
|
6225
|
+
return GetScrollPosition();
|
|
6226
|
+
}
|
|
6227
|
+
|
|
6228
|
+
|
|
6219
6229
|
|
|
6220
6230
|
|
|
6221
6231
|
var JSCHART_EVENT_ID=
|
|
@@ -6501,6 +6511,40 @@ var JSCHART_WORKER_MESSAGE_ID=
|
|
|
6501
6511
|
ERROR_EXECUTE_SCRIPT:3,
|
|
6502
6512
|
}
|
|
6503
6513
|
|
|
6514
|
+
var JSCHART_MENU_ID=
|
|
6515
|
+
{
|
|
6516
|
+
CMD_CHANGE_PERIOD_ID:1, //切换周期
|
|
6517
|
+
CMD_CHANGE_WINDOW_COUNT_ID:2, //窗口个数
|
|
6518
|
+
CMD_CHANGE_RIGHT_ID:3, //复权
|
|
6519
|
+
CMD_CHANGE_INDEX_ID:4, //切换指标
|
|
6520
|
+
CMD_CHANGE_COLOR_INDEX_ID:5, //五彩K线指标
|
|
6521
|
+
CMD_CHANGE_TRADE_INDEX_ID:6, //专家系统(交易指标)
|
|
6522
|
+
CMD_DELETE_COLOR_INDEX_ID:7, //删除五彩K线指标
|
|
6523
|
+
CMD_DELETE_TRADE_INDEX_ID:8, //删除专家系统(交易指标)
|
|
6524
|
+
CMD_CHANGE_KLINE_TYPE_ID:9, //切换K线类型
|
|
6525
|
+
CMD_CHANGE_PRICE_GAP_ID:10, //缺口提示
|
|
6526
|
+
CMD_OVERLAY_SYMBOL_ID:11, //叠加品种
|
|
6527
|
+
CMD_DELETE_ALL_OVERLAY_SYMBOL_ID:12, //删除所有叠加品种
|
|
6528
|
+
CMD_CHANGE_COORDINATETYPE_ID:13, //切换坐标类型
|
|
6529
|
+
CMD_CHANGE_KLINE_INFO_ID:14, //切换信息地雷
|
|
6530
|
+
CMD_DELETE_ALL_KLINE_INFO_ID:15, //清空信息地雷
|
|
6531
|
+
CMD_CHANGE_DRAG_MODE_ID:16, //切换拖动模式
|
|
6532
|
+
CMD_CHANGE_BG_SPLIT_ID:17, //背景分割
|
|
6533
|
+
|
|
6534
|
+
CMD_SHOW_DRAWTOOL_ID:18, //画图工具
|
|
6535
|
+
CMD_HIDE_DRAWTOOL_ID:19,
|
|
6536
|
+
|
|
6537
|
+
CMD_SHOW_STOCKCHIP_ID:20, //筹码分布
|
|
6538
|
+
CMD_HIDE_STOCKCHIP_ID:21,
|
|
6539
|
+
|
|
6540
|
+
CMD_ENABLE_SELECT_RECT_ID:22, //启动区间选择
|
|
6541
|
+
CMD_CHANGE_DAY_COUNT_ID:23, //切换天数
|
|
6542
|
+
CMD_SHOW_BEFORE_DATA_ID:24, //显示|隐藏集合竞价
|
|
6543
|
+
|
|
6544
|
+
CMD_SELECTED_ZOOM_ID:25, //选中放大
|
|
6545
|
+
CMD_SELECTED_SUMMARY_ID:26, //区间统计
|
|
6546
|
+
}
|
|
6547
|
+
|
|
6504
6548
|
|
|
6505
6549
|
function PhoneDBClick()
|
|
6506
6550
|
{
|
|
@@ -6664,9 +6708,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6664
6708
|
this.SelectRect.oncontextmenu=function() { return false; }; //屏蔽选中区域系统右键菜单
|
|
6665
6709
|
uielement.parentNode.appendChild(this.SelectRect);
|
|
6666
6710
|
|
|
6667
|
-
//区间选择右键菜单
|
|
6668
|
-
this.SelectRectRightMenu;
|
|
6669
|
-
|
|
6670
6711
|
//坐标轴风格方法 double-更加数值型分割 price-更加股票价格分割
|
|
6671
6712
|
this.FrameSplitData=new Map();
|
|
6672
6713
|
this.FrameSplitData.set("double",new SplitData());
|
|
@@ -6726,12 +6767,23 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6726
6767
|
|
|
6727
6768
|
this.StockCache={ Data:null }; //扩展数据缓存数据
|
|
6728
6769
|
|
|
6770
|
+
this.JSPopMenu; //内置菜单
|
|
6771
|
+
this.IsShowRightMenu=true; //显示右键菜单
|
|
6772
|
+
|
|
6729
6773
|
|
|
6730
6774
|
this.ClearStockCache=function()
|
|
6731
6775
|
{
|
|
6732
6776
|
this.StockCache.Data=null;
|
|
6733
6777
|
}
|
|
6734
6778
|
|
|
6779
|
+
this.InitalPopMenu=function() //初始化弹出窗口
|
|
6780
|
+
{
|
|
6781
|
+
if (this.JSPopMenu) return;
|
|
6782
|
+
|
|
6783
|
+
this.JSPopMenu=new JSPopMenu(); //内置菜单
|
|
6784
|
+
this.JSPopMenu.Inital();
|
|
6785
|
+
}
|
|
6786
|
+
|
|
6735
6787
|
//obj={ Element:, Canvas: }
|
|
6736
6788
|
this.SetCorssCursorElement=function(obj)
|
|
6737
6789
|
{
|
|
@@ -6781,61 +6833,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6781
6833
|
{
|
|
6782
6834
|
this.IsDestroy=true;
|
|
6783
6835
|
this.StopAutoUpdate();
|
|
6784
|
-
|
|
6785
|
-
if (this.GetLatestVersionTimer!=null)
|
|
6786
|
-
{
|
|
6787
|
-
clearTimeout(this.GetLatestVersionTimer);
|
|
6788
|
-
this.GetLatestVersionTimer=null;
|
|
6789
|
-
}
|
|
6790
6836
|
}
|
|
6791
6837
|
|
|
6792
6838
|
this.ChartDestory=this.ChartDestroy; //老版本写错了,需要兼容下
|
|
6793
6839
|
|
|
6794
|
-
|
|
6795
|
-
this.GetLatestVersionTimer=null; //获取最新版本
|
|
6796
|
-
this.GetLatestVersion=function()
|
|
6797
|
-
{
|
|
6798
|
-
if (this.GetLatestVersionTimer!=null)
|
|
6799
|
-
{
|
|
6800
|
-
clearTimeout(this.GetLatestVersionTimer);
|
|
6801
|
-
this.GetLatestVersionTimer=null;
|
|
6802
|
-
}
|
|
6803
|
-
|
|
6804
|
-
var roundeTime=Math.floor(Math.random()*50);
|
|
6805
|
-
var waittimer=1000*60*3+(roundeTime*1000);
|
|
6806
|
-
var value="aHR0cHM6Ly9ocWNoYXJ0LnplYWxpbmsuY29tL2FwaS9HZXRWZXJzaW9u";
|
|
6807
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] wait for get hqchart latest version. ",waittimer);
|
|
6808
|
-
this.GetLatestVersionTimer = setTimeout(()=>
|
|
6809
|
-
{
|
|
6810
|
-
var width=0, height=0;
|
|
6811
|
-
if (this.Frame && this.Frame.ChartBorder)
|
|
6812
|
-
{
|
|
6813
|
-
width=this.Frame.ChartBorder.GetChartWidth();
|
|
6814
|
-
height=this.Frame.ChartBorder.GetChartHeight();
|
|
6815
|
-
}
|
|
6816
|
-
|
|
6817
|
-
var url=`${atob(value)}?width=${width}&height=${height}&type=h5`;
|
|
6818
|
-
|
|
6819
|
-
if (JSChart.LastVersion!=null) return; //只请求一次
|
|
6820
|
-
|
|
6821
|
-
JSNetwork.HttpRequest({
|
|
6822
|
-
url: url,
|
|
6823
|
-
type:"get",
|
|
6824
|
-
dataType: "json",
|
|
6825
|
-
async:true,
|
|
6826
|
-
success:function(data)
|
|
6827
|
-
{
|
|
6828
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] hqchart latest version. ",data);
|
|
6829
|
-
JSChart.LastVersion=data;
|
|
6830
|
-
},
|
|
6831
|
-
error:function(request, textStatus, errorThrown)
|
|
6832
|
-
{
|
|
6833
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] Get HQChart latest version failed.", request);
|
|
6834
|
-
}
|
|
6835
|
-
});
|
|
6836
|
-
}, waittimer);
|
|
6837
|
-
}
|
|
6838
|
-
|
|
6839
6840
|
//设置焦点
|
|
6840
6841
|
this.SetFocus=function()
|
|
6841
6842
|
{
|
|
@@ -6951,6 +6952,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6951
6952
|
this.UIOnContextMenu=function(e)
|
|
6952
6953
|
{
|
|
6953
6954
|
if (this.ChartSplashPaint && this.ChartSplashPaint.IsEnableSplash == true) return;
|
|
6955
|
+
if (!this.IsShowRightMenu) return;
|
|
6954
6956
|
|
|
6955
6957
|
var x = e.clientX-this.UIElement.getBoundingClientRect().left;
|
|
6956
6958
|
var y = e.clientY-this.UIElement.getBoundingClientRect().top;
|
|
@@ -7192,7 +7194,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7192
7194
|
}
|
|
7193
7195
|
|
|
7194
7196
|
this.HideSelectRect();
|
|
7195
|
-
if (this.SelectRectRightMenu) this.SelectRectRightMenu.Hide();
|
|
7196
7197
|
if (this.ChartPictureMenu) this.ChartPictureMenu.Hide();
|
|
7197
7198
|
|
|
7198
7199
|
var paint=this.GetRectSelectPaint();
|
|
@@ -7832,17 +7833,19 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7832
7833
|
}
|
|
7833
7834
|
else
|
|
7834
7835
|
{
|
|
7835
|
-
if (isShowMenu
|
|
7836
|
+
if (isShowMenu)
|
|
7836
7837
|
{
|
|
7837
|
-
|
|
7838
|
-
{
|
|
7838
|
+
var data=
|
|
7839
|
+
{
|
|
7839
7840
|
Chart:this,
|
|
7840
7841
|
X:drag.LastMove.X-uielement.getBoundingClientRect().left,
|
|
7841
7842
|
Y:drag.LastMove.Y-uielement.getBoundingClientRect().top,
|
|
7842
7843
|
SelectData:selectData, //区间选择的数据
|
|
7843
7844
|
RectSelectPaint:paint //区间选择背景
|
|
7844
7845
|
};
|
|
7845
|
-
|
|
7846
|
+
|
|
7847
|
+
e.data=data;
|
|
7848
|
+
this.PopupSelectRectMenuV2(data, e);
|
|
7846
7849
|
}
|
|
7847
7850
|
}
|
|
7848
7851
|
}
|
|
@@ -12894,6 +12897,225 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12894
12897
|
}
|
|
12895
12898
|
}
|
|
12896
12899
|
}
|
|
12900
|
+
|
|
12901
|
+
this.PopupMenuByTab=function(menuData, rtTab)
|
|
12902
|
+
{
|
|
12903
|
+
if (!this.JSPopMenu) return;
|
|
12904
|
+
|
|
12905
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
12906
|
+
var rtCell={ Left:rtTab.Left/pixelRatio, Right:rtTab.Right/pixelRatio, Bottom:rtTab.Bottom/pixelRatio, Top:rtTab.Top/pixelRatio };
|
|
12907
|
+
rtCell.Width=rtCell.Right-rtCell.Left;
|
|
12908
|
+
rtCell.Height=rtCell.Bottom-rtCell.Top;
|
|
12909
|
+
|
|
12910
|
+
var rtClient=this.UIElement.getBoundingClientRect();
|
|
12911
|
+
var rtScroll=GetScrollPosition();
|
|
12912
|
+
|
|
12913
|
+
var offsetLeft=rtClient.left+rtScroll.Left;
|
|
12914
|
+
var offsetTop=rtClient.top+rtScroll.Top;
|
|
12915
|
+
rtCell.Left+=offsetLeft;
|
|
12916
|
+
rtCell.Right+=offsetLeft;
|
|
12917
|
+
rtCell.Top+=offsetTop;
|
|
12918
|
+
rtCell.Bottom+=offsetTop;
|
|
12919
|
+
|
|
12920
|
+
this.JSPopMenu.CreatePopMenu(menuData);
|
|
12921
|
+
this.JSPopMenu.PopupMenuByTab(rtCell);
|
|
12922
|
+
}
|
|
12923
|
+
|
|
12924
|
+
this.PopuMenuByRClick=function(menuData, x, y)
|
|
12925
|
+
{
|
|
12926
|
+
var rtClient=this.UIElement.getBoundingClientRect();
|
|
12927
|
+
var rtScroll=GetScrollPosition();
|
|
12928
|
+
|
|
12929
|
+
x+=rtClient.left+rtScroll.Left;
|
|
12930
|
+
y+=rtClient.top+rtScroll.Top;
|
|
12931
|
+
|
|
12932
|
+
this.JSPopMenu.CreatePopMenu(menuData);
|
|
12933
|
+
this.JSPopMenu.PopupMenuByRight(x,y);
|
|
12934
|
+
}
|
|
12935
|
+
|
|
12936
|
+
//点击右键菜单
|
|
12937
|
+
this.OnClickRightMenu=function(data)
|
|
12938
|
+
{
|
|
12939
|
+
JSConsole.Chart.Log('[JSChartContainer::OnClickRightMenu] ',data);
|
|
12940
|
+
if (!data || !data.Data) return;
|
|
12941
|
+
|
|
12942
|
+
var cmdID=data.Data.ID; //命令ID
|
|
12943
|
+
var aryArgs=data.Data.Args; //参数
|
|
12944
|
+
var param=null, srcParam=null; //原始值
|
|
12945
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryArgs))
|
|
12946
|
+
{
|
|
12947
|
+
srcParam=aryArgs[0];
|
|
12948
|
+
if (IFrameSplitOperator.IsNumber(aryArgs[0])) param=aryArgs[0];
|
|
12949
|
+
}
|
|
12950
|
+
|
|
12951
|
+
switch(cmdID)
|
|
12952
|
+
{
|
|
12953
|
+
case JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID:
|
|
12954
|
+
if (this.ChangePeriod && param!=null)
|
|
12955
|
+
this.ChangePeriod(param);
|
|
12956
|
+
break;
|
|
12957
|
+
case JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID:
|
|
12958
|
+
if (this.ChangeIndexWindowCount && param!=null)
|
|
12959
|
+
this.ChangeIndexWindowCount(param);
|
|
12960
|
+
break;
|
|
12961
|
+
case JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID:
|
|
12962
|
+
if (this.ChangeRight && param!=null)
|
|
12963
|
+
this.ChangeRight(param);
|
|
12964
|
+
break;
|
|
12965
|
+
case JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID:
|
|
12966
|
+
if (this.ChangeIndex && param!=null && aryArgs[1])
|
|
12967
|
+
this.ChangeIndex(param,aryArgs[1]);
|
|
12968
|
+
break;
|
|
12969
|
+
|
|
12970
|
+
case JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID:
|
|
12971
|
+
case JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID:
|
|
12972
|
+
if (this.ChangeInstructionIndex && aryArgs[0])
|
|
12973
|
+
this.ChangeInstructionIndex(aryArgs[0]);
|
|
12974
|
+
break;
|
|
12975
|
+
case JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID: //删除五彩K线指标
|
|
12976
|
+
case JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID: //删除专家系统(交易指标)
|
|
12977
|
+
if (this.CancelInstructionIndex) this.CancelInstructionIndex();
|
|
12978
|
+
break;
|
|
12979
|
+
case JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID: //切换K线类型
|
|
12980
|
+
if (this.ChangeKLineDrawType && param!=null)
|
|
12981
|
+
this.ChangeKLineDrawType(param,aryArgs[1],aryArgs[2]);
|
|
12982
|
+
break;
|
|
12983
|
+
case JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID: //缺口提示
|
|
12984
|
+
if (this.ChangePriceGap && IFrameSplitOperator.IsBool(aryArgs[0]))
|
|
12985
|
+
{
|
|
12986
|
+
if (aryArgs[0]==false)
|
|
12987
|
+
{
|
|
12988
|
+
this.ChangePriceGap({ Enable:aryArgs[0] });
|
|
12989
|
+
}
|
|
12990
|
+
else
|
|
12991
|
+
{
|
|
12992
|
+
if (IFrameSplitOperator.IsNumber(aryArgs[1]))
|
|
12993
|
+
this.ChangePriceGap({ Enable:aryArgs[0], Count:aryArgs[1] });
|
|
12994
|
+
}
|
|
12995
|
+
}
|
|
12996
|
+
break;
|
|
12997
|
+
case JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID:
|
|
12998
|
+
if (aryArgs[1]===true)
|
|
12999
|
+
{
|
|
13000
|
+
if (this.OverlaySymbol && aryArgs[0]) this.OverlaySymbol(aryArgs[0]);
|
|
13001
|
+
}
|
|
13002
|
+
else if (aryArgs[1]===false)
|
|
13003
|
+
{
|
|
13004
|
+
if (this.DeleteOverlaySymbol && aryArgs[0]) this.DeleteOverlaySymbol(aryArgs[0]);
|
|
13005
|
+
}
|
|
13006
|
+
break;
|
|
13007
|
+
case JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID:
|
|
13008
|
+
if (this.ClearOverlaySymbol) this.ClearOverlaySymbol();
|
|
13009
|
+
break;
|
|
13010
|
+
case JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID:
|
|
13011
|
+
if (this.ChangeCoordinateType && aryArgs[0]) this.ChangeCoordinateType(aryArgs[0]);
|
|
13012
|
+
break;
|
|
13013
|
+
case JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID:
|
|
13014
|
+
if (aryArgs[0] && IFrameSplitOperator.IsBool(aryArgs[1]))
|
|
13015
|
+
{
|
|
13016
|
+
if (aryArgs[1]==true && this.AddKLineInfo) this.AddKLineInfo(aryArgs[0],true);
|
|
13017
|
+
else if (aryArgs[1]==false && this.DeleteKLineInfo) this.DeleteKLineInfo(aryArgs[0]);
|
|
13018
|
+
}
|
|
13019
|
+
break;
|
|
13020
|
+
case JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID:
|
|
13021
|
+
if (this.ClearKLineInfo) this.ClearKLineInfo();
|
|
13022
|
+
break;
|
|
13023
|
+
case JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID:
|
|
13024
|
+
if (param!=null) this.DragMode=param;
|
|
13025
|
+
break;
|
|
13026
|
+
case JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID:
|
|
13027
|
+
if (IFrameSplitOperator.IsBool(srcParam))
|
|
13028
|
+
{
|
|
13029
|
+
if (srcParam)
|
|
13030
|
+
{
|
|
13031
|
+
this.CreateExtendChart("SessionBreaksPaint", { });
|
|
13032
|
+
this.Draw();
|
|
13033
|
+
}
|
|
13034
|
+
else
|
|
13035
|
+
{
|
|
13036
|
+
var finder=this.GetExtendChartByClassName("SessionBreaksPaint");
|
|
13037
|
+
if (finder)
|
|
13038
|
+
{
|
|
13039
|
+
this.DeleteExtendChartByID(finder.Chart.ID);
|
|
13040
|
+
this.Draw();
|
|
13041
|
+
}
|
|
13042
|
+
}
|
|
13043
|
+
}
|
|
13044
|
+
break;
|
|
13045
|
+
case JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID:
|
|
13046
|
+
var option={Name:'画图工具', Top:this.Frame.ChartBorder.Top };
|
|
13047
|
+
var extendChart=this.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
13048
|
+
this.SetSizeChange(true);
|
|
13049
|
+
this.Draw();
|
|
13050
|
+
break;
|
|
13051
|
+
case JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:
|
|
13052
|
+
var drawTools=this.GetExtendChartByClassName('DrawToolsButton');
|
|
13053
|
+
if (drawTools)
|
|
13054
|
+
{
|
|
13055
|
+
var toolsWidth=drawTools.Chart.Width;
|
|
13056
|
+
var toolsIndex=parseInt(drawTools.Index);
|
|
13057
|
+
for(var i=toolsIndex+1; i<this.ExtendChartPaint.length; ++i) //在画图工具后面创建的需要减去工具的宽度
|
|
13058
|
+
{
|
|
13059
|
+
var item=this.ExtendChartPaint[i];
|
|
13060
|
+
if (item.ClassName=='StockChip')
|
|
13061
|
+
{
|
|
13062
|
+
item.Left-=toolsWidth;
|
|
13063
|
+
}
|
|
13064
|
+
}
|
|
13065
|
+
this.DeleteExtendChart(drawTools);
|
|
13066
|
+
this.Frame.ChartBorder.Right-=toolsWidth;
|
|
13067
|
+
this.SetSizeChange(true);
|
|
13068
|
+
this.Draw();
|
|
13069
|
+
}
|
|
13070
|
+
break;
|
|
13071
|
+
case JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID:
|
|
13072
|
+
var option={Name:'筹码分布', ShowType:1, Width:230 };
|
|
13073
|
+
var extendChart=this.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
13074
|
+
this.SetSizeChange(true);
|
|
13075
|
+
this.Draw();
|
|
13076
|
+
break;
|
|
13077
|
+
case JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:
|
|
13078
|
+
var StockChip=chart.GetExtendChartByClassName('StockChip');
|
|
13079
|
+
if (StockChip)
|
|
13080
|
+
{
|
|
13081
|
+
var chipWidth=StockChip.Chart.Width;
|
|
13082
|
+
var chipIndex=parseInt(StockChip.Index);
|
|
13083
|
+
for(var i=chipIndex+1; i<this.ExtendChartPaint.length; ++i) //在筹码后面创建的需要筹码的宽度
|
|
13084
|
+
{
|
|
13085
|
+
var item=this.ExtendChartPaint[i];
|
|
13086
|
+
if (item.ClassName=='DrawToolsButton')
|
|
13087
|
+
{
|
|
13088
|
+
item.Left-=chipWidth;
|
|
13089
|
+
}
|
|
13090
|
+
}
|
|
13091
|
+
this.DeleteExtendChart(StockChip);
|
|
13092
|
+
this.Frame.ChartBorder.Right-=chipWidth;
|
|
13093
|
+
this.SetSizeChange(true);
|
|
13094
|
+
this.Draw();
|
|
13095
|
+
}
|
|
13096
|
+
break;
|
|
13097
|
+
case JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID:
|
|
13098
|
+
if (IFrameSplitOperator.IsBool(srcParam))
|
|
13099
|
+
this.EnableSelectRect=srcParam;
|
|
13100
|
+
break;
|
|
13101
|
+
case JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID:
|
|
13102
|
+
if (this.ChangeDayCount && param!=null)
|
|
13103
|
+
this.ChangeDayCount(param);
|
|
13104
|
+
break;
|
|
13105
|
+
case JSCHART_MENU_ID.CMD_SHOW_BEFORE_DATA_ID:
|
|
13106
|
+
if (this.ShowCallAuctionData && IFrameSplitOperator.IsBool(srcParam))
|
|
13107
|
+
this.ShowCallAuctionData({ Left:srcParam, MultiDay:{ Left:srcParam }});
|
|
13108
|
+
break;
|
|
13109
|
+
|
|
13110
|
+
case JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID:
|
|
13111
|
+
if (this.ShowSelectData && srcParam) this.ShowSelectData(srcParam);
|
|
13112
|
+
break;
|
|
13113
|
+
case JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID:
|
|
13114
|
+
var dlg=new KLineSelectRectDialog(this.DivElement);
|
|
13115
|
+
dlg.DoModal(srcParam);
|
|
13116
|
+
break;
|
|
13117
|
+
}
|
|
13118
|
+
}
|
|
12897
13119
|
}
|
|
12898
13120
|
|
|
12899
13121
|
function GetDevicePixelRatio()
|
|
@@ -12991,11 +13213,12 @@ function GetScrollPosition()
|
|
|
12991
13213
|
var scrollPos={};
|
|
12992
13214
|
var scrollTop=0;
|
|
12993
13215
|
var scrollLeft=0;
|
|
12994
|
-
if(document.documentElement && document.documentElement.scrollTop)
|
|
13216
|
+
if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft))
|
|
12995
13217
|
{
|
|
12996
13218
|
scrollTop=document.documentElement.scrollTop;
|
|
12997
13219
|
scrollLeft=document.documentElement.scrollLeft;
|
|
12998
|
-
}
|
|
13220
|
+
}
|
|
13221
|
+
else if(document.body)
|
|
12999
13222
|
{
|
|
13000
13223
|
scrollTop=document.body.scrollTop;
|
|
13001
13224
|
scrollLeft=document.body.scrollLeft;
|
|
@@ -47959,7 +48182,8 @@ function FrameButtomToolbarPaint()
|
|
|
47959
48182
|
this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);
|
|
47960
48183
|
}
|
|
47961
48184
|
|
|
47962
|
-
var font=this.
|
|
48185
|
+
var font=this.GetTitleFont(rtBG.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom);
|
|
48186
|
+
var svgFont=this.GetSVGFont(rtBG.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom);
|
|
47963
48187
|
this.Canvas.textBaseline='middle';
|
|
47964
48188
|
this.Canvas.textAlign='center';
|
|
47965
48189
|
this.Canvas.font=font;
|
|
@@ -47967,9 +48191,23 @@ function FrameButtomToolbarPaint()
|
|
|
47967
48191
|
for(var i=0;i<this.AryButton.length;++i)
|
|
47968
48192
|
{
|
|
47969
48193
|
var item=this.AryButton[i];
|
|
47970
|
-
if (!item.Title) return;
|
|
47971
|
-
|
|
47972
|
-
var
|
|
48194
|
+
if (!item.Title && !(item.SVGButton && item.SVGButton.Symbol)) return;
|
|
48195
|
+
|
|
48196
|
+
var textWidth=0;
|
|
48197
|
+
if (item.Title)
|
|
48198
|
+
{
|
|
48199
|
+
textWidth=this.Canvas.measureText(item.Title).width+2;
|
|
48200
|
+
}
|
|
48201
|
+
|
|
48202
|
+
var svgButtonWidth=0;
|
|
48203
|
+
if (item.SVGButton && item.SVGButton.Symbol)
|
|
48204
|
+
{
|
|
48205
|
+
svgButtonWidth=this.ButtonConfig.SVG.Size;
|
|
48206
|
+
if (textWidth>0) svgButtonWidth+=this.ButtonConfig.SVG.MerginLeft;
|
|
48207
|
+
|
|
48208
|
+
}
|
|
48209
|
+
|
|
48210
|
+
var buttonWidth=textWidth+svgButtonWidth+this.ButtonConfig.Mergin.Left+this.ButtonConfig.Mergin.Right;
|
|
47973
48211
|
var rtButton={ Left:xBotton, Top:rtBG.Top, Bottom:rtBG.Bottom, Height:rtBG.Height, Width:buttonWidth };
|
|
47974
48212
|
rtButton.Right=rtButton.Left+rtButton.Width;
|
|
47975
48213
|
|
|
@@ -48006,12 +48244,50 @@ function FrameButtomToolbarPaint()
|
|
|
48006
48244
|
this.Canvas.stroke();
|
|
48007
48245
|
}
|
|
48008
48246
|
|
|
48009
|
-
|
|
48010
|
-
|
|
48011
|
-
|
|
48012
|
-
|
|
48247
|
+
if (item.Title)
|
|
48248
|
+
{
|
|
48249
|
+
this.Canvas.fillStyle=titleColor;
|
|
48250
|
+
var xText=rtButton.Left+(rtButton.Width-svgButtonWidth)/2; //居中
|
|
48251
|
+
var yText=rtButton.Top+this.ButtonConfig.Mergin.Top+(rtButton.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom)/2;
|
|
48252
|
+
this.Canvas.fillText(item.Title,xText,yText);
|
|
48253
|
+
}
|
|
48254
|
+
|
|
48255
|
+
|
|
48256
|
+
var rtSVG=null;
|
|
48257
|
+
if (item.SVGButton && item.SVGButton.Symbol)
|
|
48258
|
+
{
|
|
48259
|
+
this.Canvas.font=svgFont;
|
|
48260
|
+
this.Canvas.fillStyle=titleColor;
|
|
48261
|
+
var xText=rtButton.Right-this.ButtonConfig.SVG.Size/2-this.ButtonConfig.Mergin.Right;
|
|
48262
|
+
this.Canvas.fillText(item.SVGButton.Symbol,xText,yText);
|
|
48263
|
+
this.Canvas.font=font;
|
|
48264
|
+
|
|
48265
|
+
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};
|
|
48266
|
+
rtSVG.Right=rtSVG.Left+rtSVG.Width;
|
|
48267
|
+
rtSVG.Bottom=rtSVG.Top+rtSVG.Height;
|
|
48268
|
+
}
|
|
48269
|
+
|
|
48270
|
+
//{ Rect:rtButton, ID:item.ID, Data:item, RectSVG:rtSVG }
|
|
48271
|
+
if (textWidth>0 && svgButtonWidth>0)
|
|
48272
|
+
{
|
|
48273
|
+
var rtText={ Left:rtButton.Left, Top:rtButton.Top, Bottom:rtButton.Bottom };
|
|
48274
|
+
rtText.Right=rtText.Left+textWidth+this.ButtonConfig.Mergin.Left+this.ButtonConfig.SVG.MerginLeft/2;
|
|
48275
|
+
var cacheItem={ Rect:rtText, ID:item.ID, Data:item, RectCell:rtButton, ButtonType:0 };
|
|
48276
|
+
this.AryRectButton.push(cacheItem);
|
|
48277
|
+
|
|
48278
|
+
var rtSVG={Left:rtText.Right, Right:rtButton.Right, Top:rtButton.Top, Bottom:rtButton.Bottom };
|
|
48279
|
+
var cacheItem={ Rect:rtSVG, ID:item.ID, Data:item, RectCell:rtButton, ButtonType:1 };
|
|
48280
|
+
this.AryRectButton.push(cacheItem);
|
|
48281
|
+
}
|
|
48282
|
+
else
|
|
48283
|
+
{
|
|
48284
|
+
var cacheItem={ Rect:rtButton, ID:item.ID, Data:item, RectCell:rtButton }; //RectCell 全部的大小
|
|
48285
|
+
if (textWidth>0) cacheItem.ButtonType=0;
|
|
48286
|
+
else if (svgButtonWidth>0) cacheItem.ButtonType=1;
|
|
48287
|
+
this.AryRectButton.push(cacheItem);
|
|
48288
|
+
}
|
|
48289
|
+
|
|
48013
48290
|
|
|
48014
|
-
this.AryRectButton.push({ Rect:rtButton, ID:item.ID, Data:item });
|
|
48015
48291
|
|
|
48016
48292
|
xBotton+=buttonWidth+1;
|
|
48017
48293
|
}
|
|
@@ -48040,13 +48316,22 @@ function FrameButtomToolbarPaint()
|
|
|
48040
48316
|
return null;
|
|
48041
48317
|
}
|
|
48042
48318
|
|
|
48043
|
-
this.
|
|
48319
|
+
this.GetTitleFont=function(height)
|
|
48044
48320
|
{
|
|
48045
48321
|
var config=this.ButtonConfig.Font;
|
|
48046
|
-
var fontSize=height;
|
|
48322
|
+
var fontSize=height*GetDevicePixelRatio();
|
|
48047
48323
|
if (IFrameSplitOperator.IsPlusNumber(config.Size)) fontSize=config.Size;
|
|
48048
48324
|
|
|
48049
|
-
var font=`${fontSize
|
|
48325
|
+
var font=`${fontSize}px ${config.Family}`;
|
|
48326
|
+
return font;
|
|
48327
|
+
}
|
|
48328
|
+
|
|
48329
|
+
this.GetSVGFont=function(height)
|
|
48330
|
+
{
|
|
48331
|
+
var config=this.ButtonConfig.SVG;
|
|
48332
|
+
var fontSize=height*GetDevicePixelRatio();
|
|
48333
|
+
if (IFrameSplitOperator.IsPlusNumber(config.Size)) fontSize=config.Size;
|
|
48334
|
+
var font=`${fontSize}px ${config.Family}`;
|
|
48050
48335
|
return font;
|
|
48051
48336
|
}
|
|
48052
48337
|
|
|
@@ -48059,7 +48344,7 @@ function FrameButtomToolbarPaint()
|
|
|
48059
48344
|
if (x>rect.Left && x<rect.Right && y>rect.Top && y<rect.Bottom)
|
|
48060
48345
|
{
|
|
48061
48346
|
var frame=this.GetFrame();
|
|
48062
|
-
var result={ ID:item.Data.ID, Rect:rect, FrameID:this.FrameID, Frame:frame, Data:item.Data };
|
|
48347
|
+
var result={ ID:item.Data.ID, Rect:rect, FrameID:this.FrameID, Frame:frame, Data:item.Data, ButtonType:item.ButtonType, RectCell:item.RectCell, };
|
|
48063
48348
|
return result;
|
|
48064
48349
|
}
|
|
48065
48350
|
}
|
|
@@ -57400,7 +57685,7 @@ function IChartDrawPicture()
|
|
|
57400
57685
|
if (option.LineWidth>0) this.LineWidth=option.LineWidth;
|
|
57401
57686
|
if (option.AreaColor) this.AreaColor=option.AreaColor;
|
|
57402
57687
|
if (option.PointColor) this.PointColor=option.PointColor;
|
|
57403
|
-
if (option.MoveOnPointColor) this.
|
|
57688
|
+
if (option.MoveOnPointColor) this.MoveOnPointColor=option.MoveOnPointColor;
|
|
57404
57689
|
if (option.PointRadius) this.PointRadius=option.PointRadius;
|
|
57405
57690
|
if (IFrameSplitOperator.IsNumber(option.SquareSize)) this.SquareSize=option.SquareSize;
|
|
57406
57691
|
if (IFrameSplitOperator.IsBool(option.IsShowPoint)) this.IsShowPoint=option.IsShowPoint;
|
|
@@ -57599,8 +57884,8 @@ function IChartDrawPicture()
|
|
|
57599
57884
|
for(var i=0; i<this.Point.length; ++i)
|
|
57600
57885
|
{
|
|
57601
57886
|
var item=this.Point[i];
|
|
57602
|
-
var xValue=parseInt(this.Frame.GetXData(item.Y));
|
|
57603
|
-
var yValue=this.Frame.GetYData(item.X);
|
|
57887
|
+
var xValue=parseInt(this.Frame.GetXData(item.Y,false));
|
|
57888
|
+
var yValue=this.Frame.GetYData(item.X,false);
|
|
57604
57889
|
|
|
57605
57890
|
var valueItem={ XValue:xValue, YValue:yValue };
|
|
57606
57891
|
var minuteItem=data.Data[xValue];
|
|
@@ -57614,8 +57899,8 @@ function IChartDrawPicture()
|
|
|
57614
57899
|
for(var i=0; i<this.Point.length; ++i)
|
|
57615
57900
|
{
|
|
57616
57901
|
var item=this.Point[i];
|
|
57617
|
-
var xValue=parseInt(this.Frame.GetXData(item.X));
|
|
57618
|
-
var yValue=this.Frame.GetYData(item.Y);
|
|
57902
|
+
var xValue=parseInt(this.Frame.GetXData(item.X,false));
|
|
57903
|
+
var yValue=this.Frame.GetYData(item.Y,false);
|
|
57619
57904
|
|
|
57620
57905
|
if (xValue>=data.Data.length) //超过当前数据,直接读固定时间
|
|
57621
57906
|
{
|
|
@@ -57690,7 +57975,7 @@ function IChartDrawPicture()
|
|
|
57690
57975
|
}
|
|
57691
57976
|
|
|
57692
57977
|
data.FindDataIndexByDateTime(aryDateTime);
|
|
57693
|
-
for(var i
|
|
57978
|
+
for(var i=0; i<aryDateTime.length; ++i)
|
|
57694
57979
|
{
|
|
57695
57980
|
var findItem=aryDateTime[i];
|
|
57696
57981
|
var valueItem=this.Value[i];
|
|
@@ -57698,6 +57983,17 @@ function IChartDrawPicture()
|
|
|
57698
57983
|
}
|
|
57699
57984
|
}
|
|
57700
57985
|
|
|
57986
|
+
//重置X索引数据
|
|
57987
|
+
this.ResetXValue=function()
|
|
57988
|
+
{
|
|
57989
|
+
for(var i=0; i<this.Value.length; ++i)
|
|
57990
|
+
{
|
|
57991
|
+
var item=this.Value[i];
|
|
57992
|
+
item.XValue=null;
|
|
57993
|
+
}
|
|
57994
|
+
return true;
|
|
57995
|
+
}
|
|
57996
|
+
|
|
57701
57997
|
//xStep,yStep 移动的偏移量
|
|
57702
57998
|
this.Move=function(xStep,yStep)
|
|
57703
57999
|
{
|
|
@@ -57823,6 +58119,8 @@ function IChartDrawPicture()
|
|
|
57823
58119
|
for(var i=0; i<this.Value.length; ++i)
|
|
57824
58120
|
{
|
|
57825
58121
|
var item=this.Value[i];
|
|
58122
|
+
if (!IFrameSplitOperator.IsNumber(item.XValue)) return null; //无效索引 不显示
|
|
58123
|
+
|
|
57826
58124
|
var dataIndex=item.XValue-data.DataOffset;
|
|
57827
58125
|
if (dataIndex<0 || dataIndex>=showCount) ++invaildX;
|
|
57828
58126
|
|
|
@@ -58893,7 +59191,7 @@ function ChartDrawPictureLine()
|
|
|
58893
59191
|
if (this.IsFrameMinSize()) return;
|
|
58894
59192
|
if (!this.IsShow) return;
|
|
58895
59193
|
|
|
58896
|
-
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:
|
|
59194
|
+
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:false} );
|
|
58897
59195
|
if (!drawPoint) return;
|
|
58898
59196
|
if (drawPoint.length!=2) return;
|
|
58899
59197
|
|
|
@@ -59513,8 +59811,9 @@ function ChartDrawHLine()
|
|
|
59513
59811
|
|
|
59514
59812
|
this.Button=
|
|
59515
59813
|
{
|
|
59516
|
-
CloseIcon: { Text:'\ue62b', Color:'rgb(255,255,255)', Family:"iconfont", Size:16 },
|
|
59517
|
-
SettingIcon: { Text:'\ue623',Color:'rgb(255,255,255)', Family:"iconfont", Size:16 }
|
|
59814
|
+
CloseIcon: { Text:'\ue62b', Color:'rgb(255,255,255)', Family:"iconfont", Size:16, ID:JSCHART_BUTTON_ID.DRAW_PICTURE_DELETE, TooltipText:null },
|
|
59815
|
+
SettingIcon: { Text:'\ue623',Color:'rgb(255,255,255)', Family:"iconfont", Size:16, ID:JSCHART_BUTTON_ID.DRAW_PICTURE_SETTING, TooltipText:null }
|
|
59816
|
+
//修改ID, Text , TooltipText 可以外部定制按钮
|
|
59518
59817
|
}
|
|
59519
59818
|
|
|
59520
59819
|
this.AryButton=[];
|
|
@@ -59708,6 +60007,7 @@ function ChartDrawHLine()
|
|
|
59708
60007
|
this.CalculateButtonSize();
|
|
59709
60008
|
this.DrawValueText(drawPoint[0].Y, rtDraw, labInfo);
|
|
59710
60009
|
if (labInfo) this.DrawRightLab(labInfo, rtDraw);
|
|
60010
|
+
if (labInfo) this.DrawCustomHLine(labInfo, drawPoint[0].Y);
|
|
59711
60011
|
}
|
|
59712
60012
|
|
|
59713
60013
|
|
|
@@ -59847,6 +60147,53 @@ function ChartDrawHLine()
|
|
|
59847
60147
|
}
|
|
59848
60148
|
}
|
|
59849
60149
|
|
|
60150
|
+
this.DrawCustomHLine=function(labInfo, yLine)
|
|
60151
|
+
{
|
|
60152
|
+
if (!labInfo) return;
|
|
60153
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(labInfo.AryLine)) return;
|
|
60154
|
+
|
|
60155
|
+
var left=this.Frame.ChartBorder.GetLeft();
|
|
60156
|
+
var right=this.Frame.ChartBorder.GetRight();
|
|
60157
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
60158
|
+
|
|
60159
|
+
var yMax=yLine, yMin=yLine;
|
|
60160
|
+
for(var i=0;i<labInfo.AryLine.length;++i)
|
|
60161
|
+
{
|
|
60162
|
+
var item=labInfo.AryLine[i];
|
|
60163
|
+
if (!IFrameSplitOperator.IsNumber(item.Value)) continue;
|
|
60164
|
+
|
|
60165
|
+
var y=this.Frame.GetYFromData(item.Value);
|
|
60166
|
+
var yFixed=ToFixedPoint(y);
|
|
60167
|
+
var xRight=right;
|
|
60168
|
+
if (IFrameSplitOperator.IsNumber(item.Width)) xRight=left+item.Width*pixelRatio;
|
|
60169
|
+
if (item.Color) this.Canvas.strokeStyle=item.Color;
|
|
60170
|
+
else this.Canvas.strokeStyle=this.LineColor;
|
|
60171
|
+
|
|
60172
|
+
this.Canvas.beginPath();
|
|
60173
|
+
this.Canvas.moveTo(left,yFixed);
|
|
60174
|
+
this.Canvas.lineTo(xRight,yFixed);
|
|
60175
|
+
this.Canvas.stroke();
|
|
60176
|
+
|
|
60177
|
+
if (yMax<yFixed) yMax=yFixed;
|
|
60178
|
+
if (yMin>yFixed) yMin=yFixed;
|
|
60179
|
+
}
|
|
60180
|
+
|
|
60181
|
+
if (yMax!=yMin && labInfo.VLine)
|
|
60182
|
+
{
|
|
60183
|
+
var item=labInfo.VLine;
|
|
60184
|
+
var x=left+20*pixelRatio;
|
|
60185
|
+
if (IFrameSplitOperator.IsNumber(item.XOffset)) x=left+item.XOffset*pixelRatio;
|
|
60186
|
+
x=ToFixedPoint(x);
|
|
60187
|
+
if (item.Color) this.Canvas.strokeStyle=item.Color;
|
|
60188
|
+
else this.Canvas.strokeStyle=this.LineColor;
|
|
60189
|
+
|
|
60190
|
+
this.Canvas.beginPath();
|
|
60191
|
+
this.Canvas.moveTo(x,yMax);
|
|
60192
|
+
this.Canvas.lineTo(x,yMin);
|
|
60193
|
+
this.Canvas.stroke();
|
|
60194
|
+
}
|
|
60195
|
+
}
|
|
60196
|
+
|
|
59850
60197
|
this.DrawValueText=function(y, rtDraw, labInfo)
|
|
59851
60198
|
{
|
|
59852
60199
|
var left=this.Frame.ChartBorder.GetLeft();
|
|
@@ -59991,7 +60338,7 @@ function ChartDrawHLine()
|
|
|
59991
60338
|
this.Canvas.fillStyle=icon.Color;
|
|
59992
60339
|
this.Canvas.fillText(this.Button.SettingIcon.Text,xCenter,yCenter);
|
|
59993
60340
|
|
|
59994
|
-
this.AryButton.push({Rect:rtButton, ID:
|
|
60341
|
+
this.AryButton.push({Rect:rtButton, ID:icon.ID, TooltipText:icon.TooltipText});
|
|
59995
60342
|
|
|
59996
60343
|
/*
|
|
59997
60344
|
if (this.ColseButtonSize>0)
|
|
@@ -60023,7 +60370,7 @@ function ChartDrawHLine()
|
|
|
60023
60370
|
this.Canvas.fillStyle=icon.Color;
|
|
60024
60371
|
this.Canvas.fillText(this.Button.CloseIcon.Text,xCenter,yCenter);
|
|
60025
60372
|
|
|
60026
|
-
this.AryButton.push({Rect:rtButton,ID:
|
|
60373
|
+
this.AryButton.push({Rect:rtButton,ID:icon.ID, TooltipText:icon.TooltipText });
|
|
60027
60374
|
|
|
60028
60375
|
left=rtButton.Right;
|
|
60029
60376
|
}
|
|
@@ -68726,12 +69073,14 @@ function JSChartResource()
|
|
|
68726
69073
|
BorderColor:"rgb(204,204,204)",
|
|
68727
69074
|
Button:
|
|
68728
69075
|
{
|
|
68729
|
-
Font:{ Family:"微软雅黑" },
|
|
69076
|
+
Font:{ Family:"微软雅黑", Size:12*GetDevicePixelRatio() },
|
|
68730
69077
|
TitleColor: { Selected:"rgb(255,255,255)", Default:"rgb(125,125,125)", MoveOn:"rgb(234,85,4)" },
|
|
68731
69078
|
BGColor: { Selected:"rgb(234,85,4)", Default:"rgb(235,235,235)", MoveOn:"rgb(242,242,242)" },
|
|
68732
69079
|
BorderColor:"rgb(204,204,204)",
|
|
68733
69080
|
|
|
68734
|
-
Mergin: { Left:5*GetDevicePixelRatio(), Right:5*GetDevicePixelRatio(), Top:4*GetDevicePixelRatio(), Bottom:2*GetDevicePixelRatio() }
|
|
69081
|
+
Mergin: { Left:5*GetDevicePixelRatio(), Right:5*GetDevicePixelRatio(), Top:4*GetDevicePixelRatio(), Bottom:2*GetDevicePixelRatio() },
|
|
69082
|
+
|
|
69083
|
+
SVG:{ Family:"iconfont", Size:12*GetDevicePixelRatio(), MerginLeft:4*GetDevicePixelRatio() }
|
|
68735
69084
|
}
|
|
68736
69085
|
}
|
|
68737
69086
|
|
|
@@ -69750,6 +70099,15 @@ function JSChartResource()
|
|
|
69750
70099
|
if (IFrameSplitOperator.IsNumber(item.Top)) destItem.Top=item.Top;
|
|
69751
70100
|
if (IFrameSplitOperator.IsNumber(item.Bottom)) destItem.Bottom=item.Bottom;
|
|
69752
70101
|
}
|
|
70102
|
+
|
|
70103
|
+
if (button.SVG)
|
|
70104
|
+
{
|
|
70105
|
+
var item=button.SVG;
|
|
70106
|
+
var destItem=this.FrameButtomToolbar.Button.SVG;
|
|
70107
|
+
if (IFrameSplitOperator.IsNumber(item.Size)) destItem.Size=item.Size;
|
|
70108
|
+
if (IFrameSplitOperator.IsNumber(item.MerginLeft)) destItem.MerginLeft=item.MerginLeft;
|
|
70109
|
+
if (item.Family) destItem.Family=item.Family;
|
|
70110
|
+
}
|
|
69753
70111
|
}
|
|
69754
70112
|
|
|
69755
70113
|
}
|
|
@@ -72012,10 +72370,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72012
72370
|
isShowMenu=data.IsShowMenu;
|
|
72013
72371
|
}
|
|
72014
72372
|
|
|
72015
|
-
|
|
72016
|
-
if (isShowMenu && this.SelectRectRightMenu)
|
|
72373
|
+
if (isShowMenu)
|
|
72017
72374
|
{
|
|
72018
|
-
|
|
72375
|
+
var data=
|
|
72019
72376
|
{
|
|
72020
72377
|
Chart:this,
|
|
72021
72378
|
X:x,
|
|
@@ -72023,8 +72380,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72023
72380
|
SelectData:selectData, //区间选择的数据
|
|
72024
72381
|
RectSelectPaint:paint //区间选择背景
|
|
72025
72382
|
};
|
|
72383
|
+
e.data=data;
|
|
72026
72384
|
|
|
72027
|
-
this.
|
|
72385
|
+
this.PopupSelectRectMenuV2(data, e);
|
|
72028
72386
|
}
|
|
72029
72387
|
}
|
|
72030
72388
|
|
|
@@ -72059,7 +72417,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72059
72417
|
this.ShowSelectData=function(selectData)
|
|
72060
72418
|
{
|
|
72061
72419
|
this.HideSelectRect();
|
|
72062
|
-
if (this.SelectRectRightMenu) this.SelectRectRightMenu.Hide();
|
|
72063
72420
|
|
|
72064
72421
|
JSConsole.Chart.Log('[KLineChartContainer::ShowSelectData] selectData', selectData);
|
|
72065
72422
|
var dataOffset=selectData.Start;
|
|
@@ -72144,9 +72501,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72144
72501
|
isShowMenu=data.IsShowMenu;
|
|
72145
72502
|
}
|
|
72146
72503
|
|
|
72147
|
-
if (isShowMenu
|
|
72504
|
+
if (isShowMenu)
|
|
72148
72505
|
{
|
|
72149
|
-
|
|
72506
|
+
var data=
|
|
72150
72507
|
{
|
|
72151
72508
|
Chart:this,
|
|
72152
72509
|
X:corssCursor.LastPoint.X/pixelTatio,
|
|
@@ -72154,7 +72511,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72154
72511
|
SelectData:selectData, //区间选择的数据
|
|
72155
72512
|
RectSelectPaint:paint //区间选择背景
|
|
72156
72513
|
};
|
|
72157
|
-
|
|
72514
|
+
e.data=data
|
|
72515
|
+
|
|
72516
|
+
this.PopupSelectRectMenuV2(data, e);
|
|
72158
72517
|
}
|
|
72159
72518
|
}
|
|
72160
72519
|
|
|
@@ -76061,32 +76420,315 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
76061
76420
|
}
|
|
76062
76421
|
}
|
|
76063
76422
|
|
|
76064
|
-
|
|
76065
76423
|
//注册鼠标右键事件
|
|
76066
76424
|
this.OnRightMenu=function(x,y,e)
|
|
76067
76425
|
{
|
|
76068
76426
|
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
76069
|
-
|
|
76070
|
-
{
|
|
76071
|
-
|
|
76072
|
-
e.data={ Chart:this, FrameID:frameId };
|
|
76073
|
-
this.RightMenu.DoModal(e);
|
|
76074
|
-
}
|
|
76075
|
-
|
|
76427
|
+
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
76428
|
+
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
76429
|
+
|
|
76076
76430
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);
|
|
76077
76431
|
if (event)
|
|
76078
76432
|
{
|
|
76079
|
-
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
76080
76433
|
var data={ X:x, Y:y, Event:e, FrameID:frameId };
|
|
76081
76434
|
event.Callback(event,data,this);
|
|
76082
76435
|
}
|
|
76083
76436
|
}
|
|
76084
76437
|
|
|
76438
|
+
//右键菜单数据
|
|
76439
|
+
this.GetRightMenuData=function(frameID)
|
|
76440
|
+
{
|
|
76441
|
+
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
76442
|
+
var klineChart=this.ChartPaint[0];
|
|
76443
|
+
var priceGap=klineChart.PriceGap; //缺口配置信息
|
|
76444
|
+
var coordinateType=null, yCoordinateType=null; //坐标类型
|
|
76445
|
+
var mainFrame=null;
|
|
76446
|
+
if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
|
|
76447
|
+
if (mainFrame)
|
|
76448
|
+
{
|
|
76449
|
+
coordinateType=mainFrame.CoordinateType;
|
|
76450
|
+
if (mainFrame.YSplitOperator) yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
|
|
76451
|
+
}
|
|
76452
|
+
|
|
76453
|
+
var aryKLineInfo=[]; //信息地雷
|
|
76454
|
+
for(var i=0;i<this.ChartInfo.length;++i)
|
|
76455
|
+
{
|
|
76456
|
+
var item=this.ChartInfo[i];
|
|
76457
|
+
if (item && item.ClassName) aryKLineInfo.push(item.ClassName);
|
|
76458
|
+
}
|
|
76459
|
+
|
|
76460
|
+
var aryOverlaySymbol=[]; //叠加的股票列表
|
|
76461
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
76462
|
+
{
|
|
76463
|
+
var item=this.OverlayChartPaint[i];
|
|
76464
|
+
if (item && item.Symbol) aryOverlaySymbol.push(item.Symbol)
|
|
76465
|
+
}
|
|
76466
|
+
|
|
76467
|
+
var bBGSpit=false, bShowDrawTool=false, bShowStockChip=false;
|
|
76468
|
+
if (this.GetExtendChartByClassName("SessionBreaksPaint")) bBGSpit=true;
|
|
76469
|
+
if (this.GetExtendChartByClassName('DrawToolsButton')) bShowDrawTool=true; //画图工具
|
|
76470
|
+
if (this.GetExtendChartByClassName('StockChip')) bShowStockChip=true; //筹码
|
|
76471
|
+
|
|
76472
|
+
var aryMenu=
|
|
76473
|
+
[
|
|
76474
|
+
{
|
|
76475
|
+
Name:"分析周期",
|
|
76476
|
+
SubMenu:
|
|
76477
|
+
[
|
|
76478
|
+
{ Name:"日线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[0] }, Checked:this.Period==0 },
|
|
76479
|
+
{ Name:"周线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[1] }, Checked:this.Period==1 },
|
|
76480
|
+
{ Name:"双周线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[21]}, Checked:this.Period==21 },
|
|
76481
|
+
{ Name:"月线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[2]}, Checked:this.Period==2 },
|
|
76482
|
+
{ Name:"季线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[9]}, Checked:this.Period==9 },
|
|
76483
|
+
{ Name:"半年", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[22]}, Checked:this.Period==22 },
|
|
76484
|
+
{ Name:"年线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[3]}, Checked:this.Period==3 },
|
|
76485
|
+
{ Name:"1分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[4]}, Checked:this.Period==4 },
|
|
76486
|
+
{ Name:"5分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[5]}, Checked:this.Period==5 },
|
|
76487
|
+
{ Name:"15分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[6]}, Checked:this.Period==6 },
|
|
76488
|
+
{ Name:"30分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[7]}, Checked:this.Period==7 },
|
|
76489
|
+
{ Name:"60分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[8]}, Checked:this.Period==8 },
|
|
76490
|
+
{ Name:"2小时", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[11]}, Checked:this.Period==11 },
|
|
76491
|
+
{ Name:"4小时", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[12]}, Checked:this.Period==12 },
|
|
76492
|
+
{ Name:"分笔", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[10]}, Checked:this.Period==10 },
|
|
76493
|
+
{ Name:"自定义周期:3分钟", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[20003]}, Checked:this.Period==20003 },
|
|
76494
|
+
{ Name:"自定义周期:35分钟", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[20035]}, Checked:this.Period==20035 },
|
|
76495
|
+
{ Name:"自定义周期:8日", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[40008]}, Checked:this.Period==40008 },
|
|
76496
|
+
]
|
|
76497
|
+
},
|
|
76498
|
+
{
|
|
76499
|
+
Name:"指标切换",
|
|
76500
|
+
SubMenu:
|
|
76501
|
+
[
|
|
76502
|
+
{ Name:"均线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "均线"]}},
|
|
76503
|
+
{ Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BOLL"]}},
|
|
76504
|
+
{ Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
|
|
76505
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
|
|
76506
|
+
{ Name:"VOL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "VOL"]}},
|
|
76507
|
+
{ Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
|
|
76508
|
+
{ Name:"BRAR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BRAR"]}},
|
|
76509
|
+
{ Name:"WR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "WR"]}},
|
|
76510
|
+
]
|
|
76511
|
+
},
|
|
76512
|
+
{
|
|
76513
|
+
Name:"五彩K线",
|
|
76514
|
+
SubMenu:
|
|
76515
|
+
[
|
|
76516
|
+
{ Name:"十字星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-十字星"]}},
|
|
76517
|
+
{ Name:"早晨之星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-早晨之星"]}},
|
|
76518
|
+
{ Name:"垂死十字", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-垂死十字"]}},
|
|
76519
|
+
{ Name:"三只乌鸦", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-三只乌鸦"]}},
|
|
76520
|
+
{ Name:"光脚阴线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-光脚阴线"]}},
|
|
76521
|
+
{ Name:"黄昏之星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-黄昏之星"]}},
|
|
76522
|
+
]
|
|
76523
|
+
|
|
76524
|
+
},
|
|
76525
|
+
{
|
|
76526
|
+
Name:"专家系统",
|
|
76527
|
+
SubMenu:
|
|
76528
|
+
[
|
|
76529
|
+
{ Name:"BIAS", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-BIAS"]}},
|
|
76530
|
+
{ Name:"CCI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-CCI"]}},
|
|
76531
|
+
{ Name:"DMI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-DMI"]}},
|
|
76532
|
+
{ Name:"KD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-KD"]}},
|
|
76533
|
+
{ Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-BOLL"]}},
|
|
76534
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-KDJ"]}},
|
|
76535
|
+
]
|
|
76536
|
+
},
|
|
76537
|
+
{
|
|
76538
|
+
Name:"信息地雷",
|
|
76539
|
+
SubMenu:
|
|
76540
|
+
[
|
|
76541
|
+
{ Name:"公告", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["公告", !aryKLineInfo.includes("AnnouncementInfo")]}, Checked:aryKLineInfo.includes("AnnouncementInfo") },
|
|
76542
|
+
{ Name:"业绩预告", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["业绩预告", !aryKLineInfo.includes("PforecastInfo")]}, Checked:aryKLineInfo.includes("PforecastInfo") },
|
|
76543
|
+
{ Name:"调研", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["调研", !aryKLineInfo.includes("ResearchInfo") ]}, Checked:aryKLineInfo.includes("ResearchInfo") },
|
|
76544
|
+
{ Name:"大宗交易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["大宗交易", !aryKLineInfo.includes("BlockTrading")]}, Checked:aryKLineInfo.includes("BlockTrading") },
|
|
76545
|
+
{ Name:"龙虎榜", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["龙虎榜", !aryKLineInfo.includes("TradeDetail")]}, Checked:aryKLineInfo.includes("TradeDetail") },
|
|
76546
|
+
{ Name:"互动易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["互动易", !aryKLineInfo.includes("InvestorInfo")]}, Checked:aryKLineInfo.includes("InvestorInfo") },
|
|
76547
|
+
]
|
|
76548
|
+
},
|
|
76549
|
+
{
|
|
76550
|
+
Name:"缺口提示",
|
|
76551
|
+
SubMenu:
|
|
76552
|
+
[
|
|
76553
|
+
{ Name:"显示1个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 1]}, Checked:(priceGap.Enable==true && priceGap.Count==1) },
|
|
76554
|
+
{ Name:"显示2个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 2]}, Checked:(priceGap.Enable==true && priceGap.Count==2) },
|
|
76555
|
+
{ Name:"显示3个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 3]}, Checked:(priceGap.Enable==true && priceGap.Count==3) },
|
|
76556
|
+
{ Name:"隐藏缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[false]}, Checked:priceGap.Enable==false },
|
|
76557
|
+
]
|
|
76558
|
+
},
|
|
76559
|
+
{
|
|
76560
|
+
Name:"叠加品种",
|
|
76561
|
+
SubMenu:
|
|
76562
|
+
[
|
|
76563
|
+
{ Name:"上证指数", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000001.sh", !aryOverlaySymbol.includes("000001.sh")]}, Checked:aryOverlaySymbol.includes("000001.sh") },
|
|
76564
|
+
{ Name:"深证成指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399001.sz", !aryOverlaySymbol.includes("399001.sz")]}, Checked:aryOverlaySymbol.includes("399001.sz") },
|
|
76565
|
+
{ Name:"中小板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399005.sz", !aryOverlaySymbol.includes("399005.sz")]}, Checked:aryOverlaySymbol.includes("399005.sz") },
|
|
76566
|
+
{ Name:"创业板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399006.sz", !aryOverlaySymbol.includes("399006.sz")]}, Checked:aryOverlaySymbol.includes("399006.sz") },
|
|
76567
|
+
{ Name:"沪深300", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000300.sh", !aryOverlaySymbol.includes("000300.sh")]}, Checked:aryOverlaySymbol.includes("000300.sh")},
|
|
76568
|
+
]
|
|
76569
|
+
},
|
|
76570
|
+
{
|
|
76571
|
+
Name:"主图线型",
|
|
76572
|
+
SubMenu:
|
|
76573
|
+
[
|
|
76574
|
+
{ Name:"K线(空心阳线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[3]} },
|
|
76575
|
+
{ Name:"K线(实心阳线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[0]} },
|
|
76576
|
+
{ Name:"美国线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[2, true, { IsThinAKBar:false }]} },
|
|
76577
|
+
{ Name:"美国线(细)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[2, true, { IsThinAKBar:true }]} },
|
|
76578
|
+
{ Name:"收盘线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[1]} },
|
|
76579
|
+
{ Name:"收盘面积", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[4]} },
|
|
76580
|
+
{ Name:"K线(空心阳线阴线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[6]} },
|
|
76581
|
+
{ Name:"Heikin Ashi", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[11]} },
|
|
76582
|
+
{ Name:"Line Break", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[12]} },
|
|
76583
|
+
{ Name:"High-low", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[13]} },
|
|
76584
|
+
{ Name:"HLC Area", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[15]} },
|
|
76585
|
+
]
|
|
76586
|
+
},
|
|
76587
|
+
{
|
|
76588
|
+
Name:"坐标类型",
|
|
76589
|
+
SubMenu:
|
|
76590
|
+
[
|
|
76591
|
+
{ Name:"反转坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ IsReverse:coordinateType==0 }]}, Checked:coordinateType==1 },
|
|
76592
|
+
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
76593
|
+
|
|
76594
|
+
{ Name:"普通坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:0 }]}, Checked:yCoordinateType==0 },
|
|
76595
|
+
{ Name:"百分比坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:1 }]}, Checked:yCoordinateType==1 },
|
|
76596
|
+
{ Name:"对数坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:2 }]}, Checked:yCoordinateType==2 },
|
|
76597
|
+
{ Name:"等比坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:3 }]}, Checked:yCoordinateType==3 },
|
|
76598
|
+
{ Name:"等分坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:4 }]}, Checked:yCoordinateType==4 },
|
|
76599
|
+
{ Name:"黄金分割", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:5 }]}, Checked:yCoordinateType==5},
|
|
76600
|
+
|
|
76601
|
+
]
|
|
76602
|
+
},
|
|
76603
|
+
{
|
|
76604
|
+
Name:"指标窗口个数",
|
|
76605
|
+
SubMenu:
|
|
76606
|
+
[
|
|
76607
|
+
{ Name:"1个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[2]}, Checked:2==windowCount },
|
|
76608
|
+
{ Name:"2个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[3]}, Checked:3==windowCount },
|
|
76609
|
+
{ Name:"3个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[4]}, Checked:4==windowCount },
|
|
76610
|
+
{ Name:"4个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[5]}, Checked:5==windowCount },
|
|
76611
|
+
{ Name:"5个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[6]}, Checked:6==windowCount },
|
|
76612
|
+
]
|
|
76613
|
+
},
|
|
76614
|
+
{
|
|
76615
|
+
Name:"其他设置",
|
|
76616
|
+
SubMenu:
|
|
76617
|
+
[
|
|
76618
|
+
|
|
76619
|
+
{ Name:"禁止拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[0]}, Checked:0==this.DragMode },
|
|
76620
|
+
{ Name:"启动拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1]}, Checked:1==this.DragMode },
|
|
76621
|
+
{ Name:"区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[2]}, Checked:2==this.DragMode },
|
|
76622
|
+
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
76623
|
+
|
|
76624
|
+
{ Name:"背景分割", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID, Args:[!bBGSpit]}, Checked:bBGSpit},
|
|
76625
|
+
|
|
76626
|
+
{ Name:"画图工具", Data:{ ID:bShowDrawTool?JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID, Args:[]}, Checked:bShowDrawTool},
|
|
76627
|
+
|
|
76628
|
+
{ Name:"移动筹码图", Data:{ ID:bShowStockChip?JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID, Args:[]}, Checked:bShowStockChip},
|
|
76629
|
+
]
|
|
76630
|
+
}
|
|
76631
|
+
];
|
|
76632
|
+
|
|
76633
|
+
//复权
|
|
76634
|
+
if(!MARKET_SUFFIX_NAME.IsSHSZIndex(this.Symbol) && !MARKET_SUFFIX_NAME.IsBIT(this.Symbol))
|
|
76635
|
+
{
|
|
76636
|
+
var rightMenu=
|
|
76637
|
+
{
|
|
76638
|
+
Name:"复权处理",
|
|
76639
|
+
SubMenu:
|
|
76640
|
+
[
|
|
76641
|
+
{ Name:"不复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[0]}, Checked:0==this.Right },
|
|
76642
|
+
{ Name:"前复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[1]}, Checked:1==this.Right },
|
|
76643
|
+
{ Name:"后复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[2]}, Checked:2==this.Right }
|
|
76644
|
+
]
|
|
76645
|
+
};
|
|
76646
|
+
|
|
76647
|
+
aryMenu.splice(1,0,rightMenu);
|
|
76648
|
+
}
|
|
76649
|
+
|
|
76650
|
+
//删除菜单
|
|
76651
|
+
for(var i=0;i<aryMenu.length;++i)
|
|
76652
|
+
{
|
|
76653
|
+
var item=aryMenu[i];
|
|
76654
|
+
if (item.Name=="五彩K线")
|
|
76655
|
+
{
|
|
76656
|
+
if (this.ColorIndex)
|
|
76657
|
+
{
|
|
76658
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76659
|
+
item.SubMenu.push({ Name:"删除五彩K线", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID} });
|
|
76660
|
+
}
|
|
76661
|
+
}
|
|
76662
|
+
else if (item.Name=="专家系统")
|
|
76663
|
+
{
|
|
76664
|
+
if (this.TradeIndex)
|
|
76665
|
+
{
|
|
76666
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76667
|
+
item.SubMenu.push({ Name:"删除专家系统", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID} });
|
|
76668
|
+
}
|
|
76669
|
+
}
|
|
76670
|
+
else if (item.Name=="叠加品种")
|
|
76671
|
+
{
|
|
76672
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
76673
|
+
{
|
|
76674
|
+
if (item.SubMenu[j].Checked)
|
|
76675
|
+
{
|
|
76676
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76677
|
+
item.SubMenu.push({ Name:"取消叠加", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID} });
|
|
76678
|
+
break;
|
|
76679
|
+
}
|
|
76680
|
+
}
|
|
76681
|
+
}
|
|
76682
|
+
else if (item.Name=="信息地雷")
|
|
76683
|
+
{
|
|
76684
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
76685
|
+
{
|
|
76686
|
+
if (item.SubMenu[j].Checked)
|
|
76687
|
+
{
|
|
76688
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76689
|
+
item.SubMenu.push({ Name:"删除所有", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID} });
|
|
76690
|
+
break;
|
|
76691
|
+
}
|
|
76692
|
+
}
|
|
76693
|
+
}
|
|
76694
|
+
}
|
|
76695
|
+
|
|
76696
|
+
return aryMenu;
|
|
76697
|
+
}
|
|
76698
|
+
|
|
76699
|
+
this.PopupRightMenuV2=function(data,e)
|
|
76700
|
+
{
|
|
76701
|
+
if (!this.JSPopMenu) return;
|
|
76702
|
+
var x=data.X, y=data.Y;
|
|
76703
|
+
var frameID=data.FrameID;
|
|
76704
|
+
var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
76705
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
76706
|
+
|
|
76707
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
76708
|
+
}
|
|
76709
|
+
|
|
76710
|
+
this.PopupSelectRectMenuV2=function(data, e)
|
|
76711
|
+
{
|
|
76712
|
+
var aryMenu=
|
|
76713
|
+
[
|
|
76714
|
+
{ Name:"区间统计", Data:{ ID:JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID, Args:[e] }},
|
|
76715
|
+
{ Name:"区间放大", Data:{ ID:JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID, Args:[data.SelectData] }}
|
|
76716
|
+
];
|
|
76717
|
+
|
|
76718
|
+
var menuData={ Menu:aryMenu, Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
76719
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
76720
|
+
var x=data.X, y=data.Y;
|
|
76721
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
76722
|
+
}
|
|
76723
|
+
|
|
76085
76724
|
//重新加载画图工具(切换股票|周期)
|
|
76086
76725
|
this.ReloadChartDrawPicture=function()
|
|
76087
76726
|
{
|
|
76088
76727
|
this.ChartDrawPicture=[];
|
|
76089
|
-
this.
|
|
76728
|
+
if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.IsSelected=false;
|
|
76729
|
+
this.SelectChartDrawPicture=null;
|
|
76730
|
+
this.CurrentChartDrawPicture=null;
|
|
76731
|
+
|
|
76090
76732
|
if (this.ChartDrawStorage)
|
|
76091
76733
|
{
|
|
76092
76734
|
this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData( {Symbol:this.Symbol, Period:this.Period} );
|
|
@@ -77477,7 +78119,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
77477
78119
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_EXTENDCHART_BUTTON);
|
|
77478
78120
|
if (event && event.Callback)
|
|
77479
78121
|
{
|
|
77480
|
-
var data={ Info:button, PreventDefault:false }; //PreventDefault 是否阻止内置的点击处理
|
|
78122
|
+
var data={ Info:button, PreventDefault:false, e:e }; //PreventDefault 是否阻止内置的点击处理
|
|
77481
78123
|
event.Callback(event,data,this);
|
|
77482
78124
|
if (data.PreventDefault) return;
|
|
77483
78125
|
}
|
|
@@ -79444,22 +80086,135 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79444
80086
|
//注册鼠标右键事件
|
|
79445
80087
|
this.OnRightMenu=function(x,y,e)
|
|
79446
80088
|
{
|
|
79447
|
-
|
|
79448
|
-
|
|
79449
|
-
|
|
79450
|
-
|
|
79451
|
-
this.RightMenu.DoModal(e);
|
|
79452
|
-
}
|
|
79453
|
-
|
|
80089
|
+
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
80090
|
+
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
80091
|
+
this.PopupRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
80092
|
+
|
|
79454
80093
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);
|
|
79455
80094
|
if (event)
|
|
79456
80095
|
{
|
|
79457
|
-
var frameId=this.Frame.PtInFrame(x,y);
|
|
79458
80096
|
var data={ X:x, Y:y, Event:e, FrameID:frameId };
|
|
79459
80097
|
event.Callback(event,data,this);
|
|
79460
80098
|
}
|
|
79461
80099
|
}
|
|
79462
80100
|
|
|
80101
|
+
//右键菜单数据
|
|
80102
|
+
this.GetRightMenuData=function(frameID)
|
|
80103
|
+
{
|
|
80104
|
+
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
80105
|
+
|
|
80106
|
+
var aryOverlaySymbol=[]; //叠加的股票列表
|
|
80107
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
80108
|
+
{
|
|
80109
|
+
var item=this.OverlayChartPaint[i];
|
|
80110
|
+
if (item && item.Symbol) aryOverlaySymbol.push(item.Symbol)
|
|
80111
|
+
}
|
|
80112
|
+
|
|
80113
|
+
var bShowDrawTool=false;
|
|
80114
|
+
if (this.GetExtendChartByClassName('DrawToolsButton')) bShowDrawTool=true; //画图工具
|
|
80115
|
+
|
|
80116
|
+
var aryMenu=
|
|
80117
|
+
[
|
|
80118
|
+
{
|
|
80119
|
+
Name:"叠加品种",
|
|
80120
|
+
SubMenu:
|
|
80121
|
+
[
|
|
80122
|
+
{ Name:"上证指数", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000001.sh", !aryOverlaySymbol.includes("000001.sh")]}, Checked:aryOverlaySymbol.includes("000001.sh") },
|
|
80123
|
+
{ Name:"深证成指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399001.sz", !aryOverlaySymbol.includes("399001.sz")]}, Checked:aryOverlaySymbol.includes("399001.sz") },
|
|
80124
|
+
{ Name:"中小板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399005.sz", !aryOverlaySymbol.includes("399005.sz")]}, Checked:aryOverlaySymbol.includes("399005.sz") },
|
|
80125
|
+
{ Name:"创业板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399006.sz", !aryOverlaySymbol.includes("399006.sz")]}, Checked:aryOverlaySymbol.includes("399006.sz") },
|
|
80126
|
+
{ Name:"沪深300", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000300.sh", !aryOverlaySymbol.includes("000300.sh")]}, Checked:aryOverlaySymbol.includes("000300.sh")},
|
|
80127
|
+
]
|
|
80128
|
+
},
|
|
80129
|
+
{
|
|
80130
|
+
Name:"多日分时图",
|
|
80131
|
+
SubMenu:
|
|
80132
|
+
[
|
|
80133
|
+
{ Name:"当日分时图", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[1]}, Checked:this.DayCount==1 },
|
|
80134
|
+
{ Name:"最近2日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[2]}, Checked:this.DayCount==2 },
|
|
80135
|
+
{ Name:"最近3日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[3]}, Checked:this.DayCount==3 },
|
|
80136
|
+
{ Name:"最近4日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[4]}, Checked:this.DayCount==4 },
|
|
80137
|
+
{ Name:"最近5日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[5]}, Checked:this.DayCount==5 },
|
|
80138
|
+
]
|
|
80139
|
+
},
|
|
80140
|
+
{
|
|
80141
|
+
Name:"指标窗口个数",
|
|
80142
|
+
SubMenu:
|
|
80143
|
+
[
|
|
80144
|
+
{ Name:"1个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[2]}, Checked:3==windowCount },
|
|
80145
|
+
{ Name:"2个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[3]}, Checked:4==windowCount },
|
|
80146
|
+
{ Name:"3个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[4]}, Checked:5==windowCount },
|
|
80147
|
+
{ Name:"4个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[5]}, Checked:6==windowCount },
|
|
80148
|
+
{ Name:"5个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[6]}, Checked:7==windowCount },
|
|
80149
|
+
]
|
|
80150
|
+
},
|
|
80151
|
+
{
|
|
80152
|
+
Name:"指标切换",
|
|
80153
|
+
SubMenu:
|
|
80154
|
+
[
|
|
80155
|
+
{ Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
|
|
80156
|
+
{ Name:"DMI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "DMI"]}},
|
|
80157
|
+
{ Name:"DMA", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "DMA"]}},
|
|
80158
|
+
{ Name:"BRAR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BRAR"]}},
|
|
80159
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
|
|
80160
|
+
{ Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
|
|
80161
|
+
{ Name:"WR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "WR"]}},
|
|
80162
|
+
{ Name:"CCI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "CCI"]}},
|
|
80163
|
+
{ Name:"TRIX", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "TRIX"]}},
|
|
80164
|
+
]
|
|
80165
|
+
},
|
|
80166
|
+
{
|
|
80167
|
+
Name:"区间选择",Data:{ ID: JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID, Args:[!this.EnableSelectRect]}, Checked:this.EnableSelectRect
|
|
80168
|
+
},
|
|
80169
|
+
{
|
|
80170
|
+
Name:"其他设置",
|
|
80171
|
+
SubMenu:
|
|
80172
|
+
[
|
|
80173
|
+
{ Name:"画图工具", Data:{ ID:bShowDrawTool?JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID, Args:[]}, Checked:bShowDrawTool},
|
|
80174
|
+
]
|
|
80175
|
+
}
|
|
80176
|
+
|
|
80177
|
+
];
|
|
80178
|
+
|
|
80179
|
+
if (MARKET_SUFFIX_NAME.IsSHSZStockA(this.Symbol))
|
|
80180
|
+
{
|
|
80181
|
+
var item={ Name:"集合竞价",Data:{ ID: JSCHART_MENU_ID.CMD_SHOW_BEFORE_DATA_ID, Args:[!this.IsShowBeforeData] }, Checked:this.IsShowBeforeData };
|
|
80182
|
+
aryMenu.splice(4,0,item);
|
|
80183
|
+
}
|
|
80184
|
+
|
|
80185
|
+
|
|
80186
|
+
//删除菜单
|
|
80187
|
+
for(var i=0;i<aryMenu.length;++i)
|
|
80188
|
+
{
|
|
80189
|
+
var item=aryMenu[i];
|
|
80190
|
+
if (item.Name=="叠加品种")
|
|
80191
|
+
{
|
|
80192
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
80193
|
+
{
|
|
80194
|
+
if (item.SubMenu[j].Checked)
|
|
80195
|
+
{
|
|
80196
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
80197
|
+
item.SubMenu.push({ Name:"取消叠加", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID} });
|
|
80198
|
+
break;
|
|
80199
|
+
}
|
|
80200
|
+
}
|
|
80201
|
+
}
|
|
80202
|
+
}
|
|
80203
|
+
|
|
80204
|
+
return aryMenu;
|
|
80205
|
+
}
|
|
80206
|
+
|
|
80207
|
+
this.PopupRightMenuV2=function(data,e)
|
|
80208
|
+
{
|
|
80209
|
+
if (!this.JSPopMenu) return;
|
|
80210
|
+
var x=data.X, y=data.Y;
|
|
80211
|
+
var frameID=data.FrameID;
|
|
80212
|
+
var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
80213
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
80214
|
+
|
|
80215
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
80216
|
+
}
|
|
80217
|
+
|
|
79463
80218
|
this.OnWheel=function(e)
|
|
79464
80219
|
{
|
|
79465
80220
|
JSConsole.Chart.Log('[MinuteChartContainer::OnWheel]',e);
|
|
@@ -80564,15 +81319,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
80564
81319
|
this.ResetDayOffset();
|
|
80565
81320
|
}
|
|
80566
81321
|
|
|
80567
|
-
|
|
80568
|
-
{
|
|
80569
|
-
this.ChartDrawPicture=[];
|
|
80570
|
-
}
|
|
80571
|
-
else
|
|
80572
|
-
{
|
|
80573
|
-
this.ReloadChartDrawPicture();
|
|
80574
|
-
}
|
|
80575
|
-
|
|
81322
|
+
this.ReloadChartDrawPicture();
|
|
80576
81323
|
this.ResetDataStatus();
|
|
80577
81324
|
this.ClearIndexPaint(); //清空指标
|
|
80578
81325
|
this.Frame.ClearYCoordinateMaxMin();
|
|
@@ -81094,6 +81841,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
81094
81841
|
this.TitlePaint[0].IsShowDate=true;
|
|
81095
81842
|
this.UpdateDataOffset();
|
|
81096
81843
|
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
81844
|
+
this.CreateChartDrawPictureByStorage(); //创建画图工具
|
|
81097
81845
|
|
|
81098
81846
|
//执行脚本
|
|
81099
81847
|
if (this.Frame.SubFrame.length>2)
|
|
@@ -81392,7 +82140,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
81392
82140
|
this.UpdateLatestMinuteDataV2(minuteData);
|
|
81393
82141
|
this.UpdateHistoryMinuteUI(updateTime);
|
|
81394
82142
|
this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"} );
|
|
81395
|
-
this.RequestOverlayMinuteData();
|
|
82143
|
+
this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
|
|
81396
82144
|
this.BindAllOverlayIndexData(this.SourceData);
|
|
81397
82145
|
this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
|
|
81398
82146
|
this.AutoUpdate();
|
|
@@ -82812,7 +83560,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
82812
83560
|
this.ReloadChartDrawPicture=function()
|
|
82813
83561
|
{
|
|
82814
83562
|
this.ChartDrawPicture=[];
|
|
82815
|
-
this.
|
|
83563
|
+
if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.IsSelected=false;
|
|
83564
|
+
this.SelectChartDrawPicture=null;
|
|
83565
|
+
this.CurrentChartDrawPicture=null;
|
|
83566
|
+
this.MoveOnChartDrawPicture=null;
|
|
83567
|
+
|
|
82816
83568
|
if (this.ChartDrawStorage)
|
|
82817
83569
|
{
|
|
82818
83570
|
this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData( { Symbol:this.Symbol, Period:888888888 } );
|
|
@@ -82823,7 +83575,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
82823
83575
|
{
|
|
82824
83576
|
if (!this.ChartDrawStorageCache || this.ChartDrawStorageCache.length<=0) return;
|
|
82825
83577
|
|
|
82826
|
-
|
|
83578
|
+
var self=this;
|
|
83579
|
+
for(var i=0; i<this.ChartDrawStorageCache.length; ++i)
|
|
82827
83580
|
{
|
|
82828
83581
|
var item=this.ChartDrawStorageCache[i];
|
|
82829
83582
|
if (item.FrameID<0 || !this.Frame.SubFrame || this.Frame.SubFrame.length<item.FrameID) continue;
|
|
@@ -82834,8 +83587,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
82834
83587
|
drawPicture.Canvas=this.Canvas;
|
|
82835
83588
|
drawPicture.Status=10;
|
|
82836
83589
|
drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
|
|
83590
|
+
if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
|
|
83591
|
+
drawPicture.ResetXValue();
|
|
82837
83592
|
drawPicture.UpdateXValue();
|
|
82838
83593
|
drawPicture.ValueToPoint();
|
|
83594
|
+
drawPicture.GetActiveDrawPicture=()=>{ return this.GetActiveDrawPicture(); }
|
|
82839
83595
|
|
|
82840
83596
|
if (drawPicture.ClassName==='ChartDrawPictureText') drawPicture.IsInitialized=true;
|
|
82841
83597
|
|
|
@@ -89375,1479 +90131,6 @@ function WaitDialog(divElement)
|
|
|
89375
90131
|
}
|
|
89376
90132
|
}
|
|
89377
90133
|
|
|
89378
|
-
//K线右键菜单类
|
|
89379
|
-
//id:"kline"
|
|
89380
|
-
function KLineRightMenu(divElement)
|
|
89381
|
-
{
|
|
89382
|
-
this.newMethod=IDivDialog; //派生
|
|
89383
|
-
this.newMethod(divElement);
|
|
89384
|
-
delete this.newMethod;
|
|
89385
|
-
|
|
89386
|
-
this.option={};
|
|
89387
|
-
|
|
89388
|
-
this.Create = function () {
|
|
89389
|
-
var _self = this;
|
|
89390
|
-
|
|
89391
|
-
this.ID=Guid();
|
|
89392
|
-
|
|
89393
|
-
_self.BindData();
|
|
89394
|
-
_self.BindEvent();
|
|
89395
|
-
}
|
|
89396
|
-
this.BindData=function(){
|
|
89397
|
-
var _self = this;
|
|
89398
|
-
|
|
89399
|
-
var id=this.DivElement.id;
|
|
89400
|
-
var $body = $("#" + id);
|
|
89401
|
-
|
|
89402
|
-
$body.find("div[id^='topMenu_']").remove();
|
|
89403
|
-
$body.find("div[id^='childMenu_']").remove();
|
|
89404
|
-
|
|
89405
|
-
var $topMenu = $("<div />");
|
|
89406
|
-
$topMenu.attr("id", "topMenu_"+_self.ID).addClass("context-menu-wrapper topmenu").hide();
|
|
89407
|
-
$body.append($topMenu);
|
|
89408
|
-
|
|
89409
|
-
var $topTable = $("<table />");
|
|
89410
|
-
$topTable.attr({ id: "topTable_" + _self.ID, cellspacing: "0", cellpadding: "0" }).addClass("context-menu");
|
|
89411
|
-
$topMenu.append($topTable);
|
|
89412
|
-
|
|
89413
|
-
$topTable.append(_self.childrenList(_self.option.data));
|
|
89414
|
-
|
|
89415
|
-
for (var i = 0; i < _self.option.data.length; i++) {
|
|
89416
|
-
var isHasChildren = typeof _self.option.data[i].children != "undefined";
|
|
89417
|
-
|
|
89418
|
-
if (isHasChildren) {
|
|
89419
|
-
|
|
89420
|
-
var $childMenu = $("<div />");
|
|
89421
|
-
$childMenu.attr({ id: "childMenu_"+_self.ID + i, "data-index": i }).addClass("context-menu-wrapper").hide();
|
|
89422
|
-
$body.append($childMenu);
|
|
89423
|
-
|
|
89424
|
-
var $childTable = $("<table />");
|
|
89425
|
-
$childTable.attr({ id: "childTable_" + _self.ID + i, cellspacing: "0", cellpadding: "0" }).addClass("context-menu");
|
|
89426
|
-
$childMenu.append($childTable);
|
|
89427
|
-
|
|
89428
|
-
$childTable.append(_self.childrenList(_self.option.data[i].children));
|
|
89429
|
-
}
|
|
89430
|
-
}
|
|
89431
|
-
}
|
|
89432
|
-
|
|
89433
|
-
this.Update=function()
|
|
89434
|
-
{
|
|
89435
|
-
var _self = this;
|
|
89436
|
-
//var id=this.DivElement.id;
|
|
89437
|
-
//var $body=$("#"+id);
|
|
89438
|
-
//
|
|
89439
|
-
//var $topTable = $("#topTable_" + _self.ID);
|
|
89440
|
-
//$topTable.empty();
|
|
89441
|
-
//$topTable.append(_self.childrenList(_self.option.data));
|
|
89442
|
-
//
|
|
89443
|
-
//for (var i = 0; i < _self.option.data.length; i++) {
|
|
89444
|
-
// var isHasChildren = typeof _self.option.data[i].children != "undefined";
|
|
89445
|
-
//
|
|
89446
|
-
// if (isHasChildren) {
|
|
89447
|
-
// var $childTable = $("#childTable_" + _self.ID + i);
|
|
89448
|
-
// $childTable.empty();
|
|
89449
|
-
// $childTable.append(_self.childrenList(_self.option.data[i].children));
|
|
89450
|
-
// }
|
|
89451
|
-
//}
|
|
89452
|
-
|
|
89453
|
-
_self.BindData();
|
|
89454
|
-
_self.BindEvent();
|
|
89455
|
-
}
|
|
89456
|
-
|
|
89457
|
-
this.childrenList = function(list) {
|
|
89458
|
-
var result = [];
|
|
89459
|
-
|
|
89460
|
-
for (var i = 0; i < list.length; i++) {
|
|
89461
|
-
var isBorder = typeof list[i].isBorder != "undefined" && list[i].isBorder;
|
|
89462
|
-
|
|
89463
|
-
var $tr = $("<tr />");
|
|
89464
|
-
$tr.addClass("font_Arial context-menu");
|
|
89465
|
-
if (isBorder)
|
|
89466
|
-
$tr.addClass("border");
|
|
89467
|
-
|
|
89468
|
-
var $td1 = $("<td />");
|
|
89469
|
-
if(list[i].selected){
|
|
89470
|
-
$td1.addClass("spacer context-menu").html("√");
|
|
89471
|
-
}else{
|
|
89472
|
-
$td1.addClass("spacer context-menu");
|
|
89473
|
-
}
|
|
89474
|
-
|
|
89475
|
-
var $td2 = $("<td />");
|
|
89476
|
-
$td2.addClass("text").html(list[i].text);
|
|
89477
|
-
|
|
89478
|
-
var $td3 = $("<td />");
|
|
89479
|
-
$td3.addClass("right shortcut");
|
|
89480
|
-
|
|
89481
|
-
var $td4 = $("<td />");
|
|
89482
|
-
$td4.addClass(typeof list[i].children != "undefined" ? "submenu-arrow" : "context-menu spacer");
|
|
89483
|
-
|
|
89484
|
-
$tr.append($td1).append($td2).append($td3).append($td4);
|
|
89485
|
-
|
|
89486
|
-
result.push($tr);
|
|
89487
|
-
}
|
|
89488
|
-
return result;
|
|
89489
|
-
}
|
|
89490
|
-
|
|
89491
|
-
this.Show=function (obj) {
|
|
89492
|
-
var _self = this;
|
|
89493
|
-
$.extend(_self.option, obj);
|
|
89494
|
-
|
|
89495
|
-
if (!_self.ID) _self.Create(); //判断是否重复创建
|
|
89496
|
-
else _self.Update(); //更新菜单状态
|
|
89497
|
-
|
|
89498
|
-
var $topMenu = $("#topMenu_"+_self.ID),
|
|
89499
|
-
topWidth = $topMenu.outerWidth(),
|
|
89500
|
-
topHeight = $topMenu.outerHeight();
|
|
89501
|
-
|
|
89502
|
-
var x = _self.option.x,
|
|
89503
|
-
y = _self.option.y;
|
|
89504
|
-
|
|
89505
|
-
if (topWidth > _self.option.position.X + _self.option.position.W- x) //超过了右边距
|
|
89506
|
-
x = x - topWidth;
|
|
89507
|
-
|
|
89508
|
-
if (topHeight > _self.option.position.Y +_self.option.position.H - y)//超过了下边距
|
|
89509
|
-
y = y - topHeight;
|
|
89510
|
-
|
|
89511
|
-
$topMenu.hide();
|
|
89512
|
-
$topMenu.css({ position:"absolute",left: x + "px", top: y + "px" }).show();
|
|
89513
|
-
|
|
89514
|
-
this.isInit = true;
|
|
89515
|
-
}
|
|
89516
|
-
|
|
89517
|
-
this.Hide=function () {
|
|
89518
|
-
var _self = this;
|
|
89519
|
-
if (typeof($)=="undefined") return;
|
|
89520
|
-
$("#topMenu_" + _self.ID).hide();
|
|
89521
|
-
$("[id^='childMenu_" + _self.ID + "']").hide();
|
|
89522
|
-
}
|
|
89523
|
-
|
|
89524
|
-
this.BindEvent=function () {
|
|
89525
|
-
var _self = this;
|
|
89526
|
-
var $childMenu = $("[id^='childMenu_" + _self.ID + "']");
|
|
89527
|
-
|
|
89528
|
-
$("#topTable_" + _self.ID).find("tr").mouseenter(function () {
|
|
89529
|
-
var $this = $(this),
|
|
89530
|
-
index = $this.index(),
|
|
89531
|
-
$topMenu = $("#topMenu_" + _self.ID),
|
|
89532
|
-
$child = $("#childMenu_" + _self.ID + index),
|
|
89533
|
-
trWidth = $this.outerWidth(),
|
|
89534
|
-
trHeight = $this.outerHeight();
|
|
89535
|
-
|
|
89536
|
-
var left = $topMenu.position().left + trWidth + 1;
|
|
89537
|
-
var top = $topMenu.position().top + (trHeight * index);
|
|
89538
|
-
|
|
89539
|
-
if (trWidth > _self.option.position.X + _self.option.position.W - left) //超过了右边距
|
|
89540
|
-
left = left - trWidth - $topMenu.outerWidth() - 2;
|
|
89541
|
-
|
|
89542
|
-
if ($child.outerHeight() > _self.option.position.Y +_self.option.position.H - top)//超过了下边距
|
|
89543
|
-
top = $topMenu.position().top + $topMenu.outerHeight() - $child.outerHeight();
|
|
89544
|
-
|
|
89545
|
-
$childMenu.hide();
|
|
89546
|
-
$child.css({ left: left + "px", top: top + "px" }).show();
|
|
89547
|
-
}).mouseleave(function () {
|
|
89548
|
-
var index = $(this).index();
|
|
89549
|
-
setTimeout(function () {
|
|
89550
|
-
if ($("#childMenu_" + _self.ID + index).attr("data-isShow") != 1) {
|
|
89551
|
-
$("#childMenu_" + _self.ID + index).hide();
|
|
89552
|
-
}
|
|
89553
|
-
}, 10)
|
|
89554
|
-
|
|
89555
|
-
}).click(function () {
|
|
89556
|
-
var $this = $(this);
|
|
89557
|
-
var index = $this.index();
|
|
89558
|
-
|
|
89559
|
-
if ($.type(_self.option.data[index].click) == "function") {
|
|
89560
|
-
_self.option.data[index].click(_self.option.returnData);
|
|
89561
|
-
$this.hide();
|
|
89562
|
-
}
|
|
89563
|
-
}).contextmenu(function()
|
|
89564
|
-
{
|
|
89565
|
-
return false; //屏蔽系统右键菜单
|
|
89566
|
-
});
|
|
89567
|
-
|
|
89568
|
-
|
|
89569
|
-
$childMenu.mouseenter(function () {
|
|
89570
|
-
$(this).attr("data-isShow", "1");
|
|
89571
|
-
}).mouseleave(function () {
|
|
89572
|
-
$(this).attr("data-isShow", "0");
|
|
89573
|
-
}).contextmenu(function()
|
|
89574
|
-
{
|
|
89575
|
-
return false; //屏蔽系统右键菜单
|
|
89576
|
-
});
|
|
89577
|
-
|
|
89578
|
-
$childMenu.find("tr").click(function () {
|
|
89579
|
-
var $this = $(this);
|
|
89580
|
-
var divIndex = parseInt($this.closest("div").attr("data-index"));
|
|
89581
|
-
var trIndex = $this.index();
|
|
89582
|
-
|
|
89583
|
-
if ($.type(_self.option.data[divIndex].children[trIndex].click) == "function") {
|
|
89584
|
-
_self.option.data[divIndex].children[trIndex].click(_self.option.windowIndex || 1);
|
|
89585
|
-
$childMenu.hide();
|
|
89586
|
-
}
|
|
89587
|
-
});
|
|
89588
|
-
}
|
|
89589
|
-
|
|
89590
|
-
this.GetPeriod=function (chart)
|
|
89591
|
-
{
|
|
89592
|
-
var data=
|
|
89593
|
-
[
|
|
89594
|
-
{
|
|
89595
|
-
text: "日线", Value:0,
|
|
89596
|
-
click: function () { chart.ChangePeriod(0); }
|
|
89597
|
-
},
|
|
89598
|
-
{
|
|
89599
|
-
text: "周线",Value:1,
|
|
89600
|
-
click: function () { chart.ChangePeriod(1); }
|
|
89601
|
-
},
|
|
89602
|
-
{
|
|
89603
|
-
text: "双周线",Value:21,
|
|
89604
|
-
click: function () { chart.ChangePeriod(21); }
|
|
89605
|
-
},
|
|
89606
|
-
{
|
|
89607
|
-
text: "月线",Value:2,
|
|
89608
|
-
click: function () { chart.ChangePeriod(2); }
|
|
89609
|
-
},
|
|
89610
|
-
{
|
|
89611
|
-
text: "季线",Value:9,
|
|
89612
|
-
click: function () { chart.ChangePeriod(9); }
|
|
89613
|
-
},
|
|
89614
|
-
{
|
|
89615
|
-
text: "半年",Value:22,
|
|
89616
|
-
click: function () { chart.ChangePeriod(22); }
|
|
89617
|
-
},
|
|
89618
|
-
{
|
|
89619
|
-
text: "年线",Value:3,
|
|
89620
|
-
click: function () { chart.ChangePeriod(3); }
|
|
89621
|
-
},
|
|
89622
|
-
{
|
|
89623
|
-
text: "1分",Value:4,
|
|
89624
|
-
click: function () { chart.ChangePeriod(4); }
|
|
89625
|
-
},
|
|
89626
|
-
{
|
|
89627
|
-
text: "5分",Value:5,
|
|
89628
|
-
click: function () { chart.ChangePeriod(5); }
|
|
89629
|
-
},
|
|
89630
|
-
{
|
|
89631
|
-
text: "15分",Value:6,
|
|
89632
|
-
click: function () { chart.ChangePeriod(6); }
|
|
89633
|
-
},
|
|
89634
|
-
{
|
|
89635
|
-
text: "30分",Value:7,
|
|
89636
|
-
click: function () { chart.ChangePeriod(7); }
|
|
89637
|
-
},
|
|
89638
|
-
{
|
|
89639
|
-
text: "60分",Value:8,
|
|
89640
|
-
click: function () { chart.ChangePeriod(8); }
|
|
89641
|
-
},
|
|
89642
|
-
{
|
|
89643
|
-
text: "2小时",Value:11,
|
|
89644
|
-
click: function () { chart.ChangePeriod(11); }
|
|
89645
|
-
},
|
|
89646
|
-
{
|
|
89647
|
-
text: "4小时",Value:12,
|
|
89648
|
-
click: function () { chart.ChangePeriod(12); }
|
|
89649
|
-
},
|
|
89650
|
-
{
|
|
89651
|
-
text: "分笔",Value:10,
|
|
89652
|
-
click: function () { chart.ChangePeriod(10); }
|
|
89653
|
-
},
|
|
89654
|
-
{
|
|
89655
|
-
text: "自定义周期:3分钟",Value:20003,
|
|
89656
|
-
click: function () { chart.ChangePeriod(20003); }
|
|
89657
|
-
},
|
|
89658
|
-
{
|
|
89659
|
-
text: "自定义周期:35分钟",Value:20035,
|
|
89660
|
-
click: function () { chart.ChangePeriod(20035); }
|
|
89661
|
-
},
|
|
89662
|
-
{
|
|
89663
|
-
text: "自定义周期:8日",Value:40008,
|
|
89664
|
-
click: function () { chart.ChangePeriod(40008); }
|
|
89665
|
-
}
|
|
89666
|
-
];
|
|
89667
|
-
|
|
89668
|
-
for(var i in data)
|
|
89669
|
-
{
|
|
89670
|
-
var item=data[i];
|
|
89671
|
-
if (item.Value==chart.Period)
|
|
89672
|
-
{
|
|
89673
|
-
item.selected=true;
|
|
89674
|
-
break;
|
|
89675
|
-
}
|
|
89676
|
-
}
|
|
89677
|
-
|
|
89678
|
-
return data;
|
|
89679
|
-
}
|
|
89680
|
-
|
|
89681
|
-
this.GetRight=function(chart)
|
|
89682
|
-
{
|
|
89683
|
-
var data=
|
|
89684
|
-
[
|
|
89685
|
-
{
|
|
89686
|
-
text: "不复权",
|
|
89687
|
-
click: function () { chart.ChangeRight(0); }
|
|
89688
|
-
},
|
|
89689
|
-
{
|
|
89690
|
-
text: "前复权",
|
|
89691
|
-
click: function () { chart.ChangeRight(1); }
|
|
89692
|
-
},
|
|
89693
|
-
{
|
|
89694
|
-
text: "后复权",
|
|
89695
|
-
click: function () { chart.ChangeRight(2); }
|
|
89696
|
-
}
|
|
89697
|
-
];
|
|
89698
|
-
|
|
89699
|
-
if (chart.Right>=0 && chart.Right<data.length) data[chart.Right].selected=true;
|
|
89700
|
-
|
|
89701
|
-
return data;
|
|
89702
|
-
}
|
|
89703
|
-
|
|
89704
|
-
//指标
|
|
89705
|
-
this.GetIndex=function (chart)
|
|
89706
|
-
{
|
|
89707
|
-
return [{
|
|
89708
|
-
text: "均线",
|
|
89709
|
-
click: function (windowIndex) {
|
|
89710
|
-
chart.ChangeIndex(windowIndex, '均线')
|
|
89711
|
-
}
|
|
89712
|
-
}, {
|
|
89713
|
-
text: "BOLL",
|
|
89714
|
-
click: function (windowIndex) {
|
|
89715
|
-
chart.ChangeIndex(windowIndex, 'BOLL')
|
|
89716
|
-
},
|
|
89717
|
-
isBorder:true
|
|
89718
|
-
}, {
|
|
89719
|
-
text: "MACD",
|
|
89720
|
-
click: function (windowIndex) {
|
|
89721
|
-
chart.ChangeIndex(windowIndex, 'MACD')
|
|
89722
|
-
}
|
|
89723
|
-
}, {
|
|
89724
|
-
text: "KDJ",
|
|
89725
|
-
click: function (windowIndex) {
|
|
89726
|
-
chart.ChangeIndex(windowIndex, 'KDJ')
|
|
89727
|
-
}
|
|
89728
|
-
}, {
|
|
89729
|
-
text: "VOL",
|
|
89730
|
-
click: function (windowIndex) {
|
|
89731
|
-
chart.ChangeIndex(windowIndex, 'VOL')
|
|
89732
|
-
}
|
|
89733
|
-
}, {
|
|
89734
|
-
text: "RSI",
|
|
89735
|
-
click: function (windowIndex) {
|
|
89736
|
-
chart.ChangeIndex(windowIndex, 'RSI')
|
|
89737
|
-
}
|
|
89738
|
-
}, {
|
|
89739
|
-
text: "BRAR",
|
|
89740
|
-
click: function (windowIndex) {
|
|
89741
|
-
chart.ChangeIndex(windowIndex, 'BRAR')
|
|
89742
|
-
}
|
|
89743
|
-
}, {
|
|
89744
|
-
text: "WR",
|
|
89745
|
-
click: function (windowIndex) {
|
|
89746
|
-
chart.ChangeIndex(windowIndex, 'WR')
|
|
89747
|
-
}
|
|
89748
|
-
}, {
|
|
89749
|
-
text: "BIAS",
|
|
89750
|
-
click: function (windowIndex) {
|
|
89751
|
-
chart.ChangeIndex(windowIndex, 'BIAS')
|
|
89752
|
-
}
|
|
89753
|
-
}, {
|
|
89754
|
-
text: "OBV",
|
|
89755
|
-
click: function (windowIndex) {
|
|
89756
|
-
chart.ChangeIndex(windowIndex, 'OBV')
|
|
89757
|
-
}
|
|
89758
|
-
}, {
|
|
89759
|
-
text: "DMI",
|
|
89760
|
-
click: function (windowIndex) {
|
|
89761
|
-
chart.ChangeIndex(windowIndex, 'DMI')
|
|
89762
|
-
}
|
|
89763
|
-
}, {
|
|
89764
|
-
text: "CR",
|
|
89765
|
-
click: function (windowIndex) {
|
|
89766
|
-
chart.ChangeIndex(windowIndex, 'CR')
|
|
89767
|
-
}
|
|
89768
|
-
}, {
|
|
89769
|
-
text: "PSY",
|
|
89770
|
-
click: function (windowIndex) {
|
|
89771
|
-
chart.ChangeIndex(windowIndex, 'PSY')
|
|
89772
|
-
}
|
|
89773
|
-
}, {
|
|
89774
|
-
text: "CCI",
|
|
89775
|
-
click: function (windowIndex) {
|
|
89776
|
-
chart.ChangeIndex(windowIndex, 'CCI')
|
|
89777
|
-
}
|
|
89778
|
-
}, {
|
|
89779
|
-
text: "DMA",
|
|
89780
|
-
click: function (windowIndex) {
|
|
89781
|
-
chart.ChangeIndex(windowIndex, 'DMA')
|
|
89782
|
-
}
|
|
89783
|
-
}, {
|
|
89784
|
-
text: "TRIX",
|
|
89785
|
-
click: function (windowIndex) {
|
|
89786
|
-
chart.ChangeIndex(windowIndex, 'TRIX')
|
|
89787
|
-
}
|
|
89788
|
-
}, {
|
|
89789
|
-
text: "VR",
|
|
89790
|
-
click: function (windowIndex) {
|
|
89791
|
-
chart.ChangeIndex(windowIndex, 'VR')
|
|
89792
|
-
}
|
|
89793
|
-
}, {
|
|
89794
|
-
text: "EMV",
|
|
89795
|
-
click: function (windowIndex) {
|
|
89796
|
-
chart.ChangeIndex(windowIndex, 'EMV')
|
|
89797
|
-
}
|
|
89798
|
-
}, {
|
|
89799
|
-
text: "ROC",
|
|
89800
|
-
click: function (windowIndex) {
|
|
89801
|
-
chart.ChangeIndex(windowIndex, 'ROC')
|
|
89802
|
-
}
|
|
89803
|
-
}, {
|
|
89804
|
-
text: "MIM",
|
|
89805
|
-
click: function (windowIndex) {
|
|
89806
|
-
chart.ChangeIndex(windowIndex, 'MIM')
|
|
89807
|
-
}
|
|
89808
|
-
}, {
|
|
89809
|
-
text: "FSL",
|
|
89810
|
-
click: function (windowIndex) {
|
|
89811
|
-
chart.ChangeIndex(windowIndex, 'FSL')
|
|
89812
|
-
}
|
|
89813
|
-
} ]
|
|
89814
|
-
}
|
|
89815
|
-
|
|
89816
|
-
//五彩K线
|
|
89817
|
-
this.GetColorIndex=function (chart)
|
|
89818
|
-
{
|
|
89819
|
-
var data=
|
|
89820
|
-
[
|
|
89821
|
-
{
|
|
89822
|
-
text: "十字星",
|
|
89823
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-十字星') }
|
|
89824
|
-
},
|
|
89825
|
-
{
|
|
89826
|
-
text: "早晨之星",
|
|
89827
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-早晨之星') },
|
|
89828
|
-
},
|
|
89829
|
-
{
|
|
89830
|
-
text: "垂死十字",
|
|
89831
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-垂死十字') },
|
|
89832
|
-
},
|
|
89833
|
-
{
|
|
89834
|
-
text: "三只乌鸦",
|
|
89835
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-三只乌鸦') }
|
|
89836
|
-
},
|
|
89837
|
-
{
|
|
89838
|
-
text: "光脚阴线",
|
|
89839
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-光脚阴线') }
|
|
89840
|
-
},
|
|
89841
|
-
{
|
|
89842
|
-
text: "黄昏之星",
|
|
89843
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('五彩K线-黄昏之星') }
|
|
89844
|
-
}
|
|
89845
|
-
];
|
|
89846
|
-
|
|
89847
|
-
if (chart.ColorIndex)
|
|
89848
|
-
{
|
|
89849
|
-
data[data.length-1].isBorder=true;
|
|
89850
|
-
data.push(
|
|
89851
|
-
{
|
|
89852
|
-
text: "删除五彩K线",
|
|
89853
|
-
click: function (windowIndex) { chart.CancelInstructionIndex() }
|
|
89854
|
-
});
|
|
89855
|
-
}
|
|
89856
|
-
|
|
89857
|
-
return data;
|
|
89858
|
-
}
|
|
89859
|
-
|
|
89860
|
-
//专家系统
|
|
89861
|
-
this.GetTradeIndex=function(chart)
|
|
89862
|
-
{
|
|
89863
|
-
var data=
|
|
89864
|
-
[
|
|
89865
|
-
{
|
|
89866
|
-
text: "BIAS",
|
|
89867
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-BIAS') }
|
|
89868
|
-
},
|
|
89869
|
-
{
|
|
89870
|
-
text: "CCI",
|
|
89871
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-CCI') }
|
|
89872
|
-
},
|
|
89873
|
-
{
|
|
89874
|
-
text: "DMI",
|
|
89875
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-DMI') }
|
|
89876
|
-
},
|
|
89877
|
-
{
|
|
89878
|
-
text: "KD",
|
|
89879
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-KD') }
|
|
89880
|
-
},
|
|
89881
|
-
{
|
|
89882
|
-
text: "BOLL",
|
|
89883
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-BOLL') }
|
|
89884
|
-
},
|
|
89885
|
-
{
|
|
89886
|
-
text: "KDJ",
|
|
89887
|
-
click: function (windowIndex) { chart.ChangeInstructionIndex('交易系统-KDJ') }
|
|
89888
|
-
}
|
|
89889
|
-
];
|
|
89890
|
-
|
|
89891
|
-
if (chart.TradeIndex)
|
|
89892
|
-
{
|
|
89893
|
-
data[data.length-1].isBorder=true;
|
|
89894
|
-
data.push(
|
|
89895
|
-
{
|
|
89896
|
-
text: "删除专家系统",
|
|
89897
|
-
click: function (windowIndex) { chart.CancelInstructionIndex()}
|
|
89898
|
-
});
|
|
89899
|
-
}
|
|
89900
|
-
return data;
|
|
89901
|
-
}
|
|
89902
|
-
|
|
89903
|
-
//叠加
|
|
89904
|
-
this.GetOverlay=function (chart)
|
|
89905
|
-
{
|
|
89906
|
-
var data=
|
|
89907
|
-
[
|
|
89908
|
-
{
|
|
89909
|
-
text: "上证指数",
|
|
89910
|
-
click: function () { chart.OverlaySymbol('000001.sh'); }
|
|
89911
|
-
},
|
|
89912
|
-
{
|
|
89913
|
-
text: "深证成指",
|
|
89914
|
-
click: function () { chart.OverlaySymbol('399001.sz'); }
|
|
89915
|
-
},
|
|
89916
|
-
{
|
|
89917
|
-
text: "中小板指",
|
|
89918
|
-
click: function () { chart.OverlaySymbol('399005.sz'); }
|
|
89919
|
-
},
|
|
89920
|
-
{
|
|
89921
|
-
text: "创业板指",
|
|
89922
|
-
click: function () { chart.OverlaySymbol('399006.sz'); }
|
|
89923
|
-
},
|
|
89924
|
-
{
|
|
89925
|
-
text: "沪深300",
|
|
89926
|
-
click: function () { chart.OverlaySymbol('000300.sh'); },
|
|
89927
|
-
}
|
|
89928
|
-
];
|
|
89929
|
-
|
|
89930
|
-
for(var i in chart.OverlayChartPaint)
|
|
89931
|
-
{
|
|
89932
|
-
var item=chart.OverlayChartPaint[i];
|
|
89933
|
-
var symbol=item.Symbol;
|
|
89934
|
-
const mapSymbol=new Map([['000001.sh',0],['399001.sz',1],['399005.sz',2],['399006.sz',3],['000300.sh',4]]);
|
|
89935
|
-
if (mapSymbol.has(symbol))
|
|
89936
|
-
{
|
|
89937
|
-
var menuItem=data[mapSymbol.get(symbol)];
|
|
89938
|
-
let delSymbol=symbol;
|
|
89939
|
-
menuItem.selected=true;
|
|
89940
|
-
menuItem.click=function () { chart.DeleteOverlaySymbol(delSymbol); };
|
|
89941
|
-
}
|
|
89942
|
-
}
|
|
89943
|
-
|
|
89944
|
-
if (chart.OverlayChartPaint && chart.OverlayChartPaint.length>0)
|
|
89945
|
-
{
|
|
89946
|
-
data[data.length-1].isBorder=true;
|
|
89947
|
-
data.push(
|
|
89948
|
-
{
|
|
89949
|
-
text: "取消叠加",
|
|
89950
|
-
click: function () { chart.ClearOverlaySymbol();}
|
|
89951
|
-
}
|
|
89952
|
-
);
|
|
89953
|
-
}
|
|
89954
|
-
|
|
89955
|
-
return data;
|
|
89956
|
-
}
|
|
89957
|
-
|
|
89958
|
-
//K线类型设置
|
|
89959
|
-
this.GetKLineType=function(chart)
|
|
89960
|
-
{
|
|
89961
|
-
var data=
|
|
89962
|
-
[
|
|
89963
|
-
{
|
|
89964
|
-
text: "K线(空心阳线)",
|
|
89965
|
-
click: function () { chart.ChangeKLineDrawType(3);}
|
|
89966
|
-
},
|
|
89967
|
-
{
|
|
89968
|
-
text: "K线(实心阳线)",
|
|
89969
|
-
click: function () { chart.ChangeKLineDrawType(0); }
|
|
89970
|
-
},
|
|
89971
|
-
{
|
|
89972
|
-
text: "美国线",
|
|
89973
|
-
click: function () { chart.ChangeKLineDrawType(2, true ,{ IsThinAKBar:false }); }
|
|
89974
|
-
},
|
|
89975
|
-
{
|
|
89976
|
-
text: "收盘线",
|
|
89977
|
-
click: function () { chart.ChangeKLineDrawType(1); }
|
|
89978
|
-
},
|
|
89979
|
-
{
|
|
89980
|
-
text: "收盘面积",
|
|
89981
|
-
click: function () { chart.ChangeKLineDrawType(4); }
|
|
89982
|
-
},
|
|
89983
|
-
{
|
|
89984
|
-
text: "K线(空心阳线阴线)",
|
|
89985
|
-
click: function () { chart.ChangeKLineDrawType(6);}
|
|
89986
|
-
},
|
|
89987
|
-
{
|
|
89988
|
-
text: "Heikin Ashi",
|
|
89989
|
-
click: function () { chart.ChangeKLineDrawType(11);}
|
|
89990
|
-
},
|
|
89991
|
-
{
|
|
89992
|
-
text: "Line Break",
|
|
89993
|
-
click: function () { chart.ChangeKLineDrawType(12);}
|
|
89994
|
-
},
|
|
89995
|
-
{
|
|
89996
|
-
text: "High-low",
|
|
89997
|
-
click: function () { chart.ChangeKLineDrawType(13);}
|
|
89998
|
-
},
|
|
89999
|
-
{
|
|
90000
|
-
text: "HLC Area",
|
|
90001
|
-
click: function () { chart.ChangeKLineDrawType(15);}
|
|
90002
|
-
}
|
|
90003
|
-
];
|
|
90004
|
-
|
|
90005
|
-
switch(chart.KLineDrawType)
|
|
90006
|
-
{
|
|
90007
|
-
case 0:
|
|
90008
|
-
data[1].selected=true;
|
|
90009
|
-
break;
|
|
90010
|
-
case 1:
|
|
90011
|
-
data[3].selected=true;
|
|
90012
|
-
break;
|
|
90013
|
-
case 2:
|
|
90014
|
-
data[2].selected=true;
|
|
90015
|
-
break;
|
|
90016
|
-
case 3:
|
|
90017
|
-
data[0].selected=true;
|
|
90018
|
-
break;
|
|
90019
|
-
case 4:
|
|
90020
|
-
data[4].selected=true;
|
|
90021
|
-
break;
|
|
90022
|
-
case 6:
|
|
90023
|
-
data[5].selected=true;
|
|
90024
|
-
break;
|
|
90025
|
-
case 11:
|
|
90026
|
-
data[6].selected=true;
|
|
90027
|
-
break;
|
|
90028
|
-
case 12:
|
|
90029
|
-
data[7].selected=true;
|
|
90030
|
-
break;
|
|
90031
|
-
case 13:
|
|
90032
|
-
data[8].selected=true;
|
|
90033
|
-
break;
|
|
90034
|
-
case 15:
|
|
90035
|
-
data[9].selected=true;
|
|
90036
|
-
break;
|
|
90037
|
-
}
|
|
90038
|
-
return data;
|
|
90039
|
-
}
|
|
90040
|
-
|
|
90041
|
-
//指标窗口个数
|
|
90042
|
-
this.GetIndexWindowCount=function(chart)
|
|
90043
|
-
{
|
|
90044
|
-
var data=
|
|
90045
|
-
[
|
|
90046
|
-
{
|
|
90047
|
-
text: "1个窗口",
|
|
90048
|
-
click: function () { chart.ChangeIndexWindowCount(1); }
|
|
90049
|
-
},
|
|
90050
|
-
{
|
|
90051
|
-
text: "2个窗口",
|
|
90052
|
-
click: function () { chart.ChangeIndexWindowCount(2); }
|
|
90053
|
-
},
|
|
90054
|
-
{
|
|
90055
|
-
text: "3个窗口",
|
|
90056
|
-
click: function () { chart.ChangeIndexWindowCount(3); }
|
|
90057
|
-
},
|
|
90058
|
-
{
|
|
90059
|
-
text: "4个窗口",
|
|
90060
|
-
click: function () { chart.ChangeIndexWindowCount(4); }
|
|
90061
|
-
},
|
|
90062
|
-
{
|
|
90063
|
-
text: "5个窗口",
|
|
90064
|
-
click: function () { chart.ChangeIndexWindowCount(5); }
|
|
90065
|
-
}
|
|
90066
|
-
];
|
|
90067
|
-
|
|
90068
|
-
var count=chart.Frame.SubFrame.length;
|
|
90069
|
-
if ((count-1)>=0 && (count-1)<data.length) data[count-1].selected=true; //选中
|
|
90070
|
-
|
|
90071
|
-
return data;
|
|
90072
|
-
}
|
|
90073
|
-
|
|
90074
|
-
//坐标类型
|
|
90075
|
-
this.GetCoordinateType=function(chart)
|
|
90076
|
-
{
|
|
90077
|
-
var data=
|
|
90078
|
-
[
|
|
90079
|
-
{
|
|
90080
|
-
text: "普通坐标",
|
|
90081
|
-
click: function () { chart.ChangeCoordinateType( {Type:0} ); }
|
|
90082
|
-
},
|
|
90083
|
-
{
|
|
90084
|
-
text: "百分比坐标",
|
|
90085
|
-
click: function () { chart.ChangeCoordinateType( {Type:1} ); }
|
|
90086
|
-
},
|
|
90087
|
-
{
|
|
90088
|
-
text: "反转坐标",
|
|
90089
|
-
click: function () { chart.ChangeCoordinateType( { IsReverse:true } ); }
|
|
90090
|
-
},
|
|
90091
|
-
{
|
|
90092
|
-
text: "对数坐标",
|
|
90093
|
-
click: function () { chart.ChangeCoordinateType( {Type:2} ); }
|
|
90094
|
-
},
|
|
90095
|
-
{
|
|
90096
|
-
text: "等比坐标",
|
|
90097
|
-
click: function () { chart.ChangeCoordinateType( {Type:3} ); }
|
|
90098
|
-
},
|
|
90099
|
-
{
|
|
90100
|
-
text: "等分坐标",
|
|
90101
|
-
click: function () { chart.ChangeCoordinateType( {Type:4} ); }
|
|
90102
|
-
},
|
|
90103
|
-
{
|
|
90104
|
-
text: "黄金分割",
|
|
90105
|
-
click: function () { chart.ChangeCoordinateType( {Type:5} ); }
|
|
90106
|
-
}
|
|
90107
|
-
];
|
|
90108
|
-
|
|
90109
|
-
if (chart.Frame && chart.Frame.SubFrame && chart.Frame.SubFrame.length>0)
|
|
90110
|
-
{
|
|
90111
|
-
if (chart.Frame.SubFrame[0].Frame.CoordinateType==1)
|
|
90112
|
-
{
|
|
90113
|
-
data[2].selected=true;
|
|
90114
|
-
data[2].click=function() { chart.ChangeCoordinateType( { IsReverse:false } ); } //取消反转
|
|
90115
|
-
}
|
|
90116
|
-
|
|
90117
|
-
if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==1) data[1].selected=true; //百分比
|
|
90118
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==0) data[0].selected=true; //普通坐标
|
|
90119
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==2) data[3].selected=true; //对数
|
|
90120
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==3) data[4].selected=true; //等比坐标
|
|
90121
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==4) data[5].selected=true; //等分坐标
|
|
90122
|
-
else if (chart.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType==5) data[6].selected=true; //黄金分割
|
|
90123
|
-
}
|
|
90124
|
-
|
|
90125
|
-
return data;
|
|
90126
|
-
}
|
|
90127
|
-
|
|
90128
|
-
//拖拽模式
|
|
90129
|
-
this.GetDragModeType=function(chart)
|
|
90130
|
-
{
|
|
90131
|
-
var data=
|
|
90132
|
-
[
|
|
90133
|
-
{
|
|
90134
|
-
text: "禁止拖拽",
|
|
90135
|
-
click: function () { chart.DragMode=0; }
|
|
90136
|
-
},
|
|
90137
|
-
{
|
|
90138
|
-
text: "启动拖拽",
|
|
90139
|
-
click: function () { chart.DragMode=1; }
|
|
90140
|
-
},
|
|
90141
|
-
{
|
|
90142
|
-
text: "区间选择",
|
|
90143
|
-
click: function () { chart.DragMode=2; }
|
|
90144
|
-
}
|
|
90145
|
-
];
|
|
90146
|
-
|
|
90147
|
-
if (chart.DragMode>=0 && chart.DragMode<data.length) data[chart.DragMode].selected=true; //选中
|
|
90148
|
-
|
|
90149
|
-
return data;
|
|
90150
|
-
}
|
|
90151
|
-
|
|
90152
|
-
//工具
|
|
90153
|
-
this.GetTools=function(chart)
|
|
90154
|
-
{
|
|
90155
|
-
var data=[];
|
|
90156
|
-
var drawTools=chart.GetExtendChartByClassName('DrawToolsButton');
|
|
90157
|
-
if (drawTools)
|
|
90158
|
-
{
|
|
90159
|
-
data.push(
|
|
90160
|
-
{
|
|
90161
|
-
text: "关闭画图工具",
|
|
90162
|
-
click: function ()
|
|
90163
|
-
{
|
|
90164
|
-
var toolsWidth=drawTools.Chart.Width;
|
|
90165
|
-
var toolsIndex=parseInt(drawTools.Index);
|
|
90166
|
-
for(var i=toolsIndex+1; i<chart.ExtendChartPaint.length; ++i) //在画图工具后面创建的需要减去工具的宽度
|
|
90167
|
-
{
|
|
90168
|
-
var item=chart.ExtendChartPaint[i];
|
|
90169
|
-
if (item.ClassName=='StockChip')
|
|
90170
|
-
{
|
|
90171
|
-
item.Left-=toolsWidth;
|
|
90172
|
-
}
|
|
90173
|
-
}
|
|
90174
|
-
chart.DeleteExtendChart(drawTools);
|
|
90175
|
-
chart.Frame.ChartBorder.Right-=toolsWidth;
|
|
90176
|
-
chart.SetSizeChange(true);
|
|
90177
|
-
chart.Draw();
|
|
90178
|
-
}
|
|
90179
|
-
}
|
|
90180
|
-
);
|
|
90181
|
-
}
|
|
90182
|
-
else
|
|
90183
|
-
{
|
|
90184
|
-
data.push(
|
|
90185
|
-
{
|
|
90186
|
-
text: "画图工具",
|
|
90187
|
-
click: function () {
|
|
90188
|
-
var option={Name:'画图工具', Top:chart.Frame.ChartBorder.Top };
|
|
90189
|
-
var extendChart=chart.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
90190
|
-
chart.SetSizeChange(true);
|
|
90191
|
-
chart.Draw();
|
|
90192
|
-
}
|
|
90193
|
-
}
|
|
90194
|
-
);
|
|
90195
|
-
}
|
|
90196
|
-
|
|
90197
|
-
var StockChip=chart.GetExtendChartByClassName('StockChip');
|
|
90198
|
-
if (StockChip)
|
|
90199
|
-
{
|
|
90200
|
-
data.push(
|
|
90201
|
-
{
|
|
90202
|
-
text: "关闭移动筹码",
|
|
90203
|
-
click: function ()
|
|
90204
|
-
{
|
|
90205
|
-
var chipWidth=StockChip.Chart.Width;
|
|
90206
|
-
var chipIndex=parseInt(StockChip.Index);
|
|
90207
|
-
for(var i=chipIndex+1; i<chart.ExtendChartPaint.length; ++i) //在筹码后面创建的需要筹码的宽度
|
|
90208
|
-
{
|
|
90209
|
-
var item=chart.ExtendChartPaint[i];
|
|
90210
|
-
if (item.ClassName=='DrawToolsButton')
|
|
90211
|
-
{
|
|
90212
|
-
item.Left-=chipWidth;
|
|
90213
|
-
}
|
|
90214
|
-
}
|
|
90215
|
-
chart.DeleteExtendChart(StockChip);
|
|
90216
|
-
chart.Frame.ChartBorder.Right-=chipWidth;
|
|
90217
|
-
chart.SetSizeChange(true);
|
|
90218
|
-
chart.Draw();
|
|
90219
|
-
}
|
|
90220
|
-
|
|
90221
|
-
}
|
|
90222
|
-
);
|
|
90223
|
-
}
|
|
90224
|
-
else
|
|
90225
|
-
{
|
|
90226
|
-
data.push(
|
|
90227
|
-
{
|
|
90228
|
-
text: "移动筹码",
|
|
90229
|
-
click: function () {
|
|
90230
|
-
var option={Name:'筹码分布', ShowType:1, Width:230 };
|
|
90231
|
-
var extendChart=chart.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
90232
|
-
chart.SetSizeChange(true);
|
|
90233
|
-
chart.Draw();
|
|
90234
|
-
}
|
|
90235
|
-
}
|
|
90236
|
-
);
|
|
90237
|
-
}
|
|
90238
|
-
|
|
90239
|
-
return data;
|
|
90240
|
-
}
|
|
90241
|
-
|
|
90242
|
-
//缺口提示
|
|
90243
|
-
this.GetPriceGap=function(chart)
|
|
90244
|
-
{
|
|
90245
|
-
var klineChart=chart.ChartPaint[0];
|
|
90246
|
-
var priceGap=klineChart.PriceGap;
|
|
90247
|
-
var data=
|
|
90248
|
-
[
|
|
90249
|
-
{
|
|
90250
|
-
text: "显示1个缺口",
|
|
90251
|
-
click: function () { chart.ChangePriceGap({ Enable:true, Count:1 }); }
|
|
90252
|
-
},
|
|
90253
|
-
{
|
|
90254
|
-
text: "显示2个缺口",
|
|
90255
|
-
click: function () { chart.ChangePriceGap({ Enable:true, Count:2 }); }
|
|
90256
|
-
},
|
|
90257
|
-
{
|
|
90258
|
-
text: "显示3个缺口",
|
|
90259
|
-
click: function () { chart.ChangePriceGap({ Enable:true, Count:3 }); }
|
|
90260
|
-
},
|
|
90261
|
-
{
|
|
90262
|
-
text: "隐藏缺口",
|
|
90263
|
-
click: function () { chart.ChangePriceGap({ Enable:false }); }
|
|
90264
|
-
}
|
|
90265
|
-
];
|
|
90266
|
-
|
|
90267
|
-
if (!priceGap.Enable || priceGap.Count<=0)
|
|
90268
|
-
{
|
|
90269
|
-
data[data.length-1].selected=true; //选中
|
|
90270
|
-
}
|
|
90271
|
-
else if (priceGap.Enable && priceGap.Count>0)
|
|
90272
|
-
{
|
|
90273
|
-
var index=priceGap.Count-1;
|
|
90274
|
-
if (index>data.length-2) index=data.length-2;
|
|
90275
|
-
data[index].selected=true; //选中
|
|
90276
|
-
}
|
|
90277
|
-
|
|
90278
|
-
return data;
|
|
90279
|
-
}
|
|
90280
|
-
|
|
90281
|
-
this.GetBGSplit=function(chart)
|
|
90282
|
-
{
|
|
90283
|
-
var data=
|
|
90284
|
-
[
|
|
90285
|
-
{
|
|
90286
|
-
text: "启用",
|
|
90287
|
-
click: function ()
|
|
90288
|
-
{
|
|
90289
|
-
chart.CreateExtendChart("SessionBreaksPaint", { });
|
|
90290
|
-
chart.Draw();
|
|
90291
|
-
}
|
|
90292
|
-
},
|
|
90293
|
-
{
|
|
90294
|
-
text: "关闭",
|
|
90295
|
-
click: function ()
|
|
90296
|
-
{
|
|
90297
|
-
var finder=chart.GetExtendChartByClassName("SessionBreaksPaint");
|
|
90298
|
-
if (finder)
|
|
90299
|
-
{
|
|
90300
|
-
chart.DeleteExtendChartByID(finder.Chart.ID);
|
|
90301
|
-
chart.Draw();
|
|
90302
|
-
}
|
|
90303
|
-
}
|
|
90304
|
-
},
|
|
90305
|
-
];
|
|
90306
|
-
|
|
90307
|
-
var finder=chart.GetExtendChartByClassName("SessionBreaksPaint");
|
|
90308
|
-
if (finder) data[0].selected=true;
|
|
90309
|
-
else data[1].selected=true;
|
|
90310
|
-
|
|
90311
|
-
return data;
|
|
90312
|
-
}
|
|
90313
|
-
|
|
90314
|
-
|
|
90315
|
-
this.GetKLineInfo=function(chart)
|
|
90316
|
-
{
|
|
90317
|
-
var setInfo=new Set();
|
|
90318
|
-
for(var i in chart.ChartInfo)
|
|
90319
|
-
{
|
|
90320
|
-
var item=chart.ChartInfo[i];
|
|
90321
|
-
setInfo.add(item.ClassName);
|
|
90322
|
-
}
|
|
90323
|
-
|
|
90324
|
-
var aryKLineInfo=["公告","业绩预告","调研","大宗交易","龙虎榜","互动易"]
|
|
90325
|
-
|
|
90326
|
-
var data=[];
|
|
90327
|
-
for(var i in aryKLineInfo)
|
|
90328
|
-
{
|
|
90329
|
-
var infoName=aryKLineInfo[i];
|
|
90330
|
-
var classInfo=JSKLineInfoMap.GetClassInfo(infoName);
|
|
90331
|
-
if (!classInfo) continue;
|
|
90332
|
-
|
|
90333
|
-
var item=this.CreateKlineInfoItem(infoName, setInfo.has(classInfo.ClassName), chart);
|
|
90334
|
-
data.push(item);
|
|
90335
|
-
}
|
|
90336
|
-
|
|
90337
|
-
if (chart.ChartInfo.length>0)
|
|
90338
|
-
{
|
|
90339
|
-
data[data.length-1].isBorder=true;
|
|
90340
|
-
var item={ text:'删除所有', click:function() { chart.ClearKLineInfo()} };
|
|
90341
|
-
data.push(item);
|
|
90342
|
-
|
|
90343
|
-
}
|
|
90344
|
-
|
|
90345
|
-
return data;
|
|
90346
|
-
}
|
|
90347
|
-
|
|
90348
|
-
this.CreateKlineInfoItem=function(infoName,bExist,chart)
|
|
90349
|
-
{
|
|
90350
|
-
var item=
|
|
90351
|
-
{
|
|
90352
|
-
text:infoName,
|
|
90353
|
-
selected:bExist
|
|
90354
|
-
}
|
|
90355
|
-
|
|
90356
|
-
if (bExist) item.click=function() { chart.DeleteKLineInfo(infoName) };
|
|
90357
|
-
else item.click=function() { chart.AddKLineInfo(infoName,true) }
|
|
90358
|
-
|
|
90359
|
-
return item;
|
|
90360
|
-
}
|
|
90361
|
-
|
|
90362
|
-
this.DoModal=function(event)
|
|
90363
|
-
{
|
|
90364
|
-
var chart=event.data.Chart;
|
|
90365
|
-
var rightMenu=chart.RightMenu;
|
|
90366
|
-
var x = event.offsetX;
|
|
90367
|
-
var y = event.offsetY;
|
|
90368
|
-
|
|
90369
|
-
var dataList=[{
|
|
90370
|
-
text: "分析周期",
|
|
90371
|
-
children: this.GetPeriod(chart)
|
|
90372
|
-
},
|
|
90373
|
-
{
|
|
90374
|
-
text: "复权处理",
|
|
90375
|
-
children: this.GetRight(chart)
|
|
90376
|
-
},
|
|
90377
|
-
{
|
|
90378
|
-
text: "指标切换",
|
|
90379
|
-
children: this.GetIndex(chart)
|
|
90380
|
-
},
|
|
90381
|
-
{
|
|
90382
|
-
text:"五彩K线",
|
|
90383
|
-
children: this.GetColorIndex(chart)
|
|
90384
|
-
},
|
|
90385
|
-
{
|
|
90386
|
-
text:'专家系统',
|
|
90387
|
-
children: this.GetTradeIndex(chart)
|
|
90388
|
-
},
|
|
90389
|
-
{
|
|
90390
|
-
text:'信息地雷',
|
|
90391
|
-
children: this.GetKLineInfo(chart)
|
|
90392
|
-
},
|
|
90393
|
-
{
|
|
90394
|
-
text:'缺口提示',
|
|
90395
|
-
children: this.GetPriceGap(chart)
|
|
90396
|
-
},
|
|
90397
|
-
{
|
|
90398
|
-
text: "叠加品种",
|
|
90399
|
-
children: this.GetOverlay(chart)
|
|
90400
|
-
},
|
|
90401
|
-
{
|
|
90402
|
-
text:'主图线型',
|
|
90403
|
-
children: this.GetKLineType(chart)
|
|
90404
|
-
},
|
|
90405
|
-
{
|
|
90406
|
-
text:"坐标类型",
|
|
90407
|
-
children:this.GetCoordinateType(chart)
|
|
90408
|
-
},
|
|
90409
|
-
{
|
|
90410
|
-
text:'指标窗口个数',
|
|
90411
|
-
children: this.GetIndexWindowCount(chart)
|
|
90412
|
-
},
|
|
90413
|
-
{
|
|
90414
|
-
text:'鼠标拖拽',
|
|
90415
|
-
children: this.GetDragModeType(chart)
|
|
90416
|
-
},
|
|
90417
|
-
{
|
|
90418
|
-
text:"工具",
|
|
90419
|
-
children:this.GetTools(chart)
|
|
90420
|
-
},
|
|
90421
|
-
{
|
|
90422
|
-
text:"背景分割",
|
|
90423
|
-
children:this.GetBGSplit(chart)
|
|
90424
|
-
}
|
|
90425
|
-
];
|
|
90426
|
-
|
|
90427
|
-
var upperSymbol=chart.Symbol.toUpperCase();
|
|
90428
|
-
if(MARKET_SUFFIX_NAME.IsSHSZIndex(chart.Symbol) || MARKET_SUFFIX_NAME.IsBIT(upperSymbol))
|
|
90429
|
-
{
|
|
90430
|
-
dataList.splice(1,1);
|
|
90431
|
-
}
|
|
90432
|
-
|
|
90433
|
-
var identify=event.data.FrameID;
|
|
90434
|
-
var overlayIndex=this.GetOverlayIndex(chart,identify);
|
|
90435
|
-
if (overlayIndex && overlayIndex.length>0)
|
|
90436
|
-
{
|
|
90437
|
-
var delOverlayIndexMenu={ text:'删除叠加指标', children:this.GetDeleteOverlayIndex(chart,overlayIndex) }
|
|
90438
|
-
dataList.splice(3,0,delOverlayIndexMenu);
|
|
90439
|
-
}
|
|
90440
|
-
|
|
90441
|
-
JSConsole.Chart.Log('[KLineRightMenu::DoModal]',identify);
|
|
90442
|
-
rightMenu.Show({
|
|
90443
|
-
windowIndex :identify,
|
|
90444
|
-
x:x+chart.UIElement.offsetLeft,
|
|
90445
|
-
y:y+chart.UIElement.offsetTop,
|
|
90446
|
-
position:chart.Frame.Position,
|
|
90447
|
-
data:dataList
|
|
90448
|
-
})
|
|
90449
|
-
|
|
90450
|
-
$(document).click(function () {
|
|
90451
|
-
rightMenu.Hide();
|
|
90452
|
-
});
|
|
90453
|
-
}
|
|
90454
|
-
|
|
90455
|
-
this.GetOverlayIndex=function(chart, windowsIndex)
|
|
90456
|
-
{
|
|
90457
|
-
if (windowsIndex>=chart.Frame.SubFrame.length || windowsIndex<0) return [];
|
|
90458
|
-
|
|
90459
|
-
var result=[];
|
|
90460
|
-
var item=chart.Frame.SubFrame[windowsIndex];
|
|
90461
|
-
for(var i in item.OverlayIndex)
|
|
90462
|
-
{
|
|
90463
|
-
var overlayItem=item.OverlayIndex[i];
|
|
90464
|
-
result.push({Name:overlayItem.Script.Name, Identify:overlayItem.Identify});
|
|
90465
|
-
}
|
|
90466
|
-
|
|
90467
|
-
return result;
|
|
90468
|
-
}
|
|
90469
|
-
|
|
90470
|
-
this.GetDeleteOverlayIndex=function(chart,overlayIndex)
|
|
90471
|
-
{
|
|
90472
|
-
var data=[];
|
|
90473
|
-
for(var i in overlayIndex)
|
|
90474
|
-
{
|
|
90475
|
-
let identify=overlayIndex[i].Identify;
|
|
90476
|
-
data.push({text:overlayIndex[i].Name, click:function()
|
|
90477
|
-
{
|
|
90478
|
-
chart.DeleteOverlayWindowsIndex(identify)
|
|
90479
|
-
}});
|
|
90480
|
-
}
|
|
90481
|
-
|
|
90482
|
-
return data;
|
|
90483
|
-
}
|
|
90484
|
-
}
|
|
90485
|
-
|
|
90486
|
-
//K线区间选择右键菜单
|
|
90487
|
-
function KLineSelectRightMenu(divElement)
|
|
90488
|
-
{
|
|
90489
|
-
this.newMethod=KLineRightMenu; //派生
|
|
90490
|
-
this.newMethod(divElement);
|
|
90491
|
-
delete this.newMethod;
|
|
90492
|
-
|
|
90493
|
-
this.DoModal=function(event)
|
|
90494
|
-
{
|
|
90495
|
-
var chart=event.data.Chart;
|
|
90496
|
-
var rightMenu=this;
|
|
90497
|
-
var x = event.data.X;
|
|
90498
|
-
var y = event.data.Y;
|
|
90499
|
-
|
|
90500
|
-
var dataList=
|
|
90501
|
-
[
|
|
90502
|
-
{
|
|
90503
|
-
text: "区间统计",
|
|
90504
|
-
click: function ()
|
|
90505
|
-
{
|
|
90506
|
-
JSConsole.Chart.Log('[KLineSelectRightMenu::click] 区间统计');
|
|
90507
|
-
rightMenu.Hide();
|
|
90508
|
-
var dialog=new KLineSelectRectDialog(divElement);
|
|
90509
|
-
dialog.DoModal(event);
|
|
90510
|
-
}
|
|
90511
|
-
},
|
|
90512
|
-
{
|
|
90513
|
-
text:'区间放大',
|
|
90514
|
-
click:function()
|
|
90515
|
-
{
|
|
90516
|
-
JSConsole.Chart.Log('[KLineSelectRightMenu::click] 区间放大');
|
|
90517
|
-
var chart=event.data.Chart;
|
|
90518
|
-
chart.ShowSelectData(event.data.SelectData);
|
|
90519
|
-
}
|
|
90520
|
-
}
|
|
90521
|
-
];
|
|
90522
|
-
|
|
90523
|
-
rightMenu.Show({
|
|
90524
|
-
x:x,
|
|
90525
|
-
y:y,
|
|
90526
|
-
position:chart.Frame.Position,
|
|
90527
|
-
data:dataList
|
|
90528
|
-
});
|
|
90529
|
-
}
|
|
90530
|
-
|
|
90531
|
-
this.Show=function (obj)
|
|
90532
|
-
{
|
|
90533
|
-
var _self = this;
|
|
90534
|
-
$.extend(_self.option, obj);
|
|
90535
|
-
|
|
90536
|
-
//判断是否重复创建
|
|
90537
|
-
if (!_self.ID) _self.Create();
|
|
90538
|
-
//判断下如果DOM没了需要重新创建
|
|
90539
|
-
var divIdName='topMenu_'+_self.ID;
|
|
90540
|
-
var divDom=document.getElementById(divIdName);
|
|
90541
|
-
if (!divDom) _self.Create();
|
|
90542
|
-
|
|
90543
|
-
var $topMenu = $("#topMenu_"+_self.ID),
|
|
90544
|
-
topWidth = $topMenu.outerWidth(),
|
|
90545
|
-
topHeight = $topMenu.outerHeight();
|
|
90546
|
-
|
|
90547
|
-
$topMenu.contextmenu(function()
|
|
90548
|
-
{
|
|
90549
|
-
return false; //屏蔽系统右键菜单
|
|
90550
|
-
});
|
|
90551
|
-
|
|
90552
|
-
var x = _self.option.x,
|
|
90553
|
-
y = _self.option.y;
|
|
90554
|
-
|
|
90555
|
-
if (topWidth > _self.option.position.X + _self.option.position.W- x) //超过了右边距
|
|
90556
|
-
x = x - topWidth;
|
|
90557
|
-
|
|
90558
|
-
if (topHeight > _self.option.position.Y +_self.option.position.H - y)//超过了下边距
|
|
90559
|
-
y = y - topHeight;
|
|
90560
|
-
|
|
90561
|
-
$topMenu.hide();
|
|
90562
|
-
$topMenu.css({ position:"absolute",left: x + "px", top: y + "px" }).show();
|
|
90563
|
-
|
|
90564
|
-
$("#topMenu_" + _self.ID).find("tr").show(); //把菜单列表显示
|
|
90565
|
-
|
|
90566
|
-
this.isInit = true;
|
|
90567
|
-
}
|
|
90568
|
-
}
|
|
90569
|
-
|
|
90570
|
-
//分钟数据右键菜单
|
|
90571
|
-
function MinuteRightMenu(divElement)
|
|
90572
|
-
{
|
|
90573
|
-
this.newMethod=KLineRightMenu; //派生
|
|
90574
|
-
this.newMethod(divElement);
|
|
90575
|
-
delete this.newMethod;
|
|
90576
|
-
|
|
90577
|
-
this.DoModal=function(event)
|
|
90578
|
-
{
|
|
90579
|
-
var chart=event.data.Chart;
|
|
90580
|
-
var rightMenu=chart.RightMenu;
|
|
90581
|
-
var x = event.offsetX;
|
|
90582
|
-
var y = event.offsetY;
|
|
90583
|
-
|
|
90584
|
-
var dataList=
|
|
90585
|
-
[
|
|
90586
|
-
{
|
|
90587
|
-
text: "叠加品种",
|
|
90588
|
-
children: this.GetOverlay(chart)
|
|
90589
|
-
},
|
|
90590
|
-
{
|
|
90591
|
-
text: "多日分时图",
|
|
90592
|
-
children: this.GetDayCount(chart)
|
|
90593
|
-
},
|
|
90594
|
-
{
|
|
90595
|
-
text:'指标窗口个数',
|
|
90596
|
-
children: this.GetIndexWindowCount(chart)
|
|
90597
|
-
},
|
|
90598
|
-
{
|
|
90599
|
-
text: "副图指标切换",
|
|
90600
|
-
children: this.GetIndex(chart)
|
|
90601
|
-
},
|
|
90602
|
-
{
|
|
90603
|
-
text:"区间选择",
|
|
90604
|
-
children:this.GetSelectRect(chart)
|
|
90605
|
-
},
|
|
90606
|
-
|
|
90607
|
-
];
|
|
90608
|
-
|
|
90609
|
-
var symbol=chart.Symbol;
|
|
90610
|
-
if (MARKET_SUFFIX_NAME.IsSHSZStockA(symbol))
|
|
90611
|
-
{
|
|
90612
|
-
dataList.push({text:'集合竞价',children: this.GetShowBeforeData(chart)});
|
|
90613
|
-
}
|
|
90614
|
-
|
|
90615
|
-
dataList.push({text:"工具", children:this.GetTools(chart)});
|
|
90616
|
-
|
|
90617
|
-
var identify=event.data.FrameID;
|
|
90618
|
-
var overlayIndex=this.GetOverlayIndex(chart,identify);
|
|
90619
|
-
if (overlayIndex && overlayIndex.length>0)
|
|
90620
|
-
{
|
|
90621
|
-
var delOverlayIndexMenu={ text:'删除叠加指标', children:this.GetDeleteOverlayIndex(chart,overlayIndex) }
|
|
90622
|
-
dataList.splice(3,0,delOverlayIndexMenu);
|
|
90623
|
-
}
|
|
90624
|
-
|
|
90625
|
-
var identify=event.data.FrameID;
|
|
90626
|
-
JSConsole.Chart.Log('[MinuteRightMenu::DoModal]',identify);
|
|
90627
|
-
rightMenu.Show({
|
|
90628
|
-
windowIndex :identify,
|
|
90629
|
-
x:x+chart.UIElement.offsetLeft,
|
|
90630
|
-
y:y+chart.UIElement.offsetTop,
|
|
90631
|
-
position:chart.Frame.Position,
|
|
90632
|
-
data:dataList
|
|
90633
|
-
})
|
|
90634
|
-
|
|
90635
|
-
$(document).click(function () {
|
|
90636
|
-
rightMenu.Hide();
|
|
90637
|
-
});
|
|
90638
|
-
}
|
|
90639
|
-
|
|
90640
|
-
this.GetDayCount=function(chart)
|
|
90641
|
-
{
|
|
90642
|
-
var data=
|
|
90643
|
-
[
|
|
90644
|
-
{
|
|
90645
|
-
text: "当日分时图",
|
|
90646
|
-
click: function () { chart.ChangeDayCount(1); },
|
|
90647
|
-
isBorder:true
|
|
90648
|
-
},
|
|
90649
|
-
{
|
|
90650
|
-
text: "最近2日",
|
|
90651
|
-
click: function () { chart.ChangeDayCount(2); }
|
|
90652
|
-
},
|
|
90653
|
-
{
|
|
90654
|
-
text: "最近3日",
|
|
90655
|
-
click: function () { chart.ChangeDayCount(3); }
|
|
90656
|
-
},
|
|
90657
|
-
{
|
|
90658
|
-
text: "最近4日",
|
|
90659
|
-
click: function () { chart.ChangeDayCount(4); }
|
|
90660
|
-
},
|
|
90661
|
-
{
|
|
90662
|
-
text: "最近5日",
|
|
90663
|
-
click: function () { chart.ChangeDayCount(5); }
|
|
90664
|
-
},
|
|
90665
|
-
{
|
|
90666
|
-
text: "最近6日",
|
|
90667
|
-
click: function () { chart.ChangeDayCount(6); }
|
|
90668
|
-
}
|
|
90669
|
-
];
|
|
90670
|
-
|
|
90671
|
-
if ((chart.DayCount-1)>=0 && (chart.DayCount-1)<data.length) data[chart.DayCount-1].selected=true;
|
|
90672
|
-
|
|
90673
|
-
return data;
|
|
90674
|
-
}
|
|
90675
|
-
|
|
90676
|
-
this.GetIndex=function (chart)
|
|
90677
|
-
{
|
|
90678
|
-
var data=
|
|
90679
|
-
[
|
|
90680
|
-
{
|
|
90681
|
-
text: "MACD",
|
|
90682
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'MACD') }
|
|
90683
|
-
},
|
|
90684
|
-
{
|
|
90685
|
-
text: "DMI",
|
|
90686
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'DMI') }
|
|
90687
|
-
},
|
|
90688
|
-
{
|
|
90689
|
-
text: "DMA",
|
|
90690
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'DMA') }
|
|
90691
|
-
},
|
|
90692
|
-
{
|
|
90693
|
-
text: "BRAR",
|
|
90694
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'BRAR') }
|
|
90695
|
-
},
|
|
90696
|
-
{
|
|
90697
|
-
text: "KDJ",
|
|
90698
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'KDJ') }
|
|
90699
|
-
},
|
|
90700
|
-
{
|
|
90701
|
-
text: "RSI",
|
|
90702
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'RSI') }
|
|
90703
|
-
},
|
|
90704
|
-
{
|
|
90705
|
-
text: "WR",
|
|
90706
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'WR') }
|
|
90707
|
-
},
|
|
90708
|
-
{
|
|
90709
|
-
text: "CCI",
|
|
90710
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'CCI') }
|
|
90711
|
-
},
|
|
90712
|
-
{
|
|
90713
|
-
text: "TRIX",
|
|
90714
|
-
click: function (windowIndex) { chart.ChangeIndex(windowIndex, 'TRIX') }
|
|
90715
|
-
}
|
|
90716
|
-
];
|
|
90717
|
-
|
|
90718
|
-
return data;
|
|
90719
|
-
}
|
|
90720
|
-
|
|
90721
|
-
this.GetShowBeforeData=function(chart) //是否显示集合竞价
|
|
90722
|
-
{
|
|
90723
|
-
if (chart.IsShowBeforeData)
|
|
90724
|
-
{
|
|
90725
|
-
var data=
|
|
90726
|
-
[
|
|
90727
|
-
{
|
|
90728
|
-
text: "隐藏",
|
|
90729
|
-
click: function () { chart.ShowCallAuctionData( { Left:false, MultiDay:{ Left:false }} ); },
|
|
90730
|
-
}
|
|
90731
|
-
];
|
|
90732
|
-
|
|
90733
|
-
return data;
|
|
90734
|
-
}
|
|
90735
|
-
else
|
|
90736
|
-
{
|
|
90737
|
-
var data=
|
|
90738
|
-
[
|
|
90739
|
-
{
|
|
90740
|
-
text: "显示",
|
|
90741
|
-
click: function () { chart.ShowCallAuctionData({Left:true, MultiDay:{ Left:true }}); },
|
|
90742
|
-
}
|
|
90743
|
-
];
|
|
90744
|
-
|
|
90745
|
-
return data;
|
|
90746
|
-
}
|
|
90747
|
-
}
|
|
90748
|
-
|
|
90749
|
-
this.GetSelectRect=function(chart) //区间选择
|
|
90750
|
-
{
|
|
90751
|
-
if (chart.EnableSelectRect)
|
|
90752
|
-
{
|
|
90753
|
-
var data=
|
|
90754
|
-
[
|
|
90755
|
-
{
|
|
90756
|
-
text: "禁用区间选择",
|
|
90757
|
-
click: function () { chart.EnableSelectRect=false; },
|
|
90758
|
-
}
|
|
90759
|
-
];
|
|
90760
|
-
|
|
90761
|
-
return data;
|
|
90762
|
-
}
|
|
90763
|
-
else
|
|
90764
|
-
{
|
|
90765
|
-
var data=
|
|
90766
|
-
[
|
|
90767
|
-
{
|
|
90768
|
-
text: "启动区间选择",
|
|
90769
|
-
click: function () { chart.EnableSelectRect=true },
|
|
90770
|
-
}
|
|
90771
|
-
];
|
|
90772
|
-
|
|
90773
|
-
return data;
|
|
90774
|
-
}
|
|
90775
|
-
}
|
|
90776
|
-
|
|
90777
|
-
//指标窗口个数
|
|
90778
|
-
this.GetIndexWindowCount=function(chart)
|
|
90779
|
-
{
|
|
90780
|
-
var data=
|
|
90781
|
-
[
|
|
90782
|
-
{
|
|
90783
|
-
text: "1个窗口",
|
|
90784
|
-
click: function () { chart.ChangeIndexWindowCount(2); }
|
|
90785
|
-
},
|
|
90786
|
-
{
|
|
90787
|
-
text: "2个窗口",
|
|
90788
|
-
click: function () { chart.ChangeIndexWindowCount(3); }
|
|
90789
|
-
},
|
|
90790
|
-
{
|
|
90791
|
-
text: "3个窗口",
|
|
90792
|
-
click: function () { chart.ChangeIndexWindowCount(4); }
|
|
90793
|
-
},
|
|
90794
|
-
{
|
|
90795
|
-
text: "4个窗口",
|
|
90796
|
-
click: function () { chart.ChangeIndexWindowCount(5); }
|
|
90797
|
-
},
|
|
90798
|
-
{
|
|
90799
|
-
text: "5个窗口",
|
|
90800
|
-
click: function () { chart.ChangeIndexWindowCount(6); }
|
|
90801
|
-
}
|
|
90802
|
-
];
|
|
90803
|
-
|
|
90804
|
-
var count=chart.Frame.SubFrame.length-1;
|
|
90805
|
-
if ((count-1)>=0 && (count-1)<data.length) data[count-1].selected=true; //选中
|
|
90806
|
-
|
|
90807
|
-
return data;
|
|
90808
|
-
}
|
|
90809
|
-
|
|
90810
|
-
//工具
|
|
90811
|
-
this.GetTools=function(chart)
|
|
90812
|
-
{
|
|
90813
|
-
var data=[];
|
|
90814
|
-
var drawTools=chart.GetExtendChartByClassName('DrawToolsButton');
|
|
90815
|
-
if (drawTools)
|
|
90816
|
-
{
|
|
90817
|
-
data.push(
|
|
90818
|
-
{
|
|
90819
|
-
text: "关闭画图工具",
|
|
90820
|
-
click: function ()
|
|
90821
|
-
{
|
|
90822
|
-
var toolsWidth=drawTools.Chart.Width;
|
|
90823
|
-
var toolsIndex=parseInt(drawTools.Index);
|
|
90824
|
-
chart.DeleteExtendChart(drawTools);
|
|
90825
|
-
chart.Frame.ChartBorder.Right-=toolsWidth;
|
|
90826
|
-
chart.SetSizeChange(true);
|
|
90827
|
-
chart.Draw();
|
|
90828
|
-
}
|
|
90829
|
-
}
|
|
90830
|
-
);
|
|
90831
|
-
}
|
|
90832
|
-
else
|
|
90833
|
-
{
|
|
90834
|
-
data.push(
|
|
90835
|
-
{
|
|
90836
|
-
text: "画图工具",
|
|
90837
|
-
click: function () {
|
|
90838
|
-
var option={Name:'画图工具', Top:chart.Frame.ChartBorder.Top };
|
|
90839
|
-
var extendChart=chart.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
90840
|
-
chart.SetSizeChange(true);
|
|
90841
|
-
chart.Draw();
|
|
90842
|
-
}
|
|
90843
|
-
}
|
|
90844
|
-
);
|
|
90845
|
-
}
|
|
90846
|
-
|
|
90847
|
-
return data;
|
|
90848
|
-
}
|
|
90849
|
-
}
|
|
90850
|
-
|
|
90851
90134
|
//画图工具 单个图形设置
|
|
90852
90135
|
function ChartPictureSettingMenu(divElement)
|
|
90853
90136
|
{
|
|
@@ -132506,7 +131789,7 @@ function ScrollBarBGChart()
|
|
|
132506
131789
|
|
|
132507
131790
|
|
|
132508
131791
|
|
|
132509
|
-
var HQCHART_VERSION="1.1.
|
|
131792
|
+
var HQCHART_VERSION="1.1.13190";
|
|
132510
131793
|
|
|
132511
131794
|
function PrintHQChartVersion()
|
|
132512
131795
|
{
|