@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,442 +0,0 @@
1
- import '@material/web/icon/icon.js'
2
- import '@operato/data-grist'
3
- import '@operato/context/ox-context-page-toolbar.js'
4
- import './data-sample-view.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
- import moment from '@operato/moment-timezone-es'
11
-
12
- import { DataGrist, FetchOption, GristRecord } from '@operato/data-grist'
13
- import { client } from '@operato/graphql'
14
- import { i18next, localize } from '@operato/i18n'
15
- import { openPopup } from '@operato/layout'
16
- import { PageView, store } from '@operato/shell'
17
- import { CommonGristStyles, CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
18
- import { isMobileDevice } from '@operato/utils'
19
- import { GhostPrint } from '@operato/ghost-print'
20
-
21
- import { p13n } from '@operato/p13n'
22
-
23
- @customElement('data-sample-list-page')
24
- export class DataSampleListPage extends connect(store)(p13n(localize(i18next)(PageView))) {
25
- static styles = [
26
- ScrollbarStyles,
27
- CommonGristStyles,
28
- CommonHeaderStyles,
29
- css`
30
- :host {
31
- display: flex;
32
- flex-direction: column;
33
-
34
- overflow: hidden;
35
-
36
- --grid-header-padding: 2px 0 2px 9px;
37
- }
38
-
39
- ox-grist {
40
- overflow-y: auto;
41
- flex: 1;
42
- }
43
-
44
- .header {
45
- grid-template-areas: 'filters actions';
46
- }
47
- `
48
- ]
49
-
50
- @state() gristConfig: any
51
- @state() mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'
52
-
53
- @query('ox-grist') private grist!: DataGrist
54
-
55
- get context() {
56
- return {
57
- title: i18next.t('title.data-sample list'),
58
- search: {
59
- handler: (search: string) => {
60
- this.grist.searchText = search
61
- },
62
- value: this.grist?.searchText || ''
63
- },
64
- filter: {
65
- handler: () => {
66
- this.grist.toggleHeadroom()
67
- }
68
- },
69
- help: 'dataset/data-sample',
70
- actions: [
71
- {
72
- title: i18next.t('button.print'),
73
- action: this.printSamples.bind(this),
74
- icon: 'print'
75
- }
76
- ],
77
- exportable: {
78
- name: i18next.t('title.data-sample list'),
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
90
- .mode=${mode}
91
- .config=${this.gristConfig}
92
- .fetchHandler=${this.fetchHandler.bind(this)}
93
- .personalConfigProvider=${this.getPagePreferenceProvider('ox-grist')!}
94
- ?url-params-sensitive=${false /* this.active */}
95
- >
96
- <div slot="headroom" class="header">
97
- <div class="filters">
98
- <ox-filters-form class="filter" autofocus without-search></ox-filters-form>
99
- </div>
100
-
101
- <ox-context-page-toolbar class="actions" .context=${this.context}></ox-context-page-toolbar>
102
- </div>
103
-
104
- <ox-grist-personalizer slot="setting"></ox-grist-personalizer>
105
- </ox-grist>
106
- `
107
- }
108
-
109
- async pageInitialized(lifecycle) {
110
- const yesterday = moment().subtract(1, 'day').format('YYYY-MM-DD')
111
- const today = moment().format('YYYY-MM-DD')
112
-
113
- this.gristConfig = {
114
- list: { fields: ['dataSet', 'data', 'updater', 'updatedAt'] },
115
- columns: [
116
- { type: 'gutter', gutterName: 'sequence', fixed: true },
117
- { type: 'gutter', gutterName: 'row-selector', fixed: true, multiple: true },
118
- {
119
- type: 'gutter',
120
- gutterName: 'button',
121
- fixed: true,
122
- icon: 'assignment',
123
- iconOnly: false,
124
- title: i18next.t('button.detail'),
125
- width: 72
126
- },
127
- {
128
- type: 'string',
129
- name: 'name',
130
- fixed: true,
131
- label: true,
132
- header: i18next.t('field.name'),
133
- record: {
134
- editable: false
135
- },
136
- filter: 'search',
137
- sortable: true,
138
- width: 120,
139
- imex: true
140
- },
141
- {
142
- type: 'string',
143
- name: 'description',
144
- label: true,
145
- header: i18next.t('field.description'),
146
- record: {
147
- editable: false
148
- },
149
- filter: 'search',
150
- width: 150,
151
- imex: true
152
- },
153
- {
154
- type: 'string',
155
- name: 'key01',
156
- header: {
157
- renderer: i18next.t('field.key-01'),
158
- group: i18next.t('field.key')
159
- },
160
- record: {
161
- editable: false
162
- },
163
- sortable: true,
164
- width: 120,
165
- imex: true
166
- },
167
- {
168
- type: 'string',
169
- name: 'key02',
170
- header: {
171
- renderer: i18next.t('field.key-02'),
172
- group: i18next.t('field.key')
173
- },
174
- record: {
175
- editable: false
176
- },
177
- sortable: true,
178
- width: 120,
179
- imex: true
180
- },
181
- {
182
- type: 'string',
183
- name: 'key03',
184
- header: {
185
- renderer: i18next.t('field.key-03'),
186
- group: i18next.t('field.key')
187
- },
188
- record: {
189
- editable: false
190
- },
191
- sortable: true,
192
- width: 120,
193
- imex: true
194
- },
195
- {
196
- type: 'string',
197
- name: 'key04',
198
- header: {
199
- renderer: i18next.t('field.key-04'),
200
- group: i18next.t('field.key')
201
- },
202
- record: {
203
- editable: false
204
- },
205
- sortable: true,
206
- width: 120,
207
- imex: true
208
- },
209
- {
210
- type: 'string',
211
- name: 'key05',
212
- header: {
213
- renderer: i18next.t('field.key-05'),
214
- group: i18next.t('field.key')
215
- },
216
- record: {
217
- editable: false
218
- },
219
- sortable: true,
220
- width: 120,
221
- imex: true
222
- },
223
- {
224
- type: 'checkbox',
225
- name: 'ooc',
226
- header: i18next.t('field.ooc'),
227
- record: {
228
- editable: false
229
- },
230
- width: 30
231
- },
232
- {
233
- type: 'checkbox',
234
- name: 'oos',
235
- header: i18next.t('field.oos'),
236
- record: {
237
- editable: false
238
- },
239
- width: 30
240
- },
241
- {
242
- type: 'json5',
243
- name: 'data',
244
- header: i18next.t('field.data'),
245
- record: {
246
- editable: false
247
- },
248
- width: 200,
249
- imex: true
250
- },
251
- {
252
- type: 'json5',
253
- name: 'rawData',
254
- header: i18next.t('field.raw-data'),
255
- record: {
256
- editable: false
257
- },
258
- width: 200,
259
- imex: true
260
- },
261
- {
262
- type: 'string',
263
- name: 'workDate',
264
- header: i18next.t('field.work-date'),
265
- sortable: true,
266
- filter: {
267
- type: 'date',
268
- operator: 'between',
269
- value: [yesterday, today]
270
- },
271
- width: 80,
272
- imex: true
273
- },
274
- {
275
- type: 'string',
276
- name: 'workShift',
277
- header: i18next.t('field.work-shift'),
278
- sortable: true,
279
- width: 40,
280
- imex: true
281
- },
282
- {
283
- type: 'datetime',
284
- name: 'collectedAt',
285
- header: i18next.t('field.collected-at'),
286
- sortable: true,
287
- width: 180,
288
- imex: true
289
- },
290
- {
291
- type: 'resource-object',
292
- name: 'updater',
293
- header: i18next.t('field.updater'),
294
- sortable: true,
295
- width: 120,
296
- imex: true
297
- },
298
- {
299
- type: 'datetime',
300
- name: 'updatedAt',
301
- header: i18next.t('field.updated_at'),
302
- sortable: true,
303
- width: 180,
304
- imex: true
305
- }
306
- ],
307
- rows: {
308
- appendable: false,
309
- selectable: {
310
- multiple: true
311
- },
312
- classifier: function (record, rowIndex) {
313
- var emphasized
314
- if (record['oos']) {
315
- emphasized = ['#8B0000', 'white']
316
- } else if (record['ooc']) {
317
- emphasized = ['#FF6B6B', 'white']
318
- }
319
-
320
- return {
321
- emphasized
322
- }
323
- },
324
- handlers: {
325
- click: (columns, data, column, record, rowIndex) => {
326
- openPopup(
327
- html`
328
- <data-sample-view data-sample-id=${record.id} style="background-color: white;"></data-sample-view>
329
- `,
330
- {
331
- backdrop: true,
332
- size: 'large',
333
- title: i18next.t('title.data-sample view')
334
- }
335
- )
336
- }
337
- }
338
- },
339
- sorters: [
340
- {
341
- name: 'collectedAt',
342
- desc: true
343
- }
344
- ]
345
- }
346
- }
347
-
348
- async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) {
349
- const response = await client.query({
350
- query: gql`
351
- query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
352
- responses: dataSamples(filters: $filters, pagination: $pagination, sortings: $sortings) {
353
- items {
354
- id
355
- name
356
- description
357
- useCase
358
- key01
359
- key02
360
- key03
361
- key04
362
- key05
363
- data
364
- rawData
365
- ooc
366
- oos
367
- judgment
368
- workDate
369
- workShift
370
- updater {
371
- id
372
- name
373
- }
374
- updatedAt
375
- collectedAt
376
- }
377
- total
378
- }
379
- }
380
- `,
381
- variables: {
382
- filters,
383
- pagination: { page, limit },
384
- sortings
385
- }
386
- })
387
-
388
- return {
389
- total: response.data.responses.total || 0,
390
- records: response.data.responses.items || []
391
- }
392
- }
393
-
394
- _exportableData() {
395
- let records = [] as GristRecord[]
396
- if (this.grist.selected && this.grist.selected.length > 0) {
397
- records = this.grist.selected
398
- } else {
399
- records = this.grist.data.records
400
- }
401
-
402
- var headerSetting = this.grist.compiledConfig.columns
403
- .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
404
- .map(column => {
405
- return column.imex === true
406
- ? {
407
- header: column.header.renderer(column),
408
- key: column.name,
409
- width: column.width,
410
- type: column.type
411
- }
412
- : column.imex
413
- })
414
-
415
- var data = records.map(item => {
416
- return {
417
- id: item.id,
418
- ...this.gristConfig.columns
419
- .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
420
- .reduce((record, column) => {
421
- const key = column.imex === true ? column.name : column.imex.key
422
- record[key] = key
423
- .split('.')
424
- .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
425
- return record
426
- }, {})
427
- }
428
- })
429
-
430
- return { header: headerSetting, data: data }
431
- }
432
-
433
- printSamples() {
434
- const selected = this.grist.selected
435
- const ids = selected.map(record => record.id).join('|')
436
-
437
- GhostPrint.print({
438
- src: `./data-samples?ids=${ids}`
439
- // pending: 200 * selected.length
440
- })
441
- }
442
- }
@@ -1,55 +0,0 @@
1
- import { PropertyValues, html, css } from 'lit'
2
- import { customElement, property } from 'lit/decorators.js'
3
- import { PageView } from '@operato/shell'
4
- import { i18next, localize } from '@operato/i18n'
5
-
6
- import './data-sample-view.js'
7
-
8
- @customElement('data-sample-page')
9
- export class DataSampleViewPage extends localize(i18next)(PageView) {
10
- static styles = [
11
- css`
12
- :host {
13
- display: flex;
14
- }
15
-
16
- data-sample-view {
17
- flex: 1;
18
- }
19
-
20
- @media print {
21
- :host {
22
- display: block;
23
- overflow: visible;
24
- }
25
- }
26
- `
27
- ]
28
-
29
- @property({ type: Object }) dataSampleId?: any
30
-
31
- get context() {
32
- return {
33
- title: i18next.t('title.data-sample view'),
34
- help: 'dataset/data-sample',
35
- actions: []
36
- }
37
- }
38
-
39
- render() {
40
- return html` <data-sample-view .dataSampleId=${this.dataSampleId}></data-sample-view> `
41
- }
42
-
43
- updated(changes: PropertyValues<this>) {}
44
-
45
- pageUpdated(changes: any, lifecycle: any, before: any) {
46
- if (this.active) {
47
- /*
48
- * this page is activated
49
- */
50
- this.dataSampleId = lifecycle.resourceId
51
- } else {
52
- /* this page is deactivated */
53
- }
54
- }
55
- }