Skip to content

Commit 5e3b379

Browse files
committed
fix toggle issue in a different way
1 parent de48d35 commit 5e3b379

File tree

2 files changed

+13
-38
lines changed

2 files changed

+13
-38
lines changed

src/components/dagshub/data-engine/queryBuilder/QueryBuilder.tsx

-6
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,22 @@ import { MetadataType } from '../metadataKeyValue/MetadataKeyValueList';
1111
export function QueryBuilder({
1212
queryInput,
1313
metadataFields,
14-
forceCompoundMode = false,
1514
onChange,
1615
validateValueByType,
1716
showConditionSummary = false,
18-
onQueryBuilderModeToggle
1917
}: {
2018
queryInput: QueryInput;
2119
metadataFields: MetadataFieldProps[]; // need to take into consideration the select and the alias
22-
forceCompoundMode?: boolean;
2320
onChange: (query: QueryInput) => void;
2421
validateValueByType: (valueType: MetadataType, value: string, comparator: Comparator) => boolean;
2522
showConditionSummary?: boolean;
26-
onQueryBuilderModeToggle: (isCompoundModeOn: boolean) => void;
2723
}) {
2824
return (
2925
<QueryBuilderProvider
3026
queryInput={queryInput}
3127
metadataFields={metadataFields}
32-
forceCompoundMode={forceCompoundMode}
3328
validateValueByType={validateValueByType}
3429
onChange={onChange}
35-
onQueryBuilderModeToggle={onQueryBuilderModeToggle}
3630
>
3731
<QueryWrapper showConditionSummary={showConditionSummary} />
3832
</QueryBuilderProvider>

src/components/dagshub/data-engine/queryBuilder/QueryBuilderContext.tsx

+13-32
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ interface QueryBuilderContextInterface {
109109
checkIfOperatorRequiresValueField: (operator: Comparator) => boolean;
110110
validateValueByType: (valueType: MetadataType, value: string, comparator: Comparator) => boolean;
111111
isDisplayableInSimpleMode: boolean;
112-
onToggleQueryMode: (isCompoundModeOn: boolean) => void;
112+
onToggleQueryMode: () => void;
113113
}
114114

115115
export const QueryBuilderContext = createContext<QueryBuilderContextInterface | undefined>(
@@ -127,19 +127,15 @@ export const useQueryBuilderContext = () => {
127127
export const QueryBuilderProvider = ({
128128
children,
129129
queryInput,
130-
metadataFields,
131-
forceCompoundMode = false,
130+
metadataFields,
132131
validateValueByType,
133132
onChange,
134-
onQueryBuilderModeToggle
135133
}: {
136134
children: ReactNode;
137135
queryInput: QueryInput;
138136
metadataFields: MetadataFieldProps[]; // need to take into consideration the select and the alias
139-
forceCompoundMode?: boolean;
140137
validateValueByType: (valueType: MetadataType, value: string, comparator: Comparator) => boolean;
141138
onChange: (query: QueryInput) => void;
142-
onQueryBuilderModeToggle: (isCompoundModeOn: boolean) => void;
143139
}) => {
144140
const getInitialQuery = useCallback(() => {
145141
let condition: AndOrMetadataInput | undefined = undefined;
@@ -171,54 +167,39 @@ export const QueryBuilderProvider = ({
171167
return true;
172168
};
173169

174-
const checkIfSimpleMode = useCallback(
175-
(query: AndOrMetadataInput | undefined) => {
176-
return !forceCompoundMode && checkIfConditionIsDisplayableInSimpleMode(query);
177-
},
178-
[forceCompoundMode]
179-
);
180-
181170
const [rootCondition, setRootCondition] = useState<AndOrMetadataInput>(() => getInitialQuery());
182-
const [isSimpleMode, setIsSimpleMode] = useState<boolean>(() =>
183-
checkIfSimpleMode(queryInput.query)
184-
);
185-
const [metadataFieldsList, setMetadataFieldsList] =
186-
useState<MetadataFieldProps[]>(metadataFields);
187171
const [isDisplayableInSimpleMode, setIsDisplayableInSimpleMode] = useState<boolean>(
188172
checkIfConditionIsDisplayableInSimpleMode(queryInput.query)
189173
);
190-
const [isCompoundModeForced, setIsCompoundModeForced] = useState<boolean>(forceCompoundMode);
191-
192-
useEffect(() => {
193-
setIsCompoundModeForced(forceCompoundMode);
194-
}, [forceCompoundMode]);
174+
const [isCompoundModeForced, setIsCompoundModeForced] = useState<boolean>(false);
175+
const [isSimpleMode, setIsSimpleMode] = useState<boolean>(() =>
176+
isDisplayableInSimpleMode && !isCompoundModeForced
177+
);
195178

196179
useEffect(() => {
197180
if (
198181
JSON.stringify(removeIdFields(getInitialQuery())) !==
199182
JSON.stringify(removeIdFields(rootCondition))
200183
) {
201184
setRootCondition(getInitialQuery);
185+
setIsDisplayableInSimpleMode(checkIfConditionIsDisplayableInSimpleMode(queryInput.query));
202186
}
203-
setIsDisplayableInSimpleMode(checkIfConditionIsDisplayableInSimpleMode(queryInput.query));
204187
}, [queryInput.query]);
205188

206189
useEffect(() => {
207190
setIsDisplayableInSimpleMode(checkIfConditionIsDisplayableInSimpleMode(rootCondition));
208191
}, [rootCondition]);
209192

210-
useEffect(() => {
211-
setIsSimpleMode(checkIfSimpleMode(queryInput.query));
212-
}, [forceCompoundMode, queryInput.query]);
213-
214193
function onToggleQueryMode() {
215194
setIsCompoundModeForced(!isCompoundModeForced);
216-
onQueryBuilderModeToggle(!isCompoundModeForced);
217195
}
218196

219197
useEffect(() => {
220-
setMetadataFieldsList(metadataFields);
221-
}, [metadataFields]);
198+
console.log("set is simple mode", isDisplayableInSimpleMode && !isCompoundModeForced);
199+
console.log("is compound mode forced", isCompoundModeForced);
200+
console.log("is displayable in simple mode", isDisplayableInSimpleMode);
201+
setIsSimpleMode(isDisplayableInSimpleMode && !isCompoundModeForced);
202+
}, [isCompoundModeForced, isDisplayableInSimpleMode]);
222203

223204
//This function is used to remove the root and wrapper, if it was added for ui purposes and not needed anymore
224205
const removeRootAndBlockIfWasAddedAndNotNeeded = (condition: AndOrMetadataInput | null) => {
@@ -439,7 +420,7 @@ export const QueryBuilderProvider = ({
439420
setIsSimpleMode,
440421
rootCondition,
441422
setRootCondition,
442-
metadataFieldsList,
423+
metadataFieldsList: metadataFields,
443424
generateUniqueId,
444425
addUniqueIds,
445426
getOperatorsByMetadataType,

0 commit comments

Comments
 (0)