99 lines
2.8 KiB
JavaScript
99 lines
2.8 KiB
JavaScript
/**
|
|
* Nextcloud - Tasks
|
|
*
|
|
* @author Raimund Schlüßler
|
|
*
|
|
* @copyright 2018 Raimund Schlüßler <raimund.schluessler@mailbox.org>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
import { getInitialRoute } from './utils/router.js'
|
|
import AppSidebar from './views/AppSidebar.vue'
|
|
import Calendar from './views/AppContent/Calendar.vue'
|
|
import Collections from './views/AppContent/Collections.vue'
|
|
|
|
import { getRootUrl, generateUrl } from '@nextcloud/router'
|
|
|
|
import { h } from 'vue'
|
|
import { createWebHistory, createRouter, RouterView } from 'vue-router'
|
|
|
|
const webRootWithIndexPHP = getRootUrl() + '/index.php'
|
|
const doesURLContainIndexPHP = window.location.pathname.startsWith(webRootWithIndexPHP)
|
|
const base = generateUrl('apps/tasks', {}, {
|
|
noRewrite: doesURLContainIndexPHP,
|
|
})
|
|
|
|
const routes = [
|
|
{ path: '/', redirect: getInitialRoute() },
|
|
{
|
|
path: '/collections/:collectionId',
|
|
components: {
|
|
default: { render: () => h(RouterView, { name: 'default' }) },
|
|
AppSidebar: { render: () => h(RouterView, { name: 'AppSidebar' }) },
|
|
},
|
|
children: [
|
|
{
|
|
name: 'collections',
|
|
path: '/collections/:collectionId',
|
|
component: Collections,
|
|
props: true,
|
|
},
|
|
{
|
|
name: 'collectionsTask',
|
|
path: '/collections/:collectionId/tasks/:taskId',
|
|
components: { default: Collections, AppSidebar },
|
|
props: { default: true, AppSidebar: true },
|
|
},
|
|
{
|
|
name: 'collectionsParamTask',
|
|
path: '/collections/:collectionId/:collectionParam/tasks/:taskId',
|
|
components: { default: Collections, AppSidebar },
|
|
props: { default: true, AppSidebar: true },
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/calendars/:calendarId',
|
|
components: {
|
|
default: { render: () => h(RouterView, { name: 'default' }) },
|
|
AppSidebar: { render: () => h(RouterView, { name: 'AppSidebar' }) },
|
|
},
|
|
children: [
|
|
{
|
|
name: 'calendars',
|
|
path: '/calendars/:calendarId',
|
|
component: Calendar,
|
|
props: true,
|
|
},
|
|
{
|
|
name: 'calendarsTask',
|
|
path: '/calendars/:calendarId/tasks/:taskId',
|
|
components: { default: Calendar, AppSidebar },
|
|
props: { default: true, AppSidebar: true },
|
|
},
|
|
],
|
|
},
|
|
]
|
|
|
|
const router = createRouter({
|
|
history: createWebHistory(base),
|
|
routes,
|
|
})
|
|
|
|
export { routes }
|
|
|
|
export default router
|