Feat : UI - Filter by database name. (#1599)

This commit is contained in:
Sachin Chaurasiya 2021-12-08 02:25:28 +05:30 committed by GitHub
parent ad4f492929
commit fd92e5c6b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 41 additions and 6 deletions

View File

@ -81,7 +81,7 @@ const Explore: React.FC<ExploreProps> = ({
const location = useLocation(); const location = useLocation();
const history = useHistory(); const history = useHistory();
const filterObject: FilterObject = { const filterObject: FilterObject = {
...{ tags: [], service: [], tier: [] }, ...{ tags: [], service: [], tier: [], database: [] },
...getQueryParam(location.search), ...getQueryParam(location.search),
}; };
const [data, setData] = useState<Array<FormatedTableData>>([]); const [data, setData] = useState<Array<FormatedTableData>>([]);
@ -262,6 +262,15 @@ const Explore: React.FC<ExploreProps> = ({
sortOrder: sortOrder, sortOrder: sortOrder,
searchIndex: searchIndex, searchIndex: searchIndex,
}, },
{
queryString: searchText,
from: currentPage,
size: ZERO_SIZE,
filters: getFilterString(filters, ['database']),
sortField: sortField,
sortOrder: sortOrder,
searchIndex: searchIndex,
},
]; ];
fetchData(fetchParams); fetchData(fetchParams);
@ -476,8 +485,17 @@ const Explore: React.FC<ExploreProps> = ({
searchResult.resAggTag.data.aggregations, searchResult.resAggTag.data.aggregations,
'tags' 'tags'
); );
const aggDatabase = getAggregationList(
searchResult.resAggTag.data.aggregations,
'database'
);
updateAggregationCount([...aggServiceType, ...aggTier, ...aggTag]); updateAggregationCount([
...aggServiceType,
...aggTier,
...aggTag,
...aggDatabase,
]);
} }
setIsEntityLoading(false); setIsEntityLoading(false);
} }

View File

@ -43,6 +43,7 @@ const mockSearchResult = {
resAggServiceType: mockResponse as unknown as SearchResponse, resAggServiceType: mockResponse as unknown as SearchResponse,
resAggTier: mockResponse as unknown as SearchResponse, resAggTier: mockResponse as unknown as SearchResponse,
resAggTag: mockResponse as unknown as SearchResponse, resAggTag: mockResponse as unknown as SearchResponse,
resAggDatabase: mockResponse as unknown as SearchResponse,
}; };
describe('Test Explore component', () => { describe('Test Explore component', () => {

View File

@ -23,6 +23,7 @@ export type ExploreSearchData = {
resAggServiceType: SearchResponse; resAggServiceType: SearchResponse;
resAggTier: SearchResponse; resAggTier: SearchResponse;
resAggTag: SearchResponse; resAggTag: SearchResponse;
resAggDatabase: SearchResponse;
}; };
export interface ExploreProps { export interface ExploreProps {

View File

@ -31,6 +31,7 @@ const FacetFilter: FunctionComponent<FacetProp> = ({
const [showAllTags, setShowAllTags] = useState<boolean>(false); const [showAllTags, setShowAllTags] = useState<boolean>(false);
const [showAllServices, setShowAllServices] = useState<boolean>(false); const [showAllServices, setShowAllServices] = useState<boolean>(false);
const [showAllTier, setShowAllTier] = useState<boolean>(false); const [showAllTier, setShowAllTier] = useState<boolean>(false);
const [showAllDatabase, setShowAllDatabase] = useState<boolean>(false);
const getLinkText = ( const getLinkText = (
length: number, length: number,
state: boolean, state: boolean,
@ -44,8 +45,8 @@ const FacetFilter: FunctionComponent<FacetProp> = ({
) )
); );
}; };
const getSeparator = (length: number, index: number) => { const getSeparator = (length: number, index: number, flag: boolean) => {
return length !== 1 && index < length - 1 ? ( return length !== 1 && index < length - 1 && flag ? (
<div className="tw-filter-seperator" /> <div className="tw-filter-seperator" />
) : null; ) : null;
}; };
@ -64,6 +65,8 @@ const FacetFilter: FunctionComponent<FacetProp> = ({
return getLinkText(bucketLength, showAllTags, setShowAllTags); return getLinkText(bucketLength, showAllTags, setShowAllTags);
case 'Tier': case 'Tier':
return getLinkText(bucketLength, showAllTier, setShowAllTier); return getLinkText(bucketLength, showAllTier, setShowAllTier);
case 'Database':
return getLinkText(bucketLength, showAllDatabase, setShowAllDatabase);
default: default:
return null; return null;
} }
@ -77,6 +80,8 @@ const FacetFilter: FunctionComponent<FacetProp> = ({
return getBuckets(buckets, showAllTags); return getBuckets(buckets, showAllTags);
case 'Tier': case 'Tier':
return getBuckets(buckets, showAllTier); return getBuckets(buckets, showAllTier);
case 'Database':
return getBuckets(buckets, showAllDatabase);
default: default:
return []; return [];
} }
@ -172,7 +177,11 @@ const FacetFilter: FunctionComponent<FacetProp> = ({
<div className="sidebar-my-data-holder mt-2 mb-3"> <div className="sidebar-my-data-holder mt-2 mb-3">
{getFilterItems(aggregation)} {getFilterItems(aggregation)}
</div> </div>
{getSeparator(aggregations.length, index)} {getSeparator(
aggregations.length,
index,
aggregations[index + 1]?.buckets?.length > 0
)}
</> </>
) : null} ) : null}
</Fragment> </Fragment>

View File

@ -63,7 +63,7 @@ export const versionTypes = [
{ name: 'Minor', value: 'minor' }, { name: 'Minor', value: 'minor' },
]; ];
export const visibleFilters = ['service', 'tier', 'tags']; export const visibleFilters = ['service', 'tier', 'tags', 'database'];
export const tableSortingFields = [ export const tableSortingFields = [
{ {
@ -100,6 +100,10 @@ export const facetFilterPlaceholder = [
name: 'Tags', name: 'Tags',
value: 'Tags', value: 'Tags',
}, },
{
name: 'Database',
value: 'Database',
},
]; ];
export const ROUTES = { export const ROUTES = {

View File

@ -187,6 +187,7 @@ const ExplorePage: FunctionComponent = () => {
resAggServiceType, resAggServiceType,
resAggTier, resAggTier,
resAggTag, resAggTag,
resAggDatabase,
]: Array<SearchResponse>) => { ]: Array<SearchResponse>) => {
setError(''); setError('');
setSearchResult({ setSearchResult({
@ -194,6 +195,7 @@ const ExplorePage: FunctionComponent = () => {
resAggServiceType, resAggServiceType,
resAggTier, resAggTier,
resAggTag, resAggTag,
resAggDatabase,
}); });
setIsLoadingForData(false); setIsLoadingForData(false);
} }