@things-factory/meta-ui 7.0.1-alpha.61 → 7.0.1-alpha.63

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 (40) hide show
  1. package/client/bootstrap.ts +0 -1
  2. package/client/pages/personalize/{personal-column-selector.js → personal-column-selector.ts} +111 -114
  3. package/client/utils/meta-api.js +12 -4
  4. package/client/utils/meta-ui-util.js +172 -42
  5. package/client/utils/service-util.js +93 -21
  6. package/dist-client/bootstrap.d.ts +0 -1
  7. package/dist-client/bootstrap.js +0 -1
  8. package/dist-client/bootstrap.js.map +1 -1
  9. package/dist-client/pages/personalize/personal-column-selector.d.ts +18 -26
  10. package/dist-client/pages/personalize/personal-column-selector.js +127 -124
  11. package/dist-client/pages/personalize/personal-column-selector.js.map +1 -1
  12. package/dist-client/tsconfig.tsbuildinfo +1 -1
  13. package/dist-client/utils/meta-api.d.ts +3 -3
  14. package/dist-client/utils/meta-api.js +3 -3
  15. package/dist-client/utils/meta-api.js.map +1 -1
  16. package/dist-client/utils/meta-ui-util.js +120 -30
  17. package/dist-client/utils/meta-ui-util.js.map +1 -1
  18. package/dist-client/utils/service-util.d.ts +1 -1
  19. package/dist-client/utils/service-util.js +58 -15
  20. package/dist-client/utils/service-util.js.map +1 -1
  21. package/dist-server/service/button-role/button-role-query.js +1 -1
  22. package/dist-server/service/button-role/button-role-query.js.map +1 -1
  23. package/dist-server/service/grid-personalize/grid-personalize-mutation.js +25 -1
  24. package/dist-server/service/grid-personalize/grid-personalize-mutation.js.map +1 -1
  25. package/dist-server/service/grid-personalize/grid-personalize-query.js +13 -12
  26. package/dist-server/service/grid-personalize/grid-personalize-query.js.map +1 -1
  27. package/dist-server/service/grid-personalize/grid-personalize-type.js +4 -4
  28. package/dist-server/service/grid-personalize/grid-personalize-type.js.map +1 -1
  29. package/dist-server/service/grid-personalize/grid-personalize.js +3 -3
  30. package/dist-server/service/grid-personalize/grid-personalize.js.map +1 -1
  31. package/dist-server/service/menu-button-auth/menu-button-auth-query.js +3 -3
  32. package/dist-server/service/menu-button-auth/menu-button-auth-query.js.map +1 -1
  33. package/dist-server/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +3 -2
  35. package/server/service/button-role/button-role-query.ts +9 -4
  36. package/server/service/grid-personalize/grid-personalize-mutation.ts +37 -8
  37. package/server/service/grid-personalize/grid-personalize-query.ts +11 -12
  38. package/server/service/grid-personalize/grid-personalize-type.ts +5 -7
  39. package/server/service/grid-personalize/grid-personalize.ts +10 -7
  40. package/server/service/menu-button-auth/menu-button-auth-query.ts +31 -29
@@ -37,7 +37,6 @@ import { FilterGristMetaObjectSelect } from './component/filter/filter-grist-met
37
37
  import { FilterFormMetaCodeSelect } from './component/filter/filter-form-meta-code-select'
38
38
  import { FilterFormMetaObjectSelect } from './component/filter/filter-form-meta-object-select'
39
39
 
40
- import './pages/personalize/personal-column-selector'
41
40
  import './pages/history/history-copy-list-popup'
42
41
  import './pages/history/history-json-list-popup'
43
42
 
@@ -1,13 +1,18 @@
1
1
  import '@material/web/icon/icon.js'
2
2
 
3
+ import gql from 'graphql-tag'
3
4
  import { css, html, LitElement } from 'lit'
5
+ import { customElement, property, query } from 'lit/decorators.js'
4
6
 
5
- import { i18next, localize } from '@things-factory/i18n-base'
7
+ import { i18next, localize } from '@operato/i18n'
8
+ import { client } from '@operato/graphql'
9
+ import { DataGrist } from '@operato/data-grist'
6
10
  import { ScrollbarStyles, CommonGristStyles, ButtonContainerStyles } from '@operato/styles'
7
11
 
8
12
  import { TermsUtil } from './../../utils/terms-util'
9
13
  import { MetaApi } from '../../utils/meta-api'
10
14
  import { ServiceUtil } from '../../utils/service-util'
15
+ import { UiUtil } from '../../utils/ui-util'
11
16
 
12
17
  /**
13
18
  * @license
@@ -15,103 +20,91 @@ import { ServiceUtil } from '../../utils/service-util'
15
20
  * @author Yang <wryang@hatiolab.com>
16
21
  * @description 사용자 그리드 컬럼 개인화 팝업
17
22
  */
23
+
24
+ @customElement('personal-column-selector')
18
25
  export class PersonalColumnSelector extends localize(i18next)(LitElement) {
19
26
  /**
20
27
  * @description 스타일 정의
21
28
  ***********************************
22
29
  * @returns {Object} 화면의 스타일 정의
23
30
  */
24
- static get styles() {
25
- let styles = [
26
- ScrollbarStyles,
27
- CommonGristStyles,
28
- ButtonContainerStyles,
29
- css`
30
- :host {
31
- display: flex;
32
- flex-direction: column;
33
- overflow-x: auto;
34
- }
35
- .container {
36
- flex: 1;
37
- display: grid;
38
- overflow: hidden;
39
- }
40
- .container_detail {
41
- background-color: var(--main-section-background-color);
42
- display: flex;
43
- flex-direction: column;
44
- flex: 1;
45
- overflow-y: auto;
46
- }
31
+ static styles = [
32
+ ScrollbarStyles,
33
+ CommonGristStyles,
34
+ ButtonContainerStyles,
35
+ css`
36
+ :host {
37
+ display: flex;
38
+ flex-direction: column;
39
+ overflow-x: auto;
40
+ }
47
41
 
48
- h2 {
49
- padding: var(--subtitle-padding);
50
- font: var(--subtitle-font);
51
- color: var(--subtitle-text-color);
52
- border-bottom: var(--subtitle-border-bottom);
53
- }
42
+ .container {
43
+ flex: 1;
44
+ display: grid;
45
+ overflow: hidden;
46
+ }
54
47
 
55
- .container_detail h2 {
56
- margin: var(--grist-title-margin);
57
- border: var(--grist-title-border);
58
- font: var(--grist-title-font);
59
- color: var(--secondary-color);
60
- }
48
+ .container_detail {
49
+ background-color: var(--main-section-background-color);
50
+ display: flex;
51
+ flex-direction: column;
52
+ flex: 1;
53
+ overflow-y: auto;
54
+ }
61
55
 
62
- .container_detail h2 md-icon {
63
- --md-icon-size: var(--grist-title-icon-size);
64
- vertical-align: middle;
65
- margin: var(--grist-title-icon-margin);
66
- color: var(--grist-title-icon-color);
67
- }
56
+ h2 {
57
+ padding: var(--subtitle-padding);
58
+ font: var(--subtitle-font);
59
+ color: var(--subtitle-text-color);
60
+ border-bottom: var(--subtitle-border-bottom);
61
+ }
68
62
 
69
- h2 {
70
- padding-bottom: var(--grist-title-with-grid-padding);
71
- }
63
+ .container_detail h2 {
64
+ margin: var(--grist-title-margin);
65
+ border: var(--grist-title-border);
66
+ font: var(--grist-title-font);
67
+ color: var(--secondary-color);
68
+ }
72
69
 
73
- ox-grist {
74
- overflow-y: auto;
75
- flex: 1;
76
- }
70
+ .container_detail h2 md-icon {
71
+ --md-icon-size: var(--grist-title-icon-size);
72
+ vertical-align: middle;
73
+ margin: var(--grist-title-icon-margin);
74
+ color: var(--grist-title-icon-color);
75
+ }
77
76
 
78
- ox-filters-form {
79
- flex: 1;
80
- }
81
- `
82
- ]
83
- return styles
84
- }
77
+ h2 {
78
+ padding-bottom: var(--grist-title-with-grid-padding);
79
+ }
80
+
81
+ ox-grist {
82
+ overflow-y: auto;
83
+ flex: 1;
84
+ }
85
+
86
+ ox-filters-form {
87
+ flex: 1;
88
+ }
89
+ `
90
+ ]
85
91
 
86
92
  /**
87
- * @description 프로퍼티 정의
88
- ***********************************
89
- * @returns {Object} 화면의 프로퍼티 정의
93
+ * @description 선택된 그리드
90
94
  */
91
- static get properties() {
92
- return {
93
- /**
94
- * @description 선택된 그리드
95
- ****************************
96
- * @type {Object}
97
- */
98
- configGrist: {
99
- type: Object
100
- },
101
-
102
- /**
103
- * @description 메뉴 ID
104
- ******************************
105
- * @type {String}
106
- */
107
- menuId: {
108
- type: String
109
- }
110
- }
111
- }
95
+ @property({ type: Object }) configGrist: any
96
+
97
+ /**
98
+ * @description 메뉴 ID
99
+ */
100
+ @property({ type: String }) menuId!: string
101
+
102
+ @query('ox-grist') private grist!: DataGrist
103
+
104
+ private gridConfig: any
112
105
 
113
106
  /**
114
- * @description 라이트 사이클
107
+ * @description 라이프 사이클
115
108
  ***************************
116
109
  */
117
110
  async connectedCallback() {
@@ -128,9 +121,7 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
128
121
  ]
129
122
  }
130
123
 
131
- if (super.connectedCallback) {
132
- await super.connectedCallback()
133
- }
124
+ await super.connectedCallback()
134
125
  }
135
126
 
136
127
  /**
@@ -140,27 +131,27 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
140
131
  render() {
141
132
  return html` <div id="container" class="container">
142
133
  <div class="container_detail">
143
- <ox-grist id="ox-grist" .config=${this.gridConfig} .mode=${'GRID'} auto-fetch .fetchHandler=${this.fetchColumns.bind(this)}> </ox-grist>
134
+ <ox-grist
135
+ id="ox-grist"
136
+ .config=${this.gridConfig}
137
+ .mode=${'GRID'}
138
+ auto-fetch
139
+ .fetchHandler=${this.fetchColumns.bind(this)}
140
+ >
141
+ </ox-grist>
144
142
 
145
143
  <div class="button-container" style="margin-left:unset">
146
144
  <button @click=${this.reset.bind(this)}><md-icon>restart_alt</md-icon>${TermsUtil.tButton('reset')}</button>
147
145
  <div filler></div>
148
146
  <button @click=${this.save.bind(this)}><md-icon>save</md-icon>${TermsUtil.tButton('save')}</button>
149
- <button danger @click=${this.delete.bind(this)}><md-icon>delete</md-icon>${TermsUtil.tButton('delete')}</button>
147
+ <button danger @click=${this.delete.bind(this)}>
148
+ <md-icon>delete</md-icon>${TermsUtil.tButton('delete')}
149
+ </button>
150
150
  </div>
151
151
  </div>
152
152
  </div>`
153
153
  }
154
154
 
155
- /**
156
- * @description 그리드 리턴
157
- **************************
158
- * @returns {Object} 그리드
159
- */
160
- get grist() {
161
- return this.shadowRoot.querySelector('#ox-grist')
162
- }
163
-
164
155
  /**
165
156
  * @description 컬럼 조회
166
157
  ***************************
@@ -186,8 +177,8 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
186
177
  ***************************
187
178
  * @returns
188
179
  */
189
- async delete(e) {
190
- let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId)
180
+ async delete(e: MouseEvent) {
181
+ let personal = await MetaApi.getMyMenuGridPersnal(this.menuId)
191
182
  let { id = undefined } = personal
192
183
 
193
184
  if (id) {
@@ -204,7 +195,7 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
204
195
  * @description 개인화 그리드 초기화
205
196
  ************************************************
206
197
  */
207
- async reset(e) {
198
+ async reset(e: MouseEvent) {
208
199
  await this.grist.fetch()
209
200
  }
210
201
 
@@ -212,13 +203,12 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
212
203
  * @description 컬럼 변경 사항 저장
213
204
  ************************************************
214
205
  */
215
- async save(e) {
206
+ async save(e: MouseEvent) {
216
207
  // 변경 체크
217
208
  MetaApi.patchesForUpdateMultiple(this.grist)
218
209
 
219
210
  // 기존 데이터 조회
220
- let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId)
221
- let { id = undefined, template = {} } = personal
211
+ const { template = {} } = (await MetaApi.getMyMenuGridPersnal(this.menuId)) || {}
222
212
 
223
213
  let tempName = 'master'
224
214
  if (this.configGrist.configName) {
@@ -240,23 +230,30 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
240
230
  return x.name
241
231
  })
242
232
 
243
- let patch = { template: JSON.stringify(template) }
233
+ try {
234
+ const response = await client.query({
235
+ query: gql`
236
+ mutation ($menuId: String!, $template: Object!) {
237
+ saveMyGridpersonalize(menuId: $menuId, template: $template) {
238
+ id
239
+ }
240
+ }
241
+ `,
242
+ variables: {
243
+ menuId: this.menuId,
244
+ template
245
+ }
246
+ })
244
247
 
245
- // 기존에 ID 가 있으면 update
246
- if (id) {
247
- patch.id = id
248
- patch.cuFlag = 'M'
249
- } else {
250
- patch.menu = {
251
- id: this.menuId
248
+ if (!response.errors) {
249
+ UiUtil.showToast('info', TermsUtil.tText('success to save'))
250
+ } else {
251
+ ServiceUtil.showGraphqlErrorResponse(response)
252
252
  }
253
- patch.cuFlag = '+'
253
+ } catch (e) {
254
+ ServiceUtil.showGraphqlException(e)
254
255
  }
255
- await MetaApi.updateMultiple('updateMultipleGridpersonalize', [patch])
256
256
 
257
- MetaApi.showToast('info', TermsUtil.tText('success to save'))
258
257
  history.back()
259
258
  }
260
259
  }
261
-
262
- customElements.define('personal-column-selector', PersonalColumnSelector)
@@ -349,7 +349,7 @@ export class MetaApi {
349
349
  /**
350
350
  * @description 그리스트에서 변경, 추가된 내용 추출
351
351
  ********************************************
352
- * @param {Array} grist 그리스트
352
+ * @param {Object} grist 그리스트
353
353
  * @returns {Array} 그리스트에서 변경, 추가된 데이터 리스트
354
354
  */
355
355
  static patchesForUpdateMultiple(grist) {
@@ -403,8 +403,8 @@ export class MetaApi {
403
403
  * @param {String} menuId 메뉴 ID 값
404
404
  * @returns {Object} 그리드 컬럼 개인화 정보
405
405
  */
406
- static async findMenuGridPersnalTemplate(menuId) {
407
- return await ServiceUtil.searchMenuGridPersnalTemplate(menuId)
406
+ static async getMyMenuGridPersnal(menuId) {
407
+ return await ServiceUtil.getMyMenuGridPersnal(menuId)
408
408
  }
409
409
 
410
410
  /**
@@ -593,7 +593,15 @@ export class MetaApi {
593
593
  * @returns {Object} 그리스트 기본 컬럼 설정
594
594
  */
595
595
  static async getGristCodeSelectorColumnConfig(name, displayName, align, sortable, width, mandatory, codeName) {
596
- return await MetaUiUtil.getGristCodeSelectorColumnConfig(name, displayName, align, sortable, width, mandatory, codeName)
596
+ return await MetaUiUtil.getGristCodeSelectorColumnConfig(
597
+ name,
598
+ displayName,
599
+ align,
600
+ sortable,
601
+ width,
602
+ mandatory,
603
+ codeName
604
+ )
597
605
  }
598
606
 
599
607
  /**