Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 82ba2ee5

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

Users table implemented

Zobrazit rozdíly:

webapp/pages/users/index.tsx
1 1
import 'antd/dist/antd.css';
2
import React, { useContext, useEffect } from 'react';
2
import React, { useContext, useEffect, useState } from 'react';
3 3

  
4 4
import { useUnauthRedirect } from '../../hooks';
5 5
import { useRouter } from 'next/router';
6
import { Typography } from 'antd';
6
import { Button, Space, Table, Typography } from 'antd';
7 7
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
8 8
import { faUsers } from '@fortawesome/free-solid-svg-icons';
9 9
import { LoggedUserContext } from '../../contexts/LoggedUserContext';
10 10
import { MainLayout } from '../../layouts/MainLayout';
11
import { UserInfo } from '../../api';
12
import { userController } from '../../controllers';
13
import AddUserModal from '../../components/modals/AddUserModal';
11 14

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

  
20
    const [visible, setVisible] = React.useState(false);
21
    const [users, setUsers] = useState<UserInfo[]>([]);
22

  
17 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
            }
31
        }
32

  
18 33
        if (!redirecting && role === 'ADMINISTRATOR') {
19
            // TODO load users
34
            fetchData();
20 35
        }
21 36
    }, [logout, redirecting, role, router]);
22 37

  
38
    const showModal = () => {
39
        setVisible(true);
40
    };
41

  
42
    const hideModal = () => {
43
        setVisible(false);
44
    };
45

  
46
    const columns = [
47
        { title: 'Jméno', dataIndex: 'name', key: 'name' },
48
        { title: 'Příjmení', dataIndex: 'surname', key: 'surname' },
49
        { title: 'Uživatelské jméno', dataIndex: 'username', key: 'username' },
50
        {
51
            title: '',
52
            key: 'operation',
53
            render: () => (
54
                <div>
55
                    <Space size={'middle'}>
56
                        <Button>Dokumenty</Button>
57
                        <Button>Upravit</Button>
58
                        <Button>Smazat</Button>
59
                    </Space>
60
                </div>
61
            ),
62
        },
63
    ];
64

  
23 65
    return redirecting || role !== 'ADMINISTRATOR' ? null : (
24 66
        <MainLayout>
25 67
            <Typography.Title level={2}>
26 68
                <FontAwesomeIcon icon={faUsers} /> Uživatelé
27 69
            </Typography.Title>
70
            <Button type={'primary'} onClick={showModal}>
71
                Přidat uživatele
72
            </Button>
73
            {visible && <AddUserModal onCancel={hideModal} />}
74

  
75
            <Table
76
                columns={columns}
77
                dataSource={users}
78
                size="small"
79
                scroll={{ y: 500 }}
80
            />
28 81
        </MainLayout>
29 82
    );
30 83
}

Také k dispozici: Unified diff