@things-factory/meta-ui 7.0.1-alpha.1 → 7.0.1-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/actions/main.js +14 -20
- package/client/bootstrap.ts +13 -6
- package/client/component/grist/renderer/grist-renderer-meta-object-selector.js +18 -13
- package/client/pages/entity/config-entity.js +180 -112
- package/client/pages/entity/main-menu-selector.js +85 -84
- package/client/pages/history/history-copy-list-popup.js +33 -45
- package/client/pages/history/history-json-list-popup.js +38 -50
- package/client/pages/menu/dynamic-menu-template.js +1 -1
- package/client/pages/menu/dynamic-menu.js +137 -121
- package/client/pages/menu/export-menu-popup.js +210 -218
- package/client/pages/personalize/personal-column-selector.js +112 -122
- package/client/utils/meta-ui-util.js +0 -4
- package/client/utils/service-util.js +4 -4
- package/client/utils/terms-util.js +41 -42
- package/client/utils/ui-util.js +2 -5
- package/client/viewparts/dynamic-menu-part.js +7 -28
- package/dist-client/actions/main.js +6 -5
- package/dist-client/actions/main.js.map +1 -1
- package/dist-client/bootstrap.d.ts +4 -1
- package/dist-client/bootstrap.js +12 -6
- package/dist-client/bootstrap.js.map +1 -1
- package/dist-client/component/grist/renderer/grist-renderer-code-input.d.ts +1 -1
- package/dist-client/component/grist/renderer/grist-renderer-meta-code-selector.d.ts +1 -1
- package/dist-client/component/grist/renderer/grist-renderer-meta-object-selector.d.ts +1 -1
- package/dist-client/component/grist/renderer/grist-renderer-meta-object-selector.js +9 -3
- package/dist-client/component/grist/renderer/grist-renderer-meta-object-selector.js.map +1 -1
- package/dist-client/component/popup/code-input-editor-popup.d.ts +1 -1
- package/dist-client/component/popup/meta-object-selector-popup.d.ts +1 -1
- package/dist-client/component/popup/record-based-code-editor-popup.d.ts +1 -1
- package/dist-client/mixin/meta-basic-grist-mixin.d.ts +1 -1
- package/dist-client/pages/activity/meta-activity-viewer-element.d.ts +1 -1
- package/dist-client/pages/activity/meta-activity-writer-element.d.ts +1 -1
- package/dist-client/pages/button-role/button-role-detail.d.ts +1 -1
- package/dist-client/pages/entity/config-entity.js +131 -62
- package/dist-client/pages/entity/config-entity.js.map +1 -1
- package/dist-client/pages/entity/main-menu-selector.d.ts +1 -1
- package/dist-client/pages/entity/main-menu-selector.js +74 -73
- package/dist-client/pages/entity/main-menu-selector.js.map +1 -1
- package/dist-client/pages/history/history-copy-list-popup.d.ts +1 -1
- package/dist-client/pages/history/history-copy-list-popup.js +14 -26
- package/dist-client/pages/history/history-copy-list-popup.js.map +1 -1
- package/dist-client/pages/history/history-json-list-popup.d.ts +5 -5
- package/dist-client/pages/history/history-json-list-popup.js +19 -31
- package/dist-client/pages/history/history-json-list-popup.js.map +1 -1
- package/dist-client/pages/menu/dynamic-menu-setting-let.d.ts +1 -1
- package/dist-client/pages/menu/dynamic-menu-template.js +1 -1
- package/dist-client/pages/menu/dynamic-menu-template.js.map +1 -1
- package/dist-client/pages/menu/dynamic-menu.js +68 -48
- package/dist-client/pages/menu/dynamic-menu.js.map +1 -1
- package/dist-client/pages/menu/export-menu-popup.d.ts +5 -5
- package/dist-client/pages/menu/export-menu-popup.js +50 -54
- package/dist-client/pages/menu/export-menu-popup.js.map +1 -1
- package/dist-client/pages/meta-grist-element.d.ts +1 -1
- package/dist-client/pages/meta-grist-page.d.ts +1 -1
- package/dist-client/pages/personalize/personal-column-selector.d.ts +1 -1
- package/dist-client/pages/personalize/personal-column-selector.js +76 -84
- package/dist-client/pages/personalize/personal-column-selector.js.map +1 -1
- package/dist-client/pages/work-code/work-code-detail-popup.d.ts +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-client/utils/meta-ui-util.js +0 -3
- package/dist-client/utils/meta-ui-util.js.map +1 -1
- package/dist-client/utils/service-util.js +4 -4
- package/dist-client/utils/service-util.js.map +1 -1
- package/dist-client/utils/terms-util.d.ts +13 -13
- package/dist-client/utils/terms-util.js +10 -12
- package/dist-client/utils/terms-util.js.map +1 -1
- package/dist-client/utils/ui-util.js +1 -4
- package/dist-client/utils/ui-util.js.map +1 -1
- package/dist-client/viewparts/dynamic-menu-part.d.ts +1 -1
- package/dist-client/viewparts/dynamic-menu-part.js +7 -26
- package/dist-client/viewparts/dynamic-menu-part.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -8
- package/client/viewparts/dynamic-menu-landscape-styles.js +0 -149
- package/client/viewparts/dynamic-menu-landscape.js +0 -106
- package/client/viewparts/dynamic-menu-portrait-styles.js +0 -130
- package/client/viewparts/dynamic-menu-portrait.js +0 -90
- package/client/viewparts/dynamic-top-menu-bar.js +0 -148
- package/dist-client/viewparts/dynamic-menu-landscape-styles.d.ts +0 -1
- package/dist-client/viewparts/dynamic-menu-landscape-styles.js +0 -149
- package/dist-client/viewparts/dynamic-menu-landscape-styles.js.map +0 -1
- package/dist-client/viewparts/dynamic-menu-landscape.d.ts +0 -21
- package/dist-client/viewparts/dynamic-menu-landscape.js +0 -87
- package/dist-client/viewparts/dynamic-menu-landscape.js.map +0 -1
- package/dist-client/viewparts/dynamic-menu-portrait-styles.d.ts +0 -1
- package/dist-client/viewparts/dynamic-menu-portrait-styles.js +0 -130
- package/dist-client/viewparts/dynamic-menu-portrait-styles.js.map +0 -1
- package/dist-client/viewparts/dynamic-menu-portrait.d.ts +0 -13
- package/dist-client/viewparts/dynamic-menu-portrait.js +0 -74
- package/dist-client/viewparts/dynamic-menu-portrait.js.map +0 -1
- package/dist-client/viewparts/dynamic-top-menu-bar.d.ts +0 -27
- package/dist-client/viewparts/dynamic-top-menu-bar.js +0 -133
- package/dist-client/viewparts/dynamic-top-menu-bar.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { css, html, LitElement } from 'lit
|
|
1
|
+
import { css, html, LitElement } from 'lit'
|
|
2
2
|
|
|
3
3
|
import { i18next, localize } from '@things-factory/i18n-base'
|
|
4
4
|
import { ScrollbarStyles, CommonGristStyles } from '@operato/styles'
|
|
@@ -24,66 +24,67 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
24
24
|
ScrollbarStyles,
|
|
25
25
|
CommonGristStyles,
|
|
26
26
|
css`
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
27
|
+
:host {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
overflow-x: auto;
|
|
31
|
+
}
|
|
32
|
+
.container {
|
|
33
|
+
flex: 1;
|
|
34
|
+
display: grid;
|
|
35
|
+
overflow: hidden;
|
|
36
|
+
}
|
|
37
|
+
.container_detail {
|
|
38
|
+
background-color: var(--main-section-background-color);
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-direction: column;
|
|
41
|
+
flex: 1;
|
|
42
|
+
overflow-y: auto;
|
|
43
|
+
}
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
h2 {
|
|
46
|
+
padding: var(--subtitle-padding);
|
|
47
|
+
font: var(--subtitle-font);
|
|
48
|
+
color: var(--subtitle-text-color);
|
|
49
|
+
border-bottom: var(--subtitle-border-bottom);
|
|
50
|
+
}
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
.container_detail h2 {
|
|
53
|
+
margin: var(--grist-title-margin);
|
|
54
|
+
border: var(--grist-title-border);
|
|
55
|
+
font: var(--grist-title-font);
|
|
56
|
+
color: var(--secondary-color);
|
|
57
|
+
}
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
.container_detail h2 mwc-icon {
|
|
60
|
+
vertical-align: middle;
|
|
61
|
+
margin: var(--grist-title-icon-margin);
|
|
62
|
+
font-size: var(--grist-title-icon-size);
|
|
63
|
+
color: var(--grist-title-icon-color);
|
|
64
|
+
}
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
66
|
+
h2 {
|
|
67
|
+
padding-bottom: var(--grist-title-with-grid-padding);
|
|
68
|
+
}
|
|
69
|
+
ox-grist {
|
|
70
|
+
overflow-y: auto;
|
|
71
|
+
flex: 1;
|
|
72
|
+
}
|
|
73
|
+
search-form {
|
|
74
|
+
overflow: visible;
|
|
75
|
+
}
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
77
|
+
.button-container {
|
|
78
|
+
padding: var(--button-container-padding);
|
|
79
|
+
margin: var(--button-container-margin);
|
|
80
|
+
text-align: var(--button-container-align);
|
|
81
|
+
background-color: var(--button-container-background);
|
|
82
|
+
height: var(--button-container-height);
|
|
83
|
+
text-align: right;
|
|
84
|
+
padding-right: 12px;
|
|
85
|
+
}
|
|
86
|
+
`
|
|
87
|
+
]
|
|
87
88
|
return styles
|
|
88
89
|
}
|
|
89
90
|
|
|
@@ -104,7 +105,7 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
104
105
|
},
|
|
105
106
|
|
|
106
107
|
/**
|
|
107
|
-
* @description 메뉴 ID
|
|
108
|
+
* @description 메뉴 ID
|
|
108
109
|
******************************
|
|
109
110
|
* @type {String}
|
|
110
111
|
*/
|
|
@@ -119,7 +120,7 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
119
120
|
***************************
|
|
120
121
|
*/
|
|
121
122
|
async connectedCallback() {
|
|
122
|
-
// 메뉴 그룹 그리드 설정
|
|
123
|
+
// 메뉴 그룹 그리드 설정
|
|
123
124
|
this.gridConfig = {
|
|
124
125
|
rows: { selectable: false, appendable: false },
|
|
125
126
|
pagination: { infinite: true },
|
|
@@ -127,7 +128,7 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
127
128
|
...MetaApi.getGristGuttersConfig(false, false),
|
|
128
129
|
MetaApi.getGristColumnConfig('integer', 'rank', 'center', true, false, 80),
|
|
129
130
|
MetaApi.getGristColumnConfig('string', 'name', 'left', false, false, 180),
|
|
130
|
-
MetaApi.getGristColumnConfig2('string','header', 'display', 'left', false, false, 180),
|
|
131
|
+
MetaApi.getGristColumnConfig2('string', 'header', 'display', 'left', false, false, 180),
|
|
131
132
|
MetaApi.getGristColumnConfig('boolean', 'hidden', 'center', true, false, 60)
|
|
132
133
|
]
|
|
133
134
|
}
|
|
@@ -142,25 +143,16 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
142
143
|
***************************
|
|
143
144
|
*/
|
|
144
145
|
render() {
|
|
145
|
-
return html`
|
|
146
|
-
<div
|
|
147
|
-
<
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
</
|
|
151
|
-
<
|
|
152
|
-
<mwc-button raised label="${TermsUtil.tButton('reset')}" style="margin-left:7px;margin-top:7px;"
|
|
153
|
-
@click=${this.reset.bind(this)}>
|
|
154
|
-
</mwc-button>
|
|
155
|
-
<mwc-button raised label="${TermsUtil.tButton('delete')}" style="margin-left:7px;margin-top:7px;"
|
|
156
|
-
@click=${this.delete.bind(this)}>
|
|
157
|
-
</mwc-button>
|
|
158
|
-
<mwc-button raised label="${TermsUtil.tButton('save')}" style="margin-left:7px;margin-top:7px;"
|
|
159
|
-
@click=${this.save.bind(this)}>
|
|
160
|
-
</mwc-button>
|
|
161
|
-
</div>
|
|
146
|
+
return html` <div id="container" class="container">
|
|
147
|
+
<div class="container_detail">
|
|
148
|
+
<ox-grist id="ox-grist" .config=${this.gridConfig} .mode=${'GRID'} auto-fetch .fetchHandler=${this.fetchColumns.bind(this)}> </ox-grist>
|
|
149
|
+
<div id="button-container" class="button-container">
|
|
150
|
+
<mwc-button raised label="${TermsUtil.tButton('reset')}" style="margin-left:7px;margin-top:7px;" @click=${this.reset.bind(this)}> </mwc-button>
|
|
151
|
+
<mwc-button raised label="${TermsUtil.tButton('delete')}" style="margin-left:7px;margin-top:7px;" @click=${this.delete.bind(this)}> </mwc-button>
|
|
152
|
+
<mwc-button raised label="${TermsUtil.tButton('save')}" style="margin-left:7px;margin-top:7px;" @click=${this.save.bind(this)}> </mwc-button>
|
|
162
153
|
</div>
|
|
163
|
-
</div
|
|
154
|
+
</div>
|
|
155
|
+
</div>`
|
|
164
156
|
}
|
|
165
157
|
|
|
166
158
|
/**
|
|
@@ -173,43 +165,42 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
173
165
|
}
|
|
174
166
|
|
|
175
167
|
/**
|
|
176
|
-
* @description 컬럼 조회
|
|
168
|
+
* @description 컬럼 조회
|
|
177
169
|
***************************
|
|
178
|
-
* @returns
|
|
170
|
+
* @returns
|
|
179
171
|
*/
|
|
180
172
|
async fetchColumns() {
|
|
181
|
-
// 팝업 오프너에서 받아온 그리스트의 설정으로 보여준다
|
|
182
|
-
let cols = this.configGrist.config.columns
|
|
183
|
-
let filterCols = cols.filter(x => x.type != 'gutter' && x.name != 'id' && x.unusable !== true)
|
|
184
|
-
let rank = 0
|
|
173
|
+
// 팝업 오프너에서 받아온 그리스트의 설정으로 보여준다
|
|
174
|
+
let cols = this.configGrist.config.columns
|
|
175
|
+
let filterCols = cols.filter(x => x.type != 'gutter' && x.name != 'id' && x.unusable !== true)
|
|
176
|
+
let rank = 0
|
|
185
177
|
|
|
186
178
|
let items = filterCols.map(x => {
|
|
187
|
-
rank = rank + 10
|
|
188
|
-
x.rank = rank
|
|
189
|
-
return x
|
|
179
|
+
rank = rank + 10
|
|
180
|
+
x.rank = rank
|
|
181
|
+
return x
|
|
190
182
|
})
|
|
191
183
|
|
|
192
184
|
return { total: 0, records: items }
|
|
193
185
|
}
|
|
194
186
|
|
|
195
187
|
/**
|
|
196
|
-
* @description 개인화 데이터 삭제
|
|
188
|
+
* @description 개인화 데이터 삭제
|
|
197
189
|
***************************
|
|
198
|
-
* @returns
|
|
190
|
+
* @returns
|
|
199
191
|
*/
|
|
200
192
|
async delete(e) {
|
|
201
|
-
let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId)
|
|
202
|
-
let { id = undefined } = personal
|
|
193
|
+
let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId)
|
|
194
|
+
let { id = undefined } = personal
|
|
203
195
|
|
|
204
196
|
if (id) {
|
|
205
|
-
let result = await ServiceUtil.deleteListByIds([id], 'deleteGridPersonalizes')
|
|
197
|
+
let result = await ServiceUtil.deleteListByIds([id], 'deleteGridPersonalizes')
|
|
206
198
|
if (result == true) {
|
|
207
|
-
history.back()
|
|
199
|
+
history.back()
|
|
208
200
|
}
|
|
209
201
|
} else {
|
|
210
|
-
await MetaApi.showToast('info', 'there_is_nothing_to_delete')
|
|
202
|
+
await MetaApi.showToast('info', 'there_is_nothing_to_delete')
|
|
211
203
|
}
|
|
212
|
-
|
|
213
204
|
}
|
|
214
205
|
|
|
215
206
|
/**
|
|
@@ -217,59 +208,58 @@ export class PersonalColumnSelector extends localize(i18next)(LitElement) {
|
|
|
217
208
|
************************************************
|
|
218
209
|
*/
|
|
219
210
|
async reset(e) {
|
|
220
|
-
await this.grist.fetch()
|
|
211
|
+
await this.grist.fetch()
|
|
221
212
|
}
|
|
222
213
|
|
|
223
|
-
|
|
224
214
|
/**
|
|
225
|
-
* @description 컬럼 변경 사항 저장
|
|
215
|
+
* @description 컬럼 변경 사항 저장
|
|
226
216
|
************************************************
|
|
227
217
|
*/
|
|
228
218
|
async save(e) {
|
|
229
|
-
// 변경 체크
|
|
230
|
-
MetaApi.patchesForUpdateMultiple(this.grist)
|
|
219
|
+
// 변경 체크
|
|
220
|
+
MetaApi.patchesForUpdateMultiple(this.grist)
|
|
231
221
|
|
|
232
|
-
// 기존 데이터 조회
|
|
233
|
-
let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId)
|
|
234
|
-
let { id = undefined, template = {} } = personal
|
|
222
|
+
// 기존 데이터 조회
|
|
223
|
+
let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId)
|
|
224
|
+
let { id = undefined, template = {} } = personal
|
|
235
225
|
|
|
236
|
-
let tempName =
|
|
226
|
+
let tempName = 'master'
|
|
237
227
|
if (this.configGrist.configName) {
|
|
238
|
-
tempName = this.configGrist.configName
|
|
228
|
+
tempName = this.configGrist.configName
|
|
239
229
|
}
|
|
240
230
|
|
|
241
|
-
// 기존 데이터 삭제
|
|
231
|
+
// 기존 데이터 삭제
|
|
242
232
|
if (template[tempName]) {
|
|
243
|
-
delete template[tempName]
|
|
233
|
+
delete template[tempName]
|
|
244
234
|
}
|
|
245
235
|
|
|
246
|
-
// 그리드 설정 데이터 숨김 필드 제외 후 정렬
|
|
247
|
-
let records = this.grist.dirtyData.records
|
|
248
|
-
let data = records.filter(x => x.hidden == false)
|
|
236
|
+
// 그리드 설정 데이터 숨김 필드 제외 후 정렬
|
|
237
|
+
let records = this.grist.dirtyData.records
|
|
238
|
+
let data = records.filter(x => x.hidden == false)
|
|
249
239
|
data.sort((a, b) => {
|
|
250
|
-
return a.rank - b.rank
|
|
251
|
-
})
|
|
240
|
+
return a.rank - b.rank
|
|
241
|
+
})
|
|
252
242
|
template[tempName] = data.map(x => {
|
|
253
243
|
return x.name
|
|
254
|
-
})
|
|
244
|
+
})
|
|
255
245
|
|
|
256
|
-
let patch = { template: JSON.stringify(template) }
|
|
246
|
+
let patch = { template: JSON.stringify(template) }
|
|
257
247
|
|
|
258
|
-
// 기존에 ID 가 있으면 update
|
|
248
|
+
// 기존에 ID 가 있으면 update
|
|
259
249
|
if (id) {
|
|
260
|
-
patch.id = id
|
|
261
|
-
patch.cuFlag =
|
|
250
|
+
patch.id = id
|
|
251
|
+
patch.cuFlag = 'M'
|
|
262
252
|
} else {
|
|
263
253
|
patch.menu = {
|
|
264
254
|
id: this.menuId
|
|
265
|
-
}
|
|
266
|
-
patch.cuFlag =
|
|
255
|
+
}
|
|
256
|
+
patch.cuFlag = '+'
|
|
267
257
|
}
|
|
268
|
-
await MetaApi.updateMultiple(
|
|
258
|
+
await MetaApi.updateMultiple('updateMultipleGridpersonalize', [patch])
|
|
269
259
|
|
|
270
|
-
MetaApi.showToast('info', TermsUtil.tText('success to save'))
|
|
271
|
-
history.back()
|
|
260
|
+
MetaApi.showToast('info', TermsUtil.tText('success to save'))
|
|
261
|
+
history.back()
|
|
272
262
|
}
|
|
273
263
|
}
|
|
274
264
|
|
|
275
|
-
customElements.define('personal-column-selector', PersonalColumnSelector)
|
|
265
|
+
customElements.define('personal-column-selector', PersonalColumnSelector)
|
|
@@ -13,10 +13,6 @@ import { ServiceUtil } from './service-util'
|
|
|
13
13
|
import { UiUtil } from './ui-util'
|
|
14
14
|
import { MetaApi } from './meta-api'
|
|
15
15
|
|
|
16
|
-
import './../pages/personalize/personal-column-selector'
|
|
17
|
-
import './../pages/history/history-copy-list-popup'
|
|
18
|
-
import './../pages/history/history-json-list-popup'
|
|
19
|
-
|
|
20
16
|
/**
|
|
21
17
|
* @license
|
|
22
18
|
* Copyright © HatioLab Inc. All rights reserved.
|
|
@@ -56,7 +56,7 @@ export class ServiceUtil {
|
|
|
56
56
|
const response = await client.query({
|
|
57
57
|
query: gql`
|
|
58
58
|
query workCodeByName($name: String!) {
|
|
59
|
-
workCodeByName(name: $name) {
|
|
59
|
+
commonCode: workCodeByName(name: $name) {
|
|
60
60
|
details {
|
|
61
61
|
rank
|
|
62
62
|
name
|
|
@@ -872,9 +872,9 @@ export class ServiceUtil {
|
|
|
872
872
|
*/
|
|
873
873
|
static async callService(action, filterParam, dataParams) {
|
|
874
874
|
if (action.graphql_type == 'query') {
|
|
875
|
-
return await
|
|
875
|
+
return await ServiceUtil.callQueryService(action, filterParam, dataParams)
|
|
876
876
|
} else {
|
|
877
|
-
return await
|
|
877
|
+
return await ServiceUtil.callMutationService(action, filterParam, dataParams)
|
|
878
878
|
}
|
|
879
879
|
}
|
|
880
880
|
|
|
@@ -1226,7 +1226,7 @@ export class ServiceUtil {
|
|
|
1226
1226
|
})
|
|
1227
1227
|
|
|
1228
1228
|
if (!response.errors) {
|
|
1229
|
-
if (
|
|
1229
|
+
if (ServiceUtil.checkClientError(response)) {
|
|
1230
1230
|
if (useMessage === true) UiUtil.showToast('info', TermsUtil.tText('success to process'))
|
|
1231
1231
|
return response
|
|
1232
1232
|
}
|
|
@@ -11,9 +11,9 @@ import { i18next } from '@operato/i18n'
|
|
|
11
11
|
*/
|
|
12
12
|
export class TermsUtil {
|
|
13
13
|
/**
|
|
14
|
-
* 용어 : 용어 키 - 용어 표현 값
|
|
14
|
+
* 용어 : 용어 키 - 용어 표현 값
|
|
15
15
|
*/
|
|
16
|
-
META_TERMS = null
|
|
16
|
+
static META_TERMS = null
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* @description 서버에 현재 로케일에 맞는 용어를 모두 조회
|
|
@@ -24,11 +24,11 @@ export class TermsUtil {
|
|
|
24
24
|
let res = await TermsUtil.fetchTerminologies(locale)
|
|
25
25
|
let records = res.records
|
|
26
26
|
|
|
27
|
-
if(records && records.length > 0) {
|
|
28
|
-
|
|
27
|
+
if (records && records.length > 0) {
|
|
28
|
+
TermsUtil.META_TERMS = {}
|
|
29
29
|
records.forEach(r => {
|
|
30
|
-
let name = `${r.category}.${r.name}
|
|
31
|
-
|
|
30
|
+
let name = `${r.category}.${r.name}`
|
|
31
|
+
TermsUtil.META_TERMS[name] = r.display
|
|
32
32
|
})
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -40,10 +40,10 @@ export class TermsUtil {
|
|
|
40
40
|
* @returns {Array} 용어 리스트
|
|
41
41
|
*/
|
|
42
42
|
static async fetchTerminologies(locale) {
|
|
43
|
-
let filters = [{ name
|
|
44
|
-
let sortings = [
|
|
45
|
-
let page = 0
|
|
46
|
-
let limit = 0
|
|
43
|
+
let filters = [{ name: 'locale', operator: 'eq', value: locale }]
|
|
44
|
+
let sortings = [{ name: 'category' }, { name: 'name' }]
|
|
45
|
+
let page = 0
|
|
46
|
+
let limit = 0
|
|
47
47
|
|
|
48
48
|
const response = await client.query({
|
|
49
49
|
query: gql`
|
|
@@ -55,14 +55,14 @@ export class TermsUtil {
|
|
|
55
55
|
category
|
|
56
56
|
display
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
|
|
59
59
|
total
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
`,
|
|
63
63
|
variables: { filters, sortings, pagination: { page, limit } }
|
|
64
64
|
})
|
|
65
|
-
|
|
65
|
+
|
|
66
66
|
if (!response.errors) {
|
|
67
67
|
return {
|
|
68
68
|
records: response.data.terminologies.items || [],
|
|
@@ -79,8 +79,8 @@ export class TermsUtil {
|
|
|
79
79
|
* @returns 번역된 라벨 (필드) 명
|
|
80
80
|
*/
|
|
81
81
|
static tLabel(labelName, params) {
|
|
82
|
-
let labelValue = TermsUtil.translate('label', labelName, params, null)
|
|
83
|
-
return labelValue ? labelValue : TermsUtil.translate('field', labelName, params, labelName)
|
|
82
|
+
let labelValue = TermsUtil.translate('label', labelName, params, null)
|
|
83
|
+
return labelValue ? labelValue : TermsUtil.translate('field', labelName, params, labelName)
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
/**
|
|
@@ -91,8 +91,8 @@ export class TermsUtil {
|
|
|
91
91
|
* @returns 번역된 필드 명
|
|
92
92
|
*/
|
|
93
93
|
static tField(fieldName, params) {
|
|
94
|
-
let fieldValue = TermsUtil.translate('field', fieldName, params, null)
|
|
95
|
-
return fieldValue ? fieldValue : TermsUtil.translate('field', fieldName, params, fieldName)
|
|
94
|
+
let fieldValue = TermsUtil.translate('field', fieldName, params, null)
|
|
95
|
+
return fieldValue ? fieldValue : TermsUtil.translate('field', fieldName, params, fieldName)
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
/**
|
|
@@ -101,8 +101,8 @@ export class TermsUtil {
|
|
|
101
101
|
* @param {String} buttonName
|
|
102
102
|
* @returns 번역된 버튼 명
|
|
103
103
|
*/
|
|
104
|
-
|
|
105
|
-
return TermsUtil.translate('button', buttonName, null, buttonName)
|
|
104
|
+
static tButton(buttonName) {
|
|
105
|
+
return TermsUtil.translate('button', buttonName, null, buttonName)
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
/**
|
|
@@ -113,8 +113,8 @@ export class TermsUtil {
|
|
|
113
113
|
* @returns 번역된 타이틀 명
|
|
114
114
|
*/
|
|
115
115
|
static tTitle(titleName, params) {
|
|
116
|
-
let titleValue = TermsUtil.translate('title', titleName, params, null)
|
|
117
|
-
return titleValue ? titleValue : TermsUtil.translate('menu', titleName, params, titleName)
|
|
116
|
+
let titleValue = TermsUtil.translate('title', titleName, params, null)
|
|
117
|
+
return titleValue ? titleValue : TermsUtil.translate('menu', titleName, params, titleName)
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
/**
|
|
@@ -123,12 +123,11 @@ export class TermsUtil {
|
|
|
123
123
|
* @param {String} menuName
|
|
124
124
|
* @returns 번역된 메뉴 명
|
|
125
125
|
*/
|
|
126
|
-
|
|
127
|
-
let menuValue = TermsUtil.translate('menu', menuName, null, null)
|
|
128
|
-
return menuValue ? menuValue : TermsUtil.translate('title', menuName, null, menuName)
|
|
126
|
+
static tMenu(menuName) {
|
|
127
|
+
let menuValue = TermsUtil.translate('menu', menuName, null, null)
|
|
128
|
+
return menuValue ? menuValue : TermsUtil.translate('title', menuName, null, menuName)
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
|
|
132
131
|
/**
|
|
133
132
|
* @description 텍스트 textName을 다국어 변환하여 리턴
|
|
134
133
|
***********************************************
|
|
@@ -137,7 +136,7 @@ export class TermsUtil {
|
|
|
137
136
|
* @returns 번역된 텍스트 값
|
|
138
137
|
*/
|
|
139
138
|
static tText(textName, params) {
|
|
140
|
-
return TermsUtil.translate('text', textName, params, textName)
|
|
139
|
+
return TermsUtil.translate('text', textName, params, textName)
|
|
141
140
|
}
|
|
142
141
|
|
|
143
142
|
/**
|
|
@@ -147,8 +146,8 @@ export class TermsUtil {
|
|
|
147
146
|
* @param {Object} params
|
|
148
147
|
* @returns 번역된 에러 메시지
|
|
149
148
|
*/
|
|
150
|
-
|
|
151
|
-
return TermsUtil.translate('error', errorName, params, errorName)
|
|
149
|
+
static tError(errorName, params) {
|
|
150
|
+
return TermsUtil.translate('error', errorName, params, errorName)
|
|
152
151
|
}
|
|
153
152
|
|
|
154
153
|
/**
|
|
@@ -161,33 +160,33 @@ export class TermsUtil {
|
|
|
161
160
|
* @returns termKey 다국어 변환 값
|
|
162
161
|
*/
|
|
163
162
|
static translate(termCategory, termName, parameters, defaultValue) {
|
|
164
|
-
let termKey = termCategory + '.' + termName
|
|
165
|
-
return TermsUtil.t(termKey, parameters, defaultValue)
|
|
163
|
+
let termKey = termCategory + '.' + termName
|
|
164
|
+
return TermsUtil.t(termKey, parameters, defaultValue)
|
|
166
165
|
}
|
|
167
166
|
|
|
168
167
|
/**
|
|
169
168
|
* @description termKey로 다국어 변환하여 parameters로 파라미터 처리하여 리턴, 변환값이 없다면 defaultValue 리턴, defaultValue가 없다면 null 리턴
|
|
170
169
|
***********************************************
|
|
171
|
-
* @param {String} termKey 용어 키 : {용어 카테고리}'.'{용어 이름}
|
|
170
|
+
* @param {String} termKey 용어 키 : {용어 카테고리}'.'{용어 이름}
|
|
172
171
|
* @param {Object} parameters 용어 이름에 파라미터가 있는 경우 파라미터 치환 처리할 오브젝트 데이터 {key1 : value1, key2 : value2} 형식 ...
|
|
173
172
|
* @param {String} defaultValue
|
|
174
173
|
* @returns termKey 다국어 변환 값
|
|
175
174
|
*/
|
|
176
|
-
|
|
177
|
-
let translated =
|
|
178
|
-
translated = translated ? translated : i18next.t(termKey)
|
|
179
|
-
|
|
180
|
-
if (translated &&
|
|
181
|
-
if(parameters) {
|
|
182
|
-
Object.keys(parameters).forEach(function(param) {
|
|
183
|
-
var bracedData = '\\' + '{' + param.replace(/\$/, '\\$') + '\\' + '}'
|
|
184
|
-
var regEx = new RegExp(bracedData,
|
|
185
|
-
translated = translated.replace(regEx, parameters[param])
|
|
186
|
-
})
|
|
175
|
+
static t(termKey, parameters, defaultValue) {
|
|
176
|
+
let translated = TermsUtil.META_TERMS ? TermsUtil.META_TERMS[termKey] : null
|
|
177
|
+
translated = translated ? translated : i18next.t(termKey)
|
|
178
|
+
|
|
179
|
+
if (translated && termKey != translated) {
|
|
180
|
+
if (parameters) {
|
|
181
|
+
Object.keys(parameters).forEach(function (param) {
|
|
182
|
+
var bracedData = '\\' + '{' + param.replace(/\$/, '\\$') + '\\' + '}'
|
|
183
|
+
var regEx = new RegExp(bracedData, 'gi')
|
|
184
|
+
translated = translated.replace(regEx, parameters[param])
|
|
185
|
+
})
|
|
187
186
|
}
|
|
188
187
|
return translated
|
|
189
188
|
} else {
|
|
190
189
|
return defaultValue
|
|
191
190
|
}
|
|
192
191
|
}
|
|
193
|
-
}
|
|
192
|
+
}
|
package/client/utils/ui-util.js
CHANGED
|
@@ -7,7 +7,6 @@ import { getEditor } from '@operato/data-grist'
|
|
|
7
7
|
|
|
8
8
|
import { TermsUtil } from './terms-util'
|
|
9
9
|
import { ValueUtil } from './value-util'
|
|
10
|
-
import { MetaUiUtil } from './meta-ui-util'
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* @license
|
|
@@ -102,9 +101,7 @@ export class UiUtil {
|
|
|
102
101
|
*/
|
|
103
102
|
static async openDynamicPopup(title, popupConfig, paramData, popupCloseCallback) {
|
|
104
103
|
// 부모 필드
|
|
105
|
-
let parentValue = ValueUtil.isNotEmpty(popupConfig.parent_field)
|
|
106
|
-
? ValueUtil.getParams(paramData, ...popupConfig.parent_field.split('.'))
|
|
107
|
-
: undefined
|
|
104
|
+
let parentValue = ValueUtil.isNotEmpty(popupConfig.parent_field) ? ValueUtil.getParams(paramData, ...popupConfig.parent_field.split('.')) : undefined
|
|
108
105
|
|
|
109
106
|
// 팝업 엘리먼트 생성
|
|
110
107
|
let htmlText = `<${popupConfig.tagname} route_name='${popupConfig.menu}' parent_id='${parentValue}' is_popup=true></${popupConfig.tagname}>`
|
|
@@ -255,7 +252,7 @@ export class UiUtil {
|
|
|
255
252
|
* @returns {Object} 필터 폼 내의 에디터들이 가지고 있는 값을 키-값 형태로 추출
|
|
256
253
|
*/
|
|
257
254
|
static getFilterFormData(filterForm) {
|
|
258
|
-
let formValues = {}
|
|
255
|
+
let formValues = {}
|
|
259
256
|
|
|
260
257
|
if (ValueUtil.isNotEmpty(filterForm)) {
|
|
261
258
|
let filters = filterForm.filters()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '@material/mwc-icon'
|
|
2
|
-
import '
|
|
3
|
-
import '
|
|
2
|
+
import '@operato/menu/ox-menu-portrait.js'
|
|
3
|
+
import '@operato/menu/ox-menu-landscape.js'
|
|
4
4
|
|
|
5
5
|
import { css, html, LitElement } from 'lit'
|
|
6
6
|
import { connect } from 'pwa-helpers'
|
|
@@ -9,10 +9,7 @@ import { store } from '@operato/shell'
|
|
|
9
9
|
import { ScrollbarStyles } from '@operato/styles'
|
|
10
10
|
|
|
11
11
|
function isActiveMenu(menu, path) {
|
|
12
|
-
return (
|
|
13
|
-
menu.path?.split('?')[0] === path ||
|
|
14
|
-
(menu.active && typeof menu.active === 'function' && menu.active.call(menu, { path }))
|
|
15
|
-
)
|
|
12
|
+
return menu.path?.split('?')[0] === path || (menu.active && typeof menu.active === 'function' && menu.active.call(menu, { path }))
|
|
16
13
|
}
|
|
17
14
|
|
|
18
15
|
export class DynamicMenuPart extends connect(store)(LitElement) {
|
|
@@ -42,14 +39,6 @@ export class DynamicMenuPart extends connect(store)(LitElement) {
|
|
|
42
39
|
background-color: var(--theme-white-color);
|
|
43
40
|
}
|
|
44
41
|
|
|
45
|
-
:host::before {
|
|
46
|
-
content: '';
|
|
47
|
-
position: absolute;
|
|
48
|
-
width: 100%;
|
|
49
|
-
height: 3px;
|
|
50
|
-
background-color: rgba(0, 0, 0, 0.1);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
42
|
:host([landscape]) {
|
|
54
43
|
overflow-x: auto;
|
|
55
44
|
flex-direction: row;
|
|
@@ -57,8 +46,8 @@ export class DynamicMenuPart extends connect(store)(LitElement) {
|
|
|
57
46
|
min-height: 20px;
|
|
58
47
|
}
|
|
59
48
|
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
ox-menu-portrait,
|
|
50
|
+
ox-menu-landscape {
|
|
62
51
|
flex: 1;
|
|
63
52
|
}
|
|
64
53
|
`
|
|
@@ -69,18 +58,8 @@ export class DynamicMenuPart extends connect(store)(LitElement) {
|
|
|
69
58
|
return html`
|
|
70
59
|
<slot name="head"></slot>
|
|
71
60
|
${this.orientation !== 'landscape'
|
|
72
|
-
? html`<
|
|
73
|
-
|
|
74
|
-
.activeTopLevel=${this._activeTopLevel}
|
|
75
|
-
.activeMenu=${this._activeMenu}
|
|
76
|
-
.path=${this._path}
|
|
77
|
-
></dynamic-menu-portrait>`
|
|
78
|
-
: html`<dynamic-menu-landscape
|
|
79
|
-
.menus=${this.menus}
|
|
80
|
-
.activeTopLevel=${this._activeTopLevel}
|
|
81
|
-
.activeMenu=${this._activeMenu}
|
|
82
|
-
.path=${this._path}
|
|
83
|
-
></dynamic-menu-landscape>`}
|
|
61
|
+
? html`<ox-menu-portrait .menus=${this.menus} .activeTopLevel=${this._activeTopLevel} .activeMenu=${this._activeMenu} .path=${this._path}></ox-menu-portrait>`
|
|
62
|
+
: html`<ox-menu-landscape .menus=${this.menus} .activeTopLevel=${this._activeTopLevel} .activeMenu=${this._activeMenu} .path=${this._path}></ox-menu-landscape>`}
|
|
84
63
|
<slot name="tail"></slot>
|
|
85
64
|
`
|
|
86
65
|
}
|