HQChart使用教程98-右键菜单2.0使用介绍
- 内置右键菜单
- 启用右键菜单
- 定制右键菜单内容
- 1. 注册内置右键菜单创建回调事件
- 2. 修改内置菜单的显示内容
- 回调函数格式
- 菜单数据结构
- 示例
- 3. 注册菜单项点击事件回调
- 右键事件
- 完整示例
- HQChart代码地址
内置右键菜单
HQChart h5版本内置提供一个仿通达信的右键菜单。效果如下图
内置菜单源码
https://github.com/jones2000/HQChart/blob/master/webhqchart.demo/jscommon/umychart.popMenu.js
启用右键菜单
在SetOption 开启右键菜单
EnablePopMenuV2 启动内置菜单2.0版本,(内置菜单也可以用在其它如下拉菜单等地方)
IsShowRightMenu 是否显示右键菜单
this.Option=
{
Type:'历史K线图', //创建图形类型
..............
EnablePopMenuV2:true, //默认false
IsShowRightMenu:true
...................
}
定制右键菜单内容
1. 注册内置右键菜单创建回调事件
JSCHART_EVENT_ID.ON_CREATE_RIGHT_MENU
{
event:JSCHART_EVENT_ID.ON_CREATE_RIGHT_MENU,
callback:(event, data, obj)=>{ this.OnCreateRightMenu(event, data, obj); }
},
2. 修改内置菜单的显示内容
在创建右键菜单回调事件我们可以手动修改菜单显示的内容
回调函数格式
function(event, data, obj)
event 事件信息
data 菜单数据
回调数据格式:
data=
{
MenuData:菜单数据
FrameID:窗口索引 , 0开始
}
obj 插件实例
菜单数据结构
var aryMenu=
[
{
Name:"叠加品种", //菜单项
Data: //菜单项数据 菜单点击以后可以接收到这些数据
{
ID:菜单ID 菜单ID可以使用内置预定义好的,也可以自己定义,
Args:[参数数组]
},
Checked:是否选中打勾 (true|false)
SubMenu: //子菜单
[
]
},
//下面是一个简单的菜单 包含叠加品种(有子菜单)和区间选择这2个菜单选项
var aryMenu=
[
{
Name:"叠加品种",
SubMenu:
[
{ Name:"上证指数", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000001.sh", !aryOverlaySymbol.includes("000001.sh")]}, Checked:aryOverlaySymbol.includes("000001.sh") },
{ Name:"深证成指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399001.sz", !aryOverlaySymbol.includes("399001.sz")]}, Checked:aryOverlaySymbol.includes("399001.sz") },
{ Name:"中小板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399005.sz", !aryOverlaySymbol.includes("399005.sz")]}, Checked:aryOverlaySymbol.includes("399005.sz") },
{ Name:"创业板指", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["399006.sz", !aryOverlaySymbol.includes("399006.sz")]}, Checked:aryOverlaySymbol.includes("399006.sz") },
{ Name:"沪深300", Data:{ ID: JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID, Args:["000300.sh", !aryOverlaySymbol.includes("000300.sh")]}, Checked:aryOverlaySymbol.includes("000300.sh")},
]
},
{
Name:"区间选择",Data:{ ID: JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID, Args:[!this.EnableSelectRect]}, Checked:this.EnableSelectRect
},
】
示例
下面的例子就是在内置的菜单里面增加一项“自定义菜单项"菜单
this.OnCreateRightMenu=function(event, data, obj)
{
console.log("[KLineChart::OnCreateRightMenu] data=", data);
var item={ Name:"自定义菜单项", Data:{ ID:"CUSTOM_MENU_1_ID", Args:[1] } };
}
3. 注册菜单项点击事件回调
JSCHART_EVENT_ID.ON_MENU_COMMAND 所有菜单事件都会触发这个回调
{
event:JSCHART_EVENT_ID.ON_MENU_COMMAND,
callback:(event, data, obj)=>{ this.OnMenuCommand(event, data, obj); }
},
回调函数格式
function(event, data, obj)
data={ CommandID:菜单ID, Args:参数,SrcData:原始数据, PreventDefault:是否阻止默认事件 }
下面是一个简单的菜单事件处理
this.OnMenuCommand=function(event, data, obj)
{
console.log("[KLineChart::OnMenuCommand] data=", data);
if (data.CommandID=="CUSTOM_MENU_1_ID")
{
data.PreventDefault=true;
var text="外部自定义菜单按钮";
alert(text);
}
}
右键事件
如果不希望使用内置菜单,可以通过关闭内置右键菜单,然后注册右键事件直接在外部自己做
chart.AddEventCallback({event:JSCHART_EVENT_ID.ON_CONTEXT_MENU, callback:testcallback});
完整示例
完整示例可以参见 https://github.com/jones2000/HQChart/blob/master/webhqchart.demo/samples/kline_index_edit.html
HQChart代码地址
github.com/jones2000/HQChart