// Copyright (C) 2022 Intel Corporation // // SPDX-License-Identifier: MIT import React, { useState } from 'react'; import { Col, Row } from 'antd/lib/grid'; import Input from 'antd/lib/input'; import { JobsQuery } from 'reducers/interfaces'; import { SortingComponent, ResourceFilterHOC, defaultVisibility } from 'components/resource-sorting-filtering'; import { localStorageRecentKeyword, localStorageRecentCapacity, predefinedFilterValues, config, } from './jobs-filter-configuration'; const FilteringComponent = ResourceFilterHOC( config, localStorageRecentKeyword, localStorageRecentCapacity, predefinedFilterValues, ); interface Props { query: JobsQuery; onApplyFilter(filter: string | null): void; onApplySorting(sorting: string | null): void; onApplySearch(search: string | null): void; } function TopBarComponent(props: Props): JSX.Element { const { query, onApplyFilter, onApplySorting, onApplySearch, } = props; const [visibility, setVisibility] = useState(defaultVisibility); return (
{ onApplySearch(phrase); }} defaultValue={query.search || ''} className='cvat-jobs-page-search-bar' placeholder='Search ...' />
( setVisibility({ ...defaultVisibility, sorting: visible }) )} defaultFields={query.sort?.split(',') || ['-ID']} sortingFields={['ID', 'Assignee', 'Updated date', 'Stage', 'State', 'Task ID', 'Project ID', 'Task name', 'Project name']} onApplySorting={onApplySorting} /> ( setVisibility({ ...defaultVisibility, predefined: visible }) )} onBuilderVisibleChange={(visible: boolean) => ( setVisibility({ ...defaultVisibility, builder: visible }) )} onRecentVisibleChange={(visible: boolean) => ( setVisibility({ ...defaultVisibility, builder: visibility.builder, recent: visible }) )} onApplyFilter={onApplyFilter} />
); } export default React.memo(TopBarComponent);