@things-factory/meta-ui 7.0.1-alpha.1 → 7.0.1-alpha.11
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/client/actions/main.js +14 -20
- package/client/bootstrap.ts +13 -6
- package/client/component/grist/renderer/grist-renderer-meta-object-selector.js +18 -13
- package/client/pages/entity/config-entity.js +180 -112
- package/client/pages/entity/main-menu-selector.js +85 -84
- package/client/pages/history/history-copy-list-popup.js +33 -45
- package/client/pages/history/history-json-list-popup.js +38 -50
- package/client/pages/menu/dynamic-menu-template.js +1 -1
- package/client/pages/menu/dynamic-menu.js +137 -121
- package/client/pages/menu/export-menu-popup.js +210 -218
- package/client/pages/personalize/personal-column-selector.js +112 -122
- package/client/utils/meta-ui-util.js +0 -4
- package/client/utils/service-util.js +4 -4
- package/client/utils/terms-util.js +41 -42
- package/client/utils/ui-util.js +2 -5
- package/client/viewparts/dynamic-menu-part.js +7 -28
- package/dist-client/actions/main.js +6 -5
- package/dist-client/actions/main.js.map +1 -1
- package/dist-client/bootstrap.d.ts +4 -1
- package/dist-client/bootstrap.js +12 -6
- package/dist-client/bootstrap.js.map +1 -1
- package/dist-client/component/grist/renderer/grist-renderer-code-input.d.ts +1 -1
- package/dist-client/component/grist/renderer/grist-renderer-meta-code-selector.d.ts +1 -1
- package/dist-client/component/grist/renderer/grist-renderer-meta-object-selector.d.ts +1 -1
- package/dist-client/component/grist/renderer/grist-renderer-meta-object-selector.js +9 -3
- package/dist-client/component/grist/renderer/grist-renderer-meta-object-selector.js.map +1 -1
- package/dist-client/component/popup/code-input-editor-popup.d.ts +1 -1
- package/dist-client/component/popup/meta-object-selector-popup.d.ts +1 -1
- package/dist-client/component/popup/record-based-code-editor-popup.d.ts +1 -1
- package/dist-client/mixin/meta-basic-grist-mixin.d.ts +1 -1
- package/dist-client/pages/activity/meta-activity-viewer-element.d.ts +1 -1
- package/dist-client/pages/activity/meta-activity-writer-element.d.ts +1 -1
- package/dist-client/pages/button-role/button-role-detail.d.ts +1 -1
- package/dist-client/pages/entity/config-entity.js +131 -62
- package/dist-client/pages/entity/config-entity.js.map +1 -1
- package/dist-client/pages/entity/main-menu-selector.d.ts +1 -1
- package/dist-client/pages/entity/main-menu-selector.js +74 -73
- package/dist-client/pages/entity/main-menu-selector.js.map +1 -1
- package/dist-client/pages/history/history-copy-list-popup.d.ts +1 -1
- package/dist-client/pages/history/history-copy-list-popup.js +14 -26
- package/dist-client/pages/history/history-copy-list-popup.js.map +1 -1
- package/dist-client/pages/history/history-json-list-popup.d.ts +5 -5
- package/dist-client/pages/history/history-json-list-popup.js +19 -31
- package/dist-client/pages/history/history-json-list-popup.js.map +1 -1
- package/dist-client/pages/menu/dynamic-menu-setting-let.d.ts +1 -1
- package/dist-client/pages/menu/dynamic-menu-template.js +1 -1
- package/dist-client/pages/menu/dynamic-menu-template.js.map +1 -1
- package/dist-client/pages/menu/dynamic-menu.js +68 -48
- package/dist-client/pages/menu/dynamic-menu.js.map +1 -1
- package/dist-client/pages/menu/export-menu-popup.d.ts +5 -5
- package/dist-client/pages/menu/export-menu-popup.js +50 -54
- package/dist-client/pages/menu/export-menu-popup.js.map +1 -1
- package/dist-client/pages/meta-grist-element.d.ts +1 -1
- package/dist-client/pages/meta-grist-page.d.ts +1 -1
- package/dist-client/pages/personalize/personal-column-selector.d.ts +1 -1
- package/dist-client/pages/personalize/personal-column-selector.js +76 -84
- package/dist-client/pages/personalize/personal-column-selector.js.map +1 -1
- package/dist-client/pages/work-code/work-code-detail-popup.d.ts +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-client/utils/meta-ui-util.js +0 -3
- package/dist-client/utils/meta-ui-util.js.map +1 -1
- package/dist-client/utils/service-util.js +4 -4
- package/dist-client/utils/service-util.js.map +1 -1
- package/dist-client/utils/terms-util.d.ts +13 -13
- package/dist-client/utils/terms-util.js +10 -12
- package/dist-client/utils/terms-util.js.map +1 -1
- package/dist-client/utils/ui-util.js +1 -4
- package/dist-client/utils/ui-util.js.map +1 -1
- package/dist-client/viewparts/dynamic-menu-part.d.ts +1 -1
- package/dist-client/viewparts/dynamic-menu-part.js +7 -26
- package/dist-client/viewparts/dynamic-menu-part.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -8
- package/client/viewparts/dynamic-menu-landscape-styles.js +0 -149
- package/client/viewparts/dynamic-menu-landscape.js +0 -106
- package/client/viewparts/dynamic-menu-portrait-styles.js +0 -130
- package/client/viewparts/dynamic-menu-portrait.js +0 -90
- package/client/viewparts/dynamic-top-menu-bar.js +0 -148
- package/dist-client/viewparts/dynamic-menu-landscape-styles.d.ts +0 -1
- package/dist-client/viewparts/dynamic-menu-landscape-styles.js +0 -149
- package/dist-client/viewparts/dynamic-menu-landscape-styles.js.map +0 -1
- package/dist-client/viewparts/dynamic-menu-landscape.d.ts +0 -21
- package/dist-client/viewparts/dynamic-menu-landscape.js +0 -87
- package/dist-client/viewparts/dynamic-menu-landscape.js.map +0 -1
- package/dist-client/viewparts/dynamic-menu-portrait-styles.d.ts +0 -1
- package/dist-client/viewparts/dynamic-menu-portrait-styles.js +0 -130
- package/dist-client/viewparts/dynamic-menu-portrait-styles.js.map +0 -1
- package/dist-client/viewparts/dynamic-menu-portrait.d.ts +0 -13
- package/dist-client/viewparts/dynamic-menu-portrait.js +0 -74
- package/dist-client/viewparts/dynamic-menu-portrait.js.map +0 -1
- package/dist-client/viewparts/dynamic-top-menu-bar.d.ts +0 -27
- package/dist-client/viewparts/dynamic-top-menu-bar.js +0 -133
- package/dist-client/viewparts/dynamic-top-menu-bar.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { css, html, LitElement } from 'lit
|
|
1
|
+
import { css, html, LitElement } from 'lit';
|
|
2
2
|
import { i18next, localize } from '@things-factory/i18n-base';
|
|
3
3
|
import { ScrollbarStyles, CommonGristStyles } from '@operato/styles';
|
|
4
4
|
import { TermsUtil } from './../../utils/terms-util';
|
|
@@ -12,13 +12,13 @@ const i18nextEn = i18next.getFixedT('en', null, null);
|
|
|
12
12
|
const i18nextKo = i18next.getFixedT('ko', null, null);
|
|
13
13
|
const colTypes = {
|
|
14
14
|
'character varying': 'VARCHAR',
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
numeric: 'NUMERIC',
|
|
16
|
+
boolean: 'BOOLEAN',
|
|
17
|
+
uuid: 'VARCHAR',
|
|
18
|
+
timestamp: 'TIMESTAMP',
|
|
19
|
+
date: 'DATE',
|
|
20
|
+
datetime: 'DATETIME',
|
|
21
|
+
integer: 'INT'
|
|
22
22
|
};
|
|
23
23
|
/**
|
|
24
24
|
* @license
|
|
@@ -28,34 +28,34 @@ const colTypes = {
|
|
|
28
28
|
*/
|
|
29
29
|
export class ExportMenuPopup extends localize(i18next)(LitElement) {
|
|
30
30
|
/**
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
* @description 스타일 정의
|
|
32
|
+
***********************************
|
|
33
|
+
* @returns {Object} 화면의 스타일 정의
|
|
34
|
+
*/
|
|
35
35
|
static get styles() {
|
|
36
36
|
return [
|
|
37
37
|
ScrollbarStyles,
|
|
38
38
|
CommonGristStyles,
|
|
39
39
|
css `
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
40
|
+
:host {
|
|
41
|
+
display: flex;
|
|
42
|
+
flex-direction: column;
|
|
43
|
+
overflow-x: overlay;
|
|
44
|
+
background-color: var(--main-section-background-color);
|
|
45
|
+
}
|
|
46
|
+
ox-grist {
|
|
47
|
+
overflow-y: auto;
|
|
48
|
+
flex: 1;
|
|
49
|
+
}
|
|
50
|
+
.button-container {
|
|
51
|
+
padding: var(--button-container-padding);
|
|
52
|
+
margin: var(--button-container-margin);
|
|
53
|
+
text-align: var(--button-container-align);
|
|
54
|
+
background-color: var(--button-container-background);
|
|
55
|
+
height: var(--button-container-height);
|
|
56
|
+
text-align: right;
|
|
57
|
+
padding-right: 12px;
|
|
58
|
+
}
|
|
59
59
|
`
|
|
60
60
|
];
|
|
61
61
|
}
|
|
@@ -91,8 +91,8 @@ export class ExportMenuPopup extends localize(i18next)(LitElement) {
|
|
|
91
91
|
MetaApi.getGristColumnConfig2('string', 'column_not_null', 'is_not_null', 'center', false, false, 80),
|
|
92
92
|
MetaApi.getGristColumnConfig2('string', 'default_value', 'default_value', 'left', false, false, 80),
|
|
93
93
|
MetaApi.getGristColumnConfig2('string', 'index', 'table_index', 'left', false, false, 100),
|
|
94
|
-
MetaApi.getGristColumnConfig2('string', 'unique', 'is_unique', 'center', false, false, 100)
|
|
95
|
-
]
|
|
94
|
+
MetaApi.getGristColumnConfig2('string', 'unique', 'is_unique', 'center', false, false, 100)
|
|
95
|
+
]
|
|
96
96
|
};
|
|
97
97
|
if (super.connectedCallback) {
|
|
98
98
|
await super.connectedCallback();
|
|
@@ -104,17 +104,11 @@ export class ExportMenuPopup extends localize(i18next)(LitElement) {
|
|
|
104
104
|
*/
|
|
105
105
|
render() {
|
|
106
106
|
return html `
|
|
107
|
-
<ox-grist
|
|
108
|
-
id="ox-grist"
|
|
109
|
-
.config=${this.gridConfig}
|
|
110
|
-
.mode=${'GRID'}
|
|
111
|
-
auto-fetch
|
|
112
|
-
.fetchHandler=${this.fetchHandler.bind(this)}>
|
|
113
|
-
</ox-grist>
|
|
107
|
+
<ox-grist id="ox-grist" .config=${this.gridConfig} .mode=${'GRID'} auto-fetch .fetchHandler=${this.fetchHandler.bind(this)}> </ox-grist>
|
|
114
108
|
<div id="button-container" class="button-container">
|
|
115
109
|
<mwc-button raised label="${TermsUtil.tButton('export')}" @click=${this.export.bind(this)}></mwc-button>
|
|
116
110
|
</div>
|
|
117
|
-
|
|
111
|
+
`;
|
|
118
112
|
}
|
|
119
113
|
/**
|
|
120
114
|
* @description 그리드 리턴
|
|
@@ -189,14 +183,16 @@ export class ExportMenuPopup extends localize(i18next)(LitElement) {
|
|
|
189
183
|
}
|
|
190
184
|
`;
|
|
191
185
|
let res = await MetaApi.findOne('exportMenuInfo', this.recordId, selectFields);
|
|
192
|
-
// table 컬럼 정보
|
|
193
|
-
let records = res.columns
|
|
186
|
+
// table 컬럼 정보
|
|
187
|
+
let records = res.columns
|
|
188
|
+
.filter(column => ['id', 'data_revision_no', 'deleted_at'].includes(column.name) === false)
|
|
189
|
+
.map(column => {
|
|
194
190
|
let record = {
|
|
195
191
|
column_id: column.name,
|
|
196
192
|
column_type: column.type,
|
|
197
193
|
column_length: column.length,
|
|
198
194
|
column_not_null: column.isNullable === true ? '' : 'O',
|
|
199
|
-
default_value: column.default
|
|
195
|
+
default_value: column.default
|
|
200
196
|
};
|
|
201
197
|
let entityIdx = res.entityColumns.findIndex(col => col.name == column.name);
|
|
202
198
|
if (entityIdx > -1) {
|
|
@@ -205,15 +201,15 @@ export class ExportMenuPopup extends localize(i18next)(LitElement) {
|
|
|
205
201
|
return record;
|
|
206
202
|
});
|
|
207
203
|
let total = records.length;
|
|
208
|
-
// entity Column 기반 정렬
|
|
204
|
+
// entity Column 기반 정렬
|
|
209
205
|
records = records.sort((a, b) => a.rank - b.rank);
|
|
210
|
-
// index
|
|
206
|
+
// index
|
|
211
207
|
for (let idx = 0; idx < res.indices.length; idx++) {
|
|
212
208
|
records[idx].unique = res.indices[idx].isUnique === true ? 'O' : '';
|
|
213
|
-
records[idx].index = res.indices[idx].columns.filter(x => x != 'deleted_at').join(
|
|
209
|
+
records[idx].index = res.indices[idx].columns.filter(x => x != 'deleted_at').join(',');
|
|
214
210
|
}
|
|
215
211
|
let mainMenu = JSON.parse(MetaCrypto.dec(res.menu.template));
|
|
216
|
-
// 메인 메뉴 컬럼 정보
|
|
212
|
+
// 메인 메뉴 컬럼 정보
|
|
217
213
|
mainMenu.grid_column.forEach(x => {
|
|
218
214
|
let mainColName = snakeCase(x.name);
|
|
219
215
|
if (['object', 'meta-object-selector', 'resource-object'].includes(x.type)) {
|
|
@@ -253,7 +249,7 @@ export class ExportMenuPopup extends localize(i18next)(LitElement) {
|
|
|
253
249
|
}
|
|
254
250
|
}
|
|
255
251
|
});
|
|
256
|
-
// 메인메뉴 검색 정보
|
|
252
|
+
// 메인메뉴 검색 정보
|
|
257
253
|
let searchFields = [...mainMenu.gql.query.filters, ...mainMenu.search];
|
|
258
254
|
searchFields.forEach(x => {
|
|
259
255
|
let searchName = snakeCase(x.name);
|
|
@@ -267,9 +263,9 @@ export class ExportMenuPopup extends localize(i18next)(LitElement) {
|
|
|
267
263
|
if (mainMenu.etc.master_detail_element) {
|
|
268
264
|
tabs.push(JSON.parse(mainMenu.etc.master_detail_element));
|
|
269
265
|
}
|
|
270
|
-
// tab 설정 검색 ....
|
|
266
|
+
// tab 설정 검색 ....
|
|
271
267
|
for (let tabIdx = 0; tabIdx < tabs.length; tabIdx++) {
|
|
272
|
-
// name, tagname, menu(routing), display,
|
|
268
|
+
// name, tagname, menu(routing), display,
|
|
273
269
|
let tab = tabs[tabIdx];
|
|
274
270
|
let tabNmEn = await this.getTerms('en-US', ['label', 'field'], tab.display);
|
|
275
271
|
let tabNmKo = await this.getTerms('ko-KR', ['label', 'field'], tab.display);
|
|
@@ -290,7 +286,7 @@ export class ExportMenuPopup extends localize(i18next)(LitElement) {
|
|
|
290
286
|
records[recIdx].group_cd = tab.name;
|
|
291
287
|
records[recIdx].group_nm_en = tabNmEn;
|
|
292
288
|
records[recIdx].group_nm_ko = tabNmKo;
|
|
293
|
-
records[recIdx].group_type =
|
|
289
|
+
records[recIdx].group_type = tab.tagname == 'meta-form-element' ? 'Form' : 'Grist';
|
|
294
290
|
records[recIdx].editable = x.editable === true ? 'O' : '';
|
|
295
291
|
records[recIdx].hidden = x.hidden === true ? 'O' : '';
|
|
296
292
|
records[recIdx].grid_align = x.align;
|
|
@@ -328,8 +324,8 @@ export class ExportMenuPopup extends localize(i18next)(LitElement) {
|
|
|
328
324
|
let x = records[recIdx];
|
|
329
325
|
x.seq = Number(recIdx) + 1;
|
|
330
326
|
// 컬럼 명칭 termionologies 에 없으면 i18next 에서 찾는다 .
|
|
331
|
-
x.column_ko = await this.getTerms('ko-KR', ['label', 'field'],
|
|
332
|
-
x.column_en = await this.getTerms('en-US', ['label', 'field'],
|
|
327
|
+
x.column_ko = await this.getTerms('ko-KR', ['label', 'field'], x.column_id.endsWith('_id') ? x.column_id.substring(0, x.column_id.length - 3) : x.column_id);
|
|
328
|
+
x.column_en = await this.getTerms('en-US', ['label', 'field'], x.column_id.endsWith('_id') ? x.column_id.substring(0, x.column_id.length - 3) : x.column_id);
|
|
333
329
|
x.column_id = x.column_id.toUpperCase();
|
|
334
330
|
x.column_type = colTypes[x.column_type];
|
|
335
331
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-menu-popup.js","sourceRoot":"","sources":["../../../client/pages/menu/export-menu-popup.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEnD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,SAAS,MAAM,qBAAqB,CAAA;AAC3C,OAAO,UAAU,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAA;AAElC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtD,MAAM,QAAQ,GAAG;IACf,mBAAmB,EAAG,SAAS;IAC/B,SAAS,EAAC,SAAS;IACnB,SAAS,EAAC,SAAS;IACnB,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,WAAW;IACxB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE,KAAK;CACjB,CAAA;AAED;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAElE;;;;SAIK;IACF,MAAM,KAAK,MAAM;QAChB,OAAO;YACL,eAAe;YACf,iBAAiB;YACjB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;OAoBF;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC,UAAU,GAAG;YAChB,IAAI,EAAE,OAAO,CAAC,wBAAwB,CAAC,KAAK,CAAC;YAC7C,UAAU,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC;YAC3B,OAAO,EAAE;gBACP,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,EAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACjF,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACnG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACnG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBAChG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAC,yBAAyB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBAC3G,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAC,yBAAyB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBAC3G,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACpG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBAC3F,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAC,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACrG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAC,+BAA+B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBAChH,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,EAAC,6BAA6B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACnH,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAC,sBAAsB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACrG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAC,oBAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACvG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC7F,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACtF,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBAC/F,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAC,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACtG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC/F,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACjG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBAClG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,EAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACpG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBAClG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACzF,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;aAC3F;SACF,CAAA;QAED,IAAI,KAAK,CAAC,iBAAiB,EAAE;YAC3B,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAA;SAChC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,IAAI,CAAA;;;kBAGG,IAAI,CAAC,UAAU;gBACjB,MAAM;;wBAEE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;;oCAGhB,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;OAE1F,CAAA;IACL,CAAC;IAED;;;;OAIG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC;IAGD,KAAK,CAAC,MAAM;QACV,IAAI,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,OAAO,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;QACrE,IAAI,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqDlB,CAAA;QAED,IAAI,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAG9E,eAAe;QACf,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAA,EAAE,CAAC,CAAC,IAAI,EAAC,kBAAkB,EAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAA,EAAE;YAC5H,IAAI,MAAM,GAAG;gBACX,SAAS,EAAE,MAAM,CAAC,IAAI;gBACtB,WAAW,EAAE,MAAM,CAAC,IAAI;gBACxB,aAAa,EAAE,MAAM,CAAC,MAAM;gBAC5B,eAAe,EAAE,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;gBACtD,aAAa,EAAE,MAAM,CAAC,OAAO;aAC9B,CAAA;YAED,IAAI,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAA,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3E,IAAG,SAAS,GAAG,CAAC,CAAC,EAAC;gBAChB,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;aACjD;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QAE3B,uBAAuB;QACvB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAElD,SAAS;QACT,KAAI,IAAI,GAAG,GAAG,CAAC,EAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAG,GAAG,EAAE,EAAC;YACjD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAC,CAAC,IAAG,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACrF;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE7D,eAAe;QACf,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA,EAAE;YAC9B,IAAI,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAEpC,IAAG,CAAC,QAAQ,EAAC,sBAAsB,EAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC;gBACtE,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC;aACnC;YAED,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC;YAEpE,IAAG,MAAM,GAAG,CAAC,CAAC,EAAC;gBACb,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;gBAClC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC;gBACrC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC;gBACrC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC;gBAChC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,EAAE,CAAC;gBACrC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAA;gBAE7B,IAAG,CAAC,CAAC,UAAU,EAAC;oBACd,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC;oBAEvB,IAAG,GAAG,CAAC,IAAI,IAAI,MAAM,EAAC;wBACpB,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;qBACrC;yBAAM,IAAI,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAC;wBAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;qBAC7F;iBACF;qBAAM,IAAI,CAAC,CAAC,UAAU,EAAC;oBACtB,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC;oBAEvB,IAAG,GAAG,CAAC,IAAI,EAAC;wBACV,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;qBACjD;yBAAM;wBACL,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;wBAEvF,IAAG,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAC;4BACzD,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,IAAI,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAA;yBACzD;qBACF;iBACF;aACF;QACH,CAAC,CAAC,CAAA;QAEF,cAAc;QACd,IAAI,YAAY,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;QACtE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA,EAAE;YACtB,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC;YAEnE,IAAG,MAAM,GAAG,CAAC,CAAC,EAAC;gBACb,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC;aACpC;QACH,CAAC,CAAC,CAAA;QAEF,UAAU;QACV,IAAI,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAG,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAC;YACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAA;SAC1D;QAED,kBAAkB;QAClB,KAAI,IAAI,MAAM,GAAG,CAAC,EAAG,MAAM,GAAG,IAAI,CAAC,MAAM,EAAG,MAAM,EAAE,EAAC;YACnD,0CAA0C;YAE1C,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAE,OAAO,EAAC,CAAC,OAAO,EAAC,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3E,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAE,OAAO,EAAC,CAAC,OAAO,EAAC,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAE3E,IAAI,IAAI,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAE/E,IAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAC;gBACpD,SAAS;aACV;YAED,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEzE,KAAI,IAAI,GAAG,IAAI,aAAa,CAAC,WAAW,EAAC;gBACvC,IAAI,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAEvC,IAAI,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAEhC,IAAG,CAAC,QAAQ,EAAC,sBAAsB,EAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC;oBACtE,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;iBAC3B;gBAED,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC;gBAEhE,IAAG,MAAM,GAAG,CAAC,CAAC,EAAC;oBACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;oBACxB,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;oBACpC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,OAAO,CAAC;oBACtC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,OAAO,CAAC;oBACtC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBAErF,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1D,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtD,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC;oBACrC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChE,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC;oBACrC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC;oBAChC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,EAAE,CAAC;oBACrC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;oBAE9B,IAAG,CAAC,CAAC,UAAU,EAAC;wBACd,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC;wBAEvB,IAAG,GAAG,CAAC,IAAI,IAAI,MAAM,EAAC;4BACpB,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;yBACrC;6BAAM,IAAI,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAC;4BAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;yBAC7F;qBACF;yBAAM,IAAI,CAAC,CAAC,UAAU,EAAC;wBACtB,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC;wBACvB,IAAG,GAAG,CAAC,IAAI,EAAC;4BACV,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;yBACjD;6BAAM;4BACL,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;4BAEvF,IAAG,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAC;gCACzD,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,IAAI,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAA;6BACzD;yBACF;qBACF;iBACF;aACF;SACH;QAGA,QAAQ;QACR,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;YAC1B,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAE,CAAC,CAAE;YAE3B,8CAA8C;YAC9C,CAAC,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAE,OAAO,EAAC,CAAC,OAAO,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC7J,CAAC,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAE,OAAO,EAAC,CAAC,OAAO,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAE7J,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YACxC,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;SACzC;QAED,OAAO;YACL,OAAO;YACP,KAAK;SACN,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI;QACnC,IAAI,OAAO,GAAG;YACZ,EAAC,IAAI,EAAC,MAAM,EAAE,QAAQ,EAAC,IAAI,EAAE,KAAK,EAAC,IAAI,EAAC;YACxC,EAAC,IAAI,EAAC,QAAQ,EAAE,QAAQ,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,EAAC;SAC7C,CAAA;QAED,IAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAC;YACzB,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,UAAU,EAAE,QAAQ,EAAC,IAAI,EAAE,KAAK,EAAC,QAAQ,EAAC,CAAC,CAAC;SAChE;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,UAAU,EAAE,QAAQ,EAAC,IAAI,EAAE,KAAK,EAAC,QAAQ,EAAC,CAAC,CAAC;SAChE;QAED,IAAI,GAAG,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,eAAe,EAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAEzF,IAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAC;YACxB,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SAC/B;QAED,IAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAC;YACzB,KAAI,IAAI,MAAM,IAAI,QAAQ,EAAC;gBACzB,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;gBAEvD,IAAG,IAAI,EAAC;oBACN,OAAO,IAAI,CAAC;iBACb;aACF;SACF;aAAM;YACL,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;YAE/C,IAAG,IAAI,EAAC;gBACN,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI;QAC5B,IAAI,KAAK,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;QAClC,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,IAAG,MAAM,IAAI,OAAO,EAAE;YACpB,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;SACxB;aAAM;YACL,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;SACxB;QAED,IAAG,IAAI,IAAI,KAAK,EAAC;YACf,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,cAAc,CAAC,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAA","sourcesContent":["import { css, html, LitElement } from 'lit-element'\n\nimport { i18next, localize } from '@things-factory/i18n-base'\nimport { ScrollbarStyles, CommonGristStyles } from '@operato/styles'\n\nimport { TermsUtil } from './../../utils/terms-util'\nimport { MetaUiUtil } from './../../utils/meta-ui-util'\nimport { MetaApi } from '../../utils/meta-api'\nimport { MetaCrypto } from '../../utils/meta-crypto'\n\nimport snakeCase from 'lodash-es/snakeCase'\nimport upperFirst from 'lodash-es/upperFirst'\nimport {singular} from 'pluralize'\n\nconst i18nextEn = i18next.getFixedT('en', null, null);\nconst i18nextKo = i18next.getFixedT('ko', null, null);\nconst colTypes = {\n 'character varying' : 'VARCHAR',\n 'numeric':'NUMERIC',\n 'boolean':'BOOLEAN',\n 'uuid': 'VARCHAR',\n 'timestamp': 'TIMESTAMP',\n 'date': 'DATE',\n 'datetime': 'DATETIME',\n 'integer': 'INT'\n}\n\n/**\n * @license\n * Copyright © HatioLab Inc. All rights reserved.\n * @author Yang\n * @description \n */\nexport class ExportMenuPopup extends localize(i18next)(LitElement) {\n\n/**\n * @description 스타일 정의\n ***********************************\n * @returns {Object} 화면의 스타일 정의\n */\n static get styles() {\n return [\n ScrollbarStyles,\n CommonGristStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow-x: overlay;\n background-color: var(--main-section-background-color);\n }\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n .button-container {\n padding: var(--button-container-padding);\n margin: var(--button-container-margin);\n text-align: var(--button-container-align);\n background-color: var(--button-container-background);\n height: var(--button-container-height);\n text-align: right;\n padding-right: 12px;\n } \n `\n ];\n }\n\n /**\n * @description 라이트 사이클\n ***************************\n */\n async connectedCallback() {\n this.gridConfig = {\n rows: MetaApi.getGristSelectableConfig(false),\n pagination: {infinite:true},\n columns: [\n MetaApi.getGristColumnConfig2('integer', 'seq','seq', 'center', false, false, 80), \n MetaApi.getGristColumnConfig2('string', 'column_ko','column_display_ko', 'left', false, false, 150), \n MetaApi.getGristColumnConfig2('string', 'column_en','column_display_en', 'left', false, false, 150), \n MetaApi.getGristColumnConfig2('string', 'group_cd','screen_group_cd', 'left', false, false, 100), \n MetaApi.getGristColumnConfig2('string', 'group_nm_en','screen_group_display_en', 'left', false, false, 150), \n MetaApi.getGristColumnConfig2('string', 'group_nm_ko','screen_group_display_ko', 'left', false, false, 150), \n MetaApi.getGristColumnConfig2('string', 'group_type','screen_group_type', 'left', false, false, 100), \n MetaApi.getGristColumnConfig2('string', 'column_id','column_id', 'left', false, false, 150), \n MetaApi.getGristColumnConfig2('string', 'search_field','is_search_field', 'center', false, false, 80), \n MetaApi.getGristColumnConfig2('string', 'entity_ref','entity_object_reference_field', 'left', false, false, 100), \n MetaApi.getGristColumnConfig2('string', 'entity_code_ref','entity_code_reference_field', 'left', false, false, 100), \n MetaApi.getGristColumnConfig2('string', 'code_ref','code_reference_field', 'left', false, false, 100), \n MetaApi.getGristColumnConfig2('string', 'main_column','is_main_list_field', 'center', false, false, 80), \n MetaApi.getGristColumnConfig2('string', 'editable','is_editable', 'center', false, false, 80), \n MetaApi.getGristColumnConfig2('string', 'hidden','hidden', 'center', false, false, 80), \n MetaApi.getGristColumnConfig2('string', 'grid_align','grid_align', 'center', false, false, 100), \n MetaApi.getGristColumnConfig2('string', 'export_field','is_export_field', 'center', false, false, 100), \n MetaApi.getGristColumnConfig2('string', 'grid_width','field_width', 'center', false, false, 80), \n MetaApi.getGristColumnConfig2('string', 'column_type','column_type', 'center', false, false, 100), \n MetaApi.getGristColumnConfig2('string', 'column_length','column_size', 'center', false, false, 80), \n MetaApi.getGristColumnConfig2('string', 'column_not_null','is_not_null', 'center', false, false, 80), \n MetaApi.getGristColumnConfig2('string', 'default_value','default_value', 'left', false, false, 80), \n MetaApi.getGristColumnConfig2('string', 'index','table_index', 'left', false, false, 100), \n MetaApi.getGristColumnConfig2('string', 'unique','is_unique', 'center', false, false, 100), \n ],\n }\n\n if (super.connectedCallback) {\n await super.connectedCallback()\n }\n }\n\n /**\n * @description 라이프 사이클\n ***************************\n */\n render() {\n return html`\n <ox-grist\n id=\"ox-grist\" \n .config=${this.gridConfig}\n .mode=${'GRID'}\n auto-fetch\n .fetchHandler=${this.fetchHandler.bind(this)}>\n </ox-grist>\n <div id=\"button-container\" class=\"button-container\">\n <mwc-button raised label=\"${TermsUtil.tButton('export')}\" @click=${this.export.bind(this)}></mwc-button>\n </div>\n `\n }\n\n /**\n * @description 그리드 리턴\n **************************\n * @returns {Object} 그리드\n */\n get grist() {\n return this.shadowRoot.querySelector('#ox-grist')\n }\n\n\n async export(){\n let exportTitle = TermsUtil.tTitle(this.recordName);\n return await MetaApi.exportableData(true, exportTitle, this.grist);\n }\n\n /**\n * @description 이력 조회\n ***************************\n * @returns \n */\n async fetchHandler({ page = 0, limit = 0, sortings = [], filters = [] }){\n let selectFields = `\n id\n menu{\n id\n name\n routing\n template\n }\n entity {\n id\n bundle\n name\n tableName\n dataProp\n delStrategy\n description\n }\n entityColumns{\n id\n name\n rank\n description\n term\n colType\n colSize\n nullable\n uniqRank\n searchRank\n searchOper\n gridRank\n gridWidth\n gridEditor\n refType\n refName\n refUrl\n defVal\n },\n indices{\n name\n isUnique\n columns\n }\n columns{\n name\n isNullable\n length\n type\n default\n }\n parentMenu{\n id\n name\n }\n `\n\n let res = await MetaApi.findOne('exportMenuInfo',this.recordId, selectFields);\n\n\n // table 컬럼 정보 \n let records = res.columns.filter(column=> ['id','data_revision_no','deleted_at'].includes(column.name) === false).map(column=>{\n let record = {\n column_id: column.name,\n column_type: column.type,\n column_length: column.length,\n column_not_null: column.isNullable === true ? '' : 'O',\n default_value: column.default,\n }\n\n let entityIdx = res.entityColumns.findIndex(col=> col.name == column.name);\n if(entityIdx > -1){\n record.rank = res.entityColumns[entityIdx].rank;\n }\n\n return record;\n });\n let total = records.length;\n\n // entity Column 기반 정렬 \n records = records.sort((a, b) => a.rank - b.rank);\n\n // index \n for(let idx = 0 ; idx < res.indices.length ; idx++){\n records[idx].unique = res.indices[idx].isUnique === true ? 'O' : '';\n records[idx].index = res.indices[idx].columns.filter(x=> x!= 'deleted_at').join(\",\")\n }\n\n let mainMenu = JSON.parse(MetaCrypto.dec(res.menu.template));\n\n // 메인 메뉴 컬럼 정보 \n mainMenu.grid_column.forEach(x=>{\n let mainColName = snakeCase(x.name);\n\n if(['object','meta-object-selector','resource-object'].includes(x.type)){\n mainColName = mainColName + '_id';\n }\n\n let recIdx = records.findIndex(rec => rec.column_id == mainColName);\n\n if(recIdx > -1){\n records[recIdx].main_column = 'O';\n records[recIdx].editable = x.editable === true ? 'O' : '';\n records[recIdx].hidden = x.hidden === true ? 'O' : '';\n records[recIdx].grid_align = x.align;\n records[recIdx].export_field = x.exportable === true ? 'O' : '';\n records[recIdx].grid_width = x.width;\n records[recIdx].entity_ref = '';\n records[recIdx].entity_code_ref = '';\n records[recIdx].code_ref = ''\n\n if(x.select_opt){\n let opt = x.select_opt;\n\n if(opt.type == 'code'){\n records[recIdx].code_ref = opt.name;\n } else if (opt.type == 'entity'){\n records[recIdx].entity_code_ref = `${opt.name},${opt.args.codeField},${opt.args.dispField}`;\n }\n } else if (x.object_opt){\n let opt = x.object_opt;\n\n if(opt.menu){\n records[recIdx].entity_ref = `menu,${opt.menu}`;\n } else {\n records[recIdx].entity_ref = `${upperFirst(singular(opt.queryName))},${opt.nameField}`;\n\n if(opt.descriptionField && opt.descriptionField.length > 0){\n records[recIdx].entity_ref += `,${opt.descriptionField}`\n }\n }\n }\n }\n })\n\n // 메인메뉴 검색 정보 \n let searchFields = [...mainMenu.gql.query.filters, ...mainMenu.search]\n searchFields.forEach(x=>{\n let searchName = snakeCase(x.name);\n\n let recIdx = records.findIndex(rec => rec.column_id == searchName);\n\n if(recIdx > -1){\n records[recIdx].search_field = 'O';\n }\n })\n\n // tab etc\n let tabs = [...mainMenu.tab];\n if(mainMenu.etc.master_detail_element){\n tabs.push(JSON.parse(mainMenu.etc.master_detail_element))\n }\n\n // tab 설정 검색 .... \n for(let tabIdx = 0 ; tabIdx < tabs.length ; tabIdx++){\n // name, tagname, menu(routing), display, \n\n let tab = tabs[tabIdx];\n let tabNmEn = await this.getTerms( 'en-US',['label','field'], tab.display);\n let tabNmKo = await this.getTerms( 'ko-KR',['label','field'], tab.display);\n\n let data = await MetaUiUtil.getMenuMetaData(tab.menu ? tab.menu : tab.routing);\n\n if(!data || !data.records || data.records.length == 0){\n continue;\n }\n\n let tabMenuConfig = JSON.parse(MetaCrypto.dec(data.records[0].template));\n\n for(let idx in tabMenuConfig.grid_column){\n let x = tabMenuConfig.grid_column[idx];\n\n let colName = snakeCase(x.name);\n\n if(['object','meta-object-selector','resource-object'].includes(x.type)){\n colName = colName + '_id';\n }\n \n let recIdx = records.findIndex(rec => rec.column_id == colName);\n \n if(recIdx > -1){\n console.log(tab.tagName)\n records[recIdx].group_cd = tab.name;\n records[recIdx].group_nm_en = tabNmEn;\n records[recIdx].group_nm_ko = tabNmKo;\n records[recIdx].group_type = (tab.tagname == 'meta-form-element' ? 'Form' : 'Grist');\n \n records[recIdx].editable = x.editable === true ? 'O' : '';\n records[recIdx].hidden = x.hidden === true ? 'O' : '';\n records[recIdx].grid_align = x.align;\n records[recIdx].export_field = x.exportable === true ? 'O' : '';\n records[recIdx].grid_width = x.width;\n records[recIdx].entity_ref = '';\n records[recIdx].entity_code_ref = '';\n records[recIdx].code_ref = '';\n\n if(x.select_opt){\n let opt = x.select_opt;\n \n if(opt.type == 'code'){\n records[recIdx].code_ref = opt.name;\n } else if (opt.type == 'entity'){\n records[recIdx].entity_code_ref = `${opt.name},${opt.args.codeField},${opt.args.dispField}`;\n }\n } else if (x.object_opt){\n let opt = x.object_opt;\n if(opt.menu){\n records[recIdx].entity_ref = `menu,${opt.menu}`;\n } else {\n records[recIdx].entity_ref = `${upperFirst(singular(opt.queryName))},${opt.nameField}`;\n\n if(opt.descriptionField && opt.descriptionField.length > 0){\n records[recIdx].entity_ref += `,${opt.descriptionField}`\n }\n }\n }\n }\n }\n }\n\n\n // 최종 ~~\n for( let recIdx in records ){\n let x = records[recIdx];\n x.seq = Number(recIdx) +1 ;\n\n // 컬럼 명칭 termionologies 에 없으면 i18next 에서 찾는다 .\n x.column_ko = await this.getTerms( 'ko-KR',['label','field'], (x.column_id.endsWith('_id') ? x.column_id.substring(0,x.column_id.length - 3) : x.column_id));\n x.column_en = await this.getTerms( 'en-US',['label','field'], (x.column_id.endsWith('_id') ? x.column_id.substring(0,x.column_id.length - 3) : x.column_id));\n\n x.column_id = x.column_id.toUpperCase();\n x.column_type = colTypes[x.column_type];\n }\n\n return {\n records,\n total\n }\n }\n\n async getTerms(locale, category, name){\n let filters = [\n {name:'name', operator:'eq', value:name},\n {name:'locale', operator:'eq', value:locale}\n ]\n\n if(Array.isArray(category)){\n filters.push({name:'category', operator:'in', value:category});\n } else {\n filters.push({name:'category', operator:'eq', value:category});\n }\n\n let res = await MetaApi.searchByPagination('terminologies',filters, [], 0, 0, 'display');\n\n if(res.records.length > 0){\n return res.records[0].display;\n }\n\n if(Array.isArray(category)){\n for(let catIdx in category){\n let disp = this.getI18t(locale, category[catIdx], name)\n\n if(disp){\n return disp;\n }\n }\n } else {\n let disp = this.getI18t(locale, category, name)\n\n if(disp){\n return disp;\n }\n }\n\n return '';\n }\n\n getI18t(locale, category, name){\n let tName = `${category}.${name}`;\n let disp = '';\n\n if(locale == 'en-US') {\n disp = i18nextEn(tName)\n } else {\n disp = i18nextKo(tName)\n }\n\n if(disp == tName){\n return undefined;\n }\n \n return disp;\n }\n}\n\ncustomElements.define('export-menu-popup', ExportMenuPopup)"]}
|
|
1
|
+
{"version":3,"file":"export-menu-popup.js","sourceRoot":"","sources":["../../../client/pages/menu/export-menu-popup.js"],"names":[],"mappings":"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","sourcesContent":["import { css, html, LitElement } from 'lit'\n\nimport { i18next, localize } from '@things-factory/i18n-base'\nimport { ScrollbarStyles, CommonGristStyles } from '@operato/styles'\n\nimport { TermsUtil } from './../../utils/terms-util'\nimport { MetaUiUtil } from './../../utils/meta-ui-util'\nimport { MetaApi } from '../../utils/meta-api'\nimport { MetaCrypto } from '../../utils/meta-crypto'\n\nimport snakeCase from 'lodash-es/snakeCase'\nimport upperFirst from 'lodash-es/upperFirst'\nimport { singular } from 'pluralize'\n\nconst i18nextEn = i18next.getFixedT('en', null, null)\nconst i18nextKo = i18next.getFixedT('ko', null, null)\nconst colTypes = {\n 'character varying': 'VARCHAR',\n numeric: 'NUMERIC',\n boolean: 'BOOLEAN',\n uuid: 'VARCHAR',\n timestamp: 'TIMESTAMP',\n date: 'DATE',\n datetime: 'DATETIME',\n integer: 'INT'\n}\n\n/**\n * @license\n * Copyright © HatioLab Inc. All rights reserved.\n * @author Yang\n * @description\n */\nexport class ExportMenuPopup extends localize(i18next)(LitElement) {\n /**\n * @description 스타일 정의\n ***********************************\n * @returns {Object} 화면의 스타일 정의\n */\n static get styles() {\n return [\n ScrollbarStyles,\n CommonGristStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow-x: overlay;\n background-color: var(--main-section-background-color);\n }\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n .button-container {\n padding: var(--button-container-padding);\n margin: var(--button-container-margin);\n text-align: var(--button-container-align);\n background-color: var(--button-container-background);\n height: var(--button-container-height);\n text-align: right;\n padding-right: 12px;\n }\n `\n ]\n }\n\n /**\n * @description 라이트 사이클\n ***************************\n */\n async connectedCallback() {\n this.gridConfig = {\n rows: MetaApi.getGristSelectableConfig(false),\n pagination: { infinite: true },\n columns: [\n MetaApi.getGristColumnConfig2('integer', 'seq', 'seq', 'center', false, false, 80),\n MetaApi.getGristColumnConfig2('string', 'column_ko', 'column_display_ko', 'left', false, false, 150),\n MetaApi.getGristColumnConfig2('string', 'column_en', 'column_display_en', 'left', false, false, 150),\n MetaApi.getGristColumnConfig2('string', 'group_cd', 'screen_group_cd', 'left', false, false, 100),\n MetaApi.getGristColumnConfig2('string', 'group_nm_en', 'screen_group_display_en', 'left', false, false, 150),\n MetaApi.getGristColumnConfig2('string', 'group_nm_ko', 'screen_group_display_ko', 'left', false, false, 150),\n MetaApi.getGristColumnConfig2('string', 'group_type', 'screen_group_type', 'left', false, false, 100),\n MetaApi.getGristColumnConfig2('string', 'column_id', 'column_id', 'left', false, false, 150),\n MetaApi.getGristColumnConfig2('string', 'search_field', 'is_search_field', 'center', false, false, 80),\n MetaApi.getGristColumnConfig2('string', 'entity_ref', 'entity_object_reference_field', 'left', false, false, 100),\n MetaApi.getGristColumnConfig2('string', 'entity_code_ref', 'entity_code_reference_field', 'left', false, false, 100),\n MetaApi.getGristColumnConfig2('string', 'code_ref', 'code_reference_field', 'left', false, false, 100),\n MetaApi.getGristColumnConfig2('string', 'main_column', 'is_main_list_field', 'center', false, false, 80),\n MetaApi.getGristColumnConfig2('string', 'editable', 'is_editable', 'center', false, false, 80),\n MetaApi.getGristColumnConfig2('string', 'hidden', 'hidden', 'center', false, false, 80),\n MetaApi.getGristColumnConfig2('string', 'grid_align', 'grid_align', 'center', false, false, 100),\n MetaApi.getGristColumnConfig2('string', 'export_field', 'is_export_field', 'center', false, false, 100),\n MetaApi.getGristColumnConfig2('string', 'grid_width', 'field_width', 'center', false, false, 80),\n MetaApi.getGristColumnConfig2('string', 'column_type', 'column_type', 'center', false, false, 100),\n MetaApi.getGristColumnConfig2('string', 'column_length', 'column_size', 'center', false, false, 80),\n MetaApi.getGristColumnConfig2('string', 'column_not_null', 'is_not_null', 'center', false, false, 80),\n MetaApi.getGristColumnConfig2('string', 'default_value', 'default_value', 'left', false, false, 80),\n MetaApi.getGristColumnConfig2('string', 'index', 'table_index', 'left', false, false, 100),\n MetaApi.getGristColumnConfig2('string', 'unique', 'is_unique', 'center', false, false, 100)\n ]\n }\n\n if (super.connectedCallback) {\n await super.connectedCallback()\n }\n }\n\n /**\n * @description 라이프 사이클\n ***************************\n */\n render() {\n return html`\n <ox-grist id=\"ox-grist\" .config=${this.gridConfig} .mode=${'GRID'} auto-fetch .fetchHandler=${this.fetchHandler.bind(this)}> </ox-grist>\n <div id=\"button-container\" class=\"button-container\">\n <mwc-button raised label=\"${TermsUtil.tButton('export')}\" @click=${this.export.bind(this)}></mwc-button>\n </div>\n `\n }\n\n /**\n * @description 그리드 리턴\n **************************\n * @returns {Object} 그리드\n */\n get grist() {\n return this.shadowRoot.querySelector('#ox-grist')\n }\n\n async export() {\n let exportTitle = TermsUtil.tTitle(this.recordName)\n return await MetaApi.exportableData(true, exportTitle, this.grist)\n }\n\n /**\n * @description 이력 조회\n ***************************\n * @returns\n */\n async fetchHandler({ page = 0, limit = 0, sortings = [], filters = [] }) {\n let selectFields = `\n id\n menu{\n id\n name\n routing\n template\n }\n entity {\n id\n bundle\n name\n tableName\n dataProp\n delStrategy\n description\n }\n entityColumns{\n id\n name\n rank\n description\n term\n colType\n colSize\n nullable\n uniqRank\n searchRank\n searchOper\n gridRank\n gridWidth\n gridEditor\n refType\n refName\n refUrl\n defVal\n },\n indices{\n name\n isUnique\n columns\n }\n columns{\n name\n isNullable\n length\n type\n default\n }\n parentMenu{\n id\n name\n }\n `\n\n let res = await MetaApi.findOne('exportMenuInfo', this.recordId, selectFields)\n\n // table 컬럼 정보\n let records = res.columns\n .filter(column => ['id', 'data_revision_no', 'deleted_at'].includes(column.name) === false)\n .map(column => {\n let record = {\n column_id: column.name,\n column_type: column.type,\n column_length: column.length,\n column_not_null: column.isNullable === true ? '' : 'O',\n default_value: column.default\n }\n\n let entityIdx = res.entityColumns.findIndex(col => col.name == column.name)\n if (entityIdx > -1) {\n record.rank = res.entityColumns[entityIdx].rank\n }\n\n return record\n })\n let total = records.length\n\n // entity Column 기반 정렬\n records = records.sort((a, b) => a.rank - b.rank)\n\n // index\n for (let idx = 0; idx < res.indices.length; idx++) {\n records[idx].unique = res.indices[idx].isUnique === true ? 'O' : ''\n records[idx].index = res.indices[idx].columns.filter(x => x != 'deleted_at').join(',')\n }\n\n let mainMenu = JSON.parse(MetaCrypto.dec(res.menu.template))\n\n // 메인 메뉴 컬럼 정보\n mainMenu.grid_column.forEach(x => {\n let mainColName = snakeCase(x.name)\n\n if (['object', 'meta-object-selector', 'resource-object'].includes(x.type)) {\n mainColName = mainColName + '_id'\n }\n\n let recIdx = records.findIndex(rec => rec.column_id == mainColName)\n\n if (recIdx > -1) {\n records[recIdx].main_column = 'O'\n records[recIdx].editable = x.editable === true ? 'O' : ''\n records[recIdx].hidden = x.hidden === true ? 'O' : ''\n records[recIdx].grid_align = x.align\n records[recIdx].export_field = x.exportable === true ? 'O' : ''\n records[recIdx].grid_width = x.width\n records[recIdx].entity_ref = ''\n records[recIdx].entity_code_ref = ''\n records[recIdx].code_ref = ''\n\n if (x.select_opt) {\n let opt = x.select_opt\n\n if (opt.type == 'code') {\n records[recIdx].code_ref = opt.name\n } else if (opt.type == 'entity') {\n records[recIdx].entity_code_ref = `${opt.name},${opt.args.codeField},${opt.args.dispField}`\n }\n } else if (x.object_opt) {\n let opt = x.object_opt\n\n if (opt.menu) {\n records[recIdx].entity_ref = `menu,${opt.menu}`\n } else {\n records[recIdx].entity_ref = `${upperFirst(singular(opt.queryName))},${opt.nameField}`\n\n if (opt.descriptionField && opt.descriptionField.length > 0) {\n records[recIdx].entity_ref += `,${opt.descriptionField}`\n }\n }\n }\n }\n })\n\n // 메인메뉴 검색 정보\n let searchFields = [...mainMenu.gql.query.filters, ...mainMenu.search]\n searchFields.forEach(x => {\n let searchName = snakeCase(x.name)\n\n let recIdx = records.findIndex(rec => rec.column_id == searchName)\n\n if (recIdx > -1) {\n records[recIdx].search_field = 'O'\n }\n })\n\n // tab etc\n let tabs = [...mainMenu.tab]\n if (mainMenu.etc.master_detail_element) {\n tabs.push(JSON.parse(mainMenu.etc.master_detail_element))\n }\n\n // tab 설정 검색 ....\n for (let tabIdx = 0; tabIdx < tabs.length; tabIdx++) {\n // name, tagname, menu(routing), display,\n\n let tab = tabs[tabIdx]\n let tabNmEn = await this.getTerms('en-US', ['label', 'field'], tab.display)\n let tabNmKo = await this.getTerms('ko-KR', ['label', 'field'], tab.display)\n\n let data = await MetaUiUtil.getMenuMetaData(tab.menu ? tab.menu : tab.routing)\n\n if (!data || !data.records || data.records.length == 0) {\n continue\n }\n\n let tabMenuConfig = JSON.parse(MetaCrypto.dec(data.records[0].template))\n\n for (let idx in tabMenuConfig.grid_column) {\n let x = tabMenuConfig.grid_column[idx]\n\n let colName = snakeCase(x.name)\n\n if (['object', 'meta-object-selector', 'resource-object'].includes(x.type)) {\n colName = colName + '_id'\n }\n\n let recIdx = records.findIndex(rec => rec.column_id == colName)\n\n if (recIdx > -1) {\n console.log(tab.tagName)\n records[recIdx].group_cd = tab.name\n records[recIdx].group_nm_en = tabNmEn\n records[recIdx].group_nm_ko = tabNmKo\n records[recIdx].group_type = tab.tagname == 'meta-form-element' ? 'Form' : 'Grist'\n\n records[recIdx].editable = x.editable === true ? 'O' : ''\n records[recIdx].hidden = x.hidden === true ? 'O' : ''\n records[recIdx].grid_align = x.align\n records[recIdx].export_field = x.exportable === true ? 'O' : ''\n records[recIdx].grid_width = x.width\n records[recIdx].entity_ref = ''\n records[recIdx].entity_code_ref = ''\n records[recIdx].code_ref = ''\n\n if (x.select_opt) {\n let opt = x.select_opt\n\n if (opt.type == 'code') {\n records[recIdx].code_ref = opt.name\n } else if (opt.type == 'entity') {\n records[recIdx].entity_code_ref = `${opt.name},${opt.args.codeField},${opt.args.dispField}`\n }\n } else if (x.object_opt) {\n let opt = x.object_opt\n if (opt.menu) {\n records[recIdx].entity_ref = `menu,${opt.menu}`\n } else {\n records[recIdx].entity_ref = `${upperFirst(singular(opt.queryName))},${opt.nameField}`\n\n if (opt.descriptionField && opt.descriptionField.length > 0) {\n records[recIdx].entity_ref += `,${opt.descriptionField}`\n }\n }\n }\n }\n }\n }\n\n // 최종 ~~\n for (let recIdx in records) {\n let x = records[recIdx]\n x.seq = Number(recIdx) + 1\n\n // 컬럼 명칭 termionologies 에 없으면 i18next 에서 찾는다 .\n x.column_ko = await this.getTerms('ko-KR', ['label', 'field'], x.column_id.endsWith('_id') ? x.column_id.substring(0, x.column_id.length - 3) : x.column_id)\n x.column_en = await this.getTerms('en-US', ['label', 'field'], x.column_id.endsWith('_id') ? x.column_id.substring(0, x.column_id.length - 3) : x.column_id)\n\n x.column_id = x.column_id.toUpperCase()\n x.column_type = colTypes[x.column_type]\n }\n\n return {\n records,\n total\n }\n }\n\n async getTerms(locale, category, name) {\n let filters = [\n { name: 'name', operator: 'eq', value: name },\n { name: 'locale', operator: 'eq', value: locale }\n ]\n\n if (Array.isArray(category)) {\n filters.push({ name: 'category', operator: 'in', value: category })\n } else {\n filters.push({ name: 'category', operator: 'eq', value: category })\n }\n\n let res = await MetaApi.searchByPagination('terminologies', filters, [], 0, 0, 'display')\n\n if (res.records.length > 0) {\n return res.records[0].display\n }\n\n if (Array.isArray(category)) {\n for (let catIdx in category) {\n let disp = this.getI18t(locale, category[catIdx], name)\n\n if (disp) {\n return disp\n }\n }\n } else {\n let disp = this.getI18t(locale, category, name)\n\n if (disp) {\n return disp\n }\n }\n\n return ''\n }\n\n getI18t(locale, category, name) {\n let tName = `${category}.${name}`\n let disp = ''\n\n if (locale == 'en-US') {\n disp = i18nextEn(tName)\n } else {\n disp = i18nextKo(tName)\n }\n\n if (disp == tName) {\n return undefined\n }\n\n return disp\n }\n}\n\ncustomElements.define('export-menu-popup', ExportMenuPopup)\n"]}
|
|
@@ -11,7 +11,7 @@ declare const MetaGristElement_base: {
|
|
|
11
11
|
firstUpdated(): Promise<void>;
|
|
12
12
|
pageInitialized(): Promise<void>;
|
|
13
13
|
pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
|
|
14
|
-
render(): import("lit
|
|
14
|
+
render(): import("lit").TemplateResult<1>;
|
|
15
15
|
parseBasicGridConfigs(menuMeta: any): void;
|
|
16
16
|
gridConfig: any;
|
|
17
17
|
gridColumnConfig: any;
|
|
@@ -11,7 +11,7 @@ declare const MetaGristPage_base: {
|
|
|
11
11
|
firstUpdated(): Promise<void>;
|
|
12
12
|
pageInitialized(): Promise<void>;
|
|
13
13
|
pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
|
|
14
|
-
render(): import("lit
|
|
14
|
+
render(): import("lit").TemplateResult<1>;
|
|
15
15
|
parseBasicGridConfigs(menuMeta: any): void;
|
|
16
16
|
gridConfig: any;
|
|
17
17
|
gridColumnConfig: any;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { css, html, LitElement } from 'lit
|
|
1
|
+
import { css, html, LitElement } from 'lit';
|
|
2
2
|
import { i18next, localize } from '@things-factory/i18n-base';
|
|
3
3
|
import { ScrollbarStyles, CommonGristStyles } from '@operato/styles';
|
|
4
4
|
import { TermsUtil } from './../../utils/terms-util';
|
|
@@ -21,65 +21,66 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
21
21
|
ScrollbarStyles,
|
|
22
22
|
CommonGristStyles,
|
|
23
23
|
css `
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
24
|
+
:host {
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
overflow-x: auto;
|
|
28
|
+
}
|
|
29
|
+
.container {
|
|
30
|
+
flex: 1;
|
|
31
|
+
display: grid;
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
}
|
|
34
|
+
.container_detail {
|
|
35
|
+
background-color: var(--main-section-background-color);
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: column;
|
|
38
|
+
flex: 1;
|
|
39
|
+
overflow-y: auto;
|
|
40
|
+
}
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
h2 {
|
|
43
|
+
padding: var(--subtitle-padding);
|
|
44
|
+
font: var(--subtitle-font);
|
|
45
|
+
color: var(--subtitle-text-color);
|
|
46
|
+
border-bottom: var(--subtitle-border-bottom);
|
|
47
|
+
}
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
.container_detail h2 {
|
|
50
|
+
margin: var(--grist-title-margin);
|
|
51
|
+
border: var(--grist-title-border);
|
|
52
|
+
font: var(--grist-title-font);
|
|
53
|
+
color: var(--secondary-color);
|
|
54
|
+
}
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
.container_detail h2 mwc-icon {
|
|
57
|
+
vertical-align: middle;
|
|
58
|
+
margin: var(--grist-title-icon-margin);
|
|
59
|
+
font-size: var(--grist-title-icon-size);
|
|
60
|
+
color: var(--grist-title-icon-color);
|
|
61
|
+
}
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
63
|
+
h2 {
|
|
64
|
+
padding-bottom: var(--grist-title-with-grid-padding);
|
|
65
|
+
}
|
|
66
|
+
ox-grist {
|
|
67
|
+
overflow-y: auto;
|
|
68
|
+
flex: 1;
|
|
69
|
+
}
|
|
70
|
+
search-form {
|
|
71
|
+
overflow: visible;
|
|
72
|
+
}
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
74
|
+
.button-container {
|
|
75
|
+
padding: var(--button-container-padding);
|
|
76
|
+
margin: var(--button-container-margin);
|
|
77
|
+
text-align: var(--button-container-align);
|
|
78
|
+
background-color: var(--button-container-background);
|
|
79
|
+
height: var(--button-container-height);
|
|
80
|
+
text-align: right;
|
|
81
|
+
padding-right: 12px;
|
|
82
|
+
}
|
|
83
|
+
`
|
|
83
84
|
];
|
|
84
85
|
return styles;
|
|
85
86
|
}
|
|
@@ -113,7 +114,7 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
113
114
|
***************************
|
|
114
115
|
*/
|
|
115
116
|
async connectedCallback() {
|
|
116
|
-
// 메뉴 그룹 그리드 설정
|
|
117
|
+
// 메뉴 그룹 그리드 설정
|
|
117
118
|
this.gridConfig = {
|
|
118
119
|
rows: { selectable: false, appendable: false },
|
|
119
120
|
pagination: { infinite: true },
|
|
@@ -134,25 +135,16 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
134
135
|
***************************
|
|
135
136
|
*/
|
|
136
137
|
render() {
|
|
137
|
-
return html `
|
|
138
|
-
<div
|
|
139
|
-
<
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
</
|
|
143
|
-
<
|
|
144
|
-
<mwc-button raised label="${TermsUtil.tButton('reset')}" style="margin-left:7px;margin-top:7px;"
|
|
145
|
-
@click=${this.reset.bind(this)}>
|
|
146
|
-
</mwc-button>
|
|
147
|
-
<mwc-button raised label="${TermsUtil.tButton('delete')}" style="margin-left:7px;margin-top:7px;"
|
|
148
|
-
@click=${this.delete.bind(this)}>
|
|
149
|
-
</mwc-button>
|
|
150
|
-
<mwc-button raised label="${TermsUtil.tButton('save')}" style="margin-left:7px;margin-top:7px;"
|
|
151
|
-
@click=${this.save.bind(this)}>
|
|
152
|
-
</mwc-button>
|
|
153
|
-
</div>
|
|
138
|
+
return html ` <div id="container" class="container">
|
|
139
|
+
<div class="container_detail">
|
|
140
|
+
<ox-grist id="ox-grist" .config=${this.gridConfig} .mode=${'GRID'} auto-fetch .fetchHandler=${this.fetchColumns.bind(this)}> </ox-grist>
|
|
141
|
+
<div id="button-container" class="button-container">
|
|
142
|
+
<mwc-button raised label="${TermsUtil.tButton('reset')}" style="margin-left:7px;margin-top:7px;" @click=${this.reset.bind(this)}> </mwc-button>
|
|
143
|
+
<mwc-button raised label="${TermsUtil.tButton('delete')}" style="margin-left:7px;margin-top:7px;" @click=${this.delete.bind(this)}> </mwc-button>
|
|
144
|
+
<mwc-button raised label="${TermsUtil.tButton('save')}" style="margin-left:7px;margin-top:7px;" @click=${this.save.bind(this)}> </mwc-button>
|
|
154
145
|
</div>
|
|
155
|
-
</div
|
|
146
|
+
</div>
|
|
147
|
+
</div>`;
|
|
156
148
|
}
|
|
157
149
|
/**
|
|
158
150
|
* @description 그리드 리턴
|
|
@@ -168,7 +160,7 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
168
160
|
* @returns
|
|
169
161
|
*/
|
|
170
162
|
async fetchColumns() {
|
|
171
|
-
// 팝업 오프너에서 받아온 그리스트의 설정으로 보여준다
|
|
163
|
+
// 팝업 오프너에서 받아온 그리스트의 설정으로 보여준다
|
|
172
164
|
let cols = this.configGrist.config.columns;
|
|
173
165
|
let filterCols = cols.filter(x => x.type != 'gutter' && x.name != 'id' && x.unusable !== true);
|
|
174
166
|
let rank = 0;
|
|
@@ -209,20 +201,20 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
209
201
|
************************************************
|
|
210
202
|
*/
|
|
211
203
|
async save(e) {
|
|
212
|
-
// 변경 체크
|
|
204
|
+
// 변경 체크
|
|
213
205
|
MetaApi.patchesForUpdateMultiple(this.grist);
|
|
214
|
-
// 기존 데이터 조회
|
|
206
|
+
// 기존 데이터 조회
|
|
215
207
|
let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId);
|
|
216
208
|
let { id = undefined, template = {} } = personal;
|
|
217
|
-
let tempName =
|
|
209
|
+
let tempName = 'master';
|
|
218
210
|
if (this.configGrist.configName) {
|
|
219
211
|
tempName = this.configGrist.configName;
|
|
220
212
|
}
|
|
221
|
-
// 기존 데이터 삭제
|
|
213
|
+
// 기존 데이터 삭제
|
|
222
214
|
if (template[tempName]) {
|
|
223
215
|
delete template[tempName];
|
|
224
216
|
}
|
|
225
|
-
// 그리드 설정 데이터 숨김 필드 제외 후 정렬
|
|
217
|
+
// 그리드 설정 데이터 숨김 필드 제외 후 정렬
|
|
226
218
|
let records = this.grist.dirtyData.records;
|
|
227
219
|
let data = records.filter(x => x.hidden == false);
|
|
228
220
|
data.sort((a, b) => {
|
|
@@ -232,18 +224,18 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
232
224
|
return x.name;
|
|
233
225
|
});
|
|
234
226
|
let patch = { template: JSON.stringify(template) };
|
|
235
|
-
// 기존에 ID 가 있으면 update
|
|
227
|
+
// 기존에 ID 가 있으면 update
|
|
236
228
|
if (id) {
|
|
237
229
|
patch.id = id;
|
|
238
|
-
patch.cuFlag =
|
|
230
|
+
patch.cuFlag = 'M';
|
|
239
231
|
}
|
|
240
232
|
else {
|
|
241
233
|
patch.menu = {
|
|
242
234
|
id: this.menuId
|
|
243
235
|
};
|
|
244
|
-
patch.cuFlag =
|
|
236
|
+
patch.cuFlag = '+';
|
|
245
237
|
}
|
|
246
|
-
await MetaApi.updateMultiple(
|
|
238
|
+
await MetaApi.updateMultiple('updateMultipleGridpersonalize', [patch]);
|
|
247
239
|
MetaApi.showToast('info', TermsUtil.tText('success to save'));
|
|
248
240
|
history.back();
|
|
249
241
|
}
|