Files
Mangarr/assets/vue/app/router/index.js
ext.jeremy.guillot@maxicoffee.domains ca8791cc0d feat(system): page Status avec endpoint API Platform et composants Vue
- Nouveau domaine System/Domain/Model/SystemStatus (value object)
- QueryHandler agrégeant métriques mangas, chapitres, jobs (global/24h/7j), stockage et sources
- Endpoint GET /api/system/status via API Platform (singleton)
- Calcul de l'espace disque par RecursiveDirectoryIterator sur public/images
- Page Vue /system/status avec 6 cards (Mangas, Chapitres, Jobs, Stockage, Sources, Système)
- Nettoyage du router : suppression des PlaceholderComponent et routes placeholder
- Sidebar : suppression des entrées sans page réelle
2026-03-17 22:04:48 +01:00

117 lines
3.8 KiB
JavaScript

import { createRouter, createWebHistory } from 'vue-router';
import ActivityPage from '../domain/activity/presentation/pages/ActivityPage.vue';
import ConversionPage from '../domain/conversion/presentation/pages/ConversionPage.vue';
import NewImportPage from '../domain/import/presentation/pages/NewImportPage.vue';
import AddManga from '../domain/manga/presentation/pages/AddManga.vue';
import DiscoverPage from '../domain/manga/presentation/pages/DiscoverPage.vue';
import HomePage from '../domain/manga/presentation/pages/HomePage.vue';
import MangaDetails from '../domain/manga/presentation/pages/MangaDetails.vue';
import ChapterPage from '../domain/reader/presentation/pages/ChapterPage.vue';
import ScrapperConfigurations from '../domain/setting/presentation/pages/ScrapperConfigurations.vue';
import ScrapperEdit from '../domain/setting/presentation/pages/ScrapperEdit.vue';
import UserPreferencesPage from '../domain/setting/presentation/pages/UserPreferencesPage.vue';
import LogsPage from '../domain/system/presentation/pages/LogsPage.vue';
import StatusPage from '../domain/system/presentation/pages/StatusPage.vue';
import Layout from '../shared/components/layout/Layout.vue';
const routes = [
{
path: '/',
component: Layout,
children: [
{
path: '',
name: 'home',
redirect: '/manga'
},
{
path: '/manga',
name: 'manga',
component: HomePage
},
{
path: '/manga/details/:id',
name: 'manga-details',
component: MangaDetails
},
{
path: '/manga/add',
name: 'add-manga',
component: AddManga
},
{
path: '/manga/reader/:chapterId',
name: 'reader',
component: ChapterPage,
props: { title: 'Lecteur' }
},
// Import routes
{
path: '/import',
name: 'import',
component: NewImportPage
},
{
path: '/manga/discover',
name: 'discover',
component: DiscoverPage
},
{
path: '/convert',
name: 'convert',
component: ConversionPage
},
{
path: '/activity',
name: 'activity',
component: ActivityPage
},
// Paramètres
{
path: '/settings',
redirect: '/settings/scrappers',
},
{
path: '/settings/scrappers',
name: 'scrapper-configurations',
component: ScrapperConfigurations
},
{
path: '/settings/scrappers/new',
name: 'scrapper-new',
component: ScrapperEdit
},
{
path: '/settings/scrappers/edit/:id',
name: 'scrapper-edit',
component: ScrapperEdit
},
{
path: '/settings/ui',
name: 'settings-ui',
component: UserPreferencesPage
},
// Système
{
path: '/system',
redirect: '/system/status',
},
{
path: '/system/status',
name: 'system-status',
component: StatusPage,
},
{
path: '/system/logs',
name: 'system-logs',
component: LogsPage,
},
]
}
];
export const router = createRouter({
history: createWebHistory('/'),
routes
});