// Copyright (C) 2020-2022 Intel Corporation // Copyright (C) 2022 CVAT.ai Corporation // // SPDX-License-Identifier: MIT import React, { useState, useEffect } from 'react'; import { useDispatch } from 'react-redux'; import { useHistory } from 'react-router'; import { Row, Col } from 'antd/lib/grid'; import Dropdown from 'antd/lib/dropdown'; import { PlusOutlined, UploadOutlined, LoadingOutlined } from '@ant-design/icons'; import Button from 'antd/lib/button'; import Input from 'antd/lib/input'; import { importActions } from 'actions/import-actions'; import { SortingComponent, ResourceFilterHOC, defaultVisibility } from 'components/resource-sorting-filtering'; import { TasksQuery } from 'reducers'; import { usePrevious } from 'utils/hooks'; import { MultiPlusIcon } from 'icons'; import CvatDropdownMenuPaper from 'components/common/cvat-dropdown-menu-paper'; import { localStorageRecentKeyword, localStorageRecentCapacity, predefinedFilterValues, config, } from './tasks-filter-configuration'; const FilteringComponent = ResourceFilterHOC( config, localStorageRecentKeyword, localStorageRecentCapacity, predefinedFilterValues, ); interface VisibleTopBarProps { onApplyFilter(filter: string | null): void; onApplySorting(sorting: string | null): void; onApplySearch(search: string | null): void; query: TasksQuery; importing: boolean; } export default function TopBarComponent(props: VisibleTopBarProps): JSX.Element { const dispatch = useDispatch(); const { importing, query, onApplyFilter, onApplySorting, onApplySearch, } = props; const [visibility, setVisibility] = useState(defaultVisibility); const history = useHistory(); const prevImporting = usePrevious(importing); useEffect(() => { if (prevImporting && !importing) { onApplyFilter(query.filter); } }, [importing]); return (
{ onApplySearch(phrase); }} defaultValue={query.search || ''} className='cvat-tasks-page-search-bar' placeholder='Search ...' />
( setVisibility({ ...defaultVisibility, sorting: visible }) )} defaultFields={query.sort?.split(',') || ['-ID']} sortingFields={['ID', 'Owner', 'Status', 'Assignee', 'Updated date', 'Subset', 'Mode', 'Dimension', 'Project ID', '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} />
)} >
); }