@things-factory/dataset 7.0.0-alpha.3 → 7.0.0-alpha.30

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 (165) hide show
  1. package/client/activities/activity-data-collect-edit.ts +1 -7
  2. package/client/activities/activity-data-collect-view.ts +7 -0
  3. package/client/activities/activity-data-review-edit.ts +66 -32
  4. package/client/activities/activity-data-review-view.ts +75 -29
  5. package/client/activities/activity-ooc-resolve-edit.ts +44 -48
  6. package/client/activities/activity-ooc-resolve-view.ts +25 -35
  7. package/client/activities/activity-ooc-review-edit.ts +36 -29
  8. package/client/activities/activity-ooc-review-view.ts +9 -19
  9. package/client/bootstrap.ts +5 -9
  10. package/client/pages/data-entry/data-entry-list-page.ts +8 -23
  11. package/client/pages/data-ooc/data-ooc-list-page.ts +71 -27
  12. package/client/pages/data-ooc/{data-ooc-view-page.ts → data-ooc-page.ts} +45 -1
  13. package/client/pages/data-ooc/data-ooc-view.ts +198 -41
  14. package/client/pages/data-ooc/data-oocs-page.ts +200 -0
  15. package/client/pages/data-sample/data-sample-list-page.ts +53 -31
  16. package/client/pages/data-sample/{data-sample-view-page.ts → data-sample-page.ts} +8 -1
  17. package/client/pages/data-sample/data-sample-search-page.ts +34 -29
  18. package/client/pages/data-sample/data-sample-view.ts +192 -21
  19. package/client/pages/data-sample/data-samples-page.ts +249 -0
  20. package/client/pages/data-sensor/data-sensor-list-page.ts +28 -6
  21. package/client/pages/data-set/data-item-list.ts +2 -2
  22. package/client/pages/data-summary/data-summary-list-page.ts +12 -24
  23. package/client/route.ts +10 -2
  24. package/dist-client/activities/activity-data-collect-edit.js +1 -7
  25. package/dist-client/activities/activity-data-collect-edit.js.map +1 -1
  26. package/dist-client/activities/activity-data-collect-view.js +7 -0
  27. package/dist-client/activities/activity-data-collect-view.js.map +1 -1
  28. package/dist-client/activities/activity-data-review-edit.d.ts +1 -1
  29. package/dist-client/activities/activity-data-review-edit.js +63 -33
  30. package/dist-client/activities/activity-data-review-edit.js.map +1 -1
  31. package/dist-client/activities/activity-data-review-view.d.ts +1 -1
  32. package/dist-client/activities/activity-data-review-view.js +72 -30
  33. package/dist-client/activities/activity-data-review-view.js.map +1 -1
  34. package/dist-client/activities/activity-ooc-resolve-edit.d.ts +1 -1
  35. package/dist-client/activities/activity-ooc-resolve-edit.js +44 -48
  36. package/dist-client/activities/activity-ooc-resolve-edit.js.map +1 -1
  37. package/dist-client/activities/activity-ooc-resolve-view.d.ts +13 -0
  38. package/dist-client/activities/activity-ooc-resolve-view.js +24 -34
  39. package/dist-client/activities/activity-ooc-resolve-view.js.map +1 -1
  40. package/dist-client/activities/activity-ooc-review-edit.js +39 -29
  41. package/dist-client/activities/activity-ooc-review-edit.js.map +1 -1
  42. package/dist-client/activities/activity-ooc-review-view.js +9 -19
  43. package/dist-client/activities/activity-ooc-review-view.js.map +1 -1
  44. package/dist-client/bootstrap.d.ts +4 -4
  45. package/dist-client/bootstrap.js +4 -4
  46. package/dist-client/bootstrap.js.map +1 -1
  47. package/dist-client/pages/data-entry/data-entry-list-page.js +3 -15
  48. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
  49. package/dist-client/pages/data-ooc/data-ooc-list-page.d.ts +6 -0
  50. package/dist-client/pages/data-ooc/data-ooc-list-page.js +67 -24
  51. package/dist-client/pages/data-ooc/data-ooc-list-page.js.map +1 -1
  52. package/dist-client/pages/data-ooc/{data-ooc-view-page.js → data-ooc-page.js} +46 -2
  53. package/dist-client/pages/data-ooc/data-ooc-page.js.map +1 -0
  54. package/dist-client/pages/data-ooc/data-ooc-view.d.ts +11 -4
  55. package/dist-client/pages/data-ooc/data-ooc-view.js +193 -48
  56. package/dist-client/pages/data-ooc/data-ooc-view.js.map +1 -1
  57. package/dist-client/pages/data-ooc/data-oocs-page.d.ts +18 -0
  58. package/dist-client/pages/data-ooc/data-oocs-page.js +200 -0
  59. package/dist-client/pages/data-ooc/data-oocs-page.js.map +1 -0
  60. package/dist-client/pages/data-sample/data-sample-list-page.d.ts +6 -1
  61. package/dist-client/pages/data-sample/data-sample-list-page.js +51 -28
  62. package/dist-client/pages/data-sample/data-sample-list-page.js.map +1 -1
  63. package/dist-client/pages/data-sample/{data-sample-view-page.js → data-sample-page.js} +9 -2
  64. package/dist-client/pages/data-sample/data-sample-page.js.map +1 -0
  65. package/dist-client/pages/data-sample/data-sample-search-page.d.ts +6 -13
  66. package/dist-client/pages/data-sample/data-sample-search-page.js +32 -26
  67. package/dist-client/pages/data-sample/data-sample-search-page.js.map +1 -1
  68. package/dist-client/pages/data-sample/data-sample-view.d.ts +18 -0
  69. package/dist-client/pages/data-sample/data-sample-view.js +186 -19
  70. package/dist-client/pages/data-sample/data-sample-view.js.map +1 -1
  71. package/dist-client/pages/data-sample/data-samples-page.d.ts +21 -0
  72. package/dist-client/pages/data-sample/data-samples-page.js +249 -0
  73. package/dist-client/pages/data-sample/data-samples-page.js.map +1 -0
  74. package/dist-client/pages/data-sensor/data-sensor-list-page.js +28 -6
  75. package/dist-client/pages/data-sensor/data-sensor-list-page.js.map +1 -1
  76. package/dist-client/pages/data-set/data-item-list.js +2 -2
  77. package/dist-client/pages/data-set/data-item-list.js.map +1 -1
  78. package/dist-client/pages/data-summary/data-summary-list-page.js +12 -21
  79. package/dist-client/pages/data-summary/data-summary-list-page.js.map +1 -1
  80. package/dist-client/route.js +8 -2
  81. package/dist-client/route.js.map +1 -1
  82. package/dist-client/tsconfig.tsbuildinfo +1 -1
  83. package/dist-server/activities/activity-data-collect.js.map +1 -1
  84. package/dist-server/activities/activity-data-review.js.map +1 -1
  85. package/dist-server/activities/activity-ooc-review.js +3 -2
  86. package/dist-server/activities/activity-ooc-review.js.map +1 -1
  87. package/dist-server/controllers/create-data-sample.js +28 -30
  88. package/dist-server/controllers/create-data-sample.js.map +1 -1
  89. package/dist-server/controllers/issue-collect-data.js +55 -0
  90. package/dist-server/controllers/issue-collect-data.js.map +1 -0
  91. package/dist-server/engine/index.js +4 -0
  92. package/dist-server/engine/index.js.map +1 -0
  93. package/dist-server/engine/task/create-data-sample.js +81 -0
  94. package/dist-server/engine/task/create-data-sample.js.map +1 -0
  95. package/dist-server/engine/task/index.js +5 -0
  96. package/dist-server/engine/task/index.js.map +1 -0
  97. package/dist-server/engine/task/issue-collect-data.js +40 -0
  98. package/dist-server/engine/task/issue-collect-data.js.map +1 -0
  99. package/dist-server/index.js +1 -0
  100. package/dist-server/index.js.map +1 -1
  101. package/dist-server/routes.js +39 -65
  102. package/dist-server/routes.js.map +1 -1
  103. package/dist-server/service/data-ooc/data-ooc-query.js +32 -0
  104. package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -1
  105. package/dist-server/service/data-ooc/data-ooc.js +44 -37
  106. package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
  107. package/dist-server/service/data-sample/data-sample-query.js +24 -0
  108. package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
  109. package/dist-server/service/data-sample/data-sample.js +30 -31
  110. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  111. package/dist-server/service/data-sensor/data-sensor-query.js +16 -1
  112. package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -1
  113. package/dist-server/service/data-sensor/data-sensor-type.js +8 -0
  114. package/dist-server/service/data-sensor/data-sensor-type.js.map +1 -1
  115. package/dist-server/service/data-sensor/data-sensor.js +15 -1
  116. package/dist-server/service/data-sensor/data-sensor.js.map +1 -1
  117. package/dist-server/service/data-set/data-item-type.js +1 -0
  118. package/dist-server/service/data-set/data-item-type.js.map +1 -1
  119. package/dist-server/service/data-set/data-set-query.js +2 -2
  120. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  121. package/dist-server/service/data-summary/data-summary.js +8 -8
  122. package/dist-server/service/data-summary/data-summary.js.map +1 -1
  123. package/dist-server/tsconfig.tsbuildinfo +1 -1
  124. package/helps/dataset/task/create-data-sample.ja.md +28 -0
  125. package/helps/dataset/task/create-data-sample.ko.md +28 -0
  126. package/helps/dataset/task/create-data-sample.md +28 -0
  127. package/helps/dataset/task/create-data-sample.ms.md +30 -0
  128. package/helps/dataset/task/create-data-sample.zh.md +28 -0
  129. package/helps/dataset/task/issue-collect-data.ja.md +35 -0
  130. package/helps/dataset/task/issue-collect-data.ko.md +32 -0
  131. package/helps/dataset/task/issue-collect-data.md +32 -0
  132. package/helps/dataset/task/issue-collect-data.ms.md +34 -0
  133. package/helps/dataset/task/issue-collect-data.zh.md +32 -0
  134. package/package.json +15 -12
  135. package/server/activities/activity-data-collect.ts +3 -11
  136. package/server/activities/activity-data-review.ts +1 -5
  137. package/server/activities/activity-ooc-review.ts +6 -16
  138. package/server/controllers/create-data-sample.ts +32 -39
  139. package/server/controllers/issue-collect-data.ts +61 -0
  140. package/server/engine/index.ts +1 -0
  141. package/server/engine/task/create-data-sample.ts +93 -0
  142. package/server/engine/task/index.ts +2 -0
  143. package/server/engine/task/issue-collect-data.ts +45 -0
  144. package/server/index.ts +1 -0
  145. package/server/routes.ts +52 -77
  146. package/server/service/data-ooc/data-ooc-query.ts +17 -0
  147. package/server/service/data-ooc/data-ooc.ts +39 -51
  148. package/server/service/data-sample/data-sample-query.ts +17 -17
  149. package/server/service/data-sample/data-sample.ts +29 -52
  150. package/server/service/data-sensor/data-sensor-query.ts +13 -1
  151. package/server/service/data-sensor/data-sensor-type.ts +6 -0
  152. package/server/service/data-sensor/data-sensor.ts +13 -11
  153. package/server/service/data-set/data-item-type.ts +1 -0
  154. package/server/service/data-set/data-set-query.ts +7 -7
  155. package/server/service/data-summary/data-summary.ts +10 -23
  156. package/things-factory.config.js +10 -2
  157. package/translations/en.json +15 -2
  158. package/translations/ja.json +12 -1
  159. package/translations/ko.json +14 -1
  160. package/translations/ms.json +11 -0
  161. package/translations/zh.json +12 -1
  162. package/dist-client/pages/data-ooc/data-ooc-view-page.js.map +0 -1
  163. package/dist-client/pages/data-sample/data-sample-view-page.js.map +0 -1
  164. /package/dist-client/pages/data-ooc/{data-ooc-view-page.d.ts → data-ooc-page.d.ts} +0 -0
  165. /package/dist-client/pages/data-sample/{data-sample-view-page.d.ts → data-sample-page.d.ts} +0 -0
@@ -1,37 +1,50 @@
1
1
  import '@operato/dataset/ox-data-sample-view.js'
2
+ import '@operato/dataset/ox-data-ooc-brief-view.js'
3
+ import '@things-factory/worklist/dist-client/components/activity-thread-timeline.js'
2
4
 
3
5
  import gql from 'graphql-tag'
4
- import { css, html, LitElement } from 'lit'
5
- import { customElement, property, query, state } from 'lit/decorators.js'
6
+ import { css, html, LitElement, nothing } from 'lit'
7
+ import { customElement, property, state } from 'lit/decorators.js'
6
8
 
7
9
  import { client } from '@operato/graphql'
8
10
  import { i18next, localize } from '@operato/i18n'
9
11
  import { ScrollbarStyles } from '@operato/styles'
10
12
  import { DataSample } from '@operato/dataset'
13
+ import { GhostPrint } from '@operato/ghost-print'
11
14
 
12
15
  @customElement('data-sample-view')
13
- class DataSampleView extends localize(i18next)(LitElement) {
16
+ export class DataSampleView extends localize(i18next)(LitElement) {
14
17
  static styles = [
15
18
  ScrollbarStyles,
16
19
  css`
17
20
  :host {
18
- display: flex;
19
- flex-direction: column;
20
-
21
+ position: relative;
22
+ display: block;
23
+ overflow: auto;
21
24
  background-color: #fff;
22
25
  }
23
26
 
24
- div[content] {
25
- flex: 1;
27
+ ox-data-sample-view,
28
+ ox-data-ooc-brief-view {
29
+ padding: var(--padding-wide);
30
+ }
26
31
 
27
- display: flex;
28
- overflow: auto;
32
+ activity-thread-timeline {
33
+ margin: var(--margin-default);
29
34
  }
30
35
 
31
- ox-data-sample-view {
32
- flex: 1;
33
- padding: var(--padding-wide);
34
- overflow: auto;
36
+ mwc-fab {
37
+ position: fixed;
38
+ bottom: 15px;
39
+ right: 16px;
40
+ text-decoration: auto;
41
+ opacity: 0.5;
42
+ }
43
+
44
+ @media print {
45
+ mwc-fab {
46
+ display: none;
47
+ }
35
48
  }
36
49
  `
37
50
  ]
@@ -41,13 +54,57 @@ class DataSampleView extends localize(i18next)(LitElement) {
41
54
  attribute: 'data-sample-id'
42
55
  })
43
56
  dataSampleId?: string
57
+
44
58
  @state() dataSample?: DataSample
45
59
 
60
+ private printHandler = this.handlePrint.bind(this)
61
+
46
62
  render() {
63
+ const dataSample = this.dataSample
64
+
65
+ if (!dataSample) {
66
+ return nothing
67
+ }
68
+
69
+ if (dataSample.dataOoc) {
70
+ var reviewActivityThread = dataSample.dataOoc.reviewActivityInstance?.activityThreads?.[0]
71
+ var resolveActivityThread = dataSample.dataOoc.resolveActivityInstance?.activityThreads?.[0]
72
+ } else {
73
+ var reviewActivityThread = dataSample?.reviewActivityInstance?.activityThreads?.[0]
74
+ }
75
+
47
76
  return html`
48
- <div content>
49
- ${this.dataSample ? html`<ox-data-sample-view .dataSample=${this.dataSample}></ox-data-sample-view>` : html``}
50
- </div>
77
+ ${!dataSample?.dataOoc
78
+ ? html` <ox-data-sample-view .dataSample=${dataSample}></ox-data-sample-view> `
79
+ : html` <ox-data-ooc-brief-view .dataOoc=${dataSample!.dataOoc}></ox-data-ooc-brief-view>`}
80
+ ${reviewActivityThread
81
+ ? html`
82
+ <activity-thread-timeline
83
+ subtitle=${String(i18next.t(dataSample?.dataOoc ? 'label.ooc review timeline' : 'label.datasample review timeline'))}
84
+ .activityThread=${reviewActivityThread}
85
+ short-form
86
+ ></activity-thread-timeline>
87
+ `
88
+ : nothing}
89
+ ${resolveActivityThread
90
+ ? html`
91
+ <activity-thread-timeline
92
+ subtitle=${String(i18next.t('label.ooc resolve timeline'))}
93
+ .activityThread=${resolveActivityThread}
94
+ short-form
95
+ ></activity-thread-timeline>
96
+ `
97
+ : nothing}
98
+
99
+ <mwc-fab
100
+ icon="print"
101
+ title="print"
102
+ @click=${() =>
103
+ GhostPrint.print({
104
+ src: `./data-sample/${this.dataSampleId}`
105
+ })}
106
+ >print</mwc-fab
107
+ >
51
108
  `
52
109
  }
53
110
 
@@ -76,6 +133,12 @@ class DataSampleView extends localize(i18next)(LitElement) {
76
133
  data
77
134
  ooc
78
135
  oos
136
+ updatedAt
137
+ collectedAt
138
+ updater {
139
+ id
140
+ name
141
+ }
79
142
  dataSet {
80
143
  id
81
144
  name
@@ -98,12 +161,100 @@ class DataSampleView extends localize(i18next)(LitElement) {
98
161
  judgment
99
162
  workDate
100
163
  workShift
101
- updater {
102
- id
164
+ reviewActivityInstance {
165
+ ...ActivityInstanceFragment
166
+ }
167
+ dataOoc {
103
168
  name
169
+ description
170
+ useCase
171
+ dataSet {
172
+ id
173
+ name
174
+ }
175
+ key01
176
+ key02
177
+ key03
178
+ key04
179
+ key05
180
+ partitionKeys
181
+ dataItems {
182
+ name
183
+ description
184
+ active
185
+ hidden
186
+ tag
187
+ group
188
+ type
189
+ unit
190
+ options
191
+ quota
192
+ spec
193
+ }
194
+ data
195
+ rawData
196
+ judgment
197
+ ooc
198
+ oos
199
+ state
200
+ history
201
+ workDate
202
+ workShift
203
+ correctiveInstruction
204
+ correctiveAction
205
+ reviewedAt
206
+ reviewer {
207
+ id
208
+ name
209
+ }
210
+ correctedAt
211
+ corrector {
212
+ id
213
+ name
214
+ }
215
+ updater {
216
+ id
217
+ name
218
+ }
219
+ updatedAt
220
+ collectedAt
221
+
222
+ reviewActivityInstance {
223
+ ...ActivityInstanceFragment
224
+ }
225
+ resolveActivityInstance {
226
+ ...ActivityInstanceFragment
227
+ }
228
+ }
229
+ }
230
+ }
231
+
232
+ fragment ActivityInstanceFragment on ActivityInstance {
233
+ activityThreads {
234
+ assignee {
235
+ name
236
+ }
237
+ output
238
+ activityApprovals {
239
+ judgment
240
+ approver {
241
+ name
242
+ }
243
+ comment
244
+ createdAt
245
+ updatedAt
246
+ terminatedAt
247
+ }
248
+ activityThreadHistories {
249
+ transaction
250
+ reason
251
+ updater {
252
+ name
253
+ }
254
+ updatedAt
255
+ state
256
+ output
104
257
  }
105
- updatedAt
106
- collectedAt
107
258
  }
108
259
  }
109
260
  `,
@@ -114,4 +265,24 @@ class DataSampleView extends localize(i18next)(LitElement) {
114
265
 
115
266
  this.dataSample = response.data.dataSample
116
267
  }
268
+
269
+ handlePrint(event) {
270
+ if ((event.ctrlKey || event.metaKey) && event.key === 'p') {
271
+ event.preventDefault()
272
+
273
+ GhostPrint.print({
274
+ src: `./data-sample/${this.dataSampleId}`
275
+ })
276
+ }
277
+ }
278
+
279
+ connectedCallback(): void {
280
+ super.connectedCallback()
281
+ window.addEventListener('keydown', this.printHandler)
282
+ }
283
+
284
+ disconnectedCallback(): void {
285
+ super.disconnectedCallback()
286
+ window.removeEventListener('keydown', this.printHandler)
287
+ }
117
288
  }
@@ -0,0 +1,249 @@
1
+ import '@operato/dataset/ox-data-sample-view.js'
2
+ import '@operato/dataset/ox-data-ooc-brief-view.js'
3
+ import '@things-factory/worklist/dist-client/components/activity-thread-timeline.js'
4
+
5
+ import gql from 'graphql-tag'
6
+ import { PropertyValues, html, css, nothing } from 'lit'
7
+ import { customElement, state } from 'lit/decorators.js'
8
+ import { PageView } from '@operato/shell'
9
+ import { i18next, localize } from '@operato/i18n'
10
+ import { client } from '@operato/graphql'
11
+
12
+ /**
13
+ * 이 페이지는 여러개의 Data Sample을 한번에 프린트하기 위한 용도로 사용되는 페이지이다.
14
+ */
15
+ @customElement('data-samples-page')
16
+ export class DataSamplesPage extends localize(i18next)(PageView) {
17
+ static styles = [
18
+ css`
19
+ :host {
20
+ display: block;
21
+ overflow: auto;
22
+ }
23
+
24
+ .end {
25
+ page-break-after: always;
26
+ break-after: always;
27
+ }
28
+ `
29
+ ]
30
+
31
+ @state() dataSamples?: any[]
32
+
33
+ get context() {
34
+ return {
35
+ title: i18next.t('title.data-sample view')
36
+ }
37
+ }
38
+
39
+ render() {
40
+ return this.dataSamples?.map(dataSample => {
41
+ if (dataSample?.dataOoc) {
42
+ var reviewActivityThread = dataSample.dataOoc.reviewActivityInstance?.activityThreads?.[0]
43
+ var resolveActivityThread = dataSample.dataOoc.resolveActivityInstance?.activityThreads?.[0]
44
+ } else {
45
+ var reviewActivityThread = dataSample?.reviewActivityInstance?.activityThreads?.[0]
46
+ }
47
+
48
+ return html`
49
+ ${!dataSample.dataOoc
50
+ ? html` <ox-data-sample-view .dataSample=${dataSample}></ox-data-sample-view> `
51
+ : html` <ox-data-ooc-brief-view .dataOoc=${dataSample.dataOoc}></ox-data-ooc-brief-view>`}
52
+ ${reviewActivityThread
53
+ ? html`
54
+ <activity-thread-timeline
55
+ subtitle=${String(i18next.t(dataSample?.dataOoc ? 'label.ooc review timeline' : 'label.datasample review timeline'))}
56
+ .activityThread=${reviewActivityThread}
57
+ short-form
58
+ ></activity-thread-timeline>
59
+ `
60
+ : nothing}
61
+ ${resolveActivityThread
62
+ ? html`
63
+ <activity-thread-timeline
64
+ subtitle=${String(i18next.t('label.ooc resolve timeline'))}
65
+ .activityThread=${resolveActivityThread}
66
+ short-form
67
+ ></activity-thread-timeline>
68
+ `
69
+ : nothing}
70
+ <div class="end"></div>
71
+ `
72
+ })
73
+ }
74
+
75
+ updated(changes: PropertyValues<this>) {}
76
+
77
+ pageUpdated(changes: any, lifecycle: any, before: any) {
78
+ if (this.active) {
79
+ /*
80
+ * this page is activated
81
+ */
82
+ const { ids = '' } = lifecycle.params
83
+
84
+ this.fetchSamples(ids.split('|').map(id => id.trim()))
85
+ } else {
86
+ /* this page is deactivated */
87
+ }
88
+ }
89
+
90
+ async fetchSamples(ids: string[]) {
91
+ const filters = [
92
+ {
93
+ name: 'id',
94
+ operator: 'in',
95
+ value: ids
96
+ }
97
+ ]
98
+
99
+ const response = await client.query({
100
+ query: gql`
101
+ query ($filters: [Filter!]) {
102
+ dataSamples(filters: $filters) {
103
+ items {
104
+ id
105
+ name
106
+ description
107
+ useCase
108
+ key01
109
+ key02
110
+ key03
111
+ key04
112
+ key05
113
+ data
114
+ ooc
115
+ oos
116
+ updatedAt
117
+ collectedAt
118
+ updater {
119
+ id
120
+ name
121
+ }
122
+ dataSet {
123
+ id
124
+ name
125
+ description
126
+ }
127
+ dataItems {
128
+ name
129
+ description
130
+ active
131
+ hidden
132
+ tag
133
+ group
134
+ type
135
+ unit
136
+ options
137
+ quota
138
+ spec
139
+ stat
140
+ }
141
+ judgment
142
+ workDate
143
+ workShift
144
+ reviewActivityInstance {
145
+ ...ActivityInstanceFragment
146
+ }
147
+ dataOoc {
148
+ name
149
+ description
150
+ useCase
151
+ dataSet {
152
+ id
153
+ name
154
+ }
155
+ key01
156
+ key02
157
+ key03
158
+ key04
159
+ key05
160
+ partitionKeys
161
+ dataItems {
162
+ name
163
+ description
164
+ active
165
+ hidden
166
+ tag
167
+ group
168
+ type
169
+ unit
170
+ options
171
+ quota
172
+ spec
173
+ stat
174
+ }
175
+ data
176
+ rawData
177
+ judgment
178
+ ooc
179
+ oos
180
+ state
181
+ history
182
+ workDate
183
+ workShift
184
+ correctiveInstruction
185
+ correctiveAction
186
+ reviewedAt
187
+ reviewer {
188
+ id
189
+ name
190
+ }
191
+ correctedAt
192
+ corrector {
193
+ id
194
+ name
195
+ }
196
+ updater {
197
+ id
198
+ name
199
+ }
200
+ updatedAt
201
+ collectedAt
202
+ reviewActivityInstance {
203
+ ...ActivityInstanceFragment
204
+ }
205
+ resolveActivityInstance {
206
+ ...ActivityInstanceFragment
207
+ }
208
+ }
209
+ }
210
+ }
211
+ }
212
+
213
+ fragment ActivityInstanceFragment on ActivityInstance {
214
+ activityThreads {
215
+ assignee {
216
+ name
217
+ }
218
+ output
219
+ activityApprovals {
220
+ judgment
221
+ approver {
222
+ name
223
+ }
224
+ comment
225
+ createdAt
226
+ updatedAt
227
+ terminatedAt
228
+ }
229
+ activityThreadHistories {
230
+ transaction
231
+ reason
232
+ updater {
233
+ name
234
+ }
235
+ updatedAt
236
+ state
237
+ output
238
+ }
239
+ }
240
+ }
241
+ `,
242
+ variables: {
243
+ filters
244
+ }
245
+ })
246
+
247
+ this.dataSamples = response.data.dataSamples.items
248
+ }
249
+ }
@@ -90,12 +90,7 @@ export class DataSensorListPage extends connect(store)(localize(i18next)(PageVie
90
90
  const mode = this.mode || (isMobileDevice() ? 'LIST' : 'GRID')
91
91
 
92
92
  return html`
93
- <ox-grist
94
- .mode=${mode}
95
- .config=${this.gristConfig}
96
- .fetchHandler=${this.fetchHandler.bind(this)}
97
- ?url-params-sensitive=${this.active}
98
- >
93
+ <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)} ?url-params-sensitive=${this.active}>
99
94
  <div slot="headroom" class="header">
100
95
  <div class="title">
101
96
  <mwc-icon>summarize</mwc-icon>
@@ -191,6 +186,28 @@ export class DataSensorListPage extends connect(store)(localize(i18next)(PageVie
191
186
  sortable: true,
192
187
  width: 120
193
188
  },
189
+ {
190
+ type: 'resource-object',
191
+ name: 'decoder',
192
+ header: {
193
+ renderer: i18next.t('field.decoder-scenario')
194
+ },
195
+ record: {
196
+ editable: true,
197
+ options: {
198
+ title: i18next.t('title.lookup scenario'),
199
+ queryName: 'scenarios',
200
+ columns: [
201
+ { name: 'id', hidden: true },
202
+ { name: 'name', header: i18next.t('field.name'), filter: 'search' },
203
+ { name: 'description', header: i18next.t('field.description'), filter: 'search' }
204
+ ],
205
+ list: { fields: ['name', 'description'] }
206
+ }
207
+ },
208
+ filter: false,
209
+ width: 120
210
+ },
194
211
  {
195
212
  type: 'object',
196
213
  name: 'dataSet',
@@ -315,6 +332,11 @@ export class DataSensorListPage extends connect(store)(localize(i18next)(PageVie
315
332
  name
316
333
  description
317
334
  }
335
+ decoder {
336
+ id
337
+ name
338
+ description
339
+ }
318
340
  refBy
319
341
  brand
320
342
  model
@@ -153,7 +153,7 @@ class DataItemList extends localize(i18next)(LitElement) {
153
153
  name: 'type',
154
154
  header: i18next.t('field.type'),
155
155
  record: {
156
- options: ['', 'number', 'text', 'select', 'boolean', 'date', 'datetime', 'file'],
156
+ options: ['', 'number', 'text', 'select', 'radio', 'boolean', 'date', 'datetime', 'file'],
157
157
  editable: true
158
158
  },
159
159
  width: 120
@@ -170,7 +170,7 @@ class DataItemList extends localize(i18next)(LitElement) {
170
170
  name: record.type,
171
171
  help: '',
172
172
  spec:
173
- record.type === 'select'
173
+ record.type === 'select' || record.type === 'radio'
174
174
  ? [
175
175
  {
176
176
  type: 'options' /* property-editor type */,
@@ -67,12 +67,7 @@ export class DataSummaryListPage extends connect(store)(localize(i18next)(PageVi
67
67
  const mode = this.mode || (isMobileDevice() ? 'LIST' : 'GRID')
68
68
 
69
69
  return html`
70
- <ox-grist
71
- .mode=${mode}
72
- .config=${this.gristConfig}
73
- .fetchHandler=${this.fetchHandler.bind(this)}
74
- ?url-params-sensitive=${false /* this.active */}
75
- >
70
+ <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)} ?url-params-sensitive=${false /* this.active */}>
76
71
  <div slot="headroom" class="header">
77
72
  <div class="title">
78
73
  <mwc-icon>summarize</mwc-icon>
@@ -103,21 +98,7 @@ export class DataSummaryListPage extends connect(store)(localize(i18next)(PageVi
103
98
  gutterName: 'button',
104
99
  fixed: true,
105
100
  icon: 'assignment',
106
- title: i18next.t('title.open data summary view'),
107
- handlers: {
108
- click: (columns, data, column, record, rowIndex) => {
109
- openPopup(
110
- html`
111
- <data-summary-view data-summary-id=${record.id} style="background-color: white;"></data-summary-view>
112
- `,
113
- {
114
- backdrop: true,
115
- size: 'large',
116
- title: i18next.t('title.data-summary view')
117
- }
118
- )
119
- }
120
- }
101
+ title: i18next.t('title.open data summary view')
121
102
  },
122
103
  {
123
104
  type: 'string',
@@ -257,6 +238,15 @@ export class DataSummaryListPage extends connect(store)(localize(i18next)(PageVi
257
238
  return {
258
239
  emphasized
259
240
  }
241
+ },
242
+ handlers: {
243
+ click: (columns, data, column, record, rowIndex) => {
244
+ openPopup(html` <data-summary-view data-summary-id=${record.id} style="background-color: white;"></data-summary-view> `, {
245
+ backdrop: true,
246
+ size: 'large',
247
+ title: i18next.t('title.data-summary view')
248
+ })
249
+ }
260
250
  }
261
251
  },
262
252
  sorters: [
@@ -347,9 +337,7 @@ export class DataSummaryListPage extends connect(store)(localize(i18next)(PageVi
347
337
  .filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
348
338
  .reduce((record, column) => {
349
339
  const key = column.imex === true ? column.name : column.imex.key
350
- record[key] = key
351
- .split('.')
352
- .reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
340
+ record[key] = key.split('.').reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
353
341
  return record
354
342
  }, {})
355
343
  }
package/client/route.ts CHANGED
@@ -9,7 +9,11 @@ export default function route(page) {
9
9
  return page
10
10
 
11
11
  case 'data-sample':
12
- import('./pages/data-sample/data-sample-view-page.js')
12
+ import('./pages/data-sample/data-sample-page.js')
13
+ return page
14
+
15
+ case 'data-samples':
16
+ import('./pages/data-sample/data-samples-page.js')
13
17
  return page
14
18
 
15
19
  case 'data-sample-list':
@@ -37,7 +41,11 @@ export default function route(page) {
37
41
  return page
38
42
 
39
43
  case 'data-ooc':
40
- import('./pages/data-ooc/data-ooc-view-page.js')
44
+ import('./pages/data-ooc/data-ooc-page.js')
45
+ return page
46
+
47
+ case 'data-oocs':
48
+ import('./pages/data-ooc/data-oocs-page.js')
41
49
  return page
42
50
 
43
51
  case 'data-ooc-list':
@@ -9,13 +9,7 @@ import { ScrollbarStyles } from '@operato/styles';
9
9
  import { OxDataEntryForm } from '@operato/dataset/ox-data-entry-form.js';
10
10
  let DataCollectActivityEdit = class DataCollectActivityEdit extends localize(i18next)(LitElement) {
11
11
  render() {
12
- return html `
13
- <ox-data-entry-form
14
- .dataSet=${this.dataSet}
15
- .value=${this.output}
16
- @change=${this._updateDataItems}
17
- ></ox-data-entry-form>
18
- `;
12
+ return html ` <ox-data-entry-form .dataSet=${this.dataSet} .value=${this.output} @change=${this._updateDataItems}></ox-data-entry-form> `;
19
13
  }
20
14
  async _updateDataItems() {
21
15
  this.output = this.entryForm.value;