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>
{reviewStatus === ReviewStatus.REVIEW_FURTHER && (
<Row align='middle' justify='start'>
<Col>
<Col span={7}>
<Text type='secondary'>Reviewer: </Text>
</Col>
<Col offset={1}>
<Col span={16} offset={1}>
<UserSelector value={reviewer} onSelect={setReviewer} />
</Col>
</Row>

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

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

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

Loading…
Cancel
Save