Clement Desmidt
844f625298
Fait fonctionner la suppression d'une page Fait fonctionner la pagination Fait fonctionner mieux le formulaire Fait fonctionner le markdown
65 lines
2.5 KiB
TypeScript
65 lines
2.5 KiB
TypeScript
import {Grid, Pagination} from '@mui/material';
|
|
import * as React from 'react';
|
|
import Page from "./Page";
|
|
|
|
interface List {
|
|
id: string;
|
|
date: string;
|
|
}
|
|
|
|
export default function Pages({pages, url, removeUrl, csrf, passphrase, setPassphrase}) {
|
|
const isPassphraseSet = passphrase !== null;
|
|
const perPage = 3;
|
|
const total = pages.length;
|
|
const numberOfPage = Math.ceil(total/perPage);
|
|
const [currentPage, setPage] = React.useState(1);
|
|
const [listPages, setListPages] = React.useState(pages);
|
|
|
|
const removePage = async (id) => {
|
|
const formData = new FormData();
|
|
formData.set('_token', csrf);
|
|
formData.set('_method', 'DELETE');
|
|
const response = await fetch(removeUrl.replace("replace_me", id), {
|
|
method: 'POST', body: formData
|
|
});
|
|
|
|
const json = await response.json();
|
|
|
|
if (json.success) {
|
|
console.log(listPages.length);
|
|
const newListPages = listPages.filter(function (value) {
|
|
console.log(value.id);
|
|
return value.id !== id;
|
|
});
|
|
setListPages(newListPages);
|
|
console.log(newListPages.length);
|
|
console.log(listPages.length);
|
|
updateListPages(newListPages.slice((currentPage - 1) * perPage, ((currentPage - 1) * perPage) + perPage).map(page =>
|
|
<Page page={page} url={url} remove={removePage} setPassphrase={setPassphrase} passphrase={passphrase}
|
|
key={page.id}/>));
|
|
}
|
|
}
|
|
|
|
const [listPagesDisplayed, updateListPages] = React.useState(listPages.slice((currentPage-1) * perPage, ((currentPage-1) * perPage) + perPage ).map(page =>
|
|
<Page page={page} url={url} remove={removePage} setPassphrase={setPassphrase} passphrase={passphrase} key={page.id}/>));
|
|
|
|
const handlePageChange = (event: React.ChangeEvent<unknown>, value: number) => {
|
|
setPage(value);
|
|
updateListPages(listPages.slice((value-1) * perPage, ((value-1) * perPage) + perPage).map(page =>
|
|
<Page page={page} url={url} remove={removePage} setPassphrase={setPassphrase} passphrase={passphrase} key={page.id}/>));
|
|
};
|
|
|
|
if (isPassphraseSet) {
|
|
return (
|
|
<div>
|
|
<Grid container rowSpacing={1} columnSpacing={1}>
|
|
{listPagesDisplayed}
|
|
</Grid>
|
|
<Pagination count={numberOfPage} page={currentPage} onChange={handlePageChange} sx={{align: "center"}} color="primary" />
|
|
</div>
|
|
);
|
|
}
|
|
|
|
return (<div></div>);
|
|
}
|