@@ -16,12 +16,15 @@ import UnfoldLessIcon from "@mui/icons-material/UnfoldLess";
16
16
import UnfoldMoreIcon from "@mui/icons-material/UnfoldMore" ;
17
17
18
18
import { StateContext } from "../../../../../contexts/StateContextProvider" ;
19
+ import {
20
+ QUERY_PROGRESS_VALUE_MAX ,
21
+ QueryArgs ,
22
+ } from "../../../../../typings/query" ;
19
23
import { UI_ELEMENT } from "../../../../../typings/states" ;
20
24
import {
21
25
TAB_DISPLAY_NAMES ,
22
26
TAB_NAME ,
23
27
} from "../../../../../typings/tab" ;
24
- import { QUERY_PROGRESS_DONE } from "../../../../../typings/worker" ;
25
28
import { isDisabled } from "../../../../../utils/states" ;
26
29
import CustomTabPanel from "../CustomTabPanel" ;
27
30
import PanelTitleButton from "../PanelTitleButton" ;
@@ -35,6 +38,24 @@ enum QUERY_OPTION {
35
38
IS_REGEX = "isRegex"
36
39
}
37
40
41
+ /**
42
+ * Determines if the query is case-sensitive based on the provided query options.
43
+ *
44
+ * @param queryOptions
45
+ * @return True if the query is case-sensitive.
46
+ */
47
+ const getIsCaseSensitive =
48
+ ( queryOptions : QUERY_OPTION [ ] ) => queryOptions . includes ( QUERY_OPTION . IS_CASE_SENSITIVE ) ;
49
+
50
+ /**
51
+ * Determines if the query is a regular expression based on the provided query options.
52
+ *
53
+ * @param queryOptions
54
+ * @return True if the query is a regular expression.
55
+ */
56
+ const getIsRegex =
57
+ ( queryOptions : QUERY_OPTION [ ] ) => queryOptions . includes ( QUERY_OPTION . IS_REGEX ) ;
58
+
38
59
/**
39
60
* Displays a panel for submitting queries and viewing query results.
40
61
*
@@ -44,17 +65,31 @@ const SearchTabPanel = () => {
44
65
const { queryProgress, queryResults, startQuery, uiState} = useContext ( StateContext ) ;
45
66
const [ isAllExpanded , setIsAllExpanded ] = useState < boolean > ( true ) ;
46
67
const [ queryOptions , setQueryOptions ] = useState < QUERY_OPTION [ ] > ( [ ] ) ;
68
+ const [ queryString , setQueryString ] = useState < string > ( "" ) ;
69
+
70
+ const handleQuerySubmit = ( newArgs : Partial < QueryArgs > ) => {
71
+ startQuery ( {
72
+ isCaseSensitive : getIsCaseSensitive ( queryOptions ) ,
73
+ isRegex : getIsRegex ( queryOptions ) ,
74
+ queryString : queryString ,
75
+ ...newArgs ,
76
+ } ) ;
77
+ } ;
47
78
48
79
const handleQueryInputChange = ( ev : React . ChangeEvent < HTMLTextAreaElement > ) => {
49
- const isCaseSensitive = queryOptions . includes ( QUERY_OPTION . IS_CASE_SENSITIVE ) ;
50
- const isRegex = queryOptions . includes ( QUERY_OPTION . IS_REGEX ) ;
51
- startQuery ( ev . target . value , isRegex , isCaseSensitive ) ;
80
+ setQueryString ( ev . target . value ) ;
81
+ handleQuerySubmit ( { queryString : ev . target . value } ) ;
52
82
} ;
83
+
53
84
const handleQueryOptionsChange = (
54
85
_ : React . MouseEvent < HTMLElement > ,
55
86
newOptions : QUERY_OPTION [ ]
56
87
) => {
57
88
setQueryOptions ( newOptions ) ;
89
+ handleQuerySubmit ( {
90
+ isCaseSensitive : getIsCaseSensitive ( newOptions ) ,
91
+ isRegex : getIsRegex ( newOptions ) ,
92
+ } ) ;
58
93
} ;
59
94
60
95
return (
@@ -109,7 +144,7 @@ const SearchTabPanel = () => {
109
144
determinate = { true }
110
145
thickness = { 4 }
111
146
value = { queryProgress * 100 }
112
- color = { QUERY_PROGRESS_DONE === queryProgress ?
147
+ color = { QUERY_PROGRESS_VALUE_MAX === queryProgress ?
113
148
"success" :
114
149
"primary" } />
115
150
</ div >
0 commit comments