Skip to content
Snippets Groups Projects
router.js 7.08 KiB
Newer Older
Jan Kolomazník's avatar
Jan Kolomazník committed
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'
xpetrov4's avatar
xpetrov4 committed
import HelpZdna from './components/help/help-zdna'
xpetrov4's avatar
xpetrov4 committed
import HelpCpg from './components/help/help-cpg'
Jan Kolomazník's avatar
Jan Kolomazník committed
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";
xpetrov4's avatar
xpetrov4 committed
import ZdnaResults from "./components/zdna/stored-results";
Jan Kolomazník's avatar
Jan Kolomazník committed
import ZdnaResultsDetail from './components/zdna/stored-results-details';

xpetrov4's avatar
xpetrov4 committed
import Cpg from "./components/cpg/cpg";
import CpgResults from "./components/cpg/stored-results";
import CpgResultsDetail from './components/cpg/stored-results-details';

Jan Kolomazník's avatar
Jan Kolomazník committed
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,
    },
xpetrov4's avatar
xpetrov4 committed
    //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,
    },
Jan Kolomazník's avatar
Jan Kolomazník committed

    //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: {},
    },
xpetrov4's avatar
xpetrov4 committed
    {
      name: 'help.zdna',
      path: '/help/zdna',
      component: HelpZdna,
      meta: {},
    },
xpetrov4's avatar
xpetrov4 committed
    {
      name: 'help.cpg',
      path: '/help/cpg',
      component: HelpCpg,
      meta: {},
    },
Jan Kolomazník's avatar
Jan Kolomazník committed
    {
      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