You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.8 KiB
JavaScript
79 lines
1.8 KiB
JavaScript
import Vue from 'vue'
|
|
import Router from 'vue-router'
|
|
import EventCreate from './views/EventCreate.vue'
|
|
import EventList from './views/EventList.vue'
|
|
import EventShow from './views/EventShow.vue'
|
|
import NProgress from 'nprogress'
|
|
import store from '@/store/store'
|
|
import NotFound from './views/NotFound.vue'
|
|
import NetworkIssue from './views/NetworkIssue.vue'
|
|
|
|
Vue.use(Router)
|
|
|
|
// Must use const for Global Route gaurd calls.
|
|
const router = new Router({
|
|
mode: 'history',
|
|
routes: [
|
|
{
|
|
path: '/',
|
|
name: 'event-list',
|
|
component: EventList,
|
|
props: true
|
|
},
|
|
{
|
|
path: '/event/create',
|
|
name: 'event-create',
|
|
component: EventCreate
|
|
},
|
|
{
|
|
path: '/event/:id',
|
|
name: 'event-show',
|
|
component: EventShow,
|
|
props: true,
|
|
beforeEnter(routeTo, routeFrom, next) {
|
|
store
|
|
.dispatch('event/fetchEvent', routeTo.params.id)
|
|
.then(event => {
|
|
routeTo.params.event = event
|
|
next()
|
|
})
|
|
.catch(error => {
|
|
if (error.response && error.response.status == 404) {
|
|
next({ name: '404', params: { resource: 'event' } })
|
|
} else {
|
|
next({ name: 'network-issue' })
|
|
}
|
|
})
|
|
}
|
|
},
|
|
{
|
|
path: '/404',
|
|
name: '404',
|
|
component: NotFound,
|
|
props: true
|
|
},
|
|
{
|
|
path: '/network-issue',
|
|
name: 'network-issue',
|
|
component: NetworkIssue
|
|
},
|
|
{
|
|
path: '*',
|
|
redirect: { name: '404', params: { resource: 'page' } }
|
|
}
|
|
]
|
|
})
|
|
|
|
router.beforeEach((routeTo, routeFrom, next) => {
|
|
console.log(`Leaving: ${routeFrom.path} moving to ${routeTo.path}`)
|
|
NProgress.start()
|
|
next()
|
|
})
|
|
|
|
router.afterEach((routeTo, routeFrom) => {
|
|
routeFrom
|
|
NProgress.done()
|
|
})
|
|
|
|
export default router
|