diff --git a/src/pages/Index.tsx b/src/pages/Index.tsx index 91555b3..ea7d74c 100644 --- a/src/pages/Index.tsx +++ b/src/pages/Index.tsx @@ -80,6 +80,15 @@ const Index = () => { const [selectedImage, setSelectedImage] = useState(null); const [addEventModal, setAddEventModal] = useState(false); + // Pagination states + const [notesPage, setNotesPage] = useState(0); + const [todosActivePage, setTodosActivePage] = useState(0); + const [todosCompletedPage, setTodosCompletedPage] = useState(0); + + const NOTES_PER_PAGE = 5; + const TODOS_PER_PAGE = 10; + const RSS_MAX_ARTICLES = 8; + // Debounce timer for auto-save const saveTimerRef = useRef(null); @@ -593,6 +602,37 @@ const Index = () => { (note.content && note.content.toLowerCase().includes(searchQuery.toLowerCase()))) ); + // Pagination for notes + const totalNotesPages = Math.ceil(filteredNotes.length / NOTES_PER_PAGE); + const paginatedNotes = filteredNotes.slice( + notesPage * NOTES_PER_PAGE, + (notesPage + 1) * NOTES_PER_PAGE + ); + + // Reset page when changing filters or search + useEffect(() => { + setNotesPage(0); + }, [showArchived, searchQuery]); + + useEffect(() => { + setTodosActivePage(0); + setTodosCompletedPage(0); + }, [todos.length]); + + // Pagination for todos + const activeTodos = todos.filter(t => !t.completed); + const completedTodos = todos.filter(t => t.completed); + const totalActiveTodosPages = Math.ceil(activeTodos.length / TODOS_PER_PAGE); + const totalCompletedTodosPages = Math.ceil(completedTodos.length / TODOS_PER_PAGE); + const paginatedActiveTodos = activeTodos.slice( + todosActivePage * TODOS_PER_PAGE, + (todosActivePage + 1) * TODOS_PER_PAGE + ); + const paginatedCompletedTodos = completedTodos.slice( + todosCompletedPage * TODOS_PER_PAGE, + (todosCompletedPage + 1) * TODOS_PER_PAGE + ); + return (
{/* Top Navigation */} @@ -815,7 +855,7 @@ const Index = () => { {/* Notes Grid - 1 column for better visibility */}
{filteredNotes.length > 0 ? ( - filteredNotes.map(note => ( + paginatedNotes.map(note => ( {
)}
+ + {/* Pagination pour les notes */} + {totalNotesPages > 1 && ( +
+ + + Page {notesPage + 1} sur {totalNotesPages} + + +
+ )} ) : ( /* Open Note Editor */ @@ -1202,9 +1267,9 @@ const Index = () => { -
- {todos.filter(t => !t.completed).length > 0 ? ( - todos.filter(t => !t.completed).map(todo => ( +
+ {activeTodos.length > 0 ? ( + paginatedActiveTodos.map(todo => (
{

Aucune tâche active

)}
+ {totalActiveTodosPages > 1 && ( +
+ + + {todosActivePage + 1}/{totalActiveTodosPages} + + +
+ )} -
- {todos.filter(t => t.completed).length > 0 ? ( - todos.filter(t => t.completed).map(todo => ( +
+ {completedTodos.length > 0 ? ( + paginatedCompletedTodos.map(todo => (
{

Aucune tâche complétée

)}
+ {totalCompletedTodosPages > 1 && ( +
+ + + {todosCompletedPage + 1}/{totalCompletedTodosPages} + + +
+ )} @@ -1281,9 +1392,9 @@ const Index = () => {
-
+
{rssArticles.length > 0 ? ( - rssArticles.map(article => ( + rssArticles.slice(0, RSS_MAX_ARTICLES).map(article => (