@things-factory/personalization 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 (55) hide show
  1. package/client/grid-preference-editor.ts +12 -10
  2. package/client/index.ts +2 -0
  3. package/client/page-preference-provider-impl.ts +63 -0
  4. package/client/types.ts +8 -0
  5. package/dist-client/grid-preference-editor.d.ts +1 -1
  6. package/dist-client/grid-preference-editor.js +12 -10
  7. package/dist-client/grid-preference-editor.js.map +1 -1
  8. package/dist-client/index.d.ts +2 -0
  9. package/dist-client/index.js +2 -1
  10. package/dist-client/index.js.map +1 -1
  11. package/dist-client/page-preference-provider-impl.d.ts +17 -0
  12. package/dist-client/page-preference-provider-impl.js +52 -0
  13. package/dist-client/page-preference-provider-impl.js.map +1 -0
  14. package/dist-client/tsconfig.tsbuildinfo +1 -1
  15. package/dist-client/types.d.ts +15 -0
  16. package/dist-client/types.js +2 -0
  17. package/dist-client/types.js.map +1 -0
  18. package/dist-server/index.js +2 -0
  19. package/dist-server/index.js.map +1 -1
  20. package/dist-server/service/index.js +4 -4
  21. package/dist-server/service/index.js.map +1 -1
  22. package/dist-server/service/page-preference/index.js +9 -0
  23. package/dist-server/service/page-preference/index.js.map +1 -0
  24. package/dist-server/service/{screen-preference/screen-preference-mutation.js → page-preference/page-preference-mutation.js} +39 -39
  25. package/dist-server/service/page-preference/page-preference-mutation.js.map +1 -0
  26. package/dist-server/service/page-preference/page-preference-query.js +94 -0
  27. package/dist-server/service/page-preference/page-preference-query.js.map +1 -0
  28. package/dist-server/service/{screen-preference/screen-preference-type.js → page-preference/page-preference-type.js} +28 -28
  29. package/dist-server/service/page-preference/page-preference-type.js.map +1 -0
  30. package/dist-server/service/{screen-preference/screen-preference.js → page-preference/page-preference.js} +30 -30
  31. package/dist-server/service/page-preference/page-preference.js.map +1 -0
  32. package/dist-server/tsconfig.tsbuildinfo +1 -1
  33. package/helps/personalization/screen-preference.md +1 -1
  34. package/package.json +4 -4
  35. package/server/index.ts +2 -0
  36. package/server/service/index.ts +4 -4
  37. package/server/service/page-preference/index.ts +6 -0
  38. package/server/service/page-preference/page-preference-mutation.ts +101 -0
  39. package/server/service/page-preference/page-preference-query.ts +61 -0
  40. package/server/service/{screen-preference/screen-preference-type.ts → page-preference/page-preference-type.ts} +8 -8
  41. package/server/service/{screen-preference/screen-preference.ts → page-preference/page-preference.ts} +13 -13
  42. package/things-factory.config.js +0 -3
  43. package/dist-server/migrations/index.js +0 -12
  44. package/dist-server/migrations/index.js.map +0 -1
  45. package/dist-server/service/screen-preference/index.js +0 -9
  46. package/dist-server/service/screen-preference/index.js.map +0 -1
  47. package/dist-server/service/screen-preference/screen-preference-mutation.js.map +0 -1
  48. package/dist-server/service/screen-preference/screen-preference-query.js +0 -94
  49. package/dist-server/service/screen-preference/screen-preference-query.js.map +0 -1
  50. package/dist-server/service/screen-preference/screen-preference-type.js.map +0 -1
  51. package/dist-server/service/screen-preference/screen-preference.js.map +0 -1
  52. package/server/migrations/index.ts +0 -9
  53. package/server/service/screen-preference/index.ts +0 -6
  54. package/server/service/screen-preference/screen-preference-mutation.ts +0 -101
  55. package/server/service/screen-preference/screen-preference-query.ts +0 -61
@@ -73,7 +73,7 @@ export class GridPreferenceEditor extends localize(i18next)(LitElement) {
73
73
  ]
74
74
 
75
75
  @property({ type: Object }) target!: DataGrist
76
- @property({ type: String }) route!: string
76
+ @property({ type: String }) page!: string
77
77
 
78
78
  @query('ox-grist') private grist!: DataGrist
79
79
 
@@ -85,7 +85,7 @@ export class GridPreferenceEditor extends localize(i18next)(LitElement) {
85
85
  rows: { selectable: false, appendable: false },
86
86
  pagination: { infinite: true },
87
87
  list: {
88
- fields: ['route', 'element'],
88
+ fields: ['page', 'element'],
89
89
  details: ['active', 'updatedAt']
90
90
  },
91
91
  columns: [
@@ -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,
@@ -164,14 +166,14 @@ export class GridPreferenceEditor extends localize(i18next)(LitElement) {
164
166
 
165
167
  const response = await client.query({
166
168
  query: gql`
167
- mutation ($route: String!, $element: String!) {
168
- deleteMyScreenPreference(route: $route, element: $element) {
169
+ mutation ($page: String!, $element: String!) {
170
+ deleteMyPagePreference(page: $page, element: $element) {
169
171
  id
170
172
  }
171
173
  }
172
174
  `,
173
175
  variables: {
174
- route: this.route,
176
+ page: this.page,
175
177
  element
176
178
  }
177
179
  })
@@ -214,14 +216,14 @@ 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 ($page: String!, $element: String!, $preference: Object!) {
220
+ updateMyPagePreference(page: $page, element: $element, preference: $preference) {
219
221
  id
220
222
  }
221
223
  }
222
224
  `,
223
225
  variables: {
224
- route: this.route,
226
+ page: this.page,
225
227
  element,
226
228
  preference
227
229
  }
package/client/index.ts CHANGED
@@ -0,0 +1,2 @@
1
+ export * from './types.js'
2
+ export * from './page-preference-provider-impl.js'
@@ -0,0 +1,63 @@
1
+ import gql from 'graphql-tag'
2
+ import { client } from '@operato/graphql'
3
+ import { i18next } from '@operato/i18n'
4
+
5
+ import { PagePreferenceProvider } from './types'
6
+
7
+ export class PagePreferenceProviderImpl implements PagePreferenceProvider {
8
+ public page?: string
9
+ public element?: string
10
+ public preference?: { [key: string]: any }
11
+
12
+ constructor(page: string, element: string, preference?: { [key: string]: any }) {
13
+ this.page = page
14
+ this.element = element
15
+ this.preference = preference
16
+ }
17
+
18
+ async load(): Promise<{ [key: string]: any } | undefined> {
19
+ const response = await client.query({
20
+ query: gql`
21
+ query ($page: String!, $element: String!) {
22
+ myPagePreference(page: $page, element: $element) {
23
+ preference
24
+ }
25
+ }
26
+ `,
27
+ variables: {
28
+ page: this.page,
29
+ element: this.element
30
+ }
31
+ })
32
+
33
+ if (!response.errors) {
34
+ this.preference = response.data.myPagePreference?.preference || {}
35
+ return this.preference
36
+ }
37
+ }
38
+
39
+ async save(preference: { [key: string]: any }): Promise<void> {
40
+ const response = await client.mutate({
41
+ mutation: gql`
42
+ mutation ($page: String!, $element: String!, $preference: Object!) {
43
+ updateMyPagePreference(page: $page, element: $element, preference: $preference) {
44
+ preference
45
+ }
46
+ }
47
+ `,
48
+ variables: {
49
+ page: this.page,
50
+ element: this.element,
51
+ preference
52
+ }
53
+ })
54
+
55
+ if (!response.errors) {
56
+ document.dispatchEvent(
57
+ new CustomEvent('notify', {
58
+ detail: { message: i18next.t('text.updated_successfully'), option: { timer: 3000 } }
59
+ })
60
+ )
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,8 @@
1
+ export interface PagePreferenceProvider {
2
+ page?: string
3
+ element?: string
4
+ preference?: { [key: string]: any }
5
+
6
+ load: () => { [key: string]: any } | undefined | Promise<{ [key: string]: any } | undefined>
7
+ save: (preference: { [key: string]: any }) => void | Promise<void>
8
+ }
@@ -5,7 +5,7 @@ declare const GridPreferenceEditor_base: (new (...args: any[]) => LitElement) &
5
5
  export declare class GridPreferenceEditor extends GridPreferenceEditor_base {
6
6
  static styles: import("lit").CSSResult[];
7
7
  target: DataGrist;
8
- route: string;
8
+ page: string;
9
9
  private grist;
10
10
  private gridConfig;
11
11
  connectedCallback(): Promise<void>;
@@ -14,7 +14,7 @@ let GridPreferenceEditor = class GridPreferenceEditor extends localize(i18next)(
14
14
  rows: { selectable: false, appendable: false },
15
15
  pagination: { infinite: true },
16
16
  list: {
17
- fields: ['route', 'element'],
17
+ fields: ['page', 'element'],
18
18
  details: ['active', 'updatedAt']
19
19
  },
20
20
  columns: [
@@ -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,
@@ -85,14 +87,14 @@ let GridPreferenceEditor = class GridPreferenceEditor extends localize(i18next)(
85
87
  const element = this.target.id;
86
88
  const response = await client.query({
87
89
  query: gql `
88
- mutation ($route: String!, $element: String!) {
89
- deleteMyScreenPreference(route: $route, element: $element) {
90
+ mutation ($page: String!, $element: String!) {
91
+ deleteMyPagePreference(page: $page, element: $element) {
90
92
  id
91
93
  }
92
94
  }
93
95
  `,
94
96
  variables: {
95
- route: this.route,
97
+ page: this.page,
96
98
  element
97
99
  }
98
100
  });
@@ -125,14 +127,14 @@ 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 ($page: String!, $element: String!, $preference: Object!) {
131
+ updateMyPagePreference(page: $page, element: $element, preference: $preference) {
130
132
  id
131
133
  }
132
134
  }
133
135
  `,
134
136
  variables: {
135
- route: this.route,
137
+ page: this.page,
136
138
  element,
137
139
  preference
138
140
  }
@@ -212,7 +214,7 @@ __decorate([
212
214
  __decorate([
213
215
  property({ type: String }),
214
216
  __metadata("design:type", String)
215
- ], GridPreferenceEditor.prototype, "route", void 0);
217
+ ], GridPreferenceEditor.prototype, "page", void 0);
216
218
  __decorate([
217
219
  query('ox-grist'),
218
220
  __metadata("design:type", DataGrist)
@@ -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 }) page!: 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: ['page', '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 ($page: String!, $element: String!) {\n deleteMyPagePreference(page: $page, element: $element) {\n id\n }\n }\n `,\n variables: {\n page: this.page,\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 ($page: String!, $element: String!, $preference: Object!) {\n updateMyPagePreference(page: $page, element: $element, preference: $preference) {\n id\n }\n }\n `,\n variables: {\n page: this.page,\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"]}
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ export * from './page-preference-provider-impl.js';
@@ -1,2 +1,3 @@
1
- "use strict";
1
+ export * from './types.js';
2
+ export * from './page-preference-provider-impl.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"","sourcesContent":[""]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,oCAAoC,CAAA","sourcesContent":["export * from './types.js'\nexport * from './page-preference-provider-impl.js'\n"]}
@@ -0,0 +1,17 @@
1
+ import { PagePreferenceProvider } from './types';
2
+ export declare class PagePreferenceProviderImpl implements PagePreferenceProvider {
3
+ page?: string;
4
+ element?: string;
5
+ preference?: {
6
+ [key: string]: any;
7
+ };
8
+ constructor(page: string, element: string, preference?: {
9
+ [key: string]: any;
10
+ });
11
+ load(): Promise<{
12
+ [key: string]: any;
13
+ } | undefined>;
14
+ save(preference: {
15
+ [key: string]: any;
16
+ }): Promise<void>;
17
+ }
@@ -0,0 +1,52 @@
1
+ import gql from 'graphql-tag';
2
+ import { client } from '@operato/graphql';
3
+ import { i18next } from '@operato/i18n';
4
+ export class PagePreferenceProviderImpl {
5
+ constructor(page, element, preference) {
6
+ this.page = page;
7
+ this.element = element;
8
+ this.preference = preference;
9
+ }
10
+ async load() {
11
+ var _a;
12
+ const response = await client.query({
13
+ query: gql `
14
+ query ($page: String!, $element: String!) {
15
+ myPagePreference(page: $page, element: $element) {
16
+ preference
17
+ }
18
+ }
19
+ `,
20
+ variables: {
21
+ page: this.page,
22
+ element: this.element
23
+ }
24
+ });
25
+ if (!response.errors) {
26
+ this.preference = ((_a = response.data.myPagePreference) === null || _a === void 0 ? void 0 : _a.preference) || {};
27
+ return this.preference;
28
+ }
29
+ }
30
+ async save(preference) {
31
+ const response = await client.mutate({
32
+ mutation: gql `
33
+ mutation ($page: String!, $element: String!, $preference: Object!) {
34
+ updateMyPagePreference(page: $page, element: $element, preference: $preference) {
35
+ preference
36
+ }
37
+ }
38
+ `,
39
+ variables: {
40
+ page: this.page,
41
+ element: this.element,
42
+ preference
43
+ }
44
+ });
45
+ if (!response.errors) {
46
+ document.dispatchEvent(new CustomEvent('notify', {
47
+ detail: { message: i18next.t('text.updated_successfully'), option: { timer: 3000 } }
48
+ }));
49
+ }
50
+ }
51
+ }
52
+ //# sourceMappingURL=page-preference-provider-impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-preference-provider-impl.js","sourceRoot":"","sources":["../client/page-preference-provider-impl.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAIvC,MAAM,OAAO,0BAA0B;IAKrC,YAAY,IAAY,EAAE,OAAe,EAAE,UAAmC;QAC5E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI;;QACR,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAClC,KAAK,EAAE,GAAG,CAAA;;;;;;OAMT;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,CAAA,MAAA,QAAQ,CAAC,IAAI,CAAC,gBAAgB,0CAAE,UAAU,KAAI,EAAE,CAAA;YAClE,OAAO,IAAI,CAAC,UAAU,CAAA;SACvB;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAAkC;QAC3C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,GAAG,CAAA;;;;;;OAMZ;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU;aACX;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpB,QAAQ,CAAC,aAAa,CACpB,IAAI,WAAW,CAAC,QAAQ,EAAE;gBACxB,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;aACrF,CAAC,CACH,CAAA;SACF;IACH,CAAC;CACF","sourcesContent":["import gql from 'graphql-tag'\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\n\nimport { PagePreferenceProvider } from './types'\n\nexport class PagePreferenceProviderImpl implements PagePreferenceProvider {\n public page?: string\n public element?: string\n public preference?: { [key: string]: any }\n\n constructor(page: string, element: string, preference?: { [key: string]: any }) {\n this.page = page\n this.element = element\n this.preference = preference\n }\n\n async load(): Promise<{ [key: string]: any } | undefined> {\n const response = await client.query({\n query: gql`\n query ($page: String!, $element: String!) {\n myPagePreference(page: $page, element: $element) {\n preference\n }\n }\n `,\n variables: {\n page: this.page,\n element: this.element\n }\n })\n\n if (!response.errors) {\n this.preference = response.data.myPagePreference?.preference || {}\n return this.preference\n }\n }\n\n async save(preference: { [key: string]: any }): Promise<void> {\n const response = await client.mutate({\n mutation: gql`\n mutation ($page: String!, $element: String!, $preference: Object!) {\n updateMyPagePreference(page: $page, element: $element, preference: $preference) {\n preference\n }\n }\n `,\n variables: {\n page: this.page,\n element: this.element,\n preference\n }\n })\n\n if (!response.errors) {\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: { message: i18next.t('text.updated_successfully'), option: { timer: 3000 } }\n })\n )\n }\n }\n}\n"]}