@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,454 +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 '@operato/board/ox-board-viewer.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 { getRenderer, DataGrist, FetchOption } from '@operato/data-grist'
12
- import { OxDataUseCase } from '@operato/dataset'
13
- import { client } from '@operato/graphql'
14
- import { i18next, localize } from '@operato/i18n'
15
- import { openPopup } from '@operato/layout'
16
- import { navigate, PageView, store } from '@operato/shell'
17
- import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
18
- import { encodeUrlParams } from '@operato/utils'
19
-
20
- import { provider } from '@things-factory/board-ui/dist-client'
21
-
22
- const USECASE_OPTIONS = () => {
23
- return ['', ...OxDataUseCase.getUseCaseNames()].map(name => {
24
- return {
25
- display: name,
26
- value: name
27
- }
28
- })
29
- }
30
-
31
- const showMonitorView = (columns, data, column, record, rowIndex) => {
32
- const { id, name, monitorType, monitorView } = record
33
- const title = `${name} - ${i18next.t('title.data-monitor-view')}`
34
-
35
- switch (monitorType) {
36
- case 'generated':
37
- openPopup(html` <div style="background-color: white;">Under construction</div> `, {
38
- backdrop: true,
39
- size: 'large',
40
- title
41
- })
42
- break
43
-
44
- case 'board':
45
- const board = {
46
- id: monitorView
47
- }
48
- openPopup(
49
- html`
50
- <ox-board-viewer
51
- style="background-color: white;"
52
- .board=${board}
53
- .provider=${provider}
54
- hide-fullscreen
55
- hide-navigation
56
- ></ox-board-viewer>
57
- `,
58
- {
59
- closable: true,
60
- backdrop: true,
61
- size: 'large',
62
- title
63
- }
64
- )
65
-
66
- // navigate(`board-viewer/${monitorView}?interactive=true&title=${title}`)
67
- break
68
-
69
- case 'custom-element':
70
- break
71
-
72
- case 'page':
73
- navigate(monitorView)
74
- break
75
-
76
- case 'external':
77
- window.open(monitorView, '_blank')
78
- break
79
- }
80
- }
81
-
82
- const showReportView = (columns, data, column, record, rowIndex) => {
83
- const { id: datasetId, dataKeySet, name, reportType, reportView, reportTemplate } = record
84
- const { id: dataKeySetId } = dataKeySet || { id: '' }
85
- const title = `${name} - ${i18next.t('title.data-report-view')}`
86
-
87
- switch (reportType) {
88
- case 'generated':
89
- openPopup(html` <div style="background-color: white;">Under construction</div> `, {
90
- backdrop: true,
91
- size: 'large',
92
- title
93
- })
94
- break
95
-
96
- case 'embed':
97
- break
98
-
99
- case 'custom-element':
100
- break
101
-
102
- case 'page':
103
- break
104
-
105
- case 'external':
106
- window.open(reportView, '_blank')
107
- break
108
-
109
- case 'jasper':
110
- case 'shiny':
111
- const encodedUrlParams = encodeUrlParams({ datasetId, dataKeySetId, reportType, reportView, reportTemplate })
112
- navigate(`/data-report-samples/?${encodedUrlParams}`)
113
- break
114
-
115
- default:
116
- break
117
- }
118
- }
119
-
120
- @customElement('data-report-list-page')
121
- export class DataReportListPage extends connect(store)(localize(i18next)(PageView)) {
122
- static styles = [
123
- ScrollbarStyles,
124
- CommonHeaderStyles,
125
- css`
126
- :host {
127
- display: flex;
128
-
129
- width: 100%;
130
-
131
- --grid-record-emphasized-background-color: #8b0000;
132
- --grid-record-emphasized-color: #ff6b6b;
133
- }
134
-
135
- ox-grist {
136
- overflow-y: auto;
137
- flex: 1;
138
- }
139
-
140
- .header {
141
- grid-template-areas: 'filters actions';
142
- }
143
- `
144
- ]
145
-
146
- @state() gristConfig: any
147
- @state() mode: 'CARD' | 'GRID' | 'LIST' = 'CARD'
148
-
149
- @query('ox-grist') private grist!: DataGrist
150
-
151
- get context() {
152
- return {
153
- title: i18next.t('title.data-report list'),
154
- help: 'dataset/data-report-list',
155
- search: {
156
- handler: (search: string) => {
157
- this.grist.searchText = search
158
- },
159
- value: this.grist?.searchText || ''
160
- },
161
- filter: {
162
- handler: () => {
163
- this.grist.toggleHeadroom()
164
- }
165
- },
166
- toolbar: false
167
- }
168
- }
169
-
170
- render() {
171
- const mode = 'CARD'
172
-
173
- return html`
174
- <ox-grist
175
- .mode=${mode}
176
- .config=${this.gristConfig}
177
- .fetchHandler=${this.fetchHandler.bind(this)}
178
- ?url-params-sensitive=${this.active}
179
- >
180
- <div slot="headroom" class="header">
181
- <div class="filters">
182
- <ox-filters-form class="filter" autofocus without-search></ox-filters-form>
183
- </div>
184
-
185
- <ox-context-page-toolbar class="actions" .context=${this.context}></ox-context-page-toolbar>
186
- </div>
187
- </ox-grist>
188
- `
189
- }
190
-
191
- async pageInitialized(lifecycle) {
192
- this.gristConfig = {
193
- list: {
194
- thumbnail: 'monitorView',
195
- fields: ['name', 'description'],
196
- details: ['schedule', 'type', 'useCase', 'latestCollectedAt', 'prevSchedule', 'nextSchedule']
197
- },
198
- columns: [
199
- {
200
- type: 'gutter',
201
- gutterName: 'button',
202
- icon: 'newspaper',
203
- iconOnly: false,
204
- title: i18next.t('button.view-report'),
205
- width: 100,
206
- handlers: {
207
- click: showReportView
208
- }
209
- },
210
- {
211
- type: 'gutter',
212
- gutterName: 'button',
213
- icon: 'analytics',
214
- iconOnly: false,
215
- title: i18next.t('button.view-monitor'),
216
- width: 110,
217
- handlers: {
218
- click: showMonitorView
219
- }
220
- },
221
- {
222
- type: 'string',
223
- name: 'name',
224
- header: i18next.t('field.name'),
225
- record: {
226
- editable: false
227
- },
228
- filter: 'search',
229
- sortable: true,
230
- width: 150
231
- },
232
- {
233
- type: 'string',
234
- name: 'description',
235
- header: i18next.t('field.description'),
236
- record: {
237
- editable: false
238
- },
239
- filter: 'search',
240
- width: 200
241
- },
242
- {
243
- type: 'select',
244
- name: 'type',
245
- label: true,
246
- header: i18next.t('field.type'),
247
- record: {
248
- editable: false,
249
- options: [
250
- {},
251
- {
252
- display: i18next.t('text.manually collected'),
253
- value: 'manual'
254
- },
255
- {
256
- display: i18next.t('text.automatically collected'),
257
- value: 'automatic'
258
- }
259
- ]
260
- },
261
- sortable: true,
262
- filter: true,
263
- width: 60
264
- },
265
- {
266
- type: 'select',
267
- name: 'useCase',
268
- label: true,
269
- header: i18next.t('field.use-case'),
270
- record: {
271
- editable: false,
272
- options: USECASE_OPTIONS
273
- },
274
- sortable: true,
275
- filter: {
276
- operator: 'eq',
277
- options: USECASE_OPTIONS /* in case select options type is a function, filter should have its own options */
278
- },
279
- width: 80
280
- },
281
- {
282
- type: 'crontab',
283
- name: 'schedule',
284
- label: true,
285
- header: i18next.t('field.schedule'),
286
- record: {
287
- editable: false
288
- },
289
- width: 80
290
- },
291
- {
292
- type: 'resource-object',
293
- name: 'entryRole',
294
- header: i18next.t('field.entry-role'),
295
- record: {
296
- editable: false
297
- },
298
- width: 120
299
- },
300
- {
301
- type: 'resource-object',
302
- name: 'supervisoryRole',
303
- header: i18next.t('field.supervisory-role'),
304
- record: {
305
- editable: false
306
- },
307
- width: 120
308
- },
309
- {
310
- type: 'datetime',
311
- name: 'latestCollectedAt',
312
- label: true,
313
- header: i18next.t('field.latest-collected-at'),
314
- record: {
315
- editable: false
316
- },
317
- width: 180
318
- },
319
- {
320
- type: 'datetime',
321
- name: 'prevSchedule',
322
- label: true,
323
- header: i18next.t('field.prev-schedule'),
324
- record: {
325
- editable: false
326
- },
327
- width: 180
328
- },
329
- {
330
- type: 'datetime',
331
- name: 'nextSchedule',
332
- label: true,
333
- header: i18next.t('field.next-schedule'),
334
- record: {
335
- editable: false
336
- },
337
- width: 180
338
- },
339
- {
340
- type: 'string',
341
- name: 'monitorView',
342
- hidden: true,
343
- record: {
344
- editable: false,
345
- renderer: function (value, column, record, rowIndex, field) {
346
- const type = record.monitorType !== 'board' ? 'string' : 'image'
347
-
348
- let renderedValue
349
-
350
- if (record.monitorType === 'board' && record.entryBoard?.thumbnail) {
351
- renderedValue = record.entryBoard.thumbnail
352
- } else {
353
- renderedValue = html`<md-icon style="--md-icon-size: 64px;">newsmode</md-icon>`
354
- }
355
-
356
- return getRenderer(type)(renderedValue, column, record, rowIndex, field)
357
- }
358
- }
359
- }
360
- ],
361
- rows: {
362
- appendable: false,
363
- selectable: {
364
- multiple: false
365
- },
366
- handlers: {
367
- click: showReportView
368
- },
369
- classifier: function (record, rowIndex) {}
370
- },
371
- sorters: [
372
- {
373
- name: 'name'
374
- }
375
- ]
376
- }
377
- }
378
-
379
- async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) {
380
- const response = await client.query({
381
- query: gql`
382
- query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
383
- responses: dataSetsForReport(filters: $filters, pagination: $pagination, sortings: $sortings) {
384
- items {
385
- id
386
- dataKeySet {
387
- id
388
- name
389
- }
390
- name
391
- description
392
- partitionKeys
393
- active
394
- type
395
- useCase
396
- schedule
397
- timezone
398
- entryRole {
399
- id
400
- name
401
- }
402
- supervisoryRole {
403
- id
404
- name
405
- }
406
- monitorType
407
- monitorView
408
- monitorBoard {
409
- thumbnail
410
- }
411
- reportType
412
- reportView
413
- reportTemplate
414
- updater {
415
- id
416
- name
417
- }
418
- updatedAt
419
- dataItems {
420
- name
421
- description
422
- active
423
- hidden
424
- tag
425
- group
426
- type
427
- unit
428
- options
429
- quota
430
- spec
431
- stat
432
- }
433
- latestCollectedAt
434
- nextSchedule
435
- prevSchedule
436
- nextSummarySchedule
437
- }
438
- total
439
- }
440
- }
441
- `,
442
- variables: {
443
- filters,
444
- pagination: { page, limit },
445
- sortings
446
- }
447
- })
448
-
449
- return {
450
- total: response.data.responses.total || 0,
451
- records: response.data.responses.items || []
452
- }
453
- }
454
- }
@@ -1,174 +0,0 @@
1
- /**
2
- * data sample report page from 'data-key-set-list-page'
3
- * dateKeySetId is required
4
- */
5
- import '@operato/data-grist'
6
-
7
- import gql from 'graphql-tag'
8
- import { css, html } from 'lit'
9
- import { customElement, property, query, state } from 'lit/decorators.js'
10
- import { connect } from 'pwa-helpers/connect-mixin'
11
- import moment from '@operato/moment-timezone-es'
12
-
13
- import { client } from '@operato/graphql'
14
- import { i18next, localize } from '@operato/i18n'
15
- import { PageView, store } from '@operato/shell'
16
- import { ScrollbarStyles } from '@operato/styles'
17
- import { encodeUrlParams } from '@operato/utils'
18
- import { FetchOption } from '@operato/data-grist'
19
-
20
- @customElement('data-report-samples-page')
21
- export class DataReportSamplesPage extends connect(store)(localize(i18next)(PageView)) {
22
- static styles = [
23
- ScrollbarStyles,
24
- css`
25
- :host {
26
- display: flex;
27
- flex-direction: column;
28
- padding: 0;
29
- }
30
-
31
- #container {
32
- flex: 1;
33
- padding: 0;
34
- margin: 0;
35
- border: 0;
36
- }
37
- `
38
- ]
39
-
40
- @state() dataKeySetId?: string
41
- @state() dataKeySet: any
42
- @query('iframe') container!: HTMLIFrameElement
43
-
44
- get context() {
45
- const yesterday = moment().subtract(1, 'day').format('YYYY-MM-DD')
46
- const today = moment().format('YYYY-MM-DD')
47
-
48
- const filters = [
49
- {
50
- name: 'workDateRange',
51
- type: 'date',
52
- label: i18next.t('field.work-date'),
53
- operator: 'between',
54
- value: [yesterday, today]
55
- },
56
- ...this.getDataKeyFilters()
57
- ]
58
-
59
- return {
60
- title: i18next.t('title.data-report samples'),
61
- help: 'dataset/data-report-samples',
62
- filters
63
- }
64
- }
65
-
66
- getDataKeyFilters() {
67
- return (
68
- this.dataKeySet?.dataKeyItems.map((item, index) => {
69
- return {
70
- type: 'string',
71
- name: `key_0${index + 1}`,
72
- label: i18next.t(item.tKey),
73
- operator: 'i_like',
74
- width: 120
75
- }
76
- }) || []
77
- )
78
- }
79
-
80
- render() {
81
- // clear if pre-loaded
82
- this.container.src = ''
83
-
84
- return html`
85
- <ox-filters-form-base
86
- .filters=${this.context.filters}
87
- @filters-change=${e => {
88
- console.log('filters changed', e.detail)
89
- this.renderTemplate(e.detail.filters)
90
- }}
91
- ?url-params-sensitive=${this.active}
92
- ></ox-filters-form-base>
93
-
94
- <iframe></iframe>
95
- `
96
- }
97
-
98
- renderTemplate(filters) {
99
- const params = filters.reduce((acc, curr) => ((acc[curr.name] = curr.value), acc), {})
100
- Object.assign(params, this.lifecycle.params)
101
-
102
- const filterNames = this.getDataKeyFilters().map(x => x.name)
103
- const dataKeyFilters = filters.filter(x => filterNames.includes(x.name))
104
- const { workDateRange } = params
105
-
106
- /** ignoring date conditions */
107
- if (!workDateRange[0] || !workDateRange[1] || workDateRange[0] > workDateRange[1]) {
108
- return
109
- }
110
-
111
- /** urlencoded params including test values */
112
- const urlParams = {
113
- reportType: params.reportType,
114
- reportView: params.reportView,
115
- reportTemplate: params.reportTemplate,
116
- table: 'samples',
117
- datasetId: params.datasetId,
118
- dataKeySetId: params.dataKeySetId,
119
- startDate: workDateRange[0],
120
- endDate: workDateRange[1],
121
- dataKeySetItems: JSON.stringify(this.dataKeySet?.dataKeyItems || []),
122
- dataKeyFilters: JSON.stringify(dataKeyFilters)
123
- }
124
-
125
- const encodedUrlParams = encodeUrlParams(urlParams)
126
-
127
- const reportUrl = `/data-report/${urlParams.reportType}/`
128
- this.container.src = `${reportUrl}?${encodedUrlParams}`
129
- }
130
-
131
- pageUpdated(changes, lifecycle) {
132
- if (this.active) {
133
- const { dataKeySetId } = lifecycle.params
134
- this.dataKeySetId = dataKeySetId
135
- return
136
- }
137
- }
138
-
139
- async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) {}
140
-
141
- async updated(changes) {
142
- if (changes.has('dataKeySetId')) {
143
- if (!this.dataKeySetId) {
144
- this.dataKeySet = null
145
- return
146
- }
147
-
148
- const response = await client.query({
149
- query: gql`
150
- query ($id: String!) {
151
- dataKeySet(id: $id) {
152
- id
153
- name
154
- description
155
- reportType
156
- reportView
157
- dataKeyItems {
158
- name
159
- description
160
- dataKey
161
- tKey
162
- }
163
- }
164
- }
165
- `,
166
- variables: {
167
- id: this.dataKeySetId
168
- }
169
- })
170
-
171
- this.dataKeySet = response.data.dataKeySet
172
- }
173
- }
174
- }