@things-factory/meta-ui 5.0.0-zeta.7 → 5.0.0

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.
@@ -13,13 +13,13 @@ export default function bootstrap() {
13
13
 
14
14
  auth.on('profile', async ({ credential, domains, domain }) => {
15
15
  // 1. 용어 다운로드
16
- let locale = MetaUtil.currentLocale()
17
- await TermsUtil.downloadTerminologies(locale)
16
+ let locale = MetaUtil.currentLocale();
17
+ await TermsUtil.downloadTerminologies(locale);
18
18
 
19
19
  // 2. 메뉴 정보를 서버로 부터 받아서 적용
20
- let menuRoutes = await MetaUtil.myDynamicMenus()
20
+ let menuRoutes = await MetaUtil.myDynamicMenus();
21
21
  let realMenus = menuRoutes.menus;
22
- updateMenuTemplate(realMenus)
22
+ updateMenuTemplate(realMenus);
23
23
 
24
24
  // 3. 동적 메뉴 관리 화면 추가
25
25
  store.dispatch({
@@ -43,23 +43,49 @@ export default function bootstrap() {
43
43
  navigate('config-terminology')
44
44
  }
45
45
  }
46
- })
46
+ })
47
+
48
+ // 5. 모든 routes 정보 추출
49
+ let allRoutes = menuRoutes.routes;
47
50
 
48
- // 5. store의 모듈 정보 조회 & 마지막 application 모듈 정보를 추출 & routes 정보 교체
51
+ // 6. store의 모듈 정보 조회 & 마지막 application 모듈 정보를 추출
49
52
  let modules = store.getState().app.modules;
50
- let allModules = Object.assign([], modules)
53
+ let allModules = Object.assign([], modules);
51
54
  let appModule = allModules[allModules.length - 1];
52
- appModule.routes = menuRoutes.routes;
53
55
 
54
- // 6. store에 모듈 업데이트
56
+ // 7. 최종 애플리케이션 모듈의 routes 정보 교체
57
+ appModule.routes = allRoutes.filter(r => {
58
+ return r.template && !r.template.startsWith('@things-factory')
59
+ })
60
+
61
+ // 8. meta-ui 모듈 추출
62
+ let metaUiModule = allModules.find(m => {
63
+ return m.name == '@things-factory/meta-ui'
64
+ })
65
+
66
+ // 9. meta-ui의 routes 정보 교체
67
+ let metaUiRoutes = allRoutes.filter(r => {
68
+ let isMetaUiRoute = r.template && r.template.startsWith('@things-factory/meta-ui');
69
+ if(isMetaUiRoute) {
70
+ r.template = r.template.replace('@things-factory/meta-ui/client', '.')
71
+ }
72
+
73
+ return isMetaUiRoute;
74
+ })
75
+
76
+ this.routes.forEach(r => {
77
+ metaUiRoutes.push({ page : r.page, tagname : r.tagname })
78
+ });
79
+ metaUiModule.routes = metaUiRoutes;
80
+
81
+ // 10. store에 모듈 업데이트
55
82
  store.dispatch({
56
83
  type: UPDATE_MODULES,
57
84
  modules: allModules
58
85
  })
59
86
 
60
- // 7. 첫 페이지를 리로딩 처리 (shell/app.js에서 리로딩 처리시에는 라우팅 정보가 없어서 처리를 못하므로 여기서 다시 한번 해줌...)
87
+ // 11. 첫 페이지를 리로딩 처리 (shell/app.js에서 리로딩 처리시에는 라우팅 정보가 없어서 처리를 못하므로 여기서 다시 한번 해줌...)
61
88
  // TODO 먼저 PAGE_NOT_FOUND 화면이 나온 후에 화면이 나오는 부분 처리 필요 ...
62
89
  store.dispatch(navigateWithSilence(location))
63
90
  })
64
-
65
91
  }
@@ -1,17 +1,16 @@
1
+ import '@things-factory/form-ui'
2
+ import '@things-factory/grist-ui'
3
+ import './dynamic-menu-template.js'
4
+
1
5
  import { css, html } from 'lit-element'
2
6
 
3
- import { ScrollbarStyles, CommonGristStyles } from '@operato/styles'
7
+ import { CommonGristStyles, ScrollbarStyles } from '@operato/styles'
4
8
  import { i18next, localize } from '@things-factory/i18n-base'
5
9
  import { PageView } from '@things-factory/shell'
6
10
  import { isMobileDevice } from '@things-factory/utils'
7
- import { openPopup } from '@things-factory/layout-base'
8
11
 
9
- import '@things-factory/form-ui'
10
- import '@things-factory/grist-ui'
11
- import './dynamic-menu-template.js'
12
-
13
- import { TermsUtil } from './../../utils/terms-util'
14
12
  import { MetaUtil } from '../../utils/meta-util'
13
+ import { TermsUtil } from '../../utils/terms-util'
15
14
 
16
15
  class DynamicMenu extends localize(i18next)(PageView) {
17
16
  static get properties() {
@@ -28,87 +27,95 @@ class DynamicMenu extends localize(i18next)(PageView) {
28
27
  CommonGristStyles,
29
28
  ScrollbarStyles,
30
29
  css`
31
- :host {
32
- display: flex;
33
- flex-direction: column;
34
- overflow-x: auto;
35
- background-color: var(--main-section-background-color);
36
- }
37
- .container {
38
- flex: 1;
39
- display: grid;
40
- overflow: hidden;
41
- grid-template-rows: 50% 50%;
42
- }
43
- .container_detail {
44
- background-color: var(--main-section-background-color);
45
- display: flex;
46
- flex-direction: column;
47
- flex: 1;
48
- overflow-y: auto;
49
- }
50
-
51
- h2 {
52
- padding: var(--subtitle-padding);
53
- font: var(--subtitle-font);
54
- color: var(--subtitle-text-color);
55
- border-bottom: var(--subtitle-border-bottom);
56
- }
57
-
58
- .container_detail h2 {
59
- margin: var(--grist-title-margin);
60
- border: var(--grist-title-border);
61
- font: var(--grist-title-font);
62
- color: var(--secondary-color);
63
- }
64
-
65
- .container_detail h2 mwc-icon {
66
- vertical-align: middle;
67
- margin: var(--grist-title-icon-margin);
68
- font-size: var(--grist-title-icon-size);
69
- color: var(--grist-title-icon-color);
70
- }
71
-
72
- h2 {
73
- padding-bottom: var(--grist-title-with-grid-padding);
74
- }
75
- ox-grist {
76
- overflow-y: auto;
77
- flex: 1;
78
- }
79
- .button-container {
80
- padding: var(--button-container-padding);
81
- margin: var(--button-container-margin);
82
- text-align: var(--button-container-align);
83
- background-color: var(--button-container-background);
84
- height: var(--button-container-height);
85
- text-align: right;
86
- padding-right: 12px;
87
- }
88
-
89
- mwc-button{
90
- margin-left:7px;
91
- margin-top:7px;
92
- }
93
- `]
30
+ :host {
31
+ display: flex;
32
+ flex-direction: column;
33
+ overflow-x: auto;
34
+ background-color: var(--main-section-background-color);
35
+ }
36
+ .container {
37
+ flex: 1;
38
+ display: grid;
39
+ overflow: hidden;
40
+ grid-template-rows: 50% 50%;
41
+ }
42
+ .container_detail {
43
+ background-color: var(--main-section-background-color);
44
+ display: flex;
45
+ flex-direction: column;
46
+ flex: 1;
47
+ overflow-y: auto;
48
+ }
49
+
50
+ h2 {
51
+ padding: var(--subtitle-padding);
52
+ font: var(--subtitle-font);
53
+ color: var(--subtitle-text-color);
54
+ border-bottom: var(--subtitle-border-bottom);
55
+ }
56
+
57
+ .container_detail h2 {
58
+ margin: var(--grist-title-margin);
59
+ border: var(--grist-title-border);
60
+ font: var(--grist-title-font);
61
+ color: var(--secondary-color);
62
+ }
63
+
64
+ .container_detail h2 mwc-icon {
65
+ vertical-align: middle;
66
+ margin: var(--grist-title-icon-margin);
67
+ font-size: var(--grist-title-icon-size);
68
+ color: var(--grist-title-icon-color);
69
+ }
70
+
71
+ h2 {
72
+ padding-bottom: var(--grist-title-with-grid-padding);
73
+ }
74
+ ox-grist {
75
+ overflow-y: auto;
76
+ flex: 1;
77
+ }
78
+ .button-container {
79
+ padding: var(--button-container-padding);
80
+ margin: var(--button-container-margin);
81
+ text-align: var(--button-container-align);
82
+ background-color: var(--button-container-background);
83
+ height: var(--button-container-height);
84
+ text-align: right;
85
+ padding-right: 12px;
86
+ }
87
+
88
+ mwc-button {
89
+ margin-left: 7px;
90
+ margin-top: 7px;
91
+ }
92
+ `
93
+ ]
94
94
  }
95
95
 
96
- // 화면
96
+ // 화면
97
97
  render() {
98
98
  return html`
99
99
  <div slot="headroom">
100
100
  <div id="filters">
101
- <ox-filters-form-base .filters=${this.searchFields} @filters-change=${e=> { this.groupGrist?.fetch() }}
102
- ></ox-filters-form-base>
101
+ <ox-filters-form-base
102
+ .filters=${this.searchFields}
103
+ @filters-change=${e => {
104
+ this.groupGrist?.fetch()
105
+ }}
106
+ ></ox-filters-form-base>
103
107
  </div>
104
108
  </div>
105
- <div class='container'>
109
+ <div class="container">
106
110
  <div class="container_detail">
107
- <h2>
108
- <mwc-icon>list_alt</mwc-icon>${TermsUtil.tTitle('menu_group')}
109
- </h2>
110
- <ox-grist id="group-grist" .config=${this.groupConfig} .mode=${isMobileDevice() ? 'LIST' : 'GRID'} auto-fetch
111
- .fetchHandler=${this.fetchGroupHandler.bind(this)}>
111
+ <h2><mwc-icon>list_alt</mwc-icon>${TermsUtil.tTitle('menu_group')}</h2>
112
+ <ox-grist
113
+ id="group-grist"
114
+ .config=${this.groupConfig}
115
+ .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
116
+ auto-fetch
117
+ .fetchHandler=${this.fetchGroupHandler.bind(this)}
118
+ >
112
119
  </ox-grist>
113
120
  <div id="button-container" class="button-container">
114
121
  <mwc-button raised label="${TermsUtil.tButton('save')}" @click=${e => this.saveGroup()}></mwc-button>
@@ -116,8 +123,13 @@ class DynamicMenu extends localize(i18next)(PageView) {
116
123
  </div>
117
124
  </div>
118
125
  <div class="container_detail">
119
- <ox-grist id="detail-grist" .config=${this.detailConfig} .mode=${isMobileDevice() ? 'LIST' : 'GRID'} explcit-fetch
120
- .fetchHandler=${this.fetchDetailHandler.bind(this)}>
126
+ <ox-grist
127
+ id="detail-grist"
128
+ .config=${this.detailConfig}
129
+ .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
130
+ explcit-fetch
131
+ .fetchHandler=${this.fetchDetailHandler.bind(this)}
132
+ >
121
133
  </ox-grist>
122
134
  <div id="button-container" class="button-container">
123
135
  <mwc-button raised label="${TermsUtil.tButton('save')}" @click=${e => this.saveMenu()}></mwc-button>
@@ -130,7 +142,7 @@ class DynamicMenu extends localize(i18next)(PageView) {
130
142
 
131
143
  get context() {
132
144
  return {
133
- title: TermsUtil.tTitle('dynamic_menu')
145
+ title: TermsUtil.tTitle('dynamic_menu')
134
146
  }
135
147
  }
136
148
 
@@ -139,7 +151,7 @@ class DynamicMenu extends localize(i18next)(PageView) {
139
151
  }
140
152
 
141
153
  /**
142
- * 메뉴 그룹 그리드
154
+ * 메뉴 그룹 그리드
143
155
  */
144
156
  get groupGrist() {
145
157
  return this.shadowRoot.querySelector('#group-grist')
@@ -159,16 +171,18 @@ class DynamicMenu extends localize(i18next)(PageView) {
159
171
  /**
160
172
  * @description 부모 메뉴 (메뉴 그룹) 선택시 하위 메뉴 리스트 조회
161
173
  *********************************
162
- * @param {Object} param0
174
+ * @param {Object} param0
163
175
  */
164
176
  async fetchDetailHandler({ page, limit, sorters = [{ name: 'rank' }, { name: 'name' }] }) {
165
- if(this.menuGroupId) {
166
- let filters = [{
167
- name: 'parent',
168
- operator: 'eq',
169
- value: this.menuGroupId
170
- }];
171
-
177
+ if (this.menuGroupId) {
178
+ let filters = [
179
+ {
180
+ name: 'parent',
181
+ operator: 'eq',
182
+ value: this.menuGroupId
183
+ }
184
+ ]
185
+
172
186
  let selectFields = `
173
187
  id
174
188
  name
@@ -180,28 +194,25 @@ class DynamicMenu extends localize(i18next)(PageView) {
180
194
  hiddenFlag
181
195
  iconPath
182
196
  `
183
- return await MetaUtil.searchByPagination('menus', filters, sorters, page, limit, selectFields);
197
+ return await MetaUtil.searchByPagination('menus', filters, sorters, page, limit, selectFields)
184
198
  }
185
199
  }
186
200
 
187
201
  /**
188
202
  * @description 부모 메뉴 (메뉴 그룹) 조회
189
203
  ****************************************
190
- * @param {Object} param0
191
- * @returns
204
+ * @param {Object} param0
205
+ * @returns
192
206
  */
193
207
  async fetchGroupHandler({ page, limit, sorters = [{ name: 'rank' }, { name: 'name' }] }) {
194
- // 선택된 부모 메뉴 ID 초기화
195
- this.menuGroupId = null;
208
+ // 선택된 부모 메뉴 ID 초기화
209
+ this.menuGroupId = null
196
210
 
197
- if(this.detailGrist && this.detailGrist.data) {
198
- this.detailGrist.data = {};
211
+ if (this.detailGrist && this.detailGrist.data) {
212
+ this.detailGrist.data = {}
199
213
  }
200
214
 
201
- let filters = [
202
- ...await this.searchForm.getQueryFilters(),
203
- { name: 'parent', operator: 'is_null', value: '' }
204
- ];
215
+ let filters = [...(await this.searchForm.getQueryFilters()), { name: 'parent', operator: 'is_null', value: '' }]
205
216
 
206
217
  let selectFields = `
207
218
  id
@@ -215,7 +226,7 @@ class DynamicMenu extends localize(i18next)(PageView) {
215
226
  hiddenFlag
216
227
  iconPath
217
228
  `
218
- return await MetaUtil.searchByPagination('menus', filters, sorters, page, limit, selectFields);
229
+ return await MetaUtil.searchByPagination('menus', filters, sorters, page, limit, selectFields)
219
230
  }
220
231
 
221
232
  /*******************************************/
@@ -223,38 +234,37 @@ class DynamicMenu extends localize(i18next)(PageView) {
223
234
  /*******************************************/
224
235
 
225
236
  /**
226
- * 메뉴 그룹 Create / Update
237
+ * 메뉴 그룹 Create / Update
227
238
  */
228
239
  async saveGroup() {
229
- await MetaUtil.updateMultipleData(this.groupGrist, 'updateMultipleMenu');
240
+ await MetaUtil.updateMultipleData(this.groupGrist, 'updateMultipleMenu')
230
241
  }
231
242
 
232
243
  /**
233
- * 메뉴 그룹 Delete
234
- * @returns
244
+ * 메뉴 그룹 Delete
245
+ * @returns
235
246
  */
236
247
  async deleteGroup() {
237
248
  await MetaUtil.deleteListByGristSelected(this.groupGrist, 'deleteMenus')
238
249
  }
239
250
 
240
251
  /**
241
- * 메뉴 Create / Update
252
+ * 메뉴 Create / Update
242
253
  */
243
254
  async saveMenu() {
244
- let cudRecords = this.detailGrist.dirtyRecords;
255
+ let cudRecords = this.detailGrist.dirtyRecords
245
256
 
246
257
  if (!cudRecords || cudRecords.length == 0) {
247
- MetaUtil.showAlertPopup('text.nothing_selected', 'text.there_is_nothing_to_delete', 'info', 'confirm');
248
-
258
+ MetaUtil.showAlertPopup('text.nothing_selected', 'text.there_is_nothing_to_delete', 'info', 'confirm')
249
259
  } else {
250
- let patches = MetaUtil.patchForUpdateMultiple(cudRecords);
260
+ let patches = MetaUtil.patchForUpdateMultiple(cudRecords)
251
261
 
252
262
  patches.forEach(patch => {
253
263
  patch.menuType = 'SCREEN'
254
- patch.parent = { id : this.menuGroupId }
264
+ patch.parent = { id: this.menuGroupId }
255
265
  })
256
266
 
257
- let result = await MetaUtil.updateMultiple('updateMultipleMenu', patches);
267
+ let result = await MetaUtil.updateMultiple('updateMultipleMenu', patches)
258
268
  if (result) {
259
269
  this.detailGrist.fetch()
260
270
  }
@@ -262,38 +272,38 @@ class DynamicMenu extends localize(i18next)(PageView) {
262
272
  }
263
273
 
264
274
  /**
265
- * 메뉴 Delete
266
- * @returns
275
+ * 메뉴 Delete
276
+ * @returns
267
277
  */
268
278
  async deleteMenu() {
269
279
  await MetaUtil.deleteListByGristSelected(this.detailGrist, 'deleteMenus')
270
280
  }
271
281
 
272
282
  groupMenuQuery(record) {
273
- this.menuGroupId = record.id;
274
- this.detailGrist.fetch();
283
+ this.menuGroupId = record.id
284
+ this.detailGrist.fetch()
275
285
  }
276
286
 
277
287
  /**
278
- * 메뉴 템플릿을 편집 할 수 있는 팝업을 오픈한다.
279
- * @param {Object} record
288
+ * 메뉴 템플릿을 편집 할 수 있는 팝업을 오픈한다.
289
+ * @param {Object} record
280
290
  */
281
- async openMenuTemplatePopup(record){
282
- let menuTemplateElement = MetaUtil.createCustomElement('dynamic-menu-template', 'dynamic-menu-template');
283
- menuTemplateElement.title = TermsUtil.tLabel('template');
284
- menuTemplateElement.recordId = record.id;
285
- await MetaUtil.openPopupByElement(record.name, 'large', menuTemplateElement, true);
291
+ async openMenuTemplatePopup(record) {
292
+ let menuTemplateElement = MetaUtil.createCustomElement('dynamic-menu-template', 'dynamic-menu-template')
293
+ menuTemplateElement.title = TermsUtil.tLabel('template')
294
+ menuTemplateElement.recordId = record.id
295
+ await MetaUtil.openPopupByElement(record.name, 'large', menuTemplateElement, true)
286
296
  }
287
297
 
288
298
  /**
289
- * LifeCycle
290
- * 화면 레더링 설정
291
- */
299
+ * LifeCycle
300
+ * 화면 레더링 설정
301
+ */
292
302
  async pageInitialized() {
293
303
  // 공통 코드 메뉴타입 조회
294
- let menuTypes = await MetaUtil.getCodeSelectorData('MENU_TYPE');
304
+ let menuTypes = await MetaUtil.getCodeSelectorData('MENU_TYPE')
295
305
 
296
- // 조회 필드
306
+ // 조회 필드
297
307
  this.searchFields = [
298
308
  // name, type, label, operator, optionValues
299
309
  MetaUtil.getGristSearchColumnConfig('name', 'string', 'name', 'i_like'),
@@ -301,21 +311,24 @@ class DynamicMenu extends localize(i18next)(PageView) {
301
311
  MetaUtil.getGristSearchColumnConfig('hiddenFlag', 'checkbox', 'hidden_flag', 'eq')
302
312
  ]
303
313
 
304
- // 메뉴 그룹 그리드 설정
314
+ // 메뉴 그룹 그리드 설정
305
315
  this.groupConfig = {
306
316
  rows: MetaUtil.getGristSelectableConfig(false),
307
317
  pagination: MetaUtil.getGristPagination50Config(),
308
318
  appendable: true,
309
319
  columns: [
310
320
  ...MetaUtil.getGristGuttersDefaultConfig(false),
311
- { type: 'gutter', gutterName: 'button', icon: 'menu_open',
321
+ {
322
+ type: 'gutter',
323
+ gutterName: 'button',
324
+ icon: 'menu_open',
312
325
  handlers: {
313
326
  click: (_columns, _data, _column, record, _rowIndex) => {
314
327
  if (record.id) {
315
- this.groupMenuQuery(record);
328
+ this.groupMenuQuery(record)
316
329
  }
317
330
  }
318
- },
331
+ }
319
332
  },
320
333
  // type, name, align, editable, sortable, width
321
334
  MetaUtil.getGristColumnConfig('integer', 'rank', 'right', true, false, 60),
@@ -328,7 +341,7 @@ class DynamicMenu extends localize(i18next)(PageView) {
328
341
  editable: false,
329
342
  align: 'left',
330
343
  renderer: (value, column, record, rowIndex, field) => {
331
- return record.name ? TermsUtil.tMenu(record.name) : '';
344
+ return record.name ? TermsUtil.tMenu(record.name) : ''
332
345
  }
333
346
  },
334
347
  sortable: false,
@@ -339,25 +352,28 @@ class DynamicMenu extends localize(i18next)(PageView) {
339
352
  MetaUtil.getGristSelectorColumnConfig('menuType', 'menu_type', 'left', false, 100, true, menuTypes),
340
353
  // type, name, displayName, align, editable, sortable, width
341
354
  MetaUtil.getGristColumnConfig2('string', 'iconPath', 'icon', 'left', true, false, 100),
342
- MetaUtil.getGristColumnConfig2('boolean', 'hiddenFlag', 'hidden_flag', 'center', true, false, 100),
355
+ MetaUtil.getGristColumnConfig2('boolean', 'hiddenFlag', 'hidden_flag', 'center', true, false, 100)
343
356
  ]
344
357
  }
345
358
 
346
- // 메뉴 그리드 설정
359
+ // 메뉴 그리드 설정
347
360
  this.detailConfig = {
348
361
  rows: MetaUtil.getGristSelectableConfig(false),
349
362
  pagination: MetaUtil.getGristPagination50Config(),
350
363
  appendable: true,
351
364
  columns: [
352
365
  ...MetaUtil.getGristGuttersDefaultConfig(false),
353
- { type: 'gutter', gutterName: 'button', icon: 'code',
366
+ {
367
+ type: 'gutter',
368
+ gutterName: 'button',
369
+ icon: 'code',
354
370
  handlers: {
355
371
  click: (_columns, _data, _column, record, _rowIndex) => {
356
372
  if (record.id) {
357
- this.openMenuTemplatePopup(record);
373
+ this.openMenuTemplatePopup(record)
358
374
  }
359
375
  }
360
- },
376
+ }
361
377
  },
362
378
  MetaUtil.getGristColumnConfig('integer', 'rank', 'right', true, false, 55),
363
379
  MetaUtil.getGristColumnConfig('string', 'name', 'left', true, false, 135),
@@ -369,7 +385,7 @@ class DynamicMenu extends localize(i18next)(PageView) {
369
385
  editable: false,
370
386
  align: 'left',
371
387
  renderer: (value, column, record, rowIndex, field) => {
372
- return record.name ? TermsUtil.tMenu(record.name) : '';
388
+ return record.name ? TermsUtil.tMenu(record.name) : ''
373
389
  }
374
390
  },
375
391
  sortable: false,
@@ -380,10 +396,10 @@ class DynamicMenu extends localize(i18next)(PageView) {
380
396
  MetaUtil.getGristColumnConfig('string', 'routing', 'left', true, false, 175),
381
397
  MetaUtil.getGristColumnConfig2('string', 'detailFormId', 'page_location', 'left', true, false, 450),
382
398
  MetaUtil.getGristColumnConfig2('string', 'iconPath', 'icon', 'left', true, false, 125),
383
- MetaUtil.getGristColumnConfig2('boolean', 'hiddenFlag', 'hidden_flag', 'center', true, false, 95),
399
+ MetaUtil.getGristColumnConfig2('boolean', 'hiddenFlag', 'hidden_flag', 'center', true, false, 95)
384
400
  ]
385
- }
401
+ }
386
402
  }
387
403
  }
388
404
 
389
- customElements.define('dynamic-menu', DynamicMenu)
405
+ customElements.define('dynamic-menu', DynamicMenu)
package/client/route.js CHANGED
@@ -1,10 +1,34 @@
1
+ import { store } from '@things-factory/shell'
2
+
1
3
  export default function route(page) {
2
- switch (page) {
3
- case 'dynamic-menu':
4
- import('./pages/menu/dynamic-menu')
5
- return page
6
- case 'config-terminology':
7
- import('./pages/terms/config-terminology')
8
- return page
4
+ if (page == 'dynamic-menu') {
5
+ import('./pages/menu/dynamic-menu')
6
+ return page
7
+
8
+ } else if(page == 'config-terminology') {
9
+ import('./pages/terms/config-terminology')
10
+ return page
11
+
12
+ } else {
13
+ let storage = store.getState();
14
+
15
+ if(storage && storage.app && storage.app.modules) {
16
+ let modules = storage.app.modules;
17
+ let metaUiMod = modules.find(m => {
18
+ return m.name == '@things-factory/meta-ui'
19
+ })
20
+
21
+ if(metaUiMod && metaUiMod.routes) {
22
+ let metaUiRoutes = metaUiMod.routes;
23
+ let metaRoute = metaUiRoutes.find(mapping => mapping.page == page)
24
+
25
+ if (metaRoute) {
26
+ import (`${metaRoute.template}`)
27
+ return page
28
+ }
29
+ }
30
+ }
31
+
32
+ return '';
9
33
  }
10
- }
34
+ }