@things-factory/meta-ui 7.0.1-alpha.1 → 7.0.1-alpha.3

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.
@@ -7,7 +7,6 @@ import { navigate, store } from '@operato/shell'
7
7
  import { updateMenuTemplate } from './actions/main'
8
8
  import metaUI from './reducers/main'
9
9
  import { TermsUtil } from './utils/terms-util'
10
- import { MetaApi } from './utils/meta-api'
11
10
  import { GristDefaultValue } from './utils/grist-default-value'
12
11
  import { MENUS } from './dynamic-menus'
13
12
 
@@ -36,10 +35,15 @@ import { FilterGristMetaObjectSelect } from './component/filter/filter-grist-met
36
35
  import { FilterFormMetaCodeSelect } from './component/filter/filter-form-meta-code-select'
37
36
  import { FilterFormMetaObjectSelect } from './component/filter/filter-form-meta-object-select'
38
37
 
38
+ import './pages/personalize/personal-column-selector'
39
+ import './pages/history/history-copy-list-popup'
40
+ import './pages/history/history-json-list-popup'
41
+
39
42
  import './pages/activity/meta-activity-writer-element'
40
43
  import './pages/activity/meta-activity-viewer-element'
44
+ import { i18next } from '@operato/i18n'
41
45
 
42
- export default function bootstrap(module) {
46
+ export default async function bootstrap(module) {
43
47
  // GRIST Renderer
44
48
  gristColumnRegisterRenderer('meta-code-selector', GristRendererMetaCodeSelector)
45
49
  gristColumnRegisterRenderer('meta-object-selector', GristRendererMetaObjectSelector)
@@ -65,14 +69,14 @@ export default function bootstrap(module) {
65
69
  metaUI
66
70
  })
67
71
 
68
- auth.on('profile', async ({ credential, domains, domain }) => {
69
- // 1. 용어 다운로드
70
- var locale = MetaApi.currentLocale()
71
- if (locale == 'ko') {
72
- locale = 'ko-KR'
73
- }
74
- await TermsUtil.downloadTerminologies(locale)
72
+ // 1. 용어 다운로드
73
+ var locale = i18next.language
74
+ if (locale == 'ko') {
75
+ locale = 'ko-KR'
76
+ }
77
+ await TermsUtil.downloadTerminologies(locale)
75
78
 
79
+ auth.on('profile', async ({ credential, domains, domain }) => {
76
80
  // 2. 메뉴 정보를 서버로 부터 받아서 적용
77
81
  const menuRoutes = await MENUS
78
82
  updateMenuTemplate(menuRoutes.menus)
@@ -24,66 +24,67 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
24
24
  ScrollbarStyles,
25
25
  CommonGristStyles,
26
26
  css`
27
- :host {
28
- display: flex;
29
- flex-direction: column;
30
- overflow-x: auto;
31
- }
32
- .container {
33
- flex: 1;
34
- display: grid;
35
- overflow: hidden;
36
- }
37
- .container_detail {
38
- background-color: var(--main-section-background-color);
39
- display: flex;
40
- flex-direction: column;
41
- flex: 1;
42
- overflow-y: auto;
43
- }
27
+ :host {
28
+ display: flex;
29
+ flex-direction: column;
30
+ overflow-x: auto;
31
+ }
32
+ .container {
33
+ flex: 1;
34
+ display: grid;
35
+ overflow: hidden;
36
+ }
37
+ .container_detail {
38
+ background-color: var(--main-section-background-color);
39
+ display: flex;
40
+ flex-direction: column;
41
+ flex: 1;
42
+ overflow-y: auto;
43
+ }
44
44
 
45
- h2 {
46
- padding: var(--subtitle-padding);
47
- font: var(--subtitle-font);
48
- color: var(--subtitle-text-color);
49
- border-bottom: var(--subtitle-border-bottom);
50
- }
45
+ h2 {
46
+ padding: var(--subtitle-padding);
47
+ font: var(--subtitle-font);
48
+ color: var(--subtitle-text-color);
49
+ border-bottom: var(--subtitle-border-bottom);
50
+ }
51
51
 
52
- .container_detail h2 {
53
- margin: var(--grist-title-margin);
54
- border: var(--grist-title-border);
55
- font: var(--grist-title-font);
56
- color: var(--secondary-color);
57
- }
52
+ .container_detail h2 {
53
+ margin: var(--grist-title-margin);
54
+ border: var(--grist-title-border);
55
+ font: var(--grist-title-font);
56
+ color: var(--secondary-color);
57
+ }
58
58
 
59
- .container_detail h2 mwc-icon {
60
- vertical-align: middle;
61
- margin: var(--grist-title-icon-margin);
62
- font-size: var(--grist-title-icon-size);
63
- color: var(--grist-title-icon-color);
64
- }
59
+ .container_detail h2 mwc-icon {
60
+ vertical-align: middle;
61
+ margin: var(--grist-title-icon-margin);
62
+ font-size: var(--grist-title-icon-size);
63
+ color: var(--grist-title-icon-color);
64
+ }
65
65
 
66
- h2 {
67
- padding-bottom: var(--grist-title-with-grid-padding);
68
- }
69
- ox-grist {
70
- overflow-y: auto;
71
- flex: 1;
72
- }
73
- search-form {
74
- overflow: visible;
75
- }
66
+ h2 {
67
+ padding-bottom: var(--grist-title-with-grid-padding);
68
+ }
69
+ ox-grist {
70
+ overflow-y: auto;
71
+ flex: 1;
72
+ }
73
+ search-form {
74
+ overflow: visible;
75
+ }
76
76
 
77
- .button-container {
78
- padding: var(--button-container-padding);
79
- margin: var(--button-container-margin);
80
- text-align: var(--button-container-align);
81
- background-color: var(--button-container-background);
82
- height: var(--button-container-height);
83
- text-align: right;
84
- padding-right: 12px;
85
- }`
86
- ];
77
+ .button-container {
78
+ padding: var(--button-container-padding);
79
+ margin: var(--button-container-margin);
80
+ text-align: var(--button-container-align);
81
+ background-color: var(--button-container-background);
82
+ height: var(--button-container-height);
83
+ text-align: right;
84
+ padding-right: 12px;
85
+ }
86
+ `
87
+ ]
87
88
  return styles
88
89
  }
89
90
 
@@ -104,7 +105,7 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
104
105
  },
105
106
 
106
107
  /**
107
- * @description 메뉴 ID
108
+ * @description 메뉴 ID
108
109
  ******************************
109
110
  * @type {String}
110
111
  */
@@ -119,7 +120,7 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
119
120
  ***************************
120
121
  */
121
122
  async connectedCallback() {
122
- // 메뉴 그룹 그리드 설정
123
+ // 메뉴 그룹 그리드 설정
123
124
  this.gridConfig = {
124
125
  rows: { selectable: false, appendable: false },
125
126
  pagination: { infinite: true },
@@ -127,7 +128,7 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
127
128
  ...MetaApi.getGristGuttersConfig(false, false),
128
129
  MetaApi.getGristColumnConfig('integer', 'rank', 'center', true, false, 80),
129
130
  MetaApi.getGristColumnConfig('string', 'name', 'left', false, false, 180),
130
- MetaApi.getGristColumnConfig2('string','header', 'display', 'left', false, false, 180),
131
+ MetaApi.getGristColumnConfig2('string', 'header', 'display', 'left', false, false, 180),
131
132
  MetaApi.getGristColumnConfig('boolean', 'hidden', 'center', true, false, 60)
132
133
  ]
133
134
  }
@@ -142,25 +143,16 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
142
143
  ***************************
143
144
  */
144
145
  render() {
145
- return html`
146
- <div id="container" class="container">
147
- <div class="container_detail">
148
- <ox-grist id="ox-grist" .config=${this.gridConfig} .mode=${'GRID'} auto-fetch
149
- .fetchHandler=${this.fetchColumns.bind(this)}>
150
- </ox-grist>
151
- <div id="button-container" class="button-container">
152
- <mwc-button raised label="${TermsUtil.tButton('reset')}" style="margin-left:7px;margin-top:7px;"
153
- @click=${this.reset.bind(this)}>
154
- </mwc-button>
155
- <mwc-button raised label="${TermsUtil.tButton('delete')}" style="margin-left:7px;margin-top:7px;"
156
- @click=${this.delete.bind(this)}>
157
- </mwc-button>
158
- <mwc-button raised label="${TermsUtil.tButton('save')}" style="margin-left:7px;margin-top:7px;"
159
- @click=${this.save.bind(this)}>
160
- </mwc-button>
161
- </div>
146
+ return html` <div id="container" class="container">
147
+ <div class="container_detail">
148
+ <ox-grist id="ox-grist" .config=${this.gridConfig} .mode=${'GRID'} auto-fetch .fetchHandler=${this.fetchColumns.bind(this)}> </ox-grist>
149
+ <div id="button-container" class="button-container">
150
+ <mwc-button raised label="${TermsUtil.tButton('reset')}" style="margin-left:7px;margin-top:7px;" @click=${this.reset.bind(this)}> </mwc-button>
151
+ <mwc-button raised label="${TermsUtil.tButton('delete')}" style="margin-left:7px;margin-top:7px;" @click=${this.delete.bind(this)}> </mwc-button>
152
+ <mwc-button raised label="${TermsUtil.tButton('save')}" style="margin-left:7px;margin-top:7px;" @click=${this.save.bind(this)}> </mwc-button>
162
153
  </div>
163
- </div>`
154
+ </div>
155
+ </div>`
164
156
  }
165
157
 
166
158
  /**
@@ -173,43 +165,42 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
173
165
  }
174
166
 
175
167
  /**
176
- * @description 컬럼 조회
168
+ * @description 컬럼 조회
177
169
  ***************************
178
- * @returns
170
+ * @returns
179
171
  */
180
172
  async fetchColumns() {
181
- // 팝업 오프너에서 받아온 그리스트의 설정으로 보여준다
182
- let cols = this.configGrist.config.columns;
183
- let filterCols = cols.filter(x => x.type != 'gutter' && x.name != 'id' && x.unusable !== true);
184
- let rank = 0;
173
+ // 팝업 오프너에서 받아온 그리스트의 설정으로 보여준다
174
+ let cols = this.configGrist.config.columns
175
+ let filterCols = cols.filter(x => x.type != 'gutter' && x.name != 'id' && x.unusable !== true)
176
+ let rank = 0
185
177
 
186
178
  let items = filterCols.map(x => {
187
- rank = rank + 10;
188
- x.rank = rank;
189
- return x;
179
+ rank = rank + 10
180
+ x.rank = rank
181
+ return x
190
182
  })
191
183
 
192
184
  return { total: 0, records: items }
193
185
  }
194
186
 
195
187
  /**
196
- * @description 개인화 데이터 삭제
188
+ * @description 개인화 데이터 삭제
197
189
  ***************************
198
- * @returns
190
+ * @returns
199
191
  */
200
192
  async delete(e) {
201
- let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId);
202
- let { id = undefined } = personal;
193
+ let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId)
194
+ let { id = undefined } = personal
203
195
 
204
196
  if (id) {
205
- let result = await ServiceUtil.deleteListByIds([id], 'deleteGridPersonalizes');
197
+ let result = await ServiceUtil.deleteListByIds([id], 'deleteGridPersonalizes')
206
198
  if (result == true) {
207
- history.back();
199
+ history.back()
208
200
  }
209
201
  } else {
210
- await MetaApi.showToast('info', 'there_is_nothing_to_delete');
202
+ await MetaApi.showToast('info', 'there_is_nothing_to_delete')
211
203
  }
212
-
213
204
  }
214
205
 
215
206
  /**
@@ -217,59 +208,58 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
217
208
  ************************************************
218
209
  */
219
210
  async reset(e) {
220
- await this.grist.fetch();
211
+ await this.grist.fetch()
221
212
  }
222
213
 
223
-
224
214
  /**
225
- * @description 컬럼 변경 사항 저장
215
+ * @description 컬럼 변경 사항 저장
226
216
  ************************************************
227
217
  */
228
218
  async save(e) {
229
- // 변경 체크
230
- MetaApi.patchesForUpdateMultiple(this.grist);
219
+ // 변경 체크
220
+ MetaApi.patchesForUpdateMultiple(this.grist)
231
221
 
232
- // 기존 데이터 조회
233
- let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId);
234
- let { id = undefined, template = {} } = personal;
222
+ // 기존 데이터 조회
223
+ let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId)
224
+ let { id = undefined, template = {} } = personal
235
225
 
236
- let tempName = "master";
226
+ let tempName = 'master'
237
227
  if (this.configGrist.configName) {
238
- tempName = this.configGrist.configName;
228
+ tempName = this.configGrist.configName
239
229
  }
240
230
 
241
- // 기존 데이터 삭제
231
+ // 기존 데이터 삭제
242
232
  if (template[tempName]) {
243
- delete template[tempName];
233
+ delete template[tempName]
244
234
  }
245
235
 
246
- // 그리드 설정 데이터 숨김 필드 제외 후 정렬
247
- let records = this.grist.dirtyData.records;
248
- let data = records.filter(x => x.hidden == false);
236
+ // 그리드 설정 데이터 숨김 필드 제외 후 정렬
237
+ let records = this.grist.dirtyData.records
238
+ let data = records.filter(x => x.hidden == false)
249
239
  data.sort((a, b) => {
250
- return a.rank - b.rank;
251
- });
240
+ return a.rank - b.rank
241
+ })
252
242
  template[tempName] = data.map(x => {
253
243
  return x.name
254
- });
244
+ })
255
245
 
256
- let patch = { template: JSON.stringify(template) };
246
+ let patch = { template: JSON.stringify(template) }
257
247
 
258
- // 기존에 ID 가 있으면 update
248
+ // 기존에 ID 가 있으면 update
259
249
  if (id) {
260
- patch.id = id;
261
- patch.cuFlag = "M";
250
+ patch.id = id
251
+ patch.cuFlag = 'M'
262
252
  } else {
263
253
  patch.menu = {
264
254
  id: this.menuId
265
- };
266
- patch.cuFlag = "+";
255
+ }
256
+ patch.cuFlag = '+'
267
257
  }
268
- await MetaApi.updateMultiple("updateMultipleGridpersonalize", [patch]);
258
+ await MetaApi.updateMultiple('updateMultipleGridpersonalize', [patch])
269
259
 
270
- MetaApi.showToast('info', TermsUtil.tText('success to save'));
271
- history.back();
260
+ MetaApi.showToast('info', TermsUtil.tText('success to save'))
261
+ history.back()
272
262
  }
273
263
  }
274
264
 
275
- customElements.define('personal-column-selector', PersonalColumnSelector)
265
+ customElements.define('personal-column-selector', PersonalColumnSelector)
@@ -13,10 +13,6 @@ import { ServiceUtil } from './service-util'
13
13
  import { UiUtil } from './ui-util'
14
14
  import { MetaApi } from './meta-api'
15
15
 
16
- import './../pages/personalize/personal-column-selector'
17
- import './../pages/history/history-copy-list-popup'
18
- import './../pages/history/history-json-list-popup'
19
-
20
16
  /**
21
17
  * @license
22
18
  * Copyright © HatioLab Inc. All rights reserved.
@@ -56,7 +56,7 @@ export class ServiceUtil {
56
56
  const response = await client.query({
57
57
  query: gql`
58
58
  query workCodeByName($name: String!) {
59
- workCodeByName(name: $name) {
59
+ commonCode: workCodeByName(name: $name) {
60
60
  details {
61
61
  rank
62
62
  name
@@ -7,7 +7,6 @@ import { getEditor } from '@operato/data-grist'
7
7
 
8
8
  import { TermsUtil } from './terms-util'
9
9
  import { ValueUtil } from './value-util'
10
- import { MetaUiUtil } from './meta-ui-util'
11
10
 
12
11
  /**
13
12
  * @license
@@ -102,9 +101,7 @@ export class UiUtil {
102
101
  */
103
102
  static async openDynamicPopup(title, popupConfig, paramData, popupCloseCallback) {
104
103
  // 부모 필드
105
- let parentValue = ValueUtil.isNotEmpty(popupConfig.parent_field)
106
- ? ValueUtil.getParams(paramData, ...popupConfig.parent_field.split('.'))
107
- : undefined
104
+ let parentValue = ValueUtil.isNotEmpty(popupConfig.parent_field) ? ValueUtil.getParams(paramData, ...popupConfig.parent_field.split('.')) : undefined
108
105
 
109
106
  // 팝업 엘리먼트 생성
110
107
  let htmlText = `<${popupConfig.tagname} route_name='${popupConfig.menu}' parent_id='${parentValue}' is_popup=true></${popupConfig.tagname}>`
@@ -255,7 +252,7 @@ export class UiUtil {
255
252
  * @returns {Object} 필터 폼 내의 에디터들이 가지고 있는 값을 키-값 형태로 추출
256
253
  */
257
254
  static getFilterFormData(filterForm) {
258
- let formValues = {};
255
+ let formValues = {}
259
256
 
260
257
  if (ValueUtil.isNotEmpty(filterForm)) {
261
258
  let filters = filterForm.filters()
@@ -1,3 +1,6 @@
1
+ import './pages/personalize/personal-column-selector';
2
+ import './pages/history/history-copy-list-popup';
3
+ import './pages/history/history-json-list-popup';
1
4
  import './pages/activity/meta-activity-writer-element';
2
5
  import './pages/activity/meta-activity-viewer-element';
3
- export default function bootstrap(module: any): void;
6
+ export default function bootstrap(module: any): Promise<void>;
@@ -5,7 +5,6 @@ import { navigate, store } from '@operato/shell';
5
5
  import { updateMenuTemplate } from './actions/main';
6
6
  import metaUI from './reducers/main';
7
7
  import { TermsUtil } from './utils/terms-util';
8
- import { MetaApi } from './utils/meta-api';
9
8
  import { GristDefaultValue } from './utils/grist-default-value';
10
9
  import { MENUS } from './dynamic-menus';
11
10
  import { registerEditor as gristColumnRegisterEditor, registerRenderer as gristColumnRegisterRenderer, registerFilterRenderer as gristRegisterFilterRenderer } from '@operato/data-grist';
@@ -24,9 +23,13 @@ import { FilterGristMetaObjectSelect } from './component/filter/filter-grist-met
24
23
  /** Filter Form Component */
25
24
  import { FilterFormMetaCodeSelect } from './component/filter/filter-form-meta-code-select';
26
25
  import { FilterFormMetaObjectSelect } from './component/filter/filter-form-meta-object-select';
26
+ import './pages/personalize/personal-column-selector';
27
+ import './pages/history/history-copy-list-popup';
28
+ import './pages/history/history-json-list-popup';
27
29
  import './pages/activity/meta-activity-writer-element';
28
30
  import './pages/activity/meta-activity-viewer-element';
29
- export default function bootstrap(module) {
31
+ import { i18next } from '@operato/i18n';
32
+ export default async function bootstrap(module) {
30
33
  // GRIST Renderer
31
34
  gristColumnRegisterRenderer('meta-code-selector', GristRendererMetaCodeSelector);
32
35
  gristColumnRegisterRenderer('meta-object-selector', GristRendererMetaObjectSelector);
@@ -46,13 +49,13 @@ export default function bootstrap(module) {
46
49
  store.addReducers({
47
50
  metaUI
48
51
  });
52
+ // 1. 용어 다운로드
53
+ var locale = i18next.language;
54
+ if (locale == 'ko') {
55
+ locale = 'ko-KR';
56
+ }
57
+ await TermsUtil.downloadTerminologies(locale);
49
58
  auth.on('profile', async ({ credential, domains, domain }) => {
50
- // 1. 용어 다운로드
51
- var locale = MetaApi.currentLocale();
52
- if (locale == 'ko') {
53
- locale = 'ko-KR';
54
- }
55
- await TermsUtil.downloadTerminologies(locale);
56
59
  // 2. 메뉴 정보를 서버로 부터 받아서 적용
57
60
  const menuRoutes = await MENUS;
58
61
  updateMenuTemplate(menuRoutes.menus);
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit-html'\n\nimport { auth } from '@things-factory/auth-base/dist-client/auth.js'\nimport { ADD_MORENDA } from '@things-factory/more-base'\nimport { navigate, store } from '@operato/shell'\n\nimport { updateMenuTemplate } from './actions/main'\nimport metaUI from './reducers/main'\nimport { TermsUtil } from './utils/terms-util'\nimport { MetaApi } from './utils/meta-api'\nimport { GristDefaultValue } from './utils/grist-default-value'\nimport { MENUS } from './dynamic-menus'\n\nimport {\n registerEditor as gristColumnRegisterEditor,\n registerRenderer as gristColumnRegisterRenderer,\n registerFilterRenderer as gristRegisterFilterRenderer\n} from '@operato/data-grist'\nimport { registerFilterRenderer as formRegisterFilterRenderer } from '@operato/form'\n\n/** GRIST Renderer Compoment */\nimport { GristRendererMetaCodeSelector } from './component/grist/renderer/grist-renderer-meta-code-selector'\nimport { GristRendererMetaObjectSelector } from './component/grist/renderer/grist-renderer-meta-object-selector'\nimport { GristRendererCodeInput } from './component/grist/renderer/grist-renderer-code-input'\n\n/** GRIST Editor Component */\nimport { GristEditorMetaCodeSelector } from './component/grist/editor/grist-editor-meta-code-selector'\nimport { GristEditorMetaObjectSelector } from './component/grist/editor/grist-editor-meta-object-selector'\nimport { GristEditorCodeInput } from './component/grist/editor/grist-editor-code-input'\n\n/** Grist Filter Compoment */\nimport { FilterGristMetaCodeSelect } from './component/filter/filter-grist-meta-code-select'\nimport { FilterGristMetaObjectSelect } from './component/filter/filter-grist-meta-object-select'\n\n/** Filter Form Component */\nimport { FilterFormMetaCodeSelect } from './component/filter/filter-form-meta-code-select'\nimport { FilterFormMetaObjectSelect } from './component/filter/filter-form-meta-object-select'\n\nimport './pages/activity/meta-activity-writer-element'\nimport './pages/activity/meta-activity-viewer-element'\n\nexport default function bootstrap(module) {\n // GRIST Renderer\n gristColumnRegisterRenderer('meta-code-selector', GristRendererMetaCodeSelector)\n gristColumnRegisterRenderer('meta-object-selector', GristRendererMetaObjectSelector)\n gristColumnRegisterRenderer('code-input', GristRendererCodeInput)\n\n // GRIST Editor\n gristColumnRegisterEditor('meta-code-selector', GristEditorMetaCodeSelector)\n gristColumnRegisterEditor('meta-object-selector', GristEditorMetaObjectSelector)\n gristColumnRegisterEditor('code-input', GristEditorCodeInput)\n\n // Grist Filter Renderer\n gristRegisterFilterRenderer('meta-code-selector', [FilterGristMetaCodeSelect])\n gristRegisterFilterRenderer('meta-object-selector', [FilterGristMetaObjectSelect])\n\n // Filter Form Renderer\n formRegisterFilterRenderer('meta-code-selector', [FilterFormMetaCodeSelect])\n formRegisterFilterRenderer('meta-object-selector', [FilterFormMetaObjectSelect])\n\n // Grist Default Registry\n GristDefaultValue.registry()\n\n store.addReducers({\n metaUI\n })\n\n auth.on('profile', async ({ credential, domains, domain }) => {\n // 1. 용어 다운로드\n var locale = MetaApi.currentLocale()\n if (locale == 'ko') {\n locale = 'ko-KR'\n }\n await TermsUtil.downloadTerminologies(locale)\n\n // 2. 메뉴 정보를 서버로 부터 받아서 적용\n const menuRoutes = await MENUS\n updateMenuTemplate(menuRoutes.menus)\n\n // 3. 동적 메뉴 관리 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>auto_fix_high</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.dynamic_menu\"></ox-i18n>`,\n action: () => {\n navigate('dynamic-menu')\n }\n }\n })\n\n // 4. 엔티티 관리 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>filter_tilt_shift</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.entity\"></ox-i18n>`,\n action: () => {\n navigate('config-entity')\n }\n }\n })\n\n // 5. 용어 관리 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>speaker_notes</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.terminology\"></ox-i18n>`,\n action: () => {\n navigate('config-terminology')\n }\n }\n })\n\n // 6. 공통 코드 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>code</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.code_management\"></ox-i18n>`,\n action: () => {\n navigate('codes')\n }\n }\n })\n\n // 7. 업무정의 리스트 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>business_center</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.meta_activity_list\"></ox-i18n>`,\n action: () => {\n navigate('meta-activity-list')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>margin</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.meta_activity_define\"></ox-i18n>`,\n action: () => {\n navigate('meta-activity-define')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>work</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.activity_list\"></ox-i18n>`,\n action: () => {\n navigate('activity-list')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html` <mwc-icon>dataset</mwc-icon> `,\n name: html` <ox-i18n msgid=\"text.attribute management\"></ox-i18n> `,\n action: () => {\n navigate('attributes')\n }\n }\n })\n })\n}\n"]}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit-html'\n\nimport { auth } from '@things-factory/auth-base/dist-client/auth.js'\nimport { ADD_MORENDA } from '@things-factory/more-base'\nimport { navigate, store } from '@operato/shell'\n\nimport { updateMenuTemplate } from './actions/main'\nimport metaUI from './reducers/main'\nimport { TermsUtil } from './utils/terms-util'\nimport { GristDefaultValue } from './utils/grist-default-value'\nimport { MENUS } from './dynamic-menus'\n\nimport {\n registerEditor as gristColumnRegisterEditor,\n registerRenderer as gristColumnRegisterRenderer,\n registerFilterRenderer as gristRegisterFilterRenderer\n} from '@operato/data-grist'\nimport { registerFilterRenderer as formRegisterFilterRenderer } from '@operato/form'\n\n/** GRIST Renderer Compoment */\nimport { GristRendererMetaCodeSelector } from './component/grist/renderer/grist-renderer-meta-code-selector'\nimport { GristRendererMetaObjectSelector } from './component/grist/renderer/grist-renderer-meta-object-selector'\nimport { GristRendererCodeInput } from './component/grist/renderer/grist-renderer-code-input'\n\n/** GRIST Editor Component */\nimport { GristEditorMetaCodeSelector } from './component/grist/editor/grist-editor-meta-code-selector'\nimport { GristEditorMetaObjectSelector } from './component/grist/editor/grist-editor-meta-object-selector'\nimport { GristEditorCodeInput } from './component/grist/editor/grist-editor-code-input'\n\n/** Grist Filter Compoment */\nimport { FilterGristMetaCodeSelect } from './component/filter/filter-grist-meta-code-select'\nimport { FilterGristMetaObjectSelect } from './component/filter/filter-grist-meta-object-select'\n\n/** Filter Form Component */\nimport { FilterFormMetaCodeSelect } from './component/filter/filter-form-meta-code-select'\nimport { FilterFormMetaObjectSelect } from './component/filter/filter-form-meta-object-select'\n\nimport './pages/personalize/personal-column-selector'\nimport './pages/history/history-copy-list-popup'\nimport './pages/history/history-json-list-popup'\n\nimport './pages/activity/meta-activity-writer-element'\nimport './pages/activity/meta-activity-viewer-element'\nimport { i18next } from '@operato/i18n'\n\nexport default async function bootstrap(module) {\n // GRIST Renderer\n gristColumnRegisterRenderer('meta-code-selector', GristRendererMetaCodeSelector)\n gristColumnRegisterRenderer('meta-object-selector', GristRendererMetaObjectSelector)\n gristColumnRegisterRenderer('code-input', GristRendererCodeInput)\n\n // GRIST Editor\n gristColumnRegisterEditor('meta-code-selector', GristEditorMetaCodeSelector)\n gristColumnRegisterEditor('meta-object-selector', GristEditorMetaObjectSelector)\n gristColumnRegisterEditor('code-input', GristEditorCodeInput)\n\n // Grist Filter Renderer\n gristRegisterFilterRenderer('meta-code-selector', [FilterGristMetaCodeSelect])\n gristRegisterFilterRenderer('meta-object-selector', [FilterGristMetaObjectSelect])\n\n // Filter Form Renderer\n formRegisterFilterRenderer('meta-code-selector', [FilterFormMetaCodeSelect])\n formRegisterFilterRenderer('meta-object-selector', [FilterFormMetaObjectSelect])\n\n // Grist Default Registry\n GristDefaultValue.registry()\n\n store.addReducers({\n metaUI\n })\n\n // 1. 용어 다운로드\n var locale = i18next.language\n if (locale == 'ko') {\n locale = 'ko-KR'\n }\n await TermsUtil.downloadTerminologies(locale)\n\n auth.on('profile', async ({ credential, domains, domain }) => {\n // 2. 메뉴 정보를 서버로 부터 받아서 적용\n const menuRoutes = await MENUS\n updateMenuTemplate(menuRoutes.menus)\n\n // 3. 동적 메뉴 관리 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>auto_fix_high</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.dynamic_menu\"></ox-i18n>`,\n action: () => {\n navigate('dynamic-menu')\n }\n }\n })\n\n // 4. 엔티티 관리 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>filter_tilt_shift</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.entity\"></ox-i18n>`,\n action: () => {\n navigate('config-entity')\n }\n }\n })\n\n // 5. 용어 관리 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>speaker_notes</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.terminology\"></ox-i18n>`,\n action: () => {\n navigate('config-terminology')\n }\n }\n })\n\n // 6. 공통 코드 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>code</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.code_management\"></ox-i18n>`,\n action: () => {\n navigate('codes')\n }\n }\n })\n\n // 7. 업무정의 리스트 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>business_center</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.meta_activity_list\"></ox-i18n>`,\n action: () => {\n navigate('meta-activity-list')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>margin</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.meta_activity_define\"></ox-i18n>`,\n action: () => {\n navigate('meta-activity-define')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<mwc-icon>work</mwc-icon>`,\n name: html`<ox-i18n msgid=\"title.activity_list\"></ox-i18n>`,\n action: () => {\n navigate('activity-list')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html` <mwc-icon>dataset</mwc-icon> `,\n name: html` <ox-i18n msgid=\"text.attribute management\"></ox-i18n> `,\n action: () => {\n navigate('attributes')\n }\n }\n })\n })\n}\n"]}