Работа с параметрами URL в кастомном плагине Kibana
Я работаю над настраиваемым плагином для Kibana (7.5.2). Плагин имеет тип "приложение". Я хотел бы иметь возможность передавать параметры этому плагину, чтобы предварительно загрузить некоторые данные из Elasticsearch. То есть мне нужно предоставить пользователям некоторые конкретные URL-адреса, содержащие параметры, которые будут использоваться плагином для отображения только соответствующей части данных.
Моя проблема в том, что мне не удалось найти достаточную документацию по этому поводу и я не знаю, каким должен быть правильный подход. Я попытаюсь обобщить то, что я знаю / сделал на данный момент:
Я прочитал официальные ресурсы по разработке плагинов
Мне известно о том, что параметры URL _g и _a используются для передачи состояния в приложениях Kibana. Однако а) я не уверен, что это правильный подход в моем случае и б) мне также не удалось найти никакой информации о том, как мой плагин должен получать доступ к данным из этих параметров.
Я проверил источники других известных плагинов, но опять же не смог найти никаких подсказок.
Я могу ввести некоторые значения конфигурации, используя
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 плагинов часто меняется, поэтому не ожидаю найти обширную документацию. Может, хороший пример?
- Я полностью сбился с курса в том, как я пытаюсь этого достичь?
Спасибо, что прочитали это, мы будем благодарны за любую помощь!