@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.
Files changed (93) hide show
  1. package/client/actions/main.js +14 -20
  2. package/client/bootstrap.ts +13 -6
  3. package/client/component/grist/renderer/grist-renderer-meta-object-selector.js +18 -13
  4. package/client/pages/entity/config-entity.js +180 -112
  5. package/client/pages/entity/main-menu-selector.js +85 -84
  6. package/client/pages/history/history-copy-list-popup.js +33 -45
  7. package/client/pages/history/history-json-list-popup.js +38 -50
  8. package/client/pages/menu/dynamic-menu-template.js +1 -1
  9. package/client/pages/menu/dynamic-menu.js +137 -121
  10. package/client/pages/menu/export-menu-popup.js +210 -218
  11. package/client/pages/personalize/personal-column-selector.js +112 -122
  12. package/client/utils/meta-ui-util.js +0 -4
  13. package/client/utils/service-util.js +4 -4
  14. package/client/utils/terms-util.js +41 -42
  15. package/client/utils/ui-util.js +2 -5
  16. package/client/viewparts/dynamic-menu-part.js +7 -28
  17. package/dist-client/actions/main.js +6 -5
  18. package/dist-client/actions/main.js.map +1 -1
  19. package/dist-client/bootstrap.d.ts +4 -1
  20. package/dist-client/bootstrap.js +12 -6
  21. package/dist-client/bootstrap.js.map +1 -1
  22. package/dist-client/component/grist/renderer/grist-renderer-code-input.d.ts +1 -1
  23. package/dist-client/component/grist/renderer/grist-renderer-meta-code-selector.d.ts +1 -1
  24. package/dist-client/component/grist/renderer/grist-renderer-meta-object-selector.d.ts +1 -1
  25. package/dist-client/component/grist/renderer/grist-renderer-meta-object-selector.js +9 -3
  26. package/dist-client/component/grist/renderer/grist-renderer-meta-object-selector.js.map +1 -1
  27. package/dist-client/component/popup/code-input-editor-popup.d.ts +1 -1
  28. package/dist-client/component/popup/meta-object-selector-popup.d.ts +1 -1
  29. package/dist-client/component/popup/record-based-code-editor-popup.d.ts +1 -1
  30. package/dist-client/mixin/meta-basic-grist-mixin.d.ts +1 -1
  31. package/dist-client/pages/activity/meta-activity-viewer-element.d.ts +1 -1
  32. package/dist-client/pages/activity/meta-activity-writer-element.d.ts +1 -1
  33. package/dist-client/pages/button-role/button-role-detail.d.ts +1 -1
  34. package/dist-client/pages/entity/config-entity.js +131 -62
  35. package/dist-client/pages/entity/config-entity.js.map +1 -1
  36. package/dist-client/pages/entity/main-menu-selector.d.ts +1 -1
  37. package/dist-client/pages/entity/main-menu-selector.js +74 -73
  38. package/dist-client/pages/entity/main-menu-selector.js.map +1 -1
  39. package/dist-client/pages/history/history-copy-list-popup.d.ts +1 -1
  40. package/dist-client/pages/history/history-copy-list-popup.js +14 -26
  41. package/dist-client/pages/history/history-copy-list-popup.js.map +1 -1
  42. package/dist-client/pages/history/history-json-list-popup.d.ts +5 -5
  43. package/dist-client/pages/history/history-json-list-popup.js +19 -31
  44. package/dist-client/pages/history/history-json-list-popup.js.map +1 -1
  45. package/dist-client/pages/menu/dynamic-menu-setting-let.d.ts +1 -1
  46. package/dist-client/pages/menu/dynamic-menu-template.js +1 -1
  47. package/dist-client/pages/menu/dynamic-menu-template.js.map +1 -1
  48. package/dist-client/pages/menu/dynamic-menu.js +68 -48
  49. package/dist-client/pages/menu/dynamic-menu.js.map +1 -1
  50. package/dist-client/pages/menu/export-menu-popup.d.ts +5 -5
  51. package/dist-client/pages/menu/export-menu-popup.js +50 -54
  52. package/dist-client/pages/menu/export-menu-popup.js.map +1 -1
  53. package/dist-client/pages/meta-grist-element.d.ts +1 -1
  54. package/dist-client/pages/meta-grist-page.d.ts +1 -1
  55. package/dist-client/pages/personalize/personal-column-selector.d.ts +1 -1
  56. package/dist-client/pages/personalize/personal-column-selector.js +76 -84
  57. package/dist-client/pages/personalize/personal-column-selector.js.map +1 -1
  58. package/dist-client/pages/work-code/work-code-detail-popup.d.ts +1 -1
  59. package/dist-client/tsconfig.tsbuildinfo +1 -1
  60. package/dist-client/utils/meta-ui-util.js +0 -3
  61. package/dist-client/utils/meta-ui-util.js.map +1 -1
  62. package/dist-client/utils/service-util.js +4 -4
  63. package/dist-client/utils/service-util.js.map +1 -1
  64. package/dist-client/utils/terms-util.d.ts +13 -13
  65. package/dist-client/utils/terms-util.js +10 -12
  66. package/dist-client/utils/terms-util.js.map +1 -1
  67. package/dist-client/utils/ui-util.js +1 -4
  68. package/dist-client/utils/ui-util.js.map +1 -1
  69. package/dist-client/viewparts/dynamic-menu-part.d.ts +1 -1
  70. package/dist-client/viewparts/dynamic-menu-part.js +7 -26
  71. package/dist-client/viewparts/dynamic-menu-part.js.map +1 -1
  72. package/dist-server/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +9 -8
  74. package/client/viewparts/dynamic-menu-landscape-styles.js +0 -149
  75. package/client/viewparts/dynamic-menu-landscape.js +0 -106
  76. package/client/viewparts/dynamic-menu-portrait-styles.js +0 -130
  77. package/client/viewparts/dynamic-menu-portrait.js +0 -90
  78. package/client/viewparts/dynamic-top-menu-bar.js +0 -148
  79. package/dist-client/viewparts/dynamic-menu-landscape-styles.d.ts +0 -1
  80. package/dist-client/viewparts/dynamic-menu-landscape-styles.js +0 -149
  81. package/dist-client/viewparts/dynamic-menu-landscape-styles.js.map +0 -1
  82. package/dist-client/viewparts/dynamic-menu-landscape.d.ts +0 -21
  83. package/dist-client/viewparts/dynamic-menu-landscape.js +0 -87
  84. package/dist-client/viewparts/dynamic-menu-landscape.js.map +0 -1
  85. package/dist-client/viewparts/dynamic-menu-portrait-styles.d.ts +0 -1
  86. package/dist-client/viewparts/dynamic-menu-portrait-styles.js +0 -130
  87. package/dist-client/viewparts/dynamic-menu-portrait-styles.js.map +0 -1
  88. package/dist-client/viewparts/dynamic-menu-portrait.d.ts +0 -13
  89. package/dist-client/viewparts/dynamic-menu-portrait.js +0 -74
  90. package/dist-client/viewparts/dynamic-menu-portrait.js.map +0 -1
  91. package/dist-client/viewparts/dynamic-top-menu-bar.d.ts +0 -27
  92. package/dist-client/viewparts/dynamic-top-menu-bar.js +0 -133
  93. package/dist-client/viewparts/dynamic-top-menu-bar.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { css, html, LitElement } from 'lit-element';
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
- 'numeric': 'NUMERIC',
16
- 'boolean': 'BOOLEAN',
17
- 'uuid': 'VARCHAR',
18
- 'timestamp': 'TIMESTAMP',
19
- 'date': 'DATE',
20
- 'datetime': 'DATETIME',
21
- 'integer': 'INT'
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
- * @description 스타일 정의
32
- ***********************************
33
- * @returns {Object} 화면의 스타일 정의
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
- :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
- }
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.filter(column => ['id', 'data_revision_no', 'deleted_at'].includes(column.name) === false).map(column => {
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 = (tab.tagname == 'meta-form-element' ? 'Form' : 'Grist');
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'], (x.column_id.endsWith('_id') ? x.column_id.substring(0, x.column_id.length - 3) : x.column_id));
332
- 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));
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":"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","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":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAE3C,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,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACrD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACrD,MAAM,QAAQ,GAAG;IACf,mBAAmB,EAAE,SAAS;IAC9B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,KAAK;CACf,CAAA;AAED;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAChE;;;;OAIG;IACH,MAAM,KAAK,MAAM;QACf,OAAO;YACL,eAAe;YACf,iBAAiB;YACjB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;OAoBF;SACF,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC,UAAU,GAAG;YAChB,IAAI,EAAE,OAAO,CAAC,wBAAwB,CAAC,KAAK,CAAC;YAC7C,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9B,OAAO,EAAE;gBACP,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBAClF,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACpG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACpG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACjG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBAC5G,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBAC5G,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACrG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBAC5F,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACtG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,+BAA+B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACjH,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACpH,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACtG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACxG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9F,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACvF,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBAChG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBACvG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBAChG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBAClG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACnG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACrG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACnG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;gBAC1F,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;aAC5F;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;wCACyB,IAAI,CAAC,UAAU,UAAU,MAAM,6BAA6B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;oCAE5F,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;KAE5F,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACnD,OAAO,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IACpE,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,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QAE9E,cAAc;QACd,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO;aACtB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;aAC1F,GAAG,CAAC,MAAM,CAAC,EAAE;YACZ,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,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA;YAC3E,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;gBAClB,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAA;aAChD;YAED,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;QACJ,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAA;QAE1B,sBAAsB;QACtB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;QAEjD,QAAQ;QACR,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;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,CAAA;YACnE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACvF;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QAE5D,cAAc;QACd,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC/B,IAAI,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAEnC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBAC1E,WAAW,GAAG,WAAW,GAAG,KAAK,CAAA;aAClC;YAED,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,WAAW,CAAC,CAAA;YAEnE,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;gBACf,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,GAAG,CAAA;gBACjC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBACzD,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBACrD,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAA;gBACpC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC/D,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAA;gBACpC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,EAAE,CAAA;gBAC/B,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,EAAE,CAAA;gBACpC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAA;gBAE7B,IAAI,CAAC,CAAC,UAAU,EAAE;oBAChB,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU,CAAA;oBAEtB,IAAI,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE;wBACtB,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAA;qBACpC;yBAAM,IAAI,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE;wBAC/B,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA;qBAC5F;iBACF;qBAAM,IAAI,CAAC,CAAC,UAAU,EAAE;oBACvB,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU,CAAA;oBAEtB,IAAI,GAAG,CAAC,IAAI,EAAE;wBACZ,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAA;qBAChD;yBAAM;wBACL,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAA;wBAEtF,IAAI,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC3D,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,IAAI,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAA;yBACzD;qBACF;iBACF;aACF;QACH,CAAC,CAAC,CAAA;QAEF,aAAa;QACb,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,CAAC,EAAE;YACvB,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAElC,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,UAAU,CAAC,CAAA;YAElE,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;gBACf,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,GAAG,GAAG,CAAA;aACnC;QACH,CAAC,CAAC,CAAA;QAEF,UAAU;QACV,IAAI,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAA;SAC1D;QAED,iBAAiB;QACjB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;YACnD,yCAAyC;YAEzC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;YACtB,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;YAC3E,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;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,CAAA;YAE9E,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;gBACtD,SAAQ;aACT;YAED,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;YAExE,KAAK,IAAI,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE;gBACzC,IAAI,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBAEtC,IAAI,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBAE/B,IAAI,CAAC,QAAQ,EAAE,sBAAsB,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;oBAC1E,OAAO,GAAG,OAAO,GAAG,KAAK,CAAA;iBAC1B;gBAED,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,CAAA;gBAE/D,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;oBACf,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;oBACxB,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAA;oBACnC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,OAAO,CAAA;oBACrC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,OAAO,CAAA;oBACrC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;oBAElF,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;oBACzD,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;oBACrD,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAA;oBACpC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;oBAC/D,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAA;oBACpC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,EAAE,CAAA;oBAC/B,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,EAAE,CAAA;oBACpC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAA;oBAE7B,IAAI,CAAC,CAAC,UAAU,EAAE;wBAChB,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU,CAAA;wBAEtB,IAAI,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE;4BACtB,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAA;yBACpC;6BAAM,IAAI,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE;4BAC/B,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA;yBAC5F;qBACF;yBAAM,IAAI,CAAC,CAAC,UAAU,EAAE;wBACvB,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU,CAAA;wBACtB,IAAI,GAAG,CAAC,IAAI,EAAE;4BACZ,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAA;yBAChD;6BAAM;4BACL,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAA;4BAEtF,IAAI,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gCAC3D,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,IAAI,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAA;6BACzD;yBACF;qBACF;iBACF;aACF;SACF;QAED,QAAQ;QACR,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;YAC1B,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;YACvB,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAE1B,8CAA8C;YAC9C,CAAC,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;YAC5J,CAAC,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;YAE5J,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAA;YACvC,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;SACxC;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,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YAC7C,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;SAClD,CAAA;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;SACpE;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;SACpE;QAED,IAAI,GAAG,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;QAEzF,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;SAC9B;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,KAAK,IAAI,MAAM,IAAI,QAAQ,EAAE;gBAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;gBAEvD,IAAI,IAAI,EAAE;oBACR,OAAO,IAAI,CAAA;iBACZ;aACF;SACF;aAAM;YACL,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;YAE/C,IAAI,IAAI,EAAE;gBACR,OAAO,IAAI,CAAA;aACZ;SACF;QAED,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI;QAC5B,IAAI,KAAK,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAA;QACjC,IAAI,IAAI,GAAG,EAAE,CAAA;QAEb,IAAI,MAAM,IAAI,OAAO,EAAE;YACrB,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;SACxB;aAAM;YACL,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;SACxB;QAED,IAAI,IAAI,IAAI,KAAK,EAAE;YACjB,OAAO,SAAS,CAAA;SACjB;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED,cAAc,CAAC,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAA","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-html").TemplateResult<1>;
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-html").TemplateResult<1>;
14
+ render(): import("lit").TemplateResult<1>;
15
15
  parseBasicGridConfigs(menuMeta: any): void;
16
16
  gridConfig: any;
17
17
  gridColumnConfig: any;
@@ -36,7 +36,7 @@ export class PersonalColumnSelector {
36
36
  * @description 라이프 사이클
37
37
  ***************************
38
38
  */
39
- render(): import("lit-html").TemplateResult<1>;
39
+ render(): import("lit").TemplateResult<1>;
40
40
  /**
41
41
  * @description 그리드 리턴
42
42
  **************************
@@ -1,4 +1,4 @@
1
- import { css, html, LitElement } from 'lit-element';
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
- :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
- }
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
- 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
- }
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
- .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
- }
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
- .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
- }
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
- 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
- }
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
- .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
- }`
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 id="container" class="container">
139
- <div class="container_detail">
140
- <ox-grist id="ox-grist" .config=${this.gridConfig} .mode=${'GRID'} auto-fetch
141
- .fetchHandler=${this.fetchColumns.bind(this)}>
142
- </ox-grist>
143
- <div id="button-container" class="button-container">
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 = "master";
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 = "M";
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("updateMultipleGridpersonalize", [patch]);
238
+ await MetaApi.updateMultiple('updateMultipleGridpersonalize', [patch]);
247
239
  MetaApi.showToast('info', TermsUtil.tText('success to save'));
248
240
  history.back();
249
241
  }