hqchart 1.1.13167 → 1.1.13182
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 +284 -189
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +4 -2
- package/src/jscommon/umychart.js +796 -109
- package/src/jscommon/umychart.popMenu.js +266 -0
- package/src/jscommon/umychart.resource/css/umychart.popmenu.css +92 -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 +801 -112
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +1069 -112
package/src/jscommon/umychart.js
CHANGED
|
@@ -275,6 +275,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
275
275
|
chart.ModifyIndexDialog=this.ModifyIndexDialog;
|
|
276
276
|
chart.ChangeIndexDialog=this.ChangeIndexDialog;
|
|
277
277
|
chart.MinuteDialog=this.MinuteDialog;
|
|
278
|
+
|
|
279
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
278
280
|
|
|
279
281
|
//右键菜单
|
|
280
282
|
if (option.IsShowRightMenu==true) chart.RightMenu=new KLineRightMenu(this.DivElement);
|
|
@@ -493,8 +495,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
493
495
|
chart.Frame.SubFrame[i].Frame.IsShowYText[1]=item.IsShowRightText;
|
|
494
496
|
chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowRightText=item.IsShowRightText; //显示右边刻度
|
|
495
497
|
}
|
|
496
|
-
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace;
|
|
497
|
-
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace;
|
|
498
|
+
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;
|
|
499
|
+
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;
|
|
498
500
|
|
|
499
501
|
if (item.RightTextPosition>0) chart.Frame.SubFrame[i].Frame.YTextPosition[1]=item.RightTextPosition;
|
|
500
502
|
if (item.LeftTextPosition>0) chart.Frame.SubFrame[i].Frame.YTextPosition[0]=item.LeftTextPosition;
|
|
@@ -796,6 +798,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
796
798
|
chart.ModifyIndexDialog=this.ModifyIndexDialog;
|
|
797
799
|
chart.ChangeIndexDialog=this.ChangeIndexDialog;
|
|
798
800
|
|
|
801
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
802
|
+
|
|
799
803
|
var windowsCount=2;
|
|
800
804
|
if (option.Windows && option.Windows.length>0) windowsCount+=option.Windows.length; //指标窗口从第3个窗口开始
|
|
801
805
|
if (option.EnableScrollUpDown==true) chart.EnableScrollUpDown=option.EnableScrollUpDown;
|
|
@@ -963,8 +967,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
963
967
|
if (IFrameSplitOperator.IsNumber(item.YTextBaseline)) chart.Frame.SubFrame[i].Frame.YTextBaseline=item.YTextBaseline;
|
|
964
968
|
if (IFrameSplitOperator.IsBool(item.IsShowIndexTitle)) chart.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;
|
|
965
969
|
|
|
966
|
-
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace;
|
|
967
|
-
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace;
|
|
970
|
+
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;
|
|
971
|
+
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;
|
|
968
972
|
|
|
969
973
|
//是否显示关闭集合竞价按钮
|
|
970
974
|
if (IFrameSplitOperator.IsNumber(item.CloseBeforeButton)) chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;
|
|
@@ -1637,6 +1641,13 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1637
1641
|
//是否自动更新
|
|
1638
1642
|
if (option.IsAutoUpdate!=null) chart.IsAutoUpdate=option.IsAutoUpdate;
|
|
1639
1643
|
if (option.AutoUpdateFrequency>0) chart.AutoUpdateFrequency=option.AutoUpdateFrequency;
|
|
1644
|
+
//内置菜单
|
|
1645
|
+
if (option.EnablePopMenuV2===true)
|
|
1646
|
+
{
|
|
1647
|
+
chart.JSPopMenu=new JSPopMenu();
|
|
1648
|
+
chart.JSPopMenu.Inital();
|
|
1649
|
+
chart.EnablePopMenuV2=true;
|
|
1650
|
+
}
|
|
1640
1651
|
//注册事件
|
|
1641
1652
|
if (option.EventCallback)
|
|
1642
1653
|
{
|
|
@@ -1663,19 +1674,6 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1663
1674
|
this.DivElement.JSChart=this; //div中保存一份
|
|
1664
1675
|
this.JSChartContainer.Draw();
|
|
1665
1676
|
}
|
|
1666
|
-
|
|
1667
|
-
if (IFrameSplitOperator.IsBool(option.CheckLatestVerion) && option.CheckLatestVerion==false)
|
|
1668
|
-
{
|
|
1669
|
-
|
|
1670
|
-
}
|
|
1671
|
-
else if (JSChart.LastVersion==null)
|
|
1672
|
-
{
|
|
1673
|
-
if (chart && typeof(chart.GetLatestVersion)=='function')
|
|
1674
|
-
{
|
|
1675
|
-
//由于域名都要备案,获取最新版本接口停止使用
|
|
1676
|
-
//chart.GetLatestVersion();
|
|
1677
|
-
}
|
|
1678
|
-
}
|
|
1679
1677
|
}
|
|
1680
1678
|
|
|
1681
1679
|
//创建工具条
|
|
@@ -2119,6 +2117,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
2119
2117
|
return this.JSChartContainer.ChangePriceGap(option);
|
|
2120
2118
|
}
|
|
2121
2119
|
}
|
|
2120
|
+
|
|
2121
|
+
this.PopupMenuByTab=function(menuData, rtTab)
|
|
2122
|
+
{
|
|
2123
|
+
if(this.JSChartContainer && typeof(this.JSChartContainer.PopupMenuByTab)=='function')
|
|
2124
|
+
{
|
|
2125
|
+
JSConsole.Chart.Log('[JSChart:ChangePriceGap] ');
|
|
2126
|
+
return this.JSChartContainer.PopupMenuByTab(menuData, rtTab);
|
|
2127
|
+
}
|
|
2128
|
+
}
|
|
2122
2129
|
}
|
|
2123
2130
|
|
|
2124
2131
|
JSChart.LastVersion=null; //最新的版本号
|
|
@@ -2324,6 +2331,12 @@ JSChart.ToFixedRect=function(value)
|
|
|
2324
2331
|
return ToFixedRect(value);
|
|
2325
2332
|
}
|
|
2326
2333
|
|
|
2334
|
+
JSChart.GetScrollPosition=function()
|
|
2335
|
+
{
|
|
2336
|
+
return GetScrollPosition();
|
|
2337
|
+
}
|
|
2338
|
+
|
|
2339
|
+
|
|
2327
2340
|
|
|
2328
2341
|
|
|
2329
2342
|
var JSCHART_EVENT_ID=
|
|
@@ -2609,6 +2622,36 @@ var JSCHART_WORKER_MESSAGE_ID=
|
|
|
2609
2622
|
ERROR_EXECUTE_SCRIPT:3,
|
|
2610
2623
|
}
|
|
2611
2624
|
|
|
2625
|
+
var JSCHART_MENU_ID=
|
|
2626
|
+
{
|
|
2627
|
+
CMD_CHANGE_PERIOD_ID:1, //切换周期
|
|
2628
|
+
CMD_CHANGE_WINDOW_COUNT_ID:2, //窗口个数
|
|
2629
|
+
CMD_CHANGE_RIGHT_ID:3, //复权
|
|
2630
|
+
CMD_CHANGE_INDEX_ID:4, //切换指标
|
|
2631
|
+
CMD_CHANGE_COLOR_INDEX_ID:5, //五彩K线指标
|
|
2632
|
+
CMD_CHANGE_TRADE_INDEX_ID:6, //专家系统(交易指标)
|
|
2633
|
+
CMD_DELETE_COLOR_INDEX_ID:7, //删除五彩K线指标
|
|
2634
|
+
CMD_DELETE_TRADE_INDEX_ID:8, //删除专家系统(交易指标)
|
|
2635
|
+
CMD_CHANGE_KLINE_TYPE_ID:9, //切换K线类型
|
|
2636
|
+
CMD_CHANGE_PRICE_GAP_ID:10, //缺口提示
|
|
2637
|
+
CMD_OVERLAY_SYMBOL_ID:11, //叠加品种
|
|
2638
|
+
CMD_DELETE_ALL_OVERLAY_SYMBOL_ID:12, //删除所有叠加品种
|
|
2639
|
+
CMD_CHANGE_COORDINATETYPE_ID:13, //切换坐标类型
|
|
2640
|
+
CMD_CHANGE_KLINE_INFO_ID:14, //切换信息地雷
|
|
2641
|
+
CMD_DELETE_ALL_KLINE_INFO_ID:15, //清空信息地雷
|
|
2642
|
+
CMD_CHANGE_DRAG_MODE_ID:16, //切换拖动模式
|
|
2643
|
+
CMD_CHANGE_BG_SPLIT_ID:17, //背景分割
|
|
2644
|
+
|
|
2645
|
+
CMD_SHOW_DRAWTOOL_ID:18, //画图工具
|
|
2646
|
+
CMD_HIDE_DRAWTOOL_ID:19,
|
|
2647
|
+
|
|
2648
|
+
CMD_SHOW_STOCKCHIP_ID:20, //筹码分布
|
|
2649
|
+
CMD_HIDE_STOCKCHIP_ID:21,
|
|
2650
|
+
|
|
2651
|
+
CMD_ENABLE_SELECT_RECT_ID:22, //启动区间选择
|
|
2652
|
+
CMD_CHANGE_DAY_COUNT_ID:23, //切换天数
|
|
2653
|
+
}
|
|
2654
|
+
|
|
2612
2655
|
|
|
2613
2656
|
function PhoneDBClick()
|
|
2614
2657
|
{
|
|
@@ -2694,6 +2737,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
2694
2737
|
this.LoadDataSplashTitle="数据加载中"; //下载数据提示信息
|
|
2695
2738
|
this.DefaultCursor="default"; //crosshair , default 默认手型
|
|
2696
2739
|
|
|
2740
|
+
this.EnablePopMenuV2=false;
|
|
2741
|
+
this.JSPopMenu; //内置菜单
|
|
2742
|
+
//this.JSPopMenu=new JSPopMenu(); //内置菜单
|
|
2743
|
+
//this.JSPopMenu.Inital();
|
|
2744
|
+
|
|
2697
2745
|
//绘图缓存
|
|
2698
2746
|
this.CacheCanvas=null;
|
|
2699
2747
|
this.CacheElement=null;
|
|
@@ -2889,61 +2937,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
2889
2937
|
{
|
|
2890
2938
|
this.IsDestroy=true;
|
|
2891
2939
|
this.StopAutoUpdate();
|
|
2892
|
-
|
|
2893
|
-
if (this.GetLatestVersionTimer!=null)
|
|
2894
|
-
{
|
|
2895
|
-
clearTimeout(this.GetLatestVersionTimer);
|
|
2896
|
-
this.GetLatestVersionTimer=null;
|
|
2897
|
-
}
|
|
2898
2940
|
}
|
|
2899
2941
|
|
|
2900
2942
|
this.ChartDestory=this.ChartDestroy; //老版本写错了,需要兼容下
|
|
2901
2943
|
|
|
2902
|
-
|
|
2903
|
-
this.GetLatestVersionTimer=null; //获取最新版本
|
|
2904
|
-
this.GetLatestVersion=function()
|
|
2905
|
-
{
|
|
2906
|
-
if (this.GetLatestVersionTimer!=null)
|
|
2907
|
-
{
|
|
2908
|
-
clearTimeout(this.GetLatestVersionTimer);
|
|
2909
|
-
this.GetLatestVersionTimer=null;
|
|
2910
|
-
}
|
|
2911
|
-
|
|
2912
|
-
var roundeTime=Math.floor(Math.random()*50);
|
|
2913
|
-
var waittimer=1000*60*3+(roundeTime*1000);
|
|
2914
|
-
var value="aHR0cHM6Ly9ocWNoYXJ0LnplYWxpbmsuY29tL2FwaS9HZXRWZXJzaW9u";
|
|
2915
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] wait for get hqchart latest version. ",waittimer);
|
|
2916
|
-
this.GetLatestVersionTimer = setTimeout(()=>
|
|
2917
|
-
{
|
|
2918
|
-
var width=0, height=0;
|
|
2919
|
-
if (this.Frame && this.Frame.ChartBorder)
|
|
2920
|
-
{
|
|
2921
|
-
width=this.Frame.ChartBorder.GetChartWidth();
|
|
2922
|
-
height=this.Frame.ChartBorder.GetChartHeight();
|
|
2923
|
-
}
|
|
2924
|
-
|
|
2925
|
-
var url=`${atob(value)}?width=${width}&height=${height}&type=h5`;
|
|
2926
|
-
|
|
2927
|
-
if (JSChart.LastVersion!=null) return; //只请求一次
|
|
2928
|
-
|
|
2929
|
-
JSNetwork.HttpRequest({
|
|
2930
|
-
url: url,
|
|
2931
|
-
type:"get",
|
|
2932
|
-
dataType: "json",
|
|
2933
|
-
async:true,
|
|
2934
|
-
success:function(data)
|
|
2935
|
-
{
|
|
2936
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] hqchart latest version. ",data);
|
|
2937
|
-
JSChart.LastVersion=data;
|
|
2938
|
-
},
|
|
2939
|
-
error:function(request, textStatus, errorThrown)
|
|
2940
|
-
{
|
|
2941
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] Get HQChart latest version failed.", request);
|
|
2942
|
-
}
|
|
2943
|
-
});
|
|
2944
|
-
}, waittimer);
|
|
2945
|
-
}
|
|
2946
|
-
|
|
2947
2944
|
//设置焦点
|
|
2948
2945
|
this.SetFocus=function()
|
|
2949
2946
|
{
|
|
@@ -5235,10 +5232,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
5235
5232
|
var item=this.ChartDrawPicture[i];
|
|
5236
5233
|
if (item.IsDrawFirst) continue;
|
|
5237
5234
|
if (item.IsDrawMain && item.IsDrawMain()) continue;
|
|
5235
|
+
if (this.SelectChartDrawPicture && this.SelectChartDrawPicture.Guid==item.Guid) continue; //当前选中在最后画
|
|
5238
5236
|
|
|
5239
5237
|
item.Draw();
|
|
5240
5238
|
}
|
|
5241
5239
|
|
|
5240
|
+
if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.Draw();
|
|
5241
|
+
|
|
5242
5242
|
if (this.CurrentChartDrawPicture && this.CurrentChartDrawPicture.Status!=10)
|
|
5243
5243
|
{
|
|
5244
5244
|
this.CurrentChartDrawPicture.Draw();
|
|
@@ -5678,10 +5678,16 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
5678
5678
|
var item=this.ChartDrawPicture[i];
|
|
5679
5679
|
if (item.IsDrawFirst) continue;
|
|
5680
5680
|
if (item.IsDrawMain && item.IsDrawMain()) continue;
|
|
5681
|
+
if (this.SelectChartDrawPicture &&item.Guid==this.SelectChartDrawPicture.Guid) continue; //选中画图最后画 确保显示在最外面
|
|
5681
5682
|
|
|
5682
5683
|
item.Draw(moveonPoint, this.LastMouseStatus);
|
|
5683
5684
|
}
|
|
5684
5685
|
|
|
5686
|
+
if (this.SelectChartDrawPicture)
|
|
5687
|
+
{
|
|
5688
|
+
this.SelectChartDrawPicture.Draw(moveonPoint, this.LastMouseStatus);
|
|
5689
|
+
}
|
|
5690
|
+
|
|
5685
5691
|
if (this.CurrentChartDrawPicture && this.CurrentChartDrawPicture.Status!=10)
|
|
5686
5692
|
{
|
|
5687
5693
|
this.CurrentChartDrawPicture.Draw();
|
|
@@ -8993,6 +8999,213 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8993
8999
|
}
|
|
8994
9000
|
}
|
|
8995
9001
|
}
|
|
9002
|
+
|
|
9003
|
+
this.PopupMenuByTab=function(menuData, rtTab)
|
|
9004
|
+
{
|
|
9005
|
+
if (!this.JSPopMenu) return;
|
|
9006
|
+
|
|
9007
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
9008
|
+
var rtCell={ Left:rtTab.Left/pixelRatio, Right:rtTab.Right/pixelRatio, Bottom:rtTab.Bottom/pixelRatio, Top:rtTab.Top/pixelRatio };
|
|
9009
|
+
rtCell.Width=rtCell.Right-rtCell.Left;
|
|
9010
|
+
rtCell.Height=rtCell.Bottom-rtCell.Top;
|
|
9011
|
+
|
|
9012
|
+
var rtClient=this.UIElement.getBoundingClientRect();
|
|
9013
|
+
var rtScroll=GetScrollPosition();
|
|
9014
|
+
|
|
9015
|
+
var offsetLeft=rtClient.left+rtScroll.Left;
|
|
9016
|
+
var offsetTop=rtClient.top+rtScroll.Top;
|
|
9017
|
+
rtCell.Left+=offsetLeft;
|
|
9018
|
+
rtCell.Right+=offsetLeft;
|
|
9019
|
+
rtCell.Top+=offsetTop;
|
|
9020
|
+
rtCell.Bottom+=offsetTop;
|
|
9021
|
+
|
|
9022
|
+
this.JSPopMenu.CreatePopMenu(menuData);
|
|
9023
|
+
this.JSPopMenu.PopupMenuByTab(rtCell);
|
|
9024
|
+
}
|
|
9025
|
+
|
|
9026
|
+
this.PopuMenuByRClick=function(menuData, x, y)
|
|
9027
|
+
{
|
|
9028
|
+
var rtClient=this.UIElement.getBoundingClientRect();
|
|
9029
|
+
var rtScroll=GetScrollPosition();
|
|
9030
|
+
|
|
9031
|
+
x+=rtClient.left+rtScroll.Left;
|
|
9032
|
+
y+=rtClient.top+rtScroll.Top;
|
|
9033
|
+
|
|
9034
|
+
this.JSPopMenu.CreatePopMenu(menuData);
|
|
9035
|
+
this.JSPopMenu.PopupMenuByRight(x,y);
|
|
9036
|
+
}
|
|
9037
|
+
|
|
9038
|
+
//点击右键菜单
|
|
9039
|
+
this.OnClickRightMenu=function(data)
|
|
9040
|
+
{
|
|
9041
|
+
JSConsole.Chart.Log('[JSChartContainer::OnClickRightMenu] ',data);
|
|
9042
|
+
if (!data || !data.Data) return;
|
|
9043
|
+
|
|
9044
|
+
var cmdID=data.Data.ID; //命令ID
|
|
9045
|
+
var aryArgs=data.Data.Args; //参数
|
|
9046
|
+
var param=null, srcParam=null; //原始值
|
|
9047
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryArgs))
|
|
9048
|
+
{
|
|
9049
|
+
srcParam=aryArgs[0];
|
|
9050
|
+
if (IFrameSplitOperator.IsNumber(aryArgs[0])) param=aryArgs[0];
|
|
9051
|
+
}
|
|
9052
|
+
|
|
9053
|
+
switch(cmdID)
|
|
9054
|
+
{
|
|
9055
|
+
case JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID:
|
|
9056
|
+
if (this.ChangePeriod && param!=null)
|
|
9057
|
+
this.ChangePeriod(param);
|
|
9058
|
+
break;
|
|
9059
|
+
case JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID:
|
|
9060
|
+
if (this.ChangeIndexWindowCount && param!=null)
|
|
9061
|
+
this.ChangeIndexWindowCount(param);
|
|
9062
|
+
break;
|
|
9063
|
+
case JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID:
|
|
9064
|
+
if (this.ChangeRight && param!=null)
|
|
9065
|
+
this.ChangeRight(param);
|
|
9066
|
+
break;
|
|
9067
|
+
case JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID:
|
|
9068
|
+
if (this.ChangeIndex && param!=null && aryArgs[1])
|
|
9069
|
+
this.ChangeIndex(param,aryArgs[1]);
|
|
9070
|
+
break;
|
|
9071
|
+
|
|
9072
|
+
case JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID:
|
|
9073
|
+
case JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID:
|
|
9074
|
+
if (this.ChangeInstructionIndex && aryArgs[0])
|
|
9075
|
+
this.ChangeInstructionIndex(aryArgs[0]);
|
|
9076
|
+
break;
|
|
9077
|
+
case JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID: //删除五彩K线指标
|
|
9078
|
+
case JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID: //删除专家系统(交易指标)
|
|
9079
|
+
if (this.CancelInstructionIndex) this.CancelInstructionIndex();
|
|
9080
|
+
break;
|
|
9081
|
+
case JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID: //切换K线类型
|
|
9082
|
+
if (this.ChangeKLineDrawType && param!=null)
|
|
9083
|
+
this.ChangeKLineDrawType(param,aryArgs[1],aryArgs[2]);
|
|
9084
|
+
break;
|
|
9085
|
+
case JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID: //缺口提示
|
|
9086
|
+
if (this.ChangePriceGap && IFrameSplitOperator.IsBool(aryArgs[0]))
|
|
9087
|
+
{
|
|
9088
|
+
if (aryArgs[0]==false)
|
|
9089
|
+
{
|
|
9090
|
+
this.ChangePriceGap({ Enable:aryArgs[0] });
|
|
9091
|
+
}
|
|
9092
|
+
else
|
|
9093
|
+
{
|
|
9094
|
+
if (IFrameSplitOperator.IsNumber(aryArgs[1]))
|
|
9095
|
+
this.ChangePriceGap({ Enable:aryArgs[0], Count:aryArgs[1] });
|
|
9096
|
+
}
|
|
9097
|
+
}
|
|
9098
|
+
break;
|
|
9099
|
+
case JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID:
|
|
9100
|
+
if (aryArgs[1]===true)
|
|
9101
|
+
{
|
|
9102
|
+
if (this.OverlaySymbol && aryArgs[0]) this.OverlaySymbol(aryArgs[0]);
|
|
9103
|
+
}
|
|
9104
|
+
else if (aryArgs[1]===false)
|
|
9105
|
+
{
|
|
9106
|
+
if (this.DeleteOverlaySymbol && aryArgs[0]) this.DeleteOverlaySymbol(aryArgs[0]);
|
|
9107
|
+
}
|
|
9108
|
+
break;
|
|
9109
|
+
case JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID:
|
|
9110
|
+
if (this.ClearOverlaySymbol) this.ClearOverlaySymbol();
|
|
9111
|
+
break;
|
|
9112
|
+
case JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID:
|
|
9113
|
+
if (this.ChangeCoordinateType && aryArgs[0]) this.ChangeCoordinateType(aryArgs[0]);
|
|
9114
|
+
break;
|
|
9115
|
+
case JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID:
|
|
9116
|
+
if (aryArgs[0] && IFrameSplitOperator.IsBool(aryArgs[1]))
|
|
9117
|
+
{
|
|
9118
|
+
if (aryArgs[1]==true && this.AddKLineInfo) this.AddKLineInfo(aryArgs[0],true);
|
|
9119
|
+
else if (aryArgs[1]==false && this.DeleteKLineInfo) this.DeleteKLineInfo(aryArgs[0]);
|
|
9120
|
+
}
|
|
9121
|
+
break;
|
|
9122
|
+
case JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID:
|
|
9123
|
+
if (this.ClearKLineInfo) this.ClearKLineInfo();
|
|
9124
|
+
break;
|
|
9125
|
+
case JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID:
|
|
9126
|
+
if (param!=null) this.DragMode=param;
|
|
9127
|
+
break;
|
|
9128
|
+
case JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID:
|
|
9129
|
+
if (IFrameSplitOperator.IsBool(srcParam))
|
|
9130
|
+
{
|
|
9131
|
+
if (srcParam)
|
|
9132
|
+
{
|
|
9133
|
+
this.CreateExtendChart("SessionBreaksPaint", { });
|
|
9134
|
+
this.Draw();
|
|
9135
|
+
}
|
|
9136
|
+
else
|
|
9137
|
+
{
|
|
9138
|
+
var finder=this.GetExtendChartByClassName("SessionBreaksPaint");
|
|
9139
|
+
if (finder)
|
|
9140
|
+
{
|
|
9141
|
+
this.DeleteExtendChartByID(finder.Chart.ID);
|
|
9142
|
+
this.Draw();
|
|
9143
|
+
}
|
|
9144
|
+
}
|
|
9145
|
+
}
|
|
9146
|
+
break;
|
|
9147
|
+
case JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID:
|
|
9148
|
+
var option={Name:'画图工具', Top:this.Frame.ChartBorder.Top };
|
|
9149
|
+
var extendChart=this.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
9150
|
+
this.SetSizeChange(true);
|
|
9151
|
+
this.Draw();
|
|
9152
|
+
break;
|
|
9153
|
+
case JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:
|
|
9154
|
+
var drawTools=this.GetExtendChartByClassName('DrawToolsButton');
|
|
9155
|
+
if (drawTools)
|
|
9156
|
+
{
|
|
9157
|
+
var toolsWidth=drawTools.Chart.Width;
|
|
9158
|
+
var toolsIndex=parseInt(drawTools.Index);
|
|
9159
|
+
for(var i=toolsIndex+1; i<this.ExtendChartPaint.length; ++i) //在画图工具后面创建的需要减去工具的宽度
|
|
9160
|
+
{
|
|
9161
|
+
var item=this.ExtendChartPaint[i];
|
|
9162
|
+
if (item.ClassName=='StockChip')
|
|
9163
|
+
{
|
|
9164
|
+
item.Left-=toolsWidth;
|
|
9165
|
+
}
|
|
9166
|
+
}
|
|
9167
|
+
this.DeleteExtendChart(drawTools);
|
|
9168
|
+
this.Frame.ChartBorder.Right-=toolsWidth;
|
|
9169
|
+
this.SetSizeChange(true);
|
|
9170
|
+
this.Draw();
|
|
9171
|
+
}
|
|
9172
|
+
break;
|
|
9173
|
+
case JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID:
|
|
9174
|
+
var option={Name:'筹码分布', ShowType:1, Width:230 };
|
|
9175
|
+
var extendChart=this.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
9176
|
+
this.SetSizeChange(true);
|
|
9177
|
+
this.Draw();
|
|
9178
|
+
break;
|
|
9179
|
+
case JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:
|
|
9180
|
+
var StockChip=chart.GetExtendChartByClassName('StockChip');
|
|
9181
|
+
if (StockChip)
|
|
9182
|
+
{
|
|
9183
|
+
var chipWidth=StockChip.Chart.Width;
|
|
9184
|
+
var chipIndex=parseInt(StockChip.Index);
|
|
9185
|
+
for(var i=chipIndex+1; i<this.ExtendChartPaint.length; ++i) //在筹码后面创建的需要筹码的宽度
|
|
9186
|
+
{
|
|
9187
|
+
var item=this.ExtendChartPaint[i];
|
|
9188
|
+
if (item.ClassName=='DrawToolsButton')
|
|
9189
|
+
{
|
|
9190
|
+
item.Left-=chipWidth;
|
|
9191
|
+
}
|
|
9192
|
+
}
|
|
9193
|
+
this.DeleteExtendChart(StockChip);
|
|
9194
|
+
this.Frame.ChartBorder.Right-=chipWidth;
|
|
9195
|
+
this.SetSizeChange(true);
|
|
9196
|
+
this.Draw();
|
|
9197
|
+
}
|
|
9198
|
+
break;
|
|
9199
|
+
case JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID:
|
|
9200
|
+
if (IFrameSplitOperator.IsBool(srcParam))
|
|
9201
|
+
this.EnableSelectRect=srcParam;
|
|
9202
|
+
break;
|
|
9203
|
+
case JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID:
|
|
9204
|
+
if (this.ChangeDayCount && param!=null)
|
|
9205
|
+
this.ChangeDayCount(param);
|
|
9206
|
+
break;
|
|
9207
|
+
}
|
|
9208
|
+
}
|
|
8996
9209
|
}
|
|
8997
9210
|
|
|
8998
9211
|
function GetDevicePixelRatio()
|
|
@@ -9090,11 +9303,12 @@ function GetScrollPosition()
|
|
|
9090
9303
|
var scrollPos={};
|
|
9091
9304
|
var scrollTop=0;
|
|
9092
9305
|
var scrollLeft=0;
|
|
9093
|
-
if(document.documentElement && document.documentElement.scrollTop)
|
|
9306
|
+
if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft))
|
|
9094
9307
|
{
|
|
9095
9308
|
scrollTop=document.documentElement.scrollTop;
|
|
9096
9309
|
scrollLeft=document.documentElement.scrollLeft;
|
|
9097
|
-
}
|
|
9310
|
+
}
|
|
9311
|
+
else if(document.body)
|
|
9098
9312
|
{
|
|
9099
9313
|
scrollTop=document.body.scrollTop;
|
|
9100
9314
|
scrollLeft=document.body.scrollLeft;
|
|
@@ -44058,7 +44272,8 @@ function FrameButtomToolbarPaint()
|
|
|
44058
44272
|
this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);
|
|
44059
44273
|
}
|
|
44060
44274
|
|
|
44061
|
-
var font=this.
|
|
44275
|
+
var font=this.GetTitleFont(rtBG.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom);
|
|
44276
|
+
var svgFont=this.GetSVGFont(rtBG.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom);
|
|
44062
44277
|
this.Canvas.textBaseline='middle';
|
|
44063
44278
|
this.Canvas.textAlign='center';
|
|
44064
44279
|
this.Canvas.font=font;
|
|
@@ -44066,9 +44281,23 @@ function FrameButtomToolbarPaint()
|
|
|
44066
44281
|
for(var i=0;i<this.AryButton.length;++i)
|
|
44067
44282
|
{
|
|
44068
44283
|
var item=this.AryButton[i];
|
|
44069
|
-
if (!item.Title) return;
|
|
44070
|
-
|
|
44071
|
-
var
|
|
44284
|
+
if (!item.Title && !(item.SVGButton && item.SVGButton.Symbol)) return;
|
|
44285
|
+
|
|
44286
|
+
var textWidth=0;
|
|
44287
|
+
if (item.Title)
|
|
44288
|
+
{
|
|
44289
|
+
textWidth=this.Canvas.measureText(item.Title).width+2;
|
|
44290
|
+
}
|
|
44291
|
+
|
|
44292
|
+
var svgButtonWidth=0;
|
|
44293
|
+
if (item.SVGButton && item.SVGButton.Symbol)
|
|
44294
|
+
{
|
|
44295
|
+
svgButtonWidth=this.ButtonConfig.SVG.Size;
|
|
44296
|
+
if (textWidth>0) svgButtonWidth+=this.ButtonConfig.SVG.MerginLeft;
|
|
44297
|
+
|
|
44298
|
+
}
|
|
44299
|
+
|
|
44300
|
+
var buttonWidth=textWidth+svgButtonWidth+this.ButtonConfig.Mergin.Left+this.ButtonConfig.Mergin.Right;
|
|
44072
44301
|
var rtButton={ Left:xBotton, Top:rtBG.Top, Bottom:rtBG.Bottom, Height:rtBG.Height, Width:buttonWidth };
|
|
44073
44302
|
rtButton.Right=rtButton.Left+rtButton.Width;
|
|
44074
44303
|
|
|
@@ -44105,12 +44334,50 @@ function FrameButtomToolbarPaint()
|
|
|
44105
44334
|
this.Canvas.stroke();
|
|
44106
44335
|
}
|
|
44107
44336
|
|
|
44108
|
-
|
|
44109
|
-
|
|
44110
|
-
|
|
44111
|
-
|
|
44337
|
+
if (item.Title)
|
|
44338
|
+
{
|
|
44339
|
+
this.Canvas.fillStyle=titleColor;
|
|
44340
|
+
var xText=rtButton.Left+(rtButton.Width-svgButtonWidth)/2; //居中
|
|
44341
|
+
var yText=rtButton.Top+this.ButtonConfig.Mergin.Top+(rtButton.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom)/2;
|
|
44342
|
+
this.Canvas.fillText(item.Title,xText,yText);
|
|
44343
|
+
}
|
|
44344
|
+
|
|
44345
|
+
|
|
44346
|
+
var rtSVG=null;
|
|
44347
|
+
if (item.SVGButton && item.SVGButton.Symbol)
|
|
44348
|
+
{
|
|
44349
|
+
this.Canvas.font=svgFont;
|
|
44350
|
+
this.Canvas.fillStyle=titleColor;
|
|
44351
|
+
var xText=rtButton.Right-this.ButtonConfig.SVG.Size/2-this.ButtonConfig.Mergin.Right;
|
|
44352
|
+
this.Canvas.fillText(item.SVGButton.Symbol,xText,yText);
|
|
44353
|
+
this.Canvas.font=font;
|
|
44354
|
+
|
|
44355
|
+
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};
|
|
44356
|
+
rtSVG.Right=rtSVG.Left+rtSVG.Width;
|
|
44357
|
+
rtSVG.Bottom=rtSVG.Top+rtSVG.Height;
|
|
44358
|
+
}
|
|
44359
|
+
|
|
44360
|
+
//{ Rect:rtButton, ID:item.ID, Data:item, RectSVG:rtSVG }
|
|
44361
|
+
if (textWidth>0 && svgButtonWidth>0)
|
|
44362
|
+
{
|
|
44363
|
+
var rtText={ Left:rtButton.Left, Top:rtButton.Top, Bottom:rtButton.Bottom };
|
|
44364
|
+
rtText.Right=rtText.Left+textWidth+this.ButtonConfig.Mergin.Left+this.ButtonConfig.SVG.MerginLeft/2;
|
|
44365
|
+
var cacheItem={ Rect:rtText, ID:item.ID, Data:item, RectCell:rtButton, ButtonType:0 };
|
|
44366
|
+
this.AryRectButton.push(cacheItem);
|
|
44367
|
+
|
|
44368
|
+
var rtSVG={Left:rtText.Right, Right:rtButton.Right, Top:rtButton.Top, Bottom:rtButton.Bottom };
|
|
44369
|
+
var cacheItem={ Rect:rtSVG, ID:item.ID, Data:item, RectCell:rtButton, ButtonType:1 };
|
|
44370
|
+
this.AryRectButton.push(cacheItem);
|
|
44371
|
+
}
|
|
44372
|
+
else
|
|
44373
|
+
{
|
|
44374
|
+
var cacheItem={ Rect:rtButton, ID:item.ID, Data:item, RectCell:rtButton }; //RectCell 全部的大小
|
|
44375
|
+
if (textWidth>0) cacheItem.ButtonType=0;
|
|
44376
|
+
else if (svgButtonWidth>0) cacheItem.ButtonType=1;
|
|
44377
|
+
this.AryRectButton.push(cacheItem);
|
|
44378
|
+
}
|
|
44379
|
+
|
|
44112
44380
|
|
|
44113
|
-
this.AryRectButton.push({ Rect:rtButton, ID:item.ID, Data:item });
|
|
44114
44381
|
|
|
44115
44382
|
xBotton+=buttonWidth+1;
|
|
44116
44383
|
}
|
|
@@ -44139,13 +44406,22 @@ function FrameButtomToolbarPaint()
|
|
|
44139
44406
|
return null;
|
|
44140
44407
|
}
|
|
44141
44408
|
|
|
44142
|
-
this.
|
|
44409
|
+
this.GetTitleFont=function(height)
|
|
44143
44410
|
{
|
|
44144
44411
|
var config=this.ButtonConfig.Font;
|
|
44145
|
-
var fontSize=height;
|
|
44412
|
+
var fontSize=height*GetDevicePixelRatio();
|
|
44146
44413
|
if (IFrameSplitOperator.IsPlusNumber(config.Size)) fontSize=config.Size;
|
|
44147
44414
|
|
|
44148
|
-
var font=`${fontSize
|
|
44415
|
+
var font=`${fontSize}px ${config.Family}`;
|
|
44416
|
+
return font;
|
|
44417
|
+
}
|
|
44418
|
+
|
|
44419
|
+
this.GetSVGFont=function(height)
|
|
44420
|
+
{
|
|
44421
|
+
var config=this.ButtonConfig.SVG;
|
|
44422
|
+
var fontSize=height*GetDevicePixelRatio();
|
|
44423
|
+
if (IFrameSplitOperator.IsPlusNumber(config.Size)) fontSize=config.Size;
|
|
44424
|
+
var font=`${fontSize}px ${config.Family}`;
|
|
44149
44425
|
return font;
|
|
44150
44426
|
}
|
|
44151
44427
|
|
|
@@ -44158,7 +44434,7 @@ function FrameButtomToolbarPaint()
|
|
|
44158
44434
|
if (x>rect.Left && x<rect.Right && y>rect.Top && y<rect.Bottom)
|
|
44159
44435
|
{
|
|
44160
44436
|
var frame=this.GetFrame();
|
|
44161
|
-
var result={ ID:item.Data.ID, Rect:rect, FrameID:this.FrameID, Frame:frame, Data:item.Data };
|
|
44437
|
+
var result={ ID:item.Data.ID, Rect:rect, FrameID:this.FrameID, Frame:frame, Data:item.Data, ButtonType:item.ButtonType, RectCell:item.RectCell, };
|
|
44162
44438
|
return result;
|
|
44163
44439
|
}
|
|
44164
44440
|
}
|
|
@@ -53499,7 +53775,7 @@ function IChartDrawPicture()
|
|
|
53499
53775
|
if (option.LineWidth>0) this.LineWidth=option.LineWidth;
|
|
53500
53776
|
if (option.AreaColor) this.AreaColor=option.AreaColor;
|
|
53501
53777
|
if (option.PointColor) this.PointColor=option.PointColor;
|
|
53502
|
-
if (option.MoveOnPointColor) this.
|
|
53778
|
+
if (option.MoveOnPointColor) this.MoveOnPointColor=option.MoveOnPointColor;
|
|
53503
53779
|
if (option.PointRadius) this.PointRadius=option.PointRadius;
|
|
53504
53780
|
if (IFrameSplitOperator.IsNumber(option.SquareSize)) this.SquareSize=option.SquareSize;
|
|
53505
53781
|
if (IFrameSplitOperator.IsBool(option.IsShowPoint)) this.IsShowPoint=option.IsShowPoint;
|
|
@@ -53698,8 +53974,8 @@ function IChartDrawPicture()
|
|
|
53698
53974
|
for(var i=0; i<this.Point.length; ++i)
|
|
53699
53975
|
{
|
|
53700
53976
|
var item=this.Point[i];
|
|
53701
|
-
var xValue=parseInt(this.Frame.GetXData(item.Y));
|
|
53702
|
-
var yValue=this.Frame.GetYData(item.X);
|
|
53977
|
+
var xValue=parseInt(this.Frame.GetXData(item.Y,false));
|
|
53978
|
+
var yValue=this.Frame.GetYData(item.X,false);
|
|
53703
53979
|
|
|
53704
53980
|
var valueItem={ XValue:xValue, YValue:yValue };
|
|
53705
53981
|
var minuteItem=data.Data[xValue];
|
|
@@ -53713,8 +53989,8 @@ function IChartDrawPicture()
|
|
|
53713
53989
|
for(var i=0; i<this.Point.length; ++i)
|
|
53714
53990
|
{
|
|
53715
53991
|
var item=this.Point[i];
|
|
53716
|
-
var xValue=parseInt(this.Frame.GetXData(item.X));
|
|
53717
|
-
var yValue=this.Frame.GetYData(item.Y);
|
|
53992
|
+
var xValue=parseInt(this.Frame.GetXData(item.X,false));
|
|
53993
|
+
var yValue=this.Frame.GetYData(item.Y,false);
|
|
53718
53994
|
|
|
53719
53995
|
if (xValue>=data.Data.length) //超过当前数据,直接读固定时间
|
|
53720
53996
|
{
|
|
@@ -53789,7 +54065,7 @@ function IChartDrawPicture()
|
|
|
53789
54065
|
}
|
|
53790
54066
|
|
|
53791
54067
|
data.FindDataIndexByDateTime(aryDateTime);
|
|
53792
|
-
for(var i
|
|
54068
|
+
for(var i=0; i<aryDateTime.length; ++i)
|
|
53793
54069
|
{
|
|
53794
54070
|
var findItem=aryDateTime[i];
|
|
53795
54071
|
var valueItem=this.Value[i];
|
|
@@ -53797,6 +54073,17 @@ function IChartDrawPicture()
|
|
|
53797
54073
|
}
|
|
53798
54074
|
}
|
|
53799
54075
|
|
|
54076
|
+
//重置X索引数据
|
|
54077
|
+
this.ResetXValue=function()
|
|
54078
|
+
{
|
|
54079
|
+
for(var i=0; i<this.Value.length; ++i)
|
|
54080
|
+
{
|
|
54081
|
+
var item=this.Value[i];
|
|
54082
|
+
item.XValue=null;
|
|
54083
|
+
}
|
|
54084
|
+
return true;
|
|
54085
|
+
}
|
|
54086
|
+
|
|
53800
54087
|
//xStep,yStep 移动的偏移量
|
|
53801
54088
|
this.Move=function(xStep,yStep)
|
|
53802
54089
|
{
|
|
@@ -53922,6 +54209,8 @@ function IChartDrawPicture()
|
|
|
53922
54209
|
for(var i=0; i<this.Value.length; ++i)
|
|
53923
54210
|
{
|
|
53924
54211
|
var item=this.Value[i];
|
|
54212
|
+
if (!IFrameSplitOperator.IsNumber(item.XValue)) return null; //无效索引 不显示
|
|
54213
|
+
|
|
53925
54214
|
var dataIndex=item.XValue-data.DataOffset;
|
|
53926
54215
|
if (dataIndex<0 || dataIndex>=showCount) ++invaildX;
|
|
53927
54216
|
|
|
@@ -54992,7 +55281,7 @@ function ChartDrawPictureLine()
|
|
|
54992
55281
|
if (this.IsFrameMinSize()) return;
|
|
54993
55282
|
if (!this.IsShow) return;
|
|
54994
55283
|
|
|
54995
|
-
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:
|
|
55284
|
+
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:false} );
|
|
54996
55285
|
if (!drawPoint) return;
|
|
54997
55286
|
if (drawPoint.length!=2) return;
|
|
54998
55287
|
|
|
@@ -64825,12 +65114,14 @@ function JSChartResource()
|
|
|
64825
65114
|
BorderColor:"rgb(204,204,204)",
|
|
64826
65115
|
Button:
|
|
64827
65116
|
{
|
|
64828
|
-
Font:{ Family:"微软雅黑" },
|
|
65117
|
+
Font:{ Family:"微软雅黑", Size:12*GetDevicePixelRatio() },
|
|
64829
65118
|
TitleColor: { Selected:"rgb(255,255,255)", Default:"rgb(125,125,125)", MoveOn:"rgb(234,85,4)" },
|
|
64830
65119
|
BGColor: { Selected:"rgb(234,85,4)", Default:"rgb(235,235,235)", MoveOn:"rgb(242,242,242)" },
|
|
64831
65120
|
BorderColor:"rgb(204,204,204)",
|
|
64832
65121
|
|
|
64833
|
-
Mergin: { Left:5*GetDevicePixelRatio(), Right:5*GetDevicePixelRatio(), Top:4*GetDevicePixelRatio(), Bottom:2*GetDevicePixelRatio() }
|
|
65122
|
+
Mergin: { Left:5*GetDevicePixelRatio(), Right:5*GetDevicePixelRatio(), Top:4*GetDevicePixelRatio(), Bottom:2*GetDevicePixelRatio() },
|
|
65123
|
+
|
|
65124
|
+
SVG:{ Family:"iconfont", Size:12*GetDevicePixelRatio(), MerginLeft:4*GetDevicePixelRatio() }
|
|
64834
65125
|
}
|
|
64835
65126
|
}
|
|
64836
65127
|
|
|
@@ -65849,6 +66140,15 @@ function JSChartResource()
|
|
|
65849
66140
|
if (IFrameSplitOperator.IsNumber(item.Top)) destItem.Top=item.Top;
|
|
65850
66141
|
if (IFrameSplitOperator.IsNumber(item.Bottom)) destItem.Bottom=item.Bottom;
|
|
65851
66142
|
}
|
|
66143
|
+
|
|
66144
|
+
if (button.SVG)
|
|
66145
|
+
{
|
|
66146
|
+
var item=button.SVG;
|
|
66147
|
+
var destItem=this.FrameButtomToolbar.Button.SVG;
|
|
66148
|
+
if (IFrameSplitOperator.IsNumber(item.Size)) destItem.Size=item.Size;
|
|
66149
|
+
if (IFrameSplitOperator.IsNumber(item.MerginLeft)) destItem.MerginLeft=item.MerginLeft;
|
|
66150
|
+
if (item.Family) destItem.Family=item.Family;
|
|
66151
|
+
}
|
|
65852
66152
|
}
|
|
65853
66153
|
|
|
65854
66154
|
}
|
|
@@ -72160,12 +72460,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72160
72460
|
}
|
|
72161
72461
|
}
|
|
72162
72462
|
|
|
72163
|
-
|
|
72164
72463
|
//注册鼠标右键事件
|
|
72165
72464
|
this.OnRightMenu=function(x,y,e)
|
|
72166
72465
|
{
|
|
72167
72466
|
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
72168
|
-
if (this.
|
|
72467
|
+
if (this.EnablePopMenuV2)
|
|
72468
|
+
{
|
|
72469
|
+
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
72470
|
+
this.PopuRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
72471
|
+
}
|
|
72472
|
+
else if (this.RightMenu)
|
|
72169
72473
|
{
|
|
72170
72474
|
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
72171
72475
|
e.data={ Chart:this, FrameID:frameId };
|
|
@@ -72181,11 +72485,286 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72181
72485
|
}
|
|
72182
72486
|
}
|
|
72183
72487
|
|
|
72488
|
+
//右键菜单数据
|
|
72489
|
+
this.GetRightMenuData=function(frameID)
|
|
72490
|
+
{
|
|
72491
|
+
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
72492
|
+
var klineChart=this.ChartPaint[0];
|
|
72493
|
+
var priceGap=klineChart.PriceGap; //缺口配置信息
|
|
72494
|
+
var coordinateType=null, yCoordinateType=null; //坐标类型
|
|
72495
|
+
var mainFrame=null;
|
|
72496
|
+
if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
|
|
72497
|
+
if (mainFrame)
|
|
72498
|
+
{
|
|
72499
|
+
coordinateType=mainFrame.CoordinateType;
|
|
72500
|
+
if (mainFrame.YSplitOperator) yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
|
|
72501
|
+
}
|
|
72502
|
+
|
|
72503
|
+
var aryKLineInfo=[]; //信息地雷
|
|
72504
|
+
for(var i=0;i<this.ChartInfo.length;++i)
|
|
72505
|
+
{
|
|
72506
|
+
var item=this.ChartInfo[i];
|
|
72507
|
+
if (item && item.ClassName) aryKLineInfo.push(item.ClassName);
|
|
72508
|
+
}
|
|
72509
|
+
|
|
72510
|
+
var aryOverlaySymbol=[]; //叠加的股票列表
|
|
72511
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
72512
|
+
{
|
|
72513
|
+
var item=this.OverlayChartPaint[i];
|
|
72514
|
+
if (item && item.Symbol) aryOverlaySymbol.push(item.Symbol)
|
|
72515
|
+
}
|
|
72516
|
+
|
|
72517
|
+
var bBGSpit=false, bShowDrawTool=false, bShowStockChip=false;
|
|
72518
|
+
if (this.GetExtendChartByClassName("SessionBreaksPaint")) bBGSpit=true;
|
|
72519
|
+
if (this.GetExtendChartByClassName('DrawToolsButton')) bShowDrawTool=true; //画图工具
|
|
72520
|
+
if (this.GetExtendChartByClassName('StockChip')) bShowStockChip=true; //筹码
|
|
72521
|
+
|
|
72522
|
+
var aryMenu=
|
|
72523
|
+
[
|
|
72524
|
+
{
|
|
72525
|
+
Name:"分析周期",
|
|
72526
|
+
SubMenu:
|
|
72527
|
+
[
|
|
72528
|
+
{ Name:"日线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[0] }, Checked:this.Period==0 },
|
|
72529
|
+
{ Name:"周线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[1] }, Checked:this.Period==1 },
|
|
72530
|
+
{ Name:"双周线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[21]}, Checked:this.Period==21 },
|
|
72531
|
+
{ Name:"月线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[2]}, Checked:this.Period==2 },
|
|
72532
|
+
{ Name:"季线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[9]}, Checked:this.Period==9 },
|
|
72533
|
+
{ Name:"半年", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[22]}, Checked:this.Period==22 },
|
|
72534
|
+
{ Name:"年线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[3]}, Checked:this.Period==3 },
|
|
72535
|
+
{ Name:"1分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[4]}, Checked:this.Period==4 },
|
|
72536
|
+
{ Name:"5分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[5]}, Checked:this.Period==5 },
|
|
72537
|
+
{ Name:"15分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[6]}, Checked:this.Period==6 },
|
|
72538
|
+
{ Name:"30分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[7]}, Checked:this.Period==7 },
|
|
72539
|
+
{ Name:"60分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[8]}, Checked:this.Period==8 },
|
|
72540
|
+
{ Name:"2小时", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[11]}, Checked:this.Period==11 },
|
|
72541
|
+
{ Name:"4小时", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[12]}, Checked:this.Period==12 },
|
|
72542
|
+
{ Name:"分笔", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[10]}, Checked:this.Period==10 },
|
|
72543
|
+
{ Name:"自定义周期:3分钟", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[20003]}, Checked:this.Period==20003 },
|
|
72544
|
+
{ Name:"自定义周期:35分钟", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[20035]}, Checked:this.Period==20035 },
|
|
72545
|
+
{ Name:"自定义周期:8日", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[40008]}, Checked:this.Period==40008 },
|
|
72546
|
+
]
|
|
72547
|
+
},
|
|
72548
|
+
{
|
|
72549
|
+
Name:"指标切换",
|
|
72550
|
+
SubMenu:
|
|
72551
|
+
[
|
|
72552
|
+
{ Name:"均线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "均线"]}},
|
|
72553
|
+
{ Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BOLL"]}},
|
|
72554
|
+
{ Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
|
|
72555
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
|
|
72556
|
+
{ Name:"VOL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "VOL"]}},
|
|
72557
|
+
{ Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
|
|
72558
|
+
{ Name:"BRAR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BRAR"]}},
|
|
72559
|
+
{ Name:"WR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "WR"]}},
|
|
72560
|
+
]
|
|
72561
|
+
},
|
|
72562
|
+
{
|
|
72563
|
+
Name:"五彩K线",
|
|
72564
|
+
SubMenu:
|
|
72565
|
+
[
|
|
72566
|
+
{ Name:"十字星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-十字星"]}},
|
|
72567
|
+
{ Name:"早晨之星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-早晨之星"]}},
|
|
72568
|
+
{ Name:"垂死十字", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-垂死十字"]}},
|
|
72569
|
+
{ Name:"三只乌鸦", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-三只乌鸦"]}},
|
|
72570
|
+
{ Name:"光脚阴线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-光脚阴线"]}},
|
|
72571
|
+
{ Name:"黄昏之星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-黄昏之星"]}},
|
|
72572
|
+
]
|
|
72573
|
+
|
|
72574
|
+
},
|
|
72575
|
+
{
|
|
72576
|
+
Name:"专家系统",
|
|
72577
|
+
SubMenu:
|
|
72578
|
+
[
|
|
72579
|
+
{ Name:"BIAS", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-BIAS"]}},
|
|
72580
|
+
{ Name:"CCI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-CCI"]}},
|
|
72581
|
+
{ Name:"DMI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-DMI"]}},
|
|
72582
|
+
{ Name:"KD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-KD"]}},
|
|
72583
|
+
{ Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-BOLL"]}},
|
|
72584
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-KDJ"]}},
|
|
72585
|
+
]
|
|
72586
|
+
},
|
|
72587
|
+
{
|
|
72588
|
+
Name:"信息地雷",
|
|
72589
|
+
SubMenu:
|
|
72590
|
+
[
|
|
72591
|
+
{ Name:"公告", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["公告", !aryKLineInfo.includes("AnnouncementInfo")]}, Checked:aryKLineInfo.includes("AnnouncementInfo") },
|
|
72592
|
+
{ Name:"业绩预告", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["业绩预告", !aryKLineInfo.includes("PforecastInfo")]}, Checked:aryKLineInfo.includes("PforecastInfo") },
|
|
72593
|
+
{ Name:"调研", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["调研", !aryKLineInfo.includes("ResearchInfo") ]}, Checked:aryKLineInfo.includes("ResearchInfo") },
|
|
72594
|
+
{ Name:"大宗交易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["大宗交易", !aryKLineInfo.includes("BlockTrading")]}, Checked:aryKLineInfo.includes("BlockTrading") },
|
|
72595
|
+
{ Name:"龙虎榜", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["龙虎榜", !aryKLineInfo.includes("TradeDetail")]}, Checked:aryKLineInfo.includes("TradeDetail") },
|
|
72596
|
+
{ Name:"互动易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["互动易", !aryKLineInfo.includes("InvestorInfo")]}, Checked:aryKLineInfo.includes("InvestorInfo") },
|
|
72597
|
+
]
|
|
72598
|
+
},
|
|
72599
|
+
{
|
|
72600
|
+
Name:"缺口提示",
|
|
72601
|
+
SubMenu:
|
|
72602
|
+
[
|
|
72603
|
+
{ Name:"显示1个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 1]}, Checked:(priceGap.Enable==true && priceGap.Count==1) },
|
|
72604
|
+
{ Name:"显示2个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 2]}, Checked:(priceGap.Enable==true && priceGap.Count==2) },
|
|
72605
|
+
{ Name:"显示3个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 3]}, Checked:(priceGap.Enable==true && priceGap.Count==3) },
|
|
72606
|
+
{ Name:"隐藏缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[false]}, Checked:priceGap.Enable==false },
|
|
72607
|
+
]
|
|
72608
|
+
},
|
|
72609
|
+
{
|
|
72610
|
+
Name:"叠加品种",
|
|
72611
|
+
SubMenu:
|
|
72612
|
+
[
|
|
72613
|
+
{ Name:"上证指数", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000001.sh", !aryOverlaySymbol.includes("000001.sh")]}, Checked:aryOverlaySymbol.includes("000001.sh") },
|
|
72614
|
+
{ Name:"深证成指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399001.sz", !aryOverlaySymbol.includes("399001.sz")]}, Checked:aryOverlaySymbol.includes("399001.sz") },
|
|
72615
|
+
{ Name:"中小板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399005.sz", !aryOverlaySymbol.includes("399005.sz")]}, Checked:aryOverlaySymbol.includes("399005.sz") },
|
|
72616
|
+
{ Name:"创业板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399006.sz", !aryOverlaySymbol.includes("399006.sz")]}, Checked:aryOverlaySymbol.includes("399006.sz") },
|
|
72617
|
+
{ Name:"沪深300", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000300.sh", !aryOverlaySymbol.includes("000300.sh")]}, Checked:aryOverlaySymbol.includes("000300.sh")},
|
|
72618
|
+
]
|
|
72619
|
+
},
|
|
72620
|
+
{
|
|
72621
|
+
Name:"主图线型",
|
|
72622
|
+
SubMenu:
|
|
72623
|
+
[
|
|
72624
|
+
{ Name:"K线(空心阳线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[3]} },
|
|
72625
|
+
{ Name:"K线(实心阳线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[0]} },
|
|
72626
|
+
{ Name:"美国线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[2, true, { IsThinAKBar:false }]} },
|
|
72627
|
+
{ Name:"美国线(细)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[2, true, { IsThinAKBar:true }]} },
|
|
72628
|
+
{ Name:"收盘线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[1]} },
|
|
72629
|
+
{ Name:"收盘面积", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[4]} },
|
|
72630
|
+
{ Name:"K线(空心阳线阴线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[6]} },
|
|
72631
|
+
{ Name:"Heikin Ashi", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[11]} },
|
|
72632
|
+
{ Name:"Line Break", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[12]} },
|
|
72633
|
+
{ Name:"High-low", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[13]} },
|
|
72634
|
+
{ Name:"HLC Area", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[15]} },
|
|
72635
|
+
]
|
|
72636
|
+
},
|
|
72637
|
+
{
|
|
72638
|
+
Name:"坐标类型",
|
|
72639
|
+
SubMenu:
|
|
72640
|
+
[
|
|
72641
|
+
{ Name:"反转坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ IsReverse:coordinateType==0 }]}, Checked:coordinateType==1 },
|
|
72642
|
+
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
72643
|
+
|
|
72644
|
+
{ Name:"普通坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:0 }]}, Checked:yCoordinateType==0 },
|
|
72645
|
+
{ Name:"百分比坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:1 }]}, Checked:yCoordinateType==1 },
|
|
72646
|
+
{ Name:"对数坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:2 }]}, Checked:yCoordinateType==2 },
|
|
72647
|
+
{ Name:"等比坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:3 }]}, Checked:yCoordinateType==3 },
|
|
72648
|
+
{ Name:"等分坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:4 }]}, Checked:yCoordinateType==4 },
|
|
72649
|
+
{ Name:"黄金分割", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:5 }]}, Checked:yCoordinateType==5},
|
|
72650
|
+
|
|
72651
|
+
]
|
|
72652
|
+
},
|
|
72653
|
+
{
|
|
72654
|
+
Name:"指标窗口个数",
|
|
72655
|
+
SubMenu:
|
|
72656
|
+
[
|
|
72657
|
+
{ Name:"1个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[2]}, Checked:2==windowCount },
|
|
72658
|
+
{ Name:"2个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[3]}, Checked:3==windowCount },
|
|
72659
|
+
{ Name:"3个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[4]}, Checked:4==windowCount },
|
|
72660
|
+
{ Name:"4个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[5]}, Checked:5==windowCount },
|
|
72661
|
+
{ Name:"5个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[6]}, Checked:6==windowCount },
|
|
72662
|
+
]
|
|
72663
|
+
},
|
|
72664
|
+
{
|
|
72665
|
+
Name:"其他设置",
|
|
72666
|
+
SubMenu:
|
|
72667
|
+
[
|
|
72668
|
+
|
|
72669
|
+
{ Name:"禁止拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[0]}, Checked:0==this.DragMode },
|
|
72670
|
+
{ Name:"启动拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1]}, Checked:1==this.DragMode },
|
|
72671
|
+
{ Name:"区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[2]}, Checked:2==this.DragMode },
|
|
72672
|
+
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
72673
|
+
|
|
72674
|
+
{ Name:"背景分割", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID, Args:[!bBGSpit]}, Checked:bBGSpit},
|
|
72675
|
+
|
|
72676
|
+
{ Name:"画图工具", Data:{ ID:bShowDrawTool?JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID, Args:[]}, Checked:bShowDrawTool},
|
|
72677
|
+
|
|
72678
|
+
{ Name:"移动筹码图", Data:{ ID:bShowStockChip?JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID, Args:[]}, Checked:bShowStockChip},
|
|
72679
|
+
]
|
|
72680
|
+
}
|
|
72681
|
+
];
|
|
72682
|
+
|
|
72683
|
+
//复权
|
|
72684
|
+
if(!MARKET_SUFFIX_NAME.IsSHSZIndex(this.Symbol) && !MARKET_SUFFIX_NAME.IsBIT(this.Symbol))
|
|
72685
|
+
{
|
|
72686
|
+
var rightMenu=
|
|
72687
|
+
{
|
|
72688
|
+
Name:"复权处理",
|
|
72689
|
+
SubMenu:
|
|
72690
|
+
[
|
|
72691
|
+
{ Name:"不复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[0]}, Checked:0==this.Right },
|
|
72692
|
+
{ Name:"前复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[1]}, Checked:1==this.Right },
|
|
72693
|
+
{ Name:"后复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[2]}, Checked:2==this.Right }
|
|
72694
|
+
]
|
|
72695
|
+
};
|
|
72696
|
+
|
|
72697
|
+
aryMenu.splice(1,0,rightMenu);
|
|
72698
|
+
}
|
|
72699
|
+
|
|
72700
|
+
//删除菜单
|
|
72701
|
+
for(var i=0;i<aryMenu.length;++i)
|
|
72702
|
+
{
|
|
72703
|
+
var item=aryMenu[i];
|
|
72704
|
+
if (item.Name=="五彩K线")
|
|
72705
|
+
{
|
|
72706
|
+
if (this.ColorIndex)
|
|
72707
|
+
{
|
|
72708
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
72709
|
+
item.SubMenu.push({ Name:"删除五彩K线", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID} });
|
|
72710
|
+
}
|
|
72711
|
+
}
|
|
72712
|
+
else if (item.Name=="专家系统")
|
|
72713
|
+
{
|
|
72714
|
+
if (this.TradeIndex)
|
|
72715
|
+
{
|
|
72716
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
72717
|
+
item.SubMenu.push({ Name:"删除专家系统", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID} });
|
|
72718
|
+
}
|
|
72719
|
+
}
|
|
72720
|
+
else if (item.Name=="叠加品种")
|
|
72721
|
+
{
|
|
72722
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
72723
|
+
{
|
|
72724
|
+
if (item.SubMenu[j].Checked)
|
|
72725
|
+
{
|
|
72726
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
72727
|
+
item.SubMenu.push({ Name:"取消叠加", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID} });
|
|
72728
|
+
break;
|
|
72729
|
+
}
|
|
72730
|
+
}
|
|
72731
|
+
}
|
|
72732
|
+
else if (item.Name=="信息地雷")
|
|
72733
|
+
{
|
|
72734
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
72735
|
+
{
|
|
72736
|
+
if (item.SubMenu[j].Checked)
|
|
72737
|
+
{
|
|
72738
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
72739
|
+
item.SubMenu.push({ Name:"删除所有", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID} });
|
|
72740
|
+
break;
|
|
72741
|
+
}
|
|
72742
|
+
}
|
|
72743
|
+
}
|
|
72744
|
+
}
|
|
72745
|
+
|
|
72746
|
+
return aryMenu;
|
|
72747
|
+
}
|
|
72748
|
+
|
|
72749
|
+
this.PopuRightMenuV2=function(data,e)
|
|
72750
|
+
{
|
|
72751
|
+
if (!this.JSPopMenu) return;
|
|
72752
|
+
var x=data.X, y=data.Y;
|
|
72753
|
+
var frameID=data.FrameID;
|
|
72754
|
+
var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
72755
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
72756
|
+
|
|
72757
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
72758
|
+
}
|
|
72759
|
+
|
|
72184
72760
|
//重新加载画图工具(切换股票|周期)
|
|
72185
72761
|
this.ReloadChartDrawPicture=function()
|
|
72186
72762
|
{
|
|
72187
72763
|
this.ChartDrawPicture=[];
|
|
72188
|
-
this.
|
|
72764
|
+
if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.IsSelected=false;
|
|
72765
|
+
this.SelectChartDrawPicture=null;
|
|
72766
|
+
this.CurrentChartDrawPicture=null;
|
|
72767
|
+
|
|
72189
72768
|
if (this.ChartDrawStorage)
|
|
72190
72769
|
{
|
|
72191
72770
|
this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData( {Symbol:this.Symbol, Period:this.Period} );
|
|
@@ -73576,7 +74155,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73576
74155
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_EXTENDCHART_BUTTON);
|
|
73577
74156
|
if (event && event.Callback)
|
|
73578
74157
|
{
|
|
73579
|
-
var data={ Info:button, PreventDefault:false }; //PreventDefault 是否阻止内置的点击处理
|
|
74158
|
+
var data={ Info:button, PreventDefault:false, e:e }; //PreventDefault 是否阻止内置的点击处理
|
|
73580
74159
|
event.Callback(event,data,this);
|
|
73581
74160
|
if (data.PreventDefault) return;
|
|
73582
74161
|
}
|
|
@@ -75543,7 +76122,13 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
75543
76122
|
//注册鼠标右键事件
|
|
75544
76123
|
this.OnRightMenu=function(x,y,e)
|
|
75545
76124
|
{
|
|
75546
|
-
|
|
76125
|
+
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
76126
|
+
if (this.EnablePopMenuV2)
|
|
76127
|
+
{
|
|
76128
|
+
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
76129
|
+
this.PopuRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
76130
|
+
}
|
|
76131
|
+
else if (this.RightMenu)
|
|
75547
76132
|
{
|
|
75548
76133
|
var frameId=this.Frame.PtInFrame(x,y);
|
|
75549
76134
|
e.data={ Chart:this, FrameID:frameId };
|
|
@@ -75559,6 +76144,107 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
75559
76144
|
}
|
|
75560
76145
|
}
|
|
75561
76146
|
|
|
76147
|
+
//右键菜单数据
|
|
76148
|
+
this.GetRightMenuData=function(frameID)
|
|
76149
|
+
{
|
|
76150
|
+
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
76151
|
+
|
|
76152
|
+
var aryOverlaySymbol=[]; //叠加的股票列表
|
|
76153
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
76154
|
+
{
|
|
76155
|
+
var item=this.OverlayChartPaint[i];
|
|
76156
|
+
if (item && item.Symbol) aryOverlaySymbol.push(item.Symbol)
|
|
76157
|
+
}
|
|
76158
|
+
|
|
76159
|
+
var aryMenu=
|
|
76160
|
+
[
|
|
76161
|
+
{
|
|
76162
|
+
Name:"叠加品种",
|
|
76163
|
+
SubMenu:
|
|
76164
|
+
[
|
|
76165
|
+
{ Name:"上证指数", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000001.sh", !aryOverlaySymbol.includes("000001.sh")]}, Checked:aryOverlaySymbol.includes("000001.sh") },
|
|
76166
|
+
{ Name:"深证成指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399001.sz", !aryOverlaySymbol.includes("399001.sz")]}, Checked:aryOverlaySymbol.includes("399001.sz") },
|
|
76167
|
+
{ Name:"中小板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399005.sz", !aryOverlaySymbol.includes("399005.sz")]}, Checked:aryOverlaySymbol.includes("399005.sz") },
|
|
76168
|
+
{ Name:"创业板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399006.sz", !aryOverlaySymbol.includes("399006.sz")]}, Checked:aryOverlaySymbol.includes("399006.sz") },
|
|
76169
|
+
{ Name:"沪深300", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000300.sh", !aryOverlaySymbol.includes("000300.sh")]}, Checked:aryOverlaySymbol.includes("000300.sh")},
|
|
76170
|
+
]
|
|
76171
|
+
},
|
|
76172
|
+
{
|
|
76173
|
+
Name:"多日分时图",
|
|
76174
|
+
SubMenu:
|
|
76175
|
+
[
|
|
76176
|
+
{ Name:"当日分时图", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[1]}, Checked:this.DayCount==1 },
|
|
76177
|
+
{ Name:"最近2日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[2]}, Checked:this.DayCount==2 },
|
|
76178
|
+
{ Name:"最近3日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[3]}, Checked:this.DayCount==3 },
|
|
76179
|
+
{ Name:"最近4日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[4]}, Checked:this.DayCount==4 },
|
|
76180
|
+
{ Name:"最近5日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[5]}, Checked:this.DayCount==5 },
|
|
76181
|
+
]
|
|
76182
|
+
},
|
|
76183
|
+
{
|
|
76184
|
+
Name:"指标窗口个数",
|
|
76185
|
+
SubMenu:
|
|
76186
|
+
[
|
|
76187
|
+
{ Name:"1个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[2]}, Checked:3==windowCount },
|
|
76188
|
+
{ Name:"2个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[3]}, Checked:4==windowCount },
|
|
76189
|
+
{ Name:"3个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[4]}, Checked:5==windowCount },
|
|
76190
|
+
{ Name:"4个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[5]}, Checked:6==windowCount },
|
|
76191
|
+
{ Name:"5个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[6]}, Checked:7==windowCount },
|
|
76192
|
+
]
|
|
76193
|
+
},
|
|
76194
|
+
{
|
|
76195
|
+
Name:"指标切换",
|
|
76196
|
+
SubMenu:
|
|
76197
|
+
[
|
|
76198
|
+
{ Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
|
|
76199
|
+
{ Name:"DMI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "DMI"]}},
|
|
76200
|
+
{ Name:"DMA", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "DMA"]}},
|
|
76201
|
+
{ Name:"BRAR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BRAR"]}},
|
|
76202
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
|
|
76203
|
+
{ Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
|
|
76204
|
+
{ Name:"WR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "WR"]}},
|
|
76205
|
+
{ Name:"CCI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "CCI"]}},
|
|
76206
|
+
{ Name:"TRIX", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "TRIX"]}},
|
|
76207
|
+
]
|
|
76208
|
+
},
|
|
76209
|
+
{
|
|
76210
|
+
Name:"区间选择",Data:{ ID: JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID, Args:[!this.EnableSelectRect]}, Checked:this.EnableSelectRect
|
|
76211
|
+
}
|
|
76212
|
+
|
|
76213
|
+
];
|
|
76214
|
+
|
|
76215
|
+
|
|
76216
|
+
//删除菜单
|
|
76217
|
+
for(var i=0;i<aryMenu.length;++i)
|
|
76218
|
+
{
|
|
76219
|
+
var item=aryMenu[i];
|
|
76220
|
+
if (item.Name=="叠加品种")
|
|
76221
|
+
{
|
|
76222
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
76223
|
+
{
|
|
76224
|
+
if (item.SubMenu[j].Checked)
|
|
76225
|
+
{
|
|
76226
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76227
|
+
item.SubMenu.push({ Name:"取消叠加", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID} });
|
|
76228
|
+
break;
|
|
76229
|
+
}
|
|
76230
|
+
}
|
|
76231
|
+
}
|
|
76232
|
+
}
|
|
76233
|
+
|
|
76234
|
+
return aryMenu;
|
|
76235
|
+
}
|
|
76236
|
+
|
|
76237
|
+
this.PopuRightMenuV2=function(data,e)
|
|
76238
|
+
{
|
|
76239
|
+
if (!this.JSPopMenu) return;
|
|
76240
|
+
var x=data.X, y=data.Y;
|
|
76241
|
+
var frameID=data.FrameID;
|
|
76242
|
+
var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
76243
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
76244
|
+
|
|
76245
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
76246
|
+
}
|
|
76247
|
+
|
|
75562
76248
|
this.OnWheel=function(e)
|
|
75563
76249
|
{
|
|
75564
76250
|
JSConsole.Chart.Log('[MinuteChartContainer::OnWheel]',e);
|
|
@@ -76663,15 +77349,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
76663
77349
|
this.ResetDayOffset();
|
|
76664
77350
|
}
|
|
76665
77351
|
|
|
76666
|
-
|
|
76667
|
-
{
|
|
76668
|
-
this.ChartDrawPicture=[];
|
|
76669
|
-
}
|
|
76670
|
-
else
|
|
76671
|
-
{
|
|
76672
|
-
this.ReloadChartDrawPicture();
|
|
76673
|
-
}
|
|
76674
|
-
|
|
77352
|
+
this.ReloadChartDrawPicture();
|
|
76675
77353
|
this.ResetDataStatus();
|
|
76676
77354
|
this.ClearIndexPaint(); //清空指标
|
|
76677
77355
|
this.Frame.ClearYCoordinateMaxMin();
|
|
@@ -77193,6 +77871,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
77193
77871
|
this.TitlePaint[0].IsShowDate=true;
|
|
77194
77872
|
this.UpdateDataOffset();
|
|
77195
77873
|
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
77874
|
+
this.CreateChartDrawPictureByStorage(); //创建画图工具
|
|
77196
77875
|
|
|
77197
77876
|
//执行脚本
|
|
77198
77877
|
if (this.Frame.SubFrame.length>2)
|
|
@@ -77491,7 +78170,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
77491
78170
|
this.UpdateLatestMinuteDataV2(minuteData);
|
|
77492
78171
|
this.UpdateHistoryMinuteUI(updateTime);
|
|
77493
78172
|
this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"} );
|
|
77494
|
-
this.RequestOverlayMinuteData();
|
|
78173
|
+
this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
|
|
77495
78174
|
this.BindAllOverlayIndexData(this.SourceData);
|
|
77496
78175
|
this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
|
|
77497
78176
|
this.AutoUpdate();
|
|
@@ -78911,7 +79590,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
78911
79590
|
this.ReloadChartDrawPicture=function()
|
|
78912
79591
|
{
|
|
78913
79592
|
this.ChartDrawPicture=[];
|
|
78914
|
-
this.
|
|
79593
|
+
if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.IsSelected=false;
|
|
79594
|
+
this.SelectChartDrawPicture=null;
|
|
79595
|
+
this.CurrentChartDrawPicture=null;
|
|
79596
|
+
this.MoveOnChartDrawPicture=null;
|
|
79597
|
+
|
|
78915
79598
|
if (this.ChartDrawStorage)
|
|
78916
79599
|
{
|
|
78917
79600
|
this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData( { Symbol:this.Symbol, Period:888888888 } );
|
|
@@ -78922,7 +79605,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
78922
79605
|
{
|
|
78923
79606
|
if (!this.ChartDrawStorageCache || this.ChartDrawStorageCache.length<=0) return;
|
|
78924
79607
|
|
|
78925
|
-
|
|
79608
|
+
var self=this;
|
|
79609
|
+
for(var i=0; i<this.ChartDrawStorageCache.length; ++i)
|
|
78926
79610
|
{
|
|
78927
79611
|
var item=this.ChartDrawStorageCache[i];
|
|
78928
79612
|
if (item.FrameID<0 || !this.Frame.SubFrame || this.Frame.SubFrame.length<item.FrameID) continue;
|
|
@@ -78933,8 +79617,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
78933
79617
|
drawPicture.Canvas=this.Canvas;
|
|
78934
79618
|
drawPicture.Status=10;
|
|
78935
79619
|
drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
|
|
79620
|
+
if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
|
|
79621
|
+
drawPicture.ResetXValue();
|
|
78936
79622
|
drawPicture.UpdateXValue();
|
|
78937
79623
|
drawPicture.ValueToPoint();
|
|
79624
|
+
drawPicture.GetActiveDrawPicture=()=>{ return this.GetActiveDrawPicture(); }
|
|
78938
79625
|
|
|
78939
79626
|
if (drawPicture.ClassName==='ChartDrawPictureText') drawPicture.IsInitialized=true;
|
|
78940
79627
|
|