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
|
@@ -4211,6 +4211,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4211
4211
|
chart.ModifyIndexDialog=this.ModifyIndexDialog;
|
|
4212
4212
|
chart.ChangeIndexDialog=this.ChangeIndexDialog;
|
|
4213
4213
|
chart.MinuteDialog=this.MinuteDialog;
|
|
4214
|
+
|
|
4215
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
4214
4216
|
|
|
4215
4217
|
//右键菜单
|
|
4216
4218
|
if (option.IsShowRightMenu==true) chart.RightMenu=new KLineRightMenu(this.DivElement);
|
|
@@ -4429,8 +4431,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4429
4431
|
chart.Frame.SubFrame[i].Frame.IsShowYText[1]=item.IsShowRightText;
|
|
4430
4432
|
chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowRightText=item.IsShowRightText; //显示右边刻度
|
|
4431
4433
|
}
|
|
4432
|
-
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace;
|
|
4433
|
-
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace;
|
|
4434
|
+
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;
|
|
4435
|
+
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;
|
|
4434
4436
|
|
|
4435
4437
|
if (item.RightTextPosition>0) chart.Frame.SubFrame[i].Frame.YTextPosition[1]=item.RightTextPosition;
|
|
4436
4438
|
if (item.LeftTextPosition>0) chart.Frame.SubFrame[i].Frame.YTextPosition[0]=item.LeftTextPosition;
|
|
@@ -4732,6 +4734,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4732
4734
|
chart.ModifyIndexDialog=this.ModifyIndexDialog;
|
|
4733
4735
|
chart.ChangeIndexDialog=this.ChangeIndexDialog;
|
|
4734
4736
|
|
|
4737
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
4738
|
+
|
|
4735
4739
|
var windowsCount=2;
|
|
4736
4740
|
if (option.Windows && option.Windows.length>0) windowsCount+=option.Windows.length; //指标窗口从第3个窗口开始
|
|
4737
4741
|
if (option.EnableScrollUpDown==true) chart.EnableScrollUpDown=option.EnableScrollUpDown;
|
|
@@ -4899,8 +4903,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4899
4903
|
if (IFrameSplitOperator.IsNumber(item.YTextBaseline)) chart.Frame.SubFrame[i].Frame.YTextBaseline=item.YTextBaseline;
|
|
4900
4904
|
if (IFrameSplitOperator.IsBool(item.IsShowIndexTitle)) chart.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;
|
|
4901
4905
|
|
|
4902
|
-
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace;
|
|
4903
|
-
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace;
|
|
4906
|
+
if (item.TopSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;
|
|
4907
|
+
if (item.BottomSpace>=0) chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;
|
|
4904
4908
|
|
|
4905
4909
|
//是否显示关闭集合竞价按钮
|
|
4906
4910
|
if (IFrameSplitOperator.IsNumber(item.CloseBeforeButton)) chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;
|
|
@@ -5573,6 +5577,13 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5573
5577
|
//是否自动更新
|
|
5574
5578
|
if (option.IsAutoUpdate!=null) chart.IsAutoUpdate=option.IsAutoUpdate;
|
|
5575
5579
|
if (option.AutoUpdateFrequency>0) chart.AutoUpdateFrequency=option.AutoUpdateFrequency;
|
|
5580
|
+
//内置菜单
|
|
5581
|
+
if (option.EnablePopMenuV2===true)
|
|
5582
|
+
{
|
|
5583
|
+
chart.JSPopMenu=new JSPopMenu();
|
|
5584
|
+
chart.JSPopMenu.Inital();
|
|
5585
|
+
chart.EnablePopMenuV2=true;
|
|
5586
|
+
}
|
|
5576
5587
|
//注册事件
|
|
5577
5588
|
if (option.EventCallback)
|
|
5578
5589
|
{
|
|
@@ -5599,19 +5610,6 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5599
5610
|
this.DivElement.JSChart=this; //div中保存一份
|
|
5600
5611
|
this.JSChartContainer.Draw();
|
|
5601
5612
|
}
|
|
5602
|
-
|
|
5603
|
-
if (IFrameSplitOperator.IsBool(option.CheckLatestVerion) && option.CheckLatestVerion==false)
|
|
5604
|
-
{
|
|
5605
|
-
|
|
5606
|
-
}
|
|
5607
|
-
else if (JSChart.LastVersion==null)
|
|
5608
|
-
{
|
|
5609
|
-
if (chart && typeof(chart.GetLatestVersion)=='function')
|
|
5610
|
-
{
|
|
5611
|
-
//由于域名都要备案,获取最新版本接口停止使用
|
|
5612
|
-
//chart.GetLatestVersion();
|
|
5613
|
-
}
|
|
5614
|
-
}
|
|
5615
5613
|
}
|
|
5616
5614
|
|
|
5617
5615
|
//创建工具条
|
|
@@ -6055,6 +6053,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
6055
6053
|
return this.JSChartContainer.ChangePriceGap(option);
|
|
6056
6054
|
}
|
|
6057
6055
|
}
|
|
6056
|
+
|
|
6057
|
+
this.PopupMenuByTab=function(menuData, rtTab)
|
|
6058
|
+
{
|
|
6059
|
+
if(this.JSChartContainer && typeof(this.JSChartContainer.PopupMenuByTab)=='function')
|
|
6060
|
+
{
|
|
6061
|
+
JSConsole.Chart.Log('[JSChart:ChangePriceGap] ');
|
|
6062
|
+
return this.JSChartContainer.PopupMenuByTab(menuData, rtTab);
|
|
6063
|
+
}
|
|
6064
|
+
}
|
|
6058
6065
|
}
|
|
6059
6066
|
|
|
6060
6067
|
JSChart.LastVersion=null; //最新的版本号
|
|
@@ -6260,6 +6267,12 @@ JSChart.ToFixedRect=function(value)
|
|
|
6260
6267
|
return ToFixedRect(value);
|
|
6261
6268
|
}
|
|
6262
6269
|
|
|
6270
|
+
JSChart.GetScrollPosition=function()
|
|
6271
|
+
{
|
|
6272
|
+
return GetScrollPosition();
|
|
6273
|
+
}
|
|
6274
|
+
|
|
6275
|
+
|
|
6263
6276
|
|
|
6264
6277
|
|
|
6265
6278
|
var JSCHART_EVENT_ID=
|
|
@@ -6545,6 +6558,36 @@ var JSCHART_WORKER_MESSAGE_ID=
|
|
|
6545
6558
|
ERROR_EXECUTE_SCRIPT:3,
|
|
6546
6559
|
}
|
|
6547
6560
|
|
|
6561
|
+
var JSCHART_MENU_ID=
|
|
6562
|
+
{
|
|
6563
|
+
CMD_CHANGE_PERIOD_ID:1, //切换周期
|
|
6564
|
+
CMD_CHANGE_WINDOW_COUNT_ID:2, //窗口个数
|
|
6565
|
+
CMD_CHANGE_RIGHT_ID:3, //复权
|
|
6566
|
+
CMD_CHANGE_INDEX_ID:4, //切换指标
|
|
6567
|
+
CMD_CHANGE_COLOR_INDEX_ID:5, //五彩K线指标
|
|
6568
|
+
CMD_CHANGE_TRADE_INDEX_ID:6, //专家系统(交易指标)
|
|
6569
|
+
CMD_DELETE_COLOR_INDEX_ID:7, //删除五彩K线指标
|
|
6570
|
+
CMD_DELETE_TRADE_INDEX_ID:8, //删除专家系统(交易指标)
|
|
6571
|
+
CMD_CHANGE_KLINE_TYPE_ID:9, //切换K线类型
|
|
6572
|
+
CMD_CHANGE_PRICE_GAP_ID:10, //缺口提示
|
|
6573
|
+
CMD_OVERLAY_SYMBOL_ID:11, //叠加品种
|
|
6574
|
+
CMD_DELETE_ALL_OVERLAY_SYMBOL_ID:12, //删除所有叠加品种
|
|
6575
|
+
CMD_CHANGE_COORDINATETYPE_ID:13, //切换坐标类型
|
|
6576
|
+
CMD_CHANGE_KLINE_INFO_ID:14, //切换信息地雷
|
|
6577
|
+
CMD_DELETE_ALL_KLINE_INFO_ID:15, //清空信息地雷
|
|
6578
|
+
CMD_CHANGE_DRAG_MODE_ID:16, //切换拖动模式
|
|
6579
|
+
CMD_CHANGE_BG_SPLIT_ID:17, //背景分割
|
|
6580
|
+
|
|
6581
|
+
CMD_SHOW_DRAWTOOL_ID:18, //画图工具
|
|
6582
|
+
CMD_HIDE_DRAWTOOL_ID:19,
|
|
6583
|
+
|
|
6584
|
+
CMD_SHOW_STOCKCHIP_ID:20, //筹码分布
|
|
6585
|
+
CMD_HIDE_STOCKCHIP_ID:21,
|
|
6586
|
+
|
|
6587
|
+
CMD_ENABLE_SELECT_RECT_ID:22, //启动区间选择
|
|
6588
|
+
CMD_CHANGE_DAY_COUNT_ID:23, //切换天数
|
|
6589
|
+
}
|
|
6590
|
+
|
|
6548
6591
|
|
|
6549
6592
|
function PhoneDBClick()
|
|
6550
6593
|
{
|
|
@@ -6630,6 +6673,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6630
6673
|
this.LoadDataSplashTitle="数据加载中"; //下载数据提示信息
|
|
6631
6674
|
this.DefaultCursor="default"; //crosshair , default 默认手型
|
|
6632
6675
|
|
|
6676
|
+
this.EnablePopMenuV2=false;
|
|
6677
|
+
this.JSPopMenu; //内置菜单
|
|
6678
|
+
//this.JSPopMenu=new JSPopMenu(); //内置菜单
|
|
6679
|
+
//this.JSPopMenu.Inital();
|
|
6680
|
+
|
|
6633
6681
|
//绘图缓存
|
|
6634
6682
|
this.CacheCanvas=null;
|
|
6635
6683
|
this.CacheElement=null;
|
|
@@ -6825,61 +6873,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6825
6873
|
{
|
|
6826
6874
|
this.IsDestroy=true;
|
|
6827
6875
|
this.StopAutoUpdate();
|
|
6828
|
-
|
|
6829
|
-
if (this.GetLatestVersionTimer!=null)
|
|
6830
|
-
{
|
|
6831
|
-
clearTimeout(this.GetLatestVersionTimer);
|
|
6832
|
-
this.GetLatestVersionTimer=null;
|
|
6833
|
-
}
|
|
6834
6876
|
}
|
|
6835
6877
|
|
|
6836
6878
|
this.ChartDestory=this.ChartDestroy; //老版本写错了,需要兼容下
|
|
6837
6879
|
|
|
6838
|
-
|
|
6839
|
-
this.GetLatestVersionTimer=null; //获取最新版本
|
|
6840
|
-
this.GetLatestVersion=function()
|
|
6841
|
-
{
|
|
6842
|
-
if (this.GetLatestVersionTimer!=null)
|
|
6843
|
-
{
|
|
6844
|
-
clearTimeout(this.GetLatestVersionTimer);
|
|
6845
|
-
this.GetLatestVersionTimer=null;
|
|
6846
|
-
}
|
|
6847
|
-
|
|
6848
|
-
var roundeTime=Math.floor(Math.random()*50);
|
|
6849
|
-
var waittimer=1000*60*3+(roundeTime*1000);
|
|
6850
|
-
var value="aHR0cHM6Ly9ocWNoYXJ0LnplYWxpbmsuY29tL2FwaS9HZXRWZXJzaW9u";
|
|
6851
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] wait for get hqchart latest version. ",waittimer);
|
|
6852
|
-
this.GetLatestVersionTimer = setTimeout(()=>
|
|
6853
|
-
{
|
|
6854
|
-
var width=0, height=0;
|
|
6855
|
-
if (this.Frame && this.Frame.ChartBorder)
|
|
6856
|
-
{
|
|
6857
|
-
width=this.Frame.ChartBorder.GetChartWidth();
|
|
6858
|
-
height=this.Frame.ChartBorder.GetChartHeight();
|
|
6859
|
-
}
|
|
6860
|
-
|
|
6861
|
-
var url=`${atob(value)}?width=${width}&height=${height}&type=h5`;
|
|
6862
|
-
|
|
6863
|
-
if (JSChart.LastVersion!=null) return; //只请求一次
|
|
6864
|
-
|
|
6865
|
-
JSNetwork.HttpRequest({
|
|
6866
|
-
url: url,
|
|
6867
|
-
type:"get",
|
|
6868
|
-
dataType: "json",
|
|
6869
|
-
async:true,
|
|
6870
|
-
success:function(data)
|
|
6871
|
-
{
|
|
6872
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] hqchart latest version. ",data);
|
|
6873
|
-
JSChart.LastVersion=data;
|
|
6874
|
-
},
|
|
6875
|
-
error:function(request, textStatus, errorThrown)
|
|
6876
|
-
{
|
|
6877
|
-
JSConsole.Chart.Log("[JSChartContainer::GetLatestVersion] Get HQChart latest version failed.", request);
|
|
6878
|
-
}
|
|
6879
|
-
});
|
|
6880
|
-
}, waittimer);
|
|
6881
|
-
}
|
|
6882
|
-
|
|
6883
6880
|
//设置焦点
|
|
6884
6881
|
this.SetFocus=function()
|
|
6885
6882
|
{
|
|
@@ -9171,10 +9168,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9171
9168
|
var item=this.ChartDrawPicture[i];
|
|
9172
9169
|
if (item.IsDrawFirst) continue;
|
|
9173
9170
|
if (item.IsDrawMain && item.IsDrawMain()) continue;
|
|
9171
|
+
if (this.SelectChartDrawPicture && this.SelectChartDrawPicture.Guid==item.Guid) continue; //当前选中在最后画
|
|
9174
9172
|
|
|
9175
9173
|
item.Draw();
|
|
9176
9174
|
}
|
|
9177
9175
|
|
|
9176
|
+
if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.Draw();
|
|
9177
|
+
|
|
9178
9178
|
if (this.CurrentChartDrawPicture && this.CurrentChartDrawPicture.Status!=10)
|
|
9179
9179
|
{
|
|
9180
9180
|
this.CurrentChartDrawPicture.Draw();
|
|
@@ -9614,10 +9614,16 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9614
9614
|
var item=this.ChartDrawPicture[i];
|
|
9615
9615
|
if (item.IsDrawFirst) continue;
|
|
9616
9616
|
if (item.IsDrawMain && item.IsDrawMain()) continue;
|
|
9617
|
+
if (this.SelectChartDrawPicture &&item.Guid==this.SelectChartDrawPicture.Guid) continue; //选中画图最后画 确保显示在最外面
|
|
9617
9618
|
|
|
9618
9619
|
item.Draw(moveonPoint, this.LastMouseStatus);
|
|
9619
9620
|
}
|
|
9620
9621
|
|
|
9622
|
+
if (this.SelectChartDrawPicture)
|
|
9623
|
+
{
|
|
9624
|
+
this.SelectChartDrawPicture.Draw(moveonPoint, this.LastMouseStatus);
|
|
9625
|
+
}
|
|
9626
|
+
|
|
9621
9627
|
if (this.CurrentChartDrawPicture && this.CurrentChartDrawPicture.Status!=10)
|
|
9622
9628
|
{
|
|
9623
9629
|
this.CurrentChartDrawPicture.Draw();
|
|
@@ -12929,6 +12935,213 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12929
12935
|
}
|
|
12930
12936
|
}
|
|
12931
12937
|
}
|
|
12938
|
+
|
|
12939
|
+
this.PopupMenuByTab=function(menuData, rtTab)
|
|
12940
|
+
{
|
|
12941
|
+
if (!this.JSPopMenu) return;
|
|
12942
|
+
|
|
12943
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
12944
|
+
var rtCell={ Left:rtTab.Left/pixelRatio, Right:rtTab.Right/pixelRatio, Bottom:rtTab.Bottom/pixelRatio, Top:rtTab.Top/pixelRatio };
|
|
12945
|
+
rtCell.Width=rtCell.Right-rtCell.Left;
|
|
12946
|
+
rtCell.Height=rtCell.Bottom-rtCell.Top;
|
|
12947
|
+
|
|
12948
|
+
var rtClient=this.UIElement.getBoundingClientRect();
|
|
12949
|
+
var rtScroll=GetScrollPosition();
|
|
12950
|
+
|
|
12951
|
+
var offsetLeft=rtClient.left+rtScroll.Left;
|
|
12952
|
+
var offsetTop=rtClient.top+rtScroll.Top;
|
|
12953
|
+
rtCell.Left+=offsetLeft;
|
|
12954
|
+
rtCell.Right+=offsetLeft;
|
|
12955
|
+
rtCell.Top+=offsetTop;
|
|
12956
|
+
rtCell.Bottom+=offsetTop;
|
|
12957
|
+
|
|
12958
|
+
this.JSPopMenu.CreatePopMenu(menuData);
|
|
12959
|
+
this.JSPopMenu.PopupMenuByTab(rtCell);
|
|
12960
|
+
}
|
|
12961
|
+
|
|
12962
|
+
this.PopuMenuByRClick=function(menuData, x, y)
|
|
12963
|
+
{
|
|
12964
|
+
var rtClient=this.UIElement.getBoundingClientRect();
|
|
12965
|
+
var rtScroll=GetScrollPosition();
|
|
12966
|
+
|
|
12967
|
+
x+=rtClient.left+rtScroll.Left;
|
|
12968
|
+
y+=rtClient.top+rtScroll.Top;
|
|
12969
|
+
|
|
12970
|
+
this.JSPopMenu.CreatePopMenu(menuData);
|
|
12971
|
+
this.JSPopMenu.PopupMenuByRight(x,y);
|
|
12972
|
+
}
|
|
12973
|
+
|
|
12974
|
+
//点击右键菜单
|
|
12975
|
+
this.OnClickRightMenu=function(data)
|
|
12976
|
+
{
|
|
12977
|
+
JSConsole.Chart.Log('[JSChartContainer::OnClickRightMenu] ',data);
|
|
12978
|
+
if (!data || !data.Data) return;
|
|
12979
|
+
|
|
12980
|
+
var cmdID=data.Data.ID; //命令ID
|
|
12981
|
+
var aryArgs=data.Data.Args; //参数
|
|
12982
|
+
var param=null, srcParam=null; //原始值
|
|
12983
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryArgs))
|
|
12984
|
+
{
|
|
12985
|
+
srcParam=aryArgs[0];
|
|
12986
|
+
if (IFrameSplitOperator.IsNumber(aryArgs[0])) param=aryArgs[0];
|
|
12987
|
+
}
|
|
12988
|
+
|
|
12989
|
+
switch(cmdID)
|
|
12990
|
+
{
|
|
12991
|
+
case JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID:
|
|
12992
|
+
if (this.ChangePeriod && param!=null)
|
|
12993
|
+
this.ChangePeriod(param);
|
|
12994
|
+
break;
|
|
12995
|
+
case JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID:
|
|
12996
|
+
if (this.ChangeIndexWindowCount && param!=null)
|
|
12997
|
+
this.ChangeIndexWindowCount(param);
|
|
12998
|
+
break;
|
|
12999
|
+
case JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID:
|
|
13000
|
+
if (this.ChangeRight && param!=null)
|
|
13001
|
+
this.ChangeRight(param);
|
|
13002
|
+
break;
|
|
13003
|
+
case JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID:
|
|
13004
|
+
if (this.ChangeIndex && param!=null && aryArgs[1])
|
|
13005
|
+
this.ChangeIndex(param,aryArgs[1]);
|
|
13006
|
+
break;
|
|
13007
|
+
|
|
13008
|
+
case JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID:
|
|
13009
|
+
case JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID:
|
|
13010
|
+
if (this.ChangeInstructionIndex && aryArgs[0])
|
|
13011
|
+
this.ChangeInstructionIndex(aryArgs[0]);
|
|
13012
|
+
break;
|
|
13013
|
+
case JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID: //删除五彩K线指标
|
|
13014
|
+
case JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID: //删除专家系统(交易指标)
|
|
13015
|
+
if (this.CancelInstructionIndex) this.CancelInstructionIndex();
|
|
13016
|
+
break;
|
|
13017
|
+
case JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID: //切换K线类型
|
|
13018
|
+
if (this.ChangeKLineDrawType && param!=null)
|
|
13019
|
+
this.ChangeKLineDrawType(param,aryArgs[1],aryArgs[2]);
|
|
13020
|
+
break;
|
|
13021
|
+
case JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID: //缺口提示
|
|
13022
|
+
if (this.ChangePriceGap && IFrameSplitOperator.IsBool(aryArgs[0]))
|
|
13023
|
+
{
|
|
13024
|
+
if (aryArgs[0]==false)
|
|
13025
|
+
{
|
|
13026
|
+
this.ChangePriceGap({ Enable:aryArgs[0] });
|
|
13027
|
+
}
|
|
13028
|
+
else
|
|
13029
|
+
{
|
|
13030
|
+
if (IFrameSplitOperator.IsNumber(aryArgs[1]))
|
|
13031
|
+
this.ChangePriceGap({ Enable:aryArgs[0], Count:aryArgs[1] });
|
|
13032
|
+
}
|
|
13033
|
+
}
|
|
13034
|
+
break;
|
|
13035
|
+
case JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID:
|
|
13036
|
+
if (aryArgs[1]===true)
|
|
13037
|
+
{
|
|
13038
|
+
if (this.OverlaySymbol && aryArgs[0]) this.OverlaySymbol(aryArgs[0]);
|
|
13039
|
+
}
|
|
13040
|
+
else if (aryArgs[1]===false)
|
|
13041
|
+
{
|
|
13042
|
+
if (this.DeleteOverlaySymbol && aryArgs[0]) this.DeleteOverlaySymbol(aryArgs[0]);
|
|
13043
|
+
}
|
|
13044
|
+
break;
|
|
13045
|
+
case JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID:
|
|
13046
|
+
if (this.ClearOverlaySymbol) this.ClearOverlaySymbol();
|
|
13047
|
+
break;
|
|
13048
|
+
case JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID:
|
|
13049
|
+
if (this.ChangeCoordinateType && aryArgs[0]) this.ChangeCoordinateType(aryArgs[0]);
|
|
13050
|
+
break;
|
|
13051
|
+
case JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID:
|
|
13052
|
+
if (aryArgs[0] && IFrameSplitOperator.IsBool(aryArgs[1]))
|
|
13053
|
+
{
|
|
13054
|
+
if (aryArgs[1]==true && this.AddKLineInfo) this.AddKLineInfo(aryArgs[0],true);
|
|
13055
|
+
else if (aryArgs[1]==false && this.DeleteKLineInfo) this.DeleteKLineInfo(aryArgs[0]);
|
|
13056
|
+
}
|
|
13057
|
+
break;
|
|
13058
|
+
case JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID:
|
|
13059
|
+
if (this.ClearKLineInfo) this.ClearKLineInfo();
|
|
13060
|
+
break;
|
|
13061
|
+
case JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID:
|
|
13062
|
+
if (param!=null) this.DragMode=param;
|
|
13063
|
+
break;
|
|
13064
|
+
case JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID:
|
|
13065
|
+
if (IFrameSplitOperator.IsBool(srcParam))
|
|
13066
|
+
{
|
|
13067
|
+
if (srcParam)
|
|
13068
|
+
{
|
|
13069
|
+
this.CreateExtendChart("SessionBreaksPaint", { });
|
|
13070
|
+
this.Draw();
|
|
13071
|
+
}
|
|
13072
|
+
else
|
|
13073
|
+
{
|
|
13074
|
+
var finder=this.GetExtendChartByClassName("SessionBreaksPaint");
|
|
13075
|
+
if (finder)
|
|
13076
|
+
{
|
|
13077
|
+
this.DeleteExtendChartByID(finder.Chart.ID);
|
|
13078
|
+
this.Draw();
|
|
13079
|
+
}
|
|
13080
|
+
}
|
|
13081
|
+
}
|
|
13082
|
+
break;
|
|
13083
|
+
case JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID:
|
|
13084
|
+
var option={Name:'画图工具', Top:this.Frame.ChartBorder.Top };
|
|
13085
|
+
var extendChart=this.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
13086
|
+
this.SetSizeChange(true);
|
|
13087
|
+
this.Draw();
|
|
13088
|
+
break;
|
|
13089
|
+
case JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:
|
|
13090
|
+
var drawTools=this.GetExtendChartByClassName('DrawToolsButton');
|
|
13091
|
+
if (drawTools)
|
|
13092
|
+
{
|
|
13093
|
+
var toolsWidth=drawTools.Chart.Width;
|
|
13094
|
+
var toolsIndex=parseInt(drawTools.Index);
|
|
13095
|
+
for(var i=toolsIndex+1; i<this.ExtendChartPaint.length; ++i) //在画图工具后面创建的需要减去工具的宽度
|
|
13096
|
+
{
|
|
13097
|
+
var item=this.ExtendChartPaint[i];
|
|
13098
|
+
if (item.ClassName=='StockChip')
|
|
13099
|
+
{
|
|
13100
|
+
item.Left-=toolsWidth;
|
|
13101
|
+
}
|
|
13102
|
+
}
|
|
13103
|
+
this.DeleteExtendChart(drawTools);
|
|
13104
|
+
this.Frame.ChartBorder.Right-=toolsWidth;
|
|
13105
|
+
this.SetSizeChange(true);
|
|
13106
|
+
this.Draw();
|
|
13107
|
+
}
|
|
13108
|
+
break;
|
|
13109
|
+
case JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID:
|
|
13110
|
+
var option={Name:'筹码分布', ShowType:1, Width:230 };
|
|
13111
|
+
var extendChart=this.CreateExtendChart(option.Name, option); //创建扩展图形
|
|
13112
|
+
this.SetSizeChange(true);
|
|
13113
|
+
this.Draw();
|
|
13114
|
+
break;
|
|
13115
|
+
case JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:
|
|
13116
|
+
var StockChip=chart.GetExtendChartByClassName('StockChip');
|
|
13117
|
+
if (StockChip)
|
|
13118
|
+
{
|
|
13119
|
+
var chipWidth=StockChip.Chart.Width;
|
|
13120
|
+
var chipIndex=parseInt(StockChip.Index);
|
|
13121
|
+
for(var i=chipIndex+1; i<this.ExtendChartPaint.length; ++i) //在筹码后面创建的需要筹码的宽度
|
|
13122
|
+
{
|
|
13123
|
+
var item=this.ExtendChartPaint[i];
|
|
13124
|
+
if (item.ClassName=='DrawToolsButton')
|
|
13125
|
+
{
|
|
13126
|
+
item.Left-=chipWidth;
|
|
13127
|
+
}
|
|
13128
|
+
}
|
|
13129
|
+
this.DeleteExtendChart(StockChip);
|
|
13130
|
+
this.Frame.ChartBorder.Right-=chipWidth;
|
|
13131
|
+
this.SetSizeChange(true);
|
|
13132
|
+
this.Draw();
|
|
13133
|
+
}
|
|
13134
|
+
break;
|
|
13135
|
+
case JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID:
|
|
13136
|
+
if (IFrameSplitOperator.IsBool(srcParam))
|
|
13137
|
+
this.EnableSelectRect=srcParam;
|
|
13138
|
+
break;
|
|
13139
|
+
case JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID:
|
|
13140
|
+
if (this.ChangeDayCount && param!=null)
|
|
13141
|
+
this.ChangeDayCount(param);
|
|
13142
|
+
break;
|
|
13143
|
+
}
|
|
13144
|
+
}
|
|
12932
13145
|
}
|
|
12933
13146
|
|
|
12934
13147
|
function GetDevicePixelRatio()
|
|
@@ -13026,11 +13239,12 @@ function GetScrollPosition()
|
|
|
13026
13239
|
var scrollPos={};
|
|
13027
13240
|
var scrollTop=0;
|
|
13028
13241
|
var scrollLeft=0;
|
|
13029
|
-
if(document.documentElement && document.documentElement.scrollTop)
|
|
13242
|
+
if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft))
|
|
13030
13243
|
{
|
|
13031
13244
|
scrollTop=document.documentElement.scrollTop;
|
|
13032
13245
|
scrollLeft=document.documentElement.scrollLeft;
|
|
13033
|
-
}
|
|
13246
|
+
}
|
|
13247
|
+
else if(document.body)
|
|
13034
13248
|
{
|
|
13035
13249
|
scrollTop=document.body.scrollTop;
|
|
13036
13250
|
scrollLeft=document.body.scrollLeft;
|
|
@@ -47994,7 +48208,8 @@ function FrameButtomToolbarPaint()
|
|
|
47994
48208
|
this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);
|
|
47995
48209
|
}
|
|
47996
48210
|
|
|
47997
|
-
var font=this.
|
|
48211
|
+
var font=this.GetTitleFont(rtBG.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom);
|
|
48212
|
+
var svgFont=this.GetSVGFont(rtBG.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom);
|
|
47998
48213
|
this.Canvas.textBaseline='middle';
|
|
47999
48214
|
this.Canvas.textAlign='center';
|
|
48000
48215
|
this.Canvas.font=font;
|
|
@@ -48002,9 +48217,23 @@ function FrameButtomToolbarPaint()
|
|
|
48002
48217
|
for(var i=0;i<this.AryButton.length;++i)
|
|
48003
48218
|
{
|
|
48004
48219
|
var item=this.AryButton[i];
|
|
48005
|
-
if (!item.Title) return;
|
|
48006
|
-
|
|
48007
|
-
var
|
|
48220
|
+
if (!item.Title && !(item.SVGButton && item.SVGButton.Symbol)) return;
|
|
48221
|
+
|
|
48222
|
+
var textWidth=0;
|
|
48223
|
+
if (item.Title)
|
|
48224
|
+
{
|
|
48225
|
+
textWidth=this.Canvas.measureText(item.Title).width+2;
|
|
48226
|
+
}
|
|
48227
|
+
|
|
48228
|
+
var svgButtonWidth=0;
|
|
48229
|
+
if (item.SVGButton && item.SVGButton.Symbol)
|
|
48230
|
+
{
|
|
48231
|
+
svgButtonWidth=this.ButtonConfig.SVG.Size;
|
|
48232
|
+
if (textWidth>0) svgButtonWidth+=this.ButtonConfig.SVG.MerginLeft;
|
|
48233
|
+
|
|
48234
|
+
}
|
|
48235
|
+
|
|
48236
|
+
var buttonWidth=textWidth+svgButtonWidth+this.ButtonConfig.Mergin.Left+this.ButtonConfig.Mergin.Right;
|
|
48008
48237
|
var rtButton={ Left:xBotton, Top:rtBG.Top, Bottom:rtBG.Bottom, Height:rtBG.Height, Width:buttonWidth };
|
|
48009
48238
|
rtButton.Right=rtButton.Left+rtButton.Width;
|
|
48010
48239
|
|
|
@@ -48041,12 +48270,50 @@ function FrameButtomToolbarPaint()
|
|
|
48041
48270
|
this.Canvas.stroke();
|
|
48042
48271
|
}
|
|
48043
48272
|
|
|
48044
|
-
|
|
48045
|
-
|
|
48046
|
-
|
|
48047
|
-
|
|
48273
|
+
if (item.Title)
|
|
48274
|
+
{
|
|
48275
|
+
this.Canvas.fillStyle=titleColor;
|
|
48276
|
+
var xText=rtButton.Left+(rtButton.Width-svgButtonWidth)/2; //居中
|
|
48277
|
+
var yText=rtButton.Top+this.ButtonConfig.Mergin.Top+(rtButton.Height-this.ButtonConfig.Mergin.Top-this.ButtonConfig.Mergin.Bottom)/2;
|
|
48278
|
+
this.Canvas.fillText(item.Title,xText,yText);
|
|
48279
|
+
}
|
|
48280
|
+
|
|
48281
|
+
|
|
48282
|
+
var rtSVG=null;
|
|
48283
|
+
if (item.SVGButton && item.SVGButton.Symbol)
|
|
48284
|
+
{
|
|
48285
|
+
this.Canvas.font=svgFont;
|
|
48286
|
+
this.Canvas.fillStyle=titleColor;
|
|
48287
|
+
var xText=rtButton.Right-this.ButtonConfig.SVG.Size/2-this.ButtonConfig.Mergin.Right;
|
|
48288
|
+
this.Canvas.fillText(item.SVGButton.Symbol,xText,yText);
|
|
48289
|
+
this.Canvas.font=font;
|
|
48290
|
+
|
|
48291
|
+
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};
|
|
48292
|
+
rtSVG.Right=rtSVG.Left+rtSVG.Width;
|
|
48293
|
+
rtSVG.Bottom=rtSVG.Top+rtSVG.Height;
|
|
48294
|
+
}
|
|
48295
|
+
|
|
48296
|
+
//{ Rect:rtButton, ID:item.ID, Data:item, RectSVG:rtSVG }
|
|
48297
|
+
if (textWidth>0 && svgButtonWidth>0)
|
|
48298
|
+
{
|
|
48299
|
+
var rtText={ Left:rtButton.Left, Top:rtButton.Top, Bottom:rtButton.Bottom };
|
|
48300
|
+
rtText.Right=rtText.Left+textWidth+this.ButtonConfig.Mergin.Left+this.ButtonConfig.SVG.MerginLeft/2;
|
|
48301
|
+
var cacheItem={ Rect:rtText, ID:item.ID, Data:item, RectCell:rtButton, ButtonType:0 };
|
|
48302
|
+
this.AryRectButton.push(cacheItem);
|
|
48303
|
+
|
|
48304
|
+
var rtSVG={Left:rtText.Right, Right:rtButton.Right, Top:rtButton.Top, Bottom:rtButton.Bottom };
|
|
48305
|
+
var cacheItem={ Rect:rtSVG, ID:item.ID, Data:item, RectCell:rtButton, ButtonType:1 };
|
|
48306
|
+
this.AryRectButton.push(cacheItem);
|
|
48307
|
+
}
|
|
48308
|
+
else
|
|
48309
|
+
{
|
|
48310
|
+
var cacheItem={ Rect:rtButton, ID:item.ID, Data:item, RectCell:rtButton }; //RectCell 全部的大小
|
|
48311
|
+
if (textWidth>0) cacheItem.ButtonType=0;
|
|
48312
|
+
else if (svgButtonWidth>0) cacheItem.ButtonType=1;
|
|
48313
|
+
this.AryRectButton.push(cacheItem);
|
|
48314
|
+
}
|
|
48315
|
+
|
|
48048
48316
|
|
|
48049
|
-
this.AryRectButton.push({ Rect:rtButton, ID:item.ID, Data:item });
|
|
48050
48317
|
|
|
48051
48318
|
xBotton+=buttonWidth+1;
|
|
48052
48319
|
}
|
|
@@ -48075,13 +48342,22 @@ function FrameButtomToolbarPaint()
|
|
|
48075
48342
|
return null;
|
|
48076
48343
|
}
|
|
48077
48344
|
|
|
48078
|
-
this.
|
|
48345
|
+
this.GetTitleFont=function(height)
|
|
48079
48346
|
{
|
|
48080
48347
|
var config=this.ButtonConfig.Font;
|
|
48081
|
-
var fontSize=height;
|
|
48348
|
+
var fontSize=height*GetDevicePixelRatio();
|
|
48082
48349
|
if (IFrameSplitOperator.IsPlusNumber(config.Size)) fontSize=config.Size;
|
|
48083
48350
|
|
|
48084
|
-
var font=`${fontSize
|
|
48351
|
+
var font=`${fontSize}px ${config.Family}`;
|
|
48352
|
+
return font;
|
|
48353
|
+
}
|
|
48354
|
+
|
|
48355
|
+
this.GetSVGFont=function(height)
|
|
48356
|
+
{
|
|
48357
|
+
var config=this.ButtonConfig.SVG;
|
|
48358
|
+
var fontSize=height*GetDevicePixelRatio();
|
|
48359
|
+
if (IFrameSplitOperator.IsPlusNumber(config.Size)) fontSize=config.Size;
|
|
48360
|
+
var font=`${fontSize}px ${config.Family}`;
|
|
48085
48361
|
return font;
|
|
48086
48362
|
}
|
|
48087
48363
|
|
|
@@ -48094,7 +48370,7 @@ function FrameButtomToolbarPaint()
|
|
|
48094
48370
|
if (x>rect.Left && x<rect.Right && y>rect.Top && y<rect.Bottom)
|
|
48095
48371
|
{
|
|
48096
48372
|
var frame=this.GetFrame();
|
|
48097
|
-
var result={ ID:item.Data.ID, Rect:rect, FrameID:this.FrameID, Frame:frame, Data:item.Data };
|
|
48373
|
+
var result={ ID:item.Data.ID, Rect:rect, FrameID:this.FrameID, Frame:frame, Data:item.Data, ButtonType:item.ButtonType, RectCell:item.RectCell, };
|
|
48098
48374
|
return result;
|
|
48099
48375
|
}
|
|
48100
48376
|
}
|
|
@@ -57435,7 +57711,7 @@ function IChartDrawPicture()
|
|
|
57435
57711
|
if (option.LineWidth>0) this.LineWidth=option.LineWidth;
|
|
57436
57712
|
if (option.AreaColor) this.AreaColor=option.AreaColor;
|
|
57437
57713
|
if (option.PointColor) this.PointColor=option.PointColor;
|
|
57438
|
-
if (option.MoveOnPointColor) this.
|
|
57714
|
+
if (option.MoveOnPointColor) this.MoveOnPointColor=option.MoveOnPointColor;
|
|
57439
57715
|
if (option.PointRadius) this.PointRadius=option.PointRadius;
|
|
57440
57716
|
if (IFrameSplitOperator.IsNumber(option.SquareSize)) this.SquareSize=option.SquareSize;
|
|
57441
57717
|
if (IFrameSplitOperator.IsBool(option.IsShowPoint)) this.IsShowPoint=option.IsShowPoint;
|
|
@@ -57634,8 +57910,8 @@ function IChartDrawPicture()
|
|
|
57634
57910
|
for(var i=0; i<this.Point.length; ++i)
|
|
57635
57911
|
{
|
|
57636
57912
|
var item=this.Point[i];
|
|
57637
|
-
var xValue=parseInt(this.Frame.GetXData(item.Y));
|
|
57638
|
-
var yValue=this.Frame.GetYData(item.X);
|
|
57913
|
+
var xValue=parseInt(this.Frame.GetXData(item.Y,false));
|
|
57914
|
+
var yValue=this.Frame.GetYData(item.X,false);
|
|
57639
57915
|
|
|
57640
57916
|
var valueItem={ XValue:xValue, YValue:yValue };
|
|
57641
57917
|
var minuteItem=data.Data[xValue];
|
|
@@ -57649,8 +57925,8 @@ function IChartDrawPicture()
|
|
|
57649
57925
|
for(var i=0; i<this.Point.length; ++i)
|
|
57650
57926
|
{
|
|
57651
57927
|
var item=this.Point[i];
|
|
57652
|
-
var xValue=parseInt(this.Frame.GetXData(item.X));
|
|
57653
|
-
var yValue=this.Frame.GetYData(item.Y);
|
|
57928
|
+
var xValue=parseInt(this.Frame.GetXData(item.X,false));
|
|
57929
|
+
var yValue=this.Frame.GetYData(item.Y,false);
|
|
57654
57930
|
|
|
57655
57931
|
if (xValue>=data.Data.length) //超过当前数据,直接读固定时间
|
|
57656
57932
|
{
|
|
@@ -57725,7 +58001,7 @@ function IChartDrawPicture()
|
|
|
57725
58001
|
}
|
|
57726
58002
|
|
|
57727
58003
|
data.FindDataIndexByDateTime(aryDateTime);
|
|
57728
|
-
for(var i
|
|
58004
|
+
for(var i=0; i<aryDateTime.length; ++i)
|
|
57729
58005
|
{
|
|
57730
58006
|
var findItem=aryDateTime[i];
|
|
57731
58007
|
var valueItem=this.Value[i];
|
|
@@ -57733,6 +58009,17 @@ function IChartDrawPicture()
|
|
|
57733
58009
|
}
|
|
57734
58010
|
}
|
|
57735
58011
|
|
|
58012
|
+
//重置X索引数据
|
|
58013
|
+
this.ResetXValue=function()
|
|
58014
|
+
{
|
|
58015
|
+
for(var i=0; i<this.Value.length; ++i)
|
|
58016
|
+
{
|
|
58017
|
+
var item=this.Value[i];
|
|
58018
|
+
item.XValue=null;
|
|
58019
|
+
}
|
|
58020
|
+
return true;
|
|
58021
|
+
}
|
|
58022
|
+
|
|
57736
58023
|
//xStep,yStep 移动的偏移量
|
|
57737
58024
|
this.Move=function(xStep,yStep)
|
|
57738
58025
|
{
|
|
@@ -57858,6 +58145,8 @@ function IChartDrawPicture()
|
|
|
57858
58145
|
for(var i=0; i<this.Value.length; ++i)
|
|
57859
58146
|
{
|
|
57860
58147
|
var item=this.Value[i];
|
|
58148
|
+
if (!IFrameSplitOperator.IsNumber(item.XValue)) return null; //无效索引 不显示
|
|
58149
|
+
|
|
57861
58150
|
var dataIndex=item.XValue-data.DataOffset;
|
|
57862
58151
|
if (dataIndex<0 || dataIndex>=showCount) ++invaildX;
|
|
57863
58152
|
|
|
@@ -58928,7 +59217,7 @@ function ChartDrawPictureLine()
|
|
|
58928
59217
|
if (this.IsFrameMinSize()) return;
|
|
58929
59218
|
if (!this.IsShow) return;
|
|
58930
59219
|
|
|
58931
|
-
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:
|
|
59220
|
+
var drawPoint=this.CalculateDrawPoint( {IsCheckX:true, IsCheckY:false} );
|
|
58932
59221
|
if (!drawPoint) return;
|
|
58933
59222
|
if (drawPoint.length!=2) return;
|
|
58934
59223
|
|
|
@@ -68761,12 +69050,14 @@ function JSChartResource()
|
|
|
68761
69050
|
BorderColor:"rgb(204,204,204)",
|
|
68762
69051
|
Button:
|
|
68763
69052
|
{
|
|
68764
|
-
Font:{ Family:"微软雅黑" },
|
|
69053
|
+
Font:{ Family:"微软雅黑", Size:12*GetDevicePixelRatio() },
|
|
68765
69054
|
TitleColor: { Selected:"rgb(255,255,255)", Default:"rgb(125,125,125)", MoveOn:"rgb(234,85,4)" },
|
|
68766
69055
|
BGColor: { Selected:"rgb(234,85,4)", Default:"rgb(235,235,235)", MoveOn:"rgb(242,242,242)" },
|
|
68767
69056
|
BorderColor:"rgb(204,204,204)",
|
|
68768
69057
|
|
|
68769
|
-
Mergin: { Left:5*GetDevicePixelRatio(), Right:5*GetDevicePixelRatio(), Top:4*GetDevicePixelRatio(), Bottom:2*GetDevicePixelRatio() }
|
|
69058
|
+
Mergin: { Left:5*GetDevicePixelRatio(), Right:5*GetDevicePixelRatio(), Top:4*GetDevicePixelRatio(), Bottom:2*GetDevicePixelRatio() },
|
|
69059
|
+
|
|
69060
|
+
SVG:{ Family:"iconfont", Size:12*GetDevicePixelRatio(), MerginLeft:4*GetDevicePixelRatio() }
|
|
68770
69061
|
}
|
|
68771
69062
|
}
|
|
68772
69063
|
|
|
@@ -69785,6 +70076,15 @@ function JSChartResource()
|
|
|
69785
70076
|
if (IFrameSplitOperator.IsNumber(item.Top)) destItem.Top=item.Top;
|
|
69786
70077
|
if (IFrameSplitOperator.IsNumber(item.Bottom)) destItem.Bottom=item.Bottom;
|
|
69787
70078
|
}
|
|
70079
|
+
|
|
70080
|
+
if (button.SVG)
|
|
70081
|
+
{
|
|
70082
|
+
var item=button.SVG;
|
|
70083
|
+
var destItem=this.FrameButtomToolbar.Button.SVG;
|
|
70084
|
+
if (IFrameSplitOperator.IsNumber(item.Size)) destItem.Size=item.Size;
|
|
70085
|
+
if (IFrameSplitOperator.IsNumber(item.MerginLeft)) destItem.MerginLeft=item.MerginLeft;
|
|
70086
|
+
if (item.Family) destItem.Family=item.Family;
|
|
70087
|
+
}
|
|
69788
70088
|
}
|
|
69789
70089
|
|
|
69790
70090
|
}
|
|
@@ -76096,12 +76396,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
76096
76396
|
}
|
|
76097
76397
|
}
|
|
76098
76398
|
|
|
76099
|
-
|
|
76100
76399
|
//注册鼠标右键事件
|
|
76101
76400
|
this.OnRightMenu=function(x,y,e)
|
|
76102
76401
|
{
|
|
76103
76402
|
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
76104
|
-
if (this.
|
|
76403
|
+
if (this.EnablePopMenuV2)
|
|
76404
|
+
{
|
|
76405
|
+
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
76406
|
+
this.PopuRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
76407
|
+
}
|
|
76408
|
+
else if (this.RightMenu)
|
|
76105
76409
|
{
|
|
76106
76410
|
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
76107
76411
|
e.data={ Chart:this, FrameID:frameId };
|
|
@@ -76117,11 +76421,286 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
76117
76421
|
}
|
|
76118
76422
|
}
|
|
76119
76423
|
|
|
76424
|
+
//右键菜单数据
|
|
76425
|
+
this.GetRightMenuData=function(frameID)
|
|
76426
|
+
{
|
|
76427
|
+
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
76428
|
+
var klineChart=this.ChartPaint[0];
|
|
76429
|
+
var priceGap=klineChart.PriceGap; //缺口配置信息
|
|
76430
|
+
var coordinateType=null, yCoordinateType=null; //坐标类型
|
|
76431
|
+
var mainFrame=null;
|
|
76432
|
+
if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
|
|
76433
|
+
if (mainFrame)
|
|
76434
|
+
{
|
|
76435
|
+
coordinateType=mainFrame.CoordinateType;
|
|
76436
|
+
if (mainFrame.YSplitOperator) yCoordinateType=mainFrame.YSplitOperator.CoordinateType;
|
|
76437
|
+
}
|
|
76438
|
+
|
|
76439
|
+
var aryKLineInfo=[]; //信息地雷
|
|
76440
|
+
for(var i=0;i<this.ChartInfo.length;++i)
|
|
76441
|
+
{
|
|
76442
|
+
var item=this.ChartInfo[i];
|
|
76443
|
+
if (item && item.ClassName) aryKLineInfo.push(item.ClassName);
|
|
76444
|
+
}
|
|
76445
|
+
|
|
76446
|
+
var aryOverlaySymbol=[]; //叠加的股票列表
|
|
76447
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
76448
|
+
{
|
|
76449
|
+
var item=this.OverlayChartPaint[i];
|
|
76450
|
+
if (item && item.Symbol) aryOverlaySymbol.push(item.Symbol)
|
|
76451
|
+
}
|
|
76452
|
+
|
|
76453
|
+
var bBGSpit=false, bShowDrawTool=false, bShowStockChip=false;
|
|
76454
|
+
if (this.GetExtendChartByClassName("SessionBreaksPaint")) bBGSpit=true;
|
|
76455
|
+
if (this.GetExtendChartByClassName('DrawToolsButton')) bShowDrawTool=true; //画图工具
|
|
76456
|
+
if (this.GetExtendChartByClassName('StockChip')) bShowStockChip=true; //筹码
|
|
76457
|
+
|
|
76458
|
+
var aryMenu=
|
|
76459
|
+
[
|
|
76460
|
+
{
|
|
76461
|
+
Name:"分析周期",
|
|
76462
|
+
SubMenu:
|
|
76463
|
+
[
|
|
76464
|
+
{ Name:"日线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[0] }, Checked:this.Period==0 },
|
|
76465
|
+
{ Name:"周线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[1] }, Checked:this.Period==1 },
|
|
76466
|
+
{ Name:"双周线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[21]}, Checked:this.Period==21 },
|
|
76467
|
+
{ Name:"月线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[2]}, Checked:this.Period==2 },
|
|
76468
|
+
{ Name:"季线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[9]}, Checked:this.Period==9 },
|
|
76469
|
+
{ Name:"半年", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[22]}, Checked:this.Period==22 },
|
|
76470
|
+
{ Name:"年线", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[3]}, Checked:this.Period==3 },
|
|
76471
|
+
{ Name:"1分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[4]}, Checked:this.Period==4 },
|
|
76472
|
+
{ Name:"5分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[5]}, Checked:this.Period==5 },
|
|
76473
|
+
{ Name:"15分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[6]}, Checked:this.Period==6 },
|
|
76474
|
+
{ Name:"30分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[7]}, Checked:this.Period==7 },
|
|
76475
|
+
{ Name:"60分", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[8]}, Checked:this.Period==8 },
|
|
76476
|
+
{ Name:"2小时", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[11]}, Checked:this.Period==11 },
|
|
76477
|
+
{ Name:"4小时", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[12]}, Checked:this.Period==12 },
|
|
76478
|
+
{ Name:"分笔", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[10]}, Checked:this.Period==10 },
|
|
76479
|
+
{ Name:"自定义周期:3分钟", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[20003]}, Checked:this.Period==20003 },
|
|
76480
|
+
{ Name:"自定义周期:35分钟", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[20035]}, Checked:this.Period==20035 },
|
|
76481
|
+
{ Name:"自定义周期:8日", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID, Args:[40008]}, Checked:this.Period==40008 },
|
|
76482
|
+
]
|
|
76483
|
+
},
|
|
76484
|
+
{
|
|
76485
|
+
Name:"指标切换",
|
|
76486
|
+
SubMenu:
|
|
76487
|
+
[
|
|
76488
|
+
{ Name:"均线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "均线"]}},
|
|
76489
|
+
{ Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BOLL"]}},
|
|
76490
|
+
{ Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
|
|
76491
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
|
|
76492
|
+
{ Name:"VOL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "VOL"]}},
|
|
76493
|
+
{ Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
|
|
76494
|
+
{ Name:"BRAR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BRAR"]}},
|
|
76495
|
+
{ Name:"WR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "WR"]}},
|
|
76496
|
+
]
|
|
76497
|
+
},
|
|
76498
|
+
{
|
|
76499
|
+
Name:"五彩K线",
|
|
76500
|
+
SubMenu:
|
|
76501
|
+
[
|
|
76502
|
+
{ Name:"十字星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-十字星"]}},
|
|
76503
|
+
{ Name:"早晨之星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-早晨之星"]}},
|
|
76504
|
+
{ Name:"垂死十字", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-垂死十字"]}},
|
|
76505
|
+
{ Name:"三只乌鸦", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-三只乌鸦"]}},
|
|
76506
|
+
{ Name:"光脚阴线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-光脚阴线"]}},
|
|
76507
|
+
{ Name:"黄昏之星", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID, Args:["五彩K线-黄昏之星"]}},
|
|
76508
|
+
]
|
|
76509
|
+
|
|
76510
|
+
},
|
|
76511
|
+
{
|
|
76512
|
+
Name:"专家系统",
|
|
76513
|
+
SubMenu:
|
|
76514
|
+
[
|
|
76515
|
+
{ Name:"BIAS", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-BIAS"]}},
|
|
76516
|
+
{ Name:"CCI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-CCI"]}},
|
|
76517
|
+
{ Name:"DMI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-DMI"]}},
|
|
76518
|
+
{ Name:"KD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-KD"]}},
|
|
76519
|
+
{ Name:"BOLL", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-BOLL"]}},
|
|
76520
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID, Args:["交易系统-KDJ"]}},
|
|
76521
|
+
]
|
|
76522
|
+
},
|
|
76523
|
+
{
|
|
76524
|
+
Name:"信息地雷",
|
|
76525
|
+
SubMenu:
|
|
76526
|
+
[
|
|
76527
|
+
{ Name:"公告", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["公告", !aryKLineInfo.includes("AnnouncementInfo")]}, Checked:aryKLineInfo.includes("AnnouncementInfo") },
|
|
76528
|
+
{ Name:"业绩预告", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["业绩预告", !aryKLineInfo.includes("PforecastInfo")]}, Checked:aryKLineInfo.includes("PforecastInfo") },
|
|
76529
|
+
{ Name:"调研", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["调研", !aryKLineInfo.includes("ResearchInfo") ]}, Checked:aryKLineInfo.includes("ResearchInfo") },
|
|
76530
|
+
{ Name:"大宗交易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["大宗交易", !aryKLineInfo.includes("BlockTrading")]}, Checked:aryKLineInfo.includes("BlockTrading") },
|
|
76531
|
+
{ Name:"龙虎榜", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["龙虎榜", !aryKLineInfo.includes("TradeDetail")]}, Checked:aryKLineInfo.includes("TradeDetail") },
|
|
76532
|
+
{ Name:"互动易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["互动易", !aryKLineInfo.includes("InvestorInfo")]}, Checked:aryKLineInfo.includes("InvestorInfo") },
|
|
76533
|
+
]
|
|
76534
|
+
},
|
|
76535
|
+
{
|
|
76536
|
+
Name:"缺口提示",
|
|
76537
|
+
SubMenu:
|
|
76538
|
+
[
|
|
76539
|
+
{ Name:"显示1个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 1]}, Checked:(priceGap.Enable==true && priceGap.Count==1) },
|
|
76540
|
+
{ Name:"显示2个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 2]}, Checked:(priceGap.Enable==true && priceGap.Count==2) },
|
|
76541
|
+
{ Name:"显示3个缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[true, 3]}, Checked:(priceGap.Enable==true && priceGap.Count==3) },
|
|
76542
|
+
{ Name:"隐藏缺口", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID, Args:[false]}, Checked:priceGap.Enable==false },
|
|
76543
|
+
]
|
|
76544
|
+
},
|
|
76545
|
+
{
|
|
76546
|
+
Name:"叠加品种",
|
|
76547
|
+
SubMenu:
|
|
76548
|
+
[
|
|
76549
|
+
{ Name:"上证指数", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000001.sh", !aryOverlaySymbol.includes("000001.sh")]}, Checked:aryOverlaySymbol.includes("000001.sh") },
|
|
76550
|
+
{ Name:"深证成指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399001.sz", !aryOverlaySymbol.includes("399001.sz")]}, Checked:aryOverlaySymbol.includes("399001.sz") },
|
|
76551
|
+
{ Name:"中小板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399005.sz", !aryOverlaySymbol.includes("399005.sz")]}, Checked:aryOverlaySymbol.includes("399005.sz") },
|
|
76552
|
+
{ Name:"创业板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399006.sz", !aryOverlaySymbol.includes("399006.sz")]}, Checked:aryOverlaySymbol.includes("399006.sz") },
|
|
76553
|
+
{ Name:"沪深300", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000300.sh", !aryOverlaySymbol.includes("000300.sh")]}, Checked:aryOverlaySymbol.includes("000300.sh")},
|
|
76554
|
+
]
|
|
76555
|
+
},
|
|
76556
|
+
{
|
|
76557
|
+
Name:"主图线型",
|
|
76558
|
+
SubMenu:
|
|
76559
|
+
[
|
|
76560
|
+
{ Name:"K线(空心阳线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[3]} },
|
|
76561
|
+
{ Name:"K线(实心阳线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[0]} },
|
|
76562
|
+
{ Name:"美国线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[2, true, { IsThinAKBar:false }]} },
|
|
76563
|
+
{ Name:"美国线(细)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[2, true, { IsThinAKBar:true }]} },
|
|
76564
|
+
{ Name:"收盘线", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[1]} },
|
|
76565
|
+
{ Name:"收盘面积", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[4]} },
|
|
76566
|
+
{ Name:"K线(空心阳线阴线)", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[6]} },
|
|
76567
|
+
{ Name:"Heikin Ashi", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[11]} },
|
|
76568
|
+
{ Name:"Line Break", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[12]} },
|
|
76569
|
+
{ Name:"High-low", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[13]} },
|
|
76570
|
+
{ Name:"HLC Area", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID, Args:[15]} },
|
|
76571
|
+
]
|
|
76572
|
+
},
|
|
76573
|
+
{
|
|
76574
|
+
Name:"坐标类型",
|
|
76575
|
+
SubMenu:
|
|
76576
|
+
[
|
|
76577
|
+
{ Name:"反转坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ IsReverse:coordinateType==0 }]}, Checked:coordinateType==1 },
|
|
76578
|
+
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
76579
|
+
|
|
76580
|
+
{ Name:"普通坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:0 }]}, Checked:yCoordinateType==0 },
|
|
76581
|
+
{ Name:"百分比坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:1 }]}, Checked:yCoordinateType==1 },
|
|
76582
|
+
{ Name:"对数坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:2 }]}, Checked:yCoordinateType==2 },
|
|
76583
|
+
{ Name:"等比坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:3 }]}, Checked:yCoordinateType==3 },
|
|
76584
|
+
{ Name:"等分坐标", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:4 }]}, Checked:yCoordinateType==4 },
|
|
76585
|
+
{ Name:"黄金分割", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID, Args:[{ Type:5 }]}, Checked:yCoordinateType==5},
|
|
76586
|
+
|
|
76587
|
+
]
|
|
76588
|
+
},
|
|
76589
|
+
{
|
|
76590
|
+
Name:"指标窗口个数",
|
|
76591
|
+
SubMenu:
|
|
76592
|
+
[
|
|
76593
|
+
{ Name:"1个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[2]}, Checked:2==windowCount },
|
|
76594
|
+
{ Name:"2个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[3]}, Checked:3==windowCount },
|
|
76595
|
+
{ Name:"3个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[4]}, Checked:4==windowCount },
|
|
76596
|
+
{ Name:"4个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[5]}, Checked:5==windowCount },
|
|
76597
|
+
{ Name:"5个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[6]}, Checked:6==windowCount },
|
|
76598
|
+
]
|
|
76599
|
+
},
|
|
76600
|
+
{
|
|
76601
|
+
Name:"其他设置",
|
|
76602
|
+
SubMenu:
|
|
76603
|
+
[
|
|
76604
|
+
|
|
76605
|
+
{ Name:"禁止拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[0]}, Checked:0==this.DragMode },
|
|
76606
|
+
{ Name:"启动拖拽", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[1]}, Checked:1==this.DragMode },
|
|
76607
|
+
{ Name:"区间选择", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID, Args:[2]}, Checked:2==this.DragMode },
|
|
76608
|
+
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
76609
|
+
|
|
76610
|
+
{ Name:"背景分割", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID, Args:[!bBGSpit]}, Checked:bBGSpit},
|
|
76611
|
+
|
|
76612
|
+
{ Name:"画图工具", Data:{ ID:bShowDrawTool?JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID, Args:[]}, Checked:bShowDrawTool},
|
|
76613
|
+
|
|
76614
|
+
{ Name:"移动筹码图", Data:{ ID:bShowStockChip?JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID, Args:[]}, Checked:bShowStockChip},
|
|
76615
|
+
]
|
|
76616
|
+
}
|
|
76617
|
+
];
|
|
76618
|
+
|
|
76619
|
+
//复权
|
|
76620
|
+
if(!MARKET_SUFFIX_NAME.IsSHSZIndex(this.Symbol) && !MARKET_SUFFIX_NAME.IsBIT(this.Symbol))
|
|
76621
|
+
{
|
|
76622
|
+
var rightMenu=
|
|
76623
|
+
{
|
|
76624
|
+
Name:"复权处理",
|
|
76625
|
+
SubMenu:
|
|
76626
|
+
[
|
|
76627
|
+
{ Name:"不复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[0]}, Checked:0==this.Right },
|
|
76628
|
+
{ Name:"前复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[1]}, Checked:1==this.Right },
|
|
76629
|
+
{ Name:"后复权", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID, Args:[2]}, Checked:2==this.Right }
|
|
76630
|
+
]
|
|
76631
|
+
};
|
|
76632
|
+
|
|
76633
|
+
aryMenu.splice(1,0,rightMenu);
|
|
76634
|
+
}
|
|
76635
|
+
|
|
76636
|
+
//删除菜单
|
|
76637
|
+
for(var i=0;i<aryMenu.length;++i)
|
|
76638
|
+
{
|
|
76639
|
+
var item=aryMenu[i];
|
|
76640
|
+
if (item.Name=="五彩K线")
|
|
76641
|
+
{
|
|
76642
|
+
if (this.ColorIndex)
|
|
76643
|
+
{
|
|
76644
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76645
|
+
item.SubMenu.push({ Name:"删除五彩K线", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID} });
|
|
76646
|
+
}
|
|
76647
|
+
}
|
|
76648
|
+
else if (item.Name=="专家系统")
|
|
76649
|
+
{
|
|
76650
|
+
if (this.TradeIndex)
|
|
76651
|
+
{
|
|
76652
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76653
|
+
item.SubMenu.push({ Name:"删除专家系统", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID} });
|
|
76654
|
+
}
|
|
76655
|
+
}
|
|
76656
|
+
else if (item.Name=="叠加品种")
|
|
76657
|
+
{
|
|
76658
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
76659
|
+
{
|
|
76660
|
+
if (item.SubMenu[j].Checked)
|
|
76661
|
+
{
|
|
76662
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76663
|
+
item.SubMenu.push({ Name:"取消叠加", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID} });
|
|
76664
|
+
break;
|
|
76665
|
+
}
|
|
76666
|
+
}
|
|
76667
|
+
}
|
|
76668
|
+
else if (item.Name=="信息地雷")
|
|
76669
|
+
{
|
|
76670
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
76671
|
+
{
|
|
76672
|
+
if (item.SubMenu[j].Checked)
|
|
76673
|
+
{
|
|
76674
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
76675
|
+
item.SubMenu.push({ Name:"删除所有", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID} });
|
|
76676
|
+
break;
|
|
76677
|
+
}
|
|
76678
|
+
}
|
|
76679
|
+
}
|
|
76680
|
+
}
|
|
76681
|
+
|
|
76682
|
+
return aryMenu;
|
|
76683
|
+
}
|
|
76684
|
+
|
|
76685
|
+
this.PopuRightMenuV2=function(data,e)
|
|
76686
|
+
{
|
|
76687
|
+
if (!this.JSPopMenu) return;
|
|
76688
|
+
var x=data.X, y=data.Y;
|
|
76689
|
+
var frameID=data.FrameID;
|
|
76690
|
+
var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
76691
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
76692
|
+
|
|
76693
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
76694
|
+
}
|
|
76695
|
+
|
|
76120
76696
|
//重新加载画图工具(切换股票|周期)
|
|
76121
76697
|
this.ReloadChartDrawPicture=function()
|
|
76122
76698
|
{
|
|
76123
76699
|
this.ChartDrawPicture=[];
|
|
76124
|
-
this.
|
|
76700
|
+
if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.IsSelected=false;
|
|
76701
|
+
this.SelectChartDrawPicture=null;
|
|
76702
|
+
this.CurrentChartDrawPicture=null;
|
|
76703
|
+
|
|
76125
76704
|
if (this.ChartDrawStorage)
|
|
76126
76705
|
{
|
|
76127
76706
|
this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData( {Symbol:this.Symbol, Period:this.Period} );
|
|
@@ -77512,7 +78091,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
77512
78091
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_EXTENDCHART_BUTTON);
|
|
77513
78092
|
if (event && event.Callback)
|
|
77514
78093
|
{
|
|
77515
|
-
var data={ Info:button, PreventDefault:false }; //PreventDefault 是否阻止内置的点击处理
|
|
78094
|
+
var data={ Info:button, PreventDefault:false, e:e }; //PreventDefault 是否阻止内置的点击处理
|
|
77516
78095
|
event.Callback(event,data,this);
|
|
77517
78096
|
if (data.PreventDefault) return;
|
|
77518
78097
|
}
|
|
@@ -79479,7 +80058,13 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79479
80058
|
//注册鼠标右键事件
|
|
79480
80059
|
this.OnRightMenu=function(x,y,e)
|
|
79481
80060
|
{
|
|
79482
|
-
|
|
80061
|
+
var pixelTatio = GetDevicePixelRatio(); //x,y 需要乘以放大倍速
|
|
80062
|
+
if (this.EnablePopMenuV2)
|
|
80063
|
+
{
|
|
80064
|
+
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);
|
|
80065
|
+
this.PopuRightMenuV2({X:e.offsetX, Y:e.offsetY, FrameID:frameId}, e);
|
|
80066
|
+
}
|
|
80067
|
+
else if (this.RightMenu)
|
|
79483
80068
|
{
|
|
79484
80069
|
var frameId=this.Frame.PtInFrame(x,y);
|
|
79485
80070
|
e.data={ Chart:this, FrameID:frameId };
|
|
@@ -79495,6 +80080,107 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79495
80080
|
}
|
|
79496
80081
|
}
|
|
79497
80082
|
|
|
80083
|
+
//右键菜单数据
|
|
80084
|
+
this.GetRightMenuData=function(frameID)
|
|
80085
|
+
{
|
|
80086
|
+
var windowCount=this.Frame.SubFrame.length; //窗口个数
|
|
80087
|
+
|
|
80088
|
+
var aryOverlaySymbol=[]; //叠加的股票列表
|
|
80089
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
80090
|
+
{
|
|
80091
|
+
var item=this.OverlayChartPaint[i];
|
|
80092
|
+
if (item && item.Symbol) aryOverlaySymbol.push(item.Symbol)
|
|
80093
|
+
}
|
|
80094
|
+
|
|
80095
|
+
var aryMenu=
|
|
80096
|
+
[
|
|
80097
|
+
{
|
|
80098
|
+
Name:"叠加品种",
|
|
80099
|
+
SubMenu:
|
|
80100
|
+
[
|
|
80101
|
+
{ Name:"上证指数", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000001.sh", !aryOverlaySymbol.includes("000001.sh")]}, Checked:aryOverlaySymbol.includes("000001.sh") },
|
|
80102
|
+
{ Name:"深证成指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399001.sz", !aryOverlaySymbol.includes("399001.sz")]}, Checked:aryOverlaySymbol.includes("399001.sz") },
|
|
80103
|
+
{ Name:"中小板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399005.sz", !aryOverlaySymbol.includes("399005.sz")]}, Checked:aryOverlaySymbol.includes("399005.sz") },
|
|
80104
|
+
{ Name:"创业板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399006.sz", !aryOverlaySymbol.includes("399006.sz")]}, Checked:aryOverlaySymbol.includes("399006.sz") },
|
|
80105
|
+
{ Name:"沪深300", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000300.sh", !aryOverlaySymbol.includes("000300.sh")]}, Checked:aryOverlaySymbol.includes("000300.sh")},
|
|
80106
|
+
]
|
|
80107
|
+
},
|
|
80108
|
+
{
|
|
80109
|
+
Name:"多日分时图",
|
|
80110
|
+
SubMenu:
|
|
80111
|
+
[
|
|
80112
|
+
{ Name:"当日分时图", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[1]}, Checked:this.DayCount==1 },
|
|
80113
|
+
{ Name:"最近2日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[2]}, Checked:this.DayCount==2 },
|
|
80114
|
+
{ Name:"最近3日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[3]}, Checked:this.DayCount==3 },
|
|
80115
|
+
{ Name:"最近4日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[4]}, Checked:this.DayCount==4 },
|
|
80116
|
+
{ Name:"最近5日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[5]}, Checked:this.DayCount==5 },
|
|
80117
|
+
]
|
|
80118
|
+
},
|
|
80119
|
+
{
|
|
80120
|
+
Name:"指标窗口个数",
|
|
80121
|
+
SubMenu:
|
|
80122
|
+
[
|
|
80123
|
+
{ Name:"1个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[2]}, Checked:3==windowCount },
|
|
80124
|
+
{ Name:"2个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[3]}, Checked:4==windowCount },
|
|
80125
|
+
{ Name:"3个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[4]}, Checked:5==windowCount },
|
|
80126
|
+
{ Name:"4个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[5]}, Checked:6==windowCount },
|
|
80127
|
+
{ Name:"5个窗口", Data:{ ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID, Args:[6]}, Checked:7==windowCount },
|
|
80128
|
+
]
|
|
80129
|
+
},
|
|
80130
|
+
{
|
|
80131
|
+
Name:"指标切换",
|
|
80132
|
+
SubMenu:
|
|
80133
|
+
[
|
|
80134
|
+
{ Name:"MACD", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "MACD"]}},
|
|
80135
|
+
{ Name:"DMI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "DMI"]}},
|
|
80136
|
+
{ Name:"DMA", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "DMA"]}},
|
|
80137
|
+
{ Name:"BRAR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "BRAR"]}},
|
|
80138
|
+
{ Name:"KDJ", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "KDJ"]}},
|
|
80139
|
+
{ Name:"RSI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "RSI"]}},
|
|
80140
|
+
{ Name:"WR", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "WR"]}},
|
|
80141
|
+
{ Name:"CCI", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "CCI"]}},
|
|
80142
|
+
{ Name:"TRIX", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID, Args:[frameID, "TRIX"]}},
|
|
80143
|
+
]
|
|
80144
|
+
},
|
|
80145
|
+
{
|
|
80146
|
+
Name:"区间选择",Data:{ ID: JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID, Args:[!this.EnableSelectRect]}, Checked:this.EnableSelectRect
|
|
80147
|
+
}
|
|
80148
|
+
|
|
80149
|
+
];
|
|
80150
|
+
|
|
80151
|
+
|
|
80152
|
+
//删除菜单
|
|
80153
|
+
for(var i=0;i<aryMenu.length;++i)
|
|
80154
|
+
{
|
|
80155
|
+
var item=aryMenu[i];
|
|
80156
|
+
if (item.Name=="叠加品种")
|
|
80157
|
+
{
|
|
80158
|
+
for(var j=0;j<item.SubMenu.length;++j)
|
|
80159
|
+
{
|
|
80160
|
+
if (item.SubMenu[j].Checked)
|
|
80161
|
+
{
|
|
80162
|
+
item.SubMenu.push({ Name:JSPopMenu.SEPARATOR_LINE_NAME });
|
|
80163
|
+
item.SubMenu.push({ Name:"取消叠加", Data:{ ID: JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID} });
|
|
80164
|
+
break;
|
|
80165
|
+
}
|
|
80166
|
+
}
|
|
80167
|
+
}
|
|
80168
|
+
}
|
|
80169
|
+
|
|
80170
|
+
return aryMenu;
|
|
80171
|
+
}
|
|
80172
|
+
|
|
80173
|
+
this.PopuRightMenuV2=function(data,e)
|
|
80174
|
+
{
|
|
80175
|
+
if (!this.JSPopMenu) return;
|
|
80176
|
+
var x=data.X, y=data.Y;
|
|
80177
|
+
var frameID=data.FrameID;
|
|
80178
|
+
var menuData={ Menu:this.GetRightMenuData(frameID), Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
|
|
80179
|
+
menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
|
|
80180
|
+
|
|
80181
|
+
this.PopuMenuByRClick(menuData, x, y);
|
|
80182
|
+
}
|
|
80183
|
+
|
|
79498
80184
|
this.OnWheel=function(e)
|
|
79499
80185
|
{
|
|
79500
80186
|
JSConsole.Chart.Log('[MinuteChartContainer::OnWheel]',e);
|
|
@@ -80599,15 +81285,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
80599
81285
|
this.ResetDayOffset();
|
|
80600
81286
|
}
|
|
80601
81287
|
|
|
80602
|
-
|
|
80603
|
-
{
|
|
80604
|
-
this.ChartDrawPicture=[];
|
|
80605
|
-
}
|
|
80606
|
-
else
|
|
80607
|
-
{
|
|
80608
|
-
this.ReloadChartDrawPicture();
|
|
80609
|
-
}
|
|
80610
|
-
|
|
81288
|
+
this.ReloadChartDrawPicture();
|
|
80611
81289
|
this.ResetDataStatus();
|
|
80612
81290
|
this.ClearIndexPaint(); //清空指标
|
|
80613
81291
|
this.Frame.ClearYCoordinateMaxMin();
|
|
@@ -81129,6 +81807,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
81129
81807
|
this.TitlePaint[0].IsShowDate=true;
|
|
81130
81808
|
this.UpdateDataOffset();
|
|
81131
81809
|
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
81810
|
+
this.CreateChartDrawPictureByStorage(); //创建画图工具
|
|
81132
81811
|
|
|
81133
81812
|
//执行脚本
|
|
81134
81813
|
if (this.Frame.SubFrame.length>2)
|
|
@@ -81427,7 +82106,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
81427
82106
|
this.UpdateLatestMinuteDataV2(minuteData);
|
|
81428
82107
|
this.UpdateHistoryMinuteUI(updateTime);
|
|
81429
82108
|
this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"} );
|
|
81430
|
-
this.RequestOverlayMinuteData();
|
|
82109
|
+
this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
|
|
81431
82110
|
this.BindAllOverlayIndexData(this.SourceData);
|
|
81432
82111
|
this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
|
|
81433
82112
|
this.AutoUpdate();
|
|
@@ -82847,7 +83526,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
82847
83526
|
this.ReloadChartDrawPicture=function()
|
|
82848
83527
|
{
|
|
82849
83528
|
this.ChartDrawPicture=[];
|
|
82850
|
-
this.
|
|
83529
|
+
if (this.SelectChartDrawPicture) this.SelectChartDrawPicture.IsSelected=false;
|
|
83530
|
+
this.SelectChartDrawPicture=null;
|
|
83531
|
+
this.CurrentChartDrawPicture=null;
|
|
83532
|
+
this.MoveOnChartDrawPicture=null;
|
|
83533
|
+
|
|
82851
83534
|
if (this.ChartDrawStorage)
|
|
82852
83535
|
{
|
|
82853
83536
|
this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData( { Symbol:this.Symbol, Period:888888888 } );
|
|
@@ -82858,7 +83541,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
82858
83541
|
{
|
|
82859
83542
|
if (!this.ChartDrawStorageCache || this.ChartDrawStorageCache.length<=0) return;
|
|
82860
83543
|
|
|
82861
|
-
|
|
83544
|
+
var self=this;
|
|
83545
|
+
for(var i=0; i<this.ChartDrawStorageCache.length; ++i)
|
|
82862
83546
|
{
|
|
82863
83547
|
var item=this.ChartDrawStorageCache[i];
|
|
82864
83548
|
if (item.FrameID<0 || !this.Frame.SubFrame || this.Frame.SubFrame.length<item.FrameID) continue;
|
|
@@ -82869,8 +83553,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
82869
83553
|
drawPicture.Canvas=this.Canvas;
|
|
82870
83554
|
drawPicture.Status=10;
|
|
82871
83555
|
drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame; //绑定框架坐标
|
|
83556
|
+
if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
|
|
83557
|
+
drawPicture.ResetXValue();
|
|
82872
83558
|
drawPicture.UpdateXValue();
|
|
82873
83559
|
drawPicture.ValueToPoint();
|
|
83560
|
+
drawPicture.GetActiveDrawPicture=()=>{ return this.GetActiveDrawPicture(); }
|
|
82874
83561
|
|
|
82875
83562
|
if (drawPicture.ClassName==='ChartDrawPictureText') drawPicture.IsInitialized=true;
|
|
82876
83563
|
|
|
@@ -115620,7 +116307,7 @@ function ScriptIndex(name,script,args,option)
|
|
|
115620
116307
|
if (varItem.Background) chartText.TextBG=varItem.Background;
|
|
115621
116308
|
|
|
115622
116309
|
//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
115623
|
-
|
|
116310
|
+
this.SetChartIndexName(chartText);
|
|
115624
116311
|
hqChart.ChartPaint.push(chartText);
|
|
115625
116312
|
}
|
|
115626
116313
|
|
|
@@ -116284,6 +116971,7 @@ function ScriptIndex(name,script,args,option)
|
|
|
116284
116971
|
|
|
116285
116972
|
//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
116286
116973
|
|
|
116974
|
+
this.SetChartIndexName(chartText);
|
|
116287
116975
|
hqChart.ChartPaint.push(chartText);
|
|
116288
116976
|
}
|
|
116289
116977
|
|
|
@@ -117673,6 +118361,7 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
117673
118361
|
var titlePaint=hqChart.TitlePaint[titleIndex];
|
|
117674
118362
|
titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);
|
|
117675
118363
|
|
|
118364
|
+
this.SetChartIndexName(chart);
|
|
117676
118365
|
frame.ChartPaint.push(chart);
|
|
117677
118366
|
}
|
|
117678
118367
|
|
|
@@ -117891,7 +118580,7 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
117891
118580
|
chart.Text=varItem.Draw.DrawData.Text;
|
|
117892
118581
|
|
|
117893
118582
|
//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
117894
|
-
|
|
118583
|
+
this.SetChartIndexName(chart);
|
|
117895
118584
|
frame.ChartPaint.push(chart);
|
|
117896
118585
|
}
|
|
117897
118586
|
|
|
@@ -134938,6 +135627,272 @@ function ScrollBarBGChart()
|
|
|
134938
135627
|
}
|
|
134939
135628
|
|
|
134940
135629
|
|
|
135630
|
+
/*
|
|
135631
|
+
Copyright (c) 2018 jones
|
|
135632
|
+
|
|
135633
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
135634
|
+
|
|
135635
|
+
开源项目 https://github.com/jones2000/HQChart
|
|
135636
|
+
|
|
135637
|
+
jones_2000@163.com
|
|
135638
|
+
|
|
135639
|
+
内置菜单 使用table模式
|
|
135640
|
+
*/
|
|
135641
|
+
|
|
135642
|
+
function JSPopMenu()
|
|
135643
|
+
{
|
|
135644
|
+
this.Data={ Menu:[], Position:0 }; //{ Name:, SVG, ID, bChecked:, SubMenu:[] } Position 0=右键菜单 1=Tab弹菜单 2=下拉菜单
|
|
135645
|
+
|
|
135646
|
+
this.RootDOM=null;
|
|
135647
|
+
this.TBodyDOM=null;
|
|
135648
|
+
this.ArySubRootDOM=[];
|
|
135649
|
+
|
|
135650
|
+
this.ClickCallback=null; //点击回调
|
|
135651
|
+
this.CheckedClassName="UMyChart_MenuItem_Span_Checked iconfont icon-checked"; //选中图标
|
|
135652
|
+
this.RightArrowClassName="UMyChart_MenuItem_Span_Arrow iconfont icon-menu_arraw_right"; //右侧箭头
|
|
135653
|
+
|
|
135654
|
+
this.AryTDClassName=
|
|
135655
|
+
[
|
|
135656
|
+
"UMyChart_MenuItem_Td_Status", //图标
|
|
135657
|
+
"UMyChart_MenuItem_Td_Content", //文字
|
|
135658
|
+
"UMyChart_MenuItem_Td_Shortcut", //快捷方式
|
|
135659
|
+
"UMyChart_MenuItem_Td_Arrow" //箭头
|
|
135660
|
+
];
|
|
135661
|
+
|
|
135662
|
+
this.Inital=function()
|
|
135663
|
+
{
|
|
135664
|
+
window.addEventListener('mousedown', (e)=>{ this.OnWindowMouseDown(e)});
|
|
135665
|
+
}
|
|
135666
|
+
|
|
135667
|
+
//创建菜单
|
|
135668
|
+
this.CreatePopMenu=function(data)
|
|
135669
|
+
{
|
|
135670
|
+
this.Clear();
|
|
135671
|
+
|
|
135672
|
+
var root=document.createElement("div");
|
|
135673
|
+
root.className="UMyChart_PopMenu";
|
|
135674
|
+
|
|
135675
|
+
var table=document.createElement("table");
|
|
135676
|
+
table.className="UMyChart_PopMenu_Table";
|
|
135677
|
+
root.appendChild(table);
|
|
135678
|
+
|
|
135679
|
+
var tbody=document.createElement("tbody");
|
|
135680
|
+
tbody.className="UMyChart_PopMenu_Tbody";
|
|
135681
|
+
table.appendChild(tbody);
|
|
135682
|
+
|
|
135683
|
+
|
|
135684
|
+
var rootData={ Root:root, TBody:tbody, Table:table };
|
|
135685
|
+
for(var i=0;i<data.Menu.length;++i)
|
|
135686
|
+
{
|
|
135687
|
+
var item=data.Menu[i];
|
|
135688
|
+
var trDom=this.CreateMenu(rootData, item);
|
|
135689
|
+
tbody.appendChild(trDom);
|
|
135690
|
+
}
|
|
135691
|
+
|
|
135692
|
+
document.body.appendChild(root);
|
|
135693
|
+
this.RootDOM=root;
|
|
135694
|
+
this.TBodyDOM=tbody;
|
|
135695
|
+
|
|
135696
|
+
if (IFrameSplitOperator.IsNumber(data.Position)) this.Data.Position=data.Position;
|
|
135697
|
+
if (data.ClickCallback) this.ClickCallback=data.ClickCallback;
|
|
135698
|
+
|
|
135699
|
+
}
|
|
135700
|
+
|
|
135701
|
+
//清除菜单
|
|
135702
|
+
this.Clear=function()
|
|
135703
|
+
{
|
|
135704
|
+
this.Data.Menu=[];
|
|
135705
|
+
this.Data.Position=JSPopMenu.POSITION_ID.RIGHT_MENU_ID;
|
|
135706
|
+
this.ClickCallback=null;
|
|
135707
|
+
|
|
135708
|
+
if (!this.RootDOM) return;
|
|
135709
|
+
|
|
135710
|
+
document.body.removeChild(this.RootDOM);
|
|
135711
|
+
this.RootDOM=null;
|
|
135712
|
+
this.TBodyDOM=null;
|
|
135713
|
+
|
|
135714
|
+
for(var i=0;i<this.ArySubRootDOM.length;++i)
|
|
135715
|
+
{
|
|
135716
|
+
document.body.removeChild(this.ArySubRootDOM[i]);
|
|
135717
|
+
}
|
|
135718
|
+
this.ArySubRootDOM=[]
|
|
135719
|
+
}
|
|
135720
|
+
|
|
135721
|
+
this.CreateMenu=function(parentItem, item)
|
|
135722
|
+
{
|
|
135723
|
+
var trDom=document.createElement("tr");
|
|
135724
|
+
trDom.className='UMyChart_MenuItem_Tr';
|
|
135725
|
+
|
|
135726
|
+
var prtTdDom=null;
|
|
135727
|
+
for(var i=0;i<this.AryTDClassName.length;++i)
|
|
135728
|
+
{
|
|
135729
|
+
var tdDom=document.createElement("td");
|
|
135730
|
+
tdDom.className=this.AryTDClassName[i];
|
|
135731
|
+
|
|
135732
|
+
if (i==0) //图标
|
|
135733
|
+
{
|
|
135734
|
+
if (item.Checked)
|
|
135735
|
+
{
|
|
135736
|
+
var spanDom=document.createElement("span");
|
|
135737
|
+
spanDom.className=this.CheckedClassName;
|
|
135738
|
+
tdDom.appendChild(spanDom);
|
|
135739
|
+
}
|
|
135740
|
+
}
|
|
135741
|
+
else if (i==1) //内容
|
|
135742
|
+
{
|
|
135743
|
+
tdDom.innerText=item.Name;
|
|
135744
|
+
}
|
|
135745
|
+
else if (i==2) //快捷方式
|
|
135746
|
+
{
|
|
135747
|
+
|
|
135748
|
+
}
|
|
135749
|
+
else if (i==3) //箭头
|
|
135750
|
+
{
|
|
135751
|
+
if (IFrameSplitOperator.IsNonEmptyArray(item.SubMenu))
|
|
135752
|
+
{
|
|
135753
|
+
var spanDom=document.createElement("span");
|
|
135754
|
+
spanDom.className=this.RightArrowClassName;
|
|
135755
|
+
tdDom.appendChild(spanDom);
|
|
135756
|
+
}
|
|
135757
|
+
}
|
|
135758
|
+
|
|
135759
|
+
trDom.appendChild(tdDom);
|
|
135760
|
+
}
|
|
135761
|
+
|
|
135762
|
+
if (IFrameSplitOperator.IsNonEmptyArray(item.SubMenu)) //子菜单
|
|
135763
|
+
{
|
|
135764
|
+
var subRoot=document.createElement("div");
|
|
135765
|
+
subRoot.className="UMyChart_PopSubMenu";
|
|
135766
|
+
|
|
135767
|
+
var subTable=document.createElement("table");
|
|
135768
|
+
subTable.className="UMyChart_PopMenu_Table";
|
|
135769
|
+
subRoot.appendChild(subTable);
|
|
135770
|
+
|
|
135771
|
+
var subTbody=document.createElement("tbody");
|
|
135772
|
+
subTbody.className="UMyChart_PopMenu_TBody";
|
|
135773
|
+
subTable.appendChild(subTbody);
|
|
135774
|
+
|
|
135775
|
+
var subRootData={ Root:subRoot, TBody:subTbody, Table:subTable };
|
|
135776
|
+
var preTrDom=null;
|
|
135777
|
+
for(var i=0;i<item.SubMenu.length;++i)
|
|
135778
|
+
{
|
|
135779
|
+
var subItem=item.SubMenu[i];
|
|
135780
|
+
if (subItem.Name==JSPopMenu.SEPARATOR_LINE_NAME)
|
|
135781
|
+
{
|
|
135782
|
+
if (preTrDom) preTrDom.classList.add("border");
|
|
135783
|
+
continue;
|
|
135784
|
+
}
|
|
135785
|
+
|
|
135786
|
+
var subTrDom=this.CreateMenu(subRootData, subItem);
|
|
135787
|
+
preTrDom=subTrDom;
|
|
135788
|
+
subTbody.appendChild(subTrDom);
|
|
135789
|
+
}
|
|
135790
|
+
|
|
135791
|
+
trDom.onmouseover=(e)=>{ this.OnMouseOver(e, parentItem, trDom, subRoot); }
|
|
135792
|
+
document.body.appendChild(subRoot);
|
|
135793
|
+
this.ArySubRootDOM.push(subRoot);
|
|
135794
|
+
}
|
|
135795
|
+
else
|
|
135796
|
+
{
|
|
135797
|
+
trDom.onmousedown=(e)=> { this.OnClickMenu(e, item, false); }; //菜单点击
|
|
135798
|
+
trDom.onmouseover=(e)=>{ this.OnMouseOver(e, parentItem); }
|
|
135799
|
+
}
|
|
135800
|
+
|
|
135801
|
+
return trDom;
|
|
135802
|
+
}
|
|
135803
|
+
|
|
135804
|
+
//弹tab菜单
|
|
135805
|
+
this.PopupMenuByTab=function(rtTab)
|
|
135806
|
+
{
|
|
135807
|
+
if (!this.RootDOM) return;
|
|
135808
|
+
if (!rtTab) return;
|
|
135809
|
+
|
|
135810
|
+
var xLeft=rtTab.Left;
|
|
135811
|
+
var yTop=rtTab.Top-this.RootDOM.offsetHeight;
|
|
135812
|
+
|
|
135813
|
+
this.RootDOM.style.visibility='visible';
|
|
135814
|
+
this.RootDOM.style.top = yTop + "px";
|
|
135815
|
+
this.RootDOM.style.left = xLeft + "px";
|
|
135816
|
+
}
|
|
135817
|
+
|
|
135818
|
+
//弹右键菜单
|
|
135819
|
+
this.PopupMenuByRight=function(x,y)
|
|
135820
|
+
{
|
|
135821
|
+
if (!this.RootDOM) return;
|
|
135822
|
+
if (!IFrameSplitOperator.IsNumber(x) || !IFrameSplitOperator.IsNumber(y)) return;
|
|
135823
|
+
|
|
135824
|
+
this.RootDOM.style.visibility='visible';
|
|
135825
|
+
this.RootDOM.style.top = y + "px";
|
|
135826
|
+
this.RootDOM.style.left = x + "px";
|
|
135827
|
+
}
|
|
135828
|
+
|
|
135829
|
+
this.OnClickMenu=function(e, item, bSubMenu)
|
|
135830
|
+
{
|
|
135831
|
+
console.log("[JSPopMenu::OnClickMenu] e=, item=, bSubMenu", e, item, bSubMenu);
|
|
135832
|
+
if (!this.ClickCallback) return;
|
|
135833
|
+
|
|
135834
|
+
this.ClickCallback(item);
|
|
135835
|
+
}
|
|
135836
|
+
|
|
135837
|
+
this.OnMouseOver=function(e, parentItem, trDom, subMenu)
|
|
135838
|
+
{
|
|
135839
|
+
if (parentItem && parentItem.PopMenu && parentItem.PopMenu!=subMenu)
|
|
135840
|
+
{
|
|
135841
|
+
parentItem.PopMenu.style.visibility="hidden";
|
|
135842
|
+
parentItem.PopMenu=null;
|
|
135843
|
+
parentItem.PopRow=null;
|
|
135844
|
+
}
|
|
135845
|
+
|
|
135846
|
+
if (subMenu)
|
|
135847
|
+
{
|
|
135848
|
+
if (subMenu.style.visibility=="visible")
|
|
135849
|
+
{
|
|
135850
|
+
|
|
135851
|
+
}
|
|
135852
|
+
else
|
|
135853
|
+
{
|
|
135854
|
+
var rtParent=trDom.getBoundingClientRect();
|
|
135855
|
+
subMenu.style.left=`${rtParent.right}px`;
|
|
135856
|
+
subMenu.style.top=`${rtParent.top}px`;
|
|
135857
|
+
|
|
135858
|
+
/*
|
|
135859
|
+
if (this.Data.Position==JSPopMenu.POSITION_ID.TAB_MENU_ID)
|
|
135860
|
+
{
|
|
135861
|
+
var yButton=parentItem.Root.getBoundingClientRect().bottom;
|
|
135862
|
+
var ySubButton=subMenu.getBoundingClientRect().bottom;
|
|
135863
|
+
if (yButton<ySubButton)
|
|
135864
|
+
{
|
|
135865
|
+
var yOffset=yButton-ySubButton;
|
|
135866
|
+
subMenu.style.top=`${yOffset}px`;
|
|
135867
|
+
}
|
|
135868
|
+
}
|
|
135869
|
+
*/
|
|
135870
|
+
|
|
135871
|
+
subMenu.style.visibility="visible";
|
|
135872
|
+
}
|
|
135873
|
+
|
|
135874
|
+
parentItem.PopMenu=subMenu;
|
|
135875
|
+
parentItem.PopRow=trDom;
|
|
135876
|
+
}
|
|
135877
|
+
}
|
|
135878
|
+
|
|
135879
|
+
|
|
135880
|
+
|
|
135881
|
+
this.OnWindowMouseDown=function(e)
|
|
135882
|
+
{
|
|
135883
|
+
if (!this.RootDOM) return;
|
|
135884
|
+
|
|
135885
|
+
console.log("[JSPopMenu::OnWindowMouseDown] e=", e);
|
|
135886
|
+
|
|
135887
|
+
this.Clear();
|
|
135888
|
+
}
|
|
135889
|
+
}
|
|
135890
|
+
|
|
135891
|
+
|
|
135892
|
+
JSPopMenu.POSITION_ID={ };
|
|
135893
|
+
JSPopMenu.POSITION_ID.RIGHT_MENU_ID=0;
|
|
135894
|
+
JSPopMenu.POSITION_ID.TAB_MENU_ID=1;
|
|
135895
|
+
JSPopMenu.SEPARATOR_LINE_NAME="MENU_SEPARATOR"; //分割线
|
|
134941
135896
|
///////////////////////////////////////////////////////////////////////////////////
|
|
134942
135897
|
// 工作线程计算指标示例
|
|
134943
135898
|
//
|
|
@@ -135059,7 +136014,7 @@ function HQChartScriptWorker()
|
|
|
135059
136014
|
|
|
135060
136015
|
|
|
135061
136016
|
|
|
135062
|
-
var HQCHART_VERSION="1.1.
|
|
136017
|
+
var HQCHART_VERSION="1.1.13181";
|
|
135063
136018
|
|
|
135064
136019
|
function PrintHQChartVersion()
|
|
135065
136020
|
{
|
|
@@ -135196,5 +136151,7 @@ export default {
|
|
|
135196
136151
|
|
|
135197
136152
|
|
|
135198
136153
|
HQChartScriptWorker:HQChartScriptWorker, //计算工作线程
|
|
136154
|
+
|
|
136155
|
+
JSPopMenu:JSPopMenu, //弹出菜单
|
|
135199
136156
|
|
|
135200
136157
|
}
|