[kibana源码]增加菜单项

本文介绍了如何在Kibana系统中添加自定义菜单项以实现与其他系统的超链接。关键在于修改kibana.js文件,添加新菜单配置,并在Tab.js中调整href逻辑,避免不必要的参数附加,确保点击新菜单能正确跳转到指定URL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:
由于kibana与另外一个系统需要添加超链关系,因此需要在kibana系统设置菜单前面增加一个菜单项。

源码讲解:
kibana的系统菜单都是在kibana.js(src\plugins\kibana\public\kibana.js)中进行可配置的。

.setTabs([
  {
    id: 'discover',
    title: '检索'
  },
  {
    id: 'visualize',
    title: '可视化自助分析',
    activeIndicatorColor: function () {
      return (String(this.lastUrl).indexOf('/visualize/step/') === 0) ? 'white' : '#656a76';
    }
  },
  {
    id: 'dashboard',
    title: '监控仪表盘'
  },
  {
    id:'index.html',
    title:'xxxx',
    baseUrl:'http://www.thinkgreed.com/fsz-admin/'
  },
  {
    id: 'settings',
    title: '系统设置'
  }
])

因此只需要按照同样的格式增加项目即可。在我添加的title为xxxx的菜单中,指定了baseUrl,因为要进行跨域访问,如果不指定则会添加系统默认的baseUrl

到此处还没有结束,因为系统会通过baseUrl和id来组装url,同时也会增加一长串的参数,如:

http://www.thinkgreed.com/app/kibana#/visualize?_g=(refreshInterval%3A(display%3AOff%2Cpause%3A!f%2Cvalue%3A0)%2Ctime%3A(from%3Anow-15m%2Cmode%3Aquick%2Cto%3Anow))

因为添加的菜单只是要完成跳转到另外一个页面的目的,因为不想增加过多的参数。

如果需要完成这样的目的,就需要阅读Tab.js(src/ui/public/chrome/Tab.js)

href() {
    if (this.active) {
      return this.resetWhenActive ? this.rootUrl : null;
    }
    if ('index.html' == this.id){
      return this.rootUrl
    }
    return this.lastUrl || this.rootUrl;
  }

在chrom.html中可以看到,超链的获取主要是tab.href()来得到,因此需要看href()的逻辑。通过上下人可以看到this.lastUrl就是增加了很多参数的url而this.rootUrl则是简单的url,因此只需要增加简单的判断逻辑:

if ('index.html' == this.id){
      return this.rootUrl
    }

就可以达到增加个id为index.html的菜单,点击后跳转到其他页面(url:http://www.thinkgreed.com/fsz-admin/index.html

ps:同时可以参照chrome.html 和 kbn_chrome.js 两个文件进行理解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值