Skip to content

Commit

Permalink
feat: take index pattern and user input to t2viz from discover (#349)
Browse files Browse the repository at this point in the history
* feat: take index pattern and user input to t2viz from discover

Signed-off-by: Yulong Ruan <[email protected]>

* import data set type INDEX_PATTERN from data plugin

Signed-off-by: Yulong Ruan <[email protected]>

* chore: update CHANGELOG

Signed-off-by: Yulong Ruan <[email protected]>

---------

Signed-off-by: Yulong Ruan <[email protected]>
(cherry picked from commit 98bf315)
Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

# Conflicts:
#	CHANGELOG.md
  • Loading branch information
github-actions[bot] committed Oct 17, 2024
1 parent 51bd914 commit b3d5213
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 6 deletions.
13 changes: 10 additions & 3 deletions public/components/visualization/text2viz.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { v4 as uuidv4 } from 'uuid';

import { useCallback } from 'react';
import { useObservable } from 'react-use';
import { useParams } from 'react-router-dom';
import { useLocation, useParams } from 'react-router-dom';
import { SourceSelector } from './source_selector';
import type { IndexPattern } from '../../../../../src/plugins/data/public';
import chatIcon from '../../assets/chat.svg';
Expand Down Expand Up @@ -52,9 +52,16 @@ import { HeaderVariant } from '../../../../../src/core/public';
import { TEXT2VEGA_INPUT_SIZE_LIMIT } from '../../../common/constants/llm';
import { FeedbackThumbs } from '../feedback_thumbs';

export const INDEX_PATTERN_URL_SEARCH_KEY = 'indexPatternId';
export const ASSISTANT_INPUT_URL_SEARCH_KEY = 'assistantInput';

export const Text2Viz = () => {
const { savedObjectId } = useParams<{ savedObjectId?: string }>();
const [selectedSource, setSelectedSource] = useState('');
const { search } = useLocation();
const searchParams = useMemo(() => new URLSearchParams(search), [search]);
const [selectedSource, setSelectedSource] = useState(
searchParams.get(INDEX_PATTERN_URL_SEARCH_KEY) ?? ''
);
const [savedObjectLoading, setSavedObjectLoading] = useState(false);
const [submitting, setSubmitting] = useState(false);
const {
Expand Down Expand Up @@ -89,7 +96,7 @@ export const Text2Viz = () => {

const useUpdatedUX = uiSettings.get('home:useNewHomePage');

const [input, setInput] = useState('');
const [input, setInput] = useState(searchParams.get(ASSISTANT_INPUT_URL_SEARCH_KEY) ?? '');
const [editorInput, setEditorInput] = useState('');
const text2vegaRef = useRef(new Text2Vega(http, data.search, savedObjects));

Expand Down
27 changes: 24 additions & 3 deletions public/plugin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ import {
} from './vis_nlq/saved_object_loader';
import { NLQVisualizationEmbeddableFactory } from './components/visualization/embeddable/nlq_vis_embeddable_factory';
import { NLQ_VISUALIZATION_EMBEDDABLE_TYPE } from './components/visualization/embeddable/nlq_vis_embeddable';
import {
ASSISTANT_INPUT_URL_SEARCH_KEY,
INDEX_PATTERN_URL_SEARCH_KEY,
} from './components/visualization/text2viz';
import { DEFAULT_DATA } from '../../../src/plugins/data/common';

export const [getCoreStart, setCoreStart] = createGetterSetter<CoreStart>('CoreStart');

Expand Down Expand Up @@ -337,7 +342,7 @@ export class AssistantPlugin
// T2Viz is only compatible with data sources that have certain agents configured
isCompatible: async (context) => {
// t2viz only supports selecting index pattern at the moment
if (context.datasetType === 'INDEX_PATTERN' && context.datasetId) {
if (context.datasetType === DEFAULT_DATA.SET_TYPES.INDEX_PATTERN && context.datasetId) {
const res = await assistantServiceStart.client.agentConfigExists(
[
TEXT2VEGA_RULE_BASED_AGENT_CONFIG_ID,
Expand All @@ -352,8 +357,24 @@ export class AssistantPlugin
}
return false;
},
execute: async () => {
core.application.navigateToApp(TEXT2VIZ_APP_ID);
execute: async (context) => {
const url = new URL(core.application.getUrlForApp(TEXT2VIZ_APP_ID, { absolute: true }));
if (context.datasetId && context.datasetType === DEFAULT_DATA.SET_TYPES.INDEX_PATTERN) {
url.searchParams.set(INDEX_PATTERN_URL_SEARCH_KEY, context.datasetId);
}
/**
* TODO: the current implementation of getting query assistant input needs to be refactored
* once query assistant is moved to dashboard-assistant repo. Currently, there is no better
* way to get the input value as the query assistant is currently implemented in OSD core.
*/
const queryAssistInputEle = document.getElementsByClassName('queryAssist__input')[0];
if (queryAssistInputEle instanceof HTMLInputElement) {
const input = queryAssistInputEle.value;
if (input) {
url.searchParams.set(ASSISTANT_INPUT_URL_SEARCH_KEY, input);
}
}
core.application.navigateToUrl(url.toString());
},
});
const savedVisNLQLoader = createVisNLQSavedObjectLoader({
Expand Down

0 comments on commit b3d5213

Please sign in to comment.