repetition woks

This commit is contained in:
micialware committed 2026-09-15 16:10:52 +03:00
1 parent 37b3b61f79
commit 36d2c0b48f
15 files changed
+905 -185

No files matched your search

+20 -5
View File
@@ -1,16 +1,20 @@
import './style.css';
import { renderHomePage } from './home-page.ts';
import { renderDecksPage } from './decks-page.ts';
import { renderDeckPage } from './deck-page.ts';
import { renderReviewPage } from './review-page.ts';
import { renderSyncPage } from './sync-page.ts';
import { initWorker } from './sqlite-api.ts';
// Каркас приложения: топ-бар + бургер-меню + страницы (Главная / Колоды / Синхронизация).
// Каркас приложения: топ-бар + бургер-меню + страницы (Главная / Колоды / Колода / Повторение / Синхронизация).
type Page = 'home' | 'decks' | 'sync';
type Page = 'home' | 'decks' | 'deck' | 'review' | 'sync';
const PAGE_TITLES: Record<Page, string> = {
home: 'Главная',
decks: 'Колоды',
deck: 'Колода',
review: 'Повторение',
sync: 'Синхронизация',
};
@@ -43,13 +47,24 @@ function setActiveButton(page: Page): void {
});
}
function renderPage(page: Page): void {
function renderPage(page: Page, deckId?: number): void {
pageTitle.textContent = PAGE_TITLES[page];
setActiveButton(page);
// Страницы колоды и повторения — подразделы «Колод»: в меню подсвечиваем «Колоды».
setActiveButton(page === 'deck' || page === 'review' ? 'decks' : page);
if (page === 'home') {
renderHomePage(pageRoot, {});
} else if (page === 'decks') {
renderDecksPage(pageRoot);
renderDecksPage(pageRoot, {
goDeck: (id) => renderPage('deck', id),
goReview: (id) => renderPage('review', id),
});
} else if (page === 'deck') {
renderDeckPage(pageRoot, deckId ?? 0, {
goDecks: () => renderPage('decks'),
goReview: (id) => renderPage('review', id),
});
} else if (page === 'review') {
renderReviewPage(pageRoot, deckId ?? 0, { goDecks: () => renderPage('decks') });
} else {
renderSyncPage(pageRoot);
}