@things-factory/personalization 7.0.1-alpha.62 → 7.0.1-alpha.63

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.
@@ -97,6 +97,7 @@ export class GridPreferenceEditor extends localize(i18next)(LitElement) {
97
97
  record: {
98
98
  align: 'left'
99
99
  },
100
+ hidden: true,
100
101
  filter: 'search',
101
102
  sortable: true,
102
103
  width: 150
@@ -104,7 +105,7 @@ export class GridPreferenceEditor extends localize(i18next)(LitElement) {
104
105
  {
105
106
  type: 'string',
106
107
  name: 'header',
107
- header: i18next.t('field.header'),
108
+ header: i18next.t('field.name'),
108
109
  record: {
109
110
  align: 'left'
110
111
  },
@@ -117,7 +118,8 @@ export class GridPreferenceEditor extends localize(i18next)(LitElement) {
117
118
  label: true,
118
119
  header: i18next.t('field.hidden'),
119
120
  record: {
120
- align: 'center'
121
+ align: 'center',
122
+ editable: true
121
123
  },
122
124
  filter: true,
123
125
  sortable: true,
@@ -214,8 +216,8 @@ export class GridPreferenceEditor extends localize(i18next)(LitElement) {
214
216
 
215
217
  const response = await client.query({
216
218
  query: gql`
217
- mutation ($route: String!, $preference: Object!) {
218
- saveMyScreenPreference(route: $route, preference: $preference) {
219
+ mutation ($route: String!, $element: String!, $preference: Object!) {
220
+ updateMyScreenPreference(route: $route, element: $element, preference: $preference) {
219
221
  id
220
222
  }
221
223
  }
@@ -26,6 +26,7 @@ let GridPreferenceEditor = class GridPreferenceEditor extends localize(i18next)(
26
26
  record: {
27
27
  align: 'left'
28
28
  },
29
+ hidden: true,
29
30
  filter: 'search',
30
31
  sortable: true,
31
32
  width: 150
@@ -33,7 +34,7 @@ let GridPreferenceEditor = class GridPreferenceEditor extends localize(i18next)(
33
34
  {
34
35
  type: 'string',
35
36
  name: 'header',
36
- header: i18next.t('field.header'),
37
+ header: i18next.t('field.name'),
37
38
  record: {
38
39
  align: 'left'
39
40
  },
@@ -46,7 +47,8 @@ let GridPreferenceEditor = class GridPreferenceEditor extends localize(i18next)(
46
47
  label: true,
47
48
  header: i18next.t('field.hidden'),
48
49
  record: {
49
- align: 'center'
50
+ align: 'center',
51
+ editable: true
50
52
  },
51
53
  filter: true,
52
54
  sortable: true,
@@ -125,8 +127,8 @@ let GridPreferenceEditor = class GridPreferenceEditor extends localize(i18next)(
125
127
  });
126
128
  const response = await client.query({
127
129
  query: gql `
128
- mutation ($route: String!, $preference: Object!) {
129
- saveMyScreenPreference(route: $route, preference: $preference) {
130
+ mutation ($route: String!, $element: String!, $preference: Object!) {
131
+ updateMyScreenPreference(route: $route, element: $element, preference: $preference) {
130
132
  id
131
133
  }
132
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grid-preference-editor.js","sourceRoot":"","sources":["../client/grid-preference-editor.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { client } from '@operato/graphql'\nimport { DataGrist } from '@operato/data-grist'\nimport { ScrollbarStyles, CommonGristStyles, ButtonContainerStyles } from '@operato/styles'\n\n@customElement('grid-preference-editor')\nexport class GridPreferenceEditor extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n CommonGristStyles,\n ButtonContainerStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow-x: auto;\n }\n\n .container {\n flex: 1;\n display: grid;\n overflow: hidden;\n }\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\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n\n ox-filters-form {\n flex: 1;\n }\n `\n ]\n\n @property({ type: Object }) target!: DataGrist\n @property({ type: String }) route!: string\n\n @query('ox-grist') private grist!: DataGrist\n\n private gridConfig: any\n\n async connectedCallback() {\n // 메뉴 그룹 그리드 설정\n this.gridConfig = {\n rows: { selectable: false, appendable: false },\n pagination: { infinite: true },\n list: {\n fields: ['route', 'element'],\n details: ['active', 'updatedAt']\n },\n columns: [\n { type: 'gutter', gutterName: 'sequence' },\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: {\n align: 'left'\n },\n filter: 'search',\n sortable: true,\n width: 150\n },\n {\n type: 'string',\n name: 'header',\n header: i18next.t('field.header'),\n record: {\n align: 'left'\n },\n filter: 'search',\n width: 200\n },\n {\n type: 'checkbox',\n name: 'hidden',\n label: true,\n header: i18next.t('field.hidden'),\n record: {\n align: 'center'\n },\n filter: true,\n sortable: true,\n width: 60\n }\n ]\n }\n\n await super.connectedCallback()\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 mode=\"GRID\" .config=${this.gridConfig} .fetchHandler=${this.fetchColumns.bind(this)} auto-fetch>\n </ox-grist>\n\n <div class=\"button-container\" style=\"margin-left:unset\">\n <button @click=${this.reset.bind(this)}><md-icon>restart_alt</md-icon>${i18next.t('button.reset')}</button>\n <div filler></div>\n <button @click=${this.save.bind(this)}><md-icon>save</md-icon>${i18next.t('button.save')}</button>\n <button danger @click=${this.delete.bind(this)}>\n <md-icon>delete</md-icon>${i18next.t('button.delete')}\n </button>\n </div>\n </div>\n </div>`\n }\n\n async fetchColumns() {\n const columns = this.target.config.columns.filter(\n column => column.type != 'gutter' && column.name != 'id' && !column.unusable\n )\n\n return { total: 0, records: columns }\n }\n\n async delete(e: MouseEvent) {\n const element = this.target.id\n\n const response = await client.query({\n query: gql`\n mutation ($route: String!, $element: String!) {\n deleteMyScreenPreference(route: $route, element: $element) {\n id\n }\n }\n `,\n variables: {\n route: this.route,\n element\n }\n })\n\n if (!response.errors) {\n this.showToast(i18next.t('text.success to delete'))\n history.back()\n }\n }\n\n async reset(e: MouseEvent) {\n await this.grist.fetch()\n }\n\n async save(e: MouseEvent) {\n const element = this.target.id\n\n const dirties = this.grist.dirtyRecords\n const targetColumns = this.target.config.columns\n\n dirties.forEach(record => {\n const { name, hidden } = record\n const targetColumn = targetColumns.find(column => column.name == name)\n\n if (targetColumn) {\n targetColumn.hidden = hidden\n }\n })\n\n await this.target.requestUpdate()\n\n const preference = this.grist.data.records.map(record => {\n const { name, hidden } = record\n\n return {\n name,\n hidden\n }\n })\n\n const response = await client.query({\n query: gql`\n mutation ($route: String!, $preference: Object!) {\n saveMyScreenPreference(route: $route, preference: $preference) {\n id\n }\n }\n `,\n variables: {\n route: this.route,\n element,\n preference\n }\n })\n\n if (!response.errors) {\n this.showToast(i18next.t('text.success to save'))\n }\n }\n\n showToast(message) {\n document.dispatchEvent(new CustomEvent('notify', { detail: { message } }))\n }\n}\n"]}
1
+ {"version":3,"file":"grid-preference-editor.js","sourceRoot":"","sources":["../client/grid-preference-editor.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { client } from '@operato/graphql'\nimport { DataGrist } from '@operato/data-grist'\nimport { ScrollbarStyles, CommonGristStyles, ButtonContainerStyles } from '@operato/styles'\n\n@customElement('grid-preference-editor')\nexport class GridPreferenceEditor extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n CommonGristStyles,\n ButtonContainerStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow-x: auto;\n }\n\n .container {\n flex: 1;\n display: grid;\n overflow: hidden;\n }\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\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n\n ox-filters-form {\n flex: 1;\n }\n `\n ]\n\n @property({ type: Object }) target!: DataGrist\n @property({ type: String }) route!: string\n\n @query('ox-grist') private grist!: DataGrist\n\n private gridConfig: any\n\n async connectedCallback() {\n // 메뉴 그룹 그리드 설정\n this.gridConfig = {\n rows: { selectable: false, appendable: false },\n pagination: { infinite: true },\n list: {\n fields: ['route', 'element'],\n details: ['active', 'updatedAt']\n },\n columns: [\n { type: 'gutter', gutterName: 'sequence' },\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: {\n align: 'left'\n },\n hidden: true,\n filter: 'search',\n sortable: true,\n width: 150\n },\n {\n type: 'string',\n name: 'header',\n header: i18next.t('field.name'),\n record: {\n align: 'left'\n },\n filter: 'search',\n width: 200\n },\n {\n type: 'checkbox',\n name: 'hidden',\n label: true,\n header: i18next.t('field.hidden'),\n record: {\n align: 'center',\n editable: true\n },\n filter: true,\n sortable: true,\n width: 60\n }\n ]\n }\n\n await super.connectedCallback()\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 mode=\"GRID\" .config=${this.gridConfig} .fetchHandler=${this.fetchColumns.bind(this)} auto-fetch>\n </ox-grist>\n\n <div class=\"button-container\" style=\"margin-left:unset\">\n <button @click=${this.reset.bind(this)}><md-icon>restart_alt</md-icon>${i18next.t('button.reset')}</button>\n <div filler></div>\n <button @click=${this.save.bind(this)}><md-icon>save</md-icon>${i18next.t('button.save')}</button>\n <button danger @click=${this.delete.bind(this)}>\n <md-icon>delete</md-icon>${i18next.t('button.delete')}\n </button>\n </div>\n </div>\n </div>`\n }\n\n async fetchColumns() {\n const columns = this.target.config.columns.filter(\n column => column.type != 'gutter' && column.name != 'id' && !column.unusable\n )\n\n return { total: 0, records: columns }\n }\n\n async delete(e: MouseEvent) {\n const element = this.target.id\n\n const response = await client.query({\n query: gql`\n mutation ($route: String!, $element: String!) {\n deleteMyScreenPreference(route: $route, element: $element) {\n id\n }\n }\n `,\n variables: {\n route: this.route,\n element\n }\n })\n\n if (!response.errors) {\n this.showToast(i18next.t('text.success to delete'))\n history.back()\n }\n }\n\n async reset(e: MouseEvent) {\n await this.grist.fetch()\n }\n\n async save(e: MouseEvent) {\n const element = this.target.id\n\n const dirties = this.grist.dirtyRecords\n const targetColumns = this.target.config.columns\n\n dirties.forEach(record => {\n const { name, hidden } = record\n const targetColumn = targetColumns.find(column => column.name == name)\n\n if (targetColumn) {\n targetColumn.hidden = hidden\n }\n })\n\n await this.target.requestUpdate()\n\n const preference = this.grist.data.records.map(record => {\n const { name, hidden } = record\n\n return {\n name,\n hidden\n }\n })\n\n const response = await client.query({\n query: gql`\n mutation ($route: String!, $element: String!, $preference: Object!) {\n updateMyScreenPreference(route: $route, element: $element, preference: $preference) {\n id\n }\n }\n `,\n variables: {\n route: this.route,\n element,\n preference\n }\n })\n\n if (!response.errors) {\n this.showToast(i18next.t('text.success to save'))\n }\n }\n\n showToast(message) {\n document.dispatchEvent(new CustomEvent('notify', { detail: { message } }))\n }\n}\n"]}