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