From 00813b0a696bcd50d484670cf191efcb8921648f Mon Sep 17 00:00:00 2001 From: songjianet <1778651752@qq.com> Date: Fri, 19 Nov 2021 09:38:22 +0800 Subject: [PATCH] [Improvement-6889] split the routing module to increase subsequent maintainability. (#6892) --- .../src/js/conf/home/router/index.js | 570 +----------------- .../js/conf/home/router/module/datasource.js | 44 ++ .../src/js/conf/home/router/module/home.js | 33 + .../src/js/conf/home/router/module/monitor.js | 100 +++ .../js/conf/home/router/module/projects.js | 221 +++++++ .../js/conf/home/router/module/resource.js | 160 +++++ .../js/conf/home/router/module/security.js | 102 ++++ .../src/js/conf/home/router/module/user.js | 60 ++ 8 files changed, 734 insertions(+), 556 deletions(-) create mode 100644 dolphinscheduler-ui/src/js/conf/home/router/module/datasource.js create mode 100644 dolphinscheduler-ui/src/js/conf/home/router/module/home.js create mode 100644 dolphinscheduler-ui/src/js/conf/home/router/module/monitor.js create mode 100644 dolphinscheduler-ui/src/js/conf/home/router/module/projects.js create mode 100644 dolphinscheduler-ui/src/js/conf/home/router/module/resource.js create mode 100644 dolphinscheduler-ui/src/js/conf/home/router/module/security.js create mode 100644 dolphinscheduler-ui/src/js/conf/home/router/module/user.js diff --git a/dolphinscheduler-ui/src/js/conf/home/router/index.js b/dolphinscheduler-ui/src/js/conf/home/router/index.js index 8d997afd74..2ac01f9e40 100644 --- a/dolphinscheduler-ui/src/js/conf/home/router/index.js +++ b/dolphinscheduler-ui/src/js/conf/home/router/index.js @@ -16,11 +16,14 @@ */ import Vue from 'vue' -import store from '@/conf/home/store' -import localStore from '@/module/util/localStorage' -import i18n from '@/module/i18n/index.js' -import config from '~/external/config' import Router from 'vue-router' +import home from './module/home' +import datasource from './module/datasource' +import monitor from './module/monitor' +import projects from './module/projects' +import resource from './module/resource' +import security from './module/security' +import user from './module/user' Vue.use(Router) @@ -33,558 +36,13 @@ const router = new Router({ name: 'home' } }, - { - path: '/home', - name: 'home', - component: resolve => require(['../pages/home/index'], resolve), - meta: { - title: `${i18n.$t('Home')} - DolphinScheduler`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/projects', - name: 'projects', - component: resolve => require(['../pages/projects/index'], resolve), - meta: { - title: `${i18n.$t('Project')}` - }, - redirect: { - name: 'projects-list' - }, - beforeEnter: (to, from, next) => { - const blacklist = ['projects', 'projects-list'] - const { projectCode } = to.params || {} - if (!blacklist.includes(to.name) && projectCode && projectCode !== localStore.getItem('projectCode')) { - store.dispatch('projects/getProjectByCode', projectCode).then(res => { - store.commit('dag/setProjectId', res.id) - store.commit('dag/setProjectCode', res.code) - store.commit('dag/setProjectName', res.name) - localStore.setItem('projectId', res.id) - localStore.setItem('projectCode', res.code) - localStore.setItem('projectName', res.name) - next() - }).catch(e => { - next({ name: 'projects-list' }) - }) - } else { - next() - } - }, - children: [ - { - path: '/projects/list', - name: 'projects-list', - component: resolve => require(['../pages/projects/pages/list/index'], resolve), - meta: { - title: `${i18n.$t('Project')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/projects/:projectCode/index', - name: 'projects-index', - component: resolve => require(['../pages/projects/pages/index/index'], resolve), - meta: { - title: `${i18n.$t('Project Home')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/projects/:projectCode/kinship', - name: 'projects-kinship', - component: resolve => require(['../pages/projects/pages/kinship/index'], resolve), - meta: { - title: `${i18n.$t('Kinship')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/projects/:projectCode/definition', - name: 'definition', - component: resolve => require(['../pages/projects/pages/definition/index'], resolve), - meta: { - title: `${i18n.$t('Process definition')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - }, - redirect: { - name: 'projects-definition-list' - }, - children: [ - { - path: '/projects/:projectCode/definition/list', - name: 'projects-definition-list', - component: resolve => require(['../pages/projects/pages/definition/pages/list/index'], resolve), - meta: { - title: `${i18n.$t('Process definition')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/projects/:projectCode/definition/list/:code', - name: 'projects-definition-details', - component: resolve => require(['../pages/projects/pages/definition/pages/details/index'], resolve), - meta: { - title: `${i18n.$t('Process definition details')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/projects/:projectCode/definition/create', - name: 'definition-create', - component: resolve => require(['../pages/projects/pages/definition/pages/create/index'], resolve), - meta: { - title: `${i18n.$t('Create process definition')}` - } - }, - { - path: '/projects/:projectCode/definition/tree/:code', - name: 'definition-tree-view-index', - component: resolve => require(['../pages/projects/pages/definition/pages/tree/index'], resolve), - meta: { - title: `${i18n.$t('TreeView')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/projects/:projectCode/definition/list/timing/:code', - name: 'definition-timing-details', - component: resolve => require(['../pages/projects/pages/definition/timing/index'], resolve), - meta: { - title: `${i18n.$t('Scheduled task list')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - } - ] - }, - { - path: '/projects/:projectCode/instance', - name: 'instance', - component: resolve => require(['../pages/projects/pages/instance/index'], resolve), - meta: { - title: `${i18n.$t('Process Instance')}` - }, - redirect: { - name: 'projects-instance-list' - }, - children: [ - { - path: '/projects/:projectCode/instance/list', - name: 'projects-instance-list', - component: resolve => require(['../pages/projects/pages/instance/pages/list/index'], resolve), - meta: { - title: `${i18n.$t('Process Instance')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/projects/:projectCode/instance/list/:id', - name: 'projects-instance-details', - component: resolve => require(['../pages/projects/pages/instance/pages/details/index'], resolve), - meta: { - title: `${i18n.$t('Process instance details')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/projects/:projectCode/instance/gantt/:id', - name: 'instance-gantt-index', - component: resolve => require(['../pages/projects/pages/instance/pages/gantt/index'], resolve), - meta: { - title: `${i18n.$t('Gantt')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - } - ] - }, - { - path: '/projects/:projectCode/task-instance', - name: 'task-instance', - component: resolve => require(['../pages/projects/pages/taskInstance'], resolve), - meta: { - title: `${i18n.$t('Task Instance')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - - }, - { - path: '/projects/:projectCode/task-definition', - name: 'task-definition', - component: resolve => require(['../pages/projects/pages/taskDefinition/index'], resolve), - meta: { - title: `${i18n.$t('Task Definition')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/projects/:projectCode/task-record', - name: 'task-record', - component: resolve => require(['../pages/projects/pages/taskRecord'], resolve), - meta: { - title: `${i18n.$t('Task record')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/projects/:projectCode/history-task-record', - name: 'history-task-record', - component: resolve => require(['../pages/projects/pages/historyTaskRecord'], resolve), - meta: { - title: `${i18n.$t('History task record')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - - } - ] - }, - { - path: '/resource', - name: 'resource', - component: resolve => require(['../pages/resource/index'], resolve), - redirect: { - name: 'file' - }, - meta: { - title: `${i18n.$t('Resources')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - }, - children: [ - { - path: '/resource/file', - name: 'file', - component: resolve => require(['../pages/resource/pages/file/pages/list/index'], resolve), - meta: { - title: `${i18n.$t('File Manage')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/resource/file/create', - name: 'resource-file-create', - component: resolve => require(['../pages/resource/pages/file/pages/create/index'], resolve), - meta: { - title: `${i18n.$t('Create Resource')}` - } - }, - { - path: '/resource/file/createFolder', - name: 'resource-file-createFolder', - component: resolve => require(['../pages/resource/pages/file/pages/createFolder/index'], resolve), - meta: { - title: `${i18n.$t('Create Resource')}` - } - }, - { - path: '/resource/file/subFileFolder/:id', - name: 'resource-file-subFileFolder', - component: resolve => require(['../pages/resource/pages/file/pages/subFileFolder/index'], resolve), - meta: { - title: `${i18n.$t('Create Resource')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/resource/file/subFile/:id', - name: 'resource-file-subFile', - component: resolve => require(['../pages/resource/pages/file/pages/subFile/index'], resolve), - meta: { - title: `${i18n.$t('Create Resource')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/resource/file/list/:id', - name: 'resource-file-details', - component: resolve => require(['../pages/resource/pages/file/pages/details/index'], resolve), - meta: { - title: `${i18n.$t('File Details')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/resource/file/subdirectory/:id', - name: 'resource-file-subdirectory', - component: resolve => require(['../pages/resource/pages/file/pages/subdirectory/index'], resolve), - meta: { - title: `${i18n.$t('File Manage')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/resource/file/edit/:id', - name: 'resource-file-edit', - component: resolve => require(['../pages/resource/pages/file/pages/edit/index'], resolve), - meta: { - title: `${i18n.$t('File Details')}` - } - }, - { - path: '/resource/udf', - name: 'udf', - component: resolve => require(['../pages/resource/pages/udf/index'], resolve), - meta: { - title: `${i18n.$t('UDF manage')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - }, - children: [ - { - path: '/resource/udf', - name: 'resource-udf', - component: resolve => require(['../pages/resource/pages/udf/pages/resource/index'], resolve), - meta: { - title: `${i18n.$t('UDF Resources')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/resource/udf/subUdfDirectory/:id', - name: 'resource-udf-subUdfDirectory', - component: resolve => require(['../pages/resource/pages/udf/pages/subUdfDirectory/index'], resolve), - meta: { - title: `${i18n.$t('UDF Resources')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/resource/udf/createUdfFolder', - name: 'resource-udf-createUdfFolder', - component: resolve => require(['../pages/resource/pages/udf/pages/createUdfFolder/index'], resolve), - meta: { - title: `${i18n.$t('Create Resource')}` - } - }, - { - path: '/resource/udf/subCreateUdfFolder/:id', - name: 'resource-udf-subCreateUdfFolder', - component: resolve => require(['../pages/resource/pages/udf/pages/subUdfFolder/index'], resolve), - meta: { - title: `${i18n.$t('Create Resource')}` - } - }, - { - path: '/resource/func', - name: 'resource-func', - component: resolve => require(['../pages/resource/pages/udf/pages/function/index'], resolve), - meta: { - title: `${i18n.$t('UDF Function')}` - } - } - ] - } - ] - }, - { - path: '/datasource', - name: 'datasource', - component: resolve => require(['../pages/datasource/index'], resolve), - meta: { - title: `${i18n.$t('Datasource')}` - }, - redirect: { - name: 'datasource-list' - }, - children: [ - { - path: '/datasource/list', - name: 'datasource-list', - component: resolve => require(['../pages/datasource/pages/list/index'], resolve), - meta: { - title: `${i18n.$t('Datasource')}` - } - } - ] - }, - { - path: '/security', - name: 'security', - component: resolve => require(['../pages/security/index'], resolve), - meta: { - title: `${i18n.$t('Security')}` - }, - redirect: { - name: 'tenement-manage' - }, - children: [ - { - path: '/security/tenant', - name: 'tenement-manage', - component: resolve => require(['../pages/security/pages/tenement/index'], resolve), - meta: { - title: `${i18n.$t('Tenant Manage')}` - } - }, - { - path: '/security/users', - name: 'users-manage', - component: resolve => require(['../pages/security/pages/users/index'], resolve), - meta: { - title: `${i18n.$t('User Manage')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/security/warning-groups', - name: 'warning-groups-manage', - component: resolve => require(['../pages/security/pages/warningGroups/index'], resolve), - meta: { - title: `${i18n.$t('Warning group manage')}` - } - }, - { - path: '/security/warning-instance', - name: 'warning-instance-manage', - component: resolve => require(['../pages/security/pages/warningInstance/index'], resolve), - meta: { - title: `${i18n.$t('Warning instance manage')}` - } - }, - { - path: '/security/queue', - name: 'queue-manage', - component: resolve => require(['../pages/security/pages/queue/index'], resolve), - meta: { - title: `${i18n.$t('Queue manage')}` - } - }, - { - path: '/security/worker-groups', - name: 'worker-groups-manage', - component: resolve => require(['../pages/security/pages/workerGroups/index'], resolve), - meta: { - title: `${i18n.$t('Worker group manage')}` - } - }, - { - path: '/security/environments', - name: 'environment-manage', - component: resolve => require(['../pages/security/pages/environment/index'], resolve), - meta: { - title: `${i18n.$t('Environment manage')}` - } - }, - { - path: '/security/token', - name: 'token-manage', - component: resolve => require(['../pages/security/pages/token/index'], resolve), - meta: { - title: `${i18n.$t('Token manage')}` - } - } - ] - }, - { - path: '/user', - name: 'user', - component: resolve => require(['../pages/user/index'], resolve), - meta: { - title: `${i18n.$t('User Center')}` - }, - redirect: { - name: 'account' - }, - children: [ - { - path: '/user/account', - name: 'account', - component: resolve => require(['../pages/user/pages/account/index'], resolve), - meta: { - title: `${i18n.$t('User Information')}` - } - }, - { - path: '/user/password', - name: 'password', - component: resolve => require(['../pages/user/pages/password/index'], resolve), - meta: { - title: `${i18n.$t('Edit password')}` - } - }, - { - path: '/user/token', - name: 'token', - component: resolve => require(['../pages/user/pages/token/index'], resolve), - meta: { - title: `${i18n.$t('Token manage')}` - } - } - ] - }, - { - path: '/monitor', - name: 'monitor', - component: resolve => require(['../pages/monitor/index'], resolve), - meta: { - title: 'monitor' - }, - redirect: { - name: 'servers-master' - }, - children: [ - { - path: '/monitor/servers/master', - name: 'servers-master', - component: resolve => require(['../pages/monitor/pages/servers/master'], resolve), - meta: { - title: `${i18n.$t('Service-Master')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/monitor/servers/worker', - name: 'servers-worker', - component: resolve => require(['../pages/monitor/pages/servers/worker'], resolve), - meta: { - title: `${i18n.$t('Service-Worker')}`, - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/monitor/servers/alert', - name: 'servers-alert', - component: resolve => require(['../pages/monitor/pages/servers/alert'], resolve), - meta: { - title: 'Alert', - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/monitor/servers/rpcserver', - name: 'servers-rpcserver', - component: resolve => require(['../pages/monitor/pages/servers/rpcserver'], resolve), - meta: { - title: 'Rpcserver', - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/monitor/servers/apiserver', - name: 'servers-apiserver', - component: resolve => require(['../pages/monitor/pages/servers/apiserver'], resolve), - meta: { - title: 'Apiserver', - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/monitor/servers/db', - name: 'servers-db', - component: resolve => require(['../pages/monitor/pages/servers/db'], resolve), - meta: { - title: 'DB', - refreshInSwitchedTab: config.refreshInSwitchedTab - } - }, - { - path: '/monitor/servers/statistics', - name: 'statistics', - component: resolve => require(['../pages/monitor/pages/servers/statistics'], resolve), - meta: { - title: 'statistics', - refreshInSwitchedTab: config.refreshInSwitchedTab - } - } - ] - } + ...home, + ...projects, + ...resource, + ...datasource, + ...security, + ...user, + ...monitor ] }) diff --git a/dolphinscheduler-ui/src/js/conf/home/router/module/datasource.js b/dolphinscheduler-ui/src/js/conf/home/router/module/datasource.js new file mode 100644 index 0000000000..20507ca585 --- /dev/null +++ b/dolphinscheduler-ui/src/js/conf/home/router/module/datasource.js @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import i18n from '@/module/i18n/index.js' + +const datasource = [ + { + path: '/datasource', + name: 'datasource', + component: resolve => require(['../../pages/datasource'], resolve), + meta: { + title: `${i18n.$t('Datasource')}` + }, + redirect: { + name: 'datasource-list' + }, + children: [ + { + path: '/datasource/list', + name: 'datasource-list', + component: resolve => require(['../../pages/datasource/pages/list'], resolve), + meta: { + title: `${i18n.$t('Datasource')}` + } + } + ] + } +] + +export default datasource diff --git a/dolphinscheduler-ui/src/js/conf/home/router/module/home.js b/dolphinscheduler-ui/src/js/conf/home/router/module/home.js new file mode 100644 index 0000000000..28516e16d3 --- /dev/null +++ b/dolphinscheduler-ui/src/js/conf/home/router/module/home.js @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import i18n from '@/module/i18n/index.js' +import config from '~/external/config' + +const home = [ + { + path: '/home', + name: 'home', + component: resolve => require(['../../pages/home'], resolve), + meta: { + title: `${i18n.$t('Home')} - DolphinScheduler`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + } +] + +export default home diff --git a/dolphinscheduler-ui/src/js/conf/home/router/module/monitor.js b/dolphinscheduler-ui/src/js/conf/home/router/module/monitor.js new file mode 100644 index 0000000000..4398ed4732 --- /dev/null +++ b/dolphinscheduler-ui/src/js/conf/home/router/module/monitor.js @@ -0,0 +1,100 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import i18n from '@/module/i18n/index.js' +import config from '~/external/config' + +const monitor = [ + { + path: '/monitor', + name: 'monitor', + component: resolve => require(['../../pages/monitor'], resolve), + meta: { + title: 'monitor' + }, + redirect: { + name: 'servers-master' + }, + children: [ + { + path: '/monitor/servers/master', + name: 'servers-master', + component: resolve => require(['../../pages/monitor/pages/servers/master'], resolve), + meta: { + title: `${i18n.$t('Service-Master')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/monitor/servers/worker', + name: 'servers-worker', + component: resolve => require(['../../pages/monitor/pages/servers/worker'], resolve), + meta: { + title: `${i18n.$t('Service-Worker')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/monitor/servers/alert', + name: 'servers-alert', + component: resolve => require(['../../pages/monitor/pages/servers/alert'], resolve), + meta: { + title: 'Alert', + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/monitor/servers/rpcserver', + name: 'servers-rpcserver', + component: resolve => require(['../../pages/monitor/pages/servers/rpcserver'], resolve), + meta: { + title: 'Rpcserver', + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/monitor/servers/apiserver', + name: 'servers-apiserver', + component: resolve => require(['../../pages/monitor/pages/servers/apiserver'], resolve), + meta: { + title: 'Apiserver', + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/monitor/servers/db', + name: 'servers-db', + component: resolve => require(['../../pages/monitor/pages/servers/db'], resolve), + meta: { + title: 'DB', + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/monitor/servers/statistics', + name: 'statistics', + component: resolve => require(['../../pages/monitor/pages/servers/statistics'], resolve), + meta: { + title: 'statistics', + refreshInSwitchedTab: config.refreshInSwitchedTab + } + } + ] + } +] + +export default monitor diff --git a/dolphinscheduler-ui/src/js/conf/home/router/module/projects.js b/dolphinscheduler-ui/src/js/conf/home/router/module/projects.js new file mode 100644 index 0000000000..ffefbdc162 --- /dev/null +++ b/dolphinscheduler-ui/src/js/conf/home/router/module/projects.js @@ -0,0 +1,221 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import i18n from '@/module/i18n/index.js' +import config from '~/external/config' +import store from '@/conf/home/store' +import localStore from '@/module/util/localStorage' + +const projects = [ + { + path: '/projects', + name: 'projects', + component: resolve => require(['../../pages/projects'], resolve), + meta: { + title: `${i18n.$t('Project')}` + }, + redirect: { + name: 'projects-list' + }, + beforeEnter: (to, from, next) => { + const blacklist = ['projects', 'projects-list'] + const { projectCode } = to.params || {} + if (!blacklist.includes(to.name) && projectCode && projectCode !== localStore.getItem('projectCode')) { + store.dispatch('projects/getProjectByCode', projectCode).then(res => { + store.commit('dag/setProjectId', res.id) + store.commit('dag/setProjectCode', res.code) + store.commit('dag/setProjectName', res.name) + localStore.setItem('projectId', res.id) + localStore.setItem('projectCode', res.code) + localStore.setItem('projectName', res.name) + next() + }).catch(e => { + next({ name: 'projects-list' }) + }) + } else { + next() + } + }, + children: [ + { + path: '/projects/list', + name: 'projects-list', + component: resolve => require(['../../pages/projects/pages/list'], resolve), + meta: { + title: `${i18n.$t('Project')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/projects/:projectCode/index', + name: 'projects-index', + component: resolve => require(['../../pages/projects/pages/index'], resolve), + meta: { + title: `${i18n.$t('Project Home')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/projects/:projectCode/kinship', + name: 'projects-kinship', + component: resolve => require(['../../pages/projects/pages/kinship'], resolve), + meta: { + title: `${i18n.$t('Kinship')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/projects/:projectCode/definition', + name: 'definition', + component: resolve => require(['../../pages/projects/pages/definition'], resolve), + meta: { + title: `${i18n.$t('Process definition')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + }, + redirect: { + name: 'projects-definition-list' + }, + children: [ + { + path: '/projects/:projectCode/definition/list', + name: 'projects-definition-list', + component: resolve => require(['../../pages/projects/pages/definition/pages/list'], resolve), + meta: { + title: `${i18n.$t('Process definition')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/projects/:projectCode/definition/list/:code', + name: 'projects-definition-details', + component: resolve => require(['../../pages/projects/pages/definition/pages/details'], resolve), + meta: { + title: `${i18n.$t('Process definition details')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/projects/:projectCode/definition/create', + name: 'definition-create', + component: resolve => require(['../../pages/projects/pages/definition/pages/create'], resolve), + meta: { + title: `${i18n.$t('Create process definition')}` + } + }, + { + path: '/projects/:projectCode/definition/tree/:code', + name: 'definition-tree-view-index', + component: resolve => require(['../../pages/projects/pages/definition/pages/tree'], resolve), + meta: { + title: `${i18n.$t('TreeView')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/projects/:projectCode/definition/list/timing/:code', + name: 'definition-timing-details', + component: resolve => require(['../../pages/projects/pages/definition/timing'], resolve), + meta: { + title: `${i18n.$t('Scheduled task list')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + } + ] + }, + { + path: '/projects/:projectCode/instance', + name: 'instance', + component: resolve => require(['../../pages/projects/pages/instance'], resolve), + meta: { + title: `${i18n.$t('Process Instance')}` + }, + redirect: { + name: 'projects-instance-list' + }, + children: [ + { + path: '/projects/:projectCode/instance/list', + name: 'projects-instance-list', + component: resolve => require(['../../pages/projects/pages/instance/pages/list'], resolve), + meta: { + title: `${i18n.$t('Process Instance')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/projects/:projectCode/instance/list/:id', + name: 'projects-instance-details', + component: resolve => require(['../../pages/projects/pages/instance/pages/details'], resolve), + meta: { + title: `${i18n.$t('Process instance details')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/projects/:projectCode/instance/gantt/:id', + name: 'instance-gantt-index', + component: resolve => require(['../../pages/projects/pages/instance/pages/gantt'], resolve), + meta: { + title: `${i18n.$t('Gantt')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + } + ] + }, + { + path: '/projects/:projectCode/task-instance', + name: 'task-instance', + component: resolve => require(['../../pages/projects/pages/taskInstance'], resolve), + meta: { + title: `${i18n.$t('Task Instance')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + + }, + { + path: '/projects/:projectCode/task-definition', + name: 'task-definition', + component: resolve => require(['../../pages/projects/pages/taskDefinition'], resolve), + meta: { + title: `${i18n.$t('Task Definition')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/projects/:projectCode/task-record', + name: 'task-record', + component: resolve => require(['../../pages/projects/pages/taskRecord'], resolve), + meta: { + title: `${i18n.$t('Task record')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/projects/:projectCode/history-task-record', + name: 'history-task-record', + component: resolve => require(['../../pages/projects/pages/historyTaskRecord'], resolve), + meta: { + title: `${i18n.$t('History task record')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + + } + ] + } +] + +export default projects diff --git a/dolphinscheduler-ui/src/js/conf/home/router/module/resource.js b/dolphinscheduler-ui/src/js/conf/home/router/module/resource.js new file mode 100644 index 0000000000..6543995625 --- /dev/null +++ b/dolphinscheduler-ui/src/js/conf/home/router/module/resource.js @@ -0,0 +1,160 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import i18n from '@/module/i18n/index.js' +import config from '~/external/config' + +const resource = [ + { + path: '/resource', + name: 'resource', + component: resolve => require(['../../pages/resource'], resolve), + redirect: { + name: 'file' + }, + meta: { + title: `${i18n.$t('Resources')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + }, + children: [ + { + path: '/resource/file', + name: 'file', + component: resolve => require(['../../pages/resource/pages/file/pages/list'], resolve), + meta: { + title: `${i18n.$t('File Manage')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/resource/file/create', + name: 'resource-file-create', + component: resolve => require(['../../pages/resource/pages/file/pages/create'], resolve), + meta: { + title: `${i18n.$t('Create Resource')}` + } + }, + { + path: '/resource/file/createFolder', + name: 'resource-file-createFolder', + component: resolve => require(['../../pages/resource/pages/file/pages/createFolder'], resolve), + meta: { + title: `${i18n.$t('Create Resource')}` + } + }, + { + path: '/resource/file/subFileFolder/:id', + name: 'resource-file-subFileFolder', + component: resolve => require(['../../pages/resource/pages/file/pages/subFileFolder'], resolve), + meta: { + title: `${i18n.$t('Create Resource')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/resource/file/subFile/:id', + name: 'resource-file-subFile', + component: resolve => require(['../../pages/resource/pages/file/pages/subFile'], resolve), + meta: { + title: `${i18n.$t('Create Resource')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/resource/file/list/:id', + name: 'resource-file-details', + component: resolve => require(['../../pages/resource/pages/file/pages/details'], resolve), + meta: { + title: `${i18n.$t('File Details')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/resource/file/subdirectory/:id', + name: 'resource-file-subdirectory', + component: resolve => require(['../../pages/resource/pages/file/pages/subdirectory'], resolve), + meta: { + title: `${i18n.$t('File Manage')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/resource/file/edit/:id', + name: 'resource-file-edit', + component: resolve => require(['../../pages/resource/pages/file/pages/edit'], resolve), + meta: { + title: `${i18n.$t('File Details')}` + } + }, + { + path: '/resource/udf', + name: 'udf', + component: resolve => require(['../../pages/resource/pages/udf'], resolve), + meta: { + title: `${i18n.$t('UDF manage')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + }, + children: [ + { + path: '/resource/udf', + name: 'resource-udf', + component: resolve => require(['../../pages/resource/pages/udf/pages/resource'], resolve), + meta: { + title: `${i18n.$t('UDF Resources')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/resource/udf/subUdfDirectory/:id', + name: 'resource-udf-subUdfDirectory', + component: resolve => require(['../../pages/resource/pages/udf/pages/subUdfDirectory'], resolve), + meta: { + title: `${i18n.$t('UDF Resources')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/resource/udf/createUdfFolder', + name: 'resource-udf-createUdfFolder', + component: resolve => require(['../../pages/resource/pages/udf/pages/createUdfFolder'], resolve), + meta: { + title: `${i18n.$t('Create Resource')}` + } + }, + { + path: '/resource/udf/subCreateUdfFolder/:id', + name: 'resource-udf-subCreateUdfFolder', + component: resolve => require(['../../pages/resource/pages/udf/pages/subUdfFolder'], resolve), + meta: { + title: `${i18n.$t('Create Resource')}` + } + }, + { + path: '/resource/func', + name: 'resource-func', + component: resolve => require(['../../pages/resource/pages/udf/pages/function'], resolve), + meta: { + title: `${i18n.$t('UDF Function')}` + } + } + ] + } + ] + } +] + +export default resource diff --git a/dolphinscheduler-ui/src/js/conf/home/router/module/security.js b/dolphinscheduler-ui/src/js/conf/home/router/module/security.js new file mode 100644 index 0000000000..4087460f19 --- /dev/null +++ b/dolphinscheduler-ui/src/js/conf/home/router/module/security.js @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import i18n from '@/module/i18n/index.js' +import config from '~/external/config' + +const security = [ + { + path: '/security', + name: 'security', + component: resolve => require(['../../pages/security'], resolve), + meta: { + title: `${i18n.$t('Security')}` + }, + redirect: { + name: 'tenement-manage' + }, + children: [ + { + path: '/security/tenant', + name: 'tenement-manage', + component: resolve => require(['../../pages/security/pages/tenement'], resolve), + meta: { + title: `${i18n.$t('Tenant Manage')}` + } + }, + { + path: '/security/users', + name: 'users-manage', + component: resolve => require(['../../pages/security/pages/users'], resolve), + meta: { + title: `${i18n.$t('User Manage')}`, + refreshInSwitchedTab: config.refreshInSwitchedTab + } + }, + { + path: '/security/warning-groups', + name: 'warning-groups-manage', + component: resolve => require(['../../pages/security/pages/warningGroups'], resolve), + meta: { + title: `${i18n.$t('Warning group manage')}` + } + }, + { + path: '/security/warning-instance', + name: 'warning-instance-manage', + component: resolve => require(['../../pages/security/pages/warningInstance'], resolve), + meta: { + title: `${i18n.$t('Warning instance manage')}` + } + }, + { + path: '/security/queue', + name: 'queue-manage', + component: resolve => require(['../../pages/security/pages/queue'], resolve), + meta: { + title: `${i18n.$t('Queue manage')}` + } + }, + { + path: '/security/worker-groups', + name: 'worker-groups-manage', + component: resolve => require(['../../pages/security/pages/workerGroups'], resolve), + meta: { + title: `${i18n.$t('Worker group manage')}` + } + }, + { + path: '/security/environments', + name: 'environment-manage', + component: resolve => require(['../../pages/security/pages/environment'], resolve), + meta: { + title: `${i18n.$t('Environment manage')}` + } + }, + { + path: '/security/token', + name: 'token-manage', + component: resolve => require(['../../pages/security/pages/token'], resolve), + meta: { + title: `${i18n.$t('Token manage')}` + } + } + ] + } +] + +export default security diff --git a/dolphinscheduler-ui/src/js/conf/home/router/module/user.js b/dolphinscheduler-ui/src/js/conf/home/router/module/user.js new file mode 100644 index 0000000000..9dd29a46e8 --- /dev/null +++ b/dolphinscheduler-ui/src/js/conf/home/router/module/user.js @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import i18n from '@/module/i18n/index.js' + +const user = [ + { + path: '/user', + name: 'user', + component: resolve => require(['../../pages/user'], resolve), + meta: { + title: `${i18n.$t('User Center')}` + }, + redirect: { + name: 'account' + }, + children: [ + { + path: '/user/account', + name: 'account', + component: resolve => require(['../../pages/user/pages/account'], resolve), + meta: { + title: `${i18n.$t('User Information')}` + } + }, + { + path: '/user/password', + name: 'password', + component: resolve => require(['../../pages/user/pages/password'], resolve), + meta: { + title: `${i18n.$t('Edit password')}` + } + }, + { + path: '/user/token', + name: 'token', + component: resolve => require(['../../pages/user/pages/token'], resolve), + meta: { + title: `${i18n.$t('Token manage')}` + } + } + ] + } +] + +export default user