2020-08-08 23:59:13 +02:00
|
|
|
import Vue from 'vue'
|
|
|
|
|
import VueRouter from 'vue-router'
|
|
|
|
|
import Home from '../views/Home.vue'
|
2020-10-11 17:56:32 +02:00
|
|
|
import Login from '../views/Login.vue'
|
|
|
|
|
import Logout from '../views/Logout.vue'
|
2020-08-08 23:59:13 +02:00
|
|
|
import Project from '../views/Project.vue'
|
|
|
|
|
import ProjectList from '../views/ProjectList.vue'
|
|
|
|
|
import ProjectSummary from '../views/ProjectSummary.vue'
|
|
|
|
|
import LineList from '../views/LineList.vue'
|
2020-10-08 16:38:37 +02:00
|
|
|
import Plan from '../views/Plan.vue'
|
2020-08-08 23:59:13 +02:00
|
|
|
import LineSummary from '../views/LineSummary.vue'
|
|
|
|
|
import SequenceList from '../views/SequenceList.vue'
|
|
|
|
|
import SequenceSummary from '../views/SequenceSummary.vue'
|
|
|
|
|
import Calendar from '../views/Calendar.vue'
|
|
|
|
|
import Log from '../views/Log.vue'
|
2020-09-10 23:27:53 +02:00
|
|
|
import QC from '../views/QC.vue'
|
2021-09-04 19:15:16 +02:00
|
|
|
import Graphs from '../views/Graphs.vue'
|
2020-08-08 23:59:13 +02:00
|
|
|
import Map from '../views/Map.vue'
|
2023-10-29 19:40:07 +01:00
|
|
|
import ProjectSettings from '../views/ProjectSettings.vue'
|
2025-07-24 20:40:18 +02:00
|
|
|
import Users from '../views/Users.vue'
|
2023-10-28 13:24:56 +02:00
|
|
|
import DougalAppBarExtensionProject from '../components/app-bar-extension-project'
|
2023-10-29 19:40:07 +01:00
|
|
|
import DougalAppBarExtensionProjectList from '../components/app-bar-extension-project-list'
|
2025-08-18 14:17:17 +02:00
|
|
|
import GroupList from '../views/GroupList.vue'
|
|
|
|
|
import Group from '../views/Group.vue'
|
|
|
|
|
|
2020-08-08 23:59:13 +02:00
|
|
|
|
|
|
|
|
Vue.use(VueRouter)
|
|
|
|
|
|
|
|
|
|
const routes = [
|
|
|
|
|
{
|
|
|
|
|
path: '/',
|
|
|
|
|
name: 'Home',
|
|
|
|
|
component: Home
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/about',
|
|
|
|
|
name: 'About',
|
|
|
|
|
// route level code-splitting
|
|
|
|
|
// this generates a separate chunk (about.[hash].js) for this route
|
|
|
|
|
// which is lazy-loaded when the route is visited.
|
|
|
|
|
component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
|
|
|
|
|
},
|
2021-05-08 00:46:31 +02:00
|
|
|
{
|
|
|
|
|
path: '/feed/:source',
|
|
|
|
|
name: 'Feed',
|
|
|
|
|
// route level code-splitting
|
|
|
|
|
// this generates a separate chunk (about.[hash].js) for this route
|
|
|
|
|
// which is lazy-loaded when the route is visited.
|
|
|
|
|
component: () => import(/* webpackChunkName: "about" */ '../views/Feed.vue')
|
|
|
|
|
},
|
2021-05-20 18:33:49 +02:00
|
|
|
{
|
|
|
|
|
path: "/settings/equipment",
|
|
|
|
|
name: "equipment",
|
|
|
|
|
component: () => import(/* webpackChunkName: "about" */ '../views/Equipment.vue')
|
|
|
|
|
},
|
2025-07-24 20:40:18 +02:00
|
|
|
{
|
|
|
|
|
pathToRegexpOptions: { strict: true },
|
|
|
|
|
path: "/users",
|
|
|
|
|
redirect: "/users/"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
pathToRegexpOptions: { strict: true },
|
|
|
|
|
name: "Users",
|
|
|
|
|
path: "/users/",
|
|
|
|
|
component: Users,
|
|
|
|
|
meta: {
|
|
|
|
|
}
|
|
|
|
|
},
|
2020-08-08 23:59:13 +02:00
|
|
|
{
|
|
|
|
|
pathToRegexpOptions: { strict: true },
|
2020-10-11 17:56:32 +02:00
|
|
|
path: "/login",
|
|
|
|
|
redirect: "/login/"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
pathToRegexpOptions: { strict: true },
|
|
|
|
|
name: "Login",
|
|
|
|
|
path: "/login/",
|
|
|
|
|
component: Login,
|
|
|
|
|
meta: {
|
|
|
|
|
// breadcrumbs: [
|
|
|
|
|
// { text: "Projects", href: "/projects", disabled: true }
|
|
|
|
|
// ]
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
// pathToRegexpOptions: { strict: true },
|
|
|
|
|
path: "/logout",
|
|
|
|
|
component: Logout,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
pathToRegexpOptions: { strict: true },
|
2020-08-08 23:59:13 +02:00
|
|
|
path: "/projects",
|
|
|
|
|
redirect: "/projects/"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
pathToRegexpOptions: { strict: true },
|
|
|
|
|
path: "/projects/",
|
|
|
|
|
component: ProjectList,
|
|
|
|
|
meta: {
|
|
|
|
|
breadcrumbs: [
|
|
|
|
|
{ text: "Projects", href: "/projects", disabled: true }
|
2023-10-29 19:40:07 +01:00
|
|
|
],
|
|
|
|
|
appBarExtension: {
|
|
|
|
|
// component: DougalAppBarExtensionProjectList
|
|
|
|
|
}
|
2020-08-08 23:59:13 +02:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
pathToRegexpOptions: { strict: true },
|
|
|
|
|
path: "/projects/:project",
|
|
|
|
|
redirect: "/projects/:project/"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
pathToRegexpOptions: { strict: true },
|
|
|
|
|
path: "/projects/:project/",
|
|
|
|
|
name: "Project",
|
|
|
|
|
component: Project,
|
|
|
|
|
meta: {
|
|
|
|
|
breadcrumbs: [
|
|
|
|
|
{ text: "Projects", href: "/projects" },
|
|
|
|
|
{
|
|
|
|
|
text: (ctx) => ctx.$store.state.project.projectName || "…",
|
2025-07-24 23:03:41 +02:00
|
|
|
href: (ctx) => `/projects/${ctx.$store.state.project.projectId || ctx.$route.params.project || ""}/`,
|
2025-07-25 13:33:59 +02:00
|
|
|
title: (ctx) => Object.entries(ctx.$store.getters.projectConfiguration?.organisations ?? {}).map( ([org, ops]) => `* ${org}: ${Object.entries(ops).filter( ([k, v]) => v ).map( ([k, v]) => k ).join(", ")}`).join("\n"),
|
|
|
|
|
organisations: (ctx) => ctx.$store.getters.projectConfiguration?.organisations ?? {}
|
2020-08-08 23:59:13 +02:00
|
|
|
}
|
2023-10-28 13:24:56 +02:00
|
|
|
],
|
|
|
|
|
appBarExtension: {
|
|
|
|
|
component: DougalAppBarExtensionProject
|
|
|
|
|
}
|
2020-08-08 23:59:13 +02:00
|
|
|
},
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: "",
|
|
|
|
|
redirect: "summary"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: "summary",
|
|
|
|
|
component: ProjectSummary
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: "lines/",
|
|
|
|
|
name: "LineList",
|
|
|
|
|
component: LineList
|
|
|
|
|
},
|
2020-10-08 16:38:37 +02:00
|
|
|
{
|
|
|
|
|
path: "plan/",
|
|
|
|
|
name: "Plan",
|
|
|
|
|
component: Plan
|
|
|
|
|
},
|
2020-08-08 23:59:13 +02:00
|
|
|
{
|
|
|
|
|
path: "lines/:line",
|
|
|
|
|
name: "Line",
|
|
|
|
|
component: LineSummary
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: "sequences",
|
|
|
|
|
component: SequenceList
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-08-22 15:56:59 +02:00
|
|
|
name: "shotlog",
|
2020-08-08 23:59:13 +02:00
|
|
|
path: "sequences/:sequence",
|
|
|
|
|
component: SequenceSummary
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: "calendar",
|
|
|
|
|
component: Calendar
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: "log",
|
2020-08-12 15:15:44 +02:00
|
|
|
component: Log,
|
|
|
|
|
children: [
|
|
|
|
|
{ path: "sequence/:sequence", name: "logBySequence" },
|
|
|
|
|
{ path: "date/:date0", name: "logByDate" },
|
|
|
|
|
{ path: "date/:date0/:date1", name: "logByDates" }
|
|
|
|
|
]
|
2020-08-08 23:59:13 +02:00
|
|
|
},
|
2020-09-10 23:27:53 +02:00
|
|
|
{
|
|
|
|
|
path: "qc",
|
|
|
|
|
component: QC
|
|
|
|
|
},
|
2021-09-04 19:15:16 +02:00
|
|
|
{
|
|
|
|
|
path: "graphs",
|
|
|
|
|
component: Graphs,
|
|
|
|
|
children: [
|
|
|
|
|
{ path: "sequence/:sequence", name: "graphsBySequence" },
|
|
|
|
|
{ path: "sequence/:sequence0/:sequence1", name: "graphsBySequences" },
|
|
|
|
|
{ path: "date/:date0", name: "graphsByDate" },
|
|
|
|
|
{ path: "date/:date0/:date1", name: "graphsByDates" }
|
|
|
|
|
]
|
|
|
|
|
},
|
2020-08-08 23:59:13 +02:00
|
|
|
{
|
|
|
|
|
path: "map",
|
2021-05-17 17:01:44 +02:00
|
|
|
name: "map",
|
2020-08-08 23:59:13 +02:00
|
|
|
component: Map
|
2023-10-29 19:40:07 +01:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: "configuration",
|
|
|
|
|
name: "configuration",
|
|
|
|
|
component: ProjectSettings
|
2020-08-08 23:59:13 +02:00
|
|
|
}
|
|
|
|
|
]
|
2025-08-18 14:17:17 +02:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
pathToRegexpOptions: { strict: true },
|
|
|
|
|
path: "/groups",
|
|
|
|
|
redirect: "/groups/"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
pathToRegexpOptions: { strict: true },
|
|
|
|
|
path: "/groups/",
|
|
|
|
|
component: GroupList,
|
|
|
|
|
meta: {
|
|
|
|
|
breadcrumbs: [
|
2025-08-20 12:04:26 +02:00
|
|
|
{ text: "Comparisons", href: "/groups", disabled: true }
|
2025-08-18 14:17:17 +02:00
|
|
|
],
|
|
|
|
|
appBarExtension: {
|
|
|
|
|
// component: DougalAppBarExtensionProjectList
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
pathToRegexpOptions: { strict: true },
|
|
|
|
|
path: "/groups/:group",
|
|
|
|
|
redirect: "/groups/:group/"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
pathToRegexpOptions: { strict: true },
|
|
|
|
|
path: "/groups/:group/",
|
|
|
|
|
name: "Group",
|
|
|
|
|
component: Group,
|
|
|
|
|
meta: {
|
|
|
|
|
breadcrumbs: [
|
2025-08-20 12:04:26 +02:00
|
|
|
{ text: "Comparisons", href: "/groups" },
|
|
|
|
|
{ text: (ctx) => ctx.$route.params.group }
|
|
|
|
|
/*
|
|
|
|
|
{
|
|
|
|
|
text: (ctx) => ctx.$store.state.project.projectName || "…",
|
|
|
|
|
href: (ctx) => `/projects/${ctx.$store.state.project.projectId || ctx.$route.params.project || ""}/`,
|
|
|
|
|
title: (ctx) => Object.entries(ctx.$store.getters.projectConfiguration?.organisations ?? {}).map( ([org, ops]) => `* ${org}: ${Object.entries(ops).filter( ([k, v]) => v ).map( ([k, v]) => k ).join(", ")}`).join("\n"),
|
|
|
|
|
organisations: (ctx) => ctx.$store.getters.projectConfiguration?.organisations ?? {}
|
|
|
|
|
}
|
|
|
|
|
*/
|
2025-08-18 14:17:17 +02:00
|
|
|
],
|
2025-08-20 12:04:26 +02:00
|
|
|
/*
|
|
|
|
|
appBarExtension: {
|
|
|
|
|
component: DougalAppBarExtensionGroup
|
|
|
|
|
}
|
|
|
|
|
*/
|
2025-08-18 14:17:17 +02:00
|
|
|
},
|
|
|
|
|
children: [
|
|
|
|
|
]
|
|
|
|
|
},
|
2020-08-08 23:59:13 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
const router = new VueRouter({
|
|
|
|
|
mode: 'history',
|
|
|
|
|
base: process.env.BASE_URL,
|
|
|
|
|
routes
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
export default router
|