HQChart使用教程47-如何自定义右键菜单,已停用

151 篇文章 33 订阅

此功能已停用

新的菜单详见

HQChart使用教程98-右键菜单2.0使用介绍

HQChart h5版本提供一个简陋的右键菜单, 主要是用来测试用的。 如果需要替换成自己的菜单,可以通过事件回调来截获右键菜单事件,然后弹出自己的菜单

步骤

1. 注册事件

通过AddEventCallback, 我们可以注册一个事件回调,

chart.AddEventCallback({event:JSCHART_EVENT_ID.ON_CONTEXT_MENU, callback:testcallback});

2. 回调函数

在回调里面实现自定义菜单

function testcallback(event,data,obj)
{
     console.log('[testcallback]', event, data, obj);
     //弹出你自己的菜单把
 }

event:注册的事件信息
data: 点击的信息 { Event:事件信息, X:X坐标 ,Y:Y坐标, FrameID:点击的指标窗口索引 }
obj:chart图形内部实例

注意!!! K线训练没有右键菜单,如果需要添加右键菜单只能通过注册上面的事件,自己做右键菜单

3.关闭HQChart右键菜单

var option=
{
     Type:'历史K线图',
     .....
     IsShowRightMenu:false,          //右键菜单
     ....
}

4. 右键操作

具体右键功能 可以参见 KLineRightMenu类(在umychart.js) 里面有获取状态和设置的方法

只修改显示菜单项

如果只是想修改菜单项,可以直接修改 this.Chart.JSChartContainer.RightMenu.DoModal

this.Create=function()  //创建图形
{
    ............................
    this.Chart.SetOption(this.Option);  //设置K线配置
	......................
	//菜单显示函数替换成自己的函数
    this.Chart.JSChartContainer.RightMenu.DoModal=(event)=> { this.RightMenu_DoModal(event); } 
    ......................
}

this.RightMenu_DoModal=function(event)
{
    var chart=event.data.Chart;
    var rightMenu=chart.RightMenu; //内置菜单实例, 如果要调用内置菜单方法可以用它(KLineRightMenu)
    //鼠标坐标
    var x = event.offsetX;
    var y = event.offsetY;

    //显示菜单
    var dataList=
    [
        {
            text: "分析周期",
            children: rightMenu.GetPeriod(chart)
        }, 
        {
            text: "复权处理",
            children: rightMenu.GetRight(chart)
        }, 
        {
            text: "指标切换",
            children: rightMenu.GetIndex(chart)
        }
    ];

    var identify=event.data.FrameID;
    //弹出菜单
    rightMenu.Show({
        windowIndex :identify,
        x:x+chart.UIElement.offsetLeft,
        y:y+chart.UIElement.offsetTop,
        position:chart.Frame.Position,
        data:dataList
    })

    //点击隐藏菜单
    $(document).click(function () {
        rightMenu.Hide();
    });
}
     

修改2级菜单

修改周期菜单列表

//右键周期菜单
this.GetPeriodMenu=function(chart)
{
    //Value: 周期ID, 
    var data=
    [
        {
            text: "日线", Value:0,
            click: function () { chart.ChangePeriod(0); }
        }, 
        {
            text: "周线",Value:1,
            click: function () { chart.ChangePeriod(1); }
        }, 
        {
            text: "1分",Value:4,
            click: function () { chart.ChangePeriod(4); }
        },
        {
            text: "5分",Value:5,
            click: function () { chart.ChangePeriod(5); }
        }
    ];

    //当前选中的周期
    for(var i in data)
    {
        var item=data[i];
        if (item.Value==chart.Period)
        {
            item.selected=true;
            break;
        }
    }

    return data; 	//返回菜单列表
}

this.RightMenu_DoModal=function(event)
{
    var chart=event.data.Chart;
    var rightMenu=chart.RightMenu;
    var x = event.offsetX;
    var y = event.offsetY;

    var dataList=
    [
        {
            text: "分析周期",
            children: this.GetPeriodMenu(chart)	//使用新的周期菜单
        }, 
        {
            text: "复权处理",
            children: rightMenu.GetRight(chart)
        }, 
        {
            text: "指标切换",
            children: rightMenu.GetIndex(chart)
        }
    ];

    var identify=event.data.FrameID;
    rightMenu.Show({
        windowIndex :identify,
        x:x+chart.UIElement.offsetLeft,
        y:y+chart.UIElement.offsetTop,
        position:chart.Frame.Position,
        data:dataList
    })

    $(document).click(function () {
        rightMenu.Hide();
    });
}

修改指标列表

//指标
this.GetIndex=function (chart) 
 {
     return [{
         text: "均线",
         click: function (windowIndex) {
             chart.ChangeIndex(windowIndex, '均线')
         }
     }, {
         text: "BOLL",
         click: function (windowIndex) {
             chart.ChangeIndex(windowIndex, 'BOLL')
         },
         isBorder:true
     }, {
         text: "MACD",
         click: function (windowIndex) {
             chart.ChangeIndex(windowIndex, 'MACD')
         }
     }];
 }

this.RightMenu_DoModal=function(event)
{
  .........................
  {
            text: "指标切换",
            children: this.GetIndex(chart)
  }
..............
}

HQChart代码地址

地址:github.com/jones2000/HQChart

交流QQ群

见git项目首页

个人爱好(模型/摄影)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
下面是使用 Elasticsearch 中的 IK 分词器进行词和自定义词库的步骤: 1. 安装 Elasticsearch 和 IK 分词器插件。 2. 创建自定义词库文件,格式如下: ``` # 单个词语 词语1 词语2 ... # 带有词性的词语 词语1,词性1 词语2,词性2 ... ``` 注:词性可以不写,用逗号隔开。 3. 将自定义词库文件放置在 Elasticsearch 安装目录下的 `plugins/ik/config/` 目录下。 4. 修改 IK 分词器配置文件,指定用词文件和自定义词库文件,示例如下: ``` { "index": { "analysis": { "analyzer": { "my_analyzer": { "type": "custom", "tokenizer": "ik_max_word", "filter": [ "my_stopwords", "my_synonyms" ] } }, "filter": { "my_stopwords": { "type": "stop", "stopwords_path": "stopwords.txt" }, "my_synonyms": { "type": "synonym", "synonyms_path": "synonyms.txt" } } } } } ``` 注:上面示例中使用用词文件和同义词文件,可以根据需要自行配置。 5. 创建索引并指定使用定义分词器。 ``` PUT /my_index { "settings": { "analysis": { "analyzer": { "my_analyzer": { "type": "custom", "tokenizer": "ik_max_word", "filter": [ "my_stopwords", "my_synonyms" ] } }, "filter": { "my_stopwords": { "type": "stop", "stopwords_path": "stopwords.txt" }, "my_synonyms": { "type": "synonym", "synonyms_path": "synonyms.txt" } } } }, "mappings": { "properties": { "my_field": { "type": "text", "analyzer": "my_analyzer" } } } } ``` 6. 测试分词效果。 可以使用以下命令测试分词效果: ``` GET /my_index/_analyze { "analyzer": "my_analyzer", "text": "自定义分词器测试" } ``` 上述命令会返回分词结果,可以根据需要调整自定义词库和用词文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQChart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值