@things-factory/dataset 5.0.0 → 5.0.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.
- package/README.md +25 -0
- package/assets/data-samples.jpg +0 -0
- package/client/pages/data-key-set/data-key-item-list.js +196 -0
- package/client/pages/data-key-set/data-key-set-importer.js +107 -0
- package/client/pages/data-key-set/data-key-set-list-page.js +354 -0
- package/client/pages/data-ooc/data-ooc-list-page.js +60 -0
- package/client/pages/data-sample/data-sample-list-page.js +60 -0
- package/client/pages/data-sample/data-sample-search-page.js +439 -0
- package/client/pages/data-set/data-set-list-page.js +20 -1
- package/client/route.js +9 -1
- package/dist-server/controllers/create-data-sample.js +15 -3
- package/dist-server/controllers/create-data-sample.js.map +1 -1
- package/dist-server/service/data-key-set/data-key-item-type.js +58 -0
- package/dist-server/service/data-key-set/data-key-item-type.js.map +1 -0
- package/dist-server/service/data-key-set/data-key-set-mutation.js +179 -0
- package/dist-server/service/data-key-set/data-key-set-mutation.js.map +1 -0
- package/dist-server/service/data-key-set/data-key-set-query.js +110 -0
- package/dist-server/service/data-key-set/data-key-set-query.js.map +1 -0
- package/dist-server/service/data-key-set/data-key-set-type.js +94 -0
- package/dist-server/service/data-key-set/data-key-set-type.js.map +1 -0
- package/dist-server/service/data-key-set/data-key-set.js +101 -0
- package/dist-server/service/data-key-set/data-key-set.js.map +1 -0
- package/dist-server/service/data-key-set/index.js +9 -0
- package/dist-server/service/data-key-set/index.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc.js +32 -0
- package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
- package/dist-server/service/data-sample/data-sample-query.js +27 -1
- package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
- package/dist-server/service/data-sample/data-sample.js +41 -0
- package/dist-server/service/data-sample/data-sample.js.map +1 -1
- package/dist-server/service/data-set/data-item-type.js +1 -1
- package/dist-server/service/data-set/data-item-type.js.map +1 -1
- package/dist-server/service/data-set/data-set-mutation.js +8 -8
- package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
- package/dist-server/service/data-set/data-set-query.js +16 -1
- package/dist-server/service/data-set/data-set-query.js.map +1 -1
- package/dist-server/service/data-set/data-set-type.js +14 -6
- package/dist-server/service/data-set/data-set-type.js.map +1 -1
- package/dist-server/service/data-set/data-set.js +32 -54
- package/dist-server/service/data-set/data-set.js.map +1 -1
- package/dist-server/service/data-set-history/data-set-history-query.js +3 -1
- package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -1
- package/dist-server/service/index.js +4 -1
- package/dist-server/service/index.js.map +1 -1
- package/package.json +12 -12
- package/server/controllers/create-data-sample.ts +19 -12
- package/server/service/data-key-set/data-key-item-type.ts +31 -0
- package/server/service/data-key-set/data-key-set-mutation.ts +198 -0
- package/server/service/data-key-set/data-key-set-query.ts +65 -0
- package/server/service/data-key-set/data-key-set-type.ts +57 -0
- package/server/service/data-key-set/data-key-set.ts +81 -0
- package/server/service/data-key-set/index.ts +6 -0
- package/server/service/data-ooc/data-ooc.ts +20 -0
- package/server/service/data-sample/data-sample-query.ts +27 -0
- package/server/service/data-sample/data-sample.ts +33 -0
- package/server/service/data-set/data-item-type.ts +1 -1
- package/server/service/data-set/data-set-mutation.ts +8 -8
- package/server/service/data-set/data-set-query.ts +13 -1
- package/server/service/data-set/data-set-type.ts +6 -0
- package/server/service/data-set/data-set.ts +24 -48
- package/server/service/data-set-history/data-set-history-query.ts +3 -1
- package/server/service/index.ts +4 -1
- package/things-factory.config.js +8 -0
- package/translations/en.json +11 -0
- package/translations/ko.json +11 -0
- package/translations/ms.json +12 -1
- package/translations/zh.json +11 -0
@@ -0,0 +1,65 @@
|
|
1
|
+
import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
2
|
+
import { getRepository } from 'typeorm'
|
3
|
+
|
4
|
+
import { Attachment } from '@things-factory/attachment-base'
|
5
|
+
import { User } from '@things-factory/auth-base'
|
6
|
+
import { Domain, getQueryBuilderFromListParams, 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: any): Promise<DataKeySet> {
|
15
|
+
const { domain } = context.state
|
16
|
+
|
17
|
+
return await getRepository(DataKeySet).findOne({
|
18
|
+
where: { domain, id }
|
19
|
+
})
|
20
|
+
}
|
21
|
+
|
22
|
+
@Query(returns => DataKeySetList, { description: 'To fetch multiple DataKeySets' })
|
23
|
+
async dataKeySets(@Args() params: ListParam, @Ctx() context: any): Promise<DataKeySetList> {
|
24
|
+
const { domain } = context.state
|
25
|
+
|
26
|
+
const queryBuilder = getQueryBuilderFromListParams({
|
27
|
+
domain,
|
28
|
+
params,
|
29
|
+
repository: await getRepository(DataKeySet),
|
30
|
+
searchables: ['name', 'description']
|
31
|
+
})
|
32
|
+
|
33
|
+
const [items, total] = await queryBuilder.getManyAndCount()
|
34
|
+
|
35
|
+
return { items, total }
|
36
|
+
}
|
37
|
+
|
38
|
+
@FieldResolver(type => String)
|
39
|
+
async thumbnail(@Root() dataKeySet: DataKeySet): Promise<string | undefined> {
|
40
|
+
const attachment: Attachment = await getRepository(Attachment).findOne({
|
41
|
+
where: {
|
42
|
+
domain: dataKeySet.domainId,
|
43
|
+
refType: DataKeySet.name,
|
44
|
+
refBy: dataKeySet.id
|
45
|
+
}
|
46
|
+
})
|
47
|
+
|
48
|
+
return attachment?.fullpath
|
49
|
+
}
|
50
|
+
|
51
|
+
@FieldResolver(type => Domain)
|
52
|
+
async domain(@Root() dataKeySet: DataKeySet): Promise<Domain> {
|
53
|
+
return await getRepository(Domain).findOne(dataKeySet.domainId)
|
54
|
+
}
|
55
|
+
|
56
|
+
@FieldResolver(type => User)
|
57
|
+
async updater(@Root() dataKeySet: DataKeySet): Promise<User> {
|
58
|
+
return await getRepository(User).findOne(dataKeySet.updaterId)
|
59
|
+
}
|
60
|
+
|
61
|
+
@FieldResolver(type => User)
|
62
|
+
async creator(@Root() dataKeySet: DataKeySet): Promise<User> {
|
63
|
+
return await getRepository(User).findOne(dataKeySet.creatorId)
|
64
|
+
}
|
65
|
+
}
|
@@ -0,0 +1,57 @@
|
|
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
|
+
|
8
|
+
@InputType()
|
9
|
+
export class NewDataKeySet {
|
10
|
+
@Field()
|
11
|
+
name: string
|
12
|
+
|
13
|
+
@Field({ nullable: true })
|
14
|
+
description?: string
|
15
|
+
|
16
|
+
@Field({ nullable: true })
|
17
|
+
active?: boolean
|
18
|
+
|
19
|
+
@Field(type => [DataKeyItemPatch], { nullable: true })
|
20
|
+
dataKeyItems?: DataKeyItemPatch[]
|
21
|
+
|
22
|
+
@Field(type => GraphQLUpload, { nullable: true })
|
23
|
+
thumbnail?: FileUpload
|
24
|
+
}
|
25
|
+
|
26
|
+
@InputType()
|
27
|
+
export class DataKeySetPatch {
|
28
|
+
@Field(type => ID, { nullable: true })
|
29
|
+
id?: string
|
30
|
+
|
31
|
+
@Field({ nullable: true })
|
32
|
+
name?: string
|
33
|
+
|
34
|
+
@Field({ nullable: true })
|
35
|
+
description?: string
|
36
|
+
|
37
|
+
@Field({ nullable: true })
|
38
|
+
active?: boolean
|
39
|
+
|
40
|
+
@Field(type => [DataKeyItemPatch], { nullable: true })
|
41
|
+
dataKeyItems?: DataKeyItemPatch[]
|
42
|
+
|
43
|
+
@Field(type => GraphQLUpload, { nullable: true })
|
44
|
+
thumbnail?: FileUpload
|
45
|
+
|
46
|
+
@Field({ nullable: true })
|
47
|
+
cuFlag?: string
|
48
|
+
}
|
49
|
+
|
50
|
+
@ObjectType()
|
51
|
+
export class DataKeySetList {
|
52
|
+
@Field(type => [DataKeySet])
|
53
|
+
items: DataKeySet[]
|
54
|
+
|
55
|
+
@Field(type => Int)
|
56
|
+
total: number
|
57
|
+
}
|
@@ -0,0 +1,81 @@
|
|
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
|
+
|
18
|
+
@Entity()
|
19
|
+
@Index('ix_data_key_set_0', (dataKeySet: DataKeySet) => [dataKeySet.domain, dataKeySet.name], { unique: true })
|
20
|
+
@ObjectType({ description: 'Entity for DataKeySet' })
|
21
|
+
export class DataKeySet {
|
22
|
+
@PrimaryGeneratedColumn('uuid')
|
23
|
+
@Field(type => ID)
|
24
|
+
readonly id: string
|
25
|
+
|
26
|
+
@ManyToOne(type => Domain)
|
27
|
+
@Field({ nullable: true })
|
28
|
+
domain?: Domain
|
29
|
+
|
30
|
+
@RelationId((dataKeySet: DataKeySet) => dataKeySet.domain)
|
31
|
+
domainId?: string
|
32
|
+
|
33
|
+
@Column()
|
34
|
+
@Field()
|
35
|
+
name: string
|
36
|
+
|
37
|
+
@Column({
|
38
|
+
nullable: true
|
39
|
+
})
|
40
|
+
@Field({ nullable: true })
|
41
|
+
description?: string
|
42
|
+
|
43
|
+
@Column({
|
44
|
+
nullable: true
|
45
|
+
})
|
46
|
+
@Field({ nullable: true })
|
47
|
+
active?: boolean
|
48
|
+
|
49
|
+
@Column('simple-json', { nullable: true })
|
50
|
+
@Field(type => [DataKeyItem], { nullable: true })
|
51
|
+
dataKeyItems: DataKeyItem[]
|
52
|
+
|
53
|
+
@CreateDateColumn()
|
54
|
+
@Field({ nullable: true })
|
55
|
+
createdAt?: Date
|
56
|
+
|
57
|
+
@UpdateDateColumn()
|
58
|
+
@Field({ nullable: true })
|
59
|
+
updatedAt?: Date
|
60
|
+
|
61
|
+
@ManyToOne(type => User, {
|
62
|
+
nullable: true
|
63
|
+
})
|
64
|
+
@Field({ nullable: true })
|
65
|
+
creator?: User
|
66
|
+
|
67
|
+
@RelationId((dataKeySet: DataKeySet) => dataKeySet.creator)
|
68
|
+
creatorId?: string
|
69
|
+
|
70
|
+
@ManyToOne(type => User, {
|
71
|
+
nullable: true
|
72
|
+
})
|
73
|
+
@Field({ nullable: true })
|
74
|
+
updater?: User
|
75
|
+
|
76
|
+
@RelationId((dataKeySet: DataKeySet) => dataKeySet.creator)
|
77
|
+
updaterId?: string
|
78
|
+
|
79
|
+
@Field(type => String, { nullable: true })
|
80
|
+
thumbnail?: string
|
81
|
+
}
|
@@ -109,6 +109,26 @@ export class DataOoc {
|
|
109
109
|
@Field({ nullable: true })
|
110
110
|
useCase?: string
|
111
111
|
|
112
|
+
@Column({ nullable: true, default: '' })
|
113
|
+
@Field({ nullable: true })
|
114
|
+
key01?: string = ''
|
115
|
+
|
116
|
+
@Column({ nullable: true, default: '' })
|
117
|
+
@Field({ nullable: true })
|
118
|
+
key02?: string = ''
|
119
|
+
|
120
|
+
@Column({ nullable: true, default: '' })
|
121
|
+
@Field({ nullable: true })
|
122
|
+
key03?: string = ''
|
123
|
+
|
124
|
+
@Column({ nullable: true, default: '' })
|
125
|
+
@Field({ nullable: true })
|
126
|
+
key04?: string = ''
|
127
|
+
|
128
|
+
@Column({ nullable: true, default: '' })
|
129
|
+
@Field({ nullable: true })
|
130
|
+
key05?: string = ''
|
131
|
+
|
112
132
|
@Column('simple-json', { nullable: true })
|
113
133
|
@Field(type => ScalarObject, { nullable: true })
|
114
134
|
partitionKeys?: ScalarObject
|
@@ -4,6 +4,7 @@ import { getRepository } from 'typeorm'
|
|
4
4
|
import { User } from '@things-factory/auth-base'
|
5
5
|
import { Domain, getQueryBuilderFromListParams, ListParam } from '@things-factory/shell'
|
6
6
|
|
7
|
+
import { DataKeySet } from '../data-key-set/data-key-set'
|
7
8
|
import { DataSetHistory } from '../data-set-history/data-set-history'
|
8
9
|
import { DataItem } from '../data-set/data-item-type'
|
9
10
|
import { DataSet } from '../data-set/data-set'
|
@@ -39,6 +40,32 @@ export class DataSampleQuery {
|
|
39
40
|
return { items, total }
|
40
41
|
}
|
41
42
|
|
43
|
+
@Directive('@privilege(category: "data-sample", privilege: "query", domainOwnerGranted: true)')
|
44
|
+
@Query(returns => DataSampleList, { description: 'To fetch multiple data samples by data key set' })
|
45
|
+
async dataSamplesByDataKeySet(
|
46
|
+
@Arg('dataKeySetId') dataKeySetId: string,
|
47
|
+
@Args() params: ListParam,
|
48
|
+
@Ctx() context: any
|
49
|
+
): Promise<DataSampleList> {
|
50
|
+
const { domain } = context.state
|
51
|
+
|
52
|
+
const dataKeySet = await getRepository(DataKeySet).findOne(dataKeySetId)
|
53
|
+
const dataKeyItems = dataKeySet?.dataKeyItems || []
|
54
|
+
const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`)
|
55
|
+
|
56
|
+
/* TODO DataKeySet 과 관련된 DataSample만 조회되도록 할 것. */
|
57
|
+
const queryBuilder = getQueryBuilderFromListParams({
|
58
|
+
repository: getRepository(DataSample),
|
59
|
+
params,
|
60
|
+
domain,
|
61
|
+
searchables: ['name', 'description'].concat(searchables)
|
62
|
+
})
|
63
|
+
|
64
|
+
const [items, total] = await queryBuilder.getManyAndCount()
|
65
|
+
|
66
|
+
return { items, total }
|
67
|
+
}
|
68
|
+
|
42
69
|
@FieldResolver(type => [DataItem])
|
43
70
|
async dataItems(@Root() dataSample: DataSample): Promise<DataItem[]> {
|
44
71
|
const dataSetHistory: DataSetHistory = await getRepository(DataSetHistory).findOne({
|
@@ -25,6 +25,19 @@ const DATABASE_TYPE = ORMCONFIG.type
|
|
25
25
|
(dataSample: DataSample) => [dataSample.domain, dataSample.dataSet, dataSample.collectedAt],
|
26
26
|
{ unique: false }
|
27
27
|
)
|
28
|
+
@Index(
|
29
|
+
'ix_data_sample_1',
|
30
|
+
(dataSample: DataSample) => [
|
31
|
+
dataSample.domain,
|
32
|
+
dataSample.key01,
|
33
|
+
dataSample.key02,
|
34
|
+
dataSample.key03,
|
35
|
+
dataSample.key04,
|
36
|
+
dataSample.key05,
|
37
|
+
dataSample.collectedAt
|
38
|
+
],
|
39
|
+
{ unique: false }
|
40
|
+
)
|
28
41
|
@ObjectType({ description: 'Entity for DataSample' })
|
29
42
|
export class DataSample {
|
30
43
|
@PrimaryGeneratedColumn('uuid')
|
@@ -116,6 +129,26 @@ export class DataSample {
|
|
116
129
|
@Field({ nullable: true })
|
117
130
|
oos?: boolean
|
118
131
|
|
132
|
+
@Column({ nullable: true, default: '' })
|
133
|
+
@Field({ nullable: true })
|
134
|
+
key01?: string = ''
|
135
|
+
|
136
|
+
@Column({ nullable: true, default: '' })
|
137
|
+
@Field({ nullable: true })
|
138
|
+
key02?: string = ''
|
139
|
+
|
140
|
+
@Column({ nullable: true, default: '' })
|
141
|
+
@Field({ nullable: true })
|
142
|
+
key03?: string = ''
|
143
|
+
|
144
|
+
@Column({ nullable: true, default: '' })
|
145
|
+
@Field({ nullable: true })
|
146
|
+
key04?: string = ''
|
147
|
+
|
148
|
+
@Column({ nullable: true, default: '' })
|
149
|
+
@Field({ nullable: true })
|
150
|
+
key05?: string = ''
|
151
|
+
|
119
152
|
@Column({ nullable: true })
|
120
153
|
@Field({ nullable: true })
|
121
154
|
workDate?: string
|
@@ -25,7 +25,7 @@ export class DataSetMutation {
|
|
25
25
|
updater: user
|
26
26
|
})
|
27
27
|
|
28
|
-
await this._createAttachment(context, dataSet.reportTemplate, {
|
28
|
+
await this._createAttachment(context, dataSet.reportTemplate, { ref: result, cuFlag: '+' })
|
29
29
|
|
30
30
|
return result
|
31
31
|
}
|
@@ -47,7 +47,7 @@ export class DataSetMutation {
|
|
47
47
|
updater: user
|
48
48
|
})
|
49
49
|
|
50
|
-
await this._createAttachment(context, dataSet.reportTemplate, {
|
50
|
+
await this._createAttachment(context, dataSet.reportTemplate, { ref: result, cuFlag: 'M' })
|
51
51
|
|
52
52
|
return result
|
53
53
|
}
|
@@ -78,7 +78,7 @@ export class DataSetMutation {
|
|
78
78
|
updater: user
|
79
79
|
})
|
80
80
|
|
81
|
-
await this._createAttachment(context, newRecord.reportTemplate, {
|
81
|
+
await this._createAttachment(context, newRecord.reportTemplate, { ref: result, cuFlag })
|
82
82
|
|
83
83
|
results.push({
|
84
84
|
...(await dataSetRepo.findOne(result.id, {
|
@@ -101,7 +101,7 @@ export class DataSetMutation {
|
|
101
101
|
updater: user
|
102
102
|
})
|
103
103
|
|
104
|
-
await this._createAttachment(context, newRecord.reportTemplate, {
|
104
|
+
await this._createAttachment(context, newRecord.reportTemplate, { ref: result, cuFlag })
|
105
105
|
|
106
106
|
results.push({
|
107
107
|
...(await dataSetRepo.findOne(result.id, {
|
@@ -202,16 +202,16 @@ export class DataSetMutation {
|
|
202
202
|
return copiedDataSets
|
203
203
|
}
|
204
204
|
|
205
|
-
async _createAttachment(context, attachment, {
|
205
|
+
async _createAttachment(context, attachment, { ref, cuFlag }) {
|
206
206
|
if (attachment) {
|
207
|
-
|
208
|
-
cuFlag == 'M' && (await deleteAttachmentsByRef(null, { refBys: [attachmentRef] }, context))
|
207
|
+
cuFlag == 'M' && (await deleteAttachmentsByRef(null, { refBys: [ref.id] }, context))
|
209
208
|
await createAttachment(
|
210
209
|
null,
|
211
210
|
{
|
212
211
|
attachment: {
|
213
212
|
file: attachment,
|
214
|
-
|
213
|
+
refType: `${DataSet.name}-report-template`,
|
214
|
+
refBy: ref.id
|
215
215
|
}
|
216
216
|
},
|
217
217
|
context
|
@@ -7,6 +7,7 @@ import { Board } from '@things-factory/board-service'
|
|
7
7
|
import { Domain, getQueryBuilderFromListParams, ListParam } from '@things-factory/shell'
|
8
8
|
|
9
9
|
import { DataItem } from '../data-item/data-item'
|
10
|
+
import { DataKeySet } from '../data-key-set/data-key-set'
|
10
11
|
import { DataSample } from '../data-sample/data-sample'
|
11
12
|
import { DataSet } from './data-set'
|
12
13
|
import { DataSetList } from './data-set-type'
|
@@ -147,6 +148,16 @@ export class DataSetQuery {
|
|
147
148
|
}
|
148
149
|
}
|
149
150
|
|
151
|
+
@FieldResolver(type => DataKeySet, { nullable: true })
|
152
|
+
async dataKeySet(@Root() dataSet: DataSet) {
|
153
|
+
return (
|
154
|
+
dataSet.dataKeySet ||
|
155
|
+
(await getRepository(DataKeySet).findOne({
|
156
|
+
id: dataSet.dataKeySetId
|
157
|
+
}))
|
158
|
+
)
|
159
|
+
}
|
160
|
+
|
150
161
|
@FieldResolver(type => Domain)
|
151
162
|
async domain(@Root() dataSet: DataSet): Promise<Domain> {
|
152
163
|
return await getRepository(Domain).findOne(dataSet.domainId)
|
@@ -208,7 +219,8 @@ export class DataSetQuery {
|
|
208
219
|
const attachment: Attachment = await getRepository(Attachment).findOne({
|
209
220
|
where: {
|
210
221
|
domain: dataset.domainId,
|
211
|
-
|
222
|
+
refType: `${DataSet.name}-report-template`,
|
223
|
+
refBy: dataset.id
|
212
224
|
}
|
213
225
|
})
|
214
226
|
|
@@ -15,6 +15,9 @@ export class NewDataSet {
|
|
15
15
|
@Field({ nullable: true })
|
16
16
|
description?: string
|
17
17
|
|
18
|
+
@Field(type => ObjectRef, { nullable: true })
|
19
|
+
dataKeySet?: ObjectRef
|
20
|
+
|
18
21
|
@Field(type => ObjectRef, { nullable: true })
|
19
22
|
entryRole?: ObjectRef
|
20
23
|
|
@@ -75,6 +78,9 @@ export class DataSetPatch {
|
|
75
78
|
@Field({ nullable: true })
|
76
79
|
description?: string
|
77
80
|
|
81
|
+
@Field(type => ObjectRef, { nullable: true })
|
82
|
+
dataKeySet?: ObjectRef
|
83
|
+
|
78
84
|
@Field(type => ObjectRef, { nullable: true })
|
79
85
|
supervisoryRole?: ObjectRef
|
80
86
|
|
@@ -14,6 +14,7 @@ import {
|
|
14
14
|
import { Role, User } from '@things-factory/auth-base'
|
15
15
|
import { Domain, ScalarObject } from '@things-factory/shell'
|
16
16
|
|
17
|
+
import { DataKeySet } from '../data-key-set/data-key-set'
|
17
18
|
import { DataItem } from './data-item-type'
|
18
19
|
|
19
20
|
export enum DataSetEntryType {
|
@@ -71,9 +72,7 @@ export class DataSet {
|
|
71
72
|
@Field()
|
72
73
|
name: string
|
73
74
|
|
74
|
-
@Column({
|
75
|
-
nullable: true
|
76
|
-
})
|
75
|
+
@Column({ nullable: true })
|
77
76
|
@Field({ nullable: true })
|
78
77
|
description?: string
|
79
78
|
|
@@ -81,78 +80,63 @@ export class DataSet {
|
|
81
80
|
@Field({ nullable: true })
|
82
81
|
version?: number = 1
|
83
82
|
|
84
|
-
@Column({
|
85
|
-
nullable: true
|
86
|
-
})
|
83
|
+
@Column({ nullable: true })
|
87
84
|
@Field({ nullable: true })
|
88
85
|
active?: boolean
|
89
86
|
|
90
|
-
@ManyToOne(type =>
|
91
|
-
|
92
|
-
|
87
|
+
@ManyToOne(type => DataKeySet, { nullable: true })
|
88
|
+
@Field(type => DataKeySet, { nullable: true })
|
89
|
+
dataKeySet?: Role
|
90
|
+
|
91
|
+
@RelationId((dataSet: DataSet) => dataSet.dataKeySet)
|
92
|
+
dataKeySetId?: string
|
93
|
+
|
94
|
+
@ManyToOne(type => Role, { nullable: true })
|
93
95
|
@Field(type => Role, { nullable: true })
|
94
96
|
entryRole?: Role
|
95
97
|
|
96
98
|
@RelationId((dataSet: DataSet) => dataSet.entryRole)
|
97
99
|
entryRoleId?: string
|
98
100
|
|
99
|
-
@ManyToOne(type => Role, {
|
100
|
-
nullable: true
|
101
|
-
})
|
101
|
+
@ManyToOne(type => Role, { nullable: true })
|
102
102
|
@Field(type => Role, { nullable: true })
|
103
103
|
supervisoryRole?: Role
|
104
104
|
|
105
105
|
@RelationId((dataSet: DataSet) => dataSet.supervisoryRole)
|
106
106
|
supervisoryRoleId?: string
|
107
107
|
|
108
|
-
@Column({
|
109
|
-
nullable: true
|
110
|
-
})
|
108
|
+
@Column({ nullable: true })
|
111
109
|
@Field({ nullable: true })
|
112
110
|
type?: 'manual' | 'automatic' | string
|
113
111
|
|
114
|
-
@Column({
|
115
|
-
nullable: true
|
116
|
-
})
|
112
|
+
@Column({ nullable: true })
|
117
113
|
@Field({ nullable: true })
|
118
114
|
entryType?: DataSetEntryType
|
119
115
|
|
120
|
-
@Column({
|
121
|
-
nullable: true
|
122
|
-
})
|
116
|
+
@Column({ nullable: true })
|
123
117
|
@Field({ nullable: true })
|
124
118
|
entryView?: string
|
125
119
|
|
126
|
-
@Column({
|
127
|
-
nullable: true
|
128
|
-
})
|
120
|
+
@Column({ nullable: true })
|
129
121
|
@Field({ nullable: true })
|
130
122
|
monitorType?: DataSetMonitorType
|
131
123
|
|
132
|
-
@Column({
|
133
|
-
nullable: true
|
134
|
-
})
|
124
|
+
@Column({ nullable: true })
|
135
125
|
@Field({ nullable: true })
|
136
126
|
monitorView?: string
|
137
127
|
|
138
|
-
@Column({
|
139
|
-
nullable: true
|
140
|
-
})
|
128
|
+
@Column({ nullable: true })
|
141
129
|
@Field({ nullable: true })
|
142
130
|
reportType?: DataSetReportType
|
143
131
|
|
144
|
-
@Column({
|
145
|
-
nullable: true
|
146
|
-
})
|
132
|
+
@Column({ nullable: true })
|
147
133
|
@Field({ nullable: true })
|
148
134
|
reportView?: string
|
149
135
|
|
150
136
|
@Field({ nullable: true })
|
151
137
|
reportTemplate?: string
|
152
138
|
|
153
|
-
@Column({
|
154
|
-
nullable: true
|
155
|
-
})
|
139
|
+
@Column({ nullable: true })
|
156
140
|
@Field({ nullable: true })
|
157
141
|
useCase?: string
|
158
142
|
|
@@ -164,15 +148,11 @@ export class DataSet {
|
|
164
148
|
@Field(type => [DataItem], { nullable: true })
|
165
149
|
dataItems: DataItem[]
|
166
150
|
|
167
|
-
@Column({
|
168
|
-
nullable: true
|
169
|
-
})
|
151
|
+
@Column({ nullable: true })
|
170
152
|
@Field({ nullable: true })
|
171
153
|
schedule?: string
|
172
154
|
|
173
|
-
@Column({
|
174
|
-
nullable: true
|
175
|
-
})
|
155
|
+
@Column({ nullable: true })
|
176
156
|
@Field({ nullable: true })
|
177
157
|
timezone?: string
|
178
158
|
|
@@ -184,18 +164,14 @@ export class DataSet {
|
|
184
164
|
@Field({ nullable: true })
|
185
165
|
updatedAt?: Date
|
186
166
|
|
187
|
-
@ManyToOne(type => User, {
|
188
|
-
nullable: true
|
189
|
-
})
|
167
|
+
@ManyToOne(type => User, { nullable: true })
|
190
168
|
@Field({ nullable: true })
|
191
169
|
creator?: User
|
192
170
|
|
193
171
|
@RelationId((dataSet: DataSet) => dataSet.creator)
|
194
172
|
creatorId?: string
|
195
173
|
|
196
|
-
@ManyToOne(type => User, {
|
197
|
-
nullable: true
|
198
|
-
})
|
174
|
+
@ManyToOne(type => User, { nullable: true })
|
199
175
|
@Field({ nullable: true })
|
200
176
|
updater?: User
|
201
177
|
|
@@ -6,6 +6,7 @@ import { Role, User } from '@things-factory/auth-base'
|
|
6
6
|
import { Board } from '@things-factory/board-service'
|
7
7
|
import { Domain, getQueryBuilderFromListParams, ListParam, ScalarDate } from '@things-factory/shell'
|
8
8
|
|
9
|
+
import { DataSet } from '../data-set/data-set'
|
9
10
|
import { DataSetHistory } from './data-set-history'
|
10
11
|
import { DataSetHistoryList } from './data-set-history-type'
|
11
12
|
|
@@ -101,7 +102,8 @@ export class DataSetHistoryQuery {
|
|
101
102
|
const attachment: Attachment = await getRepository(Attachment).findOne({
|
102
103
|
where: {
|
103
104
|
domain: dataSetHistory.domainId,
|
104
|
-
|
105
|
+
refType: `${DataSet.name}-report-template`,
|
106
|
+
refBy: dataSetHistory.originalId
|
105
107
|
}
|
106
108
|
})
|
107
109
|
|
package/server/service/index.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { entities as DataItemEntities } from './data-item'
|
2
|
-
|
2
|
+
import { entities as DataKeySetEntities, resolvers as DataKeySetResolvers } from './data-key-set'
|
3
3
|
import { entities as DataOocEntities, resolvers as DataOocResolvers } from './data-ooc'
|
4
4
|
import { entities as DataSampleEntities, resolvers as DataSampleResolvers } from './data-sample'
|
5
5
|
import { entities as DataSensorEntities, resolvers as DataSensorResolvers } from './data-sensor'
|
@@ -12,6 +12,7 @@ import {
|
|
12
12
|
import { entities as DataSpecEntities, resolvers as DataSpecResolvers } from './data-spec'
|
13
13
|
|
14
14
|
/* EXPORT ENTITY TYPES */
|
15
|
+
export * from './data-key-set/data-key-set'
|
15
16
|
export * from './data-ooc/data-ooc'
|
16
17
|
export * from './data-sensor/data-sensor'
|
17
18
|
export * from './data-sample/data-sample'
|
@@ -22,6 +23,7 @@ export * from './data-spec/data-spec'
|
|
22
23
|
|
23
24
|
export const entities = [
|
24
25
|
/* ENTITIES */
|
26
|
+
...DataKeySetEntities,
|
25
27
|
...DataItemEntities,
|
26
28
|
...DataOocEntities,
|
27
29
|
...DataSensorEntities,
|
@@ -39,6 +41,7 @@ export const subscribers = [
|
|
39
41
|
export const schema = {
|
40
42
|
resolverClasses: [
|
41
43
|
/* RESOLVER CLASSES */
|
44
|
+
...DataKeySetResolvers,
|
42
45
|
...DataOocResolvers,
|
43
46
|
...DataSensorResolvers,
|
44
47
|
...DataSampleResolvers,
|
package/things-factory.config.js
CHANGED
@@ -16,6 +16,10 @@ export default {
|
|
16
16
|
tagname: 'data-sample-list-page',
|
17
17
|
page: 'data-sample-list'
|
18
18
|
},
|
19
|
+
{
|
20
|
+
tagname: 'data-sample-search-page',
|
21
|
+
page: 'data-sample-search'
|
22
|
+
},
|
19
23
|
{
|
20
24
|
tagname: 'data-ooc-list-page',
|
21
25
|
page: 'data-ooc-list'
|
@@ -44,6 +48,10 @@ export default {
|
|
44
48
|
tagname: 'data-report-embed-page',
|
45
49
|
page: 'data-report-embed'
|
46
50
|
},
|
51
|
+
{
|
52
|
+
tagname: 'data-key-set-list-page',
|
53
|
+
page: 'data-key-set-list'
|
54
|
+
}
|
47
55
|
],
|
48
56
|
bootstrap
|
49
57
|
}
|