1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| import React, { useState, useEffect } from 'react';
import DataTable, { TableColumn } from 'react-data-table-component';
import { tableCustomStyles } from './dataTable1Style';
import DATAS from './datas';
import User from './models/user';
import dbService1 from './services/db-service1';
function TableUsers() {
const [records, setRecords] = useState<User[]>([]);
const datas: User[] = DATAS
useEffect(() => {
// setRecords(datas);
dbService1.all('SELECT * FROM users', [])
.then((rows) => {
console.log(`Table retournée ${rows}.`);
const users: User[] = rows
setRecords(users);
dbService1.db1.close();
})
.catch((err) => {
console.error(err.message);
dbService1.db1.close();
});
}, []);
const columns: TableColumn<any>[] = [
{
id: 'name',
name: 'Nom',
selector: (row: { name: any; }) => row.name,
sortable: true,
style: {
background: "orange",
},
},
{
id: 'firstname',
name: 'Prenom',
selector: (row: { firstname: any; }) => row.firstname,
sortable: true,
style: {
background: "cyan",
},
},
{
id: 'email',
name: 'Email',
selector: (row: { email: any; }) => row.email,
sortable: true
},
{
name: 'Note',
selector: (row: { note: any; }) => row.note,
sortable: true,
},
{
name: 'Crée le',
// You can use toLocaleDateString() instead
selector: (row: { created: any; }) => row.created.toLocaleString(),
sortable: true,
},
]
const ExpandableComponent2 = ({ data }: { data: any; }) => {
return (
< div >
<p>Additional information for: <strong>{data.name}</strong></p>
<p>Phone1: {data.phone1}</p>
<p>Phone2: {data.phone2}</p>
<p>Note: {data.note}</p>
</div >
)
};
function handleFilter(event: { target: { value: string; }; }) {
const newData: React.SetStateAction<User[]> = datas.filter(row => {
return row.name.toLowerCase().includes(event.target.value.toLowerCase())
})
setRecords(newData)
}
return (
<div className='container mt-5'>
<div className='text-end'><input type='text' onChange={handleFilter} /></div>
<DataTable
title="Utilisateurs"
customStyles={tableCustomStyles}
columns={columns}
data={records}
selectableRows
fixedHeader
pagination
highlightOnHover
pointerOnHover
expandableRows
expandableRowsComponent={ExpandableComponent2}
></DataTable>
</div>
);
}
export default TableUsers; |