diff --git a/libs/shared/lib/data-access/api/eventBus.tsx b/libs/shared/lib/data-access/api/eventBus.tsx index acc34c2a84a45e20e8746bda77268700736eff4f..219e3984f1be0fd0f7e938992653e1c60bbc6fe6 100644 --- a/libs/shared/lib/data-access/api/eventBus.tsx +++ b/libs/shared/lib/data-access/api/eventBus.tsx @@ -19,7 +19,7 @@ import Broker from '@graphpolaris/shared/lib/data-access/socket/broker'; import { addInfo } from '@graphpolaris/shared/lib/data-access/store/configSlice'; import { GraphQueryResultFromBackendPayload, queryingBackend } from '@graphpolaris/shared/lib/data-access/store/graphQueryResultSlice'; import { allMLTypes, LinkPredictionInstance, setMLResult } from '@graphpolaris/shared/lib/data-access/store/mlSlice'; -import { setQuerybuilderNodes } from '@graphpolaris/shared/lib/data-access/store/querybuilderSlice'; +import { QueryBuilderText, setQueryText, setQuerybuilderNodes } from '@graphpolaris/shared/lib/data-access/store/querybuilderSlice'; import { SchemaFromBackend } from '@graphpolaris/shared/lib/schema'; import { useEffect } from 'react'; import { SaveStateI, TestDatabaseConnectionResponse, wsGetState, wsGetStates, wsUpdateState, wsSelectState, nilUUID } from './wsState'; @@ -96,6 +96,12 @@ export const EventBus = (props: { onRunQuery: Function; onAuthorized: Function } if (response && response.status === 'success') dispatch(testedSaveState(response.saveStateID)); }, 'tested_connection'); + Broker.instance().subscribe((response: QueryBuilderText) => { + if (response && response.result) { + dispatch(setQueryText(response)); + } + }, 'query_translation_result'); + login(); // Setup cleanup @@ -109,6 +115,7 @@ export const EventBus = (props: { onRunQuery: Function; onAuthorized: Function } Broker.instance().unSubscribeAll('delete_save_state'); Broker.instance().unSubscribeAll('tested_connection'); Broker.instance().unSubscribeAll('save_state_selected'); + Broker.instance().unSubscribeAll('query_translation_result'); // Broker.instance().unSubscribeAll('query_builder_state'); allMLTypes.forEach((mlType) => { Broker.instance().unSubscribeAll(mlType); diff --git a/libs/shared/lib/data-access/store/querybuilderSlice.ts b/libs/shared/lib/data-access/store/querybuilderSlice.ts index 03cce603dee1f8839a17ba7062268dfec40d47e3..d9a3c7f1c730d630ec8a91a9149ac76f66fa68c6 100644 --- a/libs/shared/lib/data-access/store/querybuilderSlice.ts +++ b/libs/shared/lib/data-access/store/querybuilderSlice.ts @@ -1,3 +1,4 @@ +import { QueryBuilder } from './../../querybuilder/panel/querybuilder'; import { createSlice, PayloadAction } from '@reduxjs/toolkit'; import type { RootState } from './store'; import Graph, { MultiGraph } from 'graphology'; @@ -14,10 +15,16 @@ export type QueryBuilderSettings = { autocompleteRelation: boolean; }; +export type QueryBuilderText = { + queryId: string; + result: string; +}; + export type QueryBuilderState = { graph: QueryMultiGraph; ignoreReactivity: boolean; settings: QueryBuilderSettings; + queryTranslation: QueryBuilderText; }; // Define the initial state using that type @@ -30,6 +37,10 @@ export const initialState: QueryBuilderState = { layout: 'manual', autocompleteRelation: true, }, + queryTranslation: { + queryId: '', + result: '', + }, // schemaLayout: 'Graphology_noverlap', }; @@ -55,6 +66,9 @@ export const querybuilderSlice = createSlice({ setQuerybuilderSettings: (state, action: PayloadAction<QueryBuilderSettings>) => { state.settings = action.payload; }, + setQueryText: (state, action: PayloadAction<QueryBuilderText>) => { + state.queryTranslation = action.payload; + }, }, }); @@ -112,4 +126,4 @@ export const selectQuerybuilderHash = (state: RootState): string => { // state.schema.schemaLayout; export default querybuilderSlice.reducer; -export const { setQuerybuilderGraph, clearQB, setQuerybuilderSettings, setQuerybuilderNodes } = querybuilderSlice.actions; +export const { setQuerybuilderGraph, clearQB, setQuerybuilderSettings, setQuerybuilderNodes, setQueryText } = querybuilderSlice.actions;