@things-factory/meta-ui 7.0.1-alpha.62 → 7.0.1-alpha.64

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 (50) hide show
  1. package/client/bootstrap.ts +0 -1
  2. package/client/component/popup/meta-object-selector-popup.ts +33 -6
  3. package/client/mixin/meta-basic-grist-mixin.js +233 -232
  4. package/client/mixin/meta-tab-detail-mixin.js +4 -0
  5. package/client/pages/activity/meta-activity-define-page.js +21 -7
  6. package/client/pages/activity/meta-activity-list-page.js +27 -6
  7. package/client/pages/entity/config-entity.js +176 -30
  8. package/client/pages/menu/dynamic-menu.js +45 -11
  9. package/client/pages/terms/config-terminology.js +17 -4
  10. package/client/utils/meta-ui-util.js +101 -95
  11. package/client/utils/service-util.js +21 -21
  12. package/dist-client/bootstrap.d.ts +0 -1
  13. package/dist-client/bootstrap.js +0 -1
  14. package/dist-client/bootstrap.js.map +1 -1
  15. package/dist-client/component/popup/meta-object-selector-popup.js +15 -3
  16. package/dist-client/component/popup/meta-object-selector-popup.js.map +1 -1
  17. package/dist-client/mixin/meta-basic-grist-mixin.d.ts +9 -19
  18. package/dist-client/mixin/meta-basic-grist-mixin.js +6 -7
  19. package/dist-client/mixin/meta-basic-grist-mixin.js.map +1 -1
  20. package/dist-client/mixin/meta-tab-detail-mixin.d.ts +6 -1
  21. package/dist-client/mixin/meta-tab-detail-mixin.js +2 -0
  22. package/dist-client/mixin/meta-tab-detail-mixin.js.map +1 -1
  23. package/dist-client/pages/activity/meta-activity-define-page.js +10 -1
  24. package/dist-client/pages/activity/meta-activity-define-page.js.map +1 -1
  25. package/dist-client/pages/activity/meta-activity-list-page.js +16 -5
  26. package/dist-client/pages/activity/meta-activity-list-page.js.map +1 -1
  27. package/dist-client/pages/button-role/button-role-detail.d.ts +2 -1
  28. package/dist-client/pages/entity/config-entity.js +69 -18
  29. package/dist-client/pages/entity/config-entity.js.map +1 -1
  30. package/dist-client/pages/menu/dynamic-menu.js +19 -8
  31. package/dist-client/pages/menu/dynamic-menu.js.map +1 -1
  32. package/dist-client/pages/meta-grist-element.d.ts +2 -1
  33. package/dist-client/pages/meta-grist-page.d.ts +2 -1
  34. package/dist-client/pages/meta-tab-detail-element.d.ts +1 -0
  35. package/dist-client/pages/meta-tab-detail-page.d.ts +1 -0
  36. package/dist-client/pages/terms/config-terminology.js +15 -4
  37. package/dist-client/pages/terms/config-terminology.js.map +1 -1
  38. package/dist-client/pages/work-code/work-code-detail-popup.d.ts +2 -1
  39. package/dist-client/tsconfig.tsbuildinfo +1 -1
  40. package/dist-client/utils/meta-ui-util.d.ts +0 -2
  41. package/dist-client/utils/meta-ui-util.js +96 -95
  42. package/dist-client/utils/meta-ui-util.js.map +1 -1
  43. package/dist-client/utils/service-util.d.ts +0 -1
  44. package/dist-client/utils/service-util.js +20 -21
  45. package/dist-client/utils/service-util.js.map +1 -1
  46. package/dist-server/service/dynamic-menu/dynamic-menu-query.js +20 -4
  47. package/dist-server/service/dynamic-menu/dynamic-menu-query.js.map +1 -1
  48. package/dist-server/tsconfig.tsbuildinfo +1 -1
  49. package/package.json +9 -8
  50. package/server/service/dynamic-menu/dynamic-menu-query.ts +40 -8
@@ -14,6 +14,8 @@ import { PageView } from '@operato/shell'
14
14
  import { CommonButtonStyles, CommonGristStyles, CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
15
15
  import { adjustFilters, isMobileDevice } from '@operato/utils'
16
16
 
17
+ import { PagePreferenceProviderImpl } from '@things-factory/personalization/dist-client/page-preference-provider-impl.js'
18
+
17
19
  import { MetaApi } from './../../utils/meta-api'
18
20
 
19
21
  class MetaActivityDefinePage extends localize(i18next)(PageView) {
@@ -96,7 +98,12 @@ class MetaActivityDefinePage extends localize(i18next)(PageView) {
96
98
  const mode = this.mode
97
99
 
98
100
  return html`
99
- <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
101
+ <ox-grist
102
+ .mode=${mode}
103
+ .config=${this.gristConfig}
104
+ .fetchHandler=${this.fetchHandler.bind(this)}
105
+ .personalConfigProvider=${this.personalConfigProvider}
106
+ >
100
107
  <div slot="headroom" class="header">
101
108
  <div class="filters">
102
109
  <ox-input-select-buttons
@@ -129,11 +136,15 @@ class MetaActivityDefinePage extends localize(i18next)(PageView) {
129
136
  <md-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</md-icon>
130
137
  </div>
131
138
  </div>
139
+
140
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
132
141
  </ox-grist>
133
142
  `
134
143
  }
135
144
 
136
145
  async pageInitialized(lifecycle) {
146
+ this.personalConfigProvider = new PagePreferenceProviderImpl(lifecycle.page, 'ox-grist')
147
+
137
148
  this.gristConfig = {
138
149
  pagination: MetaApi.getGristPagination100Config(),
139
150
  list: {
@@ -152,12 +163,15 @@ class MetaActivityDefinePage extends localize(i18next)(PageView) {
152
163
  handlers: {
153
164
  click: (columns, data, column, record, rowIndex) => {
154
165
  if (!record.id) return
155
- const popup = openPopup(html` <activity-model-item-list .activity=${record}></activity-model-item-list> `, {
156
- backdrop: true,
157
- help: 'worklist/activity/activity-model-item-list',
158
- size: 'large',
159
- title: i18next.t('title.activity model item list')
160
- })
166
+ const popup = openPopup(
167
+ html` <activity-model-item-list .activity=${record}></activity-model-item-list> `,
168
+ {
169
+ backdrop: true,
170
+ help: 'worklist/activity/activity-model-item-list',
171
+ size: 'large',
172
+ title: i18next.t('title.activity model item list')
173
+ }
174
+ )
161
175
  popup.onclosed = () => {
162
176
  this.grist?.fetch()
163
177
  }
@@ -1,11 +1,14 @@
1
1
  import gql from 'graphql-tag'
2
2
 
3
3
  import { html } from 'lit'
4
- import { CommonButtonStyles } from '@operato/styles'
4
+
5
5
  import { client } from '@operato/graphql'
6
- import { i18next, localize } from '@things-factory/i18n-base'
7
- import { PageView } from '@things-factory/shell'
6
+ import { i18next, localize } from '@operat/i18n'
7
+ import { PageView } from '@operato/shell'
8
+ import { CommonButtonStyles } from '@operato/styles'
9
+
8
10
  import { ActivityStatus } from '@things-factory/worklist/dist-client/types/types.js'
11
+ import { PagePreferenceProviderImpl } from '@things-factory/personalization/dist-client/page-preference-provider-impl.js'
9
12
 
10
13
  import { MetaApi } from './../../utils/meta-api'
11
14
  import { MetaUiUtil } from './../../utils/meta-ui-util'
@@ -115,7 +118,15 @@ class MetaActivityListPage extends localize(i18next)(PageView) {
115
118
  }
116
119
  }
117
120
  },
118
- await MetaApi.getGristCodeSelectorColumnConfig('menuType', 'menu_type', 'left', false, 110, false, 'MENU_PAGE_TYPE'),
121
+ await MetaApi.getGristCodeSelectorColumnConfig(
122
+ 'menuType',
123
+ 'menu_type',
124
+ 'left',
125
+ false,
126
+ 110,
127
+ false,
128
+ 'MENU_PAGE_TYPE'
129
+ ),
119
130
  MetaUiUtil.getGristColumnConfig2('string', 'routing', 'routing', 'left', false, false, 250)
120
131
  ],
121
132
  list: { fields: ['name', 'routing'] },
@@ -224,16 +235,26 @@ class MetaActivityListPage extends localize(i18next)(PageView) {
224
235
  await MetaApi.deleteListByGristSelected(this.grist, 'deleteMetaActivities')
225
236
  }
226
237
 
227
- async pageInitialized() {}
238
+ async pageInitialized(lifecycle) {
239
+ this.personalConfigProvider = new PagePreferenceProviderImpl(lifecycle.page, 'ox-grist')
240
+ }
228
241
 
229
242
  render() {
230
243
  return html`
231
- <ox-grist auto-fetch id="ox-grist" .config=${this.gridConfig} .mode=${this.gridMode} .fetchHandler=${this.fetchHandler.bind(this)}>
244
+ <ox-grist
245
+ auto-fetch
246
+ id="ox-grist"
247
+ .config=${this.gridConfig}
248
+ .mode=${this.gridMode}
249
+ .fetchHandler=${this.fetchHandler.bind(this)}
250
+ >
232
251
  <div slot="headroom" class="header">
233
252
  <div class="filters">
234
253
  <ox-filters-form></ox-filters-form>
235
254
  </div>
236
255
  </div>
256
+
257
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
237
258
  </ox-grist>
238
259
  `
239
260
  }
@@ -3,16 +3,18 @@ import '@material/web/icon/icon.js'
3
3
  import { html } from 'lit'
4
4
  import gql from 'graphql-tag'
5
5
 
6
+ import { PageView, store } from '@operato/shell'
6
7
  import { client, gqlContext } from '@operato/graphql'
7
- import { i18next, localize } from '@things-factory/i18n-base'
8
- import { PageView } from '@things-factory/shell'
9
- import { store } from '@operato/shell'
8
+ import { i18next, localize } from '@operato/i18n'
9
+
10
10
  import { EXPORT } from '@things-factory/export-base'
11
11
  import { IMPORT } from '@things-factory/import-base'
12
12
 
13
13
  import '@things-factory/form-ui'
14
14
  import '@things-factory/import-ui'
15
15
 
16
+ import { PagePreferenceProviderImpl } from '@things-factory/personalization/dist-client/page-preference-provider-impl.js'
17
+
16
18
  import { TermsUtil } from './../../utils/terms-util'
17
19
  import { ValueUtil } from '../../utils/value-util'
18
20
  import { MetaApi } from '../../utils/meta-api'
@@ -254,7 +256,13 @@ class ConfigEntity extends localize(i18next)(PageView) {
254
256
  ************************************
255
257
  */
256
258
  async createService() {
257
- const answer = await MetaApi.showAlertPopup('button.create-service', 'text.are_you_sure', 'question', 'confirm', 'cancel')
259
+ const answer = await MetaApi.showAlertPopup(
260
+ 'button.create-service',
261
+ 'text.are_you_sure',
262
+ 'question',
263
+ 'confirm',
264
+ 'cancel'
265
+ )
258
266
  if (answer.value) {
259
267
  let ids = MetaApi.getSelectedIdList(this.masterGrist, true)
260
268
  if (ids) {
@@ -283,7 +291,13 @@ class ConfigEntity extends localize(i18next)(PageView) {
283
291
  async createMenu() {
284
292
  if (this.entityId) {
285
293
  // 메인 메뉴를 선택하는 팝업을 실행하여 어떤 메뉴 하위에 엔티티 메뉴를 생성할 지 결정
286
- const answer = await MetaApi.showAlertPopup('button.create-menu', 'text.are_you_sure', 'question', 'confirm', 'cancel')
294
+ const answer = await MetaApi.showAlertPopup(
295
+ 'button.create-menu',
296
+ 'text.are_you_sure',
297
+ 'question',
298
+ 'confirm',
299
+ 'cancel'
300
+ )
287
301
  if (answer.value) {
288
302
  if (MetaApi.getSelectedIdList(this.masterGrist, true)) {
289
303
  await this.openMainMenuSelectorPopup()
@@ -325,7 +339,9 @@ class ConfigEntity extends localize(i18next)(PageView) {
325
339
  async createUnregisteredTerms() {
326
340
  try {
327
341
  if (this.entityId) {
328
- const terms = this.detailGrist.data.records.filter(record => TermsUtil.tLabel(record.term) === record.term).map(r => `label.${r.term}`)
342
+ const terms = this.detailGrist.data.records
343
+ .filter(record => TermsUtil.tLabel(record.term) === record.term)
344
+ .map(r => `label.${r.term}`)
329
345
  const bundle = this.selectedEntity.bundle
330
346
 
331
347
  if (terms.length) {
@@ -366,7 +382,9 @@ class ConfigEntity extends localize(i18next)(PageView) {
366
382
  ...this.detailGrist._config.columns
367
383
  .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
368
384
  .reduce((record, column) => {
369
- record[column.imex.key] = column.imex.key.split('.').reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
385
+ record[column.imex.key] = column.imex.key
386
+ .split('.')
387
+ .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
370
388
  return record
371
389
  }, {})
372
390
  }
@@ -467,7 +485,11 @@ class ConfigEntity extends localize(i18next)(PageView) {
467
485
  let idx = 0
468
486
  patches.forEach(patch => {
469
487
  idx += 10
470
- patch.colSize = ValueUtil.isNotEmpty(patch.colSize) ? ValueUtil.toInteger(patch.colSize) : patch.colType == 'string' ? 50 : 0
488
+ patch.colSize = ValueUtil.isNotEmpty(patch.colSize)
489
+ ? ValueUtil.toInteger(patch.colSize)
490
+ : patch.colType == 'string'
491
+ ? 50
492
+ : 0
471
493
  patch.rank = ValueUtil.toInteger(patch.rank, 0)
472
494
  patch.uniqRank = ValueUtil.toInteger(patch.uniqRank, 0)
473
495
  patch.searchRank = ValueUtil.toInteger(patch.searchRank, 0)
@@ -533,12 +555,30 @@ class ConfigEntity extends localize(i18next)(PageView) {
533
555
  let defaultList = []
534
556
  if (!idExist) {
535
557
  lastIdx += 10
536
- defaultList.push({ entity: { id: this.entityId }, name: 'id', colType: 'string', colSize: 0, nullable: false, term: 'id', rank: lastIdx, cuFlag: '+' })
558
+ defaultList.push({
559
+ entity: { id: this.entityId },
560
+ name: 'id',
561
+ colType: 'string',
562
+ colSize: 0,
563
+ nullable: false,
564
+ term: 'id',
565
+ rank: lastIdx,
566
+ cuFlag: '+'
567
+ })
537
568
  }
538
569
 
539
570
  if (!domainIdExist) {
540
571
  lastIdx += 10
541
- defaultList.push({ entity: { id: this.entityId }, name: 'domain_id', colType: 'string', colSize: 0, nullable: false, term: 'domain', rank: lastIdx, cuFlag: '+' })
572
+ defaultList.push({
573
+ entity: { id: this.entityId },
574
+ name: 'domain_id',
575
+ colType: 'string',
576
+ colSize: 0,
577
+ nullable: false,
578
+ term: 'domain',
579
+ rank: lastIdx,
580
+ cuFlag: '+'
581
+ })
542
582
  }
543
583
 
544
584
  if (!createdAtExist) {
@@ -620,7 +660,10 @@ class ConfigEntity extends localize(i18next)(PageView) {
620
660
  * @description 라이프 사이클 - 페이지 초기화
621
661
  ***************************************
622
662
  */
623
- async pageInitialized() {
663
+ async pageInitialized(lifecycle) {
664
+ this.masterPersonalConfigProvider = new PagePreferenceProviderImpl(lifecycle.page, 'meta::master::ox-grist')
665
+ this.detailPersonalConfigProvider = new PagePreferenceProviderImpl(lifecycle.page, 'meta::detail::ox-grist')
666
+
624
667
  // 조회 필드
625
668
  this.searchFields = [
626
669
  // name, type, label, operator, optionValues
@@ -655,8 +698,24 @@ class ConfigEntity extends localize(i18next)(PageView) {
655
698
  // name, displayName, align, sortable, width, mandatory, codeName
656
699
  await MetaApi.getGristCodeSelectorColumnConfig('bundle', 'bundle', 'left', false, 100, true, 'BUNDLE'),
657
700
  // name, displayName, align, sortable, width, mandatory, codeName
658
- await MetaApi.getGristCodeSelectorColumnConfig('dataProp', 'entity_manage_hist', 'left', false, 90, true, 'ENTITY_HIST_TYPE'),
659
- await MetaApi.getGristCodeSelectorColumnConfig('delStrategy', 'entity_del_strategy', 'left', false, 90, true, 'ENTITY_DEL_STRATEGY'),
701
+ await MetaApi.getGristCodeSelectorColumnConfig(
702
+ 'dataProp',
703
+ 'entity_manage_hist',
704
+ 'left',
705
+ false,
706
+ 90,
707
+ true,
708
+ 'ENTITY_HIST_TYPE'
709
+ ),
710
+ await MetaApi.getGristCodeSelectorColumnConfig(
711
+ 'delStrategy',
712
+ 'entity_del_strategy',
713
+ 'left',
714
+ false,
715
+ 90,
716
+ true,
717
+ 'ENTITY_DEL_STRATEGY'
718
+ ),
660
719
  // type, name, align, editable, sortable, width
661
720
  MetaApi.getGristColumnConfig('string', 'description', 'left', true, false, 250)
662
721
  ]
@@ -686,7 +745,15 @@ class ConfigEntity extends localize(i18next)(PageView) {
686
745
  }
687
746
  },
688
747
  // name, displayName, align, sortable, width, mandatory, codeName
689
- await MetaApi.getGristCodeSelectorColumnConfig('colType', 'col_type', 'left', false, 75, true, 'ENTITY_COLUMN_TYPES'),
748
+ await MetaApi.getGristCodeSelectorColumnConfig(
749
+ 'colType',
750
+ 'col_type',
751
+ 'left',
752
+ false,
753
+ 75,
754
+ true,
755
+ 'ENTITY_COLUMN_TYPES'
756
+ ),
690
757
  // type, name, displayName, align, editable, sortable, width
691
758
  MetaApi.getGristColumnConfig2('integer', 'colSize', 'size', 'right', true, false, 60),
692
759
  MetaApi.getGristColumnConfig2('boolean', 'nullable', 'nullable', 'center', true, false, 70),
@@ -694,12 +761,36 @@ class ConfigEntity extends localize(i18next)(PageView) {
694
761
  MetaApi.getGristColumnConfig2('string', 'description', 'description', 'left', true, false, 135),
695
762
  MetaApi.getGristColumnConfig2('integer', 'searchRank', 'search_rank', 'right', true, false, 70),
696
763
  // name, displayName, align, sortable, width, mandatory, codeName
697
- await MetaApi.getGristCodeSelectorColumnConfig('searchOper', 'search_oper', 'left', false, 85, true, 'FILTER_OPERATORS'),
764
+ await MetaApi.getGristCodeSelectorColumnConfig(
765
+ 'searchOper',
766
+ 'search_oper',
767
+ 'left',
768
+ false,
769
+ 85,
770
+ true,
771
+ 'FILTER_OPERATORS'
772
+ ),
698
773
  MetaApi.getGristColumnConfig2('integer', 'gridRank', 'grid_rank', 'right', true, false, 80),
699
774
  MetaApi.getGristColumnConfig2('integer', 'gridWidth', 'grid_width', 'right', true, false, 75),
700
775
  // name, displayName, align, sortable, width, mandatory, codeName
701
- await MetaApi.getGristCodeSelectorColumnConfig('gridEditor', 'grid_editor', 'left', false, 90, true, 'ENTITY_GRIST_COLUMN_TYPES'),
702
- await MetaApi.getGristCodeSelectorColumnConfig('refType', 'ref_type', 'left', false, 85, true, 'COLUMN_REF_TYPE'),
776
+ await MetaApi.getGristCodeSelectorColumnConfig(
777
+ 'gridEditor',
778
+ 'grid_editor',
779
+ 'left',
780
+ false,
781
+ 90,
782
+ true,
783
+ 'ENTITY_GRIST_COLUMN_TYPES'
784
+ ),
785
+ await MetaApi.getGristCodeSelectorColumnConfig(
786
+ 'refType',
787
+ 'ref_type',
788
+ 'left',
789
+ false,
790
+ 85,
791
+ true,
792
+ 'COLUMN_REF_TYPE'
793
+ ),
703
794
  // type, name, displayName, align, editable, sortable, width
704
795
  MetaApi.getGristColumnConfig2('string', 'refName', 'ref_name', 'left', true, false, 100),
705
796
  MetaApi.getGristColumnConfig2('string', 'defVal', 'id_rule', 'left', true, false, 100)
@@ -729,7 +820,15 @@ class ConfigEntity extends localize(i18next)(PageView) {
729
820
  }
730
821
  },
731
822
  // name, displayName, align, sortable, width, mandatory, codeName
732
- await MetaApi.getGristCodeSelectorColumnConfig('colType', 'col_type', 'left', false, 75, true, 'ENTITY_COLUMN_TYPES'),
823
+ await MetaApi.getGristCodeSelectorColumnConfig(
824
+ 'colType',
825
+ 'col_type',
826
+ 'left',
827
+ false,
828
+ 75,
829
+ true,
830
+ 'ENTITY_COLUMN_TYPES'
831
+ ),
733
832
  // type, name, displayName, align, editable, sortable, width
734
833
  MetaApi.getGristColumnConfig2('integer', 'colSize', 'size', 'right', true, false, 60),
735
834
  MetaApi.getGristColumnConfig2('boolean', 'nullable', 'nullable', 'center', true, false, 70),
@@ -737,12 +836,36 @@ class ConfigEntity extends localize(i18next)(PageView) {
737
836
  MetaApi.getGristColumnConfig2('string', 'description', 'description', 'left', true, false, 135),
738
837
  MetaApi.getGristColumnConfig2('integer', 'searchRank', 'search_rank', 'right', true, false, 70),
739
838
  // name, displayName, align, sortable, width, mandatory, codeName
740
- await MetaApi.getGristCodeSelectorColumnConfig('string', 'search_oper', 'left', false, 85, true, 'FILTER_OPERATORS'),
839
+ await MetaApi.getGristCodeSelectorColumnConfig(
840
+ 'string',
841
+ 'search_oper',
842
+ 'left',
843
+ false,
844
+ 85,
845
+ true,
846
+ 'FILTER_OPERATORS'
847
+ ),
741
848
  MetaApi.getGristColumnConfig2('integer', 'gridRank', 'grid_rank', 'right', true, false, 80),
742
849
  MetaApi.getGristColumnConfig2('integer', 'gridWidth', 'grid_width', 'right', true, false, 75),
743
850
  // name, displayName, align, sortable, width, mandatory, codeName
744
- await MetaApi.getGristCodeSelectorColumnConfig('gridEditor', 'grid_editor', 'left', false, 90, true, 'GRIST_COLUMN_TYPES'),
745
- await MetaApi.getGristCodeSelectorColumnConfig('refType', 'ref_type', 'left', false, 85, true, 'COLUMN_REF_TYPE'),
851
+ await MetaApi.getGristCodeSelectorColumnConfig(
852
+ 'gridEditor',
853
+ 'grid_editor',
854
+ 'left',
855
+ false,
856
+ 90,
857
+ true,
858
+ 'GRIST_COLUMN_TYPES'
859
+ ),
860
+ await MetaApi.getGristCodeSelectorColumnConfig(
861
+ 'refType',
862
+ 'ref_type',
863
+ 'left',
864
+ false,
865
+ 85,
866
+ true,
867
+ 'COLUMN_REF_TYPE'
868
+ ),
746
869
  // type, name, displayName, align, editable, sortable, width
747
870
  MetaApi.getGristColumnConfig2('string', 'refName', 'ref_name', 'left', true, false, 100)
748
871
  ]
@@ -774,35 +897,58 @@ class ConfigEntity extends localize(i18next)(PageView) {
774
897
  id="master-grist"
775
898
  .config=${this.masterConfig}
776
899
  .mode=${MetaApi.isMobileEnv() ? 'LIST' : 'GRID'}
777
- auto-fetch
900
+ .personalConfigProvider=${this.masterPersonalConfigProvider}
778
901
  .fetchHandler=${this.fetchEntities.bind(this)}
902
+ auto-fetch
779
903
  >
904
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
780
905
  </ox-grist>
906
+
781
907
  <div class="button-container">
782
- <button @click=${e => this.createService()}><md-icon>add_box</md-icon>${TermsUtil.tButton('create-service')}</button>
783
- <button @click=${e => this.createMenu()}><md-icon>menu_open</md-icon>${TermsUtil.tButton('create-menu')}</button>
908
+ <button @click=${e => this.createService()}>
909
+ <md-icon>add_box</md-icon>${TermsUtil.tButton('create-service')}
910
+ </button>
911
+ <button @click=${e => this.createMenu()}>
912
+ <md-icon>menu_open</md-icon>${TermsUtil.tButton('create-menu')}
913
+ </button>
784
914
  <button @click=${e => this.saveMasters()}><md-icon>save</md-icon>${TermsUtil.tButton('save')}</button>
785
- <button danger @click=${e => this.deleteMasters()}><md-icon>delete</md-icon>${TermsUtil.tButton('delete')}</button>
915
+ <button danger @click=${e => this.deleteMasters()}>
916
+ <md-icon>delete</md-icon>${TermsUtil.tButton('delete')}
917
+ </button>
786
918
  </div>
787
919
  </div>
788
920
 
789
921
  <div class="container_detail">
790
922
  <h2><md-icon>list_alt</md-icon>${TermsUtil.tTitle('entity-column')}</h2>
923
+
791
924
  <ox-grist
792
925
  id="detail-grist"
793
926
  .config=${this.detailConfig}
794
927
  .mode=${MetaApi.isMobileEnv() ? 'LIST' : 'GRID'}
795
928
  explcit-fetch
796
929
  .fetchHandler=${this.fetchEntityColumns.bind(this)}
930
+ .personalConfigProvider=${this.detailPersonalConfigProvider}
797
931
  >
932
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
798
933
  </ox-grist>
934
+
799
935
  <div class="button-container">
800
- <button @click=${e => this.exportEntityColumns()}><md-icon>cloud_download</md-icon>${TermsUtil.tButton('export')}</button>
801
- <button @click=${e => this.importXlsxFile()}><md-icon>cloud_upload</md-icon>${TermsUtil.tButton('import')}</button>
802
- <button @click=${e => this.checkEntityColumns()}><md-icon>fact_check</md-icon>${TermsUtil.tButton('check-columns')}</button>
803
- <button @click=${e => this.createUnregisteredTerms()}><md-icon>abc</md-icon>${TermsUtil.tButton('register-terms')}</button>
936
+ <button @click=${e => this.exportEntityColumns()}>
937
+ <md-icon>cloud_download</md-icon>${TermsUtil.tButton('export')}
938
+ </button>
939
+ <button @click=${e => this.importXlsxFile()}>
940
+ <md-icon>cloud_upload</md-icon>${TermsUtil.tButton('import')}
941
+ </button>
942
+ <button @click=${e => this.checkEntityColumns()}>
943
+ <md-icon>fact_check</md-icon>${TermsUtil.tButton('check-columns')}
944
+ </button>
945
+ <button @click=${e => this.createUnregisteredTerms()}>
946
+ <md-icon>abc</md-icon>${TermsUtil.tButton('register-terms')}
947
+ </button>
804
948
  <button @click=${e => this.saveEntityColumns()}><md-icon>save</md-icon>${TermsUtil.tButton('save')}</button>
805
- <button danger @click=${e => this.deleteEntityColumns()}><md-icon>delete</md-icon>${TermsUtil.tButton('delete')}</button>
949
+ <button danger @click=${e => this.deleteEntityColumns()}>
950
+ <md-icon>delete</md-icon>${TermsUtil.tButton('delete')}
951
+ </button>
806
952
  </div>
807
953
  </div>
808
954
  </div>
@@ -1,11 +1,12 @@
1
1
  import '@material/web/icon/icon.js'
2
+ import '@things-factory/form-ui'
2
3
 
3
4
  import { html } from 'lit'
4
5
 
5
- import { i18next, localize } from '@things-factory/i18n-base'
6
- import { PageView } from '@things-factory/shell'
6
+ import { PageView } from '@operato/shell'
7
+ import { i18next, localize } from '@operato/i18n'
7
8
 
8
- import '@things-factory/form-ui'
9
+ import { PagePreferenceProviderImpl } from '@things-factory/personalization/dist-client/page-preference-provider-impl.js'
9
10
 
10
11
  import { TermsUtil } from './../../utils/terms-util'
11
12
  import { MetaApi } from '../../utils/meta-api'
@@ -53,13 +54,17 @@ class DynamicMenu extends localize(i18next)(PageView) {
53
54
  id="master-grist"
54
55
  .config=${this.groupConfig}
55
56
  .mode=${MetaApi.isMobileEnv() ? 'LIST' : 'GRID'}
56
- auto-fetch
57
+ .personalConfigProvider=${this.masterPersonalConfigProvider}
57
58
  .fetchHandler=${this.fetchGroupHandler.bind(this)}
59
+ auto-fetch
58
60
  >
61
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
59
62
  </ox-grist>
60
63
  <div class="button-container">
61
64
  <button @click=${e => this.saveGroup()}><md-icon>save</md-icon>${TermsUtil.tButton('save')}</button>
62
- <button danger @click=${e => this.deleteGroup()}><md-icon>delete</md-icon>${TermsUtil.tButton('delete')}</button>
65
+ <button danger @click=${e => this.deleteGroup()}>
66
+ <md-icon>delete</md-icon>${TermsUtil.tButton('delete')}
67
+ </button>
63
68
  </div>
64
69
  </div>
65
70
 
@@ -68,14 +73,18 @@ class DynamicMenu extends localize(i18next)(PageView) {
68
73
  id="detail-grist"
69
74
  .config=${this.detailConfig}
70
75
  .mode=${MetaApi.isMobileEnv() ? 'LIST' : 'GRID'}
71
- explcit-fetch
72
76
  .fetchHandler=${this.fetchDetailHandler.bind(this)}
77
+ .personalConfigProvider=${this.detailPersonalConfigProvider}
78
+ explcit-fetch
73
79
  >
80
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
74
81
  </ox-grist>
75
82
  <div class="button-container">
76
83
  <button @click=${e => this.copyMenu()}><md-icon>content_copy</md-icon>${TermsUtil.tButton('copy')}</button>
77
84
  <button @click=${e => this.saveMenu()}><md-icon>save</md-icon>${TermsUtil.tButton('save')}</button>
78
- <button danger @click=${e => this.deleteMenu()}><md-icon>delete</md-icon>${TermsUtil.tButton('delete')}</button>
85
+ <button danger @click=${e => this.deleteMenu()}>
86
+ <md-icon>delete</md-icon>${TermsUtil.tButton('delete')}
87
+ </button>
79
88
  </div>
80
89
  </div>
81
90
  </div>
@@ -336,7 +345,10 @@ class DynamicMenu extends localize(i18next)(PageView) {
336
345
  /**
337
346
  * LifeCycle - 화면 레더링 설정
338
347
  */
339
- async pageInitialized() {
348
+ async pageInitialized(lifecycle) {
349
+ this.masterPersonalConfigProvider = new PagePreferenceProviderImpl(lifecycle.page, 'meta::master::ox-grist')
350
+ this.detailPersonalConfigProvider = new PagePreferenceProviderImpl(lifecycle.page, 'meta::detail::ox-grist')
351
+
340
352
  // 조회 필드
341
353
  this.searchFields = [
342
354
  // name, type, label, operator, optionValues
@@ -345,7 +357,13 @@ class DynamicMenu extends localize(i18next)(PageView) {
345
357
  await MetaApi.getGristSearchCodeColumnConfig('menuType', 'select', 'menu_type', 'eq', 'MENU_TYPE'),
346
358
  // name, type, label, operator
347
359
  MetaApi.getGristSearchColumnConfig('hiddenFlag', 'checkbox', 'hidden', 'eq'),
348
- await MetaApi.getGristSearchCodeColumnConfig('templateCode', 'select', 'menu_template_search_code', 'eq', 'MENU_TEXT_SEARCH_TYPE'),
360
+ await MetaApi.getGristSearchCodeColumnConfig(
361
+ 'templateCode',
362
+ 'select',
363
+ 'menu_template_search_code',
364
+ 'eq',
365
+ 'MENU_TEXT_SEARCH_TYPE'
366
+ ),
349
367
  MetaApi.getGristSearchColumnConfig('templateText', 'string', 'menu_template_search_text', 'i_like')
350
368
  ]
351
369
 
@@ -480,8 +498,24 @@ class DynamicMenu extends localize(i18next)(PageView) {
480
498
  width: 175
481
499
  },
482
500
  // name, displayName, align, sortable, width, mandatory, codeName
483
- await MetaApi.getGristCodeSelectorColumnConfig('menuType', 'page_type', 'left', false, 90, true, 'MENU_PAGE_TYPE'),
484
- await MetaApi.getGristCodeSelectorColumnConfig('routingType', 'routing_type', 'left', false, 0, false, 'MENU_PAGE_ROUTING_TYPE'),
501
+ await MetaApi.getGristCodeSelectorColumnConfig(
502
+ 'menuType',
503
+ 'page_type',
504
+ 'left',
505
+ false,
506
+ 90,
507
+ true,
508
+ 'MENU_PAGE_TYPE'
509
+ ),
510
+ await MetaApi.getGristCodeSelectorColumnConfig(
511
+ 'routingType',
512
+ 'routing_type',
513
+ 'left',
514
+ false,
515
+ 0,
516
+ false,
517
+ 'MENU_PAGE_ROUTING_TYPE'
518
+ ),
485
519
  // type, name, displayName, align, editable, sortable, width
486
520
  MetaApi.getGristColumnConfig2('string', 'routing', 'routing', 'left', true, false, 175),
487
521
  MetaApi.getGristColumnConfig2('string', 'category', 'tag', 'left', true, false, 175),
@@ -2,9 +2,11 @@ import '@material/web/icon/icon.js'
2
2
 
3
3
  import { html } from 'lit'
4
4
 
5
+ import { PageView } from '@operato/shell'
6
+ import { i18next, localize } from '@operato/i18n'
5
7
  import { CommonButtonStyles } from '@operato/styles'
6
- import { PageView } from '@things-factory/shell'
7
- import { i18next, localize } from '@things-factory/i18n-base'
8
+
9
+ import { PagePreferenceProviderImpl } from '@things-factory/personalization/dist-client/page-preference-provider-impl.js'
8
10
 
9
11
  import { TermsUtil } from './../../utils/terms-util'
10
12
  import { MetaApi } from '../../utils/meta-api'
@@ -35,12 +37,21 @@ class ConfigTerminology extends localize(i18next)(PageView) {
35
37
 
36
38
  render() {
37
39
  return html`
38
- <ox-grist auto-fetch id="ox-grist" .config=${this.gridConfig} .mode=${this.gridMode} .fetchHandler=${this.fetchHandler.bind(this)}>
40
+ <ox-grist
41
+ auto-fetch
42
+ id="ox-grist"
43
+ .config=${this.gridConfig}
44
+ .mode=${this.gridMode}
45
+ .personalConfigProvider=${this.personalConfigProvider}
46
+ .fetchHandler=${this.fetchHandler.bind(this)}
47
+ >
39
48
  <div slot="headroom" class="header">
40
49
  <div class="filters">
41
50
  <ox-filters-form></ox-filters-form>
42
51
  </div>
43
52
  </div>
53
+
54
+ <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
44
55
  </ox-grist>
45
56
  `
46
57
  }
@@ -99,7 +110,9 @@ class ConfigTerminology extends localize(i18next)(PageView) {
99
110
  await MetaApi.deleteListByGristSelected(this.grist, 'deleteTerminologies')
100
111
  }
101
112
 
102
- async pageInitialized() {
113
+ async pageInitialized(lifecycle) {
114
+ this.personalConfigProvider = new PagePreferenceProviderImpl(lifecycle.page, 'ox-grist')
115
+
103
116
  let locales = await MetaApi.getCodeSelectorData('LOCALE')
104
117
  let termsCategories = await MetaApi.getCodeSelectorData('TERMS_CATEGORY')
105
118