@@ -4,15 +4,16 @@ import classes from '../../styles/Querier.module.css';
4
4
import { Text } from '@mantine/core' ;
5
5
import { FilterQueryBuilder , QueryPills } from './FilterQueryBuilder' ;
6
6
import { AppliedSQLQuery } from './QueryEditor' ;
7
- import QueryCodeEditor , { defaultCustSQLQuery } from './QueryCodeEditor' ;
7
+ import QueryCodeEditor from './QueryCodeEditor' ;
8
8
import { useLogsStore , logsStoreReducers } from '../../providers/LogsProvider' ;
9
- import { useCallback , useEffect , useRef } from 'react' ;
9
+ import { useCallback , useEffect , useRef , useState } from 'react' ;
10
10
import { filterStoreReducers , noValueOperators , useFilterStore } from '../../providers/FilterProvider' ;
11
11
import { appStoreReducers , useAppStore } from '@/layouts/MainLayout/providers/AppProvider' ;
12
12
import { useStreamStore } from '../../providers/StreamProvider' ;
13
13
import SaveFilterModal from './SaveFilterModal' ;
14
14
import SavedFiltersModal from './SavedFiltersModal' ;
15
15
import _ from 'lodash' ;
16
+ import useParamsController from '@/pages/Stream/hooks/useParamsController' ;
16
17
17
18
const { setFields, parseQuery, storeAppliedQuery, resetFilters, toggleSubmitBtn, toggleSaveFiltersModal } =
18
19
filterStoreReducers ;
@@ -74,24 +75,37 @@ const QuerierModal = (props: {
74
75
onSqlSearchApply : ( query : string ) => void ;
75
76
onFiltersApply : ( ) => void ;
76
77
} ) => {
77
- const [ currentStream ] = useAppStore ( ( store ) => store . currentStream ) ;
78
- const [ { showQueryBuilder, viewMode } , setLogsStore ] = useLogsStore ( ( store ) => store . custQuerySearchState ) ;
79
- const [ streamInfo ] = useStreamStore ( ( store ) => store . info ) ;
80
- const [ timeRange ] = useAppStore ( ( store ) => store . timeRange ) ;
81
- const timePartitionColumn = _ . get ( streamInfo , 'time_partition' , 'p_timestamp' ) ;
78
+ const [ { showQueryBuilder, viewMode, custSearchQuery, activeMode } , setLogsStore ] = useLogsStore (
79
+ ( store ) => store . custQuerySearchState ,
80
+ ) ;
81
+ const [ parsedFilterQuery , setParsedFilterQuery ] = useState ( '' ) ;
82
+
83
+ const getParsedFilterQuery = useCallback (
84
+ ( query : string ) => {
85
+ setParsedFilterQuery ( query ) ;
86
+ } ,
87
+ [ parsedFilterQuery ] ,
88
+ ) ;
82
89
const onClose = useCallback ( ( ) => {
83
90
setLogsStore ( ( store ) => toggleQueryBuilder ( store , false ) ) ;
84
- } , [ ] ) ;
91
+ setLogsStore ( ( store ) => toggleCustQuerySearchViewMode ( store , activeMode !== null ? activeMode : 'filters' ) ) ;
92
+ } , [ activeMode ] ) ;
93
+
85
94
const queryCodeEditorRef = useRef < any > ( '' ) ; // to store input value even after the editor unmounts
86
95
87
96
useEffect ( ( ) => {
88
- queryCodeEditorRef . current = defaultCustSQLQuery (
89
- currentStream ,
90
- timeRange . startTime ,
91
- timeRange . endTime ,
92
- timePartitionColumn ,
93
- ) ;
94
- } , [ currentStream , timeRange . endTime , timeRange . startTime , timePartitionColumn ] ) ;
97
+ if ( ! _ . isEmpty ( parsedFilterQuery ) ) {
98
+ queryCodeEditorRef . current = parsedFilterQuery ;
99
+ } else {
100
+ queryCodeEditorRef . current = custSearchQuery ;
101
+ }
102
+ } , [ parsedFilterQuery , custSearchQuery ] ) ;
103
+
104
+ useEffect ( ( ) => {
105
+ if ( showQueryBuilder === false ) {
106
+ setParsedFilterQuery ( '' ) ;
107
+ }
108
+ } , [ showQueryBuilder ] ) ;
95
109
96
110
return (
97
111
< Modal
@@ -106,7 +120,11 @@ const QuerierModal = (props: {
106
120
title = { < ModalTitle title = { getLabel ( viewMode ) } /> } >
107
121
< Stack style = { { padding : '1rem 0.5rem' , height : '100%' } } gap = { 2 } >
108
122
{ viewMode === 'filters' ? (
109
- < FilterQueryBuilder onClear = { props . onClear } onApply = { props . onFiltersApply } />
123
+ < FilterQueryBuilder
124
+ onClear = { props . onClear }
125
+ onApply = { props . onFiltersApply }
126
+ filterBuilderQuery = { getParsedFilterQuery }
127
+ />
110
128
) : (
111
129
< QueryCodeEditor
112
130
queryCodeEditorRef = { queryCodeEditorRef }
@@ -132,6 +150,7 @@ const Querier = () => {
132
150
const [ streamInfo ] = useStreamStore ( ( store ) => store . info ) ;
133
151
const [ { query, isSumbitDisabled, isQueryFromParams } , setFilterStore ] = useFilterStore ( ( store ) => store ) ;
134
152
const timePartitionColumn = _ . get ( streamInfo , 'time_partition' , 'p_timestamp' ) ;
153
+ const { isStoreSynced } = useParamsController ( ) ;
135
154
136
155
useEffect ( ( ) => {
137
156
if ( schema ) {
@@ -140,7 +159,8 @@ const Querier = () => {
140
159
} , [ schema ] ) ;
141
160
142
161
useEffect ( ( ) => {
143
- return setFilterStore ( resetFilters ) ;
162
+ if ( ! isStoreSynced ) return ;
163
+ setFilterStore ( resetFilters ) ;
144
164
} , [ currentStream ] ) ;
145
165
146
166
const triggerRefetch = useCallback (
0 commit comments