@things-factory/meta-ui 7.0.1-alpha.29 → 7.0.1-alpha.30

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.
@@ -1 +1 @@
1
- {"version":3,"file":"personal-column-selector.js","sourceRoot":"","sources":["../../../client/pages/personalize/personal-column-selector.js"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { css, html, LitElement } from 'lit'\n\nimport { i18next, localize } from '@things-factory/i18n-base'\nimport { ScrollbarStyles, CommonGristStyles, ButtonContainerStyles } from '@operato/styles'\n\nimport { TermsUtil } from './../../utils/terms-util'\nimport { MetaApi } from '../../utils/meta-api'\nimport { ServiceUtil } from '../../utils/service-util'\n\n/**\n * @license\n * Copyright © HatioLab Inc. All rights reserved.\n * @author Yang <wryang@hatiolab.com>\n * @description 사용자 그리드 컬럼 개인화 팝업\n */\nexport class PersonalColumnSelector extends localize(i18next)(LitElement) {\n /**\n * @description 스타일 정의\n ***********************************\n * @returns {Object} 화면의 스타일 정의\n */\n static get styles() {\n let styles = [\n ScrollbarStyles,\n CommonGristStyles,\n ButtonContainerStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow-x: auto;\n }\n .container {\n flex: 1;\n display: grid;\n overflow: hidden;\n }\n .container_detail {\n background-color: var(--main-section-background-color);\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n }\n\n h2 {\n padding: var(--subtitle-padding);\n font: var(--subtitle-font);\n color: var(--subtitle-text-color);\n border-bottom: var(--subtitle-border-bottom);\n }\n\n .container_detail h2 {\n margin: var(--grist-title-margin);\n border: var(--grist-title-border);\n font: var(--grist-title-font);\n color: var(--secondary-color);\n }\n\n .container_detail h2 md-icon {\n --md-icon-size: var(--grist-title-icon-size);\n vertical-align: middle;\n margin: var(--grist-title-icon-margin);\n color: var(--grist-title-icon-color);\n }\n\n h2 {\n padding-bottom: var(--grist-title-with-grid-padding);\n }\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n search-form {\n overflow: visible;\n }\n `\n ]\n return styles\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 configGrist: {\n type: Object\n },\n\n /**\n * @description 메뉴 ID\n ******************************\n * @type {String}\n */\n menuId: {\n type: String\n }\n }\n }\n\n /**\n * @description 라이트 사이클\n ***************************\n */\n async connectedCallback() {\n // 메뉴 그룹 그리드 설정\n this.gridConfig = {\n rows: { selectable: false, appendable: false },\n pagination: { infinite: true },\n columns: [\n ...MetaApi.getGristGuttersConfig(false, false),\n MetaApi.getGristColumnConfig('integer', 'rank', 'center', true, false, 80),\n MetaApi.getGristColumnConfig('string', 'name', 'left', false, false, 180),\n MetaApi.getGristColumnConfig2('string', 'header', 'display', 'left', false, false, 180),\n MetaApi.getGristColumnConfig('boolean', 'hidden', 'center', true, false, 60)\n ]\n }\n\n if (super.connectedCallback) {\n await super.connectedCallback()\n }\n }\n\n /**\n * @description 라이프 사이클\n ***************************\n */\n render() {\n return html` <div id=\"container\" class=\"container\">\n <div class=\"container_detail\">\n <ox-grist id=\"ox-grist\" .config=${this.gridConfig} .mode=${'GRID'} auto-fetch .fetchHandler=${this.fetchColumns.bind(this)}> </ox-grist>\n <div id=\"button-container\" class=\"button-container\" style=\"margin-left:unset\">\n <button @click=${this.reset.bind(this)}><md-icon>restart_alt</md-icon>${TermsUtil.tButton('reset')}</button>\n <div filler></div>\n <button @click=${this.delete.bind(this)}><md-icon>delete</md-icon>${TermsUtil.tButton('delete')}</button>\n <button @click=${this.save.bind(this)}><md-icon>save</md-icon>${TermsUtil.tButton('save')}</button>\n </div>\n </div>\n </div>`\n }\n\n /**\n * @description 그리드 리턴\n **************************\n * @returns {Object} 그리드\n */\n get grist() {\n return this.shadowRoot.querySelector('#ox-grist')\n }\n\n /**\n * @description 컬럼 조회\n ***************************\n * @returns\n */\n async fetchColumns() {\n // 팝업 오프너에서 받아온 그리스트의 설정으로 보여준다\n let cols = this.configGrist.config.columns\n let filterCols = cols.filter(x => x.type != 'gutter' && x.name != 'id' && x.unusable !== true)\n let rank = 0\n\n let items = filterCols.map(x => {\n rank = rank + 10\n x.rank = rank\n return x\n })\n\n return { total: 0, records: items }\n }\n\n /**\n * @description 개인화 데이터 삭제\n ***************************\n * @returns\n */\n async delete(e) {\n let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId)\n let { id = undefined } = personal\n\n if (id) {\n let result = await ServiceUtil.deleteListByIds([id], 'deleteGridPersonalizes')\n if (result == true) {\n history.back()\n }\n } else {\n await MetaApi.showToast('info', 'there_is_nothing_to_delete')\n }\n }\n\n /**\n * @description 개인화 그리드 초기화\n ************************************************\n */\n async reset(e) {\n await this.grist.fetch()\n }\n\n /**\n * @description 컬럼 변경 사항 저장\n ************************************************\n */\n async save(e) {\n // 변경 체크\n MetaApi.patchesForUpdateMultiple(this.grist)\n\n // 기존 데이터 조회\n let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId)\n let { id = undefined, template = {} } = personal\n\n let tempName = 'master'\n if (this.configGrist.configName) {\n tempName = this.configGrist.configName\n }\n\n // 기존 데이터 삭제\n if (template[tempName]) {\n delete template[tempName]\n }\n\n // 그리드 설정 데이터 숨김 필드 제외 후 정렬\n let records = this.grist.dirtyData.records\n let data = records.filter(x => x.hidden == false)\n data.sort((a, b) => {\n return a.rank - b.rank\n })\n template[tempName] = data.map(x => {\n return x.name\n })\n\n let patch = { template: JSON.stringify(template) }\n\n // 기존에 ID 가 있으면 update\n if (id) {\n patch.id = id\n patch.cuFlag = 'M'\n } else {\n patch.menu = {\n id: this.menuId\n }\n patch.cuFlag = '+'\n }\n await MetaApi.updateMultiple('updateMultipleGridpersonalize', [patch])\n\n MetaApi.showToast('info', TermsUtil.tText('success to save'))\n history.back()\n }\n}\n\ncustomElements.define('personal-column-selector', PersonalColumnSelector)\n"]}
1
+ {"version":3,"file":"personal-column-selector.js","sourceRoot":"","sources":["../../../client/pages/personalize/personal-column-selector.js"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { css, html, LitElement } from 'lit'\n\nimport { i18next, localize } from '@things-factory/i18n-base'\nimport { ScrollbarStyles, CommonGristStyles, ButtonContainerStyles } from '@operato/styles'\n\nimport { TermsUtil } from './../../utils/terms-util'\nimport { MetaApi } from '../../utils/meta-api'\nimport { ServiceUtil } from '../../utils/service-util'\n\n/**\n * @license\n * Copyright © HatioLab Inc. All rights reserved.\n * @author Yang <wryang@hatiolab.com>\n * @description 사용자 그리드 컬럼 개인화 팝업\n */\nexport class PersonalColumnSelector extends localize(i18next)(LitElement) {\n /**\n * @description 스타일 정의\n ***********************************\n * @returns {Object} 화면의 스타일 정의\n */\n static get styles() {\n let styles = [\n ScrollbarStyles,\n CommonGristStyles,\n ButtonContainerStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow-x: auto;\n }\n .container {\n flex: 1;\n display: grid;\n overflow: hidden;\n }\n .container_detail {\n background-color: var(--main-section-background-color);\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n }\n\n h2 {\n padding: var(--subtitle-padding);\n font: var(--subtitle-font);\n color: var(--subtitle-text-color);\n border-bottom: var(--subtitle-border-bottom);\n }\n\n .container_detail h2 {\n margin: var(--grist-title-margin);\n border: var(--grist-title-border);\n font: var(--grist-title-font);\n color: var(--secondary-color);\n }\n\n .container_detail h2 md-icon {\n --md-icon-size: var(--grist-title-icon-size);\n vertical-align: middle;\n margin: var(--grist-title-icon-margin);\n color: var(--grist-title-icon-color);\n }\n\n h2 {\n padding-bottom: var(--grist-title-with-grid-padding);\n }\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n search-form {\n overflow: visible;\n }\n `\n ]\n return styles\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 configGrist: {\n type: Object\n },\n\n /**\n * @description 메뉴 ID\n ******************************\n * @type {String}\n */\n menuId: {\n type: String\n }\n }\n }\n\n /**\n * @description 라이트 사이클\n ***************************\n */\n async connectedCallback() {\n // 메뉴 그룹 그리드 설정\n this.gridConfig = {\n rows: { selectable: false, appendable: false },\n pagination: { infinite: true },\n columns: [\n ...MetaApi.getGristGuttersConfig(false, false),\n MetaApi.getGristColumnConfig('integer', 'rank', 'center', true, false, 80),\n MetaApi.getGristColumnConfig('string', 'name', 'left', false, false, 180),\n MetaApi.getGristColumnConfig2('string', 'header', 'display', 'left', false, false, 180),\n MetaApi.getGristColumnConfig('boolean', 'hidden', 'center', true, false, 60)\n ]\n }\n\n if (super.connectedCallback) {\n await super.connectedCallback()\n }\n }\n\n /**\n * @description 라이프 사이클\n ***************************\n */\n render() {\n return html` <div id=\"container\" class=\"container\">\n <div class=\"container_detail\">\n <ox-grist id=\"ox-grist\" .config=${this.gridConfig} .mode=${'GRID'} auto-fetch .fetchHandler=${this.fetchColumns.bind(this)}> </ox-grist>\n <div id=\"button-container\" class=\"button-container\" style=\"margin-left:unset\">\n <button @click=${this.reset.bind(this)}><md-icon>restart_alt</md-icon>${TermsUtil.tButton('reset')}</button>\n <div filler></div>\n <button @click=${this.save.bind(this)}><md-icon>save</md-icon>${TermsUtil.tButton('save')}</button>\n <button danger @click=${this.delete.bind(this)}><md-icon>delete</md-icon>${TermsUtil.tButton('delete')}</button>\n </div>\n </div>\n </div>`\n }\n\n /**\n * @description 그리드 리턴\n **************************\n * @returns {Object} 그리드\n */\n get grist() {\n return this.shadowRoot.querySelector('#ox-grist')\n }\n\n /**\n * @description 컬럼 조회\n ***************************\n * @returns\n */\n async fetchColumns() {\n // 팝업 오프너에서 받아온 그리스트의 설정으로 보여준다\n let cols = this.configGrist.config.columns\n let filterCols = cols.filter(x => x.type != 'gutter' && x.name != 'id' && x.unusable !== true)\n let rank = 0\n\n let items = filterCols.map(x => {\n rank = rank + 10\n x.rank = rank\n return x\n })\n\n return { total: 0, records: items }\n }\n\n /**\n * @description 개인화 데이터 삭제\n ***************************\n * @returns\n */\n async delete(e) {\n let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId)\n let { id = undefined } = personal\n\n if (id) {\n let result = await ServiceUtil.deleteListByIds([id], 'deleteGridPersonalizes')\n if (result == true) {\n history.back()\n }\n } else {\n await MetaApi.showToast('info', 'there_is_nothing_to_delete')\n }\n }\n\n /**\n * @description 개인화 그리드 초기화\n ************************************************\n */\n async reset(e) {\n await this.grist.fetch()\n }\n\n /**\n * @description 컬럼 변경 사항 저장\n ************************************************\n */\n async save(e) {\n // 변경 체크\n MetaApi.patchesForUpdateMultiple(this.grist)\n\n // 기존 데이터 조회\n let personal = await MetaApi.findMenuGridPersnalTemplate(this.menuId)\n let { id = undefined, template = {} } = personal\n\n let tempName = 'master'\n if (this.configGrist.configName) {\n tempName = this.configGrist.configName\n }\n\n // 기존 데이터 삭제\n if (template[tempName]) {\n delete template[tempName]\n }\n\n // 그리드 설정 데이터 숨김 필드 제외 후 정렬\n let records = this.grist.dirtyData.records\n let data = records.filter(x => x.hidden == false)\n data.sort((a, b) => {\n return a.rank - b.rank\n })\n template[tempName] = data.map(x => {\n return x.name\n })\n\n let patch = { template: JSON.stringify(template) }\n\n // 기존에 ID 가 있으면 update\n if (id) {\n patch.id = id\n patch.cuFlag = 'M'\n } else {\n patch.menu = {\n id: this.menuId\n }\n patch.cuFlag = '+'\n }\n await MetaApi.updateMultiple('updateMultipleGridpersonalize', [patch])\n\n MetaApi.showToast('info', TermsUtil.tText('success to save'))\n history.back()\n }\n}\n\ncustomElements.define('personal-column-selector', PersonalColumnSelector)\n"]}