- Nouveau domaine `system` avec `logsStore` (Pinia) filtré sur status=failed&type=scraping_job, tri, pagination et suppression - Composant `LogItem` : affiche titre manga, chapitre, date, durée, domaine source (lien vers page d'édition), badge type scraping, slug utilisé, message d'erreur expandable - Page `LogsPage` : toolbar avec badge total, dropdown tri, rafraîchir, tout supprimer ; charge les ContentSources pour enrichir l'affichage - Route /system/logs branchée sur LogsPage - ApiJobRepository : ajout du paramètre `type` dans getJobs - Job entity : ajout des champs startedAt et completedAt
168 lines
5.4 KiB
JavaScript
168 lines
5.4 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 Layout from '../shared/components/layout/Layout.vue';
|
|
|
|
// Placeholder component for new routes
|
|
const PlaceholderComponent = {
|
|
props: {
|
|
title: {
|
|
type: String,
|
|
required: true
|
|
}
|
|
},
|
|
template: `
|
|
<div class="container mx-auto px-4 py-8">
|
|
<h1 class="text-2xl font-bold mb-4">{{ title }}</h1>
|
|
<p class="text-gray-600">Cette fonctionnalité sera bientôt disponible.</p>
|
|
</div>
|
|
`
|
|
};
|
|
|
|
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
|
|
},
|
|
// Pages placeholder avec chargement différé
|
|
{
|
|
path: '/manga/import',
|
|
name: 'manga-import',
|
|
component: PlaceholderComponent,
|
|
props: { title: 'Import de bibliothèque' }
|
|
},
|
|
{
|
|
path: '/manga/discover',
|
|
name: 'discover',
|
|
component: DiscoverPage
|
|
},
|
|
{
|
|
path: '/convert',
|
|
name: 'convert',
|
|
component: ConversionPage
|
|
},
|
|
{
|
|
path: '/activity',
|
|
name: 'activity',
|
|
component: ActivityPage
|
|
},
|
|
// Paramètres
|
|
{
|
|
path: '/settings',
|
|
name: 'settings',
|
|
component: PlaceholderComponent,
|
|
props: { title: 'Paramètres' }
|
|
},
|
|
{
|
|
path: '/settings/general',
|
|
name: 'settings-general',
|
|
component: PlaceholderComponent,
|
|
props: { title: 'Paramètres généraux' }
|
|
},
|
|
{
|
|
path: '/settings/folders',
|
|
name: 'settings-folders',
|
|
component: PlaceholderComponent,
|
|
props: { title: 'Gestion des dossiers' }
|
|
},
|
|
{
|
|
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',
|
|
name: 'system',
|
|
component: PlaceholderComponent,
|
|
props: { title: 'Système' }
|
|
},
|
|
{
|
|
path: '/system/status',
|
|
name: 'system-status',
|
|
component: PlaceholderComponent,
|
|
props: { title: 'Status du système' }
|
|
},
|
|
{
|
|
path: '/system/backup',
|
|
name: 'system-backup',
|
|
component: PlaceholderComponent,
|
|
props: { title: 'Sauvegarde' }
|
|
},
|
|
{
|
|
path: '/system/logs',
|
|
name: 'system-logs',
|
|
component: LogsPage,
|
|
},
|
|
{
|
|
path: '/system/updates',
|
|
name: 'system-updates',
|
|
component: PlaceholderComponent,
|
|
props: { title: 'Mises à jour' }
|
|
}
|
|
]
|
|
}
|
|
];
|
|
|
|
export const router = createRouter({
|
|
history: createWebHistory('/'),
|
|
routes
|
|
});
|