@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,68 +0,0 @@
1
- import { In } from 'typeorm'
2
- import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
3
-
4
- import { Attachment } from '@things-factory/attachment-base'
5
- import { User } from '@things-factory/auth-base'
6
- import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
7
-
8
- import { DataKeySet } from './data-key-set'
9
- import { DataKeySetList } from './data-key-set-type'
10
-
11
- @Resolver(DataKeySet)
12
- export class DataKeySetQuery {
13
- @Query(returns => DataKeySet!, { nullable: true, description: 'To fetch a DataKeySet' })
14
- async dataKeySet(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<DataKeySet> {
15
- const { domain } = context.state
16
-
17
- return await getRepository(DataKeySet).findOne({
18
- where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id }
19
- })
20
- }
21
-
22
- @Query(returns => DataKeySetList, { description: 'To fetch multiple DataKeySets' })
23
- async dataKeySets(
24
- @Args(type => ListParam) params: ListParam,
25
- @Ctx() context: ResolverContext
26
- ): Promise<DataKeySetList> {
27
- const { domain } = context.state
28
-
29
- const queryBuilder = getQueryBuilderFromListParams({
30
- domain,
31
- params,
32
- repository: await getRepository(DataKeySet),
33
- searchables: ['name', 'description']
34
- })
35
-
36
- const [items, total] = await queryBuilder.getManyAndCount()
37
-
38
- return { items, total }
39
- }
40
-
41
- @FieldResolver(type => String)
42
- async thumbnail(@Root() dataKeySet: DataKeySet): Promise<string | undefined> {
43
- const attachment: Attachment = await getRepository(Attachment).findOne({
44
- where: {
45
- domain: { id: dataKeySet.domainId },
46
- refType: DataKeySet.name,
47
- refBy: dataKeySet.id
48
- }
49
- })
50
-
51
- return attachment?.fullpath
52
- }
53
-
54
- @FieldResolver(type => Domain)
55
- async domain(@Root() dataKeySet: DataKeySet): Promise<Domain> {
56
- return dataKeySet.domainId && (await getRepository(Domain).findOneBy({ id: dataKeySet.domainId }))
57
- }
58
-
59
- @FieldResolver(type => User)
60
- async updater(@Root() dataKeySet: DataKeySet): Promise<User> {
61
- return dataKeySet.updaterId && (await getRepository(User).findOneBy({ id: dataKeySet.updaterId }))
62
- }
63
-
64
- @FieldResolver(type => User)
65
- async creator(@Root() dataKeySet: DataKeySet): Promise<User> {
66
- return dataKeySet.creatorId && (await getRepository(User).findOneBy({ id: dataKeySet.creatorId }))
67
- }
68
- }
@@ -1,70 +0,0 @@
1
- import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'
2
- import GraphQLUpload from 'graphql-upload/GraphQLUpload.js'
3
- import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'
4
-
5
- import { DataKeyItemPatch } from './data-key-item-type'
6
- import { DataKeySet } from './data-key-set'
7
- import { DataSetReportType } from '../data-set/data-set'
8
-
9
- @InputType()
10
- export class NewDataKeySet {
11
- @Field()
12
- name: string
13
-
14
- @Field({ nullable: true })
15
- description?: string
16
-
17
- @Field({ nullable: true })
18
- active?: boolean
19
-
20
- @Field({ nullable: true })
21
- reportType?: DataSetReportType
22
-
23
- @Field({ nullable: true })
24
- reportView?: string
25
-
26
- @Field(type => [DataKeyItemPatch], { nullable: true })
27
- dataKeyItems?: DataKeyItemPatch[]
28
-
29
- @Field(type => GraphQLUpload, { nullable: true })
30
- thumbnail?: FileUpload
31
- }
32
-
33
- @InputType()
34
- export class DataKeySetPatch {
35
- @Field(type => ID, { nullable: true })
36
- id?: string
37
-
38
- @Field({ nullable: true })
39
- name?: string
40
-
41
- @Field({ nullable: true })
42
- description?: string
43
-
44
- @Field({ nullable: true })
45
- active?: boolean
46
-
47
- @Field({ nullable: true })
48
- reportType?: DataSetReportType
49
-
50
- @Field({ nullable: true })
51
- reportView?: string
52
-
53
- @Field(type => [DataKeyItemPatch], { nullable: true })
54
- dataKeyItems?: DataKeyItemPatch[]
55
-
56
- @Field(type => GraphQLUpload, { nullable: true })
57
- thumbnail?: FileUpload
58
-
59
- @Field({ nullable: true })
60
- cuFlag?: string
61
- }
62
-
63
- @ObjectType()
64
- export class DataKeySetList {
65
- @Field(type => [DataKeySet])
66
- items: DataKeySet[]
67
-
68
- @Field(type => Int)
69
- total: number
70
- }
@@ -1,86 +0,0 @@
1
- import { Field, ID, ObjectType } from 'type-graphql'
2
- import {
3
- Column,
4
- CreateDateColumn,
5
- Entity,
6
- Index,
7
- ManyToOne,
8
- PrimaryGeneratedColumn,
9
- RelationId,
10
- UpdateDateColumn
11
- } from 'typeorm'
12
-
13
- import { User } from '@things-factory/auth-base'
14
- import { Domain } from '@things-factory/shell'
15
-
16
- import { DataKeyItem } from './data-key-item-type'
17
- import { DataSetReportType } from '../data-set/data-set'
18
-
19
- @Entity()
20
- @Index('ix_data_key_set_0', (dataKeySet: DataKeySet) => [dataKeySet.domain, dataKeySet.name], { unique: true })
21
- @ObjectType({ description: 'Entity for DataKeySet' })
22
- export class DataKeySet {
23
- @PrimaryGeneratedColumn('uuid')
24
- @Field(type => ID)
25
- readonly id: string
26
-
27
- @ManyToOne(type => Domain)
28
- @Field(type => Domain)
29
- domain?: Domain
30
-
31
- @RelationId((dataKeySet: DataKeySet) => dataKeySet.domain)
32
- domainId?: string
33
-
34
- @Column()
35
- @Field()
36
- name: string
37
-
38
- @Column({
39
- nullable: true
40
- })
41
- @Field({ nullable: true })
42
- description?: string
43
-
44
- @Column({
45
- nullable: true
46
- })
47
- @Field({ nullable: true })
48
- active?: boolean
49
-
50
- @Column({ nullable: true })
51
- @Field({ nullable: true })
52
- reportType?: DataSetReportType
53
-
54
- @Column({ nullable: true })
55
- @Field({ nullable: true })
56
- reportView?: string
57
-
58
- @Column('simple-json', { nullable: true })
59
- @Field(type => [DataKeyItem], { nullable: true })
60
- dataKeyItems: DataKeyItem[]
61
-
62
- @CreateDateColumn()
63
- @Field({ nullable: true })
64
- createdAt?: Date
65
-
66
- @UpdateDateColumn()
67
- @Field({ nullable: true })
68
- updatedAt?: Date
69
-
70
- @ManyToOne(type => User, { nullable: true })
71
- @Field(type => User, { nullable: true })
72
- creator?: User
73
-
74
- @RelationId((dataKeySet: DataKeySet) => dataKeySet.creator)
75
- creatorId?: string
76
-
77
- @ManyToOne(type => User, { nullable: true })
78
- @Field(type => User, { nullable: true })
79
- updater?: User
80
-
81
- @RelationId((dataKeySet: DataKeySet) => dataKeySet.updater)
82
- updaterId?: string
83
-
84
- @Field(type => String, { nullable: true })
85
- thumbnail?: string
86
- }
@@ -1,6 +0,0 @@
1
- import { DataKeySet } from './data-key-set'
2
- import { DataKeySetQuery } from './data-key-set-query'
3
- import { DataKeySetMutation } from './data-key-set-mutation'
4
-
5
- export const entities = [DataKeySet]
6
- export const resolvers = [DataKeySetQuery, DataKeySetMutation]
@@ -1,154 +0,0 @@
1
- import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
2
-
3
- import { DataOoc, DataOocStatus } from './data-ooc'
4
- import { DataOocPatch, NewDataOoc } from './data-ooc-type'
5
-
6
- @Resolver(DataOoc)
7
- export class DataOocMutation {
8
- @Directive('@privilege(category: "data-ooc", privilege: "mutation", domainOwnerGranted: true)')
9
- @Directive('@transaction')
10
- @Mutation(returns => DataOoc, { description: 'To create new DataOoc' })
11
- async createDataOoc(@Arg('dataOoc') dataOoc: NewDataOoc, @Ctx() context: ResolverContext): Promise<DataOoc> {
12
- const { domain, user, tx } = context.state
13
-
14
- const state = dataOoc.state || DataOocStatus.ISSUED
15
- const history = [
16
- {
17
- user: {
18
- id: user.id,
19
- name: user.name
20
- },
21
- state,
22
- timestamp: Date.now()
23
- }
24
- ]
25
-
26
- return await tx.getRepository(DataOoc).save({
27
- ...dataOoc,
28
- state,
29
- domain,
30
- history,
31
- creator: user,
32
- updater: user
33
- })
34
- }
35
-
36
- @Directive('@privilege(category: "data-ooc", privilege: "mutation", domainOwnerGranted: true)')
37
- @Directive('@transaction')
38
- @Mutation(returns => DataOoc, { description: 'To modify DataOoc information' })
39
- async updateDataOoc(
40
- @Arg('id') id: string,
41
- @Arg('patch') patch: DataOocPatch,
42
- @Ctx() context: ResolverContext
43
- ): Promise<DataOoc> {
44
- const { domain, user, tx } = context.state
45
-
46
- const repository = tx.getRepository(DataOoc)
47
- const dataOoc = await repository.findOne({
48
- where: { domain: { id: domain.id }, id }
49
- })
50
-
51
- const state = patch.state || dataOoc.state
52
-
53
- const history = dataOoc.history || []
54
- history.push({
55
- user: {
56
- id: user.id,
57
- name: user.name
58
- },
59
- state,
60
- comment: patch.correctiveAction || '',
61
- timestamp: Date.now()
62
- })
63
-
64
- const more = {} as any
65
-
66
- if (dataOoc.state !== patch.state) {
67
- if (patch.state === DataOocStatus.CORRECTED) {
68
- more.corrector = user
69
- } else {
70
- more.corrector = null
71
- }
72
- }
73
-
74
- return await repository.save({
75
- ...dataOoc,
76
- ...patch,
77
- ...more,
78
- state,
79
- history,
80
- updater: user
81
- })
82
- }
83
-
84
- // @Directive('@privilege(category: "data-ooc", privilege: "mutation", domainOwnerGranted: true)')
85
- // @Directive('@transaction')
86
- // @Mutation(returns => [DataOoc], { description: "To modify multiple DataOoc' information" })
87
- // async updateMultipleDataOoc(
88
- // @Arg('patches', type => [DataOocPatch]) patches: DataOocPatch[],
89
- // @Ctx() context: ResolverContext
90
- // ): Promise<DataOoc[]> {
91
- // const { domain, user, tx } = context.state
92
-
93
- // let results = []
94
- // const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
95
- // const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
96
- // const dataOocRepo = tx.getRepository(DataOoc)
97
-
98
- // if (_createRecords.length > 0) {
99
- // for (let i = 0; i < _createRecords.length; i++) {
100
- // const newRecord = _createRecords[i]
101
-
102
- // const result = await dataOocRepo.save({
103
- // ...newRecord,
104
- // domain,
105
- // creator: user,
106
- // updater: user
107
- // })
108
-
109
- // results.push({ ...result, cuFlag: '+' })
110
- // }
111
- // }
112
-
113
- // if (_updateRecords.length > 0) {
114
- // for (let i = 0; i < _updateRecords.length; i++) {
115
- // const newRecord = _updateRecords[i]
116
- // const dataOoc = await dataOocRepo.findOneBy({id: newRecord.id})
117
-
118
- // const result = await dataOocRepo.save({
119
- // ...dataOoc,
120
- // ...newRecord,
121
- // updater: user
122
- // })
123
-
124
- // results.push({ ...result, cuFlag: 'M' })
125
- // }
126
- // }
127
-
128
- // return results
129
- // }
130
-
131
- // @Directive('@privilege(category: "data-ooc", privilege: "mutation", domainOwnerGranted: true)')
132
- // @Directive('@transaction')
133
- // @Mutation(returns => Boolean, { description: 'To delete DataOoc' })
134
- // async deleteDataOoc(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
135
- // const { domain, tx } = context.state
136
-
137
- // await tx.getRepository(DataOoc).delete({ domain: { id: domain.id }, id })
138
- // return true
139
- // }
140
-
141
- // @Directive('@privilege(category: "data-ooc", privilege: "mutation", domainOwnerGranted: true)')
142
- // @Directive('@transaction')
143
- // @Mutation(returns => Boolean, { description: 'To delete multiple dataOocs' })
144
- // async deleteDataOocs(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {
145
- // const { domain, tx } = context.state
146
-
147
- // await tx.getRepository(DataOoc).delete({
148
- // domain,
149
- // id: In(ids)
150
- // })
151
-
152
- // return true
153
- // }
154
- }
@@ -1,106 +0,0 @@
1
- import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
-
3
- import { User } from '@things-factory/auth-base'
4
- import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
5
- import { ActivityInstance } from '@things-factory/worklist'
6
-
7
- import { DataSetHistory } from '../data-set-history/data-set-history'
8
- import { DataItem } from '../data-set/data-item-type'
9
- import { DataSet } from '../data-set/data-set'
10
- import { DataSample } from '../data-sample/data-sample'
11
- import { DataOoc } from './data-ooc'
12
- import { DataOocList } from './data-ooc-type'
13
-
14
- @Resolver(DataOoc)
15
- export class DataOocQuery {
16
- @Directive('@privilege(category: "data-ooc", privilege: "query", domainOwnerGranted: true)')
17
- @Query(returns => DataOoc, { description: 'To fetch a DataOoc' })
18
- async dataOoc(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<DataOoc> {
19
- const { domain } = context.state
20
-
21
- return await getRepository(DataOoc).findOne({
22
- where: { domain: { id: domain.id }, id }
23
- })
24
- }
25
-
26
- @Directive('@privilege(category: "data-ooc", privilege: "query", domainOwnerGranted: true)')
27
- @Query(returns => DataOocList, { description: 'To fetch multiple DataOoc' })
28
- async dataOocs(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<DataOocList> {
29
- const { domain } = context.state
30
-
31
- const queryBuilder = getQueryBuilderFromListParams({
32
- repository: getRepository(DataOoc),
33
- params,
34
- domain,
35
- searchables: ['name', 'description']
36
- })
37
-
38
- const [items, total] = await queryBuilder.getManyAndCount()
39
-
40
- return { items, total }
41
- }
42
-
43
- @FieldResolver(type => [DataItem])
44
- async dataItems(@Root() dataOoc: DataOoc): Promise<DataItem[]> {
45
- const dataSetHistory: DataSetHistory =
46
- dataOoc.dataSetId &&
47
- (await getRepository(DataSetHistory).findOne({
48
- where: {
49
- originalId: dataOoc.dataSetId,
50
- version: dataOoc.dataSetVersion
51
- }
52
- }))
53
- return dataSetHistory?.dataItems.filter(item => item.active) || []
54
- }
55
-
56
- @FieldResolver(type => DataSample)
57
- async dataSample(@Root() dataOoc: DataOoc): Promise<DataSample> {
58
- return dataOoc.dataSampleId && (await getRepository(DataSample).findOneBy({ id: dataOoc.dataSampleId }))
59
- }
60
-
61
- @FieldResolver(type => DataSet)
62
- async dataSet(@Root() dataOoc: DataOoc): Promise<DataSet> {
63
- return dataOoc.dataSetId && (await getRepository(DataSet).findOneBy({ id: dataOoc.dataSetId }))
64
- }
65
-
66
- @FieldResolver(type => ActivityInstance)
67
- async reviewActivityInstance(@Root() dataOoc: DataOoc): Promise<ActivityInstance> {
68
- return (
69
- dataOoc.reviewActivityInstanceId &&
70
- (await getRepository(ActivityInstance).findOneBy({ id: dataOoc.reviewActivityInstanceId }))
71
- )
72
- }
73
-
74
- @FieldResolver(type => ActivityInstance)
75
- async resolveActivityInstance(@Root() dataOoc: DataOoc): Promise<ActivityInstance> {
76
- return (
77
- dataOoc.resolveActivityInstanceId &&
78
- (await getRepository(ActivityInstance).findOneBy({ id: dataOoc.resolveActivityInstanceId }))
79
- )
80
- }
81
-
82
- @FieldResolver(type => User)
83
- async corrector(@Root() dataOoc: DataOoc): Promise<User> {
84
- return dataOoc.correctorId && (await getRepository(User).findOneBy({ id: dataOoc.correctorId }))
85
- }
86
-
87
- @FieldResolver(type => User)
88
- async reviewer(@Root() dataOoc: DataOoc): Promise<User> {
89
- return dataOoc.reviewerId && (await getRepository(User).findOneBy({ id: dataOoc.reviewerId }))
90
- }
91
-
92
- @FieldResolver(type => Domain)
93
- async domain(@Root() dataOoc: DataOoc): Promise<Domain> {
94
- return await getRepository(Domain).findOneBy({ id: dataOoc.domainId })
95
- }
96
-
97
- @FieldResolver(type => User)
98
- async updater(@Root() dataOoc: DataOoc): Promise<User> {
99
- return dataOoc.updaterId && (await getRepository(User).findOneBy({ id: dataOoc.updaterId }))
100
- }
101
-
102
- @FieldResolver(type => User)
103
- async creator(@Root() dataOoc: DataOoc): Promise<User> {
104
- return dataOoc.creatorId && (await getRepository(User).findOneBy({ id: dataOoc.creatorId }))
105
- }
106
- }
@@ -1,48 +0,0 @@
1
- import { filter, pipe } from 'graphql-yoga'
2
- import { Resolver, Root, Subscription } from 'type-graphql'
3
-
4
- import { User } from '@things-factory/auth-base'
5
- import { getRepository, pubsub } from '@things-factory/shell'
6
-
7
- import { DataOoc } from './data-ooc'
8
-
9
- @Resolver(DataOoc)
10
- export class DataOocSubscription {
11
- @Subscription({
12
- subscribe: ({ args, context, info }) => {
13
- const { domain, user } = context.state
14
- const subdomain = domain?.subdomain
15
-
16
- if (!domain) {
17
- throw new Error('domain required')
18
- }
19
-
20
- if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {
21
- throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)
22
- }
23
-
24
- return pipe(
25
- pubsub.subscribe('data-ooc'),
26
- filter(async (payload: { dataOoc: DataOoc; supervisoryRoleId: string }) => {
27
- const { dataOoc, supervisoryRoleId } = payload
28
- const { domain } = dataOoc
29
-
30
- if (subdomain !== domain?.subdomain) {
31
- return false
32
- }
33
-
34
- // check if the user has that role
35
- const userWithRoles: User = await getRepository(User).findOne({
36
- where: { id: user.id },
37
- relations: ['roles']
38
- })
39
-
40
- return !!userWithRoles.roles.find(role => role.id === supervisoryRoleId)
41
- })
42
- )
43
- }
44
- })
45
- dataOoc(@Root() payload: { dataOoc: DataOoc; supervisoryRoleId: string }): DataOoc {
46
- return payload.dataOoc
47
- }
48
- }
@@ -1,71 +0,0 @@
1
- import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'
2
-
3
- import { ObjectRef, ScalarObject } from '@things-factory/shell'
4
-
5
- import { DataOoc, DataOocStatus } from './data-ooc'
6
-
7
- @InputType()
8
- export class NewDataOoc {
9
- @Field()
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 => ObjectRef, { nullable: true })
22
- dataSample?: ObjectRef
23
-
24
- @Field(type => DataOocStatus, { nullable: true })
25
- state?: DataOocStatus
26
-
27
- @Field(type => ScalarObject, { nullable: true })
28
- data?: any
29
-
30
- @Field({ nullable: true })
31
- rawData?: string
32
-
33
- @Field({ nullable: true })
34
- source?: string
35
-
36
- @Field({ nullable: true })
37
- ooc?: boolean
38
-
39
- @Field({ nullable: true })
40
- oos?: boolean
41
-
42
- @Field({ nullable: true })
43
- workDate?: string
44
-
45
- @Field({ nullable: true })
46
- workShift?: string
47
-
48
- @Field({ nullable: true })
49
- collectedAt?: Date
50
- }
51
-
52
- @InputType()
53
- export class DataOocPatch {
54
- @Field(type => ID, { nullable: true })
55
- id?: string
56
-
57
- @Field(type => DataOocStatus, { nullable: true })
58
- state?: DataOocStatus
59
-
60
- @Field({ nullable: true })
61
- correctiveAction?: string
62
- }
63
-
64
- @ObjectType()
65
- export class DataOocList {
66
- @Field(type => [DataOoc])
67
- items: DataOoc[]
68
-
69
- @Field(type => Int)
70
- total: number
71
- }