@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 MetaMainTabMixin(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 MetaMainTabMixin: (baseElement: any) => {
2
8
  new (): {
3
9
  [x: string]: any;
4
10
  /**
@@ -6,52 +12,45 @@ export function MetaMainTabMixin(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 컨텍스트
18
24
  ***********************
19
25
  * @returns {HTMLElement}
20
26
  */
21
- get context(): HTMLElement;
27
+ get context(): {
28
+ title: string;
29
+ help: any;
30
+ actions: any[];
31
+ } | {
32
+ title?: undefined;
33
+ help?: undefined;
34
+ actions?: undefined;
35
+ };
22
36
  /******************************************************
23
37
  * LifeCycle
24
38
  ******************************************************/
25
39
  connectedCallback(): Promise<void>;
26
- gristId: string | undefined;
27
- filterFormId: string | undefined;
28
- dataSet: any;
29
40
  firstUpdated(): Promise<void>;
30
41
  pageInitialized(): Promise<void>;
31
- render(): HTMLElement;
42
+ render(): import("lit-html").TemplateResult<1>;
32
43
  /**
33
44
  * @descrtiption 메뉴 메타 정보로 부터 메인 그리드 Configuration
34
45
  ********************************************************
35
46
  * @param {Object} menuMeta 메뉴 메타 정보
36
47
  */
37
48
  parseBasicGridConfigs(menuMeta: any): void;
38
- gridConfig: any;
39
- gridColumnConfig: any;
40
- searchConfig: any;
41
- gridEmphasized: any;
42
49
  /**
43
50
  * @descrtiption 그리스트 구성 정보로 부터 화면 구성 정보 추출
44
51
  ****************************************************
45
52
  */
46
53
  parseGristConfigs(): Promise<void>;
47
- gristConfigSet: any;
48
- useMasterFilterForm: boolean | undefined;
49
- useFilterForm: boolean | undefined;
50
- buttonConfig: any;
51
- useButtonExport: boolean | undefined;
52
- useButtonImport: boolean | undefined;
53
- searchFieldValues: any[] | undefined;
54
- searchFields: any;
55
54
  /********************************************************************
56
55
  * C R U D Functions
57
56
  ********************************************************************/
@@ -65,45 +64,124 @@ export function MetaMainTabMixin(baseElement: any): {
65
64
  getData(): {
66
65
  master: any;
67
66
  };
68
- getCustomButtonContainerStyle(): any[];
69
- getContextButtons(): any[];
70
- getButtonContainer(): HTML;
71
- getBasicButtonHandler(type: string, action: string, logic: any): any;
67
+ getCustomButtonContainerStyle(): import("lit").CSSResult[];
68
+ getContextButtons(): any;
69
+ getButtonContainer(): import("lit-html").TemplateResult<1>;
70
+ getBasicButtonHandler(type: any, action: any, logic: any): Promise<any>;
72
71
  customButtonHandler(logic: any): Promise<void>;
73
72
  gristButtonHandler(actionInfo: any, record: any): Promise<void>;
74
73
  parseBasicButtonConfigs(menuMeta: any): void;
75
- useButtonAdd: boolean | undefined;
76
74
  parseBasicServiceConfigs(menuMeta: any): void;
77
- gqlInfo: any;
78
- fetchHandler({ page, limit, sortings, filters }: any): any;
79
- getPageNavigateParams(): any[];
80
- findOne(id: string): Promise<any>;
81
- deleteByIds(ids: string): boolean;
82
- updateMultiple(params: any[]): Promise<boolean>;
75
+ fetchHandler({ page, limit, sortings, filters }: {
76
+ page?: number | undefined;
77
+ limit?: number | undefined;
78
+ sortings?: never[] | undefined;
79
+ filters?: never[] | undefined;
80
+ }): Promise<any>;
81
+ getPageNavigateParams(): never[];
82
+ findOne(id: any): Promise<any>;
83
+ deleteByIds(ids: any): Promise<boolean>;
84
+ updateMultiple(params: any): Promise<boolean>;
83
85
  get isElement(): boolean;
84
- get isDetail(): boolean;
86
+ get isDetail(): any;
85
87
  dataChangeEventHandler(e: any): Promise<void>;
86
88
  pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
87
- get isPopup(): boolean;
89
+ get isPopup(): any;
88
90
  get isPage(): boolean;
89
- getAndParseMenuMeta(): any;
90
- menuInfo: any;
91
- etcConfig: any;
92
- excuteOpenPopupButtonClick(action: any, record: any, closeCallback: Function): Promise<void>;
93
- executeCallScenarioButtonClick(action: any, params: any, afterCallback: Function): Promise<void>;
94
- setParentId(id: string): void;
95
- parent_id: string | undefined;
91
+ getAndParseMenuMeta(): Promise<void>;
92
+ excuteOpenPopupButtonClick(action: any, record: any, closeCallback: any): Promise<void>;
93
+ executeCallScenarioButtonClick(action: any, params: any, afterCallback: any): Promise<void>;
94
+ setParentId(id: any): void;
96
95
  };
97
96
  /**
98
97
  * @description 스타일 정의
99
98
  **************************
100
99
  * @returns {Array} 스타일
101
100
  */
102
- get styles(): any[];
101
+ get styles(): import("lit").CSSResult[];
103
102
  /**
104
103
  * @description 프로퍼티 정의
105
104
  ***************************
106
105
  * @returns {Object} 프로퍼티
107
106
  */
108
- get properties(): any;
107
+ get properties(): {
108
+ /**
109
+ * @description 그리드 구성 정보
110
+ *****************************
111
+ * @type {Object}
112
+ */
113
+ gridConfig: ObjectConstructor;
114
+ /**
115
+ * @description 그리드 컬럼 구성 정보
116
+ *********************************
117
+ * @type {Array}
118
+ */
119
+ gridColumnConfig: ArrayConstructor;
120
+ /**
121
+ * @description 검색 폼 구성 정보
122
+ *******************************
123
+ * @type {Array}
124
+ */
125
+ searchConfig: ArrayConstructor;
126
+ /**
127
+ * @description 화면에서 사용되는 서치 폼 : grist, filter, not
128
+ *********************************************************
129
+ * @type {String}
130
+ */
131
+ searchFormElement: StringConstructor;
132
+ /**
133
+ * @description 메뉴 메타 정보로 부터 추출한 후 그리스트를 위해 설정 정보 구성
134
+ *****************************************************************
135
+ * @type {Object}
136
+ */
137
+ gristConfigSet: ObjectConstructor;
138
+ /**
139
+ * @description 필터 폼 사용 여부
140
+ *****************************
141
+ * @type {Boolean}
142
+ */
143
+ useFilterForm: BooleanConstructor;
144
+ /**
145
+ * @description 모바일 기기에서 그리드 모드 : GRID, LIST, CARD
146
+ *********************************************************
147
+ * @type {String}
148
+ */
149
+ gridMobileMode: StringConstructor;
150
+ /**
151
+ * @description 데스크탑에서 그리드 모드 : GRID, LIST, CARD
152
+ ******************************************************
153
+ * @type {String}
154
+ */
155
+ gridDeskMode: StringConstructor;
156
+ /**
157
+ * @description 그리드 뷰 모드 : GRID, LIST, CARD
158
+ **********************************************
159
+ * @type {Array}
160
+ */
161
+ gridViewOptions: ArrayConstructor;
162
+ /**
163
+ * @description 현재 그리드 뷰 모드 : GRID, LIST, CARD
164
+ ***************************************************
165
+ * @type {String}
166
+ */
167
+ gridMode: StringConstructor;
168
+ /**
169
+ * @description Infinity Page 사용 여부
170
+ **************************************
171
+ * @type {Boolean}
172
+ */
173
+ infinityPage: BooleanConstructor;
174
+ /**
175
+ * @description 그리스트 엘리먼트 ID
176
+ ***************************
177
+ * @type {String}
178
+ */
179
+ gristId: StringConstructor;
180
+ /**
181
+ * @description 필터 폼 엘리먼트 ID
182
+ ***************************
183
+ * @type {String}
184
+ */
185
+ filterFormId: StringConstructor;
186
+ };
109
187
  };
@@ -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 { MetaButtonMixin } from './meta-button-mixin';
@@ -1 +1 @@
1
- {"version":3,"file":"meta-main-tab-mixin.js","sourceRoot":"","sources":["../../client/mixin/meta-main-tab-mixin.js"],"names":[],"mappings":"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","sourcesContent":["import { MetaApi } from '../utils/meta-api'\nimport { MetaUiUtil } from '../utils/meta-ui-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 MetaMainTabMixin = baseElement =>\n class extends MetaButtonMixin(baseElement) {\n /**\n * @description 스타일 정의\n **************************\n * @returns {Array} 스타일\n */\n static get styles() {\n return MetaApi.getBasicMainTabStyles()\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.masterElement.getMainGrist()\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 컨텍스트\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 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 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.getMainTabHtml(this)\n }\n\n /**\n * @descrtiption 메뉴 메타 정보로 부터 메인 그리드 Configuration\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.buttonConfig = undefined\n this.useButtonExport = false\n this.useButtonImport = false\n this.searchFieldValues = []\n\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 if (this.masterElement) {\n if (this.masterElement.clear) {\n await this.masterElement.clear()\n }\n }\n\n return true\n }\n\n getData() {\n return {\n master: this.masterElement.getData()\n }\n }\n }\n"]}
1
+ {"version":3,"file":"meta-main-tab-mixin.js","sourceRoot":"","sources":["../../client/mixin/meta-main-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'\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 MetaMainTabMixin = baseElement =>\n class extends MetaButtonMixin(baseElement) {\n /**\n * @description 스타일 정의\n **************************\n * @returns {Array} 스타일\n */\n static get styles() {\n return MetaApi.getBasicMainTabStyles()\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.masterElement.getMainGrist()\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 컨텍스트\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 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 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.getMainTabHtml(this)\n }\n\n /**\n * @descrtiption 메뉴 메타 정보로 부터 메인 그리드 Configuration\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.buttonConfig = undefined\n this.useButtonExport = false\n this.useButtonImport = false\n this.searchFieldValues = []\n\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 if (this.masterElement) {\n if (this.masterElement.clear) {\n await this.masterElement.clear()\n }\n }\n\n return true\n }\n\n getData() {\n return {\n master: this.masterElement.getData()\n }\n }\n }\n"]}
@@ -1,4 +1,10 @@
1
- export function MetaMasterDetailMixin(baseElement: any): {
1
+ /**
2
+ * @description 메뉴 메타 정보를 이용해 마스터 - 디테일 그리드 화면 구현
3
+ ************************************************************
4
+ * @param {Object} MetaButtonMixin
5
+ * @returns
6
+ */
7
+ export declare const MetaMasterDetailMixin: (baseElement: any) => {
2
8
  new (): {
3
9
  [x: string]: any;
4
10
  /**
@@ -6,19 +12,27 @@ export function MetaMasterDetailMixin(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 컨텍스트
18
24
  ***********************
19
25
  * @returns {HTMLElement}
20
26
  */
21
- get context(): HTMLElement;
27
+ get context(): {
28
+ title: string;
29
+ help: any;
30
+ actions: any[];
31
+ } | {
32
+ title?: undefined;
33
+ help?: undefined;
34
+ actions?: undefined;
35
+ };
22
36
  /******************************************************
23
37
  * LifeCycle
24
38
  ******************************************************/
@@ -27,9 +41,6 @@ export function MetaMasterDetailMixin(baseElement: any): {
27
41
  *******************************
28
42
  */
29
43
  connectedCallback(): Promise<void>;
30
- gristId: string | undefined;
31
- filterFormId: string | undefined;
32
- dataSet: any;
33
44
  /**
34
45
  * @override firstUpdated
35
46
  **************************
@@ -45,28 +56,18 @@ export function MetaMasterDetailMixin(baseElement: any): {
45
56
  * @override render
46
57
  ********************
47
58
  */
48
- render(): HTMLElement;
59
+ render(): import("lit-html").TemplateResult<1>;
49
60
  /**
50
61
  * @descrtiption 메뉴 메타에서 기본 그리드 정보 파싱 처리
51
62
  ************************************************
52
63
  * @param {Object} menuMeta 메뉴 메타 정보
53
64
  */
54
65
  parseBasicGridConfigs(menuMeta: any): void;
55
- gridConfig: any;
56
- gridColumnConfig: any;
57
- searchConfig: any;
58
- gridEmphasized: any;
59
66
  /**
60
67
  * @descrtiption 그리스트 구성 정보 파싱 처리
61
68
  ***************************************
62
69
  */
63
70
  parseGristConfigs(): Promise<void>;
64
- gristConfigSet: any;
65
- masterOption: any;
66
- useMasterFilterForm: boolean | undefined;
67
- useFilterForm: boolean | undefined;
68
- searchFieldValues: any[] | undefined;
69
- searchFields: any;
70
71
  /**
71
72
  * @descrtiption 마스터 그리드에 대한 포커스 이벤트 핸들러 정의
72
73
  *****************************************************
@@ -76,7 +77,7 @@ export function MetaMasterDetailMixin(baseElement: any): {
76
77
  * @param {Object} record
77
78
  * @param {Number} rowIndex
78
79
  */
79
- masterGridFocusEventHandler(columns: any[], data: any, column: any, record: any, rowIndex: number): void;
80
+ masterGridFocusEventHandler(columns: any, data: any, column: any, record: any, rowIndex: any): void;
80
81
  /********************************************************************
81
82
  * C R U D Functions
82
83
  ********************************************************************/
@@ -114,7 +115,10 @@ export function MetaMasterDetailMixin(baseElement: any): {
114
115
  * @descrtiption 익스포트 처리
115
116
  ****************************
116
117
  */
117
- export(): Promise<any>;
118
+ export(): Promise<{
119
+ header: any;
120
+ data: any;
121
+ } | undefined>;
118
122
  /**
119
123
  * @descrtiption 임포트 처리
120
124
  **************************
@@ -125,48 +129,133 @@ export function MetaMasterDetailMixin(baseElement: any): {
125
129
  *******************************
126
130
  * @returns {Object}
127
131
  */
128
- getData(): any;
129
- getCustomButtonContainerStyle(): any[];
130
- getContextButtons(): any[];
131
- getButtonContainer(): HTML;
132
- getBasicButtonHandler(type: string, action: string, logic: any): any;
132
+ getData(): {
133
+ main: any;
134
+ detail: any;
135
+ };
136
+ getCustomButtonContainerStyle(): import("lit").CSSResult[];
137
+ getContextButtons(): any;
138
+ getButtonContainer(): import("lit-html").TemplateResult<1>;
139
+ getBasicButtonHandler(type: any, action: any, logic: any): Promise<any>;
133
140
  customButtonHandler(logic: any): Promise<void>;
134
141
  gristButtonHandler(actionInfo: any, record: any): Promise<void>;
135
142
  parseBasicButtonConfigs(menuMeta: any): void;
136
- buttonConfig: any;
137
- useButtonImport: boolean | undefined;
138
- useButtonExport: boolean | undefined;
139
- useButtonAdd: boolean | undefined;
140
143
  parseBasicServiceConfigs(menuMeta: any): void;
141
- gqlInfo: any;
142
- fetchHandler({ page, limit, sortings, filters }: any): any;
143
- getPageNavigateParams(): any[];
144
- findOne(id: string): Promise<any>;
145
- deleteByIds(ids: string): boolean;
146
- updateMultiple(params: any[]): Promise<boolean>;
144
+ fetchHandler({ page, limit, sortings, filters }: {
145
+ page?: number | undefined;
146
+ limit?: number | undefined;
147
+ sortings?: never[] | undefined;
148
+ filters?: never[] | undefined;
149
+ }): Promise<any>;
150
+ getPageNavigateParams(): never[];
151
+ findOne(id: any): Promise<any>;
152
+ deleteByIds(ids: any): Promise<boolean>;
153
+ updateMultiple(params: any): Promise<boolean>;
147
154
  get isElement(): boolean;
148
- get isDetail(): boolean;
155
+ get isDetail(): any;
149
156
  dataChangeEventHandler(e: any): Promise<void>;
150
- get isPopup(): boolean;
157
+ get isPopup(): any;
151
158
  get isPage(): boolean;
152
- getAndParseMenuMeta(): any;
153
- menuInfo: any;
154
- etcConfig: any;
155
- excuteOpenPopupButtonClick(action: any, record: any, closeCallback: Function): Promise<void>;
156
- executeCallScenarioButtonClick(action: any, params: any, afterCallback: Function): Promise<void>;
157
- setParentId(id: string): void;
158
- parent_id: string | undefined;
159
+ getAndParseMenuMeta(): Promise<void>;
160
+ excuteOpenPopupButtonClick(action: any, record: any, closeCallback: any): Promise<void>;
161
+ executeCallScenarioButtonClick(action: any, params: any, afterCallback: any): Promise<void>;
162
+ setParentId(id: any): void;
159
163
  };
160
164
  /**
161
165
  * @description 스타일 정의
162
166
  **************************
163
167
  * @returns {Array} 스타일
164
168
  */
165
- get styles(): any[];
169
+ get styles(): import("lit").CSSResult[];
166
170
  /**
167
171
  * @description 프로퍼티 정의
168
172
  ****************************
169
173
  * @returns {Object} 프로퍼티
170
174
  */
171
- get properties(): any;
175
+ get properties(): {
176
+ /**
177
+ * @description 그리드 구성 정보
178
+ *****************************
179
+ * @type {Object}
180
+ */
181
+ gridConfig: ObjectConstructor;
182
+ /**
183
+ * @description 그리드 컬럼 구성 정보
184
+ *********************************
185
+ * @type {Array}
186
+ */
187
+ gridColumnConfig: ArrayConstructor;
188
+ /**
189
+ * @description 검색 폼 구성 정보
190
+ *******************************
191
+ * @type {Array}
192
+ */
193
+ searchConfig: ArrayConstructor;
194
+ /**
195
+ * @description 화면에서 사용되는 서치 폼 : grist, filter, not
196
+ *********************************************************
197
+ * @type {String}
198
+ */
199
+ searchFormElement: StringConstructor;
200
+ /**
201
+ * @description 메뉴 메타 정보로 부터 추출한 후 그리스트를 위해 설정 정보 구성
202
+ *****************************************************************
203
+ * @type {Object}
204
+ */
205
+ gristConfigSet: ObjectConstructor;
206
+ /**
207
+ * @description 필터 폼 사용 여부
208
+ *****************************
209
+ * @type {Boolean}
210
+ */
211
+ useFilterForm: BooleanConstructor;
212
+ /**
213
+ * @description 모바일 기기에서 그리드 모드 : GRID, LIST, CARD
214
+ *********************************************************
215
+ * @type {String}
216
+ */
217
+ gridMobileMode: StringConstructor;
218
+ /**
219
+ * @description 데스크탑에서 그리드 모드 : GRID, LIST, CARD
220
+ ******************************************************
221
+ * @type {String}
222
+ */
223
+ gridDeskMode: StringConstructor;
224
+ /**
225
+ * @description 그리드 뷰 모드 : GRID, LIST, CARD
226
+ **********************************************
227
+ * @type {Array}
228
+ */
229
+ gridViewOptions: ArrayConstructor;
230
+ /**
231
+ * @description 현재 그리드 뷰 모드 : GRID, LIST, CARD
232
+ ***************************************************
233
+ * @type {String}
234
+ */
235
+ gridMode: StringConstructor;
236
+ /**
237
+ * @description Infinity Page 사용 여부
238
+ **************************************
239
+ * @type {Boolean}
240
+ */
241
+ infinityPage: BooleanConstructor;
242
+ /**
243
+ * @description 그리스트 엘리먼트 ID
244
+ ********************************
245
+ * @type {String}
246
+ */
247
+ gristId: StringConstructor;
248
+ /**
249
+ * @description 필터 폼 엘리먼트 ID
250
+ ********************************
251
+ * @type {String}
252
+ */
253
+ filterFormId: StringConstructor;
254
+ /**
255
+ * @description detail 엘리먼트
256
+ ******************************
257
+ * @type {Object}
258
+ */
259
+ detailElement: ObjectConstructor;
260
+ };
172
261
  };
@@ -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-master-detail-mixin.js","sourceRoot":"","sources":["../../client/mixin/meta-master-detail-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 * @description 메뉴 메타 정보를 이용해 마스터 - 디테일 그리드 화면 구현\n ************************************************************\n * @param {Object} MetaButtonMixin\n * @returns\n */\nexport const MetaMasterDetailMixin = baseElement =>\n class extends MetaButtonMixin(baseElement) {\n /**\n * @description 스타일 정의\n **************************\n * @returns {Array} 스타일\n */\n static get styles() {\n return MetaApi.getBasicMasterDetailStyles()\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 * @description detail 엘리먼트\n ******************************\n * @type {Object}\n */\n detailElement: Object\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 컨텍스트\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 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.parseGristConfigs()\n }\n\n if (super.pageInitialized) {\n await super.pageInitialized()\n }\n }\n\n async pageUpdated(changes, lifecycle, before) {\n if (this.active) {\n /* this page is activated */\n if (this.gridConfig.grid_refresh_when_page_activated) {\n this.fetch()\n }\n } else {\n /* this page is deactivated */\n }\n }\n\n /**\n * @override render\n ********************\n */\n render() {\n return MetaApi.getMasterDetailHtml(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 // 그리드 설정 셋 파싱\n this.gristConfigSet = await MetaApi.parseGridConfigSet(this)\n\n // 마스터 그리드에 handlers > focus 이벤트를 등록\n this.gristConfigSet.rows.handlers = this.gristConfigSet.rows.handlers || {}\n let gristRowHandler = this.gristConfigSet.rows.handlers\n gristRowHandler.focus = this.masterGridFocusEventHandler.bind(this)\n\n // 마스터 그리드 옵션 처리\n this.masterOption = JSON.parse(this.etcConfig.master_option || '{}')\n let { split_filter = false } = this.masterOption\n this.useMasterFilterForm = this.useFilterForm === true && split_filter === false ? true : false\n this.useFilterForm = split_filter === true ? true : false\n\n // 필터 폼 사용을 하지 않는다면\n if (this.useFilterForm == false) {\n // 검색 조건 초기값 설정이 있다면 검색 초기값을 등록해놓는다.\n this.searchFieldValues = []\n\n // 검색 조건이 있는 컬럼 정보로 부터 그리드의 검색 조건 정보를 구성\n this.searchFields = this.gristConfigSet.columns\n .filter(x => x.filter)\n .map(x => {\n // 검색 조건\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 // 검색 조건 초기값이 있다면 설정\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 /**\n * @descrtiption 마스터 그리드에 대한 포커스 이벤트 핸들러 정의\n *****************************************************\n * @param {Array} columns\n * @param {Object} data\n * @param {Object} column\n * @param {Object} record\n * @param {Number} rowIndex\n */\n masterGridFocusEventHandler(columns, data, column, record, rowIndex) {\n if (record.id && this.detailElement) {\n this.detailElement.setParentId(record.id)\n }\n }\n\n /********************************************************************\n * C R U D Functions\n ********************************************************************/\n\n /**\n * @descrtiption 데이터 조회\n **************************\n */\n async fetch() {\n await this.grist.fetch()\n }\n\n /**\n * @descrtiption 데이터 조회 전 액션\n ********************************\n */\n async beforeFetch({ page = 0, limit = 0, sortings = [], filters = [] }) {\n if (this.detailElement && this.detailElement.clear) {\n await this.detailElement.clear()\n }\n\n return true\n }\n\n /**\n * @descrtiption 저장 처리\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 /**\n * @descrtiption id 리스트로 데이터 조회\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 /**\n * @descrtiption 삭제 처리\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 /**\n * @descrtiption 익스포트 처리\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 /**\n * @descrtiption 임포트 처리\n **************************\n */\n async import() {\n // TODO\n }\n\n /**\n * @descrtiption 그리드 데이터 리턴\n *******************************\n * @returns {Object}\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 return {\n main: records,\n detail: this.detailElement.getData()\n }\n }\n }\n"]}
1
+ {"version":3,"file":"meta-master-detail-mixin.js","sourceRoot":"","sources":["../../client/mixin/meta-master-detail-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 * @description 메뉴 메타 정보를 이용해 마스터 - 디테일 그리드 화면 구현\n ************************************************************\n * @param {Object} MetaButtonMixin\n * @returns\n */\nexport const MetaMasterDetailMixin = baseElement =>\n class extends MetaButtonMixin(baseElement) {\n /**\n * @description 스타일 정의\n **************************\n * @returns {Array} 스타일\n */\n static get styles() {\n return MetaApi.getBasicMasterDetailStyles()\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 * @description detail 엘리먼트\n ******************************\n * @type {Object}\n */\n detailElement: Object\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 컨텍스트\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 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.parseGristConfigs()\n }\n\n if (super.pageInitialized) {\n await super.pageInitialized()\n }\n }\n\n async pageUpdated(changes, lifecycle, before) {\n if (this.active) {\n /* this page is activated */\n if (this.gridConfig.grid_refresh_when_page_activated) {\n this.fetch()\n }\n } else {\n /* this page is deactivated */\n }\n }\n\n /**\n * @override render\n ********************\n */\n render() {\n return MetaApi.getMasterDetailHtml(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 // 그리드 설정 셋 파싱\n this.gristConfigSet = await MetaApi.parseGridConfigSet(this)\n\n // 마스터 그리드에 handlers > focus 이벤트를 등록\n this.gristConfigSet.rows.handlers = this.gristConfigSet.rows.handlers || {}\n let gristRowHandler = this.gristConfigSet.rows.handlers\n gristRowHandler.focus = this.masterGridFocusEventHandler.bind(this)\n\n // 마스터 그리드 옵션 처리\n this.masterOption = JSON.parse(this.etcConfig.master_option || '{}')\n let { split_filter = false } = this.masterOption\n this.useMasterFilterForm = this.useFilterForm === true && split_filter === false ? true : false\n this.useFilterForm = split_filter === true ? true : false\n\n // 필터 폼 사용을 하지 않는다면\n if (this.useFilterForm == false) {\n // 검색 조건 초기값 설정이 있다면 검색 초기값을 등록해놓는다.\n this.searchFieldValues = []\n\n // 검색 조건이 있는 컬럼 정보로 부터 그리드의 검색 조건 정보를 구성\n this.searchFields = this.gristConfigSet.columns\n .filter(x => x.filter)\n .map(x => {\n // 검색 조건\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 // 검색 조건 초기값이 있다면 설정\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 /**\n * @descrtiption 마스터 그리드에 대한 포커스 이벤트 핸들러 정의\n *****************************************************\n * @param {Array} columns\n * @param {Object} data\n * @param {Object} column\n * @param {Object} record\n * @param {Number} rowIndex\n */\n masterGridFocusEventHandler(columns, data, column, record, rowIndex) {\n if (record.id && this.detailElement) {\n this.detailElement.setParentId(record.id)\n }\n }\n\n /********************************************************************\n * C R U D Functions\n ********************************************************************/\n\n /**\n * @descrtiption 데이터 조회\n **************************\n */\n async fetch() {\n await this.grist.fetch()\n }\n\n /**\n * @descrtiption 데이터 조회 전 액션\n ********************************\n */\n async beforeFetch({ page = 0, limit = 0, sortings = [], filters = [] }) {\n if (this.detailElement && this.detailElement.clear) {\n await this.detailElement.clear()\n }\n\n return true\n }\n\n /**\n * @descrtiption 저장 처리\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 /**\n * @descrtiption id 리스트로 데이터 조회\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 /**\n * @descrtiption 삭제 처리\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 /**\n * @descrtiption 익스포트 처리\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 /**\n * @descrtiption 임포트 처리\n **************************\n */\n async import() {\n // TODO\n }\n\n /**\n * @descrtiption 그리드 데이터 리턴\n *******************************\n * @returns {Object}\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 return {\n main: records,\n detail: this.detailElement.getData()\n }\n }\n }\n"]}