@things-factory/meta-ui 7.0.1-alpha.31 → 7.0.1-alpha.34

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 (53) hide show
  1. package/client/bootstrap.ts +1 -1
  2. package/client/component/filter/filter-form-meta-code-select.ts +99 -0
  3. package/client/component/filter/filter-form-meta-object-select.ts +104 -0
  4. package/client/component/filter/filter-grist-meta-code-select.ts +97 -0
  5. package/client/component/filter/filter-grist-meta-object-select.ts +102 -0
  6. package/client/component/popup/code-input-editor-popup.js +1 -1
  7. package/client/component/popup/{meta-object-selector-popup.js → meta-object-selector-popup.ts} +73 -46
  8. package/client/component/popup/{record-based-code-editor-popup.js → record-based-code-editor-popup.ts} +19 -18
  9. package/client/utils/meta-api.js +13 -1
  10. package/client/utils/meta-ui-util.js +21 -7
  11. package/client/utils/service-util.js +39 -3
  12. package/client/utils/{terms-util.js → terms-util.ts} +13 -13
  13. package/dist-client/bootstrap.js +1 -1
  14. package/dist-client/bootstrap.js.map +1 -1
  15. package/dist-client/component/filter/filter-form-meta-code-select.d.ts +4 -1
  16. package/dist-client/component/filter/filter-form-meta-code-select.js +22 -19
  17. package/dist-client/component/filter/filter-form-meta-code-select.js.map +1 -1
  18. package/dist-client/component/filter/filter-form-meta-object-select.d.ts +4 -1
  19. package/dist-client/component/filter/filter-form-meta-object-select.js +28 -20
  20. package/dist-client/component/filter/filter-form-meta-object-select.js.map +1 -1
  21. package/dist-client/component/filter/filter-grist-meta-code-select.d.ts +3 -1
  22. package/dist-client/component/filter/filter-grist-meta-code-select.js +20 -19
  23. package/dist-client/component/filter/filter-grist-meta-code-select.js.map +1 -1
  24. package/dist-client/component/filter/filter-grist-meta-object-select.d.ts +3 -1
  25. package/dist-client/component/filter/filter-grist-meta-object-select.js +26 -20
  26. package/dist-client/component/filter/filter-grist-meta-object-select.js.map +1 -1
  27. package/dist-client/component/popup/code-input-editor-popup.js +1 -1
  28. package/dist-client/component/popup/code-input-editor-popup.js.map +1 -1
  29. package/dist-client/component/popup/meta-object-selector-popup.d.ts +27 -22
  30. package/dist-client/component/popup/meta-object-selector-popup.js +76 -47
  31. package/dist-client/component/popup/meta-object-selector-popup.js.map +1 -1
  32. package/dist-client/component/popup/record-based-code-editor-popup.d.ts +10 -11
  33. package/dist-client/component/popup/record-based-code-editor-popup.js +59 -17
  34. package/dist-client/component/popup/record-based-code-editor-popup.js.map +1 -1
  35. package/dist-client/pages/history/history-copy-list-popup.d.ts +1 -1
  36. package/dist-client/pages/history/history-json-list-popup.d.ts +1 -1
  37. package/dist-client/tsconfig.tsbuildinfo +1 -1
  38. package/dist-client/utils/meta-api.d.ts +11 -2
  39. package/dist-client/utils/meta-api.js +12 -1
  40. package/dist-client/utils/meta-api.js.map +1 -1
  41. package/dist-client/utils/meta-ui-util.js +18 -7
  42. package/dist-client/utils/meta-ui-util.js.map +1 -1
  43. package/dist-client/utils/service-util.d.ts +11 -1
  44. package/dist-client/utils/service-util.js +37 -3
  45. package/dist-client/utils/service-util.js.map +1 -1
  46. package/dist-client/utils/terms-util.d.ts +7 -7
  47. package/dist-client/utils/terms-util.js +4 -4
  48. package/dist-client/utils/terms-util.js.map +1 -1
  49. package/package.json +9 -8
  50. package/client/component/filter/filter-form-meta-code-select.js +0 -94
  51. package/client/component/filter/filter-form-meta-object-select.js +0 -94
  52. package/client/component/filter/filter-grist-meta-code-select.js +0 -95
  53. package/client/component/filter/filter-grist-meta-object-select.js +0 -95
@@ -1,16 +1,21 @@
1
1
  import '@material/web/icon/icon.js'
2
+ import '@operato/input/ox-input-code.js'
2
3
 
3
- import { css, html, LitElement } from 'lit'
4
+ import { css, html, LitElement, PropertyValues } from 'lit'
5
+ import { customElement, query, state } from 'lit/decorators.js'
6
+ import { OxInputCode } from '@operato/input'
7
+ import { closePopup } from '@operato/popup'
4
8
  import { CommonGristStyles, ButtonContainerStyles } from '@operato/styles'
9
+
5
10
  import { TermsUtil } from '../../utils/terms-util'
6
11
  import { MetaApi } from '../../utils/meta-api'
7
12
  import { ServiceUtil } from '../../utils/service-util'
8
- import '@operato/input/ox-input-code.js'
9
- import { closePopup } from '@operato/popup'
10
13
 
11
14
  /**
12
15
  * 레코드 기반 코드 편집기 팝업
13
16
  */
17
+
18
+ @customElement('record-based-code-editor-popup')
14
19
  export class RecordBasedCodeEditorPopup extends LitElement {
15
20
  static styles = [
16
21
  CommonGristStyles,
@@ -34,6 +39,13 @@ export class RecordBasedCodeEditorPopup extends LitElement {
34
39
  `
35
40
  ]
36
41
 
42
+ @state() private config?: any
43
+ @state() private record?: any
44
+ @state() private value?: any
45
+ @state() private codeValue?: any
46
+
47
+ @query('ox-input-code') private codeEditor!: OxInputCode
48
+
37
49
  /**
38
50
  * 그리드 버튼 (grid-custom) 선택시 코드 편집기 팝업을 띄우는 버튼 로직
39
51
  {
@@ -61,7 +73,7 @@ export class RecordBasedCodeEditorPopup extends LitElement {
61
73
  this.value = this.record[this.config.value_field] ? this.record[this.config.value_field] : ''
62
74
 
63
75
  if (typeof this.value === 'object') {
64
- this.codeValue = JSON.stringify(this.value, 0, 2)
76
+ this.codeValue = JSON.stringify(this.value, null, 2)
65
77
  } else {
66
78
  this.codeValue = this.value
67
79
  }
@@ -69,8 +81,8 @@ export class RecordBasedCodeEditorPopup extends LitElement {
69
81
  await super.connectedCallback()
70
82
  }
71
83
 
72
- async firstUpdated() {
73
- await super.firstUpdated()
84
+ async firstUpdated(changes: PropertyValues<this>) {
85
+ await super.firstUpdated(changes)
74
86
  }
75
87
 
76
88
  render() {
@@ -95,15 +107,6 @@ export class RecordBasedCodeEditorPopup extends LitElement {
95
107
  }
96
108
  }
97
109
 
98
- /**
99
- * @description 코드편집기 엘리먼트
100
- ***************************
101
- * @returns
102
- */
103
- get codeEditor() {
104
- return this.shadowRoot.querySelector('ox-input-code')
105
- }
106
-
107
110
  /**
108
111
  * @description 저장
109
112
  ***************************
@@ -111,7 +114,7 @@ export class RecordBasedCodeEditorPopup extends LitElement {
111
114
  */
112
115
  async clickSave(e) {
113
116
  if (this.codeValue === this.codeEditor.value) {
114
- MetaApi.showToast('info', TermsUtil.tText('NOTHING_CHANGED'))
117
+ MetaApi.showToast('info', String(TermsUtil.tText('NOTHING_CHANGED')))
115
118
  } else {
116
119
  let saveAction = this.config.save_action
117
120
  let saveFuncName = saveAction.func_name
@@ -133,5 +136,3 @@ export class RecordBasedCodeEditorPopup extends LitElement {
133
136
  closePopup(this)
134
137
  }
135
138
  }
136
-
137
- customElements.define('record-based-code-editor-popup', RecordBasedCodeEditorPopup)
@@ -252,6 +252,18 @@ export class MetaApi {
252
252
  return await ServiceUtil.exportableData(isElement, exportTitle, grist)
253
253
  }
254
254
 
255
+ /**
256
+ * @description 서버 사이드를 통해 그리드 데이터 내보내기
257
+ ************************************************
258
+ * @param {String} exportFileName 내보내기 파일명
259
+ * @param {String} exportQueryName 서버 사이드 GraphQL 쿼리명
260
+ * @param {Grist} grist 그리드 오브젝트
261
+ * @returns {Object} { header: headerSetting, data: data } or Not
262
+ */
263
+ static async exportableDataByServer(exportFileName, exportQueryName, grist) {
264
+ return await ServiceUtil.exportableDataByServer(exportFileName, exportQueryName, grist)
265
+ }
266
+
255
267
  /**
256
268
  * @description 데이터 리스트 페이지네이션 조회
257
269
  ******************************************
@@ -261,7 +273,7 @@ export class MetaApi {
261
273
  * @param {Number} page 현재 페이지
262
274
  * @param {Number} limit 페이지 당 표시할 레코드 건수
263
275
  * @param {String} selectFields 조회할 필드 리스트
264
- * @returns {Array} 조회 결과 { records : [{,...}], total : 100 }
276
+ * @returns {FetchResult} 조회 결과 { records : [{,...}], total : 100 }
265
277
  */
266
278
  static async searchByPagination(queryFunc, filters, sortings, page, limit, selectFields) {
267
279
  return await ServiceUtil.searchByPagination(queryFunc, filters, sortings, page, limit, selectFields)
@@ -179,11 +179,12 @@ export class MetaUiUtil {
179
179
  * @returns {Object} 메뉴 메타 정보
180
180
  */
181
181
  static async getMenuMeta(pageView) {
182
+ // 1. 라우팅 추출 및 메뉴 메타 정보 조회
182
183
  let currentRouting = pageView.isPage ? UiUtil.currentRouting() : pageView.route_name
183
184
  pageView.currentRouting = currentRouting
184
185
  let menuMetaData = await MetaUiUtil.findMenuMetaByRouting(pageView, currentRouting)
185
186
 
186
- // Activity 여부에 따라 버튼 / 검색 삭제
187
+ // 2. Activity 여부에 따라 버튼 / 검색 삭제
187
188
  if (pageView.is_activity === true) {
188
189
  menuMetaData.grid.option.grid_refresh_when_page_activated = false
189
190
  menuMetaData.grid.option.use_row_checker = false
@@ -193,7 +194,7 @@ export class MetaUiUtil {
193
194
  menuMetaData.button = menuMetaData.button.filter(x => x.name == 'add')
194
195
  }
195
196
 
196
- // 화면이 읽기 전용인 경우
197
+ // 3. 화면이 읽기 전용인 경우 그리드 Configuration 처리
197
198
  if (pageView.is_readonly === true) {
198
199
  menuMetaData.grid_column.forEach(x => {
199
200
  x.editable = false
@@ -201,12 +202,12 @@ export class MetaUiUtil {
201
202
  menuMetaData.button = menuMetaData.button.filter(x => x.name != 'add')
202
203
  }
203
204
 
204
- // 필터 폼 사용 여부 강제 설정
205
+ // 4. 필터 폼 사용 여부 강제 설정
205
206
  if (pageView.use_filter_form === false) {
206
207
  menuMetaData.grid.use_filter_form = false
207
208
  }
208
209
 
209
- // 필드 변경 이벤트 처리자 설정
210
+ // 5. 필드 변경 이벤트 처리자 설정
210
211
  menuMetaData.grid_column
211
212
  .filter(x => x.change_event_handler)
212
213
  .forEach(x => {
@@ -214,7 +215,7 @@ export class MetaUiUtil {
214
215
  pageView.fieldChangeHandlers[x.name] = x.change_event_handler
215
216
  })
216
217
 
217
- // object, resource-object -> meta-object-selector, resource-code-selector -> meta-code-selector
218
+ // 6. 그리드 타입 통합 처리 : object, resource-object -> meta-object-selector, resource-code-selector -> meta-code-selector
218
219
  menuMetaData.grid_column.forEach(x => {
219
220
  if (['resource-object', 'object'].includes(x.type)) {
220
221
  x.type = 'meta-object-selector'
@@ -223,6 +224,17 @@ export class MetaUiUtil {
223
224
  }
224
225
  })
225
226
 
227
+ // 7. 검색 필드의 검색 Operator가 in인 경우 디폴트 값을 배열로 변경
228
+ if(menuMetaData.search && menuMetaData.search.length > 0) {
229
+ menuMetaData.search.forEach(c => {
230
+ let value = c.value
231
+ if(c.operator == 'in' && value.indexOf(',') > 0) {
232
+ c.value = value.split(',')
233
+ }
234
+ })
235
+ }
236
+
237
+ // 8. 메뉴 메타 정보 리턴
226
238
  return menuMetaData
227
239
  }
228
240
 
@@ -990,7 +1002,7 @@ export class MetaUiUtil {
990
1002
  let defValue = col.filter.value
991
1003
  let dateKeywords = ['today', 'year', 'month', 'date', 'hour', 'min', 'sec']
992
1004
 
993
- if (defValue && dateKeywords.filter(x => defValue.startsWith(x)).length > 0) {
1005
+ if (defValue && typeof defValue == 'string' && dateKeywords.filter(x => defValue.startsWith(x)).length > 0) {
994
1006
  let defRes = []
995
1007
  let dateFormat = { date: 'YYYY-MM-DD', datetime: 'YYYY-MM-DD HH:mm:ss' }
996
1008
  let durationType = { today: 'day', year: 'year', month: 'month', date: 'day', hour: 'hour', min: 'minute', sec: 'second' }
@@ -1001,11 +1013,13 @@ export class MetaUiUtil {
1001
1013
 
1002
1014
  if (dateKeywords.includes(x)) {
1003
1015
  defRes.push(todayMoment.startOf(durationType[x]).format(dateFormat[col.type]))
1016
+
1004
1017
  } else if (x.includes('-')) {
1005
1018
  let wordSplits = x.split('-')
1006
1019
  let key = wordSplits[0]
1007
1020
  let value = wordSplits[1]
1008
1021
  defRes.push(todayMoment.subtract(value, durationType[key]).startOf(durationType[key]).format(dateFormat[col.type]))
1022
+
1009
1023
  } else if (x.includes('+')) {
1010
1024
  let wordSplits = x.split('+')
1011
1025
  let key = wordSplits[0]
@@ -1560,7 +1574,7 @@ export class MetaUiUtil {
1560
1574
  */
1561
1575
  static async commonButtonCallService(pageView, action, filterParam, records) {
1562
1576
  // Graphql 서비스 호출
1563
- let response = await ServiceUtil.callService(action, filterParam, records)
1577
+ let response = await ServiceUtil.callService(pageView, action, filterParam, records)
1564
1578
 
1565
1579
  // 후 처리 액션 처리
1566
1580
  if (!response.errors && action.after && ValueUtil.isNotEmpty(action.after)) {
@@ -497,6 +497,40 @@ export class ServiceUtil {
497
497
  }
498
498
  }
499
499
 
500
+ /**
501
+ * @description 서버 사이드를 거쳐 그리드 데이터 내보내기
502
+ ************************************************
503
+ * @param {String} exportFileName 그리드 내보내기 용 타이틀 (파일명)
504
+ * @param {String} exportQueryName 서버 사이드 GraphQL 쿼리명
505
+ * @param {Grist} grist 그리드 오브젝트
506
+ * @returns {Object} { header: headerSetting, data: data } or Not
507
+ */
508
+ static async exportableDataByServer(exportFileName, exportQueryName, grist) {
509
+ // 1. 내보내기 graphQL 요청
510
+ const response = await client.query({
511
+ query: gql`
512
+ query Query($filters: [Filter!]!) {
513
+ responses: ${exportQueryName}(filters: $filters)
514
+ }
515
+ `,
516
+ variables: {
517
+ filters: grist.filters
518
+ }
519
+ })
520
+
521
+ // 2. 응답 처리
522
+ const data = response.data.responses
523
+ const bufferData = Buffer.from(data, 'base64')
524
+ const blob = new Blob([bufferData], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
525
+
526
+ const a = document.createElement('a')
527
+ a.href = window.URL.createObjectURL(blob)
528
+ a.download = `${exportFileName}.xlsx`
529
+ document.body.appendChild(a)
530
+ a.click()
531
+ a.remove()
532
+ }
533
+
500
534
  /**
501
535
  * @description 데이터 리스트 페이지네이션 조회
502
536
  ****************************************
@@ -865,14 +899,17 @@ export class ServiceUtil {
865
899
  /**
866
900
  * @description Graphql 서비스 호출
867
901
  ***********************************
902
+ * @param {Object} pageView 호출 페이지 뷰
868
903
  * @param {Object} action 서비스 설정 정보
869
904
  * @param {Object} filterParam 필터용 파라미터
870
905
  * @param {Object} dataParams 파라미터
871
906
  * @returns {Object} 서비스 호출 결과
872
907
  */
873
- static async callService(action, filterParam, dataParams) {
908
+ static async callService(pageView, action, filterParam, dataParams) {
874
909
  if (action.graphql_type == 'query') {
875
910
  return await ServiceUtil.callQueryService(action, filterParam, dataParams)
911
+ } else if(action.graphql_type == 'export') {
912
+ return await ServiceUtil.exportableDataByServer(action.export_file_name, action.query_name, pageView.grist)
876
913
  } else {
877
914
  return await ServiceUtil.callMutationService(action, filterParam, dataParams)
878
915
  }
@@ -977,9 +1014,8 @@ export class ServiceUtil {
977
1014
  throw new Error('mutation type not found!')
978
1015
  }
979
1016
 
980
- // 1. GraphQL 설정 추출
1017
+ // 2. GraphQL 설정 추출
981
1018
  let data = action.data
982
- // 2. 서비스 호출 파라미터
983
1019
  let mutationParams = Array.isArray(dataParams) ? [] : {}
984
1020
 
985
1021
  if (data) {
@@ -14,8 +14,8 @@ export class TermsUtil {
14
14
  * @param {Object} params
15
15
  * @returns 번역된 라벨 (필드) 명
16
16
  */
17
- static tLabel(labelName, params) {
18
- let labelValue = TermsUtil.translate('label', labelName, params, null)
17
+ static tLabel(labelName: string, params?: any) {
18
+ let labelValue = TermsUtil.translate('label', labelName, params)
19
19
  return labelValue ? labelValue : TermsUtil.translate('field', labelName, params, labelName)
20
20
  }
21
21
 
@@ -26,8 +26,8 @@ export class TermsUtil {
26
26
  * @param {Object} params
27
27
  * @returns 번역된 필드 명
28
28
  */
29
- static tField(fieldName, params) {
30
- let fieldValue = TermsUtil.translate('field', fieldName, params, null)
29
+ static tField(fieldName: string, params?: any) {
30
+ let fieldValue = TermsUtil.translate('field', fieldName, params)
31
31
  return fieldValue ? fieldValue : TermsUtil.translate('field', fieldName, params, fieldName)
32
32
  }
33
33
 
@@ -37,7 +37,7 @@ export class TermsUtil {
37
37
  * @param {String} buttonName
38
38
  * @returns 번역된 버튼 명
39
39
  */
40
- static tButton(buttonName) {
40
+ static tButton(buttonName: string) {
41
41
  return TermsUtil.translate('button', buttonName, null, buttonName)
42
42
  }
43
43
 
@@ -48,8 +48,8 @@ export class TermsUtil {
48
48
  * @param {Object} params
49
49
  * @returns 번역된 타이틀 명
50
50
  */
51
- static tTitle(titleName, params) {
52
- let titleValue = TermsUtil.translate('title', titleName, params, null)
51
+ static tTitle(titleName: string, params?: any) {
52
+ let titleValue = TermsUtil.translate('title', titleName, params)
53
53
  return titleValue ? titleValue : TermsUtil.translate('menu', titleName, params, titleName)
54
54
  }
55
55
 
@@ -59,8 +59,8 @@ export class TermsUtil {
59
59
  * @param {String} menuName
60
60
  * @returns 번역된 메뉴 명
61
61
  */
62
- static tMenu(menuName) {
63
- let menuValue = TermsUtil.translate('menu', menuName, null, null)
62
+ static tMenu(menuName: string) {
63
+ let menuValue = TermsUtil.translate('menu', menuName, null)
64
64
  return menuValue ? menuValue : TermsUtil.translate('title', menuName, null, menuName)
65
65
  }
66
66
 
@@ -71,7 +71,7 @@ export class TermsUtil {
71
71
  * @param {Object} params
72
72
  * @returns 번역된 텍스트 값
73
73
  */
74
- static tText(textName, params) {
74
+ static tText(textName: string, params?: any) {
75
75
  return TermsUtil.translate('text', textName, params, textName)
76
76
  }
77
77
 
@@ -82,7 +82,7 @@ export class TermsUtil {
82
82
  * @param {Object} params
83
83
  * @returns 번역된 에러 메시지
84
84
  */
85
- static tError(errorName, params) {
85
+ static tError(errorName: string, params?: any) {
86
86
  return TermsUtil.translate('error', errorName, params, errorName)
87
87
  }
88
88
 
@@ -95,7 +95,7 @@ export class TermsUtil {
95
95
  * @param {String} defaultValue
96
96
  * @returns termKey 다국어 변환 값
97
97
  */
98
- static translate(termCategory, termName, parameters, defaultValue) {
98
+ static translate(termCategory: string, termName: string, parameters?: any, defaultValue?: string) {
99
99
  return i18next.t(`${termCategory}.${termName}`, {
100
100
  ...parameters,
101
101
  defaultValue: defaultValue || termName
@@ -110,7 +110,7 @@ export class TermsUtil {
110
110
  * @param {String} defaultValue
111
111
  * @returns termKey 다국어 변환 값
112
112
  */
113
- static t(termKey, parameters, defaultValue) {
113
+ static t(termKey: string, parameters: any, defaultValue: string) {
114
114
  return i18next.t(termKey, {
115
115
  ...parameters,
116
116
  defaultValue: defaultValue || termKey
@@ -4,7 +4,7 @@ import { navigate, store } from '@operato/shell';
4
4
  import { i18next } from '@operato/i18n';
5
5
  import { registerEditor as gristColumnRegisterEditor, registerRenderer as gristColumnRegisterRenderer, registerFilterRenderer as gristRegisterFilterRenderer } from '@operato/data-grist';
6
6
  import { registerFilterRenderer as formRegisterFilterRenderer } from '@operato/form';
7
- import { auth } from '@things-factory/auth-base/dist-client/auth.js';
7
+ import { auth } from '@things-factory/auth-base/dist-client';
8
8
  import { ADD_MORENDA } from '@things-factory/more-base/client';
9
9
  import { updateMenuTemplate } from './actions/main';
10
10
  import metaUI from './reducers/main';
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { html } from 'lit-html'\n\nimport { navigate, store } from '@operato/shell'\nimport { i18next } from '@operato/i18n'\nimport {\n registerEditor as gristColumnRegisterEditor,\n registerRenderer as gristColumnRegisterRenderer,\n registerFilterRenderer as gristRegisterFilterRenderer\n} from '@operato/data-grist'\nimport { registerFilterRenderer as formRegisterFilterRenderer } from '@operato/form'\n\nimport { auth } from '@things-factory/auth-base/dist-client/auth.js'\nimport { ADD_MORENDA } from '@things-factory/more-base/client'\n\nimport { updateMenuTemplate } from './actions/main'\nimport metaUI from './reducers/main'\nimport { GristDefaultValue } from './utils/grist-default-value'\nimport { MENUS } from './dynamic-menus'\n\n/** GRIST Renderer Compoment */\nimport { GristRendererMetaCodeSelector } from './component/grist/renderer/grist-renderer-meta-code-selector'\nimport { GristRendererMetaObjectSelector } from './component/grist/renderer/grist-renderer-meta-object-selector'\nimport { GristRendererCodeInput } from './component/grist/renderer/grist-renderer-code-input'\n\n/** GRIST Editor Component */\nimport { GristEditorMetaCodeSelector } from './component/grist/editor/grist-editor-meta-code-selector'\nimport { GristEditorMetaObjectSelector } from './component/grist/editor/grist-editor-meta-object-selector'\nimport { GristEditorCodeInput } from './component/grist/editor/grist-editor-code-input'\n\n/** Grist Filter Compoment */\nimport { FilterGristMetaCodeSelect } from './component/filter/filter-grist-meta-code-select'\nimport { FilterGristMetaObjectSelect } from './component/filter/filter-grist-meta-object-select'\n\n/** Filter Form Component */\nimport { FilterFormMetaCodeSelect } from './component/filter/filter-form-meta-code-select'\nimport { FilterFormMetaObjectSelect } from './component/filter/filter-form-meta-object-select'\n\nimport './pages/personalize/personal-column-selector'\nimport './pages/history/history-copy-list-popup'\nimport './pages/history/history-json-list-popup'\n\nimport './pages/activity/meta-activity-writer-element'\nimport './pages/activity/meta-activity-viewer-element'\n\nexport default async function bootstrap(module) {\n // GRIST Renderer\n gristColumnRegisterRenderer('meta-code-selector', GristRendererMetaCodeSelector)\n gristColumnRegisterRenderer('meta-object-selector', GristRendererMetaObjectSelector)\n gristColumnRegisterRenderer('code-input', GristRendererCodeInput)\n\n // GRIST Editor\n gristColumnRegisterEditor('meta-code-selector', GristEditorMetaCodeSelector)\n gristColumnRegisterEditor('meta-object-selector', GristEditorMetaObjectSelector)\n gristColumnRegisterEditor('code-input', GristEditorCodeInput)\n\n // Grist Filter Renderer\n gristRegisterFilterRenderer('meta-code-selector', [FilterGristMetaCodeSelect])\n gristRegisterFilterRenderer('meta-object-selector', [FilterGristMetaObjectSelect])\n\n // Filter Form Renderer\n formRegisterFilterRenderer('meta-code-selector', [FilterFormMetaCodeSelect])\n formRegisterFilterRenderer('meta-object-selector', [FilterFormMetaObjectSelect])\n\n // Grist Default Registry\n GristDefaultValue.registry()\n\n store.addReducers({\n metaUI\n })\n\n auth.on('profile', async ({ credential, domains, domain }) => {\n // 2. 메뉴 정보를 서버로 부터 받아서 적용\n const menuRoutes = await MENUS\n updateMenuTemplate(menuRoutes.menus)\n\n i18next.on('languageChanged', async () => {\n updateMenuTemplate(menuRoutes.menus)\n })\n\n // 3. 동적 메뉴 관리 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>auto_fix_high</md-icon>`,\n name: html`<ox-i18n msgid=\"title.dynamic_menu\"></ox-i18n>`,\n action: () => {\n navigate('dynamic-menu')\n }\n }\n })\n\n // 4. 엔티티 관리 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>filter_tilt_shift</md-icon>`,\n name: html`<ox-i18n msgid=\"title.entity\"></ox-i18n>`,\n action: () => {\n navigate('config-entity')\n }\n }\n })\n\n // 5. 용어 관리 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>speaker_notes</md-icon>`,\n name: html`<ox-i18n msgid=\"title.terminology\"></ox-i18n>`,\n action: () => {\n navigate('config-terminology')\n }\n }\n })\n\n // 6. 공통 코드 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>code</md-icon>`,\n name: html`<ox-i18n msgid=\"title.code_management\"></ox-i18n>`,\n action: () => {\n navigate('codes')\n }\n }\n })\n\n // 7. 업무정의 리스트 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>business_center</md-icon>`,\n name: html`<ox-i18n msgid=\"title.meta_activity_list\"></ox-i18n>`,\n action: () => {\n navigate('meta-activity-list')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>margin</md-icon>`,\n name: html`<ox-i18n msgid=\"title.meta_activity_define\"></ox-i18n>`,\n action: () => {\n navigate('meta-activity-define')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>work</md-icon>`,\n name: html`<ox-i18n msgid=\"title.activity_list\"></ox-i18n>`,\n action: () => {\n navigate('activity-list')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html` <md-icon>dataset</md-icon> `,\n name: html` <ox-i18n msgid=\"text.attribute management\"></ox-i18n> `,\n action: () => {\n navigate('attributes')\n }\n }\n })\n })\n}\n"]}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { html } from 'lit-html'\n\nimport { navigate, store } from '@operato/shell'\nimport { i18next } from '@operato/i18n'\nimport {\n registerEditor as gristColumnRegisterEditor,\n registerRenderer as gristColumnRegisterRenderer,\n registerFilterRenderer as gristRegisterFilterRenderer\n} from '@operato/data-grist'\nimport { registerFilterRenderer as formRegisterFilterRenderer } from '@operato/form'\n\nimport { auth } from '@things-factory/auth-base/dist-client'\nimport { ADD_MORENDA } from '@things-factory/more-base/client'\n\nimport { updateMenuTemplate } from './actions/main'\nimport metaUI from './reducers/main'\nimport { GristDefaultValue } from './utils/grist-default-value'\nimport { MENUS } from './dynamic-menus'\n\n/** GRIST Renderer Compoment */\nimport { GristRendererMetaCodeSelector } from './component/grist/renderer/grist-renderer-meta-code-selector'\nimport { GristRendererMetaObjectSelector } from './component/grist/renderer/grist-renderer-meta-object-selector'\nimport { GristRendererCodeInput } from './component/grist/renderer/grist-renderer-code-input'\n\n/** GRIST Editor Component */\nimport { GristEditorMetaCodeSelector } from './component/grist/editor/grist-editor-meta-code-selector'\nimport { GristEditorMetaObjectSelector } from './component/grist/editor/grist-editor-meta-object-selector'\nimport { GristEditorCodeInput } from './component/grist/editor/grist-editor-code-input'\n\n/** Grist Filter Compoment */\nimport { FilterGristMetaCodeSelect } from './component/filter/filter-grist-meta-code-select'\nimport { FilterGristMetaObjectSelect } from './component/filter/filter-grist-meta-object-select'\n\n/** Filter Form Component */\nimport { FilterFormMetaCodeSelect } from './component/filter/filter-form-meta-code-select'\nimport { FilterFormMetaObjectSelect } from './component/filter/filter-form-meta-object-select'\n\nimport './pages/personalize/personal-column-selector'\nimport './pages/history/history-copy-list-popup'\nimport './pages/history/history-json-list-popup'\n\nimport './pages/activity/meta-activity-writer-element'\nimport './pages/activity/meta-activity-viewer-element'\n\nexport default async function bootstrap(module) {\n // GRIST Renderer\n gristColumnRegisterRenderer('meta-code-selector', GristRendererMetaCodeSelector)\n gristColumnRegisterRenderer('meta-object-selector', GristRendererMetaObjectSelector)\n gristColumnRegisterRenderer('code-input', GristRendererCodeInput)\n\n // GRIST Editor\n gristColumnRegisterEditor('meta-code-selector', GristEditorMetaCodeSelector)\n gristColumnRegisterEditor('meta-object-selector', GristEditorMetaObjectSelector)\n gristColumnRegisterEditor('code-input', GristEditorCodeInput)\n\n // Grist Filter Renderer\n gristRegisterFilterRenderer('meta-code-selector', [FilterGristMetaCodeSelect])\n gristRegisterFilterRenderer('meta-object-selector', [FilterGristMetaObjectSelect])\n\n // Filter Form Renderer\n formRegisterFilterRenderer('meta-code-selector', [FilterFormMetaCodeSelect])\n formRegisterFilterRenderer('meta-object-selector', [FilterFormMetaObjectSelect])\n\n // Grist Default Registry\n GristDefaultValue.registry()\n\n store.addReducers({\n metaUI\n })\n\n auth.on('profile', async ({ credential, domains, domain }) => {\n // 2. 메뉴 정보를 서버로 부터 받아서 적용\n const menuRoutes = await MENUS\n updateMenuTemplate(menuRoutes.menus)\n\n i18next.on('languageChanged', async () => {\n updateMenuTemplate(menuRoutes.menus)\n })\n\n // 3. 동적 메뉴 관리 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>auto_fix_high</md-icon>`,\n name: html`<ox-i18n msgid=\"title.dynamic_menu\"></ox-i18n>`,\n action: () => {\n navigate('dynamic-menu')\n }\n }\n })\n\n // 4. 엔티티 관리 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>filter_tilt_shift</md-icon>`,\n name: html`<ox-i18n msgid=\"title.entity\"></ox-i18n>`,\n action: () => {\n navigate('config-entity')\n }\n }\n })\n\n // 5. 용어 관리 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>speaker_notes</md-icon>`,\n name: html`<ox-i18n msgid=\"title.terminology\"></ox-i18n>`,\n action: () => {\n navigate('config-terminology')\n }\n }\n })\n\n // 6. 공통 코드 화면 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>code</md-icon>`,\n name: html`<ox-i18n msgid=\"title.code_management\"></ox-i18n>`,\n action: () => {\n navigate('codes')\n }\n }\n })\n\n // 7. 업무정의 리스트 추가\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>business_center</md-icon>`,\n name: html`<ox-i18n msgid=\"title.meta_activity_list\"></ox-i18n>`,\n action: () => {\n navigate('meta-activity-list')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>margin</md-icon>`,\n name: html`<ox-i18n msgid=\"title.meta_activity_define\"></ox-i18n>`,\n action: () => {\n navigate('meta-activity-define')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html`<md-icon>work</md-icon>`,\n name: html`<ox-i18n msgid=\"title.activity_list\"></ox-i18n>`,\n action: () => {\n navigate('activity-list')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html` <md-icon>dataset</md-icon> `,\n name: html` <ox-i18n msgid=\"text.attribute management\"></ox-i18n> `,\n action: () => {\n navigate('attributes')\n }\n }\n })\n })\n}\n"]}
@@ -1 +1,4 @@
1
- export function FilterFormMetaCodeSelect(filter: any, value: any, owner: any): import("lit-html").TemplateResult<1>;
1
+ import '@material/web/icon/icon.js';
2
+ import '../popup/meta-object-selector-popup';
3
+ import { FilterSelectRenderer } from '@operato/form';
4
+ export declare const FilterFormMetaCodeSelect: FilterSelectRenderer;
@@ -1,27 +1,22 @@
1
+ import '@material/web/icon/icon.js';
1
2
  import '../popup/meta-object-selector-popup';
2
3
  import { html } from 'lit-html';
3
4
  import { openPopup } from '@operato/layout';
4
5
  import { TermsUtil } from './../../utils/terms-util';
5
6
  function openMetaCodeSelector(filter, value, confirmCallback) {
6
- var template = html `
7
- <meta-object-selector-popup
8
- .value=${value}
9
- .options=${filter.options}
10
- .confirmCallback=${confirmCallback}
11
- ></meta-object-selector-popup>
12
- `;
7
+ var template = html ` <meta-object-selector-popup .value=${value} .options=${filter.options} .confirmCallback=${confirmCallback}> </meta-object-selector-popup> `;
13
8
  openPopup(template, {
14
9
  backdrop: true,
15
10
  size: 'large',
16
- title: filter.options.selectorName ? TermsUtil.tMenu(filter.options.selectorName) : TermsUtil.tTitle('select_item')
11
+ title: filter.options.selectorName ? String(TermsUtil.tMenu(filter.options.selectorName)) : String(TermsUtil.tTitle('select_item'))
17
12
  });
18
13
  }
19
14
  export const FilterFormMetaCodeSelect = (filter, value, owner) => {
20
- const options = filter.options;
21
- const codes = (options.codes && options.codes.length > 0) ? options.codes : undefined;
15
+ const options = filter.options || {};
16
+ const codes = options.codes && options.codes.length > 0 ? options.codes : undefined;
22
17
  const { operator = 'eq' } = filter;
23
- let hideText = value ? value : '';
24
- let text = value ? value : '';
18
+ const hiddenText = value ? value : '';
19
+ var text = value ? value : '';
25
20
  if (options.dispField && value && codes) {
26
21
  let dispCode = codes.filter(x => x.value == value);
27
22
  if (dispCode && dispCode.length > 0) {
@@ -30,29 +25,36 @@ export const FilterFormMetaCodeSelect = (filter, value, owner) => {
30
25
  }
31
26
  return operator === 'eq'
32
27
  ? html `
33
- <input name='${filter.name}' .value=${hideText} type="text" hidden></input>
28
+ <input name='${filter.name}' .value=${hiddenText} type="text" hidden></input>
34
29
  <input
35
30
  type="text"
36
31
  readonly
37
32
  name='${filter.name}_disp'
38
33
  .value=${text}
39
- @click=${(e) => {
34
+ @click=${e => {
40
35
  e.stopPropagation();
41
36
  const input = e.target;
42
- const confirmCallback = (selected) => {
37
+ const confirmCallback = selected => {
43
38
  let code = selected ? selected[options.codeField] : '';
44
39
  let disp = code;
45
40
  if (selected && options.dispField) {
46
- let fields = options.dispField.split(",");
41
+ let fields = options.dispField.split(',');
47
42
  disp = selected[fields[0]];
48
43
  if (fields.length > 1) {
49
- disp += `(${fields.splice(1).map(field => { return selected[field]; }).join(",")})`;
44
+ disp += `(${fields
45
+ .splice(1)
46
+ .map(field => {
47
+ return selected[field];
48
+ })
49
+ .join(',')})`;
50
50
  }
51
51
  }
52
52
  input.value = disp;
53
53
  let codeInput = owner.tagName.toLowerCase() == 'ox-grid-header'
54
- ? owner.renderRoot.querySelector(`[name="${filter.name}"]`)
55
- : owner.renderRoot.querySelector(`form [name="${filter.name}"]`);
54
+ ? //@ts-ignore owner element를 전제하지 않는 방법이 필요할 것이다.
55
+ owner.renderRoot.querySelector(`[name="${filter.name}"]`)
56
+ : //@ts-ignore owner element를 전제하지 않는 방법이 필요할 것이다.
57
+ owner.renderRoot.querySelector(`form [name="${filter.name}"]`);
56
58
  codeInput.value = code;
57
59
  input.dispatchEvent(new Event('change', { bubbles: true }));
58
60
  input.dispatchEvent(new CustomEvent('filter-change', {
@@ -68,6 +70,7 @@ export const FilterFormMetaCodeSelect = (filter, value, owner) => {
68
70
  openMetaCodeSelector(filter, value, confirmCallback);
69
71
  }}
70
72
  />
73
+ <md-icon style="--md-icon-size: 18px;margin-left: -24px;">manage_search</md-icon>
71
74
  `
72
75
  : html ``;
73
76
  };
@@ -1 +1 @@
1
- {"version":3,"file":"filter-form-meta-code-select.js","sourceRoot":"","sources":["../../../client/component/filter/filter-form-meta-code-select.js"],"names":[],"mappings":"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","sourcesContent":["import '../popup/meta-object-selector-popup'\n\nimport { html } from 'lit-html'\nimport { openPopup } from '@operato/layout'\nimport { TermsUtil } from './../../utils/terms-util'\n\nfunction openMetaCodeSelector(filter, value, confirmCallback) {\n\n var template = html`\n <meta-object-selector-popup\n .value=${value}\n .options=${filter.options}\n .confirmCallback=${confirmCallback}\n ></meta-object-selector-popup>\n `\n\n openPopup(template, {\n backdrop: true,\n size: 'large',\n title: filter.options.selectorName ? TermsUtil.tMenu(filter.options.selectorName) : TermsUtil.tTitle('select_item')\n })\n}\n\n\nexport const FilterFormMetaCodeSelect = (filter, value, owner) =>{\n const options = filter.options;\n const codes = (options.codes && options.codes.length > 0) ? options.codes : undefined;\n const { operator = 'eq' } = filter;\n let hideText = value? value : '';\n let text = value? value : '';\n\n if(options.dispField && value && codes){\n let dispCode = codes.filter(x=> x.value == value);\n\n if(dispCode && dispCode.length > 0){\n text = dispCode[0].display;\n }\n }\n\n return operator === 'eq'\n ? html`\n <input name='${filter.name}' .value=${hideText} type=\"text\" hidden></input>\n <input\n type=\"text\"\n readonly\n name='${filter.name}_disp'\n .value=${text}\n @click=${(e) => {\n e.stopPropagation();\n\n const input = e.target;\n\n const confirmCallback = (selected) => {\n let code = selected ? selected[options.codeField] : '';\n let disp = code;\n\n if(selected && options.dispField){\n let fields = options.dispField.split(\",\");\n disp = selected[fields[0]];\n \n if(fields.length > 1){\n disp+= `(${fields.splice(1).map(field => { return selected[field]}).join(\",\")})` \n }\n }\n\n input.value = disp;\n\n let codeInput = owner.tagName.toLowerCase() == 'ox-grid-header' \n ? owner.renderRoot.querySelector(`[name=\"${filter.name}\"]`)\n : owner.renderRoot.querySelector(`form [name=\"${filter.name}\"]`);\n \n codeInput.value = code;\n\n input.dispatchEvent(new Event('change', { bubbles: true })) \n\n input.dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name: filter.name,\n operator,\n value: code\n }\n })\n )\n }\n\n openMetaCodeSelector(filter, value, confirmCallback)\n }}\n />\n `\n : html``\n}\n"]}
1
+ {"version":3,"file":"filter-form-meta-code-select.js","sourceRoot":"","sources":["../../../client/component/filter/filter-form-meta-code-select.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '../popup/meta-object-selector-popup'\n\nimport { html } from 'lit-html'\n\nimport { openPopup } from '@operato/layout'\nimport { FilterSelectRenderer } from '@operato/form'\nimport { TermsUtil } from './../../utils/terms-util'\n\nfunction openMetaCodeSelector(filter, value, confirmCallback) {\n var template = html` <meta-object-selector-popup .value=${value} .options=${filter.options} .confirmCallback=${confirmCallback}> </meta-object-selector-popup> `\n\n openPopup(template, {\n backdrop: true,\n size: 'large',\n title: filter.options.selectorName ? String(TermsUtil.tMenu(filter.options.selectorName)) : String(TermsUtil.tTitle('select_item'))\n })\n}\n\nexport const FilterFormMetaCodeSelect: FilterSelectRenderer = (filter, value, owner) => {\n const options = filter.options || {}\n const codes = options.codes && options.codes.length > 0 ? options.codes : undefined\n const { operator = 'eq' } = filter\n const hiddenText = value ? value : ''\n\n var text = value ? value : ''\n\n if (options.dispField && value && codes) {\n let dispCode = codes.filter(x => x.value == value)\n\n if (dispCode && dispCode.length > 0) {\n text = dispCode[0].display\n }\n }\n\n return operator === 'eq'\n ? html`\n <input name='${filter.name}' .value=${hiddenText} type=\"text\" hidden></input>\n <input\n type=\"text\"\n readonly\n name='${filter.name}_disp'\n .value=${text}\n @click=${e => {\n e.stopPropagation()\n\n const input = e.target\n\n const confirmCallback = selected => {\n let code = selected ? selected[options.codeField] : ''\n let disp = code\n\n if (selected && options.dispField) {\n let fields = options.dispField.split(',')\n disp = selected[fields[0]]\n\n if (fields.length > 1) {\n disp += `(${fields\n .splice(1)\n .map(field => {\n return selected[field]\n })\n .join(',')})`\n }\n }\n\n input.value = disp\n\n let codeInput =\n owner.tagName.toLowerCase() == 'ox-grid-header'\n ? //@ts-ignore owner element를 전제하지 않는 방법이 필요할 것이다.\n owner.renderRoot.querySelector(`[name=\"${filter.name}\"]`)\n : //@ts-ignore owner element를 전제하지 않는 방법이 필요할 것이다.\n owner.renderRoot.querySelector(`form [name=\"${filter.name}\"]`)\n\n codeInput.value = code\n\n input.dispatchEvent(new Event('change', { bubbles: true }))\n\n input.dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name: filter.name,\n operator,\n value: code\n }\n })\n )\n }\n\n openMetaCodeSelector(filter, value, confirmCallback)\n }}\n />\n <md-icon style=\"--md-icon-size: 18px;margin-left: -24px;\">manage_search</md-icon>\n `\n : html``\n}\n"]}
@@ -1 +1,4 @@
1
- export function FilterFormMetaObjectSelect(filter: any, value: any, owner: any): import("lit-html").TemplateResult<1>;
1
+ import '@material/web/icon/icon.js';
2
+ import '../popup/meta-object-selector-popup';
3
+ import { FilterSelectRenderer } from '@operato/form';
4
+ export declare const FilterFormMetaObjectSelect: FilterSelectRenderer;