11import * as React from 'react' ;
22import QuickStartCatalog from './catalog/QuickStartCatalog' ;
33import { QuickStart } from './utils/quick-start-types' ;
4- import { filterQuickStarts , getQuickStartStatusCount } from './utils/quick-start-utils' ;
4+ import { filterQuickStarts } from './utils/quick-start-utils' ;
55import { QUICKSTART_SEARCH_FILTER_KEY , QUICKSTART_STATUS_FILTER_KEY } from './utils/const' ;
66import { QuickStartContext , QuickStartContextValues } from './utils/quick-start-context' ;
77import {
@@ -15,7 +15,7 @@ import {
1515 Title ,
1616} from '@patternfly/react-core' ;
1717import SearchIcon from '@patternfly/react-icons/dist/esm/icons/search-icon' ;
18- import { EmptyBox , LoadingBox , removeQueryArgument } from '@console/internal/components/utils' ;
18+ import { EmptyBox , LoadingBox , clearFilterParams } from '@console/internal/components/utils' ;
1919import QuickStartCatalogFilter from './catalog/Toolbar/QuickStartCatalogFilter' ;
2020
2121type QuickStartCatalogPageProps = {
@@ -55,37 +55,38 @@ export const QuickStartCatalogPage: React.FC<QuickStartCatalogPageProps> = ({
5555 hint,
5656 showTitle = true ,
5757} ) => {
58- const { allQuickStarts = quickStarts , allQuickStartStates, getResource } = React . useContext < QuickStartContextValues > ( QuickStartContext ) ;
58+ const { allQuickStarts = quickStarts , allQuickStartStates, getResource, filter , setFilter } = React . useContext < QuickStartContextValues > ( QuickStartContext ) ;
5959
60- const initialQueryParams = new URLSearchParams ( window . location . search ) ;
61- const initialSearchQuery = initialQueryParams . get ( QUICKSTART_SEARCH_FILTER_KEY ) || '' ;
62- const [ searchInputText , setSearchInputText ] = React . useState < string > ( initialSearchQuery ) ;
63- const initialStatusFilters =
64- initialQueryParams . get ( QUICKSTART_STATUS_FILTER_KEY ) ?. split ( ',' ) || [ ] ;
65- const [ statusFilters , setStatusFilters ] = React . useState < string [ ] > ( initialStatusFilters ) ;
60+ // const initialQueryParams = new URLSearchParams(window.location.search);
61+ // const initialSearchQuery = initialQueryParams.get(QUICKSTART_SEARCH_FILTER_KEY) || '';
62+ // const [searchInputText, setSearchInputText] = React.useState<string>(initialSearchQuery);
63+ // const initialStatusFilters =
64+ // initialQueryParams.get(QUICKSTART_STATUS_FILTER_KEY)?.split(',') || [];
65+ // const [statusFilters, setStatusFilters] = React.useState<string[]>(initialStatusFilters);
6666
6767 const initialFilteredQuickStarts = showFilter
6868 ? filterQuickStarts (
6969 allQuickStarts ,
70- initialSearchQuery ,
71- initialStatusFilters ,
70+ filter . keyword ,
71+ filter . status . statusFilters ,
7272 allQuickStartStates ,
7373 ) . sort ( sortFnc )
7474 : allQuickStarts ;
7575
7676 const [ filteredQuickStarts , setFilteredQuickStarts ] = React . useState ( initialFilteredQuickStarts ) ;
7777 React . useEffect ( ( ) => {
7878 const filteredQuickStarts = showFilter
79- ? filterQuickStarts ( allQuickStarts , searchInputText , statusFilters , allQuickStartStates ) . sort (
79+ ? filterQuickStarts ( allQuickStarts , filter . keyword , filter . status . statusFilters , allQuickStartStates ) . sort (
8080 sortFnc ,
8181 )
8282 : allQuickStarts ;
8383 setFilteredQuickStarts ( filteredQuickStarts ) ;
8484 } , [ allQuickStarts ] ) ;
8585
8686 const clearFilters = ( ) => {
87- removeQueryArgument ( QUICKSTART_SEARCH_FILTER_KEY ) ;
88- removeQueryArgument ( QUICKSTART_STATUS_FILTER_KEY ) ;
87+ setFilter ( 'keyword' , '' ) ;
88+ setFilter ( 'status' , [ ] ) ;
89+ clearFilterParams ( ) ;
8990 setFilteredQuickStarts (
9091 allQuickStarts . sort ( ( q1 , q2 ) => q1 . spec . displayName . localeCompare ( q2 . spec . displayName ) ) ,
9192 ) ;
@@ -95,29 +96,24 @@ export const QuickStartCatalogPage: React.FC<QuickStartCatalogPageProps> = ({
9596 const result = filterQuickStarts (
9697 allQuickStarts ,
9798 searchValue ,
98- statusFilters ,
99+ filter . status . statusFilters ,
99100 allQuickStartStates ,
100101 ) . sort ( ( q1 , q2 ) => q1 . spec . displayName . localeCompare ( q2 . spec . displayName ) ) ;
101- setSearchInputText ( searchValue ) ;
102+ setFilter ( 'keyword' , searchValue ) ;
102103 setFilteredQuickStarts ( result ) ;
103104 } ;
104105
105106 const onStatusChange = ( statusList ) => {
106107 const result = filterQuickStarts (
107108 allQuickStarts ,
108- searchInputText ,
109+ filter . keyword ,
109110 statusList ,
110111 allQuickStartStates ,
111112 ) . sort ( ( q1 , q2 ) => q1 . spec . displayName . localeCompare ( q2 . spec . displayName ) ) ;
112- setStatusFilters ( statusList ) ;
113+ setFilter ( 'status' , statusList ) ;
113114 setFilteredQuickStarts ( result ) ;
114115 } ;
115116
116- const quickStartStatusCount = React . useMemo (
117- ( ) => getQuickStartStatusCount ( allQuickStartStates , allQuickStarts ) ,
118- [ allQuickStartStates , allQuickStarts ] ,
119- ) ;
120-
121117 if ( ! allQuickStarts ) return < LoadingBox /> ;
122118 return allQuickStarts . length === 0 ? (
123119 < EmptyBox label = { getResource ( 'Quick Starts' ) } />
@@ -136,7 +132,6 @@ export const QuickStartCatalogPage: React.FC<QuickStartCatalogPageProps> = ({
136132 < >
137133 < QuickStartCatalogFilter
138134 quickStartsCount = { filteredQuickStarts . length }
139- quickStartStatusCount = { quickStartStatusCount }
140135 onSearchInputChange = { onSearchInputChange }
141136 onStatusChange = { onStatusChange }
142137 />
0 commit comments