Projekt

Obecné

Profil

« Předchozí | Další » 

Revize c6109e2d

Přidáno uživatelem Lukáš Vlček před asi 2 roky(ů)

Document table added for admin (document management)

Zobrazit rozdíly:

webapp/pages/documents/admin/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 { Button, Typography } from 'antd';
7
import { faFileLines } from '@fortawesome/free-solid-svg-icons';
6
import { Button, Table, Tag, Typography } from 'antd';
7
import { faFileLines, faUser } from '@fortawesome/free-solid-svg-icons';
8 8
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
9 9
import { LoggedUserContext } from '../../../contexts/LoggedUserContext';
10 10
import { MainLayout } from '../../../layouts/MainLayout';
11 11
import AddDocumentModal from '../../../components/modals/AddDocumentModal';
12
import { AnnotationListInfo, DocumentListInfo, UserInfo } from '../../../api';
13
import { documentController, userController } from '../../../controllers';
12 14

  
13 15
function AdminDocumentPage() {
14 16
    const redirecting = useUnauthRedirect('/login');
......
16 18
    const [visible, setVisible] = React.useState(false);
17 19
    const router = useRouter();
18 20

  
21
    const [documents, setDocuments] = useState<DocumentListInfo[]>([]);
22

  
19 23
    useEffect(() => {
24
        async function fetchData() {
25
            let docs = (await documentController.documentsGet(0, 1000)).data.documents;
26
            if (!docs) {
27
                setDocuments([]);
28
            } else {
29
                setDocuments(docs);
30
            }
31
        }
32

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

  
......
30 43
        setVisible(false);
31 44
    };
32 45

  
46
    const columns = [
47
        {
48
            title: 'Název dokumentu',
49
            dataIndex: 'name',
50
            key: 'name',
51
        },
52
        {
53
            title: 'Délka',
54
            dataIndex: 'length',
55
            key: 'length',
56
        },
57
        {
58
            title: 'Anotátoři',
59
            dataIndex: 'annotatingUsers',
60
            key: 'annotatingUsers',
61
            render: (columnData: UserInfo[], record: DocumentListInfo, index: number) => {
62
                return (
63
                    <div>
64
                        {columnData.map((e) => (
65
                            <span
66
                                key={e.username + '.' + record.id}
67
                                title={e.username ?? ''}
68
                            >
69
                                <FontAwesomeIcon
70
                                    icon={faUser}
71
                                    title={e.username ?? ''}
72
                                    className={'me-2'}
73
                                />
74
                            </span>
75
                        ))}
76
                    </div>
77
                );
78
            },
79
        },
80
    ];
81

  
33 82
    return redirecting || role !== 'ADMINISTRATOR' ? null : (
34 83
        <MainLayout>
35 84
            <Typography.Title level={2}>
......
39 88
                Nahrát dokument
40 89
            </Button>
41 90
            {visible && <AddDocumentModal onCancel={hideModal} />}
91

  
92
            <Table
93
                columns={columns}
94
                dataSource={documents}
95
                size="small"
96
                scroll={{ y: 500 }}
97
            />
42 98
        </MainLayout>
43 99
    );
44 100
}

Také k dispozici: Unified diff