@things-factory/dataset 9.1.19 → 10.0.0-beta.1

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 (67) hide show
  1. package/dist-client/pages/data-archive/data-archive-list-page.d.ts +1 -7
  2. package/dist-client/pages/data-archive/data-archive-list-page.js +42 -77
  3. package/dist-client/pages/data-archive/data-archive-list-page.js.map +1 -1
  4. package/dist-client/pages/data-entry/data-entry-list-page.d.ts +1 -7
  5. package/dist-client/pages/data-entry/data-entry-list-page.js +77 -143
  6. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
  7. package/dist-client/pages/data-key-set/data-key-set-list-page.d.ts +1 -7
  8. package/dist-client/pages/data-key-set/data-key-set-list-page.js +69 -131
  9. package/dist-client/pages/data-key-set/data-key-set-list-page.js.map +1 -1
  10. package/dist-client/pages/data-ooc/data-ooc-list-page.d.ts +0 -6
  11. package/dist-client/pages/data-ooc/data-ooc-list-page.js +87 -166
  12. package/dist-client/pages/data-ooc/data-ooc-list-page.js.map +1 -1
  13. package/dist-client/pages/data-report/data-report-list-page.d.ts +1 -7
  14. package/dist-client/pages/data-report/data-report-list-page.js +71 -132
  15. package/dist-client/pages/data-report/data-report-list-page.js.map +1 -1
  16. package/dist-client/pages/data-report/data-report-samples-page.d.ts +1 -7
  17. package/dist-client/pages/data-report/data-report-samples-page.js +17 -30
  18. package/dist-client/pages/data-report/data-report-samples-page.js.map +1 -1
  19. package/dist-client/pages/data-sample/data-sample-list-page.d.ts +0 -6
  20. package/dist-client/pages/data-sample/data-sample-list-page.js +68 -130
  21. package/dist-client/pages/data-sample/data-sample-list-page.js.map +1 -1
  22. package/dist-client/pages/data-sample/data-sample-search-page.d.ts +1 -7
  23. package/dist-client/pages/data-sample/data-sample-search-page.js +63 -116
  24. package/dist-client/pages/data-sample/data-sample-search-page.js.map +1 -1
  25. package/dist-client/pages/data-sensor/data-sensor-list-page.d.ts +0 -6
  26. package/dist-client/pages/data-sensor/data-sensor-list-page.js +89 -167
  27. package/dist-client/pages/data-sensor/data-sensor-list-page.js.map +1 -1
  28. package/dist-client/pages/data-set/data-set-list-page.d.ts +0 -6
  29. package/dist-client/pages/data-set/data-set-list-page.js +2 -3
  30. package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
  31. package/dist-client/pages/data-summary/data-summary-list-page.d.ts +1 -7
  32. package/dist-client/pages/data-summary/data-summary-list-page.js +56 -105
  33. package/dist-client/pages/data-summary/data-summary-list-page.js.map +1 -1
  34. package/dist-client/pages/data-summary/data-summary-period-page.d.ts +1 -7
  35. package/dist-client/pages/data-summary/data-summary-period-page.js +50 -90
  36. package/dist-client/pages/data-summary/data-summary-period-page.js.map +1 -1
  37. package/dist-client/pages/data-summary/data-summary-search-page.d.ts +1 -7
  38. package/dist-client/pages/data-summary/data-summary-search-page.js +61 -111
  39. package/dist-client/pages/data-summary/data-summary-search-page.js.map +1 -1
  40. package/dist-client/tsconfig.tsbuildinfo +1 -1
  41. package/dist-server/activities/activity-data-review.js +5 -2
  42. package/dist-server/activities/activity-data-review.js.map +1 -1
  43. package/dist-server/activities/activity-ooc-review.js +4 -1
  44. package/dist-server/activities/activity-ooc-review.js.map +1 -1
  45. package/dist-server/controllers/create-data-ooc.js +2 -1
  46. package/dist-server/controllers/create-data-ooc.js.map +1 -1
  47. package/dist-server/controllers/create-data-sample.js +2 -2
  48. package/dist-server/controllers/create-data-sample.js.map +1 -1
  49. package/dist-server/controllers/issue-data-collection-task.js +9 -5
  50. package/dist-server/controllers/issue-data-collection-task.js.map +1 -1
  51. package/dist-server/controllers/issue-ooc-resolve.js +11 -6
  52. package/dist-server/controllers/issue-ooc-resolve.js.map +1 -1
  53. package/dist-server/controllers/issue-ooc-review.js +9 -6
  54. package/dist-server/controllers/issue-ooc-review.js.map +1 -1
  55. package/dist-server/service/index.d.ts +1 -1
  56. package/dist-server/tsconfig.tsbuildinfo +1 -1
  57. package/package.json +26 -26
  58. package/spec/integration/debug.spec.ts +42 -0
  59. package/spec/integration/ooc-lifecycle.spec.ts +484 -0
  60. package/spec/integration/ooc-workflow.spec.ts +276 -0
  61. package/spec/integration/simple.spec.ts +62 -0
  62. package/spec/unit/controllers/activity-callbacks.spec.ts +609 -0
  63. package/spec/unit/controllers/create-data-ooc.spec.ts +310 -0
  64. package/spec/unit/controllers/issue-ooc-resolve.spec.ts +431 -0
  65. package/spec/unit/controllers/issue-ooc-review.spec.ts +288 -0
  66. package/spec/unit/data-use-case.spec.ts +150 -0
  67. package/spec/unit/ooc-state-transition.spec.ts +233 -0
@@ -7,49 +7,40 @@ import './data-key-item-list.js';
7
7
  import gql from 'graphql-tag';
8
8
  import { css, html } from 'lit';
9
9
  import { customElement, query, state } from 'lit/decorators.js';
10
- import { connect } from 'pwa-helpers/connect-mixin';
11
10
  import { getEditor, getRenderer, DataGrist } from '@operato/data-grist';
12
11
  import { client } from '@operato/graphql';
13
12
  import { i18next, localize } from '@operato/i18n';
14
13
  import { notify, openPopup } from '@operato/layout';
15
- import { PageView, store } from '@operato/shell';
14
+ import { PageView } from '@operato/shell';
16
15
  import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles';
17
16
  import { isMobileDevice } from '@operato/utils';
18
17
  const REPORT_TYPES = [
19
- {
20
- display: '',
18
+ { display: '',
21
19
  value: ''
22
20
  },
23
- {
24
- display: 'Generated',
21
+ { display: 'Generated',
25
22
  value: 'generated'
26
23
  },
27
- {
28
- display: 'Embed',
24
+ { display: 'Embed',
29
25
  value: 'embed'
30
26
  },
31
- {
32
- display: 'CustomElement',
27
+ { display: 'CustomElement',
33
28
  value: 'custom-element'
34
29
  },
35
- {
36
- display: 'Page',
30
+ { display: 'Page',
37
31
  value: 'page'
38
32
  },
39
- {
40
- display: 'External URL',
33
+ { display: 'External URL',
41
34
  value: 'external'
42
35
  },
43
- {
44
- display: 'Jasper',
36
+ { display: 'Jasper',
45
37
  value: 'jasper'
46
38
  },
47
- {
48
- display: 'Shiny',
39
+ { display: 'Shiny',
49
40
  value: 'shiny'
50
41
  }
51
42
  ];
52
- let DataKeySetListPage = class DataKeySetListPage extends connect(store)(localize(i18next)(PageView)) {
43
+ let DataKeySetListPage = class DataKeySetListPage extends localize(i18next)(PageView) {
53
44
  constructor() {
54
45
  super(...arguments);
55
46
  this.mode = isMobileDevice() ? 'CARD' : 'GRID';
@@ -58,64 +49,51 @@ let DataKeySetListPage = class DataKeySetListPage extends connect(store)(localiz
58
49
  ScrollbarStyles,
59
50
  CommonHeaderStyles,
60
51
  css `
61
- :host {
62
- display: flex;
52
+ :host { display: flex;
63
53
 
64
54
  width: 100%;
65
55
 
66
56
  --grid-record-emphasized-background-color: #8b0000;
67
57
  --grid-record-emphasized-color: #ff6b6b;
68
- }
58
+ }
69
59
 
70
- ox-grist {
71
- overflow-y: auto;
60
+ ox-grist { overflow-y: auto;
72
61
  flex: 1;
73
- }
62
+ }
74
63
 
75
- .header {
76
- grid-template-areas: 'filters actions';
77
- }
64
+ .header { grid-template-areas: 'filters actions';
65
+ }
78
66
  `
79
67
  ]; }
80
68
  get context() {
81
- return {
82
- title: i18next.t('title.data-key-set list'),
83
- search: {
84
- handler: (search) => {
69
+ return { title: i18next.t('title.data-key-set list'),
70
+ search: { handler: (search) => {
85
71
  this.grist.searchText = search;
86
72
  },
87
- value: this.grist?.searchText || ''
88
- },
89
- filter: {
90
- handler: () => {
73
+ value: this.grist?.searchText || '' },
74
+ filter: { handler: () => {
91
75
  this.grist.toggleHeadroom();
92
76
  }
93
77
  },
94
78
  help: 'dataset/data-key-set',
95
79
  actions: [
96
- {
97
- title: i18next.t('button.save'),
80
+ { title: i18next.t('button.save'),
98
81
  action: this._updateDataKeySet.bind(this),
99
82
  icon: 'save'
100
83
  },
101
- {
102
- title: i18next.t('button.delete'),
84
+ { title: i18next.t('button.delete'),
103
85
  action: this._deleteDataKeySet.bind(this),
104
86
  icon: 'delete',
105
- emphasis: {
106
- danger: true
87
+ emphasis: { danger: true
107
88
  }
108
89
  }
109
90
  ],
110
- exportable: {
111
- name: i18next.t('title.data-key-set list'),
91
+ exportable: { name: i18next.t('title.data-key-set list'),
112
92
  data: this.exportHandler.bind(this)
113
93
  },
114
- importable: {
115
- handler: this.importHandler.bind(this)
94
+ importable: { handler: this.importHandler.bind(this)
116
95
  },
117
- toolbar: false
118
- };
96
+ toolbar: false };
119
97
  }
120
98
  render() {
121
99
  const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID');
@@ -132,28 +110,23 @@ let DataKeySetListPage = class DataKeySetListPage extends connect(store)(localiz
132
110
  `;
133
111
  }
134
112
  async pageInitialized(lifecycle) {
135
- this.gristConfig = {
136
- list: {
137
- fields: ['name', 'description'],
113
+ this.gristConfig = { list: { fields: ['name', 'description'],
138
114
  details: ['active', 'updatedAt']
139
115
  },
140
116
  columns: [
141
117
  { type: 'gutter', gutterName: 'sequence', fixed: true },
142
118
  { type: 'gutter', gutterName: 'row-selector', fixed: true, multiple: true },
143
- {
144
- type: 'gutter',
119
+ { type: 'gutter',
145
120
  gutterName: 'button',
146
121
  fixed: true,
147
122
  title: record => !record ? i18next.t('button.edit-model') : !record.id ? '' : i18next.t('button.edit-model'),
148
123
  icon: record => (!record ? 'reorder' : !record.id ? '' : 'reorder'),
149
124
  iconOnly: false,
150
125
  width: 96,
151
- handlers: {
152
- click: (columns, data, column, record, rowIndex) => {
126
+ handlers: { click: (columns, data, column, record, rowIndex) => {
153
127
  if (!record.id)
154
128
  return;
155
- const popup = openPopup(html ` <data-key-item-list .dataKeySet=${record}></data-key-item-list> `, {
156
- backdrop: true,
129
+ const popup = openPopup(html ` <data-key-item-list .dataKeySet=${record}></data-key-item-list> `, { backdrop: true,
157
130
  help: 'dataset/ui/data-key-item-list',
158
131
  size: 'large',
159
132
  title: i18next.t('title.data-key-item list')
@@ -164,57 +137,47 @@ let DataKeySetListPage = class DataKeySetListPage extends connect(store)(localiz
164
137
  }
165
138
  }
166
139
  },
167
- {
168
- type: 'string',
140
+ { type: 'string',
169
141
  name: 'name',
170
142
  fixed: true,
171
143
  header: i18next.t('field.name'),
172
- record: {
173
- editable: true
144
+ record: { editable: true
174
145
  },
175
146
  filter: 'search',
176
147
  sortable: true,
177
148
  width: 150
178
149
  },
179
- {
180
- type: 'string',
150
+ { type: 'string',
181
151
  name: 'description',
182
152
  header: i18next.t('field.description'),
183
- record: {
184
- editable: true
153
+ record: { editable: true
185
154
  },
186
155
  filter: 'search',
187
156
  width: 200
188
157
  },
189
- {
190
- type: 'checkbox',
158
+ { type: 'checkbox',
191
159
  name: 'active',
192
160
  label: true,
193
161
  header: i18next.t('field.active'),
194
- record: {
195
- editable: true
162
+ record: { editable: true
196
163
  },
197
164
  filter: true,
198
165
  sortable: true,
199
166
  width: 60
200
167
  },
201
- {
202
- type: 'select',
168
+ { type: 'select',
203
169
  name: 'reportType',
204
170
  label: true,
205
171
  header: i18next.t('field.report-type'),
206
- record: {
207
- editable: true,
172
+ record: { editable: true,
208
173
  options: REPORT_TYPES
209
174
  },
210
175
  width: 80
211
176
  },
212
- {
213
- type: 'string',
177
+ { type: 'string',
214
178
  name: 'reportView',
215
179
  header: i18next.t('field.report-view'),
216
- record: {
217
- editable: true,
180
+ record: { editable: true,
218
181
  editor: function (value, column, record, rowIndex, field) {
219
182
  var type = record.reportType !== 'custom' ? 'string' : 'script';
220
183
  return getEditor(type)(value, column, record, rowIndex, field);
@@ -226,80 +189,64 @@ let DataKeySetListPage = class DataKeySetListPage extends connect(store)(localiz
226
189
  },
227
190
  width: 140
228
191
  },
229
- {
230
- type: 'resource-object',
192
+ { type: 'resource-object',
231
193
  name: 'updater',
232
194
  header: i18next.t('field.updater'),
233
- record: {
234
- editable: false
195
+ record: { editable: false
235
196
  },
236
197
  sortable: true,
237
198
  width: 120
238
199
  },
239
- {
240
- type: 'datetime',
200
+ { type: 'datetime',
241
201
  name: 'updatedAt',
242
202
  header: i18next.t('field.updated_at'),
243
- record: {
244
- editable: false
203
+ record: { editable: false
245
204
  },
246
205
  sortable: true,
247
206
  width: 180
248
207
  }
249
208
  ],
250
- rows: {
251
- selectable: {
252
- multiple: true
209
+ rows: { selectable: { multiple: true
253
210
  }
254
211
  },
255
212
  sorters: [
256
- {
257
- name: 'name'
213
+ { name: 'name'
258
214
  }
259
215
  ]
260
216
  };
261
217
  }
262
218
  async pageUpdated(changes, lifecycle) {
263
- if (this.active) {
264
- // do something here when this page just became as active
219
+ if (this.active) { // do something here when this page just became as active
265
220
  }
266
221
  }
267
222
  async fetchHandler({ page, limit, sortings = [], filters = [] }) {
268
- const response = await client.query({
269
- query: gql `
270
- query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
271
- responses: dataKeySets(filters: $filters, pagination: $pagination, sortings: $sortings) {
272
- items {
273
- id
223
+ const response = await client.query({ query: gql `
224
+ query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) { responses: dataKeySets(filters: $filters, pagination: $pagination, sortings: $sortings) { items { id
274
225
  name
275
226
  description
276
227
  active
277
228
  reportType
278
229
  reportView
279
- dataKeyItems {
280
- name
230
+ dataKeyItems { name
281
231
  description
282
232
  dataKey
283
233
  tKey
284
- }
285
- updater {
286
- id
234
+ }
235
+ updater { id
287
236
  name
288
- }
237
+ }
289
238
  updatedAt
290
- }
239
+ }
291
240
  total
292
- }
293
- }
241
+ }
242
+ }
294
243
  `,
295
- variables: {
296
- filters,
244
+ variables: { filters,
297
245
  pagination: { page, limit },
298
246
  sortings
299
247
  }
300
248
  });
301
- return {
302
- total: response.data.responses.total || 0,
249
+ return { total: response.data.responses.total || 0,
303
250
  records: response.data.responses.items || []
304
251
  };
305
252
  }
@@ -307,20 +254,16 @@ let DataKeySetListPage = class DataKeySetListPage extends connect(store)(localiz
307
254
  if (confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) {
308
255
  const ids = this.grist.selected.map(record => record.id);
309
256
  if (ids && ids.length > 0) {
310
- const response = await client.mutate({
311
- mutation: gql `
312
- mutation ($ids: [String!]!) {
313
- deleteDataKeySets(ids: $ids)
314
- }
257
+ const response = await client.mutate({ mutation: gql `
258
+ mutation ($ids: [String!]!) { deleteDataKeySets(ids: $ids)
259
+ }
315
260
  `,
316
- variables: {
317
- ids
261
+ variables: { ids
318
262
  }
319
263
  });
320
264
  if (!response.errors) {
321
265
  this.grist.fetch();
322
- notify({
323
- message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })
266
+ notify({ message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })
324
267
  });
325
268
  }
326
269
  }
@@ -338,16 +281,12 @@ let DataKeySetListPage = class DataKeySetListPage extends connect(store)(localiz
338
281
  patchField.cuFlag = patch.__dirty__;
339
282
  return patchField;
340
283
  });
341
- const response = await client.mutate({
342
- mutation: gql `
343
- mutation ($patches: [DataKeySetPatch!]!) {
344
- updateMultipleDataKeySet(patches: $patches) {
345
- name
346
- }
347
- }
284
+ const response = await client.mutate({ mutation: gql `
285
+ mutation ($patches: [DataKeySetPatch!]!) { updateMultipleDataKeySet(patches: $patches) { name
286
+ }
287
+ }
348
288
  `,
349
- variables: {
350
- patches
289
+ variables: { patches
351
290
  }
352
291
  });
353
292
  if (!response.errors) {
@@ -375,8 +314,7 @@ let DataKeySetListPage = class DataKeySetListPage extends connect(store)(localiz
375
314
  this.grist.fetch();
376
315
  }}
377
316
  ></data-key-set-importer>
378
- `, {
379
- backdrop: true,
317
+ `, { backdrop: true,
380
318
  size: 'large',
381
319
  title: i18next.t('title.import data-key-set')
382
320
  });
@@ -1 +1 @@
1
- {"version":3,"file":"data-key-set-list-page.js","sourceRoot":"","sources":["../../../client/pages/data-key-set/data-key-set-list-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/data-grist'\nimport '@operato/context/ox-context-page-toolbar.js'\nimport './data-key-set-importer.js'\nimport './data-key-item-list.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin'\n\nimport { getEditor, getRenderer, DataGrist, FetchOption } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { notify, openPopup } from '@operato/layout'\nimport { navigate, PageView, store } from '@operato/shell'\nimport { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'\nimport { isMobileDevice, encodeUrlParams } from '@operato/utils'\n\nconst REPORT_TYPES = [\n {\n display: '',\n value: ''\n },\n {\n display: 'Generated',\n value: 'generated'\n },\n {\n display: 'Embed',\n value: 'embed'\n },\n {\n display: 'CustomElement',\n value: 'custom-element'\n },\n {\n display: 'Page',\n value: 'page'\n },\n {\n display: 'External URL',\n value: 'external'\n },\n {\n display: 'Jasper',\n value: 'jasper'\n },\n {\n display: 'Shiny',\n value: 'shiny'\n }\n]\n\n@customElement('data-key-set-list-page')\nexport class DataKeySetListPage extends connect(store)(localize(i18next)(PageView)) {\n static styles = [\n ScrollbarStyles,\n CommonHeaderStyles,\n css`\n :host {\n display: flex;\n\n width: 100%;\n\n --grid-record-emphasized-background-color: #8b0000;\n --grid-record-emphasized-color: #ff6b6b;\n }\n\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n\n .header {\n grid-template-areas: 'filters actions';\n }\n `\n ]\n\n @state() gristConfig: any\n @state() mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'\n\n @query('ox-grist') private grist!: DataGrist\n\n get context() {\n return {\n title: i18next.t('title.data-key-set list'),\n search: {\n handler: (search: string) => {\n this.grist.searchText = search\n },\n value: this.grist?.searchText || ''\n },\n filter: {\n handler: () => {\n this.grist.toggleHeadroom()\n }\n },\n help: 'dataset/data-key-set',\n actions: [\n {\n title: i18next.t('button.save'),\n action: this._updateDataKeySet.bind(this),\n icon: 'save'\n },\n {\n title: i18next.t('button.delete'),\n action: this._deleteDataKeySet.bind(this),\n icon: 'delete',\n emphasis: {\n danger: true\n }\n }\n ],\n exportable: {\n name: i18next.t('title.data-key-set list'),\n data: this.exportHandler.bind(this)\n },\n importable: {\n handler: this.importHandler.bind(this)\n },\n toolbar: false\n }\n }\n\n render() {\n const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')\n\n return html`\n <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>\n <div slot=\"headroom\" class=\"header\">\n <div class=\"filters\">\n <ox-filters-form autofocus without-search></ox-filters-form>\n </div>\n\n <ox-context-page-toolbar class=\"actions\" .context=${this.context}> </ox-context-page-toolbar>\n </div>\n </ox-grist>\n `\n }\n\n async pageInitialized(lifecycle) {\n this.gristConfig = {\n list: {\n fields: ['name', 'description'],\n details: ['active', 'updatedAt']\n },\n columns: [\n { type: 'gutter', gutterName: 'sequence', fixed: true },\n { type: 'gutter', gutterName: 'row-selector', fixed: true, multiple: true },\n {\n type: 'gutter',\n gutterName: 'button',\n fixed: true,\n title: record =>\n !record ? i18next.t('button.edit-model') : !record.id ? '' : i18next.t('button.edit-model'),\n icon: record => (!record ? 'reorder' : !record.id ? '' : 'reorder'),\n iconOnly: false,\n width: 96,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n if (!record.id) return\n const popup = openPopup(html` <data-key-item-list .dataKeySet=${record}></data-key-item-list> `, {\n backdrop: true,\n help: 'dataset/ui/data-key-item-list',\n size: 'large',\n title: i18next.t('title.data-key-item list')\n })\n popup.onclosed = () => {\n this.grist.fetch()\n }\n }\n }\n },\n {\n type: 'string',\n name: 'name',\n fixed: true,\n header: i18next.t('field.name'),\n record: {\n editable: true\n },\n filter: 'search',\n sortable: true,\n width: 150\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: {\n editable: true\n },\n filter: 'search',\n width: 200\n },\n {\n type: 'checkbox',\n name: 'active',\n label: true,\n header: i18next.t('field.active'),\n record: {\n editable: true\n },\n filter: true,\n sortable: true,\n width: 60\n },\n {\n type: 'select',\n name: 'reportType',\n label: true,\n header: i18next.t('field.report-type'),\n record: {\n editable: true,\n options: REPORT_TYPES\n },\n width: 80\n },\n {\n type: 'string',\n name: 'reportView',\n header: i18next.t('field.report-view'),\n record: {\n editable: true,\n editor: function (value, column, record, rowIndex, field) {\n var type = record.reportType !== 'custom' ? 'string' : 'script'\n return getEditor(type)(value, column, record, rowIndex, field)\n },\n renderer: function (value, column, record, rowIndex, field) {\n var type = record.reportType !== 'custom' ? 'string' : 'string'\n return getRenderer(type)(value, column, record, rowIndex, field)\n }\n },\n width: 140\n },\n {\n type: 'resource-object',\n name: 'updater',\n header: i18next.t('field.updater'),\n record: {\n editable: false\n },\n sortable: true,\n width: 120\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: i18next.t('field.updated_at'),\n record: {\n editable: false\n },\n sortable: true,\n width: 180\n }\n ],\n rows: {\n selectable: {\n multiple: true\n }\n },\n sorters: [\n {\n name: 'name'\n }\n ]\n }\n }\n\n async pageUpdated(changes, lifecycle) {\n if (this.active) {\n // do something here when this page just became as active\n }\n }\n\n async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) {\n const response = await client.query({\n query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {\n responses: dataKeySets(filters: $filters, pagination: $pagination, sortings: $sortings) {\n items {\n id\n name\n description\n active\n reportType\n reportView\n dataKeyItems {\n name\n description\n dataKey\n tKey\n }\n updater {\n id\n name\n }\n updatedAt\n }\n total\n }\n }\n `,\n variables: {\n filters,\n pagination: { page, limit },\n sortings\n }\n })\n\n return {\n total: response.data.responses.total || 0,\n records: response.data.responses.items || []\n }\n }\n\n async _deleteDataKeySet() {\n if (confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) {\n const ids = this.grist.selected.map(record => record.id)\n if (ids && ids.length > 0) {\n const response = await client.mutate({\n mutation: gql`\n mutation ($ids: [String!]!) {\n deleteDataKeySets(ids: $ids)\n }\n `,\n variables: {\n ids\n }\n })\n\n if (!response.errors) {\n this.grist.fetch()\n notify({\n message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })\n })\n }\n }\n }\n }\n\n async _updateDataKeySet() {\n let patches = this.grist.dirtyRecords\n if (patches && patches.length) {\n patches = patches.map(patch => {\n let patchField: any = patch.id ? { id: patch.id } : {}\n const dirtyFields = patch.__dirtyfields__\n for (let key in dirtyFields) {\n patchField[key] = dirtyFields[key].after\n }\n patchField.cuFlag = patch.__dirty__\n\n return patchField\n })\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($patches: [DataKeySetPatch!]!) {\n updateMultipleDataKeySet(patches: $patches) {\n name\n }\n }\n `,\n variables: {\n patches\n }\n })\n\n if (!response.errors) {\n this.grist.fetch()\n }\n }\n }\n\n async exportHandler() {\n const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records\n const targetFieldSet = new Set(['id', 'name', 'description', 'active', 'reportType', 'reportView'])\n\n return exportTargets.map(dataKeySet => {\n let tempObj = {}\n for (const field of targetFieldSet) {\n tempObj[field] = dataKeySet[field]\n }\n\n return tempObj\n })\n }\n\n async importHandler(records) {\n const popup = openPopup(\n html`\n <data-key-set-importer\n .dataKeySets=${records}\n @imported=${() => {\n history.back()\n this.grist.fetch()\n }}\n ></data-key-set-importer>\n `,\n {\n backdrop: true,\n size: 'large',\n title: i18next.t('title.import data-key-set')\n }\n )\n\n popup.onclosed = () => {\n this.grist.fetch()\n }\n }\n}\n"]}
1
+ {"version":3,"file":"data-key-set-list-page.js","sourceRoot":"","sources":["../../../client/pages/data-key-set/data-key-set-list-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/data-grist'\nimport '@operato/context/ox-context-page-toolbar.js'\nimport './data-key-set-importer.js'\nimport './data-key-item-list.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { getEditor, getRenderer, DataGrist, FetchOption } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { notify, openPopup } from '@operato/layout'\nimport { navigate, PageView } from '@operato/shell'\nimport { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'\nimport { isMobileDevice, encodeUrlParams } from '@operato/utils'\n\nconst REPORT_TYPES = [\n { display: '',\n value: ''\n },\n { display: 'Generated',\n value: 'generated'\n },\n { display: 'Embed',\n value: 'embed'\n },\n { display: 'CustomElement',\n value: 'custom-element'\n },\n { display: 'Page',\n value: 'page'\n },\n { display: 'External URL',\n value: 'external'\n },\n { display: 'Jasper',\n value: 'jasper'\n },\n { display: 'Shiny',\n value: 'shiny'\n }\n]\n\n@customElement('data-key-set-list-page')\nexport class DataKeySetListPage extends localize(i18next)(PageView) { static styles = [\n ScrollbarStyles,\n CommonHeaderStyles,\n css`\n :host { display: flex;\n\n width: 100%;\n\n --grid-record-emphasized-background-color: #8b0000;\n --grid-record-emphasized-color: #ff6b6b;\n }\n\n ox-grist { overflow-y: auto;\n flex: 1;\n }\n\n .header { grid-template-areas: 'filters actions';\n }\n `\n ]\n\n @state() gristConfig: any\n @state() mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'\n\n @query('ox-grist') private grist!: DataGrist\n\n get context() { return { title: i18next.t('title.data-key-set list'),\n search: { handler: (search: string) => { this.grist.searchText = search\n },\n value: this.grist?.searchText || ''\n },\n filter: { handler: () => { this.grist.toggleHeadroom()\n }\n },\n help: 'dataset/data-key-set',\n actions: [\n { title: i18next.t('button.save'),\n action: this._updateDataKeySet.bind(this),\n icon: 'save'\n },\n { title: i18next.t('button.delete'),\n action: this._deleteDataKeySet.bind(this),\n icon: 'delete',\n emphasis: { danger: true\n }\n }\n ],\n exportable: { name: i18next.t('title.data-key-set list'),\n data: this.exportHandler.bind(this)\n },\n importable: { handler: this.importHandler.bind(this)\n },\n toolbar: false\n }\n }\n\n render() { const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')\n\n return html`\n <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>\n <div slot=\"headroom\" class=\"header\">\n <div class=\"filters\">\n <ox-filters-form autofocus without-search></ox-filters-form>\n </div>\n\n <ox-context-page-toolbar class=\"actions\" .context=${this.context}> </ox-context-page-toolbar>\n </div>\n </ox-grist>\n `\n }\n\n async pageInitialized(lifecycle) { this.gristConfig = { list: { fields: ['name', 'description'],\n details: ['active', 'updatedAt']\n },\n columns: [\n { type: 'gutter', gutterName: 'sequence', fixed: true },\n { type: 'gutter', gutterName: 'row-selector', fixed: true, multiple: true },\n { type: 'gutter',\n gutterName: 'button',\n fixed: true,\n title: record =>\n !record ? i18next.t('button.edit-model') : !record.id ? '' : i18next.t('button.edit-model'),\n icon: record => (!record ? 'reorder' : !record.id ? '' : 'reorder'),\n iconOnly: false,\n width: 96,\n handlers: { click: (columns, data, column, record, rowIndex) => { if (!record.id) return\n const popup = openPopup(html` <data-key-item-list .dataKeySet=${record}></data-key-item-list> `, { backdrop: true,\n help: 'dataset/ui/data-key-item-list',\n size: 'large',\n title: i18next.t('title.data-key-item list')\n })\n popup.onclosed = () => { this.grist.fetch()\n }\n }\n }\n },\n { type: 'string',\n name: 'name',\n fixed: true,\n header: i18next.t('field.name'),\n record: { editable: true\n },\n filter: 'search',\n sortable: true,\n width: 150\n },\n { type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: { editable: true\n },\n filter: 'search',\n width: 200\n },\n { type: 'checkbox',\n name: 'active',\n label: true,\n header: i18next.t('field.active'),\n record: { editable: true\n },\n filter: true,\n sortable: true,\n width: 60\n },\n { type: 'select',\n name: 'reportType',\n label: true,\n header: i18next.t('field.report-type'),\n record: { editable: true,\n options: REPORT_TYPES\n },\n width: 80\n },\n { type: 'string',\n name: 'reportView',\n header: i18next.t('field.report-view'),\n record: { editable: true,\n editor: function (value, column, record, rowIndex, field) { var type = record.reportType !== 'custom' ? 'string' : 'script'\n return getEditor(type)(value, column, record, rowIndex, field)\n },\n renderer: function (value, column, record, rowIndex, field) { var type = record.reportType !== 'custom' ? 'string' : 'string'\n return getRenderer(type)(value, column, record, rowIndex, field)\n }\n },\n width: 140\n },\n { type: 'resource-object',\n name: 'updater',\n header: i18next.t('field.updater'),\n record: { editable: false\n },\n sortable: true,\n width: 120\n },\n { type: 'datetime',\n name: 'updatedAt',\n header: i18next.t('field.updated_at'),\n record: { editable: false\n },\n sortable: true,\n width: 180\n }\n ],\n rows: { selectable: { multiple: true\n }\n },\n sorters: [\n { name: 'name'\n }\n ]\n }\n }\n\n async pageUpdated(changes, lifecycle) { if (this.active) { // do something here when this page just became as active\n }\n }\n\n async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) { const response = await client.query({ query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) { responses: dataKeySets(filters: $filters, pagination: $pagination, sortings: $sortings) { items { id\n name\n description\n active\n reportType\n reportView\n dataKeyItems { name\n description\n dataKey\n tKey\n }\n updater { id\n name\n }\n updatedAt\n }\n total\n }\n }\n `,\n variables: { filters,\n pagination: { page, limit },\n sortings\n }\n })\n\n return { total: response.data.responses.total || 0,\n records: response.data.responses.items || []\n }\n }\n\n async _deleteDataKeySet() { if (confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) { const ids = this.grist.selected.map(record => record.id)\n if (ids && ids.length > 0) { const response = await client.mutate({ mutation: gql`\n mutation ($ids: [String!]!) { deleteDataKeySets(ids: $ids)\n }\n `,\n variables: { ids\n }\n })\n\n if (!response.errors) { this.grist.fetch()\n notify({ message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })\n })\n }\n }\n }\n }\n\n async _updateDataKeySet() { let patches = this.grist.dirtyRecords\n if (patches && patches.length) { patches = patches.map(patch => { let patchField: any = patch.id ? { id: patch.id } : {}\n const dirtyFields = patch.__dirtyfields__\n for (let key in dirtyFields) { patchField[key] = dirtyFields[key].after\n }\n patchField.cuFlag = patch.__dirty__\n\n return patchField\n })\n\n const response = await client.mutate({ mutation: gql`\n mutation ($patches: [DataKeySetPatch!]!) { updateMultipleDataKeySet(patches: $patches) { name\n }\n }\n `,\n variables: { patches\n }\n })\n\n if (!response.errors) { this.grist.fetch()\n }\n }\n }\n\n async exportHandler() { const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records\n const targetFieldSet = new Set(['id', 'name', 'description', 'active', 'reportType', 'reportView'])\n\n return exportTargets.map(dataKeySet => { let tempObj = {}\n for (const field of targetFieldSet) { tempObj[field] = dataKeySet[field]\n }\n\n return tempObj\n })\n }\n\n async importHandler(records) { const popup = openPopup(\n html`\n <data-key-set-importer\n .dataKeySets=${records}\n @imported=${() => { history.back()\n this.grist.fetch()\n }}\n ></data-key-set-importer>\n `,\n { backdrop: true,\n size: 'large',\n title: i18next.t('title.import data-key-set')\n }\n )\n\n popup.onclosed = () => { this.grist.fetch()\n }\n }\n}\n"]}
@@ -6,12 +6,6 @@ import './data-ooc-view.js';
6
6
  import { FetchOption } from '@operato/data-grist';
7
7
  import { PageView } from '@operato/shell';
8
8
  declare const DataOocListPage_base: (new (...args: any[]) => {
9
- _storeUnsubscribe: import("redux").Unsubscribe;
10
- connectedCallback(): void;
11
- disconnectedCallback(): void;
12
- stateChanged(_state: unknown): void;
13
- readonly isConnected: boolean;
14
- }) & (new (...args: any[]) => {
15
9
  __preferenceProviders: {
16
10
  [element: string]: import("@operato/p13n").PagePreferenceProvider;
17
11
  };