@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
@@ -6,11 +6,10 @@ import '@operato/context/ox-context-page-toolbar.js';
6
6
  import gql from 'graphql-tag';
7
7
  import { css, html, nothing } from 'lit';
8
8
  import { customElement, query, state } from 'lit/decorators.js';
9
- import { connect } from 'pwa-helpers/connect-mixin';
10
9
  import { DataGrist } from '@operato/data-grist';
11
10
  import { client } from '@operato/graphql';
12
11
  import { i18next, localize } from '@operato/i18n';
13
- import { PageView, store } from '@operato/shell';
12
+ import { PageView } from '@operato/shell';
14
13
  import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles';
15
14
  import { isMobileDevice } from '@operato/utils';
16
15
  var DataSetSummaryGroupType;
@@ -23,7 +22,7 @@ var DataSetSummaryGroupType;
23
22
  DataSetSummaryGroupType["DateRange"] = "date range";
24
23
  DataSetSummaryGroupType["Month"] = "month";
25
24
  })(DataSetSummaryGroupType || (DataSetSummaryGroupType = {}));
26
- let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(localize(i18next)(PageView)) {
25
+ let DataSummaryGroupPage = class DataSummaryGroupPage extends localize(i18next)(PageView) {
27
26
  constructor() {
28
27
  super(...arguments);
29
28
  this.period = DataSetSummaryGroupType.ThisMonth;
@@ -34,38 +33,32 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
34
33
  ScrollbarStyles,
35
34
  CommonHeaderStyles,
36
35
  css `
37
- :host {
38
- display: flex;
36
+ :host { display: flex;
39
37
  flex-direction: column;
40
38
 
41
39
  overflow: hidden;
42
- }
40
+ }
43
41
 
44
- ox-grist {
45
- overflow-y: auto;
42
+ ox-grist { overflow-y: auto;
46
43
  flex: 1;
47
- }
44
+ }
48
45
 
49
- .header {
50
- grid-template-areas: 'filters actions';
51
- }
46
+ .header { grid-template-areas: 'filters actions';
47
+ }
52
48
  `
53
49
  ]; }
54
50
  get context() {
55
- return {
56
- title: i18next.t('title.data-summary period'),
51
+ return { title: i18next.t('title.data-summary period'),
57
52
  help: 'dataset/data-summary-period',
58
53
  actions: [
59
- {
60
- type: 'icon',
54
+ { type: 'icon',
61
55
  icon: 'search',
62
56
  action: () => {
63
57
  this.grist.fetch();
64
58
  }
65
59
  }
66
60
  ],
67
- exportable: {
68
- name: i18next.t('title.data-summary period'),
61
+ exportable: { name: i18next.t('title.data-summary period'),
69
62
  data: this._exportableData.bind(this)
70
63
  },
71
64
  toolbar: false
@@ -124,15 +117,11 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
124
117
  }
125
118
  async updated(changes) {
126
119
  if (changes.has('dataSetId')) {
127
- const response = await client.query({
128
- query: gql `
129
- query ($id: String!) {
130
- dataSet(id: $id) {
131
- id
120
+ const response = await client.query({ query: gql `
121
+ query ($id: String!) { dataSet(id: $id) { id
132
122
  name
133
123
  summaryPeriod
134
- dataItems {
135
- name
124
+ dataItems { name
136
125
  description
137
126
  active
138
127
  hidden
@@ -144,23 +133,20 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
144
133
  quota
145
134
  spec
146
135
  stat
147
- }
148
- dataKeySet {
149
- id
136
+ }
137
+ dataKeySet { id
150
138
  name
151
139
  description
152
- dataKeyItems {
153
- name
140
+ dataKeyItems { name
154
141
  description
155
142
  dataKey
156
143
  tKey
157
- }
158
- }
159
- }
160
- }
144
+ }
145
+ }
146
+ }
147
+ }
161
148
  `,
162
- variables: {
163
- id: this.dataSetId
149
+ variables: { id: this.dataSetId
164
150
  }
165
151
  });
166
152
  this.dataSet = response.data?.dataSet;
@@ -175,13 +161,11 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
175
161
  return [];
176
162
  }
177
163
  return (this.dataKeySet?.dataKeyItems.map((item, index) => {
178
- return {
179
- type: 'string',
164
+ return { type: 'string',
180
165
  name: `key0${index + 1}`,
181
166
  header: i18next.t(item.tKey),
182
167
  label: true,
183
- record: {
184
- editable: false
168
+ record: { editable: false
185
169
  },
186
170
  sortable: true,
187
171
  width: 120,
@@ -193,13 +177,11 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
193
177
  return (this.dataItems
194
178
  ?.filter(dataItem => dataItem.active && dataItem.stat)
195
179
  .map((item, index) => {
196
- return {
197
- type: 'number',
180
+ return { type: 'number',
198
181
  name: `data0${index + 1}`,
199
182
  header: i18next.t(item.name),
200
183
  label: true,
201
- record: {
202
- editable: false
184
+ record: { editable: false
203
185
  },
204
186
  width: 120,
205
187
  imex: true
@@ -221,20 +203,17 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
221
203
  keyColumns.map(col => listFields.push(col.name));
222
204
  dataColumns.map(col => listFields.push(col.name));
223
205
  listFields.push('count', 'countOoc', 'countOos');
224
- this.gristConfig = {
225
- list: { fields: listFields },
206
+ this.gristConfig = { list: { fields: listFields },
226
207
  columns: [
227
208
  { type: 'gutter', gutterName: 'sequence', fixed: true },
228
- monthFieldRequired && {
229
- type: 'string',
209
+ monthFieldRequired && { type: 'string',
230
210
  name: 'month',
231
211
  fixed: true,
232
212
  header: i18next.t('field.month'),
233
213
  label: true,
234
214
  width: 80,
235
215
  sortable: true,
236
- filter: this.period == DataSetSummaryGroupType.Month && {
237
- type: 'month',
216
+ filter: this.period == DataSetSummaryGroupType.Month && { type: 'month',
238
217
  operator: 'eq',
239
218
  value: this.grist.filters?.find(({ name }) => name == 'month')?.value ||
240
219
  new Date().toLocaleDateString('sv-SE').slice(0, 7)
@@ -242,16 +221,14 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
242
221
  hidden: this.period == DataSetSummaryGroupType.Month,
243
222
  imex: true
244
223
  },
245
- dateFieldRequired && {
246
- type: 'string',
224
+ dateFieldRequired && { type: 'string',
247
225
  name: 'date',
248
226
  fixed: true,
249
227
  header: i18next.t('field.date'),
250
228
  label: true,
251
229
  sortable: true,
252
230
  width: 100,
253
- filter: this.period == DataSetSummaryGroupType.DateRange && {
254
- type: 'date',
231
+ filter: this.period == DataSetSummaryGroupType.DateRange && { type: 'date',
255
232
  operator: 'between',
256
233
  value: this.grist.filters?.find(({ name }) => name == 'date')?.value || [
257
234
  new Date(new Date().getFullYear(), new Date().getMonth(), 1).toLocaleDateString('sv-SE'),
@@ -260,8 +237,7 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
260
237
  },
261
238
  imex: true
262
239
  },
263
- periodRequired && {
264
- type: 'string',
240
+ periodRequired && { type: 'string',
265
241
  name: 'period',
266
242
  fixed: true,
267
243
  header: i18next.t('field.time-period'),
@@ -272,44 +248,35 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
272
248
  },
273
249
  ...keyColumns,
274
250
  ...dataColumns,
275
- {
276
- type: 'number',
251
+ { type: 'number',
277
252
  name: 'count',
278
253
  header: i18next.t('field.count'),
279
254
  label: true,
280
- record: {
281
- editable: false
255
+ record: { editable: false
282
256
  },
283
257
  width: 30
284
258
  },
285
- {
286
- type: 'number',
259
+ { type: 'number',
287
260
  name: 'countOoc',
288
261
  label: true,
289
262
  header: i18next.t('field.count-ooc'),
290
- record: {
291
- editable: false
263
+ record: { editable: false
292
264
  },
293
265
  width: 30
294
266
  },
295
- {
296
- type: 'number',
267
+ { type: 'number',
297
268
  name: 'countOos',
298
269
  header: i18next.t('field.count-oos'),
299
270
  label: true,
300
- record: {
301
- editable: false
271
+ record: { editable: false
302
272
  },
303
273
  width: 30
304
274
  }
305
275
  ].filter(Boolean),
306
- pagination: {
307
- infinite: true
276
+ pagination: { infinite: true
308
277
  },
309
- rows: {
310
- appendable: false,
311
- selectable: {
312
- multiple: true
278
+ rows: { appendable: false,
279
+ selectable: { multiple: true
313
280
  }
314
281
  }
315
282
  };
@@ -329,8 +296,7 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
329
296
  return acc;
330
297
  }, { fromDate: null, toDate: null, month: null });
331
298
  }
332
- const response = await client.query({
333
- query: gql `
299
+ const response = await client.query({ query: gql `
334
300
  query (
335
301
  $dataSetName: String!
336
302
  $period: String!
@@ -338,16 +304,14 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
338
304
  $filters: [Filter!]
339
305
  $pagination: Pagination
340
306
  $sortings: [Sorting!]
341
- ) {
342
- dataSummaryByPeriod(
307
+ ) { dataSummaryByPeriod(
343
308
  dataSetName: $dataSetName
344
309
  period: $period
345
310
  dataKeys: $dataKeys
346
311
  filters: $filters
347
312
  pagination: $pagination
348
313
  sortings: $sortings
349
- ) {
350
- month
314
+ ) { month
351
315
  date
352
316
  period
353
317
  key01
@@ -363,11 +327,10 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
363
327
  count
364
328
  countOoc
365
329
  countOos
366
- }
367
- }
330
+ }
331
+ }
368
332
  `,
369
- variables: {
370
- dataSetName: this.dataSet.name,
333
+ variables: { dataSetName: this.dataSet.name,
371
334
  period: this.period,
372
335
  dataKeys: this.withKeys ? null : [],
373
336
  filters,
@@ -375,8 +338,7 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
375
338
  sortings
376
339
  }
377
340
  });
378
- return {
379
- records: response.data?.dataSummaryByPeriod || []
341
+ return { records: response.data?.dataSummaryByPeriod || []
380
342
  };
381
343
  }
382
344
  _exportableData() {
@@ -391,8 +353,7 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
391
353
  .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
392
354
  .map(column => {
393
355
  return column.imex === true
394
- ? {
395
- header: column.header.renderer(column),
356
+ ? { header: column.header.renderer(column),
396
357
  key: column.name,
397
358
  width: column.width,
398
359
  type: column.type
@@ -400,8 +361,7 @@ let DataSummaryGroupPage = class DataSummaryGroupPage extends connect(store)(loc
400
361
  : column.imex;
401
362
  });
402
363
  var data = records.map(item => {
403
- return {
404
- id: item.id,
364
+ return { id: item.id,
405
365
  ...this.gristConfig.columns
406
366
  .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
407
367
  .reduce((record, column) => {
@@ -1 +1 @@
1
- {"version":3,"file":"data-summary-period-page.js","sourceRoot":"","sources":["../../../client/pages/data-summary/data-summary-period-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/input/ox-input-select-buttons.js'\nimport '@operato/data-grist'\nimport '@operato/context/ox-context-page-toolbar.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin'\n\nimport { DataGrist, FetchHandler, FetchOption, GristRecord } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { PageView, store } from '@operato/shell'\nimport { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'\nimport { isMobileDevice } from '@operato/utils'\nimport { DataItem } from '@operato/dataset'\n\nenum DataSetSummaryGroupType {\n Today = 'today',\n ThisMonth = 'this month',\n ThirtyDays = '30 days',\n ThisYear = 'this year',\n TwelveMonths = '12 months',\n DateRange = 'date range',\n Month = 'month'\n}\n\n@customElement('data-summary-period-page')\nexport class DataSummaryGroupPage 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() dataSetId?: string\n @state() period?: string = DataSetSummaryGroupType.ThisMonth\n @state() withKeys: boolean = false\n\n @state() dataSet: any\n @state() dataKeySet: any\n @state() dataItems?: DataItem[]\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-summary period'),\n help: 'dataset/data-summary-period',\n actions: [\n {\n type: 'icon',\n icon: 'search',\n action: () => {\n this.grist.fetch()\n }\n }\n ],\n exportable: {\n name: i18next.t('title.data-summary period'),\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 .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this) as FetchHandler}>\n <div slot=\"headroom\" class=\"header\">\n <div\n class=\"filters\"\n @change=${(e: CustomEvent) => {\n const element = e.target as Element\n if (element?.hasAttribute('period')) {\n this.period = (element as any)?.value\n } else if (element?.hasAttribute('with-keys')) {\n this.withKeys = (element as any)?.checked\n }\n\n this.refreshGristConfig()\n }}\n >\n <ox-input-select-buttons\n class=\"filter\"\n .value=${this.period}\n .options=${[\n { display: i18next.t('label.period-this-month'), value: 'this month' },\n { display: i18next.t('label.period-30-days'), value: '30 days' },\n { display: i18next.t('label.period-this-year'), value: 'this year' },\n { display: i18next.t('label.period-12-months'), value: '12 months' },\n { display: i18next.t('label.period-today'), value: 'today' },\n { display: i18next.t('label.period-month'), value: 'month' },\n { display: i18next.t('label.period-date-range'), value: 'date range' }\n ]}\n period\n ></ox-input-select-buttons>\n\n ${this.period == 'date range' || this.period == 'month'\n ? html`<ox-filters-form without-search></ox-filters-form>`\n : nothing}\n\n <ox-checkbox class=\"filter\" with-keys>${i18next.t('label.group-by data-keys')}</ox-checkbox>\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 pageUpdated(changes, lifecycle) {\n if (this.active) {\n this.dataSetId = lifecycle.resourceId\n return\n }\n }\n\n async updated(changes) {\n if (changes.has('dataSetId')) {\n const response = await client.query({\n query: gql`\n query ($id: String!) {\n dataSet(id: $id) {\n id\n name\n summaryPeriod\n dataItems {\n name\n description\n active\n hidden\n tag\n group\n type\n unit\n options\n quota\n spec\n stat\n }\n dataKeySet {\n id\n name\n description\n dataKeyItems {\n name\n description\n dataKey\n tKey\n }\n }\n }\n }\n `,\n variables: {\n id: this.dataSetId\n }\n })\n\n this.dataSet = response.data?.dataSet\n this.dataKeySet = this.dataSet?.dataKeySet || {}\n this.dataItems = this.dataSet?.dataItems || []\n\n this.refreshGristConfig()\n this.grist.fetch()\n }\n }\n\n getKeyColumns() {\n if (!this.withKeys) {\n return []\n }\n\n return (\n this.dataKeySet?.dataKeyItems.map((item, index) => {\n return {\n type: 'string',\n name: `key0${index + 1}`,\n header: i18next.t(item.tKey),\n label: true,\n record: {\n editable: false\n },\n sortable: true,\n width: 120,\n imex: true\n }\n }) || []\n )\n }\n\n getDataColumns() {\n return (\n this.dataItems\n ?.filter(dataItem => dataItem.active && dataItem.stat)\n .map((item, index) => {\n return {\n type: 'number',\n name: `data0${index + 1}`,\n header: i18next.t(item.name),\n label: true,\n record: {\n editable: false\n },\n width: 120,\n imex: true\n }\n }) || []\n )\n }\n\n refreshGristConfig() {\n const keyColumns = this.getKeyColumns()\n const dataColumns = this.getDataColumns()\n\n const listFields = [] as string[]\n const monthFieldRequired =\n this.period == DataSetSummaryGroupType.ThisYear ||\n this.period == DataSetSummaryGroupType.TwelveMonths ||\n this.period == DataSetSummaryGroupType.Month\n const dateFieldRequired =\n this.period != DataSetSummaryGroupType.ThisYear && this.period != DataSetSummaryGroupType.TwelveMonths\n const periodRequired = this.period == DataSetSummaryGroupType.Today\n\n monthFieldRequired && listFields.push('month')\n dateFieldRequired && listFields.push('date')\n periodRequired && listFields.push('period')\n\n keyColumns.map(col => listFields.push(col.name))\n dataColumns.map(col => listFields.push(col.name))\n\n listFields.push('count', 'countOoc', 'countOos')\n\n this.gristConfig = {\n list: { fields: listFields },\n columns: [\n { type: 'gutter', gutterName: 'sequence', fixed: true },\n monthFieldRequired && {\n type: 'string',\n name: 'month',\n fixed: true,\n header: i18next.t('field.month'),\n label: true,\n width: 80,\n sortable: true,\n filter: this.period == DataSetSummaryGroupType.Month && {\n type: 'month',\n operator: 'eq',\n value:\n this.grist.filters?.find(({ name }) => name == 'month')?.value ||\n new Date().toLocaleDateString('sv-SE').slice(0, 7)\n },\n hidden: this.period == DataSetSummaryGroupType.Month,\n imex: true\n },\n dateFieldRequired && {\n type: 'string',\n name: 'date',\n fixed: true,\n header: i18next.t('field.date'),\n label: true,\n sortable: true,\n width: 100,\n filter: this.period == DataSetSummaryGroupType.DateRange && {\n type: 'date',\n operator: 'between',\n value: this.grist.filters?.find(({ name }) => name == 'date')?.value || [\n new Date(new Date().getFullYear(), new Date().getMonth(), 1).toLocaleDateString('sv-SE'),\n new Date().toLocaleDateString('sv-SE')\n ]\n },\n imex: true\n },\n periodRequired && {\n type: 'string',\n name: 'period',\n fixed: true,\n header: i18next.t('field.time-period'),\n label: true,\n sortable: true,\n width: 80,\n imex: true\n },\n ...keyColumns,\n ...dataColumns,\n {\n type: 'number',\n name: 'count',\n header: i18next.t('field.count'),\n label: true,\n record: {\n editable: false\n },\n width: 30\n },\n {\n type: 'number',\n name: 'countOoc',\n label: true,\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 label: true,\n record: {\n editable: false\n },\n width: 30\n }\n ].filter(Boolean),\n pagination: {\n infinite: true\n },\n rows: {\n appendable: false,\n selectable: {\n multiple: true\n }\n }\n }\n }\n\n async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) {\n if (!this.dataSetId) {\n return { records: [], total: 0 }\n }\n\n if (this.period == 'date range' || this.period == 'month') {\n const { fromDate, toDate, month } = filters.reduce(\n (acc, filter) => {\n if (filter.name === 'fromDate') acc.fromDate = filter.value\n if (filter.name === 'toDate') acc.toDate = filter.value\n if (filter.name === 'month') acc.month = filter.value\n return acc\n },\n { fromDate: null, toDate: null, month: null }\n )\n }\n\n const response = await client.query({\n query: gql`\n query (\n $dataSetName: String!\n $period: String!\n $dataKeys: [String!]\n $filters: [Filter!]\n $pagination: Pagination\n $sortings: [Sorting!]\n ) {\n dataSummaryByPeriod(\n dataSetName: $dataSetName\n period: $period\n dataKeys: $dataKeys\n filters: $filters\n pagination: $pagination\n sortings: $sortings\n ) {\n month\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 count\n countOoc\n countOos\n }\n }\n `,\n variables: {\n dataSetName: this.dataSet.name,\n period: this.period,\n dataKeys: this.withKeys ? null : [],\n filters,\n pagination: { page, limit },\n sortings\n }\n })\n\n return {\n records: response.data?.dataSummaryByPeriod || []\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-period-page.js","sourceRoot":"","sources":["../../../client/pages/data-summary/data-summary-period-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/input/ox-input-select-buttons.js'\nimport '@operato/data-grist'\nimport '@operato/context/ox-context-page-toolbar.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { DataGrist, FetchHandler, FetchOption, GristRecord } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { PageView } from '@operato/shell'\nimport { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'\nimport { isMobileDevice } from '@operato/utils'\nimport { DataItem } from '@operato/dataset'\n\nenum DataSetSummaryGroupType { Today = 'today',\n ThisMonth = 'this month',\n ThirtyDays = '30 days',\n ThisYear = 'this year',\n TwelveMonths = '12 months',\n DateRange = 'date range',\n Month = 'month'\n}\n\n@customElement('data-summary-period-page')\nexport class DataSummaryGroupPage 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() dataSetId?: string\n @state() period?: string = DataSetSummaryGroupType.ThisMonth\n @state() withKeys: boolean = false\n\n @state() dataSet: any\n @state() dataKeySet: any\n @state() dataItems?: DataItem[]\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-summary period'),\n help: 'dataset/data-summary-period',\n actions: [\n { type: 'icon',\n icon: 'search',\n action: () => { this.grist.fetch()\n }\n }\n ],\n exportable: { name: i18next.t('title.data-summary period'),\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 .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this) as FetchHandler}>\n <div slot=\"headroom\" class=\"header\">\n <div\n class=\"filters\"\n @change=${(e: CustomEvent) => { const element = e.target as Element\n if (element?.hasAttribute('period')) { this.period = (element as any)?.value\n } else if (element?.hasAttribute('with-keys')) { this.withKeys = (element as any)?.checked\n }\n\n this.refreshGristConfig()\n }}\n >\n <ox-input-select-buttons\n class=\"filter\"\n .value=${this.period}\n .options=${[\n { display: i18next.t('label.period-this-month'), value: 'this month' },\n { display: i18next.t('label.period-30-days'), value: '30 days' },\n { display: i18next.t('label.period-this-year'), value: 'this year' },\n { display: i18next.t('label.period-12-months'), value: '12 months' },\n { display: i18next.t('label.period-today'), value: 'today' },\n { display: i18next.t('label.period-month'), value: 'month' },\n { display: i18next.t('label.period-date-range'), value: 'date range' }\n ]}\n period\n ></ox-input-select-buttons>\n\n ${this.period == 'date range' || this.period == 'month'\n ? html`<ox-filters-form without-search></ox-filters-form>`\n : nothing}\n\n <ox-checkbox class=\"filter\" with-keys>${i18next.t('label.group-by data-keys')}</ox-checkbox>\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 pageUpdated(changes, lifecycle) { if (this.active) { this.dataSetId = lifecycle.resourceId\n return\n }\n }\n\n async updated(changes) { if (changes.has('dataSetId')) { const response = await client.query({ query: gql`\n query ($id: String!) { dataSet(id: $id) { id\n name\n summaryPeriod\n dataItems { name\n description\n active\n hidden\n tag\n group\n type\n unit\n options\n quota\n spec\n stat\n }\n dataKeySet { id\n name\n description\n dataKeyItems { name\n description\n dataKey\n tKey\n }\n }\n }\n }\n `,\n variables: { id: this.dataSetId\n }\n })\n\n this.dataSet = response.data?.dataSet\n this.dataKeySet = this.dataSet?.dataKeySet || {}\n this.dataItems = this.dataSet?.dataItems || []\n\n this.refreshGristConfig()\n this.grist.fetch()\n }\n }\n\n getKeyColumns() { if (!this.withKeys) { return []\n }\n\n return (\n this.dataKeySet?.dataKeyItems.map((item, index) => { return { type: 'string',\n name: `key0${index + 1}`,\n header: i18next.t(item.tKey),\n label: true,\n record: { editable: false\n },\n sortable: true,\n width: 120,\n imex: true\n }\n }) || []\n )\n }\n\n getDataColumns() { return (\n this.dataItems\n ?.filter(dataItem => dataItem.active && dataItem.stat)\n .map((item, index) => { return { type: 'number',\n name: `data0${index + 1}`,\n header: i18next.t(item.name),\n label: true,\n record: { editable: false\n },\n width: 120,\n imex: true\n }\n }) || []\n )\n }\n\n refreshGristConfig() { const keyColumns = this.getKeyColumns()\n const dataColumns = this.getDataColumns()\n\n const listFields = [] as string[]\n const monthFieldRequired =\n this.period == DataSetSummaryGroupType.ThisYear ||\n this.period == DataSetSummaryGroupType.TwelveMonths ||\n this.period == DataSetSummaryGroupType.Month\n const dateFieldRequired =\n this.period != DataSetSummaryGroupType.ThisYear && this.period != DataSetSummaryGroupType.TwelveMonths\n const periodRequired = this.period == DataSetSummaryGroupType.Today\n\n monthFieldRequired && listFields.push('month')\n dateFieldRequired && listFields.push('date')\n periodRequired && listFields.push('period')\n\n keyColumns.map(col => listFields.push(col.name))\n dataColumns.map(col => listFields.push(col.name))\n\n listFields.push('count', 'countOoc', 'countOos')\n\n this.gristConfig = { list: { fields: listFields },\n columns: [\n { type: 'gutter', gutterName: 'sequence', fixed: true },\n monthFieldRequired && { type: 'string',\n name: 'month',\n fixed: true,\n header: i18next.t('field.month'),\n label: true,\n width: 80,\n sortable: true,\n filter: this.period == DataSetSummaryGroupType.Month && { type: 'month',\n operator: 'eq',\n value:\n this.grist.filters?.find(({ name }) => name == 'month')?.value ||\n new Date().toLocaleDateString('sv-SE').slice(0, 7)\n },\n hidden: this.period == DataSetSummaryGroupType.Month,\n imex: true\n },\n dateFieldRequired && { type: 'string',\n name: 'date',\n fixed: true,\n header: i18next.t('field.date'),\n label: true,\n sortable: true,\n width: 100,\n filter: this.period == DataSetSummaryGroupType.DateRange && { type: 'date',\n operator: 'between',\n value: this.grist.filters?.find(({ name }) => name == 'date')?.value || [\n new Date(new Date().getFullYear(), new Date().getMonth(), 1).toLocaleDateString('sv-SE'),\n new Date().toLocaleDateString('sv-SE')\n ]\n },\n imex: true\n },\n periodRequired && { type: 'string',\n name: 'period',\n fixed: true,\n header: i18next.t('field.time-period'),\n label: true,\n sortable: true,\n width: 80,\n imex: true\n },\n ...keyColumns,\n ...dataColumns,\n { type: 'number',\n name: 'count',\n header: i18next.t('field.count'),\n label: true,\n record: { editable: false\n },\n width: 30\n },\n { type: 'number',\n name: 'countOoc',\n label: true,\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 label: true,\n record: { editable: false\n },\n width: 30\n }\n ].filter(Boolean),\n pagination: { infinite: true\n },\n rows: { appendable: false,\n selectable: { multiple: true\n }\n }\n }\n }\n\n async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) { if (!this.dataSetId) { return { records: [], total: 0 }\n }\n\n if (this.period == 'date range' || this.period == 'month') { const { fromDate, toDate, month } = filters.reduce(\n (acc, filter) => { if (filter.name === 'fromDate') acc.fromDate = filter.value\n if (filter.name === 'toDate') acc.toDate = filter.value\n if (filter.name === 'month') acc.month = filter.value\n return acc\n },\n { fromDate: null, toDate: null, month: null }\n )\n }\n\n const response = await client.query({ query: gql`\n query (\n $dataSetName: String!\n $period: String!\n $dataKeys: [String!]\n $filters: [Filter!]\n $pagination: Pagination\n $sortings: [Sorting!]\n ) { dataSummaryByPeriod(\n dataSetName: $dataSetName\n period: $period\n dataKeys: $dataKeys\n filters: $filters\n pagination: $pagination\n sortings: $sortings\n ) { month\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 count\n countOoc\n countOos\n }\n }\n `,\n variables: { dataSetName: this.dataSet.name,\n period: this.period,\n dataKeys: this.withKeys ? null : [],\n filters,\n pagination: { page, limit },\n sortings\n }\n })\n\n return { records: response.data?.dataSummaryByPeriod || []\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 './data-summary-view.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 DataSummarySearchPage_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 DataSummarySearchPage_base: (new (...args: any[]) => import("lit").LitElement) & typeof PageView;
15
9
  export declare class DataSummarySearchPage extends DataSummarySearchPage_base {
16
10
  static styles: import("lit").CSSResult[];
17
11
  dataSetId?: string;