import Vue from 'vue' import VueRouter from 'vue-router' import Index from '../views/Index.vue' Vue.use(VueRouter) const routes = [ { path: '/', name: 'index', component: Index }, { path: '/connexion/', name: 'login', // route level code-splitting // this generates a separate chunk (login.[hash].js) for this route // which is lazy-loaded when the route is visited. component: () => import(/* webpackChunkName: "login" */'../views/registration/Login.vue') }, { path: '/my_account/', name: 'my_account', component: () => import('../views/My_account.vue') }, { path: '/mentions/', name: 'mentions', component: () => import('../views/flatpages/with_right_menu.vue') }, { path: '/aide/', name: 'aide', component: () => import('../views/flatpages/Default.vue') }, // * PROJECT { path: '/projet/:slug', name: 'project_detail', props: true, hasProject: true, //* used to know if project should be unset component: () => import('../views/project/Project_detail.vue'), }, { path: '/project_edit/', name: 'project_create', props: true, hasProject: true, component: () => import('../views/project/Project_edit.vue') }, { path: '/project_type_list/', name: 'project_type_list', //props: true, component: () => import('../views/project/Project_type_list.vue') }, { path: '/projet/:slug/project_mapping/', name: 'project_mapping', props: true, hasProject: true, component: () => import('../views/project/Project_mapping.vue') }, { path: '/projet/:slug/project_members/', name: 'project_members', props: true, hasProject: true, component: () => import('../views/project/Project_members.vue') }, // * FEATURE TYPE { path: '/projet/:slug/type-signalement/ajouter/', name: 'ajouter-type-signalement', props: true, hasProject: true, component: () => import('../views/feature_type/Feature_type_edit.vue') }, { path: '/projet/:slug/type-signalement/:feature_type_slug/', name: 'details-type-signalement', props: true, hasProject: true, component: () => import('../views/feature_type/Feature_type_detail.vue') }, { // todo : adapter le template path: '/projet/:slug/type-signalement/:slug_type_signal/editer/', name: 'editer-type-signalement', props: true, hasProject: true, component: () => import('../views/feature_type/Feature_type_edit.vue') }, // * FEATURE { path: '/projet/:slug/feature_list', name: 'liste-signalements', props: true, hasProject: true, component: () => import('../views/feature/Feature_list.vue') }, { // todo : créer le template path: '/projet/:slug/type-signalement/:slug_type_signal/signalement/', name: 'details-signalement', props: true, hasProject: true, component: () => import('../views/feature/Feature_detail.vue') }, { path: '/projet/:slug/type-signalement/:slug_type_signal/signalement/ajouter/', name: 'ajouter-signalement', props: true, hasProject: true, component: () => import('../views/feature/Feature_edit.vue') }, { path: '/projet/:slug/type-signalement/:slug_type_signal/signalement/editer/', // todo : ajouter aussi le slug en plus) name: 'editer-signalement', props: true, hasProject: true, component: () => import('../views/feature/Feature_edit.vue') }, { path: '/:pathMatch(.*)*', name: 'NotFound', component: () => import('../views/NotFound.vue') }, ] //let routerHistory = []; const router = new VueRouter({ mode: 'history', base: process.env.BASE_URL, routes, routerHistory: [], scrollBehavior(to, from, savedPosition) { //* record each route change to turn back to origin after redirect const fromHistory = Boolean(savedPosition); if (fromHistory && this.options.routerHistory.length > 0) { this.options.routerHistory.splice(-1, 1); } else { this.options.routerHistory.push(from); } return savedPosition || { x: 0, y: 0 }; }, }) export default router