diff --git a/client/src/pages/ldap-query-builder-page.tsx b/client/src/pages/ldap-query-builder-page.tsx index 8f77259..444e848 100644 --- a/client/src/pages/ldap-query-builder-page.tsx +++ b/client/src/pages/ldap-query-builder-page.tsx @@ -236,6 +236,11 @@ const LdapQueryBuilderPage = () => { setFilterDescription(""); setFilterQuery(""); setIsActive(true); + // Reset filter builder to default state + setFilterBuilder({ + operator: "and", + conditions: [{ attribute: "", operator: "equals", value: "" }] + }); }; // Select filter @@ -245,6 +250,24 @@ const LdapQueryBuilderPage = () => { setFilterDescription(filter.description || ""); setFilterQuery(filter.ldapFilter); setIsActive(filter.isActive); + + // Load filter builder data if available + if (filter.filter) { + try { + const filterData = typeof filter.filter === 'string' + ? JSON.parse(filter.filter) + : filter.filter; + + // Make sure it has valid structure + if (filterData && + filterData.operator && + Array.isArray(filterData.conditions)) { + setFilterBuilder(filterData); + } + } catch (err) { + console.error("Failed to parse filter builder data", err); + } + } }; // Save filter @@ -580,8 +603,8 @@ const LdapQueryBuilderPage = () => { Manual LDAP Query - - Visual Query Builder (Coming Soon) + + Visual Query Builder @@ -596,9 +619,165 @@ const LdapQueryBuilderPage = () => { /> - -
-

Visual query builder will be available in a future update

+ +
+
+ +
+ +
+
+ +
+ {filterBuilder.conditions.map((condition: any, index: number) => ( +
+
+ { + const updatedConditions = [...filterBuilder.conditions]; + updatedConditions[index].attribute = e.target.value; + setFilterBuilder({ + ...filterBuilder, + conditions: updatedConditions + }); + }} + /> +
+
+ +
+
+ { + const updatedConditions = [...filterBuilder.conditions]; + updatedConditions[index].value = e.target.value; + setFilterBuilder({ + ...filterBuilder, + conditions: updatedConditions + }); + }} + /> +
+
+ +
+
+ ))} + + +
+ +
+ +