Newer
Older
import Vue from 'vue';
import VueRouter from 'vue-router';
import Projects from '../views/Projects.vue';
Sébastien DA ROCHA
committed
Sébastien DA ROCHA
committed
//* store initial route before redirect to login page
//* in order to turn back to shared project afterwards (not memorized in router history at page load)
window.initialRoute = window.location.href;
let projectBase = 'projet';
if (window.location.pathname.includes('projet-partage')) {
projectBase = 'projet-partage';
Sébastien DA ROCHA
committed
const routes = [
{
path: '/',
name: 'index',
Sébastien DA ROCHA
committed
},
{
path: '/connexion/',
name: 'login',
component: () => import('../views/registration/Login.vue')
Sébastien DA ROCHA
committed
},
{
path: `${projectBase === 'projet' ? '': '/' + projectBase + '/:slug'}/my_account/`,
Sébastien DA ROCHA
committed
name: 'my_account',
component: () => import('../views/My_account.vue')
},
{
path: `${projectBase === 'projet' ? '': '/' + projectBase}/mentions/`,
Sébastien DA ROCHA
committed
name: 'mentions',
component: () => import('../views/flatpages/with_right_menu.vue')
},
{
path: `${projectBase === 'projet' ? '': '/' + projectBase}/aide/`,
Sébastien DA ROCHA
committed
name: 'aide',
component: () => import('../views/flatpages/Default.vue')
},
// * PROJECT
{
path: '/creer-projet/',
name: 'project_create',
component: () => import('../views/project/Project_edit.vue')
},
{
Sébastien DA ROCHA
committed
name: 'project_detail',
props: true,
component: () => import('../views/project/Project_detail.vue'),
},
{
Sébastien DA ROCHA
committed
name: 'project_edit',
component: () => import('../views/project/Project_edit.vue')
},
{
path: '/projet-type/',
name: 'project_type_list',
component: () => import('../views/project/Project_type_list.vue')
},
{
path: '/creer-projet/create_from/:slug/',
name: 'project_create_from',
component: () => import('../views/project/Project_edit.vue')
},
{
path: `/${projectBase}/:slug/administration-carte/`,
Sébastien DA ROCHA
committed
name: 'project_mapping',
component: () => import('../views/project/Project_mapping.vue')
},
{
Sébastien DA ROCHA
committed
name: 'project_members',
component: () => import('../views/project/Project_members.vue')
},
// * FEATURE TYPE
{
path: `/${projectBase}/:slug/type-signalement/ajouter/`,
Sébastien DA ROCHA
committed
name: 'ajouter-type-signalement',
props: true,
component: () => import('../views/feature_type/Feature_type_edit.vue')
},
{
path: `/${projectBase}/:slug/type-signalement/ajouter/create_from/:slug_type_signal`,
Sébastien DA ROCHA
committed
name: 'dupliquer-type-signalement',
component: () => import('../views/feature_type/Feature_type_edit.vue')
},
{
path: `/${projectBase}/:slug/type-signalement/:feature_type_slug/`,
Sébastien DA ROCHA
committed
name: 'details-type-signalement',
component: () => import('../views/feature_type/Feature_type_detail.vue')
},
{
path: `/${projectBase}/:slug/type-signalement/:slug_type_signal/editer/`,
Sébastien DA ROCHA
committed
name: 'editer-type-signalement',
component: () => import('../views/feature_type/Feature_type_edit.vue')
},
path: `/${projectBase}/:slug/type-signalement/:slug_type_signal/symbologie/`,
name: 'editer-symbologie-signalement',
component: () => import('../views/feature_type/Feature_type_symbology.vue')
},
Sébastien DA ROCHA
committed
// * FEATURE
{
path: `/${projectBase}/:slug/signalement/lister/`,
Sébastien DA ROCHA
committed
name: 'liste-signalements',
component: () => import('../views/feature/Feature_list.vue')
},
{
path: `/${projectBase}/:slug/type-signalement/:slug_type_signal/signalement/ajouter/`,
Sébastien DA ROCHA
committed
name: 'ajouter-signalement',
component: () => import('../views/feature/Feature_edit.vue')
},
{
path: `/${projectBase}/:slug/type-signalement/:slug_type_signal/signalement/:slug_signal`,
Sébastien DA ROCHA
committed
name: 'details-signalement',
component: () => import('../views/feature/Feature_detail.vue')
},
path: `/${projectBase}/:slug/type-signalement/:slug_type_signal/offline`,
name: 'offline-signalement',
component: () => import('../views/feature/Feature_offline.vue')
},
Sébastien DA ROCHA
committed
{
path: `/${projectBase}/:slug/type-signalement/:slug_type_signal/signalement/:slug_signal/editer/`,
Sébastien DA ROCHA
committed
name: 'editer-signalement',
component: () => import('../views/feature/Feature_edit.vue')
},
path: '/projet/:slug/catalog/:feature_type_slug',
name: 'catalog-import',
component: () => import('../views/Catalog.vue')
},
Sébastien DA ROCHA
committed
{ path: '/:pathMatch(.*)*', name: 'NotFound', component: () => import('../views/NotFound.vue') },
Sébastien DA ROCHA
committed
const router = new VueRouter({
mode: 'history',
Sébastien DA ROCHA
committed
routes,
routerHistory: [],
scrollBehavior(to, from, savedPosition) { //* record each route change to keep scroll position
Sébastien DA ROCHA
committed
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 };
},
Sébastien DA ROCHA
committed