import Vue from 'vue' import Router from 'vue-router' import Index from './components/core/index' import Login from './components/user/login' import Register from './components/user/register' import ResetPassword from './components/user/reset-password' import ChangePassword from './components/user/change-password' import NotFound from './components/core/not-found' import HelpCruciform from './components/help/help-cruciform' import HelpG4Killer from './components/help/help-g4killer' import HelpImport from './components/help/help-import' import HelpP53 from './components/help/help-p53' import HelpFAQ from './components/help/faq' import HelpAbout from './components/help/about' import HelpStatus from './components/help/status' import HelpQuadruplex from './components/help/help-quadruplex' import HelpRloopr from './components/help/help-rloopr' import HelpZdna from './components/help/help-zdna' import HelpCpg from './components/help/help-cpg' import AnalyseCruciform from './components/cruciform/cruciform' import SequenceTools from './components/sequence/sequence' import AnalyseQuadruplex from './components/quadruplex/quadruplex' import QuadruplexResults from './components/quadruplex/stored-results' import QuadruplexResultsDetail from './components/quadruplex/stored-results-details' import P53Predictor from './components/p53predictor/p53-predictor' import P53PredictorResults from './components/p53predictor/stored-results' import P53PredictorResultsDetail from './components/p53predictor/stored-results-detail' import Test from './components/test/test' //import G4Killer from './components/g4killer/g4killer'; import G4KillerTool from './components/g4killer/g4killer-tool' import store from './store/index.js' import P53PredictorTool from './components/p53predictor/p53-predictor-tool' import Rloopr from './components/rloopr/rloopr' import RlooprResults from './components/rloopr/stored-results' import RlooprResultsDetail from './components/rloopr/stored-results-details' import Zdna from "./components/zdna/zdna"; import ZdnaResults from "./components/zdna/stored-results"; import ZdnaResultsDetail from './components/zdna/stored-results-details'; import Cpg from "./components/cpg/cpg"; import CpgResults from "./components/cpg/stored-results"; import CpgResultsDetail from './components/cpg/stored-results-details'; Vue.use(Router) var router = new Router({ routes: [ { name: 'not-found', path: '*', component: NotFound, }, { name: 'index', path: '/', component: Index, }, //user-related routes { name: 'login', path: '/login', component: Login, meta: { anonymousOnly: true, }, }, { name: 'register', path: '/register', component: Register, meta: { anonymousOnly: true, }, }, { name: 'reset-password', path: '/reset-password', component: ResetPassword, meta: { anonymousOnly: true, }, }, { name: 'change-password', path: '/change-password', component: ChangePassword, meta: { authOnly: true, }, }, //sequence related routes { name: 'sequence.tools', path: '/sequence/tools', component: SequenceTools, }, //analysis related routes { name: 'analyse.cruciform', path: '/analyse/cruciform', component: AnalyseCruciform, }, //quadruplex { name: 'analyse.quadruplex', path: '/analyse/quadruplex', component: AnalyseQuadruplex, }, { name: 'results.quadruplex', path: '/results/quadruplex', component: QuadruplexResults, }, { name: 'results.quadruplex.detail', path: '/results/quadruplex/:id', component: QuadruplexResultsDetail, }, //p53 predictor { name: 'analyse.p53predictor', path: '/analyse/p53-predictor', component: P53Predictor, }, { name: 'results.p53predictor', path: '/results/p53-predictor', component: P53PredictorResults, }, { name: 'results.p53predictor.detail', path: '/results/p53-predictor/:id', component: P53PredictorResultsDetail, }, { name: 'tools.p53predictor', path: '/tools/p53-predictor', component: P53PredictorTool, }, //G4 killer { name: 'analyse.g4killer', path: '/analyse/g4-killer', component: G4KillerTool, }, //R-loop-R { name: 'analyse.rloopr', path: '/analyse/rloopr', component: Rloopr, }, { name: 'results.rloopr', path: '/results/rloopr', component: RlooprResults, }, { name: 'results.rloopr.detail', path: '/results/rloopr/:id', component: RlooprResultsDetail, }, //Z-DNA { name: 'analyse.zdna', path: '/analyse/zdna', component: Zdna, }, { name: 'results.zdna', path: '/results/zdna', component: ZdnaResults, }, { name: 'results.zdna.detail', path: '/results/zdna/:id', component: ZdnaResultsDetail, }, //CpG { name: 'analyse.cpg', path: '/analyse/cpg', component: Cpg, }, { name: 'results.cpg', path: '/results/cpg', component: CpgResults, }, { name: 'results.cpg.detail', path: '/results/cpg/:id', component: CpgResultsDetail, }, //help routes { name: 'help.cruciform', path: '/help/cruciform', component: HelpCruciform, meta: {}, }, { name: 'help.quadruplex', path: '/help/quadruplex', component: HelpQuadruplex, meta: {}, }, { name: 'help.import', path: '/help/import', component: HelpImport, meta: {}, }, { name: 'help.p53', path: '/help/p53', component: HelpP53, meta: {}, }, { name: 'help.faq', path: '/help/faq', component: HelpFAQ, meta: {}, }, { name: 'help.g4killer', path: '/help/g4killer', component: HelpG4Killer, meta: {}, }, { name: 'help.rloopr', path: '/help/rloopr', component: HelpRloopr, meta: {}, }, { name: 'help.zdna', path: '/help/zdna', component: HelpZdna, meta: {}, }, { name: 'help.cpg', path: '/help/cpg', component: HelpCpg, meta: {}, }, { name: 'help.about', path: '/help/about', component: HelpAbout, meta: {}, }, { name: 'help.status', path: '/help/status', component: HelpStatus, meta: {}, }, //test route { name: 'test', path: '/test', component: Test, }, ], }) router.beforeEach((to, from, next) => { //TODO when already on authOnly route and user logs off, the route stays if (store.getters.isGuest && to.meta.authOnly) { //guest is trying to access auth-only route next({ name: 'login' }) } else if (!store.getters.isGuest && to.meta.anonymousOnly) { //logged in user cannot navigate to guest-only routes next(false) } else { next() } }) export default router