@things-factory/dataset 8.0.0-beta.0 → 8.0.0-beta.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. package/package.json +13 -13
  2. package/client/activities/activity-data-collect-edit.ts +0 -105
  3. package/client/activities/activity-data-collect-view.ts +0 -91
  4. package/client/activities/activity-data-review-edit.ts +0 -133
  5. package/client/activities/activity-data-review-view.ts +0 -145
  6. package/client/activities/activity-ooc-resolve-edit.ts +0 -195
  7. package/client/activities/activity-ooc-resolve-view.ts +0 -143
  8. package/client/activities/activity-ooc-review-edit.ts +0 -173
  9. package/client/activities/activity-ooc-review-view.ts +0 -129
  10. package/client/bootstrap.ts +0 -35
  11. package/client/components/data-entry-form.ts +0 -109
  12. package/client/index.ts +0 -1
  13. package/client/pages/data-archive/data-archive-list-page.ts +0 -277
  14. package/client/pages/data-archive/data-archive-request-popup.ts +0 -177
  15. package/client/pages/data-entry/data-entry-list-page.ts +0 -464
  16. package/client/pages/data-key-set/data-key-item-list.ts +0 -183
  17. package/client/pages/data-key-set/data-key-set-importer.ts +0 -89
  18. package/client/pages/data-key-set/data-key-set-list-page.ts +0 -413
  19. package/client/pages/data-ooc/data-ooc-list-page.ts +0 -549
  20. package/client/pages/data-ooc/data-ooc-page.ts +0 -164
  21. package/client/pages/data-ooc/data-ooc-view.ts +0 -236
  22. package/client/pages/data-ooc/data-oocs-page.ts +0 -200
  23. package/client/pages/data-report/data-report-embed-page.ts +0 -108
  24. package/client/pages/data-report/data-report-list-page.ts +0 -454
  25. package/client/pages/data-report/data-report-samples-page.ts +0 -174
  26. package/client/pages/data-report/jasper-report-oocs-page.ts +0 -110
  27. package/client/pages/data-report/jasper-report-samples-crosstab-page.ts +0 -110
  28. package/client/pages/data-report/jasper-report-samples-page.ts +0 -110
  29. package/client/pages/data-sample/data-sample-list-page.ts +0 -442
  30. package/client/pages/data-sample/data-sample-page.ts +0 -55
  31. package/client/pages/data-sample/data-sample-search-page.ts +0 -424
  32. package/client/pages/data-sample/data-sample-view.ts +0 -292
  33. package/client/pages/data-sample/data-samples-page.ts +0 -249
  34. package/client/pages/data-sensor/data-sensor-list-page.ts +0 -456
  35. package/client/pages/data-set/data-item-list.ts +0 -304
  36. package/client/pages/data-set/data-set-importer.ts +0 -89
  37. package/client/pages/data-set/data-set-list-page.ts +0 -1078
  38. package/client/pages/data-summary/data-summary-list-page.ts +0 -363
  39. package/client/pages/data-summary/data-summary-period-page.ts +0 -439
  40. package/client/pages/data-summary/data-summary-search-page.ts +0 -426
  41. package/client/pages/data-summary/data-summary-view.ts +0 -133
  42. package/client/route.ts +0 -91
  43. package/client/tsconfig.json +0 -13
  44. package/server/activities/activity-data-collect.ts +0 -100
  45. package/server/activities/activity-data-review.ts +0 -82
  46. package/server/activities/activity-ooc-resolve.ts +0 -123
  47. package/server/activities/activity-ooc-review.ts +0 -144
  48. package/server/activities/index.ts +0 -11
  49. package/server/controllers/create-data-sample.ts +0 -426
  50. package/server/controllers/data-use-case.ts +0 -98
  51. package/server/controllers/finalize-data-collection.ts +0 -388
  52. package/server/controllers/index.ts +0 -3
  53. package/server/controllers/issue-data-collection-task.ts +0 -70
  54. package/server/controllers/jasper-report.ts +0 -186
  55. package/server/controllers/query-data-summary-by-period.ts +0 -178
  56. package/server/controllers/shiny-report.ts +0 -54
  57. package/server/engine/index.ts +0 -1
  58. package/server/engine/task/create-data-sample.ts +0 -100
  59. package/server/engine/task/index.ts +0 -2
  60. package/server/engine/task/issue-collect-data.ts +0 -45
  61. package/server/index.ts +0 -8
  62. package/server/routes.ts +0 -188
  63. package/server/service/data-archive/data-archive-mutation.ts +0 -273
  64. package/server/service/data-archive/data-archive-query.ts +0 -58
  65. package/server/service/data-archive/data-archive-type.ts +0 -48
  66. package/server/service/data-archive/data-archive.ts +0 -69
  67. package/server/service/data-archive/index.ts +0 -6
  68. package/server/service/data-key-set/data-key-item-type.ts +0 -31
  69. package/server/service/data-key-set/data-key-set-mutation.ts +0 -201
  70. package/server/service/data-key-set/data-key-set-query.ts +0 -68
  71. package/server/service/data-key-set/data-key-set-type.ts +0 -70
  72. package/server/service/data-key-set/data-key-set.ts +0 -86
  73. package/server/service/data-key-set/index.ts +0 -6
  74. package/server/service/data-ooc/data-ooc-mutation.ts +0 -154
  75. package/server/service/data-ooc/data-ooc-query.ts +0 -106
  76. package/server/service/data-ooc/data-ooc-subscription.ts +0 -48
  77. package/server/service/data-ooc/data-ooc-type.ts +0 -71
  78. package/server/service/data-ooc/data-ooc.ts +0 -259
  79. package/server/service/data-ooc/index.ts +0 -7
  80. package/server/service/data-sample/data-sample-mutation.ts +0 -18
  81. package/server/service/data-sample/data-sample-query.ts +0 -215
  82. package/server/service/data-sample/data-sample-type.ts +0 -47
  83. package/server/service/data-sample/data-sample.ts +0 -193
  84. package/server/service/data-sample/index.ts +0 -6
  85. package/server/service/data-sensor/data-sensor-mutation.ts +0 -116
  86. package/server/service/data-sensor/data-sensor-query.ts +0 -76
  87. package/server/service/data-sensor/data-sensor-type.ts +0 -104
  88. package/server/service/data-sensor/data-sensor.ts +0 -126
  89. package/server/service/data-sensor/index.ts +0 -6
  90. package/server/service/data-set/data-item-type.ts +0 -155
  91. package/server/service/data-set/data-set-mutation.ts +0 -552
  92. package/server/service/data-set/data-set-query.ts +0 -461
  93. package/server/service/data-set/data-set-type.ts +0 -204
  94. package/server/service/data-set/data-set.ts +0 -326
  95. package/server/service/data-set/index.ts +0 -6
  96. package/server/service/data-set-history/data-set-history-query.ts +0 -126
  97. package/server/service/data-set-history/data-set-history-type.ts +0 -12
  98. package/server/service/data-set-history/data-set-history.ts +0 -217
  99. package/server/service/data-set-history/event-subscriber.ts +0 -17
  100. package/server/service/data-set-history/index.ts +0 -7
  101. package/server/service/data-spec/data-spec-manager.ts +0 -21
  102. package/server/service/data-spec/data-spec-query.ts +0 -21
  103. package/server/service/data-spec/data-spec.ts +0 -45
  104. package/server/service/data-spec/index.ts +0 -5
  105. package/server/service/data-summary/data-summary-mutation.ts +0 -45
  106. package/server/service/data-summary/data-summary-query.ts +0 -179
  107. package/server/service/data-summary/data-summary-type.ts +0 -86
  108. package/server/service/data-summary/data-summary.ts +0 -170
  109. package/server/service/data-summary/index.ts +0 -7
  110. package/server/service/index.ts +0 -57
  111. package/server/tsconfig.json +0 -10
  112. package/server/utils/config-resolver.ts +0 -29
  113. 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
- }