@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,259 +0,0 @@
1
- import { Field, ID, ObjectType, registerEnumType } from 'type-graphql'
2
- import {
3
- Column,
4
- CreateDateColumn,
5
- Entity,
6
- Index,
7
- JoinColumn,
8
- ManyToOne,
9
- OneToOne,
10
- PrimaryGeneratedColumn,
11
- RelationId,
12
- UpdateDateColumn
13
- } from 'typeorm'
14
-
15
- import { User } from '@things-factory/auth-base'
16
- import { config } from '@things-factory/env'
17
- import { Domain, ScalarObject } from '@things-factory/shell'
18
- import { ActivityInstance } from '@things-factory/worklist'
19
-
20
- import { DataItem } from '../data-set/data-item-type'
21
- import { DataSet } from '../data-set/data-set'
22
- import { DataSample } from '../data-sample/data-sample'
23
-
24
- const ORMCONFIG = config.get('ormconfig', {})
25
- const DATABASE_TYPE = ORMCONFIG.type
26
-
27
- export enum DataOocStatus {
28
- ISSUED = 'ISSUED',
29
- REVIEWED = 'REVIEWED',
30
- CORRECTED = 'CORRECTED'
31
- }
32
-
33
- registerEnumType(DataOocStatus, {
34
- name: 'DataOocStatus',
35
- description: 'Out of control data corrective action process progress status'
36
- })
37
-
38
- @Entity()
39
- @Index('ix_data_ooc_0', (dataOoc: DataOoc) => [dataOoc.domain, dataOoc.dataSet, dataOoc.collectedAt], { unique: false })
40
- @ObjectType({ description: 'Entity for Out of control data' })
41
- export class DataOoc {
42
- @PrimaryGeneratedColumn('uuid')
43
- @Field(type => ID)
44
- readonly id: string
45
-
46
- @ManyToOne(type => Domain)
47
- @Field(type => Domain)
48
- domain?: Domain
49
-
50
- @RelationId((dataOoc: DataOoc) => dataOoc.domain)
51
- domainId?: string
52
-
53
- @Column()
54
- @Field({ nullable: true })
55
- name?: string
56
-
57
- @Column({ nullable: true })
58
- @Field({ nullable: true })
59
- description?: string
60
-
61
- @ManyToOne(type => DataSet)
62
- @Field(type => DataSet, { nullable: true })
63
- dataSet?: DataSet
64
-
65
- @RelationId((dataOoc: DataOoc) => dataOoc.dataSet)
66
- dataSetId?: string
67
-
68
- @Column({ nullable: true })
69
- @Field({ nullable: true })
70
- dataSetVersion?: number
71
-
72
- @Column({ nullable: true })
73
- @Field({ nullable: true })
74
- ooc?: boolean
75
-
76
- @Column({ nullable: true })
77
- @Field({ nullable: true })
78
- oos?: boolean
79
-
80
- @Column({ nullable: true })
81
- @Field({ nullable: true })
82
- state?: DataOocStatus
83
-
84
- @Column({
85
- nullable: true,
86
- type:
87
- DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
88
- ? 'longtext'
89
- : DATABASE_TYPE == 'oracle'
90
- ? 'clob'
91
- : DATABASE_TYPE == 'mssql'
92
- ? 'nvarchar'
93
- : 'varchar',
94
- length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined
95
- })
96
- @Field({ nullable: true })
97
- correctiveInstruction?: string
98
-
99
- @Column({
100
- nullable: true,
101
- type:
102
- DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
103
- ? 'longtext'
104
- : DATABASE_TYPE == 'oracle'
105
- ? 'clob'
106
- : DATABASE_TYPE == 'mssql'
107
- ? 'nvarchar'
108
- : 'varchar',
109
- length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined
110
- })
111
- @Field({ nullable: true })
112
- correctiveAction?: string
113
-
114
- @Column({ nullable: true })
115
- @Field({ nullable: true })
116
- type?: string
117
-
118
- @Column({ nullable: true })
119
- @Field({ nullable: true })
120
- useCase?: string
121
-
122
- @Column({ nullable: true, default: '' })
123
- @Field({ nullable: true })
124
- key01?: string = ''
125
-
126
- @Column({ nullable: true, default: '' })
127
- @Field({ nullable: true })
128
- key02?: string = ''
129
-
130
- @Column({ nullable: true, default: '' })
131
- @Field({ nullable: true })
132
- key03?: string = ''
133
-
134
- @Column({ nullable: true, default: '' })
135
- @Field({ nullable: true })
136
- key04?: string = ''
137
-
138
- @Column({ nullable: true, default: '' })
139
- @Field({ nullable: true })
140
- key05?: string = ''
141
-
142
- @Column('simple-json', { nullable: true })
143
- @Field(type => ScalarObject, { nullable: true })
144
- partitionKeys?: { [key: string]: any }
145
-
146
- @Column('simple-json', { nullable: true })
147
- @Field(type => ScalarObject, { nullable: true })
148
- data?: any
149
-
150
- @Column('simple-json', { nullable: true })
151
- @Field(type => ScalarObject, { nullable: true })
152
- judgment?: any
153
-
154
- @Field(type => [DataItem], { nullable: true })
155
- dataItems?: DataItem[]
156
-
157
- @Column('simple-json', { nullable: true })
158
- @Field(type => ScalarObject, { nullable: true })
159
- history?: any
160
-
161
- @Column({
162
- nullable: true,
163
- type:
164
- DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
165
- ? 'longtext'
166
- : DATABASE_TYPE == 'oracle'
167
- ? 'clob'
168
- : DATABASE_TYPE == 'mssql'
169
- ? 'nvarchar'
170
- : 'varchar',
171
- length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined
172
- })
173
- @Field({ nullable: true })
174
- rawData?: string
175
-
176
- @Column({ nullable: true })
177
- @Field({ nullable: true })
178
- source?: string
179
-
180
- @OneToOne(type => DataSample, { nullable: true })
181
- @JoinColumn()
182
- @Field(type => DataSample, { nullable: true })
183
- dataSample?: DataSample
184
-
185
- @RelationId((dataOoc: DataOoc) => dataOoc.dataSample)
186
- dataSampleId?: string
187
-
188
- @OneToOne(type => ActivityInstance, { nullable: true })
189
- @JoinColumn()
190
- @Field({ nullable: true })
191
- reviewActivityInstance?: ActivityInstance
192
-
193
- @RelationId((dataOoc: DataOoc) => dataOoc.reviewActivityInstance)
194
- reviewActivityInstanceId?: string
195
-
196
- @OneToOne(type => ActivityInstance, { nullable: true })
197
- @JoinColumn()
198
- @Field({ nullable: true })
199
- resolveActivityInstance?: ActivityInstance
200
-
201
- @RelationId((dataOoc: DataOoc) => dataOoc.resolveActivityInstance)
202
- resolveActivityInstanceId?: string
203
-
204
- @Column({ nullable: true })
205
- @Field({ nullable: true })
206
- workDate?: string
207
-
208
- @Column({ nullable: true })
209
- @Field({ nullable: true })
210
- workShift?: string
211
-
212
- @Column({ nullable: true })
213
- @Field({ nullable: true })
214
- collectedAt?: Date
215
-
216
- @Column({ nullable: true })
217
- @Field({ nullable: true })
218
- reviewedAt?: Date
219
-
220
- @Column({ nullable: true })
221
- @Field({ nullable: true })
222
- correctedAt?: Date
223
-
224
- @CreateDateColumn()
225
- @Field({ nullable: true })
226
- createdAt?: Date
227
-
228
- @UpdateDateColumn()
229
- @Field({ nullable: true })
230
- updatedAt?: Date
231
-
232
- @ManyToOne(type => User, { nullable: true })
233
- @Field({ nullable: true })
234
- reviewer?: User
235
-
236
- @RelationId((dataOoc: DataOoc) => dataOoc.reviewer)
237
- reviewerId?: string
238
-
239
- @ManyToOne(type => User, { nullable: true })
240
- @Field({ nullable: true })
241
- corrector?: User
242
-
243
- @RelationId((dataOoc: DataOoc) => dataOoc.corrector)
244
- correctorId?: string
245
-
246
- @ManyToOne(type => User, { nullable: true })
247
- @Field(type => User, { nullable: true })
248
- creator?: User
249
-
250
- @RelationId((dataOoc: DataOoc) => dataOoc.creator)
251
- creatorId?: string
252
-
253
- @ManyToOne(type => User, { nullable: true })
254
- @Field(type => User, { nullable: true })
255
- updater?: User
256
-
257
- @RelationId((dataOoc: DataOoc) => dataOoc.updater)
258
- updaterId?: string
259
- }
@@ -1,7 +0,0 @@
1
- import { DataOoc } from './data-ooc'
2
- import { DataOocMutation } from './data-ooc-mutation'
3
- import { DataOocQuery } from './data-ooc-query'
4
- import { DataOocSubscription } from './data-ooc-subscription'
5
-
6
- export const entities = [DataOoc]
7
- export const resolvers = [DataOocQuery, DataOocMutation, DataOocSubscription]
@@ -1,18 +0,0 @@
1
- import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
2
-
3
- import { createDataSample } from '../../controllers/create-data-sample'
4
- import { DataSample } from './data-sample'
5
- import { NewDataSample } from './data-sample-type'
6
-
7
- @Resolver(DataSample)
8
- export class DataSampleMutation {
9
- @Directive('@privilege(category: "data-sample", privilege: "mutation", domainOwnerGranted: true)')
10
- @Directive('@transaction')
11
- @Mutation(returns => DataSample, { description: 'To create new data sample' })
12
- async createDataSample(
13
- @Arg('dataSample') dataSample: NewDataSample,
14
- @Ctx() context: ResolverContext
15
- ): Promise<DataSample> {
16
- return await createDataSample(dataSample, context)
17
- }
18
- }
@@ -1,215 +0,0 @@
1
- import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
- import { In } from 'typeorm'
3
-
4
- import { User } from '@things-factory/auth-base'
5
- import {
6
- Domain,
7
- getISOStringsForPeriod,
8
- getQueryBuilderFromListParams,
9
- getRepository,
10
- ListParam
11
- } from '@things-factory/shell'
12
- import { ActivityInstance } from '@things-factory/worklist'
13
-
14
- import { DataKeySet } from '../data-key-set/data-key-set'
15
- import { DataOoc } from '../data-ooc/data-ooc'
16
- import { DataSetHistory } from '../data-set-history/data-set-history'
17
- import { DataItem } from '../data-set/data-item-type'
18
- import { DataSet } from '../data-set/data-set'
19
- import { DataSample } from './data-sample'
20
- import { DataSampleList } from './data-sample-type'
21
-
22
- @Resolver(DataSample)
23
- export class DataSampleQuery {
24
- @Directive('@privilege(category: "data-sample", privilege: "query", domainOwnerGranted: true)')
25
- @Query(returns => DataSample, { description: 'To fetch a data sample' })
26
- async dataSample(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<DataSample> {
27
- const { domain } = context.state
28
-
29
- return await getRepository(DataSample).findOne({
30
- where: { domain: { id: domain.id }, id }
31
- })
32
- }
33
-
34
- @Directive('@privilege(category: "data-sample", privilege: "query", domainOwnerGranted: true)')
35
- @Query(returns => DataSampleList, { description: 'To fetch multiple data samples' })
36
- async dataSamples(
37
- @Args(type => ListParam) params: ListParam,
38
- @Ctx() context: ResolverContext
39
- ): Promise<DataSampleList> {
40
- const { domain } = context.state
41
-
42
- const queryBuilder = getQueryBuilderFromListParams({
43
- repository: getRepository(DataSample),
44
- params,
45
- domain,
46
- searchables: ['name', 'description', 'key01', 'key02', 'key03', 'key04', 'key05']
47
- })
48
-
49
- const [items, total] = await queryBuilder.getManyAndCount()
50
-
51
- return { items, total }
52
- }
53
-
54
- @Directive('@privilege(category: "data-sample", privilege: "query", domainOwnerGranted: true)')
55
- @Query(returns => DataSampleList, { description: 'To fetch multiple data samples by data set' })
56
- async dataSamplesByDataSet(
57
- @Arg('dataSetId') dataSetId: string,
58
- @Args(type => ListParam) params: ListParam,
59
- @Ctx() context: ResolverContext
60
- ): Promise<DataSampleList> {
61
- const { domain } = context.state
62
-
63
- const dataSet = await getRepository(DataSet).findOne({
64
- where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id: dataSetId },
65
- relations: ['dataKeySet']
66
- })
67
-
68
- if (!dataSet) {
69
- throw new Error(`dataSet not found by the given dataSetId(${dataSetId})`)
70
- }
71
-
72
- const dataKeyItems = dataSet.dataKeySet?.dataKeyItems || []
73
- const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`)
74
-
75
- const queryBuilder = getQueryBuilderFromListParams({
76
- repository: getRepository(DataSample),
77
- params,
78
- domain,
79
- alias: 'sample',
80
- searchables: ['name', 'description'].concat(searchables)
81
- }).innerJoin('sample.dataSet', 'ds', 'ds.id = :dataSetId', {
82
- dataSetId
83
- })
84
-
85
- const [items, total] = await queryBuilder.getManyAndCount()
86
-
87
- return { items, total }
88
- }
89
-
90
- @Directive('@privilege(category: "data-sample", privilege: "query", domainOwnerGranted: true)')
91
- @Query(returns => DataSampleList, { description: 'To fetch multiple data samples by data key set' })
92
- async dataSamplesByDataKeySet(
93
- @Arg('dataKeySetId') dataKeySetId: string,
94
- @Args(type => ListParam) params: ListParam,
95
- @Ctx() context: ResolverContext
96
- ): Promise<DataSampleList> {
97
- const { domain } = context.state
98
-
99
- const dataKeySet = await getRepository(DataKeySet).findOneBy({ id: dataKeySetId })
100
- const dataKeyItems = dataKeySet?.dataKeyItems || []
101
- const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`)
102
-
103
- const queryBuilder = getQueryBuilderFromListParams({
104
- repository: getRepository(DataSample),
105
- params,
106
- domain,
107
- alias: 'sample',
108
- searchables: ['name', 'description'].concat(searchables)
109
- }).innerJoin('sample.dataSet', 'ds', 'ds.dataKeySet = :dataKeySetId', {
110
- dataKeySetId
111
- })
112
-
113
- const [items, total] = await queryBuilder.getManyAndCount()
114
-
115
- return { items, total }
116
- }
117
-
118
- @Query(returns => DataSampleList, { description: 'To fetch multiple DataSamples by period' })
119
- async dataSamplesByPeriod(
120
- @Arg('period') period: 'today' | 'this month' | '30 days' | 'this year' | '12 months',
121
- @Arg('dataSetName') dataSetName: string,
122
- @Args(type => ListParam) params: ListParam,
123
- @Ctx() context: ResolverContext
124
- ): Promise<DataSampleList> {
125
- const { domain } = context.state
126
- const { from, to } = await getISOStringsForPeriod(period, context)
127
-
128
- const dataSet = await getRepository(DataSet).findOne({
129
- where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, name: dataSetName },
130
- relations: ['dataKeySet']
131
- })
132
-
133
- if (!dataSet) {
134
- throw new Error(`dataSet not found by the given dataSetName(${dataSetName})`)
135
- }
136
-
137
- const { filters = [] } = params || {}
138
- const alteredFilters = filters.concat([
139
- {
140
- name: 'collectedAt',
141
- operator: 'between',
142
- value: [from, to]
143
- }
144
- ])
145
-
146
- const dataKeyItems = dataSet.dataKeySet?.dataKeyItems || []
147
- const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`)
148
-
149
- const queryBuilder = getQueryBuilderFromListParams({
150
- repository: getRepository(DataSample),
151
- params: {
152
- ...params,
153
- filters: alteredFilters
154
- },
155
- domain,
156
- alias: 'sample',
157
- searchables: ['name', 'description'].concat(searchables)
158
- }).innerJoin('sample.dataSet', 'ds', 'ds.id = :dataSetId', {
159
- dataSetId: dataSet.id
160
- })
161
-
162
- const [items, total] = await queryBuilder.getManyAndCount()
163
-
164
- return { items, total }
165
- }
166
-
167
- @FieldResolver(type => [DataItem])
168
- async dataItems(@Root() dataSample: DataSample): Promise<DataItem[]> {
169
- const dataSetHistory: DataSetHistory =
170
- dataSample.dataSetId &&
171
- (await getRepository(DataSetHistory).findOne({
172
- where: {
173
- originalId: dataSample.dataSetId,
174
- version: dataSample.dataSetVersion
175
- }
176
- }))
177
-
178
- return dataSetHistory?.dataItems.filter(item => item.active) || []
179
- }
180
-
181
- @FieldResolver(type => DataSet)
182
- async dataSet(@Root() dataSample: DataSample): Promise<DataSet> {
183
- return dataSample.dataSetId && (await getRepository(DataSet).findOneBy({ id: dataSample.dataSetId }))
184
- }
185
-
186
- @FieldResolver(type => DataOoc)
187
- async dataOoc(@Root() dataSample: DataSample): Promise<DataOoc> {
188
- if (dataSample.ooc || dataSample.oos) {
189
- return await getRepository(DataOoc).findOneBy({ dataSample: { id: dataSample.id } })
190
- }
191
- }
192
-
193
- @FieldResolver(type => ActivityInstance)
194
- async reviewActivityInstance(@Root() dataSample: DataSample): Promise<ActivityInstance> {
195
- return (
196
- dataSample.reviewActivityInstanceId &&
197
- (await getRepository(ActivityInstance).findOneBy({ id: dataSample.reviewActivityInstanceId }))
198
- )
199
- }
200
-
201
- @FieldResolver(type => Domain)
202
- async domain(@Root() dataSample: DataSample): Promise<Domain> {
203
- return dataSample.domainId && (await getRepository(Domain).findOneBy({ id: dataSample.domainId }))
204
- }
205
-
206
- @FieldResolver(type => User)
207
- async updater(@Root() dataSample: DataSample): Promise<User> {
208
- return dataSample.updaterId && (await getRepository(User).findOneBy({ id: dataSample.updaterId }))
209
- }
210
-
211
- @FieldResolver(type => User)
212
- async creator(@Root() dataSample: DataSample): Promise<User> {
213
- return dataSample.creatorId && (await getRepository(User).findOneBy({ id: dataSample.creatorId }))
214
- }
215
- }
@@ -1,47 +0,0 @@
1
- import { Field, InputType, Int, ObjectType } from 'type-graphql'
2
-
3
- import { ObjectRef, ScalarObject } from '@things-factory/shell'
4
-
5
- import { DataSample } from './data-sample'
6
-
7
- @InputType()
8
- export class NewDataSample {
9
- @Field({ nullable: true })
10
- name?: string
11
-
12
- @Field({ nullable: true })
13
- description?: string
14
-
15
- @Field(type => ObjectRef, { nullable: true })
16
- dataSet?: ObjectRef
17
-
18
- @Field({ nullable: true })
19
- dataSetVersion?: number
20
-
21
- @Field(type => ScalarObject, { nullable: true })
22
- data?: any
23
-
24
- @Field({ nullable: true })
25
- rawData?: string
26
-
27
- @Field({ nullable: true })
28
- source?: string
29
-
30
- @Field({ nullable: true })
31
- workDate?: string
32
-
33
- @Field({ nullable: true })
34
- workShift?: string
35
-
36
- @Field({ nullable: true })
37
- collectedAt?: Date
38
- }
39
-
40
- @ObjectType()
41
- export class DataSampleList {
42
- @Field(type => [DataSample])
43
- items: DataSample[]
44
-
45
- @Field(type => Int)
46
- total: number
47
- }