Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 43d49a98

Přidáno uživatelem Jaroslav Hrubý před asi 2 roky(ů)

Modal windows for user edit, delete and assigned documents were implemented

Zobrazit rozdíly:

webapp/pages/users/index.tsx
11 11
import { UserInfo } from '../../api';
12 12
import { userController } from '../../controllers';
13 13
import AddUserModal from '../../components/modals/AddUserModal';
14
import UserDocumentsModal from '../../components/modals/UserDocumentsModal';
15
import { ShowConfirmDelete } from '../../utils/alerts';
16
import EditUserModal from '../../components/modals/EditUserModal';
14 17

  
15 18
function UsersPage() {
16 19
    const redirecting = useUnauthRedirect('/login');
17 20
    const { logout, role } = useContext(LoggedUserContext);
18 21
    const router = useRouter();
19 22

  
20
    const [visible, setVisible] = React.useState(false);
23
    const [addVisible, setAddVisible] = React.useState(false);
24
    const [editVisible, setEditVisible] = React.useState(false);
25
    const [docsVisible, setDocsVisible] = React.useState(false);
21 26
    const [users, setUsers] = useState<UserInfo[]>([]);
22 27

  
23
    useEffect(() => {
24
        async function fetchData() {
25
            let usrs = (await userController.usersGet()).data.users;
26
            if (!usrs) {
27
                setUsers([]);
28
            } else {
29
                setUsers(usrs);
30
            }
28
    const [user, setUser] = useState<UserInfo>({});
29

  
30
    async function fetchData() {
31
        let usrs = (await userController.usersGet()).data.users;
32
        if (!usrs) {
33
            setUsers([]);
34
        } else {
35
            setUsers(usrs);
31 36
        }
37
    }
32 38

  
39
    useEffect(() => {
33 40
        if (!redirecting && role === 'ADMINISTRATOR') {
34 41
            fetchData();
35 42
        }
36 43
    }, [logout, redirecting, role, router]);
37 44

  
38
    const showModal = () => {
39
        setVisible(true);
45
    const setUserInfo = (userId: string) => {
46
        const userInfo = users.find((user) => user.id === userId);
47
        if (userInfo) {
48
            setUser(userInfo);
49
        }
50
    };
51

  
52
    const deleteUser = (userId: string) => {
53
        ShowConfirmDelete(() => {
54
            userController.userUserIdDelete(userId).then(() => fetchData());
55
        }, 'uživatele');
56
    };
57

  
58
    const showAddModal = () => {
59
        setAddVisible(true);
60
    };
61
    const showEditModal = (userId: string) => {
62
        setUserInfo(userId);
63
        setEditVisible(true);
64
    };
65
    const showDocsModal = (userId: string) => {
66
        setUserInfo(userId);
67
        setDocsVisible(true);
40 68
    };
41 69

  
42
    const hideModal = () => {
43
        setVisible(false);
70
    const hideModals = () => {
71
        fetchData();
72
        setAddVisible(false);
73
        setDocsVisible(false);
74
        setEditVisible(false);
44 75
    };
45 76

  
46 77
    const columns = [
......
50 81
        {
51 82
            title: '',
52 83
            key: 'operation',
53
            render: () => (
84
            dataIndex: 'id',
85
            render: (id: string) => (
54 86
                <div>
55 87
                    <Space size={'middle'}>
56
                        <Button>Dokumenty</Button>
57
                        <Button>Upravit</Button>
58
                        <Button>Smazat</Button>
88
                        <Button onClick={() => showDocsModal(id)}>Dokumenty</Button>
89
                        <Button onClick={() => showEditModal(id)}>Upravit</Button>
90
                        <Button onClick={() => deleteUser(id)}>Smazat</Button>
59 91
                    </Space>
60 92
                </div>
61 93
            ),
......
67 99
            <Typography.Title level={2}>
68 100
                <FontAwesomeIcon icon={faUsers} /> Uživatelé
69 101
            </Typography.Title>
70
            <Button type={'primary'} onClick={showModal}>
102
            <Button type={'primary'} onClick={showAddModal}>
71 103
                Přidat uživatele
72 104
            </Button>
73
            {visible && <AddUserModal onCancel={hideModal} />}
105
            {addVisible && <AddUserModal onCancel={hideModals} />}
106
            {editVisible && <EditUserModal userInfo={user} onCancel={hideModals} />}
107
            {docsVisible && <UserDocumentsModal userId={user.id} onCancel={hideModals} />}
74 108

  
75 109
            <Table
76 110
                columns={columns}

Také k dispozici: Unified diff