@things-factory/meta-ui 8.0.40 → 9.0.0-9.0.0-beta.59.0

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 (118) hide show
  1. package/dist-client/bootstrap.d.ts +5 -5
  2. package/dist-client/bootstrap.js +20 -20
  3. package/dist-client/bootstrap.js.map +1 -1
  4. package/dist-client/tsconfig.tsbuildinfo +1 -1
  5. package/dist-client/utils/service-util.d.ts +2 -2
  6. package/dist-client/utils/service-util.js +4 -4
  7. package/dist-client/utils/service-util.js.map +1 -1
  8. package/dist-server/tsconfig.tsbuildinfo +1 -1
  9. package/package.json +24 -24
  10. package/client/bootstrap.ts +0 -170
  11. package/client/component/filter/filter-form-meta-code-select.ts +0 -102
  12. package/client/component/filter/filter-form-meta-object-select.ts +0 -107
  13. package/client/component/filter/filter-grist-meta-code-select.ts +0 -97
  14. package/client/component/filter/filter-grist-meta-object-select.ts +0 -102
  15. package/client/component/grist/editor/grist-editor-code-input.js +0 -96
  16. package/client/component/grist/editor/grist-editor-meta-code-selector.js +0 -157
  17. package/client/component/grist/editor/grist-editor-meta-object-selector.js +0 -122
  18. package/client/component/grist/renderer/grist-renderer-code-input.js +0 -20
  19. package/client/component/grist/renderer/grist-renderer-meta-code-selector.js +0 -28
  20. package/client/component/grist/renderer/grist-renderer-meta-object-selector.js +0 -25
  21. package/client/component/popup/code-input-editor-popup.js +0 -111
  22. package/client/component/popup/file-upload-popup.js +0 -129
  23. package/client/component/popup/meta-object-selector-popup.ts +0 -356
  24. package/client/component/popup/record-based-code-editor-popup.ts +0 -141
  25. package/client/dynamic-menus.ts +0 -38
  26. package/client/index.ts +0 -18
  27. package/client/load-components.ts +0 -17
  28. package/client/mixin/meta-base-mixin.js +0 -323
  29. package/client/mixin/meta-basic-grist-mixin.js +0 -283
  30. package/client/mixin/meta-button-mixin.js +0 -116
  31. package/client/mixin/meta-form-mixin.js +0 -435
  32. package/client/mixin/meta-grist-tab-mixin.js +0 -335
  33. package/client/mixin/meta-main-tab-mixin.js +0 -267
  34. package/client/mixin/meta-master-detail-mixin.js +0 -395
  35. package/client/mixin/meta-service-mixin.js +0 -306
  36. package/client/mixin/meta-tab-detail-mixin.js +0 -283
  37. package/client/mixin/meta-tab-mixin.js +0 -190
  38. package/client/pages/activity/meta-activity-define-page.js +0 -422
  39. package/client/pages/activity/meta-activity-list-page.js +0 -262
  40. package/client/pages/activity/meta-activity-viewer-element.js +0 -35
  41. package/client/pages/activity/meta-activity-writer-element.js +0 -48
  42. package/client/pages/activity/meta-activiy-mixin.js +0 -79
  43. package/client/pages/button-role/button-role-detail.js +0 -50
  44. package/client/pages/button-role/button-role-page.js +0 -25
  45. package/client/pages/doc-number/doc-number-page.js +0 -24
  46. package/client/pages/doc-number/next-doc-number-popup.js +0 -25
  47. package/client/pages/entity/config-entity.js +0 -955
  48. package/client/pages/entity/main-menu-selector.js +0 -245
  49. package/client/pages/history/history-copy-list-popup.js +0 -145
  50. package/client/pages/history/history-json-list-popup.js +0 -159
  51. package/client/pages/menu/dynamic-menu-template.js +0 -92
  52. package/client/pages/menu/dynamic-menu.ts +0 -744
  53. package/client/pages/menu/export-menu-popup.js +0 -468
  54. package/client/pages/meta-form-element.js +0 -9
  55. package/client/pages/meta-grist-element.js +0 -12
  56. package/client/pages/meta-grist-page.js +0 -16
  57. package/client/pages/meta-grist-tab-element.js +0 -16
  58. package/client/pages/meta-grist-tab-page.js +0 -16
  59. package/client/pages/meta-main-tab-element.js +0 -12
  60. package/client/pages/meta-main-tab-page.js +0 -16
  61. package/client/pages/meta-master-detail-element.js +0 -12
  62. package/client/pages/meta-master-detail-page.js +0 -16
  63. package/client/pages/meta-tab-detail-element.js +0 -12
  64. package/client/pages/meta-tab-detail-page.js +0 -16
  65. package/client/pages/meta-tab-element.js +0 -15
  66. package/client/pages/printer-device/printer-device-page.js +0 -24
  67. package/client/pages/template/doc-template-page.js +0 -24
  68. package/client/pages/template/template-file-page.js +0 -24
  69. package/client/pages/terms/config-terminology.js +0 -214
  70. package/client/pages/work-code/work-code-detail-popup.js +0 -16
  71. package/client/pages/work-code/work-code-page.js +0 -23
  72. package/client/route.ts +0 -36
  73. package/client/tsconfig.json +0 -13
  74. package/client/utils/grist-default-value.js +0 -36
  75. package/client/utils/meta-api.js +0 -811
  76. package/client/utils/meta-crypto.js +0 -52
  77. package/client/utils/meta-ui-util.js +0 -3304
  78. package/client/utils/rest-service-util.js +0 -328
  79. package/client/utils/service-util.js +0 -1327
  80. package/client/utils/terms-util.ts +0 -119
  81. package/client/utils/ui-util.js +0 -338
  82. package/client/utils/value-util.js +0 -234
  83. package/server/activity/CommonActivity.ts +0 -68
  84. package/server/index.ts +0 -3
  85. package/server/routes.ts +0 -61
  86. package/server/service/button-role/button-role-mutation.ts +0 -105
  87. package/server/service/button-role/button-role-query.ts +0 -53
  88. package/server/service/button-role/button-role-type.ts +0 -39
  89. package/server/service/button-role/button-role.ts +0 -61
  90. package/server/service/button-role/index.ts +0 -7
  91. package/server/service/dynamic-menu/dynamic-menu-query.ts +0 -270
  92. package/server/service/dynamic-menu/dynamic-menu-type.ts +0 -74
  93. package/server/service/dynamic-menu/index.ts +0 -3
  94. package/server/service/entity-event-subscriber/entity-event-subscriber.ts +0 -80
  95. package/server/service/entity-event-subscriber/index.ts +0 -3
  96. package/server/service/index.ts +0 -41
  97. package/server/service/menu-button-auth/index.ts +0 -7
  98. package/server/service/menu-button-auth/menu-button-auth-mutation.ts +0 -133
  99. package/server/service/menu-button-auth/menu-button-auth-query.ts +0 -138
  100. package/server/service/menu-button-auth/menu-button-auth-type.ts +0 -63
  101. package/server/service/menu-button-auth/menu-button-auth.ts +0 -92
  102. package/server/service/meta-activity/index.ts +0 -5
  103. package/server/service/meta-activity/meta-activity-mutation.ts +0 -191
  104. package/server/service/meta-activity/meta-activity-query.ts +0 -43
  105. package/server/service/meta-activity/meta-activity-type.ts +0 -56
  106. package/server/service/set-translations/index.ts +0 -3
  107. package/server/service/set-translations/set-translation-resolver.ts +0 -63
  108. package/server/service/work-code/index.ts +0 -6
  109. package/server/service/work-code/work-code-mutation.ts +0 -147
  110. package/server/service/work-code/work-code-query.ts +0 -67
  111. package/server/service/work-code/work-code-type.ts +0 -60
  112. package/server/service/work-code/work-code.ts +0 -83
  113. package/server/service/work-code-detail/index.ts +0 -6
  114. package/server/service/work-code-detail/work-code-detail-mutation.ts +0 -149
  115. package/server/service/work-code-detail/work-code-detail-query.ts +0 -59
  116. package/server/service/work-code-detail/work-code-detail-type.ts +0 -50
  117. package/server/service/work-code-detail/work-code-detail.ts +0 -82
  118. package/server/tsconfig.json +0 -9
@@ -1,744 +0,0 @@
1
- import '@material/web/icon/icon.js'
2
- import '@things-factory/form-ui'
3
-
4
- import gql from 'graphql-tag'
5
- import { html } from 'lit'
6
- import { customElement, property, state, query } from 'lit/decorators.js'
7
-
8
- import { PageView } from '@operato/shell'
9
- import { client } from '@operato/graphql'
10
- import { i18next, localize } from '@operato/i18n'
11
- import { p13n } from '@operato/p13n'
12
- import { OxFiltersFormBase } from '@operato/form'
13
-
14
- import { TermsUtil } from './../../utils/terms-util'
15
- import { MetaApi } from '../../utils/meta-api'
16
-
17
- import './dynamic-menu-template.js'
18
- import './export-menu-popup.js'
19
- import { ValueUtil } from '../../utils/value-util'
20
- import { UiUtil } from '../../utils/ui-util'
21
- import { DataGrist, FetchOption } from '@operato/data-grist'
22
-
23
- @customElement('dynamic-menu')
24
- export class DynamicMenu extends p13n(localize(i18next)(PageView)) {
25
- static styles = [...MetaApi.getBasicMasterDetailGristStyle('top-down')]
26
-
27
- @state() searchFields?: string[]
28
- @state() groupConfig: any
29
- @state() detailConfig: any
30
-
31
- @query('ox-filters-form-base') searchForm!: OxFiltersFormBase
32
- @query('#master-grist') groupGrist!: DataGrist
33
- @query('#detail-grist') detailGrist!: DataGrist
34
-
35
- private menuGroupId?: string
36
-
37
- render() {
38
- return html`
39
- <div slot="headroom" class="header">
40
- <div class="filters">
41
- <ox-filters-form-base
42
- .filters=${this.searchFields || []}
43
- @filters-change=${e => {
44
- this.groupGrist?.fetch()
45
- }}
46
- ></ox-filters-form-base>
47
- </div>
48
- </div>
49
-
50
- <div class="container">
51
- <div class="container_detail">
52
- <!--h2>
53
- <md-icon>list_alt</md-icon>${TermsUtil.tTitle('menu_group')}
54
- </h2-->
55
- <ox-grist
56
- id="master-grist"
57
- .config=${this.groupConfig}
58
- .mode=${MetaApi.isMobileEnv() ? 'LIST' : 'GRID'}
59
- .personalConfigProvider=${this.getPagePreferenceProvider('master-grist')!}
60
- .fetchHandler=${this.fetchGroupHandler.bind(this)}
61
- >
62
- <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
63
- </ox-grist>
64
- <div class="button-container">
65
- <button @click=${e => this.saveGroup()}><md-icon>save</md-icon>${TermsUtil.tButton('save')}</button>
66
- <button danger @click=${e => this.deleteGroup()}>
67
- <md-icon>delete</md-icon>${TermsUtil.tButton('delete')}
68
- </button>
69
- </div>
70
- </div>
71
-
72
- <div class="container_detail">
73
- <ox-grist
74
- id="detail-grist"
75
- .config=${this.detailConfig}
76
- .mode=${MetaApi.isMobileEnv() ? 'LIST' : 'GRID'}
77
- .fetchHandler=${this.fetchDetailHandler.bind(this)}
78
- .personalConfigProvider=${this.getPagePreferenceProvider('detail-grist')!}
79
- explcit-fetch
80
- >
81
- <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
82
- </ox-grist>
83
- <div class="button-container">
84
- <button @click=${e => this.copyMenu()}><md-icon>content_copy</md-icon>${TermsUtil.tButton('copy')}</button>
85
- <button @click=${e => this.saveMenu()}><md-icon>save</md-icon>${TermsUtil.tButton('save')}</button>
86
- <button danger @click=${e => this.deleteMenu()}>
87
- <md-icon>delete</md-icon>${TermsUtil.tButton('delete')}
88
- </button>
89
- </div>
90
- </div>
91
- </div>
92
- `
93
- }
94
-
95
- get context() {
96
- return {
97
- title: TermsUtil.tTitle('dynamic_menu')
98
- }
99
- }
100
-
101
- /*******************************************/
102
- /* 조회 */
103
- /*******************************************/
104
-
105
- /**
106
- * @description 부모 메뉴 (메뉴 그룹) 선택시 하위 메뉴 리스트 조회
107
- *********************************
108
- * @param {Object} param0
109
- */
110
- async fetchDetailHandler({ page, limit = 999999, sorters = [{ name: 'rank' }, { name: 'name' }] }: FetchOption) {
111
- if (this.menuGroupId) {
112
- let filters = [
113
- {
114
- name: 'parentId',
115
- operator: 'eq',
116
- value: this.menuGroupId
117
- },
118
- ...(await this.searchForm.getQueryFilters()).filter(x => ['templateCode', 'templateText'].includes(x.name))
119
- ]
120
-
121
- let selectFields = `
122
- id
123
- name
124
- rank
125
- description
126
- menuType
127
- category
128
- resourceUrl
129
- routingType
130
- routing
131
- hiddenFlag
132
- iconPath
133
- parent {
134
- id
135
- name
136
- routing
137
- }
138
- role {
139
- id
140
- name
141
- description
142
- }
143
- `
144
-
145
- limit = 999999
146
- let fetchResult = await MetaApi.searchByPagination('dynamicMenus', filters, sorters, page, limit, selectFields)
147
-
148
- if (fetchResult && fetchResult.records) {
149
- fetchResult.records.forEach(x => {
150
- x.parentId = this.menuGroupId
151
- })
152
- }
153
-
154
- return fetchResult
155
- }
156
- }
157
-
158
- /**
159
- * @description 부모 메뉴 (메뉴 그룹) 조회
160
- ****************************************
161
- * @param {Object} param0
162
- * @returns
163
- */
164
- async fetchGroupHandler({ page, limit = 999999, sorters = [{ name: 'rank' }, { name: 'name' }] }: FetchOption) {
165
- // 선택된 부모 메뉴 ID 초기화
166
- this.menuGroupId = ''
167
-
168
- if (this.detailGrist && this.detailGrist.data) {
169
- this.detailGrist.data = { records: [] }
170
- }
171
-
172
- let filters = [...(await this.searchForm.getQueryFilters()), { name: 'parentId', operator: 'is_null', value: '' }]
173
-
174
- let selectFields = `
175
- id
176
- name
177
- rank
178
- description
179
- menuType
180
- category
181
- resourceUrl
182
- routing
183
- hiddenFlag
184
- iconPath
185
- role {
186
- id
187
- name
188
- description
189
- }
190
- `
191
- limit = 999999
192
- return await MetaApi.searchByPagination('dynamicMenus', filters, sorters, page, limit, selectFields)
193
- }
194
-
195
- /*******************************************/
196
- /* 트랜잭션 (저장 , 삭제) */
197
- /*******************************************/
198
-
199
- /**
200
- * 메뉴 그룹 Create / Update
201
- */
202
- async saveGroup() {
203
- var patches = this.groupGrist.dirtyRecords
204
-
205
- if (ValueUtil.isNotEmpty(patches)) {
206
- patches = patches.map(patch => {
207
- const {
208
- creator,
209
- updater,
210
- createdAt,
211
- updatedAt,
212
- __dirty__,
213
- __dirtyfields__,
214
- __origin__,
215
- __seq__,
216
- __selected__,
217
- ...others
218
- } = patch
219
-
220
- patch = others
221
-
222
- if (patch.hiddenFlag === undefined || patch.hiddenFlag == null) {
223
- patch.hiddenFlag = false
224
- }
225
-
226
- patch.cuFlag = __dirty__
227
-
228
- return patch
229
- })
230
-
231
- let result = await MetaApi.updateMultiple('updateMultipleMenu', patches)
232
- if (result) {
233
- this.groupGrist.fetch()
234
- }
235
- }
236
- }
237
-
238
- /**
239
- * 메뉴 그룹 Delete
240
- * @returns
241
- */
242
- async deleteGroup() {
243
- await MetaApi.deleteListByGristSelected(this.groupGrist, 'deleteMenus')
244
- }
245
-
246
- /**
247
- * 메뉴 Create / Update
248
- */
249
- async saveMenu() {
250
- var patches = this.detailGrist.dirtyRecords
251
-
252
- if (ValueUtil.isNotEmpty(patches)) {
253
- patches = patches.map(patch => {
254
- const {
255
- creator,
256
- updater,
257
- createdAt,
258
- updatedAt,
259
- __dirty__,
260
- __dirtyfields__,
261
- __origin__,
262
- __seq__,
263
- __selected__,
264
- ...others
265
- } = patch
266
-
267
- patch = others
268
- patch.menuType = patch.menuType || 'SCREEN'
269
-
270
- if (!patch.parentId) {
271
- patch.parent = { id: this.menuGroupId }
272
- } else {
273
- patch.parent = { id: patch.parentId }
274
- }
275
-
276
- delete patch.parentId
277
-
278
- if (patch.hiddenFlag === undefined || patch.hiddenFlag == null) {
279
- patch.hiddenFlag = false
280
- }
281
-
282
- patch.cuFlag = __dirty__
283
-
284
- return patch
285
- })
286
-
287
- const response = await client.mutate({
288
- mutation: gql`
289
- mutation UpdateMultipleMenu($patches: [MenuPatch!]!) {
290
- updateMultipleMenu(patches: $patches) {
291
- id
292
- }
293
- }
294
- `,
295
- variables: {
296
- patches
297
- }
298
- })
299
-
300
- if (!response.errors) {
301
- const result = response.data.updateMultipleMenu
302
-
303
- if (result) {
304
- this.detailGrist.fetch()
305
- }
306
- }
307
- }
308
- }
309
-
310
- async exportMenu(record) {
311
- let exportMenuElement = MetaApi.createCustomElement('export-menu-popup', 'export-menu-popup')
312
-
313
- exportMenuElement.title = TermsUtil.tLabel('export')
314
- ;(exportMenuElement as any).recordId = record.id
315
- ;(exportMenuElement as any).recordName = record.name
316
-
317
- await MetaApi.openPopupByElement(record.name, 'large', exportMenuElement, true)
318
- }
319
-
320
- /**
321
- * 메뉴 Delete
322
- * @returns
323
- */
324
- async deleteMenu() {
325
- await MetaApi.deleteListByGristSelected(this.detailGrist, 'deleteMenus')
326
- }
327
-
328
- /**
329
- * 메뉴 복사
330
- */
331
- async copyMenu() {
332
- let selectMenus = this.detailGrist.selected
333
-
334
- if (!selectMenus || selectMenus.length == 0) {
335
- UiUtil.showAlertPopup('text.nothing_selected', 'text.there_is_no_selected_items', 'info', 'confirm')
336
- return
337
- }
338
-
339
- let copyMenu = selectMenus[0]
340
-
341
- if (!copyMenu.id) {
342
- return
343
- }
344
-
345
- Object.keys(copyMenu).forEach(x => {
346
- if (x.startsWith('__')) {
347
- delete copyMenu[x]
348
- }
349
- })
350
-
351
- let menu = await MetaApi.findOne('menu', copyMenu.id, 'template')
352
- copyMenu.template = menu ? menu.template || '' : ''
353
-
354
- copyMenu.rank = 99999
355
- copyMenu.cuFlag = '+'
356
-
357
- copyMenu.name = copyMenu.name + '-copy'
358
- copyMenu.routing = copyMenu.routing + '-copy'
359
- copyMenu.parent = { id: copyMenu.parentId }
360
- delete copyMenu.id
361
- delete copyMenu.parentId
362
-
363
- let result = await MetaApi.updateMultiple('updateMultipleMenu', [copyMenu])
364
- if (result) {
365
- this.detailGrist.fetch()
366
- }
367
- }
368
-
369
- groupMenuQuery(record) {
370
- this.menuGroupId = record.id
371
- this.detailGrist.fetch()
372
- }
373
-
374
- /**
375
- * 메뉴 템플릿을 편집 할 수 있는 팝업을 오픈한다.
376
- * @param {Object} record
377
- */
378
- async openMenuTemplatePopup(record) {
379
- let menuTemplateElement = MetaApi.createCustomElement('dynamic-menu-template', 'dynamic-menu-template')
380
-
381
- menuTemplateElement.title = TermsUtil.tLabel('template')
382
- ;(menuTemplateElement as any).recordId = record.id
383
-
384
- await MetaApi.openPopupByElement(record.name, 'large', menuTemplateElement, true)
385
- }
386
-
387
- /**
388
- * 메뉴 템플릿을 생성 할 수 있는 화면으로 이동한다.
389
- * @param {Object} record
390
- */
391
- navigateMetaGenerator(record) {
392
- MetaApi.pageNavigate(`meta-generator?menuId=${record.id}`)
393
- }
394
-
395
- /**
396
- * LifeCycle - 화면 레더링 설정
397
- */
398
- async pageInitialized(lifecycle) {
399
- // 조회 필드
400
- this.searchFields = [
401
- // name, type, label, operator, optionValues
402
- MetaApi.getGristSearchColumnConfig('name', 'string', 'name', 'i_like'),
403
- // name, type, label, operator, codeName
404
- await MetaApi.getGristSearchCodeColumnConfig('menuType', 'select', 'menu_type', 'eq', 'MENU_TYPE'),
405
- // name, type, label, operator
406
- MetaApi.getGristSearchColumnConfig('hiddenFlag', 'checkbox', 'hidden', 'eq'),
407
- await MetaApi.getGristSearchCodeColumnConfig(
408
- 'templateCode',
409
- 'select',
410
- 'menu_template_search_code',
411
- 'eq',
412
- 'MENU_TEXT_SEARCH_TYPE'
413
- ),
414
- MetaApi.getGristSearchColumnConfig('templateText', 'string', 'menu_template_search_text', 'i_like')
415
- ]
416
-
417
- // 메뉴 그룹 그리드 설정
418
- this.groupConfig = {
419
- rows: MetaApi.getGristSelectableConfig(false),
420
- // 공간이 부족해서 페이지네이션 제거
421
- pagination: { infinite: true },
422
- appendable: true,
423
- columns: [
424
- ...MetaApi.getGristGuttersConfig(true, false),
425
- {
426
- type: 'gutter',
427
- gutterName: 'button',
428
- icon: 'menu_open',
429
- handlers: {
430
- click: (_columns, _data, _column, record, _rowIndex) => {
431
- if (record.id) {
432
- this.groupMenuQuery(record)
433
- }
434
- }
435
- }
436
- },
437
- {
438
- type: 'integer',
439
- name: 'rank',
440
- header: TermsUtil.tLabel('rank'),
441
- record: {
442
- align: 'left',
443
- editable: true,
444
- format: '#,###'
445
- },
446
- sortable: false,
447
- width: 60
448
- },
449
- // type, name, align, editable, sortable, width
450
- MetaApi.getGristColumnConfig('string', 'name', 'left', true, false, 200),
451
- {
452
- type: 'string',
453
- name: 'title',
454
- header: TermsUtil.tLabel('title'),
455
- record: {
456
- editable: false,
457
- align: 'left',
458
- renderer: (value, column, record, rowIndex, field) => {
459
- return record.name ? TermsUtil.tMenu(record.name) : ''
460
- }
461
- },
462
- sortable: false,
463
- width: 200
464
- },
465
- // name, displayName, align, sortable, width, mandatory, codeName
466
- await MetaApi.getGristCodeSelectorColumnConfig('menuType', 'menu_type', 'left', false, 90, true, 'MENU_TYPE'),
467
- // type, name, displayName, align, editable, sortable, width
468
- MetaApi.getGristColumnConfig2('string', 'iconPath', 'icon', 'left', true, false, 115),
469
- MetaApi.getGristColumnConfig2('boolean', 'hiddenFlag', 'hidden', 'center', true, false, 55),
470
- MetaApi.getGristColumnConfig2('string', 'routing', 'routing', 'left', true, false, 135),
471
- MetaApi.getGristColumnConfig2('string', 'category', 'tag', 'left', true, false, 135),
472
- MetaApi.getGristColumnConfig2('string', 'resourceUrl', 'page_location', 'left', true, false, 350),
473
- {
474
- type: 'resource-object',
475
- name: 'role',
476
- label: true,
477
- header: i18next.t('field.required role'),
478
- record: {
479
- editable: true,
480
- options: {
481
- title: i18next.t('title.lookup role'),
482
- queryName: 'roles'
483
- }
484
- },
485
- width: 200
486
- }
487
- ]
488
- }
489
-
490
- // 메뉴 그리드 설정
491
- this.detailConfig = {
492
- rows: MetaApi.getGristSelectableConfig(false),
493
- // 공간이 부족해서 페이지네이션 제거
494
- pagination: { infinite: true },
495
- appendable: true,
496
- columns: [
497
- ...MetaApi.getGristGuttersConfig(true, false),
498
- {
499
- type: 'gutter',
500
- gutterName: 'button',
501
- icon: 'download',
502
- handlers: {
503
- click: (_columns, _data, _column, record, _rowIndex) => {
504
- if (record.id) {
505
- this.exportMenu(record)
506
- }
507
- }
508
- }
509
- },
510
- {
511
- type: 'gutter',
512
- gutterName: 'button',
513
- icon: 'code',
514
- handlers: {
515
- click: (_columns, _data, _column, record, _rowIndex) => {
516
- if (record.id) {
517
- this.openMenuTemplatePopup(record)
518
- }
519
- }
520
- }
521
- },
522
- {
523
- type: 'gutter',
524
- gutterName: 'button',
525
- icon: 'construction',
526
- handlers: {
527
- click: (_columns, _data, _column, record, _rowIndex) => {
528
- if (record.id) {
529
- this.navigateMetaGenerator(record)
530
- }
531
- }
532
- }
533
- },
534
- {
535
- type: 'integer',
536
- name: 'rank',
537
- header: TermsUtil.tLabel('rank'),
538
- record: {
539
- align: 'left',
540
- editable: true,
541
- format: '#,###'
542
- },
543
- sortable: false,
544
- width: 60
545
- },
546
- MetaApi.getGristColumnConfig('string', 'name', 'left', true, false, 175),
547
- {
548
- type: 'string',
549
- name: 'title',
550
- header: TermsUtil.tLabel('title'),
551
- record: {
552
- editable: false,
553
- align: 'left',
554
- renderer: (value, column, record, rowIndex, field) => {
555
- return record.name ? TermsUtil.tMenu(record.name) : ''
556
- }
557
- },
558
- sortable: false,
559
- width: 175
560
- },
561
- // name, displayName, align, sortable, width, mandatory, codeName
562
- await MetaApi.getGristCodeSelectorColumnConfig(
563
- 'menuType',
564
- 'page_type',
565
- 'left',
566
- false,
567
- 90,
568
- true,
569
- 'MENU_PAGE_TYPE'
570
- ),
571
- await MetaApi.getGristCodeSelectorColumnConfig(
572
- 'routingType',
573
- 'routing_type',
574
- 'left',
575
- false,
576
- 0,
577
- false,
578
- 'MENU_PAGE_ROUTING_TYPE'
579
- ),
580
- // type, name, displayName, align, editable, sortable, width
581
- MetaApi.getGristColumnConfig2('string', 'routing', 'routing', 'left', true, false, 175),
582
- MetaApi.getGristColumnConfig2('string', 'category', 'tag', 'left', true, false, 175),
583
- MetaApi.getGristColumnConfig2('string', 'resourceUrl', 'page_location', 'left', true, false, 450),
584
- MetaApi.getGristColumnConfig2('string', 'iconPath', 'icon', 'left', true, false, 100),
585
- MetaApi.getGristColumnConfig2('boolean', 'hiddenFlag', 'hidden', 'center', true, false, 55),
586
- {
587
- type: 'resource-object',
588
- name: 'parent',
589
- header: TermsUtil.tLabel('parent-menu'),
590
- record: {
591
- renderer: (value, column, record, rowIndex, field) => {
592
- return value ? value.name + ' (' + TermsUtil.tMenu(value.name) + ')' : ''
593
- },
594
- editable: true,
595
- options: {
596
- title: TermsUtil.tLabel('parent-menu'),
597
- queryName: 'menus',
598
- pagination: { pages: [1000] },
599
- basicArgs: {
600
- filters: [
601
- {
602
- name: 'parentId',
603
- operator: 'is_null'
604
- }
605
- ],
606
- sortings: [
607
- {
608
- name: 'rank',
609
- desc: false
610
- }
611
- ]
612
- },
613
- list: { fields: ['id', 'name'] },
614
- columns: [
615
- { name: 'id', hidden: true },
616
- {
617
- name: 'rank',
618
- header: TermsUtil.tLabel('rank'),
619
- width: 75,
620
- record: {
621
- editable: false,
622
- format: '#,###',
623
- align: 'left'
624
- },
625
- sortable: true
626
- },
627
- {
628
- name: 'name',
629
- width: 300,
630
- header: TermsUtil.tLabel('name'),
631
- filter: 'search'
632
- },
633
- {
634
- name: 'description',
635
- width: 350,
636
- header: TermsUtil.tLabel('title'),
637
- record: {
638
- editable: false,
639
- renderer: function (value, column, record, rowIndex, field) {
640
- return TermsUtil.tMenu(record.name)
641
- }
642
- }
643
- },
644
- {
645
- type: 'code',
646
- name: 'menuType',
647
- width: 120,
648
- header: TermsUtil.tLabel('menu_type'),
649
- record: {
650
- editable: false,
651
- codeName: 'MENU_TYPE'
652
- }
653
- },
654
- {
655
- name: 'routing',
656
- width: 150,
657
- header: TermsUtil.tLabel('routing'),
658
- record: {
659
- editable: false
660
- }
661
- }
662
- ],
663
- valueField: 'id',
664
- nameField: 'name',
665
- descriptionField: 'routing'
666
- }
667
- },
668
- width: 200
669
- },
670
- {
671
- type: 'resource-object',
672
- name: 'role',
673
- label: true,
674
- header: i18next.t('field.required role'),
675
- record: {
676
- editable: true,
677
- options: {
678
- title: i18next.t('title.lookup role'),
679
- queryName: 'roles'
680
- }
681
- },
682
- width: 200
683
- }
684
- /*{
685
- type: 'meta-code-selector',
686
- header: TermsUtil.tLabel('parent-menu'),
687
- name: 'parentId',
688
- record: {
689
- editable: true,
690
- align: 'left',
691
- options: {
692
- codes: await ServiceUtil.getCodeByEntity({queryName:'menus', codeField:'id', dispField:'name', filters:[{ name: 'parentId', operator: 'is_null', value: '' }]}),
693
- queryName: 'menus',
694
- codeField: 'id',
695
- dispField: 'name',
696
- filterFields: [{name: 'name', operator: 'like'}],
697
- selectorName: TermsUtil.tLabel('parent-menu'),
698
- columns: [
699
- {
700
- name: 'id',
701
- hidden: true
702
- },
703
- //MetaApi.getGristColumnConfig('integer', 'rank', 'right', false, true, 65),
704
- {
705
- type: 'integer',
706
- name: 'rank',
707
- header: TermsUtil.tLabel('rank'),
708
- record: {
709
- align: 'left',
710
- editable: false,
711
- format: '#,###'
712
- },
713
- sortable: false,
714
- width: 65
715
- },
716
- MetaApi.getGristColumnConfig2('boolean', 'hiddenFlag', 'hidden', 'center', true, false, 60),
717
- {
718
- type:'select',
719
- name: 'menuType',
720
- header: 'menu_type',
721
- record: {
722
- align:'left',
723
- editable: false
724
- },
725
- options:{
726
- type: 'code',
727
- name: 'MENU_TYPE'
728
- },
729
- sortable: false,
730
- width: 100
731
- },
732
- MetaApi.getGristColumnConfig('string', 'name', 'left', false, true, 450)
733
- ],
734
- filters: [{ name: 'parentId', operator: 'is_null', value: '' }],
735
- sorters: [{ name: 'rank', desc: false }],
736
- }
737
- },
738
- sortable: false,
739
- width: 120
740
- }*/
741
- ]
742
- }
743
- }
744
- }