我正在开发 Kibana (7.5.2) 的自定义插件。该插件的类型为“app”。我希望能够将参数传递给这个插件,以便从 Elasticsearch 预加载一些数据。即,我需要为用户提供一些包含参数的特定 URL,插件将使用这些参数仅显示数据的相关部分。
我的问题是我无法找到足够的文档,我不知道正确的方法应该是什么。我将尝试总结到目前为止我所知道/所做的事情:
我已经阅读了关于插件开发的官方资源
我知道_g和_a URL 参数用于在 Kibana 应用程序中传递状态。但是,a)我不确定这是否是我的情况的正确方法,并且 b)我也找不到任何关于我的插件应该如何从这些参数访问数据的信息。
我检查了其他已知插件的来源,但同样未能找到任何线索。
我可以在我的插件( )
injectUiAppVars
的方法中注入一些配置值,并在我的应用程序()中检索这些值:init
index.js
main.js
index.js:
export default function (kibana) {
return new kibana.Plugin({
require: ['elasticsearch'],
name: ...,
uiExports: {
...
},
...
init(server, options) { // eslint-disable-line no-unused-vars
server.injectUiAppVars('logviewer', async () => {
var kibana_vars = await server.getInjectedUiAppVars('kibana');
var aggregated_vars = { ...kibana_vars, ...{ mycustomparameter: "some value" } }
return aggregated_vars
});
...
}
});
}
main.js
import chrome from 'ui/chrome';
. . .
const mycustomparameter = chrome.getInjected('mycustomparameter');
假设我设法从 URL 获取参数,这将允许我将它们传递给我的应用程序(通过mycustomparameter
),但同样,我不确定这种方法是否正确。
- 我试图通过 Elastic 论坛寻求帮助,但尚未收到任何答复。
我的问题 1. 有没有关于这个特定主题的信息来源?我知道插件 API 经常更改这一事实,因此我不希望找到大量文档。也许是一个很好的例子?
- 我是否完全偏离了我试图实现它的方式?
感谢您阅读本文,任何帮助将不胜感激!