@things-factory/meta-ui 9.2.5 → 10.0.0-beta.10

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 (187) hide show
  1. package/dist-client/component/grist/editor/grist-editor-code-input.d.ts +5 -3
  2. package/dist-client/component/grist/editor/grist-editor-code-input.js +1 -0
  3. package/dist-client/component/grist/editor/grist-editor-code-input.js.map +1 -1
  4. package/dist-client/component/grist/editor/grist-editor-meta-code-selector.d.ts +5 -3
  5. package/dist-client/component/grist/editor/grist-editor-meta-code-selector.js +1 -0
  6. package/dist-client/component/grist/editor/grist-editor-meta-code-selector.js.map +1 -1
  7. package/dist-client/component/grist/editor/grist-editor-meta-object-selector.d.ts +5 -3
  8. package/dist-client/component/grist/editor/grist-editor-meta-object-selector.js +1 -0
  9. package/dist-client/component/grist/editor/grist-editor-meta-object-selector.js.map +1 -1
  10. package/dist-client/component/grist/renderer/grist-renderer-code-input.d.ts +1 -1
  11. package/dist-client/component/grist/renderer/grist-renderer-code-input.js +1 -0
  12. package/dist-client/component/grist/renderer/grist-renderer-code-input.js.map +1 -1
  13. package/dist-client/component/grist/renderer/grist-renderer-meta-code-selector.d.ts +1 -1
  14. package/dist-client/component/grist/renderer/grist-renderer-meta-code-selector.js +1 -0
  15. package/dist-client/component/grist/renderer/grist-renderer-meta-code-selector.js.map +1 -1
  16. package/dist-client/component/grist/renderer/grist-renderer-meta-object-selector.d.ts +1 -1
  17. package/dist-client/component/grist/renderer/grist-renderer-meta-object-selector.js +1 -0
  18. package/dist-client/component/grist/renderer/grist-renderer-meta-object-selector.js.map +1 -1
  19. package/dist-client/component/popup/code-input-editor-popup.d.ts +4 -3
  20. package/dist-client/component/popup/code-input-editor-popup.js +1 -0
  21. package/dist-client/component/popup/code-input-editor-popup.js.map +1 -1
  22. package/dist-client/component/popup/file-upload-popup.d.ts +1 -1
  23. package/dist-client/component/popup/file-upload-popup.js +1 -0
  24. package/dist-client/component/popup/file-upload-popup.js.map +1 -1
  25. package/dist-client/component/popup/meta-object-selector-popup.js +1 -0
  26. package/dist-client/component/popup/meta-object-selector-popup.js.map +1 -1
  27. package/dist-client/dynamic-menus.js +1 -0
  28. package/dist-client/dynamic-menus.js.map +1 -1
  29. package/dist-client/mixin/meta-base-mixin.d.ts +70 -11
  30. package/dist-client/mixin/meta-base-mixin.js +1 -0
  31. package/dist-client/mixin/meta-base-mixin.js.map +1 -1
  32. package/dist-client/mixin/meta-basic-grist-mixin.d.ts +124 -42
  33. package/dist-client/mixin/meta-basic-grist-mixin.js +1 -0
  34. package/dist-client/mixin/meta-basic-grist-mixin.js.map +1 -1
  35. package/dist-client/mixin/meta-button-mixin.d.ts +31 -28
  36. package/dist-client/mixin/meta-button-mixin.js +1 -0
  37. package/dist-client/mixin/meta-button-mixin.js.map +1 -1
  38. package/dist-client/mixin/meta-form-mixin.d.ts +71 -41
  39. package/dist-client/mixin/meta-form-mixin.js +1 -0
  40. package/dist-client/mixin/meta-form-mixin.js.map +1 -1
  41. package/dist-client/mixin/meta-grist-tab-mixin.d.ts +125 -44
  42. package/dist-client/mixin/meta-grist-tab-mixin.js +1 -0
  43. package/dist-client/mixin/meta-grist-tab-mixin.js.map +1 -1
  44. package/dist-client/mixin/meta-main-tab-mixin.d.ts +120 -42
  45. package/dist-client/mixin/meta-main-tab-mixin.js +1 -0
  46. package/dist-client/mixin/meta-main-tab-mixin.js.map +1 -1
  47. package/dist-client/mixin/meta-master-detail-mixin.d.ts +135 -46
  48. package/dist-client/mixin/meta-master-detail-mixin.js +1 -0
  49. package/dist-client/mixin/meta-master-detail-mixin.js.map +1 -1
  50. package/dist-client/mixin/meta-service-mixin.d.ts +29 -17
  51. package/dist-client/mixin/meta-service-mixin.js +1 -0
  52. package/dist-client/mixin/meta-service-mixin.js.map +1 -1
  53. package/dist-client/mixin/meta-tab-detail-mixin.d.ts +126 -42
  54. package/dist-client/mixin/meta-tab-detail-mixin.js +1 -0
  55. package/dist-client/mixin/meta-tab-detail-mixin.js.map +1 -1
  56. package/dist-client/mixin/meta-tab-mixin.d.ts +59 -32
  57. package/dist-client/mixin/meta-tab-mixin.js +1 -0
  58. package/dist-client/mixin/meta-tab-mixin.js.map +1 -1
  59. package/dist-client/pages/activity/meta-activity-define-page.d.ts +3 -1
  60. package/dist-client/pages/activity/meta-activity-define-page.js +2 -1
  61. package/dist-client/pages/activity/meta-activity-define-page.js.map +1 -1
  62. package/dist-client/pages/activity/meta-activity-list-page.d.ts +1 -1
  63. package/dist-client/pages/activity/meta-activity-list-page.js +1 -0
  64. package/dist-client/pages/activity/meta-activity-list-page.js.map +1 -1
  65. package/dist-client/pages/activity/meta-activity-viewer-element.d.ts +1 -4
  66. package/dist-client/pages/activity/meta-activity-viewer-element.js +1 -5
  67. package/dist-client/pages/activity/meta-activity-viewer-element.js.map +1 -1
  68. package/dist-client/pages/activity/meta-activity-writer-element.d.ts +2 -4
  69. package/dist-client/pages/activity/meta-activity-writer-element.js +1 -0
  70. package/dist-client/pages/activity/meta-activity-writer-element.js.map +1 -1
  71. package/dist-client/pages/activity/meta-activiy-mixin.d.ts +1 -3
  72. package/dist-client/pages/activity/meta-activiy-mixin.js +1 -0
  73. package/dist-client/pages/activity/meta-activiy-mixin.js.map +1 -1
  74. package/dist-client/pages/button-role/button-role-detail.d.ts +54 -39
  75. package/dist-client/pages/button-role/button-role-detail.js +1 -1
  76. package/dist-client/pages/button-role/button-role-detail.js.map +1 -1
  77. package/dist-client/pages/button-role/button-role-page.d.ts +63 -47
  78. package/dist-client/pages/button-role/button-role-page.js +1 -0
  79. package/dist-client/pages/button-role/button-role-page.js.map +1 -1
  80. package/dist-client/pages/doc-number/doc-number-page.d.ts +3 -1
  81. package/dist-client/pages/doc-number/doc-number-page.js +1 -0
  82. package/dist-client/pages/doc-number/doc-number-page.js.map +1 -1
  83. package/dist-client/pages/doc-number/next-doc-number-popup.d.ts +4 -1
  84. package/dist-client/pages/doc-number/next-doc-number-popup.js +1 -0
  85. package/dist-client/pages/doc-number/next-doc-number-popup.js.map +1 -1
  86. package/dist-client/pages/entity/config-entity.d.ts +4 -1
  87. package/dist-client/pages/entity/config-entity.js +1 -0
  88. package/dist-client/pages/entity/config-entity.js.map +1 -1
  89. package/dist-client/pages/entity/main-menu-selector.d.ts +33 -15
  90. package/dist-client/pages/entity/main-menu-selector.js +1 -0
  91. package/dist-client/pages/entity/main-menu-selector.js.map +1 -1
  92. package/dist-client/pages/history/history-copy-list-popup.d.ts +13 -8
  93. package/dist-client/pages/history/history-copy-list-popup.js +1 -0
  94. package/dist-client/pages/history/history-copy-list-popup.js.map +1 -1
  95. package/dist-client/pages/history/history-json-list-popup.d.ts +13 -8
  96. package/dist-client/pages/history/history-json-list-popup.js +1 -2
  97. package/dist-client/pages/history/history-json-list-popup.js.map +1 -1
  98. package/dist-client/pages/menu/dynamic-menu-template.d.ts +1 -1
  99. package/dist-client/pages/menu/dynamic-menu-template.js +1 -0
  100. package/dist-client/pages/menu/dynamic-menu-template.js.map +1 -1
  101. package/dist-client/pages/menu/dynamic-menu.d.ts +9 -3
  102. package/dist-client/pages/menu/dynamic-menu.js +1 -0
  103. package/dist-client/pages/menu/dynamic-menu.js.map +1 -1
  104. package/dist-client/pages/menu/export-menu-popup.d.ts +11 -12
  105. package/dist-client/pages/menu/export-menu-popup.js +1 -0
  106. package/dist-client/pages/menu/export-menu-popup.js.map +1 -1
  107. package/dist-client/pages/meta-form-element.d.ts +45 -41
  108. package/dist-client/pages/meta-form-element.js +1 -0
  109. package/dist-client/pages/meta-form-element.js.map +1 -1
  110. package/dist-client/pages/meta-grist-element.d.ts +52 -38
  111. package/dist-client/pages/meta-grist-element.js +1 -0
  112. package/dist-client/pages/meta-grist-element.js.map +1 -1
  113. package/dist-client/pages/meta-grist-page.d.ts +55 -38
  114. package/dist-client/pages/meta-grist-page.js +1 -0
  115. package/dist-client/pages/meta-grist-page.js.map +1 -1
  116. package/dist-client/pages/meta-grist-tab-element.d.ts +57 -44
  117. package/dist-client/pages/meta-grist-tab-element.js +1 -0
  118. package/dist-client/pages/meta-grist-tab-element.js.map +1 -1
  119. package/dist-client/pages/meta-grist-tab-page.d.ts +57 -44
  120. package/dist-client/pages/meta-grist-tab-page.js +1 -0
  121. package/dist-client/pages/meta-grist-tab-page.js.map +1 -1
  122. package/dist-client/pages/meta-main-tab-element.d.ts +49 -42
  123. package/dist-client/pages/meta-main-tab-element.js +1 -0
  124. package/dist-client/pages/meta-main-tab-element.js.map +1 -1
  125. package/dist-client/pages/meta-main-tab-page.d.ts +52 -42
  126. package/dist-client/pages/meta-main-tab-page.js +1 -0
  127. package/dist-client/pages/meta-main-tab-page.js.map +1 -1
  128. package/dist-client/pages/meta-master-detail-element.d.ts +59 -46
  129. package/dist-client/pages/meta-master-detail-element.js +1 -0
  130. package/dist-client/pages/meta-master-detail-element.js.map +1 -1
  131. package/dist-client/pages/meta-master-detail-page.d.ts +62 -46
  132. package/dist-client/pages/meta-master-detail-page.js +1 -0
  133. package/dist-client/pages/meta-master-detail-page.js.map +1 -1
  134. package/dist-client/pages/meta-tab-detail-element.d.ts +50 -42
  135. package/dist-client/pages/meta-tab-detail-element.js +1 -0
  136. package/dist-client/pages/meta-tab-detail-element.js.map +1 -1
  137. package/dist-client/pages/meta-tab-detail-page.d.ts +53 -42
  138. package/dist-client/pages/meta-tab-detail-page.js +1 -0
  139. package/dist-client/pages/meta-tab-detail-page.js.map +1 -1
  140. package/dist-client/pages/meta-tab-element.d.ts +40 -32
  141. package/dist-client/pages/meta-tab-element.js +1 -0
  142. package/dist-client/pages/meta-tab-element.js.map +1 -1
  143. package/dist-client/pages/printer-device/printer-device-page.d.ts +3 -1
  144. package/dist-client/pages/printer-device/printer-device-page.js +1 -0
  145. package/dist-client/pages/printer-device/printer-device-page.js.map +1 -1
  146. package/dist-client/pages/template/doc-template-page.d.ts +3 -1
  147. package/dist-client/pages/template/doc-template-page.js +1 -0
  148. package/dist-client/pages/template/doc-template-page.js.map +1 -1
  149. package/dist-client/pages/template/template-file-page.d.ts +3 -1
  150. package/dist-client/pages/template/template-file-page.js +1 -0
  151. package/dist-client/pages/template/template-file-page.js.map +1 -1
  152. package/dist-client/pages/terms/config-terminology.d.ts +1 -1
  153. package/dist-client/pages/terms/config-terminology.js +1 -0
  154. package/dist-client/pages/terms/config-terminology.js.map +1 -1
  155. package/dist-client/pages/work-code/work-code-detail-popup.d.ts +52 -39
  156. package/dist-client/pages/work-code/work-code-detail-popup.js +1 -0
  157. package/dist-client/pages/work-code/work-code-detail-popup.js.map +1 -1
  158. package/dist-client/pages/work-code/work-code-page.d.ts +4 -1
  159. package/dist-client/pages/work-code/work-code-page.js +1 -0
  160. package/dist-client/pages/work-code/work-code-page.js.map +1 -1
  161. package/dist-client/tsconfig.tsbuildinfo +1 -1
  162. package/dist-client/utils/grist-default-value.d.ts +8 -2
  163. package/dist-client/utils/grist-default-value.js +1 -0
  164. package/dist-client/utils/grist-default-value.js.map +1 -1
  165. package/dist-client/utils/meta-api.d.ts +270 -82
  166. package/dist-client/utils/meta-api.js +1 -0
  167. package/dist-client/utils/meta-api.js.map +1 -1
  168. package/dist-client/utils/meta-crypto.d.ts +1 -1
  169. package/dist-client/utils/meta-crypto.js +1 -0
  170. package/dist-client/utils/meta-crypto.js.map +1 -1
  171. package/dist-client/utils/meta-ui-util.d.ts +262 -64
  172. package/dist-client/utils/meta-ui-util.js +1 -0
  173. package/dist-client/utils/meta-ui-util.js.map +1 -1
  174. package/dist-client/utils/rest-service-util.d.ts +11 -11
  175. package/dist-client/utils/rest-service-util.js +1 -0
  176. package/dist-client/utils/rest-service-util.js.map +1 -1
  177. package/dist-client/utils/service-util.d.ts +107 -32
  178. package/dist-client/utils/service-util.js +1 -0
  179. package/dist-client/utils/service-util.js.map +1 -1
  180. package/dist-client/utils/ui-util.d.ts +17 -17
  181. package/dist-client/utils/ui-util.js +1 -0
  182. package/dist-client/utils/ui-util.js.map +1 -1
  183. package/dist-client/utils/value-util.d.ts +6 -6
  184. package/dist-client/utils/value-util.js +1 -0
  185. package/dist-client/utils/value-util.js.map +1 -1
  186. package/dist-server/tsconfig.tsbuildinfo +1 -1
  187. package/package.json +24 -24
@@ -1,4 +1,10 @@
1
- export function MetaFormMixin(baseElement: any): {
1
+ /**
2
+ * @license
3
+ * Copyright © HatioLab Inc. All rights reserved.
4
+ * @author Shortstop shortstop@hatiolab.com
5
+ * @description 메뉴 메타 정보를 이용해 폼 화면 구성
6
+ */
7
+ export declare const MetaFormMixin: (baseElement: any) => {
2
8
  new (): {
3
9
  [x: string]: any;
4
10
  /**
@@ -6,7 +12,15 @@ export function MetaFormMixin(baseElement: any): {
6
12
  ***********************
7
13
  * @returns {HTMLElement}
8
14
  */
9
- get context(): HTMLElement;
15
+ get context(): {
16
+ title: string;
17
+ help: any;
18
+ actions: any[];
19
+ } | {
20
+ title?: undefined;
21
+ help?: undefined;
22
+ actions?: undefined;
23
+ };
10
24
  /******************************************************
11
25
  * LifeCycle
12
26
  ******************************************************/
@@ -15,10 +29,6 @@ export function MetaFormMixin(baseElement: any): {
15
29
  *******************************
16
30
  */
17
31
  connectedCallback(): Promise<void>;
18
- dataSet: any;
19
- parent_id: string | undefined;
20
- currentTarget: any;
21
- record: any;
22
32
  /**
23
33
  * @override firstUpdated
24
34
  ***************************
@@ -34,21 +44,18 @@ export function MetaFormMixin(baseElement: any): {
34
44
  *************************
35
45
  * @returns {HTMLElement}
36
46
  */
37
- render(): HTMLElement;
47
+ render(): import("lit-html").TemplateResult<1>;
38
48
  /**
39
49
  * @descrtiption 메뉴 메타 정보로 부터 기본 폼 정보 구성을 위한 Configuration
40
50
  *******************************************************************
41
51
  * @param {Object} menuMeta 메뉴 메타 정보
42
52
  */
43
53
  parseBasicFormConfigs(menuMeta: any): void;
44
- formColumnConfig: any;
45
- formRenderConfig: any;
46
54
  /**
47
55
  * @descrtiption 폼 구성 정보 Configuration
48
56
  *****************************************
49
57
  */
50
58
  parseFormConfigs(): Promise<void>;
51
- formConfigSet: any;
52
59
  /********************************************************************
53
60
  * Data Filtering
54
61
  ********************************************************************/
@@ -57,31 +64,31 @@ export function MetaFormMixin(baseElement: any): {
57
64
  ***********************************
58
65
  * @returns {Object} 원본 데이터 (변경 값 무시)
59
66
  */
60
- get orgData(): any;
67
+ get orgData(): {} | undefined;
61
68
  /**
62
69
  * @description 변경된 데이터
63
70
  **************************
64
71
  * @returns {Object} 변경된 데이터만
65
72
  */
66
- get dirtyData(): any;
73
+ get dirtyData(): {};
67
74
  /**
68
75
  * @description 현재 데이터
69
76
  *************************
70
77
  * @returns {Object} 화면에 표현되어 있는 현재 데이터 (수정된 값 반영)
71
78
  */
72
- get currentData(): any;
79
+ get currentData(): {} | undefined;
73
80
  /**
74
81
  * @description 레코드 데이터에서 쓰레기 데이터 정리
75
82
  ********************************************
76
83
  * @returns {Object} __dirty__,__dirtyfields__,__origin__ 등 (__ 로 시작되는 데이터 삭제)
77
84
  */
78
- removeGarbageData(data: any): any;
85
+ removeGarbageData(data: any): {} | undefined;
79
86
  /**
80
87
  * @description 트랜잭션을 위한 변경 데이터 + cuFlag 가져오기
81
88
  *****************************************************
82
89
  * @returns {Object}
83
90
  */
84
- get patchData(): any;
91
+ get patchData(): {}[] | undefined;
85
92
  /********************************************************************
86
93
  * C R U D Functions
87
94
  ********************************************************************/
@@ -95,7 +102,7 @@ export function MetaFormMixin(baseElement: any): {
95
102
  *****************************
96
103
  * @returns {Boolean} 저장 여부
97
104
  */
98
- save(): boolean;
105
+ save(): Promise<boolean | undefined>;
99
106
  /**
100
107
  * @description 데이터 클리어
101
108
  ***************************
@@ -106,48 +113,71 @@ export function MetaFormMixin(baseElement: any): {
106
113
  *************************
107
114
  * @returns {Object}
108
115
  */
109
- getData(): any;
110
- getCustomButtonContainerStyle(): any[];
111
- getContextButtons(): any[];
112
- getButtonContainer(): HTML;
113
- getBasicButtonHandler(type: string, action: string, logic: any): any;
116
+ getData(): {};
117
+ getCustomButtonContainerStyle(): import("lit").CSSResult[];
118
+ getContextButtons(): any;
119
+ getButtonContainer(): import("lit-html").TemplateResult<1>;
120
+ getBasicButtonHandler(type: any, action: any, logic: any): Promise<any>;
114
121
  customButtonHandler(logic: any): Promise<void>;
115
122
  gristButtonHandler(actionInfo: any, record: any): Promise<void>;
116
123
  parseBasicButtonConfigs(menuMeta: any): void;
117
- buttonConfig: any;
118
- useButtonImport: boolean | undefined;
119
- useButtonExport: boolean | undefined;
120
- useButtonAdd: boolean | undefined;
121
124
  parseBasicServiceConfigs(menuMeta: any): void;
122
- gqlInfo: any;
123
- fetchHandler({ page, limit, sortings, filters }: any): any;
124
- getPageNavigateParams(): any[];
125
- findOne(id: string): Promise<any>;
126
- deleteByIds(ids: string): boolean;
127
- updateMultiple(params: any[]): Promise<boolean>;
125
+ fetchHandler({ page, limit, sortings, filters }: {
126
+ page?: number | undefined;
127
+ limit?: number | undefined;
128
+ sortings?: never[] | undefined;
129
+ filters?: never[] | undefined;
130
+ }): Promise<any>;
131
+ getPageNavigateParams(): never[];
132
+ findOne(id: any): Promise<any>;
133
+ deleteByIds(ids: any): Promise<boolean>;
134
+ updateMultiple(params: any): Promise<boolean>;
128
135
  get isElement(): boolean;
129
- get isDetail(): boolean;
136
+ get isDetail(): any;
130
137
  dataChangeEventHandler(e: any): Promise<void>;
131
138
  pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
132
- get isPopup(): boolean;
139
+ get isPopup(): any;
133
140
  get isPage(): boolean;
134
- getAndParseMenuMeta(): any;
135
- menuInfo: any;
136
- etcConfig: any;
137
- excuteOpenPopupButtonClick(action: any, record: any, closeCallback: Function): Promise<void>;
138
- executeCallScenarioButtonClick(action: any, params: any, afterCallback: Function): Promise<void>;
139
- setParentId(id: string): void;
141
+ getAndParseMenuMeta(): Promise<void>;
142
+ excuteOpenPopupButtonClick(action: any, record: any, closeCallback: any): Promise<void>;
143
+ executeCallScenarioButtonClick(action: any, params: any, afterCallback: any): Promise<void>;
144
+ setParentId(id: any): void;
140
145
  };
141
146
  /**
142
147
  * @description 스타일 정의
143
148
  **************************
144
149
  * @returns {Array} 스타일
145
150
  */
146
- get styles(): any[];
151
+ get styles(): import("lit").CSSResult[];
147
152
  /**
148
153
  * @description 프로퍼티 정의
149
154
  ***************************
150
155
  * @returns {Object} 프로퍼티
151
156
  */
152
- get properties(): any;
157
+ get properties(): {
158
+ /**
159
+ * @description 폽 컬럼 구성 정보
160
+ ******************************
161
+ * @type {Array}
162
+ */
163
+ formColumnConfig: ArrayConstructor;
164
+ /**
165
+ * @description 메뉴 메타 정보로 부터 추출한 후 폼을 위해 설정 정보 구성
166
+ ************************************************************
167
+ * @type {Object}
168
+ */
169
+ formConfigSet: ObjectConstructor;
170
+ /**
171
+ * @description 폼 상세 렌터링 정보
172
+ *******************************
173
+ * @type {Object}
174
+ */
175
+ formRenderConfig: ArrayConstructor;
176
+ /**
177
+ * @description 데이터 레코드
178
+ ***************************
179
+ * @type {Object}
180
+ */
181
+ record: ObjectConstructor;
182
+ };
153
183
  };
@@ -1,3 +1,4 @@
1
+ // @ts-nocheck
1
2
  import { closePopup } from '@operato/popup';
2
3
  import { MetaApi } from '../utils/meta-api';
3
4
  import { MetaUiUtil } from '../utils/meta-ui-util';
@@ -1 +1 @@
1
- {"version":3,"file":"meta-form-mixin.js","sourceRoot":"","sources":["../../client/mixin/meta-form-mixin.js"],"names":[],"mappings":"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","sourcesContent":["import { closePopup } from '@operato/popup'\n\nimport { MetaApi } from '../utils/meta-api'\nimport { MetaUiUtil } from '../utils/meta-ui-util'\nimport { ValueUtil } from '../utils/value-util'\nimport { UiUtil } from '../utils/ui-util'\nimport { TermsUtil } from '../utils/terms-util'\n\nimport { MetaButtonMixin } from './meta-button-mixin'\n\n/**\n * @license\n * Copyright © HatioLab Inc. All rights reserved.\n * @author Shortstop shortstop@hatiolab.com\n * @description 메뉴 메타 정보를 이용해 폼 화면 구성\n */\nexport const MetaFormMixin = baseElement =>\n class extends MetaButtonMixin(baseElement) {\n /**\n * @description 스타일 정의\n **************************\n * @returns {Array} 스타일\n */\n static get styles() {\n return MetaApi.getBasicFormStyles()\n }\n\n /**\n * @description 프로퍼티 정의\n ***************************\n * @returns {Object} 프로퍼티\n */\n static get properties() {\n return {\n /**\n * @description 폽 컬럼 구성 정보\n ******************************\n * @type {Array}\n */\n formColumnConfig: Array,\n /**\n * @description 메뉴 메타 정보로 부터 추출한 후 폼을 위해 설정 정보 구성\n ************************************************************\n * @type {Object}\n */\n formConfigSet: Object,\n /**\n * @description 폼 상세 렌터링 정보\n *******************************\n * @type {Object}\n */\n formRenderConfig: Array,\n /**\n * @description 데이터 레코드\n ***************************\n * @type {Object}\n */\n record: Object\n }\n }\n\n /**\n * @description 컨텍스트\n ***********************\n * @returns {HTMLElement}\n */\n get context() {\n return MetaUiUtil.getContextObject(this)\n }\n\n /******************************************************\n * LifeCycle\n ******************************************************/\n\n /**\n * @override connectedCallback\n *******************************\n */\n async connectedCallback() {\n // 메뉴 메타 정보 조회 및 기본 파싱\n await this.getAndParseMenuMeta()\n\n if (this.isElement) {\n await this.parseFormConfigs()\n }\n\n if (this.activityDataSet) {\n this.dataSet = this.activityDataSet\n }\n\n if (this.is_activity === true && !this.parent_id) {\n this.parent_id = 'activity'\n }\n\n if (super.connectedCallback) {\n await super.connectedCallback()\n }\n\n if (this.isElement) {\n await this.fetch()\n }\n\n // 인풋 키 이벤트 처리\n this.renderRoot.addEventListener('keydown', e => {\n switch (e.key) {\n case 'Esc':\n case 'Escape':\n // TODO 편집이 취소되어야 한다.\n case 'Enter':\n // 먼저 focus를 옮겨놓아야 focusout으로 인해서 popup이 닫히는 것을 방지할 수 있다.\n this.focus()\n\n if (this.currentTarget) {\n this.currentTarget.removeAttribute('editing')\n }\n\n this.currentTarget = null\n break\n default:\n }\n })\n\n // 인풋 클릭 처리 (readOnly <> editing)\n this.renderRoot.addEventListener('click', e => {\n e.stopPropagation()\n // target should be 'ox-grid-field'\n let target = e.target\n\n if (this.currentTarget) {\n this.focus()\n this.currentTarget.removeAttribute('editing')\n }\n\n if (target.tagName !== 'OX-GRID-FIELD' || !target.column.record.editable) {\n this.focus()\n this.currentTarget = null\n return\n }\n\n this.currentTarget = target\n target.setAttribute('editing', 'true')\n })\n\n // 폼 뷰의 인풋에서 발생되는 변경 이벤트 처리\n this.addEventListener('field-change', e => {\n let { after, before, column, record, row } = e.detail\n\n // before, after 값으로 달라진 값이 없으면 스킵\n if (ValueUtil.isEquals(after, before)) {\n return\n }\n\n // 유효성 체크 함수가 있는 경우 해당 함수 호출\n let validation = column.validation\n if (validation && typeof validation == 'function') {\n if (!validation.call(this, after, before, record, column)) {\n return\n }\n }\n\n // 변경 값 셋팅\n let colName = column.name\n record[colName] = after\n\n // 변경 필드 정보\n record.__dirtyfields__ = record.__dirtyfields__ || {}\n record.__origin__ = record.__origin__ || {}\n record.__dirtyfields__[colName] = {\n before: record.__origin__[colName],\n after: record[colName]\n }\n\n // 같은 값으로 변경 되었다면\n if (ValueUtil.isEquals(record.__dirtyfields__[colName].before, record.__dirtyfields__[colName].after)) {\n delete record.__dirtyfields__[colName]\n }\n\n // dirty flag 설정\n record.__dirty__ = ValueUtil.isNotEmpty(record.__dirtyfields__) ? 'M' : ''\n\n this.record = { ...record }\n\n // form-field-change 변경 이벤트 전파\n this.dispatchEvent(\n new CustomEvent('form-field-change', {\n bubbles: true,\n composed: true,\n detail: e.detail\n })\n )\n })\n }\n\n /**\n * @override firstUpdated\n ***************************\n */\n async firstUpdated() {\n if (super.firstUpdated) {\n await super.firstUpdated()\n }\n }\n\n /**\n * @override pageInitialized\n *****************************\n */\n async pageInitialized() {\n if (this.isPage) {\n await this.parseFormConfigs()\n }\n\n if (super.pageInitialized) {\n await super.pageInitialized()\n }\n\n if (this.isPage) {\n await this.fetch()\n }\n }\n\n /**\n * @description 화면 그리기\n *************************\n * @returns {HTMLElement}\n */\n render() {\n return MetaApi.getBasicFormHtml(this)\n }\n\n /**\n * @descrtiption 메뉴 메타 정보로 부터 기본 폼 정보 구성을 위한 Configuration\n *******************************************************************\n * @param {Object} menuMeta 메뉴 메타 정보\n */\n parseBasicFormConfigs(menuMeta) {\n this.formColumnConfig = menuMeta.grid_column\n this.formRenderConfig = menuMeta.form\n }\n\n /**\n * @descrtiption 폼 구성 정보 Configuration\n *****************************************\n */\n async parseFormConfigs() {\n this.formConfigSet = await MetaApi.parseFormConfigSet(this)\n }\n\n /********************************************************************\n * Data Filtering\n ********************************************************************/\n\n /**\n * @description 최초 조회된 원본 데이터\n ***********************************\n * @returns {Object} 원본 데이터 (변경 값 무시)\n */\n get orgData() {\n return this.removeGarbageData(this.record.__origin__)\n }\n\n /**\n * @description 변경된 데이터\n **************************\n * @returns {Object} 변경된 데이터만\n */\n get dirtyData() {\n if (ValueUtil.isEmpty((this.record || {}).__dirtyfields__)) {\n return {}\n }\n\n let retData = {}\n\n Object.entries(this.record.__dirtyfields__).map(([key, value]) => {\n if (key.startsWith('__') == false) {\n retData[key] = value.after\n }\n })\n\n return retData\n }\n\n /**\n * @description 현재 데이터\n *************************\n * @returns {Object} 화면에 표현되어 있는 현재 데이터 (수정된 값 반영)\n */\n get currentData() {\n return this.removeGarbageData(this.record)\n }\n\n /**\n * @description 레코드 데이터에서 쓰레기 데이터 정리\n ********************************************\n * @returns {Object} __dirty__,__dirtyfields__,__origin__ 등 (__ 로 시작되는 데이터 삭제)\n */\n removeGarbageData(data) {\n if (!data) return undefined\n\n let retData = {}\n\n Object.entries(data).map(([key, value]) => {\n if (key.startsWith('__') == false) {\n retData[key] = value\n }\n })\n\n return retData\n }\n\n /**\n * @description 트랜잭션을 위한 변경 데이터 + cuFlag 가져오기\n *****************************************************\n * @returns {Object}\n */\n get patchData() {\n let dirtyData = this.dirtyData\n let recordData = this.record\n // 코드 인풋 타입\n let codeInputColumns = (this.formColumnConfig || []).filter(x => x.type === 'code-input').map(x => x.name)\n\n if (ValueUtil.isEmpty(dirtyData)) {\n return undefined\n }\n\n // 기존 데이터 존재 여부 - 변경 플래그 판단\n if (ValueUtil.isNotEmpty(recordData.id)) {\n dirtyData.id = recordData.id\n dirtyData.cuFlag = 'M'\n } else {\n dirtyData.cuFlag = '+'\n }\n\n // object 타입은 id만 전송되도록 변경\n Object.keys(dirtyData).forEach(key => {\n if (typeof dirtyData[key] === 'object' && codeInputColumns.includes(key) == false) {\n dirtyData[key] = { id: dirtyData[key].id }\n }\n })\n\n return [dirtyData]\n }\n\n /********************************************************************\n * C R U D Functions\n ********************************************************************/\n /**\n * @description 폼 데이터 조회\n ***************************\n */\n async fetch() {\n // 부모 ID가 없다면 리턴\n if (ValueUtil.isEmpty(this.parent_id)) return\n\n // 단건 조회 함수\n let findOneFunc = ValueUtil.getParams(this.gqlInfo, 'query', 'find_one_func')\n if (!findOneFunc) return\n\n // 부모 ID로 조회\n let data = await this.findOne(this.parent_id)\n\n // 데이터 형식 맞추기\n data['__seq__'] = 1\n let orgData = {}\n Object.assign(orgData, data)\n data['__origin__'] = orgData\n this.record = { ...data }\n }\n\n /**\n * @description 폼 데이터 저장\n *****************************\n * @returns {Boolean} 저장 여부\n */\n async save() {\n let patches = this.patchData\n\n // 변경 여부 메시지 처리\n if (ValueUtil.isEmpty(patches)) {\n MetaApi.showAlertPopup('title.info', 'text.NOTHING_CHANGED', 'warning', 'confirm')\n return\n }\n\n // 필수 입력 컬럼\n let mandatoryColumns = {}\n ;(this.formColumnConfig || [])\n .filter(x => x.mandatory === true)\n .forEach(x => {\n mandatoryColumns[x.name] = x.header\n })\n\n // 필수 입력 값 체크\n let allFields = this.currentData\n for (let key in mandatoryColumns) {\n if (allFields[key] === undefined || allFields[key] == '') {\n UiUtil.showAlertPopup('text.check-mandatory', TermsUtil.tText('check-mandatory-field', { x: TermsUtil.tLabel(mandatoryColumns[key]) }), 'info', 'confirm')\n return\n }\n }\n\n // 저장 서비스 호출\n let isRes = await this.updateMultiple(patches)\n if (isRes) {\n // 폼 데이터 조회\n await this.fetch()\n\n // 저장이 잘 되었고 팝업이라면 팝업 닫기\n if (this.isPopup) {\n closePopup(this)\n }\n }\n\n // 저장 결과 리턴\n return isRes\n }\n\n /**\n * @description 데이터 클리어\n ***************************\n */\n async clear() {\n if (this.record) {\n this.record = {}\n }\n }\n\n /**\n * @description 데이터 리턴\n *************************\n * @returns {Object}\n */\n getData() {\n return this.currentData || {}\n }\n }\n"]}
1
+ {"version":3,"file":"meta-form-mixin.js","sourceRoot":"","sources":["../../client/mixin/meta-form-mixin.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { closePopup } from '@operato/popup'\n\nimport { MetaApi } from '../utils/meta-api'\nimport { MetaUiUtil } from '../utils/meta-ui-util'\nimport { ValueUtil } from '../utils/value-util'\nimport { UiUtil } from '../utils/ui-util'\nimport { TermsUtil } from '../utils/terms-util'\n\nimport { MetaButtonMixin } from './meta-button-mixin'\n\n/**\n * @license\n * Copyright © HatioLab Inc. All rights reserved.\n * @author Shortstop shortstop@hatiolab.com\n * @description 메뉴 메타 정보를 이용해 폼 화면 구성\n */\nexport const MetaFormMixin = baseElement =>\n class extends MetaButtonMixin(baseElement) {\n /**\n * @description 스타일 정의\n **************************\n * @returns {Array} 스타일\n */\n static get styles() {\n return MetaApi.getBasicFormStyles()\n }\n\n /**\n * @description 프로퍼티 정의\n ***************************\n * @returns {Object} 프로퍼티\n */\n static get properties() {\n return {\n /**\n * @description 폽 컬럼 구성 정보\n ******************************\n * @type {Array}\n */\n formColumnConfig: Array,\n /**\n * @description 메뉴 메타 정보로 부터 추출한 후 폼을 위해 설정 정보 구성\n ************************************************************\n * @type {Object}\n */\n formConfigSet: Object,\n /**\n * @description 폼 상세 렌터링 정보\n *******************************\n * @type {Object}\n */\n formRenderConfig: Array,\n /**\n * @description 데이터 레코드\n ***************************\n * @type {Object}\n */\n record: Object\n }\n }\n\n /**\n * @description 컨텍스트\n ***********************\n * @returns {HTMLElement}\n */\n get context() {\n return MetaUiUtil.getContextObject(this)\n }\n\n /******************************************************\n * LifeCycle\n ******************************************************/\n\n /**\n * @override connectedCallback\n *******************************\n */\n async connectedCallback() {\n // 메뉴 메타 정보 조회 및 기본 파싱\n await this.getAndParseMenuMeta()\n\n if (this.isElement) {\n await this.parseFormConfigs()\n }\n\n if (this.activityDataSet) {\n this.dataSet = this.activityDataSet\n }\n\n if (this.is_activity === true && !this.parent_id) {\n this.parent_id = 'activity'\n }\n\n if (super.connectedCallback) {\n await super.connectedCallback()\n }\n\n if (this.isElement) {\n await this.fetch()\n }\n\n // 인풋 키 이벤트 처리\n this.renderRoot.addEventListener('keydown', e => {\n switch (e.key) {\n case 'Esc':\n case 'Escape':\n // TODO 편집이 취소되어야 한다.\n case 'Enter':\n // 먼저 focus를 옮겨놓아야 focusout으로 인해서 popup이 닫히는 것을 방지할 수 있다.\n this.focus()\n\n if (this.currentTarget) {\n this.currentTarget.removeAttribute('editing')\n }\n\n this.currentTarget = null\n break\n default:\n }\n })\n\n // 인풋 클릭 처리 (readOnly <> editing)\n this.renderRoot.addEventListener('click', e => {\n e.stopPropagation()\n // target should be 'ox-grid-field'\n let target = e.target\n\n if (this.currentTarget) {\n this.focus()\n this.currentTarget.removeAttribute('editing')\n }\n\n if (target.tagName !== 'OX-GRID-FIELD' || !target.column.record.editable) {\n this.focus()\n this.currentTarget = null\n return\n }\n\n this.currentTarget = target\n target.setAttribute('editing', 'true')\n })\n\n // 폼 뷰의 인풋에서 발생되는 변경 이벤트 처리\n this.addEventListener('field-change', e => {\n let { after, before, column, record, row } = e.detail\n\n // before, after 값으로 달라진 값이 없으면 스킵\n if (ValueUtil.isEquals(after, before)) {\n return\n }\n\n // 유효성 체크 함수가 있는 경우 해당 함수 호출\n let validation = column.validation\n if (validation && typeof validation == 'function') {\n if (!validation.call(this, after, before, record, column)) {\n return\n }\n }\n\n // 변경 값 셋팅\n let colName = column.name\n record[colName] = after\n\n // 변경 필드 정보\n record.__dirtyfields__ = record.__dirtyfields__ || {}\n record.__origin__ = record.__origin__ || {}\n record.__dirtyfields__[colName] = {\n before: record.__origin__[colName],\n after: record[colName]\n }\n\n // 같은 값으로 변경 되었다면\n if (ValueUtil.isEquals(record.__dirtyfields__[colName].before, record.__dirtyfields__[colName].after)) {\n delete record.__dirtyfields__[colName]\n }\n\n // dirty flag 설정\n record.__dirty__ = ValueUtil.isNotEmpty(record.__dirtyfields__) ? 'M' : ''\n\n this.record = { ...record }\n\n // form-field-change 변경 이벤트 전파\n this.dispatchEvent(\n new CustomEvent('form-field-change', {\n bubbles: true,\n composed: true,\n detail: e.detail\n })\n )\n })\n }\n\n /**\n * @override firstUpdated\n ***************************\n */\n async firstUpdated() {\n if (super.firstUpdated) {\n await super.firstUpdated()\n }\n }\n\n /**\n * @override pageInitialized\n *****************************\n */\n async pageInitialized() {\n if (this.isPage) {\n await this.parseFormConfigs()\n }\n\n if (super.pageInitialized) {\n await super.pageInitialized()\n }\n\n if (this.isPage) {\n await this.fetch()\n }\n }\n\n /**\n * @description 화면 그리기\n *************************\n * @returns {HTMLElement}\n */\n render() {\n return MetaApi.getBasicFormHtml(this)\n }\n\n /**\n * @descrtiption 메뉴 메타 정보로 부터 기본 폼 정보 구성을 위한 Configuration\n *******************************************************************\n * @param {Object} menuMeta 메뉴 메타 정보\n */\n parseBasicFormConfigs(menuMeta) {\n this.formColumnConfig = menuMeta.grid_column\n this.formRenderConfig = menuMeta.form\n }\n\n /**\n * @descrtiption 폼 구성 정보 Configuration\n *****************************************\n */\n async parseFormConfigs() {\n this.formConfigSet = await MetaApi.parseFormConfigSet(this)\n }\n\n /********************************************************************\n * Data Filtering\n ********************************************************************/\n\n /**\n * @description 최초 조회된 원본 데이터\n ***********************************\n * @returns {Object} 원본 데이터 (변경 값 무시)\n */\n get orgData() {\n return this.removeGarbageData(this.record.__origin__)\n }\n\n /**\n * @description 변경된 데이터\n **************************\n * @returns {Object} 변경된 데이터만\n */\n get dirtyData() {\n if (ValueUtil.isEmpty((this.record || {}).__dirtyfields__)) {\n return {}\n }\n\n let retData = {}\n\n Object.entries(this.record.__dirtyfields__).map(([key, value]) => {\n if (key.startsWith('__') == false) {\n retData[key] = value.after\n }\n })\n\n return retData\n }\n\n /**\n * @description 현재 데이터\n *************************\n * @returns {Object} 화면에 표현되어 있는 현재 데이터 (수정된 값 반영)\n */\n get currentData() {\n return this.removeGarbageData(this.record)\n }\n\n /**\n * @description 레코드 데이터에서 쓰레기 데이터 정리\n ********************************************\n * @returns {Object} __dirty__,__dirtyfields__,__origin__ 등 (__ 로 시작되는 데이터 삭제)\n */\n removeGarbageData(data) {\n if (!data) return undefined\n\n let retData = {}\n\n Object.entries(data).map(([key, value]) => {\n if (key.startsWith('__') == false) {\n retData[key] = value\n }\n })\n\n return retData\n }\n\n /**\n * @description 트랜잭션을 위한 변경 데이터 + cuFlag 가져오기\n *****************************************************\n * @returns {Object}\n */\n get patchData() {\n let dirtyData = this.dirtyData\n let recordData = this.record\n // 코드 인풋 타입\n let codeInputColumns = (this.formColumnConfig || []).filter(x => x.type === 'code-input').map(x => x.name)\n\n if (ValueUtil.isEmpty(dirtyData)) {\n return undefined\n }\n\n // 기존 데이터 존재 여부 - 변경 플래그 판단\n if (ValueUtil.isNotEmpty(recordData.id)) {\n dirtyData.id = recordData.id\n dirtyData.cuFlag = 'M'\n } else {\n dirtyData.cuFlag = '+'\n }\n\n // object 타입은 id만 전송되도록 변경\n Object.keys(dirtyData).forEach(key => {\n if (typeof dirtyData[key] === 'object' && codeInputColumns.includes(key) == false) {\n dirtyData[key] = { id: dirtyData[key].id }\n }\n })\n\n return [dirtyData]\n }\n\n /********************************************************************\n * C R U D Functions\n ********************************************************************/\n /**\n * @description 폼 데이터 조회\n ***************************\n */\n async fetch() {\n // 부모 ID가 없다면 리턴\n if (ValueUtil.isEmpty(this.parent_id)) return\n\n // 단건 조회 함수\n let findOneFunc = ValueUtil.getParams(this.gqlInfo, 'query', 'find_one_func')\n if (!findOneFunc) return\n\n // 부모 ID로 조회\n let data = await this.findOne(this.parent_id)\n\n // 데이터 형식 맞추기\n data['__seq__'] = 1\n let orgData = {}\n Object.assign(orgData, data)\n data['__origin__'] = orgData\n this.record = { ...data }\n }\n\n /**\n * @description 폼 데이터 저장\n *****************************\n * @returns {Boolean} 저장 여부\n */\n async save() {\n let patches = this.patchData\n\n // 변경 여부 메시지 처리\n if (ValueUtil.isEmpty(patches)) {\n MetaApi.showAlertPopup('title.info', 'text.NOTHING_CHANGED', 'warning', 'confirm')\n return\n }\n\n // 필수 입력 컬럼\n let mandatoryColumns = {}\n ;(this.formColumnConfig || [])\n .filter(x => x.mandatory === true)\n .forEach(x => {\n mandatoryColumns[x.name] = x.header\n })\n\n // 필수 입력 값 체크\n let allFields = this.currentData\n for (let key in mandatoryColumns) {\n if (allFields[key] === undefined || allFields[key] == '') {\n UiUtil.showAlertPopup('text.check-mandatory', TermsUtil.tText('check-mandatory-field', { x: TermsUtil.tLabel(mandatoryColumns[key]) }), 'info', 'confirm')\n return\n }\n }\n\n // 저장 서비스 호출\n let isRes = await this.updateMultiple(patches)\n if (isRes) {\n // 폼 데이터 조회\n await this.fetch()\n\n // 저장이 잘 되었고 팝업이라면 팝업 닫기\n if (this.isPopup) {\n closePopup(this)\n }\n }\n\n // 저장 결과 리턴\n return isRes\n }\n\n /**\n * @description 데이터 클리어\n ***************************\n */\n async clear() {\n if (this.record) {\n this.record = {}\n }\n }\n\n /**\n * @description 데이터 리턴\n *************************\n * @returns {Object}\n */\n getData() {\n return this.currentData || {}\n }\n }\n"]}
@@ -1,4 +1,10 @@
1
- export function MetaGristTabMixin(baseElement: any): {
1
+ /**
2
+ * @license
3
+ * Copyright © HatioLab Inc. All rights reserved.
4
+ * @author Shortstop shortstop@hatiolab.com
5
+ * @description 메뉴 메타 정보를 기반으로 그리드 탭 구성
6
+ */
7
+ export declare const MetaGristTabMixin: (baseElement: any) => {
2
8
  new (): {
3
9
  [x: string]: any;
4
10
  /**
@@ -6,25 +12,33 @@ export function MetaGristTabMixin(baseElement: any): {
6
12
  ***********************
7
13
  * @returns {HTMLElement}
8
14
  */
9
- get grist(): HTMLElement;
15
+ get grist(): any;
10
16
  /**
11
17
  * @description 필터 폼
12
18
  ***********************
13
19
  * @returns {HTMLElement}
14
20
  */
15
- get filterForm(): HTMLElement;
21
+ get filterForm(): any;
16
22
  /**
17
23
  * @description 디테일 Element
18
24
  *****************************
19
25
  * @returns {HTMLElement}
20
26
  */
21
- get detailElement(): HTMLElement;
27
+ get detailElement(): any;
22
28
  /**
23
29
  * @description 컨텍스트
24
30
  ***********************
25
31
  * @returns {HTMLElement}
26
32
  */
27
- get context(): HTMLElement;
33
+ get context(): {
34
+ title: string;
35
+ help: any;
36
+ actions: any[];
37
+ } | {
38
+ title?: undefined;
39
+ help?: undefined;
40
+ actions?: undefined;
41
+ };
28
42
  /******************************************************
29
43
  * LifeCycle
30
44
  ******************************************************/
@@ -33,9 +47,6 @@ export function MetaGristTabMixin(baseElement: any): {
33
47
  ***************************
34
48
  */
35
49
  connectedCallback(): Promise<void>;
36
- gristId: string | undefined;
37
- filterFormId: string | undefined;
38
- dataSet: any;
39
50
  /**
40
51
  * @override pageUpdated
41
52
  ***************************
@@ -46,27 +57,18 @@ export function MetaGristTabMixin(baseElement: any): {
46
57
  pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
47
58
  firstUpdated(): Promise<void>;
48
59
  pageInitialized(): Promise<void>;
49
- render(): HTMLElement;
60
+ render(): import("lit-html").TemplateResult<1>;
50
61
  /**
51
62
  * @descrtiption 메뉴 메타에서 기본 그리드 정보 파싱 처리
52
63
  ************************************************
53
64
  * @param {Object} menuMeta 메뉴 메타 정보
54
65
  */
55
66
  parseBasicGridConfigs(menuMeta: any): void;
56
- gridConfig: any;
57
- gridColumnConfig: any;
58
- searchConfig: any;
59
- gridEmphasized: any;
60
67
  /**
61
68
  * @descrtiption 그리스트 구성 정보 파싱 처리
62
69
  ***************************************
63
70
  */
64
71
  parseGristConfigs(): Promise<void>;
65
- gristConfigSet: any;
66
- useMasterFilterForm: boolean | undefined;
67
- useFilterForm: boolean | undefined;
68
- searchFieldValues: any[] | undefined;
69
- searchFields: any;
70
72
  /********************************************************************
71
73
  * C R U D Functions
72
74
  ********************************************************************/
@@ -80,53 +82,132 @@ export function MetaGristTabMixin(baseElement: any): {
80
82
  save(): Promise<void>;
81
83
  find(): Promise<any>;
82
84
  delete(): Promise<void>;
83
- export(): Promise<any>;
85
+ export(): Promise<{
86
+ header: any;
87
+ data: any;
88
+ } | undefined>;
84
89
  import(): Promise<void>;
85
90
  getData(): {
86
91
  main: any;
87
92
  detail: any;
88
93
  };
89
- getCustomButtonContainerStyle(): any[];
90
- getContextButtons(): any[];
91
- getButtonContainer(): HTML;
92
- getBasicButtonHandler(type: string, action: string, logic: any): any;
94
+ getCustomButtonContainerStyle(): import("lit").CSSResult[];
95
+ getContextButtons(): any;
96
+ getButtonContainer(): import("lit-html").TemplateResult<1>;
97
+ getBasicButtonHandler(type: any, action: any, logic: any): Promise<any>;
93
98
  customButtonHandler(logic: any): Promise<void>;
94
99
  gristButtonHandler(actionInfo: any, record: any): Promise<void>;
95
100
  parseBasicButtonConfigs(menuMeta: any): void;
96
- buttonConfig: any;
97
- useButtonImport: boolean | undefined;
98
- useButtonExport: boolean | undefined;
99
- useButtonAdd: boolean | undefined;
100
101
  parseBasicServiceConfigs(menuMeta: any): void;
101
- gqlInfo: any;
102
- fetchHandler({ page, limit, sortings, filters }: any): any;
103
- getPageNavigateParams(): any[];
104
- findOne(id: string): Promise<any>;
105
- deleteByIds(ids: string): boolean;
106
- updateMultiple(params: any[]): Promise<boolean>;
102
+ fetchHandler({ page, limit, sortings, filters }: {
103
+ page?: number | undefined;
104
+ limit?: number | undefined;
105
+ sortings?: never[] | undefined;
106
+ filters?: never[] | undefined;
107
+ }): Promise<any>;
108
+ getPageNavigateParams(): never[];
109
+ findOne(id: any): Promise<any>;
110
+ deleteByIds(ids: any): Promise<boolean>;
111
+ updateMultiple(params: any): Promise<boolean>;
107
112
  get isElement(): boolean;
108
- get isDetail(): boolean;
113
+ get isDetail(): any;
109
114
  dataChangeEventHandler(e: any): Promise<void>;
110
- get isPopup(): boolean;
115
+ get isPopup(): any;
111
116
  get isPage(): boolean;
112
- getAndParseMenuMeta(): any;
113
- menuInfo: any;
114
- etcConfig: any;
115
- excuteOpenPopupButtonClick(action: any, record: any, closeCallback: Function): Promise<void>;
116
- executeCallScenarioButtonClick(action: any, params: any, afterCallback: Function): Promise<void>;
117
- setParentId(id: string): void;
118
- parent_id: string | undefined;
117
+ getAndParseMenuMeta(): Promise<void>;
118
+ excuteOpenPopupButtonClick(action: any, record: any, closeCallback: any): Promise<void>;
119
+ executeCallScenarioButtonClick(action: any, params: any, afterCallback: any): Promise<void>;
120
+ setParentId(id: any): void;
119
121
  };
120
122
  /**
121
123
  * @description 스타일 정의
122
124
  **************************
123
125
  * @returns {Array} 스타일
124
126
  */
125
- get styles(): any[];
127
+ get styles(): import("lit").CSSResult[];
126
128
  /**
127
129
  * @description 프로퍼티 정의
128
130
  ****************************
129
131
  * @returns {Object} 프로퍼티
130
132
  */
131
- get properties(): any;
133
+ get properties(): {
134
+ /**
135
+ * @description 그리드 구성 정보
136
+ *****************************
137
+ * @type {Object}
138
+ */
139
+ gridConfig: ObjectConstructor;
140
+ /**
141
+ * @description 그리드 컬럼 구성 정보
142
+ *********************************
143
+ * @type {Array}
144
+ */
145
+ gridColumnConfig: ArrayConstructor;
146
+ /**
147
+ * @description 검색 폼 구성 정보
148
+ *******************************
149
+ * @type {Array}
150
+ */
151
+ searchConfig: ArrayConstructor;
152
+ /**
153
+ * @description 화면에서 사용되는 서치 폼 : grist, filter, not
154
+ *********************************************************
155
+ * @type {String}
156
+ */
157
+ searchFormElement: StringConstructor;
158
+ /**
159
+ * @description 메뉴 메타 정보로 부터 추출한 후 그리스트를 위해 설정 정보 구성
160
+ *****************************************************************
161
+ * @type {Object}
162
+ */
163
+ gristConfigSet: ObjectConstructor;
164
+ /**
165
+ * @description 필터 폼 사용 여부
166
+ *****************************
167
+ * @type {Boolean}
168
+ */
169
+ useFilterForm: BooleanConstructor;
170
+ /**
171
+ * @description 모바일 기기에서 그리드 모드 : GRID, LIST, CARD
172
+ *********************************************************
173
+ * @type {String}
174
+ */
175
+ gridMobileMode: StringConstructor;
176
+ /**
177
+ * @description 데스크탑에서 그리드 모드 : GRID, LIST, CARD
178
+ ******************************************************
179
+ * @type {String}
180
+ */
181
+ gridDeskMode: StringConstructor;
182
+ /**
183
+ * @description 그리드 뷰 모드 : GRID, LIST, CARD
184
+ **********************************************
185
+ * @type {Array}
186
+ */
187
+ gridViewOptions: ArrayConstructor;
188
+ /**
189
+ * @description 현재 그리드 뷰 모드 : GRID, LIST, CARD
190
+ ***************************************************
191
+ * @type {String}
192
+ */
193
+ gridMode: StringConstructor;
194
+ /**
195
+ * @description Infinity Page 사용 여부
196
+ **************************************
197
+ * @type {Boolean}
198
+ */
199
+ infinityPage: BooleanConstructor;
200
+ /**
201
+ * @description 그리스트 엘리먼트 ID
202
+ ***************************
203
+ * @type {String}
204
+ */
205
+ gristId: StringConstructor;
206
+ /**
207
+ * @description 필터 폼 엘리먼트 ID
208
+ ***************************
209
+ * @type {String}
210
+ */
211
+ filterFormId: StringConstructor;
212
+ };
132
213
  };
@@ -1,3 +1,4 @@
1
+ // @ts-nocheck
1
2
  import { MetaApi } from '../utils/meta-api';
2
3
  import { MetaUiUtil } from '../utils/meta-ui-util';
3
4
  import { ValueUtil } from '../utils/value-util';
@@ -1 +1 @@
1
- {"version":3,"file":"meta-grist-tab-mixin.js","sourceRoot":"","sources":["../../client/mixin/meta-grist-tab-mixin.js"],"names":[],"mappings":"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","sourcesContent":["import { MetaApi } from '../utils/meta-api'\nimport { MetaUiUtil } from '../utils/meta-ui-util'\nimport { ValueUtil } from '../utils/value-util'\nimport { TermsUtil } from '../utils/terms-util'\n\nimport { MetaButtonMixin } from './meta-button-mixin'\n\n/**\n * @license\n * Copyright © HatioLab Inc. All rights reserved.\n * @author Shortstop shortstop@hatiolab.com\n * @description 메뉴 메타 정보를 기반으로 그리드 탭 구성\n */\nexport const MetaGristTabMixin = baseElement =>\n class extends MetaButtonMixin(baseElement) {\n /**\n * @description 스타일 정의\n **************************\n * @returns {Array} 스타일\n */\n static get styles() {\n return MetaApi.getBasicGristTabStyles()\n }\n\n /**\n * @description 프로퍼티 정의\n ****************************\n * @returns {Object} 프로퍼티\n */\n static get properties() {\n return {\n /**\n * @description 그리드 구성 정보\n *****************************\n * @type {Object}\n */\n gridConfig: Object,\n /**\n * @description 그리드 컬럼 구성 정보\n *********************************\n * @type {Array}\n */\n gridColumnConfig: Array,\n /**\n * @description 검색 폼 구성 정보\n *******************************\n * @type {Array}\n */\n searchConfig: Array,\n /**\n * @description 화면에서 사용되는 서치 폼 : grist, filter, not\n *********************************************************\n * @type {String}\n */\n searchFormElement: String,\n /**\n * @description 메뉴 메타 정보로 부터 추출한 후 그리스트를 위해 설정 정보 구성\n *****************************************************************\n * @type {Object}\n */\n gristConfigSet: Object,\n /**\n * @description 필터 폼 사용 여부\n *****************************\n * @type {Boolean}\n */\n useFilterForm: Boolean,\n /**\n * @description 모바일 기기에서 그리드 모드 : GRID, LIST, CARD\n *********************************************************\n * @type {String}\n */\n gridMobileMode: String,\n /**\n * @description 데스크탑에서 그리드 모드 : GRID, LIST, CARD\n ******************************************************\n * @type {String}\n */\n gridDeskMode: String,\n /**\n * @description 그리드 뷰 모드 : GRID, LIST, CARD\n **********************************************\n * @type {Array}\n */\n gridViewOptions: Array,\n /**\n * @description 현재 그리드 뷰 모드 : GRID, LIST, CARD\n ***************************************************\n * @type {String}\n */\n gridMode: String,\n /**\n * @description Infinity Page 사용 여부\n **************************************\n * @type {Boolean}\n */\n infinityPage: Boolean,\n /**\n * @description 그리스트 엘리먼트 ID\n ***************************\n * @type {String}\n */\n gristId: String,\n /**\n * @description 필터 폼 엘리먼트 ID\n ***************************\n * @type {String}\n */\n filterFormId: String\n }\n }\n\n /**\n * @description 그리스트\n ***********************\n * @returns {HTMLElement}\n */\n get grist() {\n return this.renderRoot.querySelector(this.gristId)\n }\n\n /**\n * @description 필터 폼\n ***********************\n * @returns {HTMLElement}\n */\n get filterForm() {\n return this.shadowRoot?.querySelector(this.filterFormId)\n }\n\n /**\n * @description 디테일 Element\n *****************************\n * @returns {HTMLElement}\n */\n get detailElement() {\n return this.shadowRoot.querySelector('#detail')\n }\n\n /**\n * @description 컨텍스트\n ***********************\n * @returns {HTMLElement}\n */\n get context() {\n let ctx = MetaUiUtil.getContextObject(this)\n\n if (ctx.actions) delete ctx.actions\n if (ctx.exportable) delete ctx.exportable\n if (ctx.importable) delete ctx.importable\n return ctx\n }\n\n /******************************************************\n * LifeCycle\n ******************************************************/\n\n /**\n * @override connectedCallback\n ***************************\n */\n async connectedCallback() {\n // 그리스트, 필터 폼 ID 설정\n this.gristId = 'ox-grist'\n this.filterFormId = 'ox-filters-form-base'\n\n // 메뉴 메타 정보 조회 및 기본 파싱\n await this.getAndParseMenuMeta()\n\n if (this.isElement) {\n await this.parseGristConfigs()\n }\n\n if (this.activityDataSet) {\n this.dataSet = (this.activityDataSet || {}).main\n }\n\n if (super.connectedCallback) {\n await super.connectedCallback()\n }\n }\n\n /**\n * @override pageUpdated\n ***************************\n * @param {Object} changes\n * @param {Object} lifecycle\n * @param {Object} before\n */\n async pageUpdated(changes, lifecycle, before) {\n super.pageUpdated(changes, lifecycle, before)\n\n if (this.isPage && before.active == false) {\n // TODO 탭이 다른 탭으로 이동하는 경우에 현재 탭의 데이터에 dirty인 것이 있는지 체크해서 있다면 메시지 출력!!!\n console.log('page updated!!!!')\n }\n }\n\n async firstUpdated() {\n if (super.firstUpdated) {\n await super.firstUpdated()\n }\n }\n\n async pageInitialized() {\n if (this.isPage) {\n await this.parseGristConfigs()\n }\n\n if (super.pageInitialized) {\n await super.pageInitialized()\n }\n }\n\n render() {\n return MetaApi.getGristTabHtml(this)\n }\n\n /**\n * @descrtiption 메뉴 메타에서 기본 그리드 정보 파싱 처리\n ************************************************\n * @param {Object} menuMeta 메뉴 메타 정보\n */\n parseBasicGridConfigs(menuMeta) {\n this.gridConfig = menuMeta.grid\n this.gridColumnConfig = menuMeta.grid_column\n this.searchConfig = menuMeta.search\n this.gridEmphasized = menuMeta.gridEmphasized\n }\n\n /**\n * @descrtiption 그리스트 구성 정보 파싱 처리\n ***************************************\n */\n async parseGristConfigs() {\n this.gristConfigSet = await MetaApi.parseGridConfigSet(this)\n this.useMasterFilterForm = this.useFilterForm === true ? true : false\n this.useFilterForm = false\n this.searchFieldValues = []\n this.searchFields = this.gristConfigSet.columns\n .filter(x => x.filter)\n .map(x => {\n let searchField = {\n name: x.name,\n type: x.filter.operator === 'search' ? 'search' : x.type,\n label: x.header,\n operator: x.filter.operator ? x.filter.operator : 'eq'\n }\n\n if (x.filter.options) {\n searchField.options = x.filter.options\n }\n\n if (x.record.options) {\n searchField.options = x.record.options\n }\n\n if (x.filter.value) {\n this.searchFieldValues.push({\n name: searchField.name,\n operator: searchField.operator,\n value: x.filter.value\n })\n }\n\n delete x.filter\n return searchField\n })\n }\n\n /********************************************************************\n * C R U D Functions\n ********************************************************************/\n\n async fetch() {\n await this.grist.fetch()\n }\n\n async beforeFetch({ page = 0, limit = 0, sortings = [], filters = [] }) {\n let detailContainer = this.renderRoot.querySelector('meta-tab-element')\n await detailContainer.clear()\n\n return true\n }\n\n async save() {\n let patches = MetaApi.patchesForUpdateMultiple(this.grist)\n let result = ValueUtil.isNotEmpty(patches) ? await this.updateMultiple(patches) : false\n if (result) {\n this.fetch()\n }\n }\n\n async find() {\n let ids = MetaApi.getSelectedIdList(this.grist, true)\n return ValueUtil.isNotEmpty(ids) ? await this.findOne(ids[0]) : {}\n }\n\n async delete() {\n let ids = MetaApi.getSelectedIdList(this.grist, true)\n let result = ValueUtil.isNotEmpty(ids) ? await this.deleteByIds(ids) : false\n if (result) {\n this.fetch()\n }\n }\n\n async export() {\n let exportTitle = TermsUtil.tTitle(ValueUtil.getParams(this.menuInfo, 'title'))\n return await MetaApi.exportableData(this.isElement, exportTitle, this.grist)\n }\n\n async import() {\n // TODO\n }\n\n getData() {\n let records = this.grist.___data.records\n records = JSON.parse(JSON.stringify(records))\n\n records.forEach(record => {\n let keys = Object.keys(record)\n keys.forEach(x => {\n if (x.startsWith('__')) {\n delete record[x]\n }\n })\n })\n\n let tabElement = this.renderRoot.querySelector('meta-tab-element')\n return {\n main: records,\n detail: tabElement.getData()\n }\n }\n }\n"]}
1
+ {"version":3,"file":"meta-grist-tab-mixin.js","sourceRoot":"","sources":["../../client/mixin/meta-grist-tab-mixin.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { MetaApi } from '../utils/meta-api'\nimport { MetaUiUtil } from '../utils/meta-ui-util'\nimport { ValueUtil } from '../utils/value-util'\nimport { TermsUtil } from '../utils/terms-util'\n\nimport { MetaButtonMixin } from './meta-button-mixin'\n\n/**\n * @license\n * Copyright © HatioLab Inc. All rights reserved.\n * @author Shortstop shortstop@hatiolab.com\n * @description 메뉴 메타 정보를 기반으로 그리드 탭 구성\n */\nexport const MetaGristTabMixin = baseElement =>\n class extends MetaButtonMixin(baseElement) {\n /**\n * @description 스타일 정의\n **************************\n * @returns {Array} 스타일\n */\n static get styles() {\n return MetaApi.getBasicGristTabStyles()\n }\n\n /**\n * @description 프로퍼티 정의\n ****************************\n * @returns {Object} 프로퍼티\n */\n static get properties() {\n return {\n /**\n * @description 그리드 구성 정보\n *****************************\n * @type {Object}\n */\n gridConfig: Object,\n /**\n * @description 그리드 컬럼 구성 정보\n *********************************\n * @type {Array}\n */\n gridColumnConfig: Array,\n /**\n * @description 검색 폼 구성 정보\n *******************************\n * @type {Array}\n */\n searchConfig: Array,\n /**\n * @description 화면에서 사용되는 서치 폼 : grist, filter, not\n *********************************************************\n * @type {String}\n */\n searchFormElement: String,\n /**\n * @description 메뉴 메타 정보로 부터 추출한 후 그리스트를 위해 설정 정보 구성\n *****************************************************************\n * @type {Object}\n */\n gristConfigSet: Object,\n /**\n * @description 필터 폼 사용 여부\n *****************************\n * @type {Boolean}\n */\n useFilterForm: Boolean,\n /**\n * @description 모바일 기기에서 그리드 모드 : GRID, LIST, CARD\n *********************************************************\n * @type {String}\n */\n gridMobileMode: String,\n /**\n * @description 데스크탑에서 그리드 모드 : GRID, LIST, CARD\n ******************************************************\n * @type {String}\n */\n gridDeskMode: String,\n /**\n * @description 그리드 뷰 모드 : GRID, LIST, CARD\n **********************************************\n * @type {Array}\n */\n gridViewOptions: Array,\n /**\n * @description 현재 그리드 뷰 모드 : GRID, LIST, CARD\n ***************************************************\n * @type {String}\n */\n gridMode: String,\n /**\n * @description Infinity Page 사용 여부\n **************************************\n * @type {Boolean}\n */\n infinityPage: Boolean,\n /**\n * @description 그리스트 엘리먼트 ID\n ***************************\n * @type {String}\n */\n gristId: String,\n /**\n * @description 필터 폼 엘리먼트 ID\n ***************************\n * @type {String}\n */\n filterFormId: String\n }\n }\n\n /**\n * @description 그리스트\n ***********************\n * @returns {HTMLElement}\n */\n get grist() {\n return this.renderRoot.querySelector(this.gristId)\n }\n\n /**\n * @description 필터 폼\n ***********************\n * @returns {HTMLElement}\n */\n get filterForm() {\n return this.shadowRoot?.querySelector(this.filterFormId)\n }\n\n /**\n * @description 디테일 Element\n *****************************\n * @returns {HTMLElement}\n */\n get detailElement() {\n return this.shadowRoot.querySelector('#detail')\n }\n\n /**\n * @description 컨텍스트\n ***********************\n * @returns {HTMLElement}\n */\n get context() {\n let ctx = MetaUiUtil.getContextObject(this)\n\n if (ctx.actions) delete ctx.actions\n if (ctx.exportable) delete ctx.exportable\n if (ctx.importable) delete ctx.importable\n return ctx\n }\n\n /******************************************************\n * LifeCycle\n ******************************************************/\n\n /**\n * @override connectedCallback\n ***************************\n */\n async connectedCallback() {\n // 그리스트, 필터 폼 ID 설정\n this.gristId = 'ox-grist'\n this.filterFormId = 'ox-filters-form-base'\n\n // 메뉴 메타 정보 조회 및 기본 파싱\n await this.getAndParseMenuMeta()\n\n if (this.isElement) {\n await this.parseGristConfigs()\n }\n\n if (this.activityDataSet) {\n this.dataSet = (this.activityDataSet || {}).main\n }\n\n if (super.connectedCallback) {\n await super.connectedCallback()\n }\n }\n\n /**\n * @override pageUpdated\n ***************************\n * @param {Object} changes\n * @param {Object} lifecycle\n * @param {Object} before\n */\n async pageUpdated(changes, lifecycle, before) {\n super.pageUpdated(changes, lifecycle, before)\n\n if (this.isPage && before.active == false) {\n // TODO 탭이 다른 탭으로 이동하는 경우에 현재 탭의 데이터에 dirty인 것이 있는지 체크해서 있다면 메시지 출력!!!\n console.log('page updated!!!!')\n }\n }\n\n async firstUpdated() {\n if (super.firstUpdated) {\n await super.firstUpdated()\n }\n }\n\n async pageInitialized() {\n if (this.isPage) {\n await this.parseGristConfigs()\n }\n\n if (super.pageInitialized) {\n await super.pageInitialized()\n }\n }\n\n render() {\n return MetaApi.getGristTabHtml(this)\n }\n\n /**\n * @descrtiption 메뉴 메타에서 기본 그리드 정보 파싱 처리\n ************************************************\n * @param {Object} menuMeta 메뉴 메타 정보\n */\n parseBasicGridConfigs(menuMeta) {\n this.gridConfig = menuMeta.grid\n this.gridColumnConfig = menuMeta.grid_column\n this.searchConfig = menuMeta.search\n this.gridEmphasized = menuMeta.gridEmphasized\n }\n\n /**\n * @descrtiption 그리스트 구성 정보 파싱 처리\n ***************************************\n */\n async parseGristConfigs() {\n this.gristConfigSet = await MetaApi.parseGridConfigSet(this)\n this.useMasterFilterForm = this.useFilterForm === true ? true : false\n this.useFilterForm = false\n this.searchFieldValues = []\n this.searchFields = this.gristConfigSet.columns\n .filter(x => x.filter)\n .map(x => {\n let searchField = {\n name: x.name,\n type: x.filter.operator === 'search' ? 'search' : x.type,\n label: x.header,\n operator: x.filter.operator ? x.filter.operator : 'eq'\n }\n\n if (x.filter.options) {\n searchField.options = x.filter.options\n }\n\n if (x.record.options) {\n searchField.options = x.record.options\n }\n\n if (x.filter.value) {\n this.searchFieldValues.push({\n name: searchField.name,\n operator: searchField.operator,\n value: x.filter.value\n })\n }\n\n delete x.filter\n return searchField\n })\n }\n\n /********************************************************************\n * C R U D Functions\n ********************************************************************/\n\n async fetch() {\n await this.grist.fetch()\n }\n\n async beforeFetch({ page = 0, limit = 0, sortings = [], filters = [] }) {\n let detailContainer = this.renderRoot.querySelector('meta-tab-element')\n await detailContainer.clear()\n\n return true\n }\n\n async save() {\n let patches = MetaApi.patchesForUpdateMultiple(this.grist)\n let result = ValueUtil.isNotEmpty(patches) ? await this.updateMultiple(patches) : false\n if (result) {\n this.fetch()\n }\n }\n\n async find() {\n let ids = MetaApi.getSelectedIdList(this.grist, true)\n return ValueUtil.isNotEmpty(ids) ? await this.findOne(ids[0]) : {}\n }\n\n async delete() {\n let ids = MetaApi.getSelectedIdList(this.grist, true)\n let result = ValueUtil.isNotEmpty(ids) ? await this.deleteByIds(ids) : false\n if (result) {\n this.fetch()\n }\n }\n\n async export() {\n let exportTitle = TermsUtil.tTitle(ValueUtil.getParams(this.menuInfo, 'title'))\n return await MetaApi.exportableData(this.isElement, exportTitle, this.grist)\n }\n\n async import() {\n // TODO\n }\n\n getData() {\n let records = this.grist.___data.records\n records = JSON.parse(JSON.stringify(records))\n\n records.forEach(record => {\n let keys = Object.keys(record)\n keys.forEach(x => {\n if (x.startsWith('__')) {\n delete record[x]\n }\n })\n })\n\n let tabElement = this.renderRoot.querySelector('meta-tab-element')\n return {\n main: records,\n detail: tabElement.getData()\n }\n }\n }\n"]}