fcad-core-dragon 2.0.0-beta.6 → 2.0.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG +3 -0
- package/package.json +1 -1
- package/src/components/AppBaseModule.vue +10 -50
- package/src/router/routes.js +312 -312
package/CHANGELOG
CHANGED
package/package.json
CHANGED
|
@@ -104,6 +104,8 @@
|
|
|
104
104
|
</div>
|
|
105
105
|
</template>
|
|
106
106
|
<script>
|
|
107
|
+
// const modules = import.meta.glob('@/module/**/*.vue')
|
|
108
|
+
import { fileAssets } from '../shared/generalfuncs.js'
|
|
107
109
|
import { mapState, mapActions } from 'pinia'
|
|
108
110
|
import { useAppStore } from '../module/stores/appStore'
|
|
109
111
|
import BaseModule from './BaseModule.vue'
|
|
@@ -266,52 +268,6 @@ export default {
|
|
|
266
268
|
return mainEl
|
|
267
269
|
},
|
|
268
270
|
|
|
269
|
-
// dynamicSidebarContent() {
|
|
270
|
-
// if (!this.transcriptVisible && !this.branchingVisible) return null
|
|
271
|
-
// let sidebarSettings = {}
|
|
272
|
-
// let _label = null
|
|
273
|
-
|
|
274
|
-
// if (this.transcriptVisible) {
|
|
275
|
-
// _label =
|
|
276
|
-
// this.$i18n.locale === 'fr'
|
|
277
|
-
// ? 'Contenu de la transcription'
|
|
278
|
-
// : 'Content of the transcript'
|
|
279
|
-
|
|
280
|
-
// sidebarSettings = {
|
|
281
|
-
// _component: AppCompContainer,
|
|
282
|
-
// _comProps: {
|
|
283
|
-
// content: this.transcriptContent
|
|
284
|
-
// },
|
|
285
|
-
// _context: 'ctxTranscript',
|
|
286
|
-
// _container: this.transcriptContainer,
|
|
287
|
-
// _label,
|
|
288
|
-
// _id: 'transcript'
|
|
289
|
-
// }
|
|
290
|
-
// } else if (this.branchingVisible) {
|
|
291
|
-
// if (this.$route.meta.type !== 'branching' || !this.compID) return null
|
|
292
|
-
|
|
293
|
-
// const componentName = this.compID
|
|
294
|
-
// const { activityRef } = this.getCurrentPage //get activity id from current page
|
|
295
|
-
|
|
296
|
-
// _label =
|
|
297
|
-
// this.$i18n.locale === 'fr'
|
|
298
|
-
// ? "contenu de l'embranchement"
|
|
299
|
-
// : 'content of the branching'
|
|
300
|
-
|
|
301
|
-
// sidebarSettings = {
|
|
302
|
-
// _component: defineAsyncComponent(
|
|
303
|
-
// async () =>
|
|
304
|
-
// await import(`@/module/${activityRef}/${componentName}.vue`)
|
|
305
|
-
// ),
|
|
306
|
-
|
|
307
|
-
// _comProps: false,
|
|
308
|
-
// _context: 'ctxBranching',
|
|
309
|
-
// _label,
|
|
310
|
-
// _id: componentName
|
|
311
|
-
// }
|
|
312
|
-
// }
|
|
313
|
-
// return sidebarSettings
|
|
314
|
-
// },
|
|
315
271
|
dynamicSidebarContent() {
|
|
316
272
|
if (
|
|
317
273
|
!this.transcriptVisible &&
|
|
@@ -343,6 +299,7 @@ export default {
|
|
|
343
299
|
break
|
|
344
300
|
|
|
345
301
|
case this.branchingVisible: {
|
|
302
|
+
const allActivities = fileAssets.getActivities()
|
|
346
303
|
if (this.$route.meta.type !== 'branching' || !this.compID) return null
|
|
347
304
|
|
|
348
305
|
const componentName = this.compID
|
|
@@ -354,10 +311,13 @@ export default {
|
|
|
354
311
|
: 'content of the branching'
|
|
355
312
|
|
|
356
313
|
sidebarSettings = {
|
|
357
|
-
_component: defineAsyncComponent(
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
314
|
+
_component: defineAsyncComponent(async () => {
|
|
315
|
+
const compFile = allActivities.filter((f) => {
|
|
316
|
+
return f.name.includes(`/${activityRef}/${componentName}`)
|
|
317
|
+
})[0]
|
|
318
|
+
|
|
319
|
+
return compFile.content
|
|
320
|
+
}),
|
|
361
321
|
|
|
362
322
|
_comProps: false,
|
|
363
323
|
_context: 'ctxBranching',
|
package/src/router/routes.js
CHANGED
|
@@ -1,312 +1,312 @@
|
|
|
1
|
-
import AppCompViewDisplay from '../components/AppCompViewDisplay.vue'
|
|
2
|
-
import { fileAssets } from '../shared/generalfuncs'
|
|
3
|
-
//import ModuleView from '@/views/ModuleView.vue' // Uncomment for Production
|
|
4
|
-
// import SummaryView from '@/views/SummaryView.vue' // Uncomment for Production
|
|
5
|
-
|
|
6
|
-
//import ModuleView from '../externalComps/ModuleView.vue' //Only for unit-Testing
|
|
7
|
-
//import SummaryView from '../externalComps/SummaryView.vue' //Only for unit-Testing
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* The router Module defines the routes of the App by:
|
|
11
|
-
* loading the required files for module and activities pages,
|
|
12
|
-
* dynamically creating the navigation route of module base on the file in VIEWS folder
|
|
13
|
-
* dynamically creating the navigation routes of activities and branchings base on the files contained in the MODULE
|
|
14
|
-
* Creating Redirection routes for navigation error
|
|
15
|
-
* Adding the pages for the module in the STORE
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
const defaultRoutes = [] // routes of the app
|
|
19
|
-
let errorType = null
|
|
20
|
-
let viewRoute = null // holder for views routes
|
|
21
|
-
let mappedFiles = null // routes definitions
|
|
22
|
-
|
|
23
|
-
// Creating 1st route: redirection for none existing route to home(Module)
|
|
24
|
-
defaultRoutes.push({
|
|
25
|
-
path: '/:pathMatch(.*)*',
|
|
26
|
-
redirect: {
|
|
27
|
-
name: '404'
|
|
28
|
-
}
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* 2 - Creating the 2nd route: The App module route
|
|
33
|
-
*/
|
|
34
|
-
// Load all the files in the VIEWS folder
|
|
35
|
-
|
|
36
|
-
const defaultRoute = {
|
|
37
|
-
path: '/',
|
|
38
|
-
component: AppCompViewDisplay,
|
|
39
|
-
children: [],
|
|
40
|
-
meta: {}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
if (fileAssets.getViews().length > 0) {
|
|
44
|
-
let hasModule = false
|
|
45
|
-
let hasSummary = false
|
|
46
|
-
let fileRef = null
|
|
47
|
-
let splitted = null
|
|
48
|
-
let fileName = null
|
|
49
|
-
let fileContent = null
|
|
50
|
-
|
|
51
|
-
for (let view of fileAssets.getViews()) {
|
|
52
|
-
fileRef = view.name.replace(/(\.\/)/g, '')
|
|
53
|
-
splitted = fileRef.split('/')
|
|
54
|
-
fileName = splitted[splitted.length - 1].replace(/(\.vue)/g, '')
|
|
55
|
-
fileContent = view.content
|
|
56
|
-
|
|
57
|
-
// Create route for the views
|
|
58
|
-
viewRoute = {
|
|
59
|
-
name: fileName.toLowerCase(),
|
|
60
|
-
|
|
61
|
-
meta: {}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (fileName.toLowerCase() === 'moduleview' && fileContent.data) {
|
|
65
|
-
viewRoute.path = ''
|
|
66
|
-
viewRoute.name = 'module'
|
|
67
|
-
viewRoute.component = () => import(`@/views/ModuleView.vue`)
|
|
68
|
-
viewRoute.children = []
|
|
69
|
-
viewRoute.meta.children = []
|
|
70
|
-
hasModule = true
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (fileName.toLowerCase() == 'summaryview' && fileContent.data) {
|
|
74
|
-
viewRoute.path = '/menu'
|
|
75
|
-
viewRoute.name = 'menu'
|
|
76
|
-
viewRoute.component = () => import(`@/views/SummaryView.vue`)
|
|
77
|
-
viewRoute.meta.type = 'menu'
|
|
78
|
-
viewRoute.meta.id = 'pg_menu'
|
|
79
|
-
hasSummary = true
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
defaultRoute.children.push(viewRoute)
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// Create activities routes for the ModuleView
|
|
86
|
-
if (hasModule) {
|
|
87
|
-
const moduleRoute = defaultRoute.children.find((r) => r.name == 'module') //Get ModuleView route
|
|
88
|
-
//================== Routes For Activities ================//
|
|
89
|
-
// Load files in module folder
|
|
90
|
-
const _allFiles = fileAssets.getActivities()
|
|
91
|
-
|
|
92
|
-
mappedFiles = fileAssets.buildMapTree(_allFiles)
|
|
93
|
-
let abstractRouteForActivity = {}
|
|
94
|
-
if (!mappedFiles.size) errorType = 'errorPage'
|
|
95
|
-
|
|
96
|
-
//There is a file in the module folder
|
|
97
|
-
/**
|
|
98
|
-
* Define a route for each Activity and its pages
|
|
99
|
-
* Set all nested routes in Activities
|
|
100
|
-
* Set the activies routes as children of module route
|
|
101
|
-
*/
|
|
102
|
-
let activityCount = 0
|
|
103
|
-
|
|
104
|
-
const buildRouteWithNested = ($arr, $folderName, ctx = '') => {
|
|
105
|
-
let bCounter = 0 //branch counter
|
|
106
|
-
|
|
107
|
-
let mainRoute = {}
|
|
108
|
-
for (const [key, value] of $arr) {
|
|
109
|
-
let pgIDtoNum = parseInt(key.slice(1))
|
|
110
|
-
let firstEl = $arr.entries().next().value
|
|
111
|
-
|
|
112
|
-
if (value.constructor === Map)
|
|
113
|
-
buildRouteWithNested(value, $folderName, ctx)
|
|
114
|
-
|
|
115
|
-
if (key == firstEl[0]) {
|
|
116
|
-
//Define the main route according to 1st page id
|
|
117
|
-
mainRoute = (() => {
|
|
118
|
-
//1st Page is branching
|
|
119
|
-
|
|
120
|
-
if (key == 'P01')
|
|
121
|
-
return {
|
|
122
|
-
path: `page-1`,
|
|
123
|
-
name: `${ctx.replace('-', '_')}`,
|
|
124
|
-
component: () => import(`@/${firstEl[1].ref}.vue`),
|
|
125
|
-
children: [],
|
|
126
|
-
meta: {
|
|
127
|
-
id: firstEl[0],
|
|
128
|
-
type: 'branching',
|
|
129
|
-
activity_ref: $folderName, // Axx
|
|
130
|
-
children: []
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
return {
|
|
135
|
-
path: `page-${pgIDtoNum}`,
|
|
136
|
-
name: `${ctx.replace('-', '_')}.page_${pgIDtoNum}`,
|
|
137
|
-
component: () => import(`@/${firstEl[1].ref}.vue`),
|
|
138
|
-
children: [],
|
|
139
|
-
meta: {
|
|
140
|
-
id: firstEl[0],
|
|
141
|
-
type: 'branching',
|
|
142
|
-
activity_ref: $folderName, // Axx
|
|
143
|
-
parent: {
|
|
144
|
-
_ref: 'P01',
|
|
145
|
-
_path: ctx, // activite-xx
|
|
146
|
-
_namedRoute: ctx.replace('-', '_') // activite_xx
|
|
147
|
-
},
|
|
148
|
-
children: []
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
})()
|
|
152
|
-
} else {
|
|
153
|
-
bCounter += 1
|
|
154
|
-
// build abstract route for branching
|
|
155
|
-
let branchRoute = {
|
|
156
|
-
path: `branche-${bCounter}`,
|
|
157
|
-
name: `${mainRoute.name}.branche_${bCounter}`,
|
|
158
|
-
component: () => import(`@/${value.ref}.vue`),
|
|
159
|
-
meta: {
|
|
160
|
-
id: key,
|
|
161
|
-
type: 'branch_page',
|
|
162
|
-
activity_ref: $folderName,
|
|
163
|
-
_branchingRef: `${firstEl[0]}.branch_${bCounter}`,
|
|
164
|
-
parent: {
|
|
165
|
-
_ref: firstEl[0],
|
|
166
|
-
_path: mainRoute.path,
|
|
167
|
-
_namedRoute: mainRoute.name
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
mainRoute.children.push(branchRoute)
|
|
172
|
-
mainRoute.meta.children.push({
|
|
173
|
-
_ref: key,
|
|
174
|
-
_path: branchRoute.path,
|
|
175
|
-
_namedRoute: branchRoute.name
|
|
176
|
-
})
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
return mainRoute
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
for (const [$folderName, $pages] of mappedFiles) {
|
|
184
|
-
let activityPageCount = 0 // page counter
|
|
185
|
-
//build a abstract route for each folder/activity
|
|
186
|
-
abstractRouteForActivity = {
|
|
187
|
-
component: AppCompViewDisplay,
|
|
188
|
-
meta: {
|
|
189
|
-
id: $folderName,
|
|
190
|
-
children: []
|
|
191
|
-
},
|
|
192
|
-
children: []
|
|
193
|
-
}
|
|
194
|
-
//Define the path for each folder
|
|
195
|
-
if ($folderName === 'A00') {
|
|
196
|
-
abstractRouteForActivity.path = 'introduction'
|
|
197
|
-
} else if ($folderName === 'A99') {
|
|
198
|
-
abstractRouteForActivity.path = 'conclusion'
|
|
199
|
-
} else {
|
|
200
|
-
activityCount++
|
|
201
|
-
abstractRouteForActivity.path = `activite-${activityCount}`
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
//Build the Route for each page of the Activity
|
|
205
|
-
for (const [$pageRef, $page] of $pages) {
|
|
206
|
-
let activityRoute
|
|
207
|
-
activityPageCount++
|
|
208
|
-
|
|
209
|
-
if ($page.constructor === Object) {
|
|
210
|
-
let firstPage = $pages.entries().next().value
|
|
211
|
-
if ($pageRef == firstPage[0]) {
|
|
212
|
-
activityRoute = {
|
|
213
|
-
path: 'page-1',
|
|
214
|
-
name: abstractRouteForActivity.path.replace('-', '_'), //activite_xx
|
|
215
|
-
component: () => import(`@/${$page.ref}.vue`),
|
|
216
|
-
meta: {
|
|
217
|
-
id: `${$pageRef}`,
|
|
218
|
-
activity_ref: $folderName,
|
|
219
|
-
type: (() => {
|
|
220
|
-
return abstractRouteForActivity.path.includes('activite')
|
|
221
|
-
? 'normal'
|
|
222
|
-
: abstractRouteForActivity.path
|
|
223
|
-
})(),
|
|
224
|
-
parent: {
|
|
225
|
-
_ref: `${$pageRef}`,
|
|
226
|
-
_path: abstractRouteForActivity.path,
|
|
227
|
-
_namedRoute: abstractRouteForActivity.path.replace('-', '_')
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
} else {
|
|
232
|
-
activityRoute = {
|
|
233
|
-
path: `page-${activityPageCount}`,
|
|
234
|
-
name: (() => {
|
|
235
|
-
let str = abstractRouteForActivity.path.replace('-', '_')
|
|
236
|
-
|
|
237
|
-
if (activityPageCount > 1)
|
|
238
|
-
str = `${str}.page_${activityPageCount}`
|
|
239
|
-
|
|
240
|
-
return str
|
|
241
|
-
})(),
|
|
242
|
-
component: () => import(`@/${$page.ref}.vue`),
|
|
243
|
-
meta: {
|
|
244
|
-
id: $pageRef,
|
|
245
|
-
activity_ref: $folderName,
|
|
246
|
-
type: (() => {
|
|
247
|
-
return abstractRouteForActivity.path.includes('activite')
|
|
248
|
-
? 'normal'
|
|
249
|
-
: abstractRouteForActivity.path
|
|
250
|
-
})(),
|
|
251
|
-
parent: {
|
|
252
|
-
_ref: `${$pageRef}`,
|
|
253
|
-
_path: abstractRouteForActivity.path,
|
|
254
|
-
_namedRoute: abstractRouteForActivity.path.replace('-', '_')
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
//Handling Branching Routes
|
|
261
|
-
if ($page.constructor === Map) {
|
|
262
|
-
const ctx = abstractRouteForActivity.path
|
|
263
|
-
activityRoute = buildRouteWithNested($page, $folderName, ctx)
|
|
264
|
-
}
|
|
265
|
-
//add page route into activity children
|
|
266
|
-
abstractRouteForActivity.children.push(activityRoute)
|
|
267
|
-
|
|
268
|
-
//add page route reference into in activity meta
|
|
269
|
-
abstractRouteForActivity.meta.children.push({
|
|
270
|
-
_ref: activityRoute.meta.id,
|
|
271
|
-
_path: activityRoute.path,
|
|
272
|
-
_namedRoute: activityRoute.name
|
|
273
|
-
})
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
moduleRoute.meta.children.push({
|
|
277
|
-
_ref: $folderName,
|
|
278
|
-
_path: abstractRouteForActivity.path,
|
|
279
|
-
_namedRoute: abstractRouteForActivity.path.replace('-', '_')
|
|
280
|
-
})
|
|
281
|
-
|
|
282
|
-
moduleRoute.children.push(abstractRouteForActivity)
|
|
283
|
-
}
|
|
284
|
-
} else errorType = 'errorModule'
|
|
285
|
-
if (!hasSummary) errorType = 'errorMenu'
|
|
286
|
-
} else errorType = 'errorModule'
|
|
287
|
-
|
|
288
|
-
if (!errorType) {
|
|
289
|
-
defaultRoutes.push(defaultRoute)
|
|
290
|
-
} else
|
|
291
|
-
defaultRoutes.push({
|
|
292
|
-
path: '/',
|
|
293
|
-
component: () => import(`../components/AppBaseErrorDisplay.vue`),
|
|
294
|
-
props: {
|
|
295
|
-
errorGroup: 'application',
|
|
296
|
-
errorType: errorType
|
|
297
|
-
}
|
|
298
|
-
})
|
|
299
|
-
|
|
300
|
-
// Routes for errors : 404
|
|
301
|
-
defaultRoutes.push({
|
|
302
|
-
path: '/404',
|
|
303
|
-
name: '404',
|
|
304
|
-
component: () => import(`../components/AppBaseErrorDisplay.vue`),
|
|
305
|
-
props: {
|
|
306
|
-
errorGroup: 'application',
|
|
307
|
-
errorType: '404'
|
|
308
|
-
}
|
|
309
|
-
})
|
|
310
|
-
|
|
311
|
-
export default defaultRoutes
|
|
312
|
-
export { mappedFiles }
|
|
1
|
+
import AppCompViewDisplay from '../components/AppCompViewDisplay.vue'
|
|
2
|
+
import { fileAssets } from '../shared/generalfuncs'
|
|
3
|
+
//import ModuleView from '@/views/ModuleView.vue' // Uncomment for Production
|
|
4
|
+
// import SummaryView from '@/views/SummaryView.vue' // Uncomment for Production
|
|
5
|
+
|
|
6
|
+
//import ModuleView from '../externalComps/ModuleView.vue' //Only for unit-Testing
|
|
7
|
+
//import SummaryView from '../externalComps/SummaryView.vue' //Only for unit-Testing
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The router Module defines the routes of the App by:
|
|
11
|
+
* loading the required files for module and activities pages,
|
|
12
|
+
* dynamically creating the navigation route of module base on the file in VIEWS folder
|
|
13
|
+
* dynamically creating the navigation routes of activities and branchings base on the files contained in the MODULE
|
|
14
|
+
* Creating Redirection routes for navigation error
|
|
15
|
+
* Adding the pages for the module in the STORE
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
const defaultRoutes = [] // routes of the app
|
|
19
|
+
let errorType = null
|
|
20
|
+
let viewRoute = null // holder for views routes
|
|
21
|
+
let mappedFiles = null // routes definitions
|
|
22
|
+
|
|
23
|
+
// Creating 1st route: redirection for none existing route to home(Module)
|
|
24
|
+
defaultRoutes.push({
|
|
25
|
+
path: '/:pathMatch(.*)*',
|
|
26
|
+
redirect: {
|
|
27
|
+
name: '404'
|
|
28
|
+
}
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* 2 - Creating the 2nd route: The App module route
|
|
33
|
+
*/
|
|
34
|
+
// Load all the files in the VIEWS folder
|
|
35
|
+
|
|
36
|
+
const defaultRoute = {
|
|
37
|
+
path: '/',
|
|
38
|
+
component: AppCompViewDisplay,
|
|
39
|
+
children: [],
|
|
40
|
+
meta: {}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (fileAssets.getViews().length > 0) {
|
|
44
|
+
let hasModule = false
|
|
45
|
+
let hasSummary = false
|
|
46
|
+
let fileRef = null
|
|
47
|
+
let splitted = null
|
|
48
|
+
let fileName = null
|
|
49
|
+
let fileContent = null
|
|
50
|
+
|
|
51
|
+
for (let view of fileAssets.getViews()) {
|
|
52
|
+
fileRef = view.name.replace(/(\.\/)/g, '')
|
|
53
|
+
splitted = fileRef.split('/')
|
|
54
|
+
fileName = splitted[splitted.length - 1].replace(/(\.vue)/g, '')
|
|
55
|
+
fileContent = view.content
|
|
56
|
+
|
|
57
|
+
// Create route for the views
|
|
58
|
+
viewRoute = {
|
|
59
|
+
name: fileName.toLowerCase(),
|
|
60
|
+
|
|
61
|
+
meta: {}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (fileName.toLowerCase() === 'moduleview' && fileContent.data) {
|
|
65
|
+
viewRoute.path = ''
|
|
66
|
+
viewRoute.name = 'module'
|
|
67
|
+
viewRoute.component = () => import(`@/views/ModuleView.vue`)
|
|
68
|
+
viewRoute.children = []
|
|
69
|
+
viewRoute.meta.children = []
|
|
70
|
+
hasModule = true
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (fileName.toLowerCase() == 'summaryview' && fileContent.data) {
|
|
74
|
+
viewRoute.path = '/menu'
|
|
75
|
+
viewRoute.name = 'menu'
|
|
76
|
+
viewRoute.component = () => import(`@/views/SummaryView.vue`)
|
|
77
|
+
viewRoute.meta.type = 'menu'
|
|
78
|
+
viewRoute.meta.id = 'pg_menu'
|
|
79
|
+
hasSummary = true
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
defaultRoute.children.push(viewRoute)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Create activities routes for the ModuleView
|
|
86
|
+
if (hasModule) {
|
|
87
|
+
const moduleRoute = defaultRoute.children.find((r) => r.name == 'module') //Get ModuleView route
|
|
88
|
+
//================== Routes For Activities ================//
|
|
89
|
+
// Load files in module folder
|
|
90
|
+
const _allFiles = fileAssets.getActivities()
|
|
91
|
+
|
|
92
|
+
mappedFiles = fileAssets.buildMapTree(_allFiles)
|
|
93
|
+
let abstractRouteForActivity = {}
|
|
94
|
+
if (!mappedFiles.size) errorType = 'errorPage'
|
|
95
|
+
|
|
96
|
+
//There is a file in the module folder
|
|
97
|
+
/**
|
|
98
|
+
* Define a route for each Activity and its pages
|
|
99
|
+
* Set all nested routes in Activities
|
|
100
|
+
* Set the activies routes as children of module route
|
|
101
|
+
*/
|
|
102
|
+
let activityCount = 0
|
|
103
|
+
|
|
104
|
+
const buildRouteWithNested = ($arr, $folderName, ctx = '') => {
|
|
105
|
+
let bCounter = 0 //branch counter
|
|
106
|
+
|
|
107
|
+
let mainRoute = {}
|
|
108
|
+
for (const [key, value] of $arr) {
|
|
109
|
+
let pgIDtoNum = parseInt(key.slice(1))
|
|
110
|
+
let firstEl = $arr.entries().next().value
|
|
111
|
+
|
|
112
|
+
if (value.constructor === Map)
|
|
113
|
+
buildRouteWithNested(value, $folderName, ctx)
|
|
114
|
+
|
|
115
|
+
if (key == firstEl[0]) {
|
|
116
|
+
//Define the main route according to 1st page id
|
|
117
|
+
mainRoute = (() => {
|
|
118
|
+
//1st Page is branching
|
|
119
|
+
|
|
120
|
+
if (key == 'P01')
|
|
121
|
+
return {
|
|
122
|
+
path: `page-1`,
|
|
123
|
+
name: `${ctx.replace('-', '_')}`,
|
|
124
|
+
component: () => import(`@/${firstEl[1].ref}.vue`),
|
|
125
|
+
children: [],
|
|
126
|
+
meta: {
|
|
127
|
+
id: firstEl[0],
|
|
128
|
+
type: 'branching',
|
|
129
|
+
activity_ref: $folderName, // Axx
|
|
130
|
+
children: []
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return {
|
|
135
|
+
path: `page-${pgIDtoNum}`,
|
|
136
|
+
name: `${ctx.replace('-', '_')}.page_${pgIDtoNum}`,
|
|
137
|
+
component: () => import(`@/${firstEl[1].ref}.vue`),
|
|
138
|
+
children: [],
|
|
139
|
+
meta: {
|
|
140
|
+
id: firstEl[0],
|
|
141
|
+
type: 'branching',
|
|
142
|
+
activity_ref: $folderName, // Axx
|
|
143
|
+
parent: {
|
|
144
|
+
_ref: 'P01',
|
|
145
|
+
_path: ctx, // activite-xx
|
|
146
|
+
_namedRoute: ctx.replace('-', '_') // activite_xx
|
|
147
|
+
},
|
|
148
|
+
children: []
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
})()
|
|
152
|
+
} else {
|
|
153
|
+
bCounter += 1
|
|
154
|
+
// build abstract route for branching
|
|
155
|
+
let branchRoute = {
|
|
156
|
+
path: `branche-${bCounter}`,
|
|
157
|
+
name: `${mainRoute.name}.branche_${bCounter}`,
|
|
158
|
+
component: () => import(`@/${value.ref}.vue`),
|
|
159
|
+
meta: {
|
|
160
|
+
id: key,
|
|
161
|
+
type: 'branch_page',
|
|
162
|
+
activity_ref: $folderName,
|
|
163
|
+
_branchingRef: `${firstEl[0]}.branch_${bCounter}`,
|
|
164
|
+
parent: {
|
|
165
|
+
_ref: firstEl[0],
|
|
166
|
+
_path: mainRoute.path,
|
|
167
|
+
_namedRoute: mainRoute.name
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
mainRoute.children.push(branchRoute)
|
|
172
|
+
mainRoute.meta.children.push({
|
|
173
|
+
_ref: key,
|
|
174
|
+
_path: branchRoute.path,
|
|
175
|
+
_namedRoute: branchRoute.name
|
|
176
|
+
})
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return mainRoute
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
for (const [$folderName, $pages] of mappedFiles) {
|
|
184
|
+
let activityPageCount = 0 // page counter
|
|
185
|
+
//build a abstract route for each folder/activity
|
|
186
|
+
abstractRouteForActivity = {
|
|
187
|
+
component: AppCompViewDisplay,
|
|
188
|
+
meta: {
|
|
189
|
+
id: $folderName,
|
|
190
|
+
children: []
|
|
191
|
+
},
|
|
192
|
+
children: []
|
|
193
|
+
}
|
|
194
|
+
//Define the path for each folder
|
|
195
|
+
if ($folderName === 'A00') {
|
|
196
|
+
abstractRouteForActivity.path = 'introduction'
|
|
197
|
+
} else if ($folderName === 'A99') {
|
|
198
|
+
abstractRouteForActivity.path = 'conclusion'
|
|
199
|
+
} else {
|
|
200
|
+
activityCount++
|
|
201
|
+
abstractRouteForActivity.path = `activite-${activityCount}`
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
//Build the Route for each page of the Activity
|
|
205
|
+
for (const [$pageRef, $page] of $pages) {
|
|
206
|
+
let activityRoute
|
|
207
|
+
activityPageCount++
|
|
208
|
+
|
|
209
|
+
if ($page.constructor === Object) {
|
|
210
|
+
let firstPage = $pages.entries().next().value
|
|
211
|
+
if ($pageRef == firstPage[0]) {
|
|
212
|
+
activityRoute = {
|
|
213
|
+
path: 'page-1',
|
|
214
|
+
name: abstractRouteForActivity.path.replace('-', '_'), //activite_xx
|
|
215
|
+
component: () => import(`@/${$page.ref}.vue`),
|
|
216
|
+
meta: {
|
|
217
|
+
id: `${$pageRef}`,
|
|
218
|
+
activity_ref: $folderName,
|
|
219
|
+
type: (() => {
|
|
220
|
+
return abstractRouteForActivity.path.includes('activite')
|
|
221
|
+
? 'normal'
|
|
222
|
+
: abstractRouteForActivity.path
|
|
223
|
+
})(),
|
|
224
|
+
parent: {
|
|
225
|
+
_ref: `${$pageRef}`,
|
|
226
|
+
_path: abstractRouteForActivity.path,
|
|
227
|
+
_namedRoute: abstractRouteForActivity.path.replace('-', '_')
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
} else {
|
|
232
|
+
activityRoute = {
|
|
233
|
+
path: `page-${activityPageCount}`,
|
|
234
|
+
name: (() => {
|
|
235
|
+
let str = abstractRouteForActivity.path.replace('-', '_')
|
|
236
|
+
|
|
237
|
+
if (activityPageCount > 1)
|
|
238
|
+
str = `${str}.page_${activityPageCount}`
|
|
239
|
+
|
|
240
|
+
return str
|
|
241
|
+
})(),
|
|
242
|
+
component: () => import(`@/${$page.ref}.vue`),
|
|
243
|
+
meta: {
|
|
244
|
+
id: $pageRef,
|
|
245
|
+
activity_ref: $folderName,
|
|
246
|
+
type: (() => {
|
|
247
|
+
return abstractRouteForActivity.path.includes('activite')
|
|
248
|
+
? 'normal'
|
|
249
|
+
: abstractRouteForActivity.path
|
|
250
|
+
})(),
|
|
251
|
+
parent: {
|
|
252
|
+
_ref: `${$pageRef}`,
|
|
253
|
+
_path: abstractRouteForActivity.path,
|
|
254
|
+
_namedRoute: abstractRouteForActivity.path.replace('-', '_')
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
//Handling Branching Routes
|
|
261
|
+
if ($page.constructor === Map) {
|
|
262
|
+
const ctx = abstractRouteForActivity.path
|
|
263
|
+
activityRoute = buildRouteWithNested($page, $folderName, ctx)
|
|
264
|
+
}
|
|
265
|
+
//add page route into activity children
|
|
266
|
+
abstractRouteForActivity.children.push(activityRoute)
|
|
267
|
+
|
|
268
|
+
//add page route reference into in activity meta
|
|
269
|
+
abstractRouteForActivity.meta.children.push({
|
|
270
|
+
_ref: activityRoute.meta.id,
|
|
271
|
+
_path: activityRoute.path,
|
|
272
|
+
_namedRoute: activityRoute.name
|
|
273
|
+
})
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
moduleRoute.meta.children.push({
|
|
277
|
+
_ref: $folderName,
|
|
278
|
+
_path: abstractRouteForActivity.path,
|
|
279
|
+
_namedRoute: abstractRouteForActivity.path.replace('-', '_')
|
|
280
|
+
})
|
|
281
|
+
|
|
282
|
+
moduleRoute.children.push(abstractRouteForActivity)
|
|
283
|
+
}
|
|
284
|
+
} else errorType = 'errorModule'
|
|
285
|
+
if (!hasSummary) errorType = 'errorMenu'
|
|
286
|
+
} else errorType = 'errorModule'
|
|
287
|
+
|
|
288
|
+
if (!errorType) {
|
|
289
|
+
defaultRoutes.push(defaultRoute)
|
|
290
|
+
} else
|
|
291
|
+
defaultRoutes.push({
|
|
292
|
+
path: '/',
|
|
293
|
+
component: () => import(`../components/AppBaseErrorDisplay.vue`),
|
|
294
|
+
props: {
|
|
295
|
+
errorGroup: 'application',
|
|
296
|
+
errorType: errorType
|
|
297
|
+
}
|
|
298
|
+
})
|
|
299
|
+
|
|
300
|
+
// Routes for errors : 404
|
|
301
|
+
defaultRoutes.push({
|
|
302
|
+
path: '/404',
|
|
303
|
+
name: '404',
|
|
304
|
+
component: () => import(`../components/AppBaseErrorDisplay.vue`),
|
|
305
|
+
props: {
|
|
306
|
+
errorGroup: 'application',
|
|
307
|
+
errorType: '404'
|
|
308
|
+
}
|
|
309
|
+
})
|
|
310
|
+
|
|
311
|
+
export default defaultRoutes
|
|
312
|
+
export { mappedFiles }
|