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

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
@@ -4,7 +4,7 @@ import '@operato/data-grist';
4
4
  import '@operato/context/ox-context-page-toolbar.js';
5
5
  import './data-summary-view.js';
6
6
  import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles';
7
- import { PageView, store } from '@operato/shell';
7
+ import { PageView } from '@operato/shell';
8
8
  import { css, html } from 'lit';
9
9
  import { customElement, query, state } from 'lit/decorators.js';
10
10
  import moment from '@operato/moment-timezone-es';
@@ -13,9 +13,8 @@ import { client } from '@operato/graphql';
13
13
  import { i18next, localize } from '@operato/i18n';
14
14
  import { openPopup } from '@operato/layout';
15
15
  import { isMobileDevice } from '@operato/utils';
16
- import { connect } from 'pwa-helpers/connect-mixin';
17
16
  import gql from 'graphql-tag';
18
- let DataSummaryListPage = class DataSummaryListPage extends connect(store)(localize(i18next)(PageView)) {
17
+ let DataSummaryListPage = class DataSummaryListPage extends localize(i18next)(PageView) {
19
18
  constructor() {
20
19
  super(...arguments);
21
20
  this.mode = isMobileDevice() ? 'CARD' : 'GRID';
@@ -24,44 +23,35 @@ let DataSummaryListPage = class DataSummaryListPage extends connect(store)(local
24
23
  ScrollbarStyles,
25
24
  CommonHeaderStyles,
26
25
  css `
27
- :host {
28
- display: flex;
26
+ :host { display: flex;
29
27
  flex-direction: column;
30
28
 
31
29
  overflow: hidden;
32
- }
30
+ }
33
31
 
34
- ox-grist {
35
- overflow-y: auto;
32
+ ox-grist { overflow-y: auto;
36
33
  flex: 1;
37
- }
34
+ }
38
35
 
39
- .header {
40
- grid-template-areas: 'filters actions';
41
- }
36
+ .header { grid-template-areas: 'filters actions';
37
+ }
42
38
  `
43
39
  ]; }
44
40
  get context() {
45
- return {
46
- title: i18next.t('title.data-summary list'),
47
- search: {
48
- handler: (search) => {
41
+ return { title: i18next.t('title.data-summary list'),
42
+ search: { handler: (search) => {
49
43
  this.grist.searchText = search;
50
44
  },
51
- value: this.grist?.searchText || ''
52
- },
53
- filter: {
54
- handler: () => {
45
+ value: this.grist?.searchText || '' },
46
+ filter: { handler: () => {
55
47
  this.grist.toggleHeadroom();
56
48
  }
57
49
  },
58
50
  help: 'dataset/data-summary',
59
- exportable: {
60
- name: i18next.t('title.data-summary list'),
51
+ exportable: { name: i18next.t('title.data-summary list'),
61
52
  data: this._exportableData.bind(this)
62
53
  },
63
- toolbar: false
64
- };
54
+ toolbar: false };
65
55
  }
66
56
  render() {
67
57
  const mode = this.mode || (isMobileDevice() ? 'LIST' : 'GRID');
@@ -85,13 +75,11 @@ let DataSummaryListPage = class DataSummaryListPage extends connect(store)(local
85
75
  async pageInitialized(lifecycle) {
86
76
  const yesterday = moment().subtract(1, 'day').format('YYYY-MM-DD');
87
77
  const today = moment().format('YYYY-MM-DD');
88
- this.gristConfig = {
89
- list: { fields: ['dataSet', 'data', 'updater', 'updatedAt'] },
78
+ this.gristConfig = { list: { fields: ['dataSet', 'data', 'updater', 'updatedAt'] },
90
79
  columns: [
91
80
  { type: 'gutter', gutterName: 'sequence', fixed: true },
92
81
  { type: 'gutter', gutterName: 'row-selector', multiple: true, fixed: true },
93
- {
94
- type: 'gutter',
82
+ { type: 'gutter',
95
83
  gutterName: 'button',
96
84
  fixed: true,
97
85
  icon: 'assignment',
@@ -99,47 +87,40 @@ let DataSummaryListPage = class DataSummaryListPage extends connect(store)(local
99
87
  title: i18next.t('button.detail'),
100
88
  width: 72
101
89
  },
102
- {
103
- type: 'string',
90
+ { type: 'string',
104
91
  name: 'name',
105
92
  fixed: true,
106
93
  label: true,
107
94
  header: i18next.t('field.name'),
108
- record: {
109
- editable: false
95
+ record: { editable: false
110
96
  },
111
97
  filter: 'search',
112
98
  sortable: true,
113
99
  width: 120,
114
100
  imex: true
115
101
  },
116
- {
117
- type: 'string',
102
+ { type: 'string',
118
103
  name: 'description',
119
104
  label: true,
120
105
  header: i18next.t('field.description'),
121
- record: {
122
- editable: false
106
+ record: { editable: false
123
107
  },
124
108
  filter: 'search',
125
109
  width: 150,
126
110
  imex: true
127
111
  },
128
- {
129
- type: 'string',
112
+ { type: 'string',
130
113
  name: 'date',
131
114
  header: i18next.t('field.date'),
132
115
  sortable: true,
133
- filter: {
134
- type: 'date',
116
+ filter: { type: 'date',
135
117
  operator: 'between',
136
118
  value: [yesterday, today]
137
119
  },
138
120
  width: 80,
139
121
  imex: true
140
122
  },
141
- {
142
- type: 'string',
123
+ { type: 'string',
143
124
  name: 'period',
144
125
  header: i18next.t('field.time-period'),
145
126
  sortable: true,
@@ -147,73 +128,59 @@ let DataSummaryListPage = class DataSummaryListPage extends connect(store)(local
147
128
  imex: true
148
129
  },
149
130
  ...Array.from({ length: 5 }, (_, idx) => {
150
- return {
151
- type: 'string',
131
+ return { type: 'string',
152
132
  name: `key0${idx + 1}`,
153
- header: {
154
- renderer: i18next.t(`field.key-0${idx + 1}`),
133
+ header: { renderer: i18next.t(`field.key-0${idx + 1}`),
155
134
  group: i18next.t('field.key')
156
135
  },
157
- record: {
158
- editable: false
136
+ record: { editable: false
159
137
  },
160
138
  width: 120,
161
139
  imex: true
162
140
  };
163
141
  }),
164
142
  ...Array.from({ length: 5 }, (_, idx) => {
165
- return {
166
- type: 'number',
143
+ return { type: 'number',
167
144
  name: `data0${idx + 1}`,
168
- header: {
169
- renderer: i18next.t(`field.data-0${idx + 1}`),
145
+ header: { renderer: i18next.t(`field.data-0${idx + 1}`),
170
146
  group: i18next.t('field.data')
171
147
  },
172
- record: {
173
- editable: false,
148
+ record: { editable: false,
174
149
  align: 'right'
175
150
  },
176
151
  width: 120,
177
152
  imex: true
178
153
  };
179
154
  }),
180
- {
181
- type: 'number',
155
+ { type: 'number',
182
156
  name: 'count',
183
157
  header: i18next.t('field.count'),
184
- record: {
185
- editable: false
158
+ record: { editable: false
186
159
  },
187
160
  width: 30
188
161
  },
189
- {
190
- type: 'number',
162
+ { type: 'number',
191
163
  name: 'countOoc',
192
164
  header: i18next.t('field.count-ooc'),
193
- record: {
194
- editable: false
165
+ record: { editable: false
195
166
  },
196
167
  width: 30
197
168
  },
198
- {
199
- type: 'number',
169
+ { type: 'number',
200
170
  name: 'countOos',
201
171
  header: i18next.t('field.count-oos'),
202
- record: {
203
- editable: false
172
+ record: { editable: false
204
173
  },
205
174
  width: 30
206
175
  },
207
- {
208
- type: 'resource-object',
176
+ { type: 'resource-object',
209
177
  name: 'updater',
210
178
  header: i18next.t('field.updater'),
211
179
  sortable: true,
212
180
  width: 120,
213
181
  imex: true
214
182
  },
215
- {
216
- type: 'datetime',
183
+ { type: 'datetime',
217
184
  name: 'updatedAt',
218
185
  header: i18next.t('field.updated_at'),
219
186
  sortable: true,
@@ -221,10 +188,8 @@ let DataSummaryListPage = class DataSummaryListPage extends connect(store)(local
221
188
  imex: true
222
189
  }
223
190
  ],
224
- rows: {
225
- appendable: false,
226
- selectable: {
227
- multiple: true
191
+ rows: { appendable: false,
192
+ selectable: { multiple: true
228
193
  },
229
194
  classifier: function (record, rowIndex) {
230
195
  var emphasized;
@@ -234,16 +199,13 @@ let DataSummaryListPage = class DataSummaryListPage extends connect(store)(local
234
199
  else if (record['ooc']) {
235
200
  emphasized = ['#FF6B6B', 'white'];
236
201
  }
237
- return {
238
- emphasized
202
+ return { emphasized
239
203
  };
240
204
  },
241
- handlers: {
242
- click: (columns, data, column, record, rowIndex) => {
205
+ handlers: { click: (columns, data, column, record, rowIndex) => {
243
206
  openPopup(html `
244
207
  <data-summary-view data-summary-id=${record.id} style="background-color: white;"></data-summary-view>
245
- `, {
246
- backdrop: true,
208
+ `, { backdrop: true,
247
209
  size: 'large',
248
210
  title: i18next.t('title.data-summary view')
249
211
  });
@@ -251,25 +213,19 @@ let DataSummaryListPage = class DataSummaryListPage extends connect(store)(local
251
213
  }
252
214
  },
253
215
  sorters: [
254
- {
255
- name: 'date',
216
+ { name: 'date',
256
217
  desc: true
257
218
  }
258
219
  ]
259
220
  };
260
221
  }
261
222
  async fetchHandler({ page, limit, sortings = [], filters = [] }) {
262
- const response = await client.query({
263
- query: gql `
264
- query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
265
- responses: dataSummaries(filters: $filters, pagination: $pagination, sortings: $sortings) {
266
- items {
267
- id
223
+ const response = await client.query({ query: gql `
224
+ query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) { responses: dataSummaries(filters: $filters, pagination: $pagination, sortings: $sortings) { items { id
268
225
  name
269
226
  description
270
- dataSet {
271
- id
272
- }
227
+ dataSet { id
228
+ }
273
229
  date
274
230
  period
275
231
  key01
@@ -286,24 +242,21 @@ let DataSummaryListPage = class DataSummaryListPage extends connect(store)(local
286
242
  count
287
243
  countOoc
288
244
  countOos
289
- updater {
290
- id
245
+ updater { id
291
246
  name
292
- }
247
+ }
293
248
  updatedAt
294
- }
249
+ }
295
250
  total
296
- }
297
- }
251
+ }
252
+ }
298
253
  `,
299
- variables: {
300
- filters,
254
+ variables: { filters,
301
255
  pagination: { page, limit },
302
256
  sortings
303
257
  }
304
258
  });
305
- return {
306
- total: response.data.responses.total || 0,
259
+ return { total: response.data.responses.total || 0,
307
260
  records: response.data.responses.items || []
308
261
  };
309
262
  }
@@ -319,8 +272,7 @@ let DataSummaryListPage = class DataSummaryListPage extends connect(store)(local
319
272
  .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
320
273
  .map(column => {
321
274
  return column.imex === true
322
- ? {
323
- header: column.header.renderer(column),
275
+ ? { header: column.header.renderer(column),
324
276
  key: column.name,
325
277
  width: column.width,
326
278
  type: column.type
@@ -328,8 +280,7 @@ let DataSummaryListPage = class DataSummaryListPage extends connect(store)(local
328
280
  : column.imex;
329
281
  });
330
282
  var data = records.map(item => {
331
- return {
332
- id: item.id,
283
+ return { id: item.id,
333
284
  ...this.gristConfig.columns
334
285
  .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
335
286
  .reduce((record, column) => {
@@ -1 +1 @@
1
- {"version":3,"file":"data-summary-list-page.js","sourceRoot":"","sources":["../../../client/pages/data-summary/data-summary-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-summary-view.js'\n\nimport { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'\nimport { PageView, store } from '@operato/shell'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport moment from '@operato/moment-timezone-es'\nimport { DataGrist, GristRecord, FetchOption } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { notify, openPopup } from '@operato/layout'\nimport { isMobileDevice } from '@operato/utils'\n\nimport { connect } from 'pwa-helpers/connect-mixin'\nimport gql from 'graphql-tag'\n\n@customElement('data-summary-list-page')\nexport class DataSummaryListPage extends connect(store)(localize(i18next)(PageView)) {\n static styles = [\n ScrollbarStyles,\n CommonHeaderStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n overflow: hidden;\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() private mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'\n @state() private gristConfig: any\n\n @query('ox-grist') private grist!: DataGrist\n\n get context() {\n return {\n title: i18next.t('title.data-summary 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-summary',\n exportable: {\n name: i18next.t('title.data-summary list'),\n data: this._exportableData.bind(this)\n },\n toolbar: false\n }\n }\n\n render() {\n const mode = this.mode || (isMobileDevice() ? 'LIST' : 'GRID')\n\n return html`\n <ox-grist\n .mode=${mode}\n .config=${this.gristConfig}\n .fetchHandler=${this.fetchHandler.bind(this)}\n ?url-params-sensitive=${false /* this.active */}\n >\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 const yesterday = moment().subtract(1, 'day').format('YYYY-MM-DD')\n const today = moment().format('YYYY-MM-DD')\n\n this.gristConfig = {\n list: { fields: ['dataSet', 'data', 'updater', 'updatedAt'] },\n columns: [\n { type: 'gutter', gutterName: 'sequence', fixed: true },\n { type: 'gutter', gutterName: 'row-selector', multiple: true, fixed: true },\n {\n type: 'gutter',\n gutterName: 'button',\n fixed: true,\n icon: 'assignment',\n iconOnly: false,\n title: i18next.t('button.detail'),\n width: 72\n },\n {\n type: 'string',\n name: 'name',\n fixed: true,\n label: true,\n header: i18next.t('field.name'),\n record: {\n editable: false\n },\n filter: 'search',\n sortable: true,\n width: 120,\n imex: true\n },\n {\n type: 'string',\n name: 'description',\n label: true,\n header: i18next.t('field.description'),\n record: {\n editable: false\n },\n filter: 'search',\n width: 150,\n imex: true\n },\n {\n type: 'string',\n name: 'date',\n header: i18next.t('field.date'),\n sortable: true,\n filter: {\n type: 'date',\n operator: 'between',\n value: [yesterday, today]\n },\n width: 80,\n imex: true\n },\n {\n type: 'string',\n name: 'period',\n header: i18next.t('field.time-period'),\n sortable: true,\n width: 60,\n imex: true\n },\n ...Array.from({ length: 5 }, (_, idx) => {\n return {\n type: 'string',\n name: `key0${idx + 1}`,\n header: {\n renderer: i18next.t(`field.key-0${idx + 1}`),\n group: i18next.t('field.key')\n },\n record: {\n editable: false\n },\n width: 120,\n imex: true\n }\n }),\n ...Array.from({ length: 5 }, (_, idx) => {\n return {\n type: 'number',\n name: `data0${idx + 1}`,\n header: {\n renderer: i18next.t(`field.data-0${idx + 1}`),\n group: i18next.t('field.data')\n },\n record: {\n editable: false,\n align: 'right'\n },\n width: 120,\n imex: true\n }\n }),\n {\n type: 'number',\n name: 'count',\n header: i18next.t('field.count'),\n record: {\n editable: false\n },\n width: 30\n },\n {\n type: 'number',\n name: 'countOoc',\n header: i18next.t('field.count-ooc'),\n record: {\n editable: false\n },\n width: 30\n },\n {\n type: 'number',\n name: 'countOos',\n header: i18next.t('field.count-oos'),\n record: {\n editable: false\n },\n width: 30\n },\n {\n type: 'resource-object',\n name: 'updater',\n header: i18next.t('field.updater'),\n sortable: true,\n width: 120,\n imex: true\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: i18next.t('field.updated_at'),\n sortable: true,\n width: 180,\n imex: true\n }\n ],\n rows: {\n appendable: false,\n selectable: {\n multiple: true\n },\n classifier: function (record, rowIndex) {\n var emphasized\n if (record['oos']) {\n emphasized = ['#8B0000', 'white']\n } else if (record['ooc']) {\n emphasized = ['#FF6B6B', 'white']\n }\n\n return {\n emphasized\n }\n },\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n openPopup(\n html`\n <data-summary-view data-summary-id=${record.id} style=\"background-color: white;\"></data-summary-view>\n `,\n {\n backdrop: true,\n size: 'large',\n title: i18next.t('title.data-summary view')\n }\n )\n }\n }\n },\n sorters: [\n {\n name: 'date',\n desc: true\n }\n ]\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: dataSummaries(filters: $filters, pagination: $pagination, sortings: $sortings) {\n items {\n id\n name\n description\n dataSet {\n id\n }\n date\n period\n key01\n key02\n key03\n key04\n key05\n data01\n data02\n data03\n data04\n data05\n summary\n count\n countOoc\n countOos\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 _exportableData() {\n let records = [] as GristRecord[]\n if (this.grist.selected && this.grist.selected.length > 0) {\n records = this.grist.selected\n } else {\n records = this.grist.data.records\n }\n\n var headerSetting = this.grist.compiledConfig.columns\n .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)\n .map(column => {\n return column.imex === true\n ? {\n header: column.header.renderer(column),\n key: column.name,\n width: column.width,\n type: column.type\n }\n : column.imex\n })\n\n var data = records.map(item => {\n return {\n id: item.id,\n ...this.gristConfig.columns\n .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)\n .reduce((record, column) => {\n const key = column.imex === true ? column.name : column.imex.key\n record[key] = key\n .split('.')\n .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)\n return record\n }, {})\n }\n })\n\n return { header: headerSetting, data: data }\n }\n}\n"]}
1
+ {"version":3,"file":"data-summary-list-page.js","sourceRoot":"","sources":["../../../client/pages/data-summary/data-summary-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-summary-view.js'\n\nimport { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'\nimport { PageView } from '@operato/shell'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport moment from '@operato/moment-timezone-es'\nimport { DataGrist, GristRecord, FetchOption } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { notify, openPopup } from '@operato/layout'\nimport { isMobileDevice } from '@operato/utils'\n\nimport gql from 'graphql-tag'\n\n@customElement('data-summary-list-page')\nexport class DataSummaryListPage extends localize(i18next)(PageView) { static styles = [\n ScrollbarStyles,\n CommonHeaderStyles,\n css`\n :host { display: flex;\n flex-direction: column;\n\n overflow: hidden;\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() private mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'\n @state() private gristConfig: any\n\n @query('ox-grist') private grist!: DataGrist\n\n get context() { return { title: i18next.t('title.data-summary 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-summary',\n exportable: { name: i18next.t('title.data-summary list'),\n data: this._exportableData.bind(this)\n },\n toolbar: false\n }\n }\n\n render() { const mode = this.mode || (isMobileDevice() ? 'LIST' : 'GRID')\n\n return html`\n <ox-grist\n .mode=${mode}\n .config=${this.gristConfig}\n .fetchHandler=${this.fetchHandler.bind(this)}\n ?url-params-sensitive=${false /* this.active */}\n >\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) { const yesterday = moment().subtract(1, 'day').format('YYYY-MM-DD')\n const today = moment().format('YYYY-MM-DD')\n\n this.gristConfig = { list: { fields: ['dataSet', 'data', 'updater', 'updatedAt'] },\n columns: [\n { type: 'gutter', gutterName: 'sequence', fixed: true },\n { type: 'gutter', gutterName: 'row-selector', multiple: true, fixed: true },\n { type: 'gutter',\n gutterName: 'button',\n fixed: true,\n icon: 'assignment',\n iconOnly: false,\n title: i18next.t('button.detail'),\n width: 72\n },\n { type: 'string',\n name: 'name',\n fixed: true,\n label: true,\n header: i18next.t('field.name'),\n record: { editable: false\n },\n filter: 'search',\n sortable: true,\n width: 120,\n imex: true\n },\n { type: 'string',\n name: 'description',\n label: true,\n header: i18next.t('field.description'),\n record: { editable: false\n },\n filter: 'search',\n width: 150,\n imex: true\n },\n { type: 'string',\n name: 'date',\n header: i18next.t('field.date'),\n sortable: true,\n filter: { type: 'date',\n operator: 'between',\n value: [yesterday, today]\n },\n width: 80,\n imex: true\n },\n { type: 'string',\n name: 'period',\n header: i18next.t('field.time-period'),\n sortable: true,\n width: 60,\n imex: true\n },\n ...Array.from({ length: 5 }, (_, idx) => { return { type: 'string',\n name: `key0${idx + 1}`,\n header: { renderer: i18next.t(`field.key-0${idx + 1}`),\n group: i18next.t('field.key')\n },\n record: { editable: false\n },\n width: 120,\n imex: true\n }\n }),\n ...Array.from({ length: 5 }, (_, idx) => { return { type: 'number',\n name: `data0${idx + 1}`,\n header: { renderer: i18next.t(`field.data-0${idx + 1}`),\n group: i18next.t('field.data')\n },\n record: { editable: false,\n align: 'right'\n },\n width: 120,\n imex: true\n }\n }),\n { type: 'number',\n name: 'count',\n header: i18next.t('field.count'),\n record: { editable: false\n },\n width: 30\n },\n { type: 'number',\n name: 'countOoc',\n header: i18next.t('field.count-ooc'),\n record: { editable: false\n },\n width: 30\n },\n { type: 'number',\n name: 'countOos',\n header: i18next.t('field.count-oos'),\n record: { editable: false\n },\n width: 30\n },\n { type: 'resource-object',\n name: 'updater',\n header: i18next.t('field.updater'),\n sortable: true,\n width: 120,\n imex: true\n },\n { type: 'datetime',\n name: 'updatedAt',\n header: i18next.t('field.updated_at'),\n sortable: true,\n width: 180,\n imex: true\n }\n ],\n rows: { appendable: false,\n selectable: { multiple: true\n },\n classifier: function (record, rowIndex) { var emphasized\n if (record['oos']) { emphasized = ['#8B0000', 'white']\n } else if (record['ooc']) { emphasized = ['#FF6B6B', 'white']\n }\n\n return { emphasized\n }\n },\n handlers: { click: (columns, data, column, record, rowIndex) => { openPopup(\n html`\n <data-summary-view data-summary-id=${record.id} style=\"background-color: white;\"></data-summary-view>\n `,\n { backdrop: true,\n size: 'large',\n title: i18next.t('title.data-summary view')\n }\n )\n }\n }\n },\n sorters: [\n { name: 'date',\n desc: true\n }\n ]\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: dataSummaries(filters: $filters, pagination: $pagination, sortings: $sortings) { items { id\n name\n description\n dataSet { id\n }\n date\n period\n key01\n key02\n key03\n key04\n key05\n data01\n data02\n data03\n data04\n data05\n summary\n count\n countOoc\n countOos\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 _exportableData() { let records = [] as GristRecord[]\n if (this.grist.selected && this.grist.selected.length > 0) { records = this.grist.selected\n } else { records = this.grist.data.records\n }\n\n var headerSetting = this.grist.compiledConfig.columns\n .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)\n .map(column => { return column.imex === true\n ? { header: column.header.renderer(column),\n key: column.name,\n width: column.width,\n type: column.type\n }\n : column.imex\n })\n\n var data = records.map(item => { return { id: item.id,\n ...this.gristConfig.columns\n .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)\n .reduce((record, column) => { const key = column.imex === true ? column.name : column.imex.key\n record[key] = key\n .split('.')\n .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)\n return record\n }, {})\n }\n })\n\n return { header: headerSetting, data: data }\n }\n}\n"]}
@@ -5,13 +5,7 @@ import '@operato/context/ox-context-page-toolbar.js';
5
5
  import { FetchOption } from '@operato/data-grist';
6
6
  import { PageView } from '@operato/shell';
7
7
  import { DataItem } from '@operato/dataset';
8
- declare const DataSummaryGroupPage_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[]) => import("lit").LitElement) & typeof PageView;
8
+ declare const DataSummaryGroupPage_base: (new (...args: any[]) => import("lit").LitElement) & typeof PageView;
15
9
  export declare class DataSummaryGroupPage extends DataSummaryGroupPage_base {
16
10
  static styles: import("lit").CSSResult[];
17
11
  dataSetId?: string;