@things-factory/dataset 8.0.0 → 9.0.0-beta.3

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 (147) hide show
  1. package/dist-client/activities/activity-data-review-edit.d.ts +5 -1
  2. package/dist-client/activities/activity-data-review-edit.js +143 -5
  3. package/dist-client/activities/activity-data-review-edit.js.map +1 -1
  4. package/dist-client/pages/data-entry/data-entry-list-page.js +2 -2
  5. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
  6. package/dist-client/tsconfig.tsbuildinfo +1 -1
  7. package/dist-server/activities/activity-data-review.js +18 -5
  8. package/dist-server/activities/activity-data-review.js.map +1 -1
  9. package/dist-server/activities/activity-ooc-review.js +13 -52
  10. package/dist-server/activities/activity-ooc-review.js.map +1 -1
  11. package/dist-server/controllers/create-data-ooc.d.ts +4 -0
  12. package/dist-server/controllers/create-data-ooc.js +65 -0
  13. package/dist-server/controllers/create-data-ooc.js.map +1 -0
  14. package/dist-server/controllers/create-data-sample.js +4 -94
  15. package/dist-server/controllers/create-data-sample.js.map +1 -1
  16. package/dist-server/controllers/index.d.ts +3 -0
  17. package/dist-server/controllers/index.js +3 -0
  18. package/dist-server/controllers/index.js.map +1 -1
  19. package/dist-server/controllers/issue-ooc-resolve.d.ts +3 -0
  20. package/dist-server/controllers/issue-ooc-resolve.js +49 -0
  21. package/dist-server/controllers/issue-ooc-resolve.js.map +1 -0
  22. package/dist-server/controllers/issue-ooc-review.d.ts +3 -0
  23. package/dist-server/controllers/issue-ooc-review.js +47 -0
  24. package/dist-server/controllers/issue-ooc-review.js.map +1 -0
  25. package/dist-server/service/data-sample/data-sample-query.d.ts +1 -1
  26. package/dist-server/service/data-sample/data-sample-query.js +3 -3
  27. package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
  28. package/dist-server/service/index.d.ts +1 -1
  29. package/dist-server/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +26 -26
  31. package/translations/en.json +3 -0
  32. package/translations/ja.json +3 -0
  33. package/translations/ko.json +3 -0
  34. package/translations/ms.json +3 -0
  35. package/translations/zh.json +3 -0
  36. package/client/activities/activity-data-collect-edit.ts +0 -105
  37. package/client/activities/activity-data-collect-view.ts +0 -91
  38. package/client/activities/activity-data-review-edit.ts +0 -133
  39. package/client/activities/activity-data-review-view.ts +0 -145
  40. package/client/activities/activity-ooc-resolve-edit.ts +0 -195
  41. package/client/activities/activity-ooc-resolve-view.ts +0 -143
  42. package/client/activities/activity-ooc-review-edit.ts +0 -173
  43. package/client/activities/activity-ooc-review-view.ts +0 -129
  44. package/client/bootstrap.ts +0 -35
  45. package/client/components/data-entry-form.ts +0 -109
  46. package/client/index.ts +0 -1
  47. package/client/pages/data-archive/data-archive-list-page.ts +0 -277
  48. package/client/pages/data-archive/data-archive-request-popup.ts +0 -177
  49. package/client/pages/data-entry/data-entry-list-page.ts +0 -464
  50. package/client/pages/data-key-set/data-key-item-list.ts +0 -183
  51. package/client/pages/data-key-set/data-key-set-importer.ts +0 -89
  52. package/client/pages/data-key-set/data-key-set-list-page.ts +0 -413
  53. package/client/pages/data-ooc/data-ooc-list-page.ts +0 -549
  54. package/client/pages/data-ooc/data-ooc-page.ts +0 -164
  55. package/client/pages/data-ooc/data-ooc-view.ts +0 -236
  56. package/client/pages/data-ooc/data-oocs-page.ts +0 -200
  57. package/client/pages/data-report/data-report-embed-page.ts +0 -108
  58. package/client/pages/data-report/data-report-list-page.ts +0 -454
  59. package/client/pages/data-report/data-report-samples-page.ts +0 -174
  60. package/client/pages/data-report/jasper-report-oocs-page.ts +0 -110
  61. package/client/pages/data-report/jasper-report-samples-crosstab-page.ts +0 -110
  62. package/client/pages/data-report/jasper-report-samples-page.ts +0 -110
  63. package/client/pages/data-sample/data-sample-list-page.ts +0 -442
  64. package/client/pages/data-sample/data-sample-page.ts +0 -55
  65. package/client/pages/data-sample/data-sample-search-page.ts +0 -424
  66. package/client/pages/data-sample/data-sample-view.ts +0 -292
  67. package/client/pages/data-sample/data-samples-page.ts +0 -249
  68. package/client/pages/data-sensor/data-sensor-list-page.ts +0 -456
  69. package/client/pages/data-set/data-item-list.ts +0 -304
  70. package/client/pages/data-set/data-set-importer.ts +0 -89
  71. package/client/pages/data-set/data-set-list-page.ts +0 -1078
  72. package/client/pages/data-summary/data-summary-list-page.ts +0 -363
  73. package/client/pages/data-summary/data-summary-period-page.ts +0 -439
  74. package/client/pages/data-summary/data-summary-search-page.ts +0 -426
  75. package/client/pages/data-summary/data-summary-view.ts +0 -133
  76. package/client/route.ts +0 -91
  77. package/client/tsconfig.json +0 -13
  78. package/server/activities/activity-data-collect.ts +0 -100
  79. package/server/activities/activity-data-review.ts +0 -82
  80. package/server/activities/activity-ooc-resolve.ts +0 -123
  81. package/server/activities/activity-ooc-review.ts +0 -144
  82. package/server/activities/index.ts +0 -11
  83. package/server/controllers/create-data-sample.ts +0 -426
  84. package/server/controllers/data-use-case.ts +0 -98
  85. package/server/controllers/finalize-data-collection.ts +0 -388
  86. package/server/controllers/index.ts +0 -3
  87. package/server/controllers/issue-data-collection-task.ts +0 -70
  88. package/server/controllers/jasper-report.ts +0 -186
  89. package/server/controllers/query-data-summary-by-period.ts +0 -178
  90. package/server/controllers/shiny-report.ts +0 -54
  91. package/server/engine/index.ts +0 -1
  92. package/server/engine/task/create-data-sample.ts +0 -100
  93. package/server/engine/task/index.ts +0 -2
  94. package/server/engine/task/issue-collect-data.ts +0 -45
  95. package/server/index.ts +0 -8
  96. package/server/routes.ts +0 -188
  97. package/server/service/data-archive/data-archive-mutation.ts +0 -273
  98. package/server/service/data-archive/data-archive-query.ts +0 -58
  99. package/server/service/data-archive/data-archive-type.ts +0 -48
  100. package/server/service/data-archive/data-archive.ts +0 -69
  101. package/server/service/data-archive/index.ts +0 -6
  102. package/server/service/data-key-set/data-key-item-type.ts +0 -31
  103. package/server/service/data-key-set/data-key-set-mutation.ts +0 -201
  104. package/server/service/data-key-set/data-key-set-query.ts +0 -68
  105. package/server/service/data-key-set/data-key-set-type.ts +0 -70
  106. package/server/service/data-key-set/data-key-set.ts +0 -86
  107. package/server/service/data-key-set/index.ts +0 -6
  108. package/server/service/data-ooc/data-ooc-mutation.ts +0 -154
  109. package/server/service/data-ooc/data-ooc-query.ts +0 -106
  110. package/server/service/data-ooc/data-ooc-subscription.ts +0 -48
  111. package/server/service/data-ooc/data-ooc-type.ts +0 -71
  112. package/server/service/data-ooc/data-ooc.ts +0 -259
  113. package/server/service/data-ooc/index.ts +0 -7
  114. package/server/service/data-sample/data-sample-mutation.ts +0 -18
  115. package/server/service/data-sample/data-sample-query.ts +0 -215
  116. package/server/service/data-sample/data-sample-type.ts +0 -47
  117. package/server/service/data-sample/data-sample.ts +0 -193
  118. package/server/service/data-sample/index.ts +0 -6
  119. package/server/service/data-sensor/data-sensor-mutation.ts +0 -116
  120. package/server/service/data-sensor/data-sensor-query.ts +0 -76
  121. package/server/service/data-sensor/data-sensor-type.ts +0 -104
  122. package/server/service/data-sensor/data-sensor.ts +0 -126
  123. package/server/service/data-sensor/index.ts +0 -6
  124. package/server/service/data-set/data-item-type.ts +0 -155
  125. package/server/service/data-set/data-set-mutation.ts +0 -552
  126. package/server/service/data-set/data-set-query.ts +0 -461
  127. package/server/service/data-set/data-set-type.ts +0 -204
  128. package/server/service/data-set/data-set.ts +0 -326
  129. package/server/service/data-set/index.ts +0 -6
  130. package/server/service/data-set-history/data-set-history-query.ts +0 -126
  131. package/server/service/data-set-history/data-set-history-type.ts +0 -12
  132. package/server/service/data-set-history/data-set-history.ts +0 -217
  133. package/server/service/data-set-history/event-subscriber.ts +0 -17
  134. package/server/service/data-set-history/index.ts +0 -7
  135. package/server/service/data-spec/data-spec-manager.ts +0 -21
  136. package/server/service/data-spec/data-spec-query.ts +0 -21
  137. package/server/service/data-spec/data-spec.ts +0 -45
  138. package/server/service/data-spec/index.ts +0 -5
  139. package/server/service/data-summary/data-summary-mutation.ts +0 -45
  140. package/server/service/data-summary/data-summary-query.ts +0 -179
  141. package/server/service/data-summary/data-summary-type.ts +0 -86
  142. package/server/service/data-summary/data-summary.ts +0 -170
  143. package/server/service/data-summary/index.ts +0 -7
  144. package/server/service/index.ts +0 -57
  145. package/server/tsconfig.json +0 -10
  146. package/server/utils/config-resolver.ts +0 -29
  147. package/server/utils/index.ts +0 -1
@@ -1,439 +0,0 @@
1
- import '@material/web/icon/icon.js'
2
- import '@operato/input/ox-input-select-buttons.js'
3
- import '@operato/data-grist'
4
- import '@operato/context/ox-context-page-toolbar.js'
5
-
6
- import gql from 'graphql-tag'
7
- import { css, html } from 'lit'
8
- import { customElement, property, query, state } from 'lit/decorators.js'
9
- import { connect } from 'pwa-helpers/connect-mixin'
10
-
11
- import { DataGrist, FetchOption, GristRecord } from '@operato/data-grist'
12
- import { client } from '@operato/graphql'
13
- import { i18next, localize } from '@operato/i18n'
14
- import { PageView, store } from '@operato/shell'
15
- import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
16
- import { isMobileDevice } from '@operato/utils'
17
- import { DataItem } from '@operato/dataset'
18
-
19
- enum DataSetSummaryGroupType {
20
- Today = 'today',
21
- ThisMonth = 'this month',
22
- ThirtyDays = '30 days',
23
- ThisYear = 'this year',
24
- TwelveMonths = '12 months'
25
- }
26
-
27
- @customElement('data-summary-period-page')
28
- export class DataSummaryGroupPage extends connect(store)(localize(i18next)(PageView)) {
29
- static styles = [
30
- ScrollbarStyles,
31
- CommonHeaderStyles,
32
- css`
33
- :host {
34
- display: flex;
35
- flex-direction: column;
36
-
37
- overflow: hidden;
38
- }
39
-
40
- ox-grist {
41
- overflow-y: auto;
42
- flex: 1;
43
- }
44
-
45
- .header {
46
- grid-template-areas: 'filters actions';
47
- }
48
- `
49
- ]
50
-
51
- @state() dataSetId?: string
52
- @state() period?: string = DataSetSummaryGroupType.ThisMonth
53
- @state() withKeys: boolean = false
54
-
55
- @state() dataSet: any
56
- @state() dataKeySet: any
57
- @state() dataItems?: DataItem[]
58
-
59
- @state() gristConfig: any
60
- @state() mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'
61
-
62
- @query('ox-grist') private grist!: DataGrist
63
-
64
- get context() {
65
- return {
66
- title: i18next.t('title.data-summary period'),
67
- help: 'dataset/data-summary-period',
68
- actions: [
69
- {
70
- type: 'icon',
71
- icon: 'search',
72
- action: () => {
73
- this.grist.fetch()
74
- }
75
- }
76
- ],
77
- exportable: {
78
- name: i18next.t('title.data-summary period'),
79
- data: this._exportableData.bind(this)
80
- },
81
- toolbar: false
82
- }
83
- }
84
-
85
- render() {
86
- const mode = this.mode || (isMobileDevice() ? 'LIST' : 'GRID')
87
-
88
- return html`
89
- <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
90
- <div slot="headroom" class="header">
91
- <div
92
- class="filters"
93
- @change=${(e: CustomEvent) => {
94
- const element = e.target as Element
95
- if (element?.hasAttribute('period')) {
96
- this.period = (element as any)?.value
97
- } else if (element?.hasAttribute('with-keys')) {
98
- this.withKeys = (element as any)?.checked
99
- }
100
-
101
- this.refreshGristConfig()
102
- this.grist.fetch()
103
- }}
104
- >
105
- <ox-input-select-buttons
106
- class="filter"
107
- .value=${this.period}
108
- .options=${[
109
- {
110
- display: i18next.t('label.period-this-month'),
111
- value: 'this month'
112
- },
113
- {
114
- display: i18next.t('label.period-30-days'),
115
- value: '30 days'
116
- },
117
- {
118
- display: i18next.t('label.period-this-year'),
119
- value: 'this year'
120
- },
121
- {
122
- display: i18next.t('label.period-12-months'),
123
- value: '12 months'
124
- },
125
- {
126
- display: i18next.t('label.period-today'),
127
- value: 'today'
128
- }
129
- ]}
130
- period
131
- ></ox-input-select-buttons>
132
-
133
- <ox-checkbox class="filter" with-keys>${i18next.t('label.group-by data-keys')}</ox-checkbox>
134
- </div>
135
-
136
- <ox-context-page-toolbar class="actions" .context=${this.context}></ox-context-page-toolbar>
137
- </div>
138
- </ox-grist>
139
- `
140
- }
141
-
142
- pageUpdated(changes, lifecycle) {
143
- if (this.active) {
144
- this.dataSetId = lifecycle.resourceId
145
- return
146
- }
147
- }
148
-
149
- async updated(changes) {
150
- if (changes.has('dataSetId')) {
151
- const response = await client.query({
152
- query: gql`
153
- query ($id: String!) {
154
- dataSet(id: $id) {
155
- id
156
- name
157
- summaryPeriod
158
- dataItems {
159
- name
160
- description
161
- active
162
- hidden
163
- tag
164
- group
165
- type
166
- unit
167
- options
168
- quota
169
- spec
170
- stat
171
- }
172
- dataKeySet {
173
- id
174
- name
175
- description
176
- dataKeyItems {
177
- name
178
- description
179
- dataKey
180
- tKey
181
- }
182
- }
183
- }
184
- }
185
- `,
186
- variables: {
187
- id: this.dataSetId
188
- }
189
- })
190
-
191
- this.dataSet = response.data?.dataSet
192
- this.dataKeySet = this.dataSet?.dataKeySet || {}
193
- this.dataItems = this.dataSet?.dataItems || []
194
-
195
- this.refreshGristConfig()
196
- this.grist.fetch()
197
- }
198
- }
199
-
200
- getKeyColumns() {
201
- if (!this.withKeys) {
202
- return []
203
- }
204
-
205
- return (
206
- this.dataKeySet?.dataKeyItems.map((item, index) => {
207
- return {
208
- type: 'string',
209
- name: `key0${index + 1}`,
210
- header: i18next.t(item.tKey),
211
- label: true,
212
- record: {
213
- editable: false
214
- },
215
- sortable: true,
216
- filter: 'i_like',
217
- width: 120,
218
- imex: true
219
- }
220
- }) || []
221
- )
222
- }
223
-
224
- getDataColumns() {
225
- return (
226
- this.dataItems
227
- ?.filter(dataItem => dataItem.active && dataItem.stat)
228
- .map((item, index) => {
229
- return {
230
- type: 'number',
231
- name: `data0${index + 1}`,
232
- header: i18next.t(item.name),
233
- label: true,
234
- record: {
235
- editable: false
236
- },
237
- width: 120,
238
- imex: true
239
- }
240
- }) || []
241
- )
242
- }
243
-
244
- refreshGristConfig() {
245
- const keyColumns = this.getKeyColumns()
246
- const dataColumns = this.getDataColumns()
247
-
248
- const listFields = [] as string[]
249
- if (this.period == DataSetSummaryGroupType.ThisYear || this.period == DataSetSummaryGroupType.TwelveMonths) {
250
- listFields.push('month')
251
- }
252
- if (this.period != DataSetSummaryGroupType.ThisYear && this.period != DataSetSummaryGroupType.TwelveMonths) {
253
- listFields.push('date')
254
- }
255
- if (this.period == DataSetSummaryGroupType.Today) {
256
- listFields.push('period')
257
- }
258
-
259
- keyColumns.map(col => listFields.push(col.name))
260
- dataColumns.map(col => listFields.push(col.name))
261
-
262
- listFields.push('count', 'countOoc', 'countOos')
263
-
264
- this.gristConfig = {
265
- list: { fields: listFields },
266
- columns: [
267
- { type: 'gutter', gutterName: 'sequence', fixed: true },
268
- (this.period == DataSetSummaryGroupType.ThisYear || this.period == DataSetSummaryGroupType.TwelveMonths) && {
269
- type: 'string',
270
- name: 'month',
271
- fixed: true,
272
- header: i18next.t('field.month'),
273
- label: true,
274
- width: 80,
275
- sortable: true,
276
- imex: true
277
- },
278
- this.period != DataSetSummaryGroupType.ThisYear &&
279
- this.period != DataSetSummaryGroupType.TwelveMonths && {
280
- type: 'string',
281
- name: 'date',
282
- fixed: true,
283
- header: i18next.t('field.date'),
284
- label: true,
285
- sortable: true,
286
- width: 80,
287
- imex: true
288
- },
289
- this.period == DataSetSummaryGroupType.Today && {
290
- type: 'string',
291
- name: 'period',
292
- fixed: true,
293
- header: i18next.t('field.time-period'),
294
- label: true,
295
- sortable: true,
296
- width: 80,
297
- imex: true
298
- },
299
- ...keyColumns,
300
- ...dataColumns,
301
- {
302
- type: 'number',
303
- name: 'count',
304
- header: i18next.t('field.count'),
305
- label: true,
306
- record: {
307
- editable: false
308
- },
309
- width: 30
310
- },
311
- {
312
- type: 'number',
313
- name: 'countOoc',
314
- label: true,
315
- header: i18next.t('field.count-ooc'),
316
- record: {
317
- editable: false
318
- },
319
- width: 30
320
- },
321
- {
322
- type: 'number',
323
- name: 'countOos',
324
- header: i18next.t('field.count-oos'),
325
- label: true,
326
- record: {
327
- editable: false
328
- },
329
- width: 30
330
- }
331
- ].filter(Boolean),
332
- pagination: {
333
- infinite: true
334
- },
335
- rows: {
336
- appendable: false,
337
- selectable: {
338
- multiple: true
339
- }
340
- }
341
- }
342
- }
343
-
344
- async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) {
345
- if (!this.dataSetId) {
346
- return { records: [], total: 0 }
347
- }
348
-
349
- const response = await client.query({
350
- query: gql`
351
- query (
352
- $dataSetName: String!
353
- $period: String!
354
- $dataKeys: [String!]
355
- $filters: [Filter!]
356
- $pagination: Pagination
357
- $sortings: [Sorting!]
358
- ) {
359
- dataSummaryByPeriod(
360
- dataSetName: $dataSetName
361
- period: $period
362
- dataKeys: $dataKeys
363
- filters: $filters
364
- pagination: $pagination
365
- sortings: $sortings
366
- ) {
367
- month
368
- date
369
- period
370
- key01
371
- key02
372
- key03
373
- key04
374
- key05
375
- data01
376
- data02
377
- data03
378
- data04
379
- data05
380
- count
381
- countOoc
382
- countOos
383
- }
384
- }
385
- `,
386
- variables: {
387
- dataSetName: this.dataSet.name,
388
- period: this.period,
389
- dataKeys: this.withKeys ? null : [],
390
- filters,
391
- pagination: { page, limit },
392
- sortings
393
- }
394
- })
395
-
396
- return {
397
- records: response.data?.dataSummaryByPeriod || []
398
- }
399
- }
400
-
401
- _exportableData() {
402
- let records = [] as GristRecord[]
403
- if (this.grist.selected && this.grist.selected.length > 0) {
404
- records = this.grist.selected
405
- } else {
406
- records = this.grist.data.records
407
- }
408
-
409
- var headerSetting = this.grist.compiledConfig.columns
410
- .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
411
- .map(column => {
412
- return column.imex === true
413
- ? {
414
- header: column.header.renderer(column),
415
- key: column.name,
416
- width: column.width,
417
- type: column.type
418
- }
419
- : column.imex
420
- })
421
-
422
- var data = records.map(item => {
423
- return {
424
- id: item.id,
425
- ...this.gristConfig.columns
426
- .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
427
- .reduce((record, column) => {
428
- const key = column.imex === true ? column.name : column.imex.key
429
- record[key] = key
430
- .split('.')
431
- .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
432
- return record
433
- }, {})
434
- }
435
- })
436
-
437
- return { header: headerSetting, data: data }
438
- }
439
- }