From a6c88c96315a40e318a6633675a487309bb42d9f Mon Sep 17 00:00:00 2001 From: Bryan Frimin Date: Thu, 19 Mar 2026 12:32:59 +0100 Subject: [PATCH] Add fulltext search to measures page Signed-off-by: Bryan Frimin --- .../organizations/measures/MeasuresPage.tsx | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/apps/console/src/pages/organizations/measures/MeasuresPage.tsx b/apps/console/src/pages/organizations/measures/MeasuresPage.tsx index 1a4156080..0c5af7121 100644 --- a/apps/console/src/pages/organizations/measures/MeasuresPage.tsx +++ b/apps/console/src/pages/organizations/measures/MeasuresPage.tsx @@ -13,9 +13,11 @@ import { DropdownItem, FileButton, IconFolderUpload, + IconMagnifyingGlass, IconPencil, IconPlusLarge, IconTrashCan, + Input, Option, PageHeader, Select, @@ -99,6 +101,7 @@ const measuresPageFragment = graphql` @argumentDefinitions( first: { type: "Int", defaultValue: 20 } after: { type: "CursorKey" } + query: { type: "String", defaultValue: null } state: { type: "MeasureState", defaultValue: null } category: { type: "String", defaultValue: null } ) { @@ -106,7 +109,7 @@ const measuresPageFragment = graphql` measures( first: $first after: $after - filter: { state: $state, category: $category } + filter: { query: $query, state: $state, category: $category } ) @connection( key: "MeasuresPage_measures" @@ -162,6 +165,7 @@ export default function MeasuresPage({ queryRef }: MeasuresPageProps) { } const [isPending, startTransition] = useTransition(); + const [queryFilter, setQueryFilter] = useState(null); const [stateFilter, setStateFilter] = useState(null); const [categoryFilter, setCategoryFilter] = useState(null); @@ -175,6 +179,7 @@ export default function MeasuresPage({ queryRef }: MeasuresPageProps) { startTransition(() => { refetch( { + query: queryFilter, state: stateFilter, category: categoryFilter, ...overrides, @@ -184,6 +189,12 @@ export default function MeasuresPage({ queryRef }: MeasuresPageProps) { }); }; + const handleQueryFilterChange = (value: string) => { + const newQuery = value === "" ? null : value; + setQueryFilter(newQuery); + refetchFilters({ query: newQuery }); + }; + const handleStateFilterChange = (value: string) => { const newState = value === "ALL" ? null : (value as MeasureState); setStateFilter(newState); @@ -197,6 +208,7 @@ export default function MeasuresPage({ queryRef }: MeasuresPageProps) { }; const currentFilter = { + query: queryFilter, state: stateFilter, category: categoryFilter, }; @@ -209,9 +221,9 @@ export default function MeasuresPage({ queryRef }: MeasuresPageProps) { const allFiltersNullConnectionId = ConnectionHandler.getConnectionID( organizationId, MeasuresConnectionKey, - { filter: { state: null, category: null } }, + { filter: { query: null, state: null, category: null } }, ); - const hasActiveFilter = stateFilter || categoryFilter; + const hasActiveFilter = queryFilter || stateFilter || categoryFilter; const createConnectionIds = hasActiveFilter ? [allFiltersNullConnectionId, connectionId] : [connectionId]; @@ -282,6 +294,12 @@ export default function MeasuresPage({ queryRef }: MeasuresPageProps) {
+