Fixed styles&& user selector

main
Boris Sekachev 5 years ago
parent 26b2276c42
commit c2479dffbf

@ -120,10 +120,10 @@ export default function SubmitReviewModal(): JSX.Element | null {
</Radio.Group> </Radio.Group>
{reviewStatus === ReviewStatus.REVIEW_FURTHER && ( {reviewStatus === ReviewStatus.REVIEW_FURTHER && (
<Row align='middle' justify='start'> <Row align='middle' justify='start'>
<Col> <Col span={7}>
<Text type='secondary'>Reviewer: </Text> <Text type='secondary'>Reviewer: </Text>
</Col> </Col>
<Col offset={1}> <Col span={16} offset={1}>
<UserSelector value={reviewer} onSelect={setReviewer} /> <UserSelector value={reviewer} onSelect={setReviewer} />
</Col> </Col>
</Row> </Row>

@ -117,7 +117,9 @@
} }
.cvat-job-item-status { .cvat-job-item-status {
.cvat-job-annotation-color { .cvat-job-annotation-color,
.cvat-job-validation-color,
.cvat-job-completed-color {
span { span {
margin-left: $grid-unit-size; margin-left: $grid-unit-size;
} }

@ -37,7 +37,13 @@ class TaskPageComponent extends React.PureComponent<Props> {
} }
public componentDidUpdate(): void { public componentDidUpdate(): void {
const { deleteActivity, history } = this.props; const {
deleteActivity, history, task, fetching, getTask,
} = this.props;
if (task === null && !fetching) {
getTask();
}
if (deleteActivity) { if (deleteActivity) {
history.replace('/tasks'); history.replace('/tasks');

@ -45,47 +45,55 @@ const searchUsers = debounce(
export default function UserSelector(props: Props): JSX.Element { export default function UserSelector(props: Props): JSX.Element {
const { value, className, onSelect } = props; const { value, className, onSelect } = props;
const [searchPhrase, setSearchPhrase] = useState(''); const [searchPhrase, setSearchPhrase] = useState('');
const [initialUsers, setInitialUsers] = useState<User[]>([]);
const [users, setUsers] = useState<User[]>([]); const [users, setUsers] = useState<User[]>([]);
const autocompleteRef = useRef<RefSelectProps | null>(null); const autocompleteRef = useRef<RefSelectProps | null>(null);
useEffect(() => {
core.users.get({ limit: 10 }).then((result: User[]) => {
if (result) {
setInitialUsers(result);
}
});
}, []);
useEffect(() => {
setUsers(initialUsers);
}, [initialUsers]);
const handleSearch = (searchValue: string): void => { const handleSearch = (searchValue: string): void => {
if (searchValue) { if (searchValue) {
searchUsers(searchValue, setUsers); searchUsers(searchValue, setUsers);
} else { } else {
setUsers([]); setUsers(initialUsers);
} }
setSearchPhrase(searchValue); setSearchPhrase(searchValue);
}; };
const handleFocus = (open: boolean): void => { const onBlur = (): void => {
if (!users.length && open) { if (!searchPhrase && value) {
core.users.get({ limit: 10 }).then((result: User[]) => { onSelect(null);
if (result) {
setUsers(result);
}
});
}
if (!open && searchPhrase !== value?.username) {
setSearchPhrase('');
if (value) {
onSelect(null);
}
} }
}; };
const handleSelect = (_value: SelectValue): void => { const handleSelect = (_value: SelectValue): void => {
setSearchPhrase(users.filter((user) => user.id === +_value)[0].username); setSearchPhrase(users.filter((user) => user.id === +_value)[0].username);
onSelect(_value ? users.filter((user) => user.id === +_value)[0] : null); const user = _value ? users.filter((_user) => _user.id === +_value)[0] : null;
if ((user?.id || null) !== (value?.id || null)) {
onSelect(user);
}
}; };
useEffect(() => { useEffect(() => {
if (value && !users.filter((user) => user.id === value.id).length) { if (value) {
core.users.get({ id: value.id }).then((result: User[]) => { if (!users.filter((user) => user.id === value.id).length) {
const [user] = result; core.users.get({ id: value.id }).then((result: User[]) => {
setUsers([...users, user]); const [user] = result;
setSearchPhrase(user.username); setUsers([...users, user]);
}); });
}
setSearchPhrase(value.username);
} }
}, [value]); }, [value]);
@ -97,8 +105,8 @@ export default function UserSelector(props: Props): JSX.Element {
placeholder='Select a user' placeholder='Select a user'
onSearch={handleSearch} onSearch={handleSearch}
onSelect={handleSelect} onSelect={handleSelect}
onBlur={onBlur}
className={combinedClassName} className={combinedClassName}
onDropdownVisibleChange={handleFocus}
options={users.map((user) => ({ options={users.map((user) => ({
value: user.id.toString(), value: user.id.toString(),
label: user.username, label: user.username,

Loading…
Cancel
Save