Projekt

Obecné

Profil

Stáhnout (2.91 KB) Statistiky
| Větev: | Tag: | Revize:
1
import { Button, Checkbox, List, Modal } from 'antd';
2
import 'antd/dist/antd.css';
3
import React, { useContext, useEffect, useState } from 'react';
4
import { UserInfo } from '../../api';
5
import { annotationController, userController } from '../../controllers';
6
import { useUnauthRedirect } from '../../hooks';
7
import { LoggedUserContext } from '../../contexts/LoggedUserContext';
8

    
9
interface ModalProps {
10
    onCancel: () => void;
11
    documentsIds: (string | undefined)[];
12
}
13

    
14
function AssignDocumentModal({ onCancel, documentsIds }: ModalProps) {
15
    const redirecting = useUnauthRedirect('/login');
16
    const { role } = useContext(LoggedUserContext);
17
    const [users, setUsers] = useState<UserInfo[]>([]);
18
    const [selectedUsers, setSelectedUsers] = useState<string[]>([]);
19

    
20
    const handleOk = () => {
21
        onCancel();
22
    };
23

    
24
    const handleCancel = () => {
25
        onCancel();
26
    };
27

    
28
    useEffect(() => {
29
        console.log(documentsIds);
30
        if (!redirecting && role === 'ADMINISTRATOR') {
31
            userController.usersGet().then(({ data: { users } }) => {
32
                setUsers(users || []);
33
            });
34
        }
35
    }, [documentsIds, redirecting, role]);
36

    
37
    const handleUpload = () => {
38
        // console.log(documentsIds, selectedUsers);
39
        if (documentsIds && documentsIds.length !== 0) {
40
            annotationController.annotationsPost({
41
                documentIdList: documentsIds,
42
                userIdList: selectedUsers,
43
            });
44
        }
45
        onCancel();
46
    };
47

    
48
    function onChange(event: any) {
49
        if (event.target.checked) {
50
            selectedUsers.push(event.target.value);
51
        } else {
52
            setSelectedUsers(selectedUsers.filter((usr) => usr !== event.target.value));
53
        }
54
    }
55

    
56
    return (
57
        <Modal
58
            title="Přiřadit dokumenty"
59
            onOk={handleOk}
60
            visible={true}
61
            onCancel={handleCancel}
62
            footer={[
63
                <Button key="back" onClick={handleCancel}>
64
                    Storno
65
                </Button>,
66
                <Button key="submit" type="primary" onClick={handleUpload}>
67
                    Přiřadit
68
                </Button>,
69
            ]}
70
        >
71
            <List
72
                dataSource={users}
73
                size={'small'}
74
                grid={{ gutter: 10, column: 1 }}
75
                style={{ maxHeight: 400, overflowY: 'auto', overflowX: 'hidden' }}
76
                renderItem={(item) => (
77
                    <List.Item key={item.id}>
78
                        <List.Item.Meta
79
                            title={
80
                                <Checkbox onChange={onChange} value={item.id}>
81
                                    {item.name + ' ' + item.surname}
82
                                </Checkbox>
83
                            }
84
                        />
85
                    </List.Item>
86
                )}
87
            />
88
        </Modal>
89
    );
90
}
91

    
92
export default AssignDocumentModal;
(2-2/2)