@things-factory/meta-ui 8.0.64 → 8.0.69

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.
@@ -2,7 +2,7 @@ import { html } from 'lit'
2
2
 
3
3
  import { OxGristEditor } from '@operato/data-grist'
4
4
  import { openPopup } from '@operato/layout'
5
- import { TermsUtil } from '../../../utils/terms-util';
5
+ import { TermsUtil } from '../../../utils/terms-util'
6
6
 
7
7
  import '../../popup/meta-object-selector-popup'
8
8
 
@@ -17,36 +17,39 @@ export class GristEditorMetaObjectSelector extends OxGristEditor {
17
17
  popup: Object
18
18
  }
19
19
  }
20
-
20
+
21
21
  get editorTemplate() {
22
- let text = '';
22
+ let text = ''
23
23
 
24
- if(this.value && this.column.record.options){
24
+ if (this.value && this.column.record.options) {
25
+ let fields = this.column.record.options.nameField.split(',')
26
+ text = this.value[fields[0]]
25
27
 
26
- let fields = this.column.record.options.nameField.split(",");
27
- text = this.value[fields[0]];
28
-
29
- if(fields.length > 1){
30
- text+= `(${fields.splice(1).map(field => { return this.value[field]}).join(",")})`
28
+ if (fields.length > 1) {
29
+ text += `(${fields
30
+ .splice(1)
31
+ .map(field => {
32
+ return this.value[field]
33
+ })
34
+ .join(',')})`
31
35
  }
32
- }
33
-
36
+ }
37
+
34
38
  return html`
35
39
  ${!this.value
36
40
  ? html`<span tabindex="0">${text}</span>`
37
41
  : html` <span tabindex="0" style="flex:1">${text}</span> `}
38
42
  `
39
43
  }
40
-
44
+
41
45
  async firstUpdated() {
42
46
  super.firstUpdated()
43
47
  }
44
48
 
45
49
  _onclick(e) {
46
50
  e.stopPropagation()
47
- this.openSelector()
48
51
  }
49
-
52
+
50
53
  _onkeydown(e) {
51
54
  const key = e.key
52
55
  if (key == 'Enter') {
@@ -54,28 +57,29 @@ export class GristEditorMetaObjectSelector extends OxGristEditor {
54
57
  this.openSelector()
55
58
  }
56
59
  }
57
-
60
+
61
+ _ondblclick(e) {
62
+ e.stopPropagation()
63
+ this.openSelector()
64
+ }
65
+
58
66
  openSelector() {
59
67
  if (this.popup) {
60
68
  delete this.popup
61
69
  }
62
70
 
63
- var {
64
- selectorName = TermsUtil.tTitle('select_item')
65
- } = this.column.record.options || {}
71
+ var { selectorName = TermsUtil.tTitle('select_item') } = this.column.record.options || {}
72
+
73
+ const confirmCallback = selected => {
74
+ let fieldMap = this.column.record.options.fieldMap || {}
66
75
 
67
- const confirmCallback = (selected) => {
68
- let fieldMap = this.column.record.options.fieldMap || {};
69
-
70
76
  this.dispatchEvent(
71
77
  new CustomEvent('field-change', {
72
78
  bubbles: true,
73
79
  composed: true,
74
80
  detail: {
75
81
  before: this.value,
76
- after: selected
77
- ? selected
78
- : null,
82
+ after: selected ? selected : null,
79
83
  record: this.record,
80
84
  column: this.column,
81
85
  row: this.row
@@ -83,18 +87,16 @@ export class GristEditorMetaObjectSelector extends OxGristEditor {
83
87
  })
84
88
  )
85
89
 
86
- Object.keys(fieldMap).forEach(key =>{
90
+ Object.keys(fieldMap).forEach(key => {
87
91
  this.dispatchEvent(
88
92
  new CustomEvent('field-change', {
89
93
  bubbles: true,
90
94
  composed: true,
91
95
  detail: {
92
96
  before: this.record[fieldMap[key]],
93
- after: selected
94
- ? selected[key]
95
- : null,
97
+ after: selected ? selected[key] : null,
96
98
  record: this.record,
97
- column: {name: fieldMap[key]},
99
+ column: { name: fieldMap[key] },
98
100
  row: this.row
99
101
  }
100
102
  })
@@ -103,20 +105,20 @@ export class GristEditorMetaObjectSelector extends OxGristEditor {
103
105
  }
104
106
 
105
107
  var template = html`
106
- <meta-object-selector-popup
107
- .value=${this.value}
108
- .options=${this.column.record.options}
109
- .record=${this.record}
110
- .confirmCallback=${confirmCallback.bind(this)}
111
- ></meta-object-selector-popup>
112
- `
108
+ <meta-object-selector-popup
109
+ .value=${this.value}
110
+ .options=${this.column.record.options}
111
+ .record=${this.record}
112
+ .confirmCallback=${confirmCallback.bind(this)}
113
+ ></meta-object-selector-popup>
114
+ `
113
115
 
114
116
  this.popup = openPopup(template, {
115
117
  backdrop: true,
116
118
  size: 'large',
117
119
  title: TermsUtil.tMenu(selectorName)
118
120
  })
119
- }
121
+ }
120
122
  }
121
-
122
- customElements.define('grist-editor-meta-object-selector', GristEditorMetaObjectSelector)
123
+
124
+ customElements.define('grist-editor-meta-object-selector', GristEditorMetaObjectSelector)
@@ -201,6 +201,17 @@ export const MetaMasterDetailMixin = baseElement =>
201
201
  }
202
202
  }
203
203
 
204
+ async pageUpdated(changes, lifecycle, before) {
205
+ if (this.active) {
206
+ /* this page is activated */
207
+ if (this.gridConfig.grid_refresh_when_page_activated) {
208
+ this.fetch()
209
+ }
210
+ } else {
211
+ /* this page is deactivated */
212
+ }
213
+ }
214
+
204
215
  /**
205
216
  * @override render
206
217
  ********************
@@ -9,6 +9,7 @@ export class GristEditorMetaObjectSelector extends OxGristEditor {
9
9
  };
10
10
  _onclick(e: any): void;
11
11
  _onkeydown(e: any): void;
12
+ _ondblclick(e: any): void;
12
13
  openSelector(): void;
13
14
  popup: import("@operato/layout").PopupHandle | undefined;
14
15
  }
@@ -17,10 +17,15 @@ export class GristEditorMetaObjectSelector extends OxGristEditor {
17
17
  get editorTemplate() {
18
18
  let text = '';
19
19
  if (this.value && this.column.record.options) {
20
- let fields = this.column.record.options.nameField.split(",");
20
+ let fields = this.column.record.options.nameField.split(',');
21
21
  text = this.value[fields[0]];
22
22
  if (fields.length > 1) {
23
- text += `(${fields.splice(1).map(field => { return this.value[field]; }).join(",")})`;
23
+ text += `(${fields
24
+ .splice(1)
25
+ .map(field => {
26
+ return this.value[field];
27
+ })
28
+ .join(',')})`;
24
29
  }
25
30
  }
26
31
  return html `
@@ -34,7 +39,6 @@ export class GristEditorMetaObjectSelector extends OxGristEditor {
34
39
  }
35
40
  _onclick(e) {
36
41
  e.stopPropagation();
37
- this.openSelector();
38
42
  }
39
43
  _onkeydown(e) {
40
44
  const key = e.key;
@@ -43,21 +47,23 @@ export class GristEditorMetaObjectSelector extends OxGristEditor {
43
47
  this.openSelector();
44
48
  }
45
49
  }
50
+ _ondblclick(e) {
51
+ e.stopPropagation();
52
+ this.openSelector();
53
+ }
46
54
  openSelector() {
47
55
  if (this.popup) {
48
56
  delete this.popup;
49
57
  }
50
58
  var { selectorName = TermsUtil.tTitle('select_item') } = this.column.record.options || {};
51
- const confirmCallback = (selected) => {
59
+ const confirmCallback = selected => {
52
60
  let fieldMap = this.column.record.options.fieldMap || {};
53
61
  this.dispatchEvent(new CustomEvent('field-change', {
54
62
  bubbles: true,
55
63
  composed: true,
56
64
  detail: {
57
65
  before: this.value,
58
- after: selected
59
- ? selected
60
- : null,
66
+ after: selected ? selected : null,
61
67
  record: this.record,
62
68
  column: this.column,
63
69
  row: this.row
@@ -69,9 +75,7 @@ export class GristEditorMetaObjectSelector extends OxGristEditor {
69
75
  composed: true,
70
76
  detail: {
71
77
  before: this.record[fieldMap[key]],
72
- after: selected
73
- ? selected[key]
74
- : null,
78
+ after: selected ? selected[key] : null,
75
79
  record: this.record,
76
80
  column: { name: fieldMap[key] },
77
81
  row: this.row
@@ -80,13 +84,13 @@ export class GristEditorMetaObjectSelector extends OxGristEditor {
80
84
  });
81
85
  };
82
86
  var template = html `
83
- <meta-object-selector-popup
84
- .value=${this.value}
85
- .options=${this.column.record.options}
86
- .record=${this.record}
87
- .confirmCallback=${confirmCallback.bind(this)}
88
- ></meta-object-selector-popup>
89
- `;
87
+ <meta-object-selector-popup
88
+ .value=${this.value}
89
+ .options=${this.column.record.options}
90
+ .record=${this.record}
91
+ .confirmCallback=${confirmCallback.bind(this)}
92
+ ></meta-object-selector-popup>
93
+ `;
90
94
  this.popup = openPopup(template, {
91
95
  backdrop: true,
92
96
  size: 'large',
@@ -1 +1 @@
1
- {"version":3,"file":"grist-editor-meta-object-selector.js","sourceRoot":"","sources":["../../../../client/component/grist/editor/grist-editor-meta-object-selector.js"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit'\n\nimport { OxGristEditor } from '@operato/data-grist'\nimport { openPopup } from '@operato/layout'\nimport { TermsUtil } from '../../../utils/terms-util';\n\nimport '../../popup/meta-object-selector-popup'\n\nexport class GristEditorMetaObjectSelector extends OxGristEditor {\n static get properties() {\n return {\n value: Object,\n column: Object,\n record: Object,\n rowIndex: Number,\n field: Object,\n popup: Object\n }\n }\n \n get editorTemplate() {\n let text = '';\n\n if(this.value && this.column.record.options){\n\n let fields = this.column.record.options.nameField.split(\",\");\n text = this.value[fields[0]];\n \n if(fields.length > 1){\n text+= `(${fields.splice(1).map(field => { return this.value[field]}).join(\",\")})` \n }\n } \n \n return html`\n ${!this.value\n ? html`<span tabindex=\"0\">${text}</span>`\n : html` <span tabindex=\"0\" style=\"flex:1\">${text}</span> `}\n `\n }\n \n async firstUpdated() {\n super.firstUpdated()\n }\n\n _onclick(e) {\n e.stopPropagation()\n this.openSelector()\n }\n \n _onkeydown(e) {\n const key = e.key\n if (key == 'Enter') {\n e.stopPropagation()\n this.openSelector()\n }\n }\n \n openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n var {\n selectorName = TermsUtil.tTitle('select_item')\n } = this.column.record.options || {}\n\n const confirmCallback = (selected) => {\n let fieldMap = this.column.record.options.fieldMap || {};\n \n this.dispatchEvent(\n new CustomEvent('field-change', {\n bubbles: true,\n composed: true,\n detail: {\n before: this.value,\n after: selected\n ? selected\n : null,\n record: this.record,\n column: this.column,\n row: this.row\n }\n })\n )\n\n Object.keys(fieldMap).forEach(key =>{\n this.dispatchEvent(\n new CustomEvent('field-change', {\n bubbles: true,\n composed: true,\n detail: {\n before: this.record[fieldMap[key]],\n after: selected\n ? selected[key]\n : null,\n record: this.record,\n column: {name: fieldMap[key]},\n row: this.row\n }\n })\n )\n })\n }\n\n var template = html`\n <meta-object-selector-popup\n .value=${this.value}\n .options=${this.column.record.options}\n .record=${this.record}\n .confirmCallback=${confirmCallback.bind(this)}\n ></meta-object-selector-popup>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n title: TermsUtil.tMenu(selectorName)\n })\n } \n}\n \ncustomElements.define('grist-editor-meta-object-selector', GristEditorMetaObjectSelector)"]}
1
+ {"version":3,"file":"grist-editor-meta-object-selector.js","sourceRoot":"","sources":["../../../../client/component/grist/editor/grist-editor-meta-object-selector.js"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit'\n\nimport { OxGristEditor } from '@operato/data-grist'\nimport { openPopup } from '@operato/layout'\nimport { TermsUtil } from '../../../utils/terms-util'\n\nimport '../../popup/meta-object-selector-popup'\n\nexport class GristEditorMetaObjectSelector extends OxGristEditor {\n static get properties() {\n return {\n value: Object,\n column: Object,\n record: Object,\n rowIndex: Number,\n field: Object,\n popup: Object\n }\n }\n\n get editorTemplate() {\n let text = ''\n\n if (this.value && this.column.record.options) {\n let fields = this.column.record.options.nameField.split(',')\n text = this.value[fields[0]]\n\n if (fields.length > 1) {\n text += `(${fields\n .splice(1)\n .map(field => {\n return this.value[field]\n })\n .join(',')})`\n }\n }\n\n return html`\n ${!this.value\n ? html`<span tabindex=\"0\">${text}</span>`\n : html` <span tabindex=\"0\" style=\"flex:1\">${text}</span> `}\n `\n }\n\n async firstUpdated() {\n super.firstUpdated()\n }\n\n _onclick(e) {\n e.stopPropagation()\n }\n\n _onkeydown(e) {\n const key = e.key\n if (key == 'Enter') {\n e.stopPropagation()\n this.openSelector()\n }\n }\n\n _ondblclick(e) {\n e.stopPropagation()\n this.openSelector()\n }\n\n openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n var { selectorName = TermsUtil.tTitle('select_item') } = this.column.record.options || {}\n\n const confirmCallback = selected => {\n let fieldMap = this.column.record.options.fieldMap || {}\n\n this.dispatchEvent(\n new CustomEvent('field-change', {\n bubbles: true,\n composed: true,\n detail: {\n before: this.value,\n after: selected ? selected : null,\n record: this.record,\n column: this.column,\n row: this.row\n }\n })\n )\n\n Object.keys(fieldMap).forEach(key => {\n this.dispatchEvent(\n new CustomEvent('field-change', {\n bubbles: true,\n composed: true,\n detail: {\n before: this.record[fieldMap[key]],\n after: selected ? selected[key] : null,\n record: this.record,\n column: { name: fieldMap[key] },\n row: this.row\n }\n })\n )\n })\n }\n\n var template = html`\n <meta-object-selector-popup\n .value=${this.value}\n .options=${this.column.record.options}\n .record=${this.record}\n .confirmCallback=${confirmCallback.bind(this)}\n ></meta-object-selector-popup>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n title: TermsUtil.tMenu(selectorName)\n })\n }\n}\n\ncustomElements.define('grist-editor-meta-object-selector', GristEditorMetaObjectSelector)\n"]}
@@ -40,6 +40,7 @@ export function MetaMasterDetailMixin(baseElement: any): {
40
40
  ****************************
41
41
  */
42
42
  pageInitialized(): Promise<void>;
43
+ pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
43
44
  /**
44
45
  * @override render
45
46
  ********************
@@ -146,7 +147,6 @@ export function MetaMasterDetailMixin(baseElement: any): {
146
147
  get isElement(): boolean;
147
148
  get isDetail(): boolean;
148
149
  dataChangeEventHandler(e: any): Promise<void>;
149
- pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
150
150
  get isPopup(): boolean;
151
151
  get isPage(): boolean;
152
152
  getAndParseMenuMeta(): any;
@@ -187,6 +187,17 @@ export const MetaMasterDetailMixin = baseElement => class extends MetaButtonMixi
187
187
  await super.pageInitialized();
188
188
  }
189
189
  }
190
+ async pageUpdated(changes, lifecycle, before) {
191
+ if (this.active) {
192
+ /* this page is activated */
193
+ if (this.gridConfig.grid_refresh_when_page_activated) {
194
+ this.fetch();
195
+ }
196
+ }
197
+ else {
198
+ /* this page is deactivated */
199
+ }
200
+ }
190
201
  /**
191
202
  * @override render
192
203
  ********************
@@ -1 +1 @@
1
- {"version":3,"file":"meta-master-detail-mixin.js","sourceRoot":"","sources":["../../client/mixin/meta-master-detail-mixin.js"],"names":[],"mappings":"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","sourcesContent":["import { MetaApi } from '../utils/meta-api'\nimport { MetaUiUtil } from '../utils/meta-ui-util'\nimport { ValueUtil } from '../utils/value-util'\nimport { TermsUtil } from '../utils/terms-util'\n\nimport { MetaButtonMixin } from './meta-button-mixin'\n\n/**\n * @description 메뉴 메타 정보를 이용해 마스터 - 디테일 그리드 화면 구현\n ************************************************************\n * @param {Object} MetaButtonMixin\n * @returns\n */\nexport const MetaMasterDetailMixin = baseElement =>\n class extends MetaButtonMixin(baseElement) {\n /**\n * @description 스타일 정의\n **************************\n * @returns {Array} 스타일\n */\n static get styles() {\n return MetaApi.getBasicMasterDetailStyles()\n }\n\n /**\n * @description 프로퍼티 정의\n ****************************\n * @returns {Object} 프로퍼티\n */\n static get properties() {\n return {\n /**\n * @description 그리드 구성 정보\n *****************************\n * @type {Object}\n */\n gridConfig: Object,\n /**\n * @description 그리드 컬럼 구성 정보\n *********************************\n * @type {Array}\n */\n gridColumnConfig: Array,\n /**\n * @description 검색 폼 구성 정보\n *******************************\n * @type {Array}\n */\n searchConfig: Array,\n /**\n * @description 화면에서 사용되는 서치 폼 : grist, filter, not\n *********************************************************\n * @type {String}\n */\n searchFormElement: String,\n /**\n * @description 메뉴 메타 정보로 부터 추출한 후 그리스트를 위해 설정 정보 구성\n *****************************************************************\n * @type {Object}\n */\n gristConfigSet: Object,\n /**\n * @description 필터 폼 사용 여부\n *****************************\n * @type {Boolean}\n */\n useFilterForm: Boolean,\n /**\n * @description 모바일 기기에서 그리드 모드 : GRID, LIST, CARD\n *********************************************************\n * @type {String}\n */\n gridMobileMode: String,\n /**\n * @description 데스크탑에서 그리드 모드 : GRID, LIST, CARD\n ******************************************************\n * @type {String}\n */\n gridDeskMode: String,\n /**\n * @description 그리드 뷰 모드 : GRID, LIST, CARD\n **********************************************\n * @type {Array}\n */\n gridViewOptions: Array,\n /**\n * @description 현재 그리드 뷰 모드 : GRID, LIST, CARD\n ***************************************************\n * @type {String}\n */\n gridMode: String,\n /**\n * @description Infinity Page 사용 여부\n **************************************\n * @type {Boolean}\n */\n infinityPage: Boolean,\n /**\n * @description 그리스트 엘리먼트 ID\n ********************************\n * @type {String}\n */\n gristId: String,\n /**\n * @description 필터 폼 엘리먼트 ID\n ********************************\n * @type {String}\n */\n filterFormId: String,\n /**\n * @description detail 엘리먼트\n ******************************\n * @type {Object}\n */\n detailElement: Object\n }\n }\n\n /**\n * @description 그리스트\n ***********************\n * @returns {HTMLElement}\n */\n get grist() {\n return this.renderRoot.querySelector(this.gristId)\n }\n\n /**\n * @description 필터 폼\n ***********************\n * @returns {HTMLElement}\n */\n get filterForm() {\n return this.shadowRoot?.querySelector(this.filterFormId)\n }\n\n /**\n * @description 컨텍스트\n ***********************\n * @returns {HTMLElement}\n */\n get context() {\n let ctx = MetaUiUtil.getContextObject(this)\n\n if (ctx.actions) delete ctx.actions\n if (ctx.exportable) delete ctx.exportable\n if (ctx.importable) delete ctx.importable\n return ctx\n }\n\n /******************************************************\n * LifeCycle\n ******************************************************/\n\n /**\n * @override connectedCallback\n *******************************\n */\n async connectedCallback() {\n // 그리스트, 필터 폼 ID 설정\n this.gristId = 'ox-grist'\n this.filterFormId = 'ox-filters-form-base'\n\n // 메뉴 메타 정보 조회 및 기본 파싱\n await this.getAndParseMenuMeta()\n\n if (this.isElement) {\n await this.parseGristConfigs()\n }\n\n if (this.activityDataSet) {\n this.dataSet = (this.activityDataSet || {}).main\n }\n\n if (super.connectedCallback) {\n await super.connectedCallback()\n }\n }\n\n /**\n * @override firstUpdated\n **************************\n */\n async firstUpdated() {\n if (super.firstUpdated) {\n await super.firstUpdated()\n }\n }\n\n /**\n * @override pageInitialized\n ****************************\n */\n async pageInitialized() {\n if (this.isPage) {\n await this.parseGristConfigs()\n }\n\n if (super.pageInitialized) {\n await super.pageInitialized()\n }\n }\n\n /**\n * @override render\n ********************\n */\n render() {\n return MetaApi.getMasterDetailHtml(this)\n }\n\n /**\n * @descrtiption 메뉴 메타에서 기본 그리드 정보 파싱 처리\n ************************************************\n * @param {Object} menuMeta 메뉴 메타 정보\n */\n parseBasicGridConfigs(menuMeta) {\n this.gridConfig = menuMeta.grid\n this.gridColumnConfig = menuMeta.grid_column\n this.searchConfig = menuMeta.search\n this.gridEmphasized = menuMeta.gridEmphasized\n }\n\n /**\n * @descrtiption 그리스트 구성 정보 파싱 처리\n ***************************************\n */\n async parseGristConfigs() {\n // 그리드 설정 셋 파싱\n this.gristConfigSet = await MetaApi.parseGridConfigSet(this)\n\n // 마스터 그리드에 handlers > focus 이벤트를 등록\n this.gristConfigSet.rows.handlers = this.gristConfigSet.rows.handlers || {}\n let gristRowHandler = this.gristConfigSet.rows.handlers\n gristRowHandler.focus = this.masterGridFocusEventHandler.bind(this)\n\n // 마스터 그리드 옵션 처리\n this.masterOption = JSON.parse(this.etcConfig.master_option || '{}')\n let { split_filter = false } = this.masterOption\n this.useMasterFilterForm = this.useFilterForm === true && split_filter === false ? true : false\n this.useFilterForm = split_filter === true ? true : false\n\n // 필터 폼 사용을 하지 않는다면\n if (this.useFilterForm == false) {\n // 검색 조건 초기값 설정이 있다면 검색 초기값을 등록해놓는다.\n this.searchFieldValues = []\n\n // 검색 조건이 있는 컬럼 정보로 부터 그리드의 검색 조건 정보를 구성\n this.searchFields = this.gristConfigSet.columns\n .filter(x => x.filter)\n .map(x => {\n // 검색 조건\n let searchField = {\n name: x.name,\n type: x.filter.operator === 'search' ? 'search' : x.type,\n label: x.header,\n operator: x.filter.operator ? x.filter.operator : 'eq'\n }\n\n if (x.filter.options) {\n searchField.options = x.filter.options\n }\n\n if (x.record.options) {\n searchField.options = x.record.options\n }\n\n // 검색 조건 초기값이 있다면 설정\n if (x.filter.value) {\n this.searchFieldValues.push({\n name: searchField.name,\n operator: searchField.operator,\n value: x.filter.value\n })\n }\n\n delete x.filter\n return searchField\n })\n }\n }\n\n /**\n * @descrtiption 마스터 그리드에 대한 포커스 이벤트 핸들러 정의\n *****************************************************\n * @param {Array} columns\n * @param {Object} data\n * @param {Object} column\n * @param {Object} record\n * @param {Number} rowIndex\n */\n masterGridFocusEventHandler(columns, data, column, record, rowIndex) {\n if (record.id && this.detailElement) {\n this.detailElement.setParentId(record.id)\n }\n }\n\n /********************************************************************\n * C R U D Functions\n ********************************************************************/\n\n /**\n * @descrtiption 데이터 조회\n **************************\n */\n async fetch() {\n await this.grist.fetch()\n }\n\n /**\n * @descrtiption 데이터 조회 전 액션\n ********************************\n */\n async beforeFetch({ page = 0, limit = 0, sortings = [], filters = [] }) {\n if (this.detailElement && this.detailElement.clear) {\n await this.detailElement.clear()\n }\n\n return true\n }\n\n /**\n * @descrtiption 저장 처리\n **************************\n */\n async save() {\n let patches = MetaApi.patchesForUpdateMultiple(this.grist)\n let result = ValueUtil.isNotEmpty(patches) ? await this.updateMultiple(patches) : false\n if (result) {\n this.fetch()\n }\n }\n\n /**\n * @descrtiption id 리스트로 데이터 조회\n ************************************\n */\n async find() {\n let ids = MetaApi.getSelectedIdList(this.grist, true)\n return ValueUtil.isNotEmpty(ids) ? await this.findOne(ids[0]) : {}\n }\n\n /**\n * @descrtiption 삭제 처리\n **************************\n */\n async delete() {\n let ids = MetaApi.getSelectedIdList(this.grist, true)\n let result = ValueUtil.isNotEmpty(ids) ? await this.deleteByIds(ids) : false\n if (result) {\n this.fetch()\n }\n }\n\n /**\n * @descrtiption 익스포트 처리\n ****************************\n */\n async export() {\n let exportTitle = TermsUtil.tTitle(ValueUtil.getParams(this.menuInfo, 'title'))\n return await MetaApi.exportableData(this.isElement, exportTitle, this.grist)\n }\n\n /**\n * @descrtiption 임포트 처리\n **************************\n */\n async import() {\n // TODO\n }\n\n /**\n * @descrtiption 그리드 데이터 리턴\n *******************************\n * @returns {Object}\n */\n getData() {\n let records = this.grist.___data.records\n records = JSON.parse(JSON.stringify(records))\n\n records.forEach(record => {\n let keys = Object.keys(record)\n keys.forEach(x => {\n if (x.startsWith('__')) {\n delete record[x]\n }\n })\n })\n\n return {\n main: records,\n detail: this.detailElement.getData()\n }\n }\n }\n"]}
1
+ {"version":3,"file":"meta-master-detail-mixin.js","sourceRoot":"","sources":["../../client/mixin/meta-master-detail-mixin.js"],"names":[],"mappings":"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","sourcesContent":["import { MetaApi } from '../utils/meta-api'\nimport { MetaUiUtil } from '../utils/meta-ui-util'\nimport { ValueUtil } from '../utils/value-util'\nimport { TermsUtil } from '../utils/terms-util'\n\nimport { MetaButtonMixin } from './meta-button-mixin'\n\n/**\n * @description 메뉴 메타 정보를 이용해 마스터 - 디테일 그리드 화면 구현\n ************************************************************\n * @param {Object} MetaButtonMixin\n * @returns\n */\nexport const MetaMasterDetailMixin = baseElement =>\n class extends MetaButtonMixin(baseElement) {\n /**\n * @description 스타일 정의\n **************************\n * @returns {Array} 스타일\n */\n static get styles() {\n return MetaApi.getBasicMasterDetailStyles()\n }\n\n /**\n * @description 프로퍼티 정의\n ****************************\n * @returns {Object} 프로퍼티\n */\n static get properties() {\n return {\n /**\n * @description 그리드 구성 정보\n *****************************\n * @type {Object}\n */\n gridConfig: Object,\n /**\n * @description 그리드 컬럼 구성 정보\n *********************************\n * @type {Array}\n */\n gridColumnConfig: Array,\n /**\n * @description 검색 폼 구성 정보\n *******************************\n * @type {Array}\n */\n searchConfig: Array,\n /**\n * @description 화면에서 사용되는 서치 폼 : grist, filter, not\n *********************************************************\n * @type {String}\n */\n searchFormElement: String,\n /**\n * @description 메뉴 메타 정보로 부터 추출한 후 그리스트를 위해 설정 정보 구성\n *****************************************************************\n * @type {Object}\n */\n gristConfigSet: Object,\n /**\n * @description 필터 폼 사용 여부\n *****************************\n * @type {Boolean}\n */\n useFilterForm: Boolean,\n /**\n * @description 모바일 기기에서 그리드 모드 : GRID, LIST, CARD\n *********************************************************\n * @type {String}\n */\n gridMobileMode: String,\n /**\n * @description 데스크탑에서 그리드 모드 : GRID, LIST, CARD\n ******************************************************\n * @type {String}\n */\n gridDeskMode: String,\n /**\n * @description 그리드 뷰 모드 : GRID, LIST, CARD\n **********************************************\n * @type {Array}\n */\n gridViewOptions: Array,\n /**\n * @description 현재 그리드 뷰 모드 : GRID, LIST, CARD\n ***************************************************\n * @type {String}\n */\n gridMode: String,\n /**\n * @description Infinity Page 사용 여부\n **************************************\n * @type {Boolean}\n */\n infinityPage: Boolean,\n /**\n * @description 그리스트 엘리먼트 ID\n ********************************\n * @type {String}\n */\n gristId: String,\n /**\n * @description 필터 폼 엘리먼트 ID\n ********************************\n * @type {String}\n */\n filterFormId: String,\n /**\n * @description detail 엘리먼트\n ******************************\n * @type {Object}\n */\n detailElement: Object\n }\n }\n\n /**\n * @description 그리스트\n ***********************\n * @returns {HTMLElement}\n */\n get grist() {\n return this.renderRoot.querySelector(this.gristId)\n }\n\n /**\n * @description 필터 폼\n ***********************\n * @returns {HTMLElement}\n */\n get filterForm() {\n return this.shadowRoot?.querySelector(this.filterFormId)\n }\n\n /**\n * @description 컨텍스트\n ***********************\n * @returns {HTMLElement}\n */\n get context() {\n let ctx = MetaUiUtil.getContextObject(this)\n\n if (ctx.actions) delete ctx.actions\n if (ctx.exportable) delete ctx.exportable\n if (ctx.importable) delete ctx.importable\n return ctx\n }\n\n /******************************************************\n * LifeCycle\n ******************************************************/\n\n /**\n * @override connectedCallback\n *******************************\n */\n async connectedCallback() {\n // 그리스트, 필터 폼 ID 설정\n this.gristId = 'ox-grist'\n this.filterFormId = 'ox-filters-form-base'\n\n // 메뉴 메타 정보 조회 및 기본 파싱\n await this.getAndParseMenuMeta()\n\n if (this.isElement) {\n await this.parseGristConfigs()\n }\n\n if (this.activityDataSet) {\n this.dataSet = (this.activityDataSet || {}).main\n }\n\n if (super.connectedCallback) {\n await super.connectedCallback()\n }\n }\n\n /**\n * @override firstUpdated\n **************************\n */\n async firstUpdated() {\n if (super.firstUpdated) {\n await super.firstUpdated()\n }\n }\n\n /**\n * @override pageInitialized\n ****************************\n */\n async pageInitialized() {\n if (this.isPage) {\n await this.parseGristConfigs()\n }\n\n if (super.pageInitialized) {\n await super.pageInitialized()\n }\n }\n\n async pageUpdated(changes, lifecycle, before) {\n if (this.active) {\n /* this page is activated */\n if (this.gridConfig.grid_refresh_when_page_activated) {\n this.fetch()\n }\n } else {\n /* this page is deactivated */\n }\n }\n\n /**\n * @override render\n ********************\n */\n render() {\n return MetaApi.getMasterDetailHtml(this)\n }\n\n /**\n * @descrtiption 메뉴 메타에서 기본 그리드 정보 파싱 처리\n ************************************************\n * @param {Object} menuMeta 메뉴 메타 정보\n */\n parseBasicGridConfigs(menuMeta) {\n this.gridConfig = menuMeta.grid\n this.gridColumnConfig = menuMeta.grid_column\n this.searchConfig = menuMeta.search\n this.gridEmphasized = menuMeta.gridEmphasized\n }\n\n /**\n * @descrtiption 그리스트 구성 정보 파싱 처리\n ***************************************\n */\n async parseGristConfigs() {\n // 그리드 설정 셋 파싱\n this.gristConfigSet = await MetaApi.parseGridConfigSet(this)\n\n // 마스터 그리드에 handlers > focus 이벤트를 등록\n this.gristConfigSet.rows.handlers = this.gristConfigSet.rows.handlers || {}\n let gristRowHandler = this.gristConfigSet.rows.handlers\n gristRowHandler.focus = this.masterGridFocusEventHandler.bind(this)\n\n // 마스터 그리드 옵션 처리\n this.masterOption = JSON.parse(this.etcConfig.master_option || '{}')\n let { split_filter = false } = this.masterOption\n this.useMasterFilterForm = this.useFilterForm === true && split_filter === false ? true : false\n this.useFilterForm = split_filter === true ? true : false\n\n // 필터 폼 사용을 하지 않는다면\n if (this.useFilterForm == false) {\n // 검색 조건 초기값 설정이 있다면 검색 초기값을 등록해놓는다.\n this.searchFieldValues = []\n\n // 검색 조건이 있는 컬럼 정보로 부터 그리드의 검색 조건 정보를 구성\n this.searchFields = this.gristConfigSet.columns\n .filter(x => x.filter)\n .map(x => {\n // 검색 조건\n let searchField = {\n name: x.name,\n type: x.filter.operator === 'search' ? 'search' : x.type,\n label: x.header,\n operator: x.filter.operator ? x.filter.operator : 'eq'\n }\n\n if (x.filter.options) {\n searchField.options = x.filter.options\n }\n\n if (x.record.options) {\n searchField.options = x.record.options\n }\n\n // 검색 조건 초기값이 있다면 설정\n if (x.filter.value) {\n this.searchFieldValues.push({\n name: searchField.name,\n operator: searchField.operator,\n value: x.filter.value\n })\n }\n\n delete x.filter\n return searchField\n })\n }\n }\n\n /**\n * @descrtiption 마스터 그리드에 대한 포커스 이벤트 핸들러 정의\n *****************************************************\n * @param {Array} columns\n * @param {Object} data\n * @param {Object} column\n * @param {Object} record\n * @param {Number} rowIndex\n */\n masterGridFocusEventHandler(columns, data, column, record, rowIndex) {\n if (record.id && this.detailElement) {\n this.detailElement.setParentId(record.id)\n }\n }\n\n /********************************************************************\n * C R U D Functions\n ********************************************************************/\n\n /**\n * @descrtiption 데이터 조회\n **************************\n */\n async fetch() {\n await this.grist.fetch()\n }\n\n /**\n * @descrtiption 데이터 조회 전 액션\n ********************************\n */\n async beforeFetch({ page = 0, limit = 0, sortings = [], filters = [] }) {\n if (this.detailElement && this.detailElement.clear) {\n await this.detailElement.clear()\n }\n\n return true\n }\n\n /**\n * @descrtiption 저장 처리\n **************************\n */\n async save() {\n let patches = MetaApi.patchesForUpdateMultiple(this.grist)\n let result = ValueUtil.isNotEmpty(patches) ? await this.updateMultiple(patches) : false\n if (result) {\n this.fetch()\n }\n }\n\n /**\n * @descrtiption id 리스트로 데이터 조회\n ************************************\n */\n async find() {\n let ids = MetaApi.getSelectedIdList(this.grist, true)\n return ValueUtil.isNotEmpty(ids) ? await this.findOne(ids[0]) : {}\n }\n\n /**\n * @descrtiption 삭제 처리\n **************************\n */\n async delete() {\n let ids = MetaApi.getSelectedIdList(this.grist, true)\n let result = ValueUtil.isNotEmpty(ids) ? await this.deleteByIds(ids) : false\n if (result) {\n this.fetch()\n }\n }\n\n /**\n * @descrtiption 익스포트 처리\n ****************************\n */\n async export() {\n let exportTitle = TermsUtil.tTitle(ValueUtil.getParams(this.menuInfo, 'title'))\n return await MetaApi.exportableData(this.isElement, exportTitle, this.grist)\n }\n\n /**\n * @descrtiption 임포트 처리\n **************************\n */\n async import() {\n // TODO\n }\n\n /**\n * @descrtiption 그리드 데이터 리턴\n *******************************\n * @returns {Object}\n */\n getData() {\n let records = this.grist.___data.records\n records = JSON.parse(JSON.stringify(records))\n\n records.forEach(record => {\n let keys = Object.keys(record)\n keys.forEach(x => {\n if (x.startsWith('__')) {\n delete record[x]\n }\n })\n })\n\n return {\n main: records,\n detail: this.detailElement.getData()\n }\n }\n }\n"]}
@@ -10,6 +10,7 @@ declare const ButtonRolePage_base: {
10
10
  dataSet: any;
11
11
  firstUpdated(): Promise<void>;
12
12
  pageInitialized(): Promise<void>;
13
+ pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
13
14
  render(): HTMLElement;
14
15
  parseBasicGridConfigs(menuMeta: any): void;
15
16
  gridConfig: any;
@@ -58,7 +59,6 @@ declare const ButtonRolePage_base: {
58
59
  get isElement(): boolean;
59
60
  get isDetail(): boolean;
60
61
  dataChangeEventHandler(e: any): Promise<void>;
61
- pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
62
62
  get isPopup(): boolean;
63
63
  get isPage(): boolean;
64
64
  getAndParseMenuMeta(): any;
@@ -10,6 +10,7 @@ declare const MetaMasterDetailElement_base: {
10
10
  dataSet: any;
11
11
  firstUpdated(): Promise<void>;
12
12
  pageInitialized(): Promise<void>;
13
+ pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
13
14
  render(): HTMLElement;
14
15
  parseBasicGridConfigs(menuMeta: any): void;
15
16
  gridConfig: any;
@@ -58,7 +59,6 @@ declare const MetaMasterDetailElement_base: {
58
59
  get isElement(): boolean;
59
60
  get isDetail(): boolean;
60
61
  dataChangeEventHandler(e: any): Promise<void>;
61
- pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
62
62
  get isPopup(): boolean;
63
63
  get isPage(): boolean;
64
64
  getAndParseMenuMeta(): any;
@@ -10,6 +10,7 @@ declare const MetaMasterDetailPage_base: {
10
10
  dataSet: any;
11
11
  firstUpdated(): Promise<void>;
12
12
  pageInitialized(): Promise<void>;
13
+ pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
13
14
  render(): HTMLElement;
14
15
  parseBasicGridConfigs(menuMeta: any): void;
15
16
  gridConfig: any;
@@ -58,7 +59,6 @@ declare const MetaMasterDetailPage_base: {
58
59
  get isElement(): boolean;
59
60
  get isDetail(): boolean;
60
61
  dataChangeEventHandler(e: any): Promise<void>;
61
- pageUpdated(changes: any, lifecycle: any, before: any): Promise<void>;
62
62
  get isPopup(): boolean;
63
63
  get isPage(): boolean;
64
64
  getAndParseMenuMeta(): any;