@things-factory/dataset 5.0.12 → 6.0.0-alpha.0
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 +20 -0
- package/assets/data-report.jpg +0 -0
- package/assets/glue-table-indices.png +0 -0
- package/client/pages/data-key-set/data-key-set-importer.js +4 -6
- package/client/pages/data-key-set/data-key-set-list-page.js +97 -2
- package/client/pages/data-report/data-report-embed-page.js +16 -12
- package/client/pages/data-report/data-report-list-page.js +16 -13
- package/client/pages/data-report/data-report-samples-page.js +186 -0
- package/client/pages/data-set/data-set-importer.js +1 -1
- package/client/pages/data-set/data-set-list-page.js +8 -0
- package/client/route.js +16 -12
- package/config/config.development.js +10 -0
- package/config/config.production.js +21 -11
- package/dist-server/controllers/create-data-sample.js +3 -1
- package/dist-server/controllers/create-data-sample.js.map +1 -1
- package/dist-server/controllers/jasper-report.js +17 -12
- package/dist-server/controllers/jasper-report.js.map +1 -1
- package/dist-server/controllers/shiny-report.js +44 -0
- package/dist-server/controllers/shiny-report.js.map +1 -0
- package/dist-server/routes.js +8 -0
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/data-key-set/data-key-set-mutation.js +4 -4
- package/dist-server/service/data-key-set/data-key-set-mutation.js.map +1 -1
- package/dist-server/service/data-key-set/data-key-set-query.js +9 -11
- package/dist-server/service/data-key-set/data-key-set-query.js.map +1 -1
- package/dist-server/service/data-key-set/data-key-set-type.js +17 -0
- package/dist-server/service/data-key-set/data-key-set-type.js.map +1 -1
- package/dist-server/service/data-key-set/data-key-set.js +14 -4
- package/dist-server/service/data-key-set/data-key-set.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc-mutation.js +1 -1
- package/dist-server/service/data-ooc/data-ooc-mutation.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc-query.js +9 -11
- package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc-subscription.js +1 -2
- package/dist-server/service/data-ooc/data-ooc-subscription.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc-type.js +2 -3
- package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc.js +4 -5
- package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
- package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -1
- package/dist-server/service/data-sample/data-sample-query.js +12 -14
- package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
- package/dist-server/service/data-sample/data-sample-type.js +1 -2
- package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
- package/dist-server/service/data-sample/data-sample.js +3 -4
- package/dist-server/service/data-sample/data-sample.js.map +1 -1
- package/dist-server/service/data-sensor/data-sensor-mutation.js +4 -4
- package/dist-server/service/data-sensor/data-sensor-mutation.js.map +1 -1
- package/dist-server/service/data-sensor/data-sensor-query.js +9 -11
- package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -1
- package/dist-server/service/data-sensor/data-sensor-type.js +4 -5
- package/dist-server/service/data-sensor/data-sensor-type.js.map +1 -1
- package/dist-server/service/data-sensor/data-sensor.js +4 -5
- package/dist-server/service/data-sensor/data-sensor.js.map +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 +5 -4
- package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
- package/dist-server/service/data-set/data-set-query.js +29 -34
- package/dist-server/service/data-set/data-set-query.js.map +1 -1
- package/dist-server/service/data-set/data-set-type.js +6 -7
- package/dist-server/service/data-set/data-set-type.js.map +1 -1
- package/dist-server/service/data-set/data-set.js +7 -6
- package/dist-server/service/data-set/data-set.js.map +1 -1
- package/dist-server/service/data-set-history/data-set-history-query.js +14 -16
- package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -1
- package/dist-server/service/data-set-history/data-set-history.js +5 -6
- package/dist-server/service/data-set-history/data-set-history.js.map +1 -1
- package/dist-server/service/index.js +0 -2
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/server/controllers/create-data-sample.ts +4 -0
- package/server/controllers/jasper-report.ts +17 -12
- package/server/controllers/shiny-report.ts +63 -0
- package/server/routes.ts +10 -0
- package/server/service/data-key-set/data-key-set-mutation.ts +16 -13
- package/server/service/data-key-set/data-key-set-query.ts +8 -9
- package/server/service/data-key-set/data-key-set-type.ts +13 -0
- package/server/service/data-key-set/data-key-set.ts +9 -0
- package/server/service/data-ooc/data-ooc-mutation.ts +12 -8
- package/server/service/data-ooc/data-ooc-query.ts +8 -9
- package/server/service/data-ooc/data-ooc-subscription.ts +1 -2
- package/server/service/data-sample/data-sample-mutation.ts +4 -1
- package/server/service/data-sample/data-sample-query.ts +10 -11
- package/server/service/data-sensor/data-sensor-mutation.ts +15 -9
- package/server/service/data-sensor/data-sensor-query.ts +9 -10
- package/server/service/data-set/data-item-type.ts +1 -1
- package/server/service/data-set/data-set-mutation.ts +16 -11
- package/server/service/data-set/data-set-query.ts +22 -26
- package/server/service/data-set/data-set.ts +3 -1
- package/server/service/data-set-history/data-set-history-query.ts +13 -14
- package/server/service/index.ts +0 -2
- package/things-factory.config.js +19 -15
- package/translations/en.json +1 -0
- package/translations/ko.json +1 -0
- package/translations/ms.json +1 -0
- package/translations/zh.json +1 -0
- package/dist-server/service/data-item/data-item.js +0 -155
- package/dist-server/service/data-item/data-item.js.map +0 -1
- package/dist-server/service/data-item/index.js +0 -6
- package/dist-server/service/data-item/index.js.map +0 -1
- package/server/service/data-item/data-item.ts +0 -136
- package/server/service/data-item/index.ts +0 -3
@@ -8,7 +8,10 @@ import { DataSensorPatch, NewDataSensor } from './data-sensor-type'
|
|
8
8
|
export class DataSensorMutation {
|
9
9
|
@Directive('@transaction')
|
10
10
|
@Mutation(returns => DataSensor, { description: 'To create new DataSensor' })
|
11
|
-
async createDataSensor(
|
11
|
+
async createDataSensor(
|
12
|
+
@Arg('dataSensor') dataSensor: NewDataSensor,
|
13
|
+
@Ctx() context: ResolverContext
|
14
|
+
): Promise<DataSensor> {
|
12
15
|
const { domain, user, tx } = context.state
|
13
16
|
|
14
17
|
return await tx.getRepository(DataSensor).save({
|
@@ -24,13 +27,13 @@ export class DataSensorMutation {
|
|
24
27
|
async updateDataSensor(
|
25
28
|
@Arg('id') id: string,
|
26
29
|
@Arg('patch') patch: DataSensorPatch,
|
27
|
-
@Ctx() context:
|
30
|
+
@Ctx() context: ResolverContext
|
28
31
|
): Promise<DataSensor> {
|
29
32
|
const { domain, user, tx } = context.state
|
30
33
|
|
31
34
|
const repository = tx.getRepository(DataSensor)
|
32
35
|
const dataSensor = await repository.findOne({
|
33
|
-
where: { domain, id }
|
36
|
+
where: { domain: { id: domain.id }, id }
|
34
37
|
})
|
35
38
|
|
36
39
|
return await repository.save({
|
@@ -44,7 +47,7 @@ export class DataSensorMutation {
|
|
44
47
|
@Mutation(returns => [DataSensor], { description: "To modify multiple DataSensors' information" })
|
45
48
|
async updateMultipleDataSensor(
|
46
49
|
@Arg('patches', type => [DataSensorPatch]) patches: DataSensorPatch[],
|
47
|
-
@Ctx() context:
|
50
|
+
@Ctx() context: ResolverContext
|
48
51
|
): Promise<DataSensor[]> {
|
49
52
|
const { domain, user, tx } = context.state
|
50
53
|
|
@@ -71,7 +74,7 @@ export class DataSensorMutation {
|
|
71
74
|
if (_updateRecords.length > 0) {
|
72
75
|
for (let i = 0; i < _updateRecords.length; i++) {
|
73
76
|
const newRecord = _updateRecords[i]
|
74
|
-
const dataSensor = await dataSensorRepo.
|
77
|
+
const dataSensor = await dataSensorRepo.findOneBy({ id: newRecord.id })
|
75
78
|
|
76
79
|
const result = await dataSensorRepo.save({
|
77
80
|
...dataSensor,
|
@@ -88,20 +91,23 @@ export class DataSensorMutation {
|
|
88
91
|
|
89
92
|
@Directive('@transaction')
|
90
93
|
@Mutation(returns => Boolean, { description: 'To delete DataSensor' })
|
91
|
-
async deleteDataSensor(@Arg('id') id: string, @Ctx() context:
|
94
|
+
async deleteDataSensor(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
|
92
95
|
const { domain, tx } = context.state
|
93
96
|
|
94
|
-
await tx.getRepository(DataSensor).delete({ domain, id })
|
97
|
+
await tx.getRepository(DataSensor).delete({ domain: { id: domain.id }, id })
|
95
98
|
return true
|
96
99
|
}
|
97
100
|
|
98
101
|
@Directive('@transaction')
|
99
102
|
@Mutation(returns => Boolean, { description: 'To delete multiple dataSensors' })
|
100
|
-
async deleteDataSensors(
|
103
|
+
async deleteDataSensors(
|
104
|
+
@Arg('ids', type => [String]) ids: string[],
|
105
|
+
@Ctx() context: ResolverContext
|
106
|
+
): Promise<boolean> {
|
101
107
|
const { domain, tx } = context.state
|
102
108
|
|
103
109
|
await tx.getRepository(DataSensor).delete({
|
104
|
-
domain,
|
110
|
+
domain: { id: domain.id },
|
105
111
|
id: In(ids)
|
106
112
|
})
|
107
113
|
|
@@ -1,8 +1,7 @@
|
|
1
1
|
import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
2
|
-
import { getRepository } from 'typeorm'
|
3
2
|
|
4
3
|
import { Appliance, User } from '@things-factory/auth-base'
|
5
|
-
import { Domain, getQueryBuilderFromListParams, ListParam } from '@things-factory/shell'
|
4
|
+
import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
|
6
5
|
|
7
6
|
import { DataSet } from '../data-set/data-set'
|
8
7
|
import { DataSensor } from './data-sensor'
|
@@ -11,16 +10,16 @@ import { DataSensorList } from './data-sensor-type'
|
|
11
10
|
@Resolver(DataSensor)
|
12
11
|
export class DataSensorQuery {
|
13
12
|
@Query(returns => DataSensor, { description: 'To fetch a DataSensor' })
|
14
|
-
async dataSensor(@Arg('id') id: string, @Ctx() context:
|
13
|
+
async dataSensor(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<DataSensor> {
|
15
14
|
const { domain } = context.state
|
16
15
|
|
17
16
|
return await getRepository(DataSensor).findOne({
|
18
|
-
where: { domain, id }
|
17
|
+
where: { domain: { id: domain.id }, id }
|
19
18
|
})
|
20
19
|
}
|
21
20
|
|
22
21
|
@Query(returns => DataSensorList, { description: 'To fetch multiple DataSensors' })
|
23
|
-
async dataSensors(@Args() params: ListParam, @Ctx() context:
|
22
|
+
async dataSensors(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<DataSensorList> {
|
24
23
|
const { domain } = context.state
|
25
24
|
|
26
25
|
const queryBuilder = getQueryBuilderFromListParams({
|
@@ -37,26 +36,26 @@ export class DataSensorQuery {
|
|
37
36
|
|
38
37
|
@FieldResolver(type => Appliance)
|
39
38
|
async appliance(@Root() dataSensor: DataSensor): Promise<Appliance> {
|
40
|
-
return await getRepository(Appliance).
|
39
|
+
return await getRepository(Appliance).findOneBy({ id: dataSensor.applianceId || '' })
|
41
40
|
}
|
42
41
|
|
43
42
|
@FieldResolver(type => Appliance)
|
44
43
|
async dataSet(@Root() dataSensor: DataSensor): Promise<DataSet> {
|
45
|
-
return await getRepository(DataSet).
|
44
|
+
return await getRepository(DataSet).findOneBy({ id: dataSensor.dataSetId || '' })
|
46
45
|
}
|
47
46
|
|
48
47
|
@FieldResolver(type => Domain)
|
49
48
|
async domain(@Root() dataSensor: DataSensor): Promise<Domain> {
|
50
|
-
return await getRepository(Domain).
|
49
|
+
return await getRepository(Domain).findOneBy({ id: dataSensor.domainId })
|
51
50
|
}
|
52
51
|
|
53
52
|
@FieldResolver(type => User)
|
54
53
|
async updater(@Root() dataSensor: DataSensor): Promise<User> {
|
55
|
-
return await getRepository(User).
|
54
|
+
return await getRepository(User).findOneBy({ id: dataSensor.updaterId })
|
56
55
|
}
|
57
56
|
|
58
57
|
@FieldResolver(type => User)
|
59
58
|
async creator(@Root() dataSensor: DataSensor): Promise<User> {
|
60
|
-
return await getRepository(User).
|
59
|
+
return await getRepository(User).findOneBy({ id: dataSensor.creatorId })
|
61
60
|
}
|
62
61
|
}
|
@@ -13,7 +13,7 @@ export class DataSetMutation {
|
|
13
13
|
@Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
|
14
14
|
@Directive('@transaction')
|
15
15
|
@Mutation(returns => DataSet, { description: 'To create new DataSet' })
|
16
|
-
async createDataSet(@Arg('dataSet') dataSet: NewDataSet, @Ctx() context:
|
16
|
+
async createDataSet(@Arg('dataSet') dataSet: NewDataSet, @Ctx() context: ResolverContext): Promise<DataSet> {
|
17
17
|
const { domain, user, tx } = context.state
|
18
18
|
const dataSetRepo = tx.getRepository(DataSet)
|
19
19
|
|
@@ -33,12 +33,16 @@ export class DataSetMutation {
|
|
33
33
|
@Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
|
34
34
|
@Directive('@transaction')
|
35
35
|
@Mutation(returns => DataSet, { description: 'To modify DataSet information' })
|
36
|
-
async updateDataSet(
|
36
|
+
async updateDataSet(
|
37
|
+
@Arg('id') id: string,
|
38
|
+
@Arg('patch') patch: DataSetPatch,
|
39
|
+
@Ctx() context: ResolverContext
|
40
|
+
): Promise<DataSet> {
|
37
41
|
const { domain, user, tx } = context.state
|
38
42
|
const dataSetRepo = tx.getRepository(DataSet)
|
39
43
|
|
40
44
|
const dataSet = await dataSetRepo.findOne({
|
41
|
-
where: { domain, id },
|
45
|
+
where: { domain: { id: domain.id }, id },
|
42
46
|
relations: ['domain', 'dataKeySet', 'entryRole', 'supervisoryRole', 'creator', 'updater']
|
43
47
|
/* history에 항상 반영될 수 있도록 relations가 있어야 함. */
|
44
48
|
})
|
@@ -59,7 +63,7 @@ export class DataSetMutation {
|
|
59
63
|
@Mutation(returns => [DataSet], { description: "To modify multiple DataSets' information" })
|
60
64
|
async updateMultipleDataSet(
|
61
65
|
@Arg('patches', type => [DataSetPatch]) patches: DataSetPatch[],
|
62
|
-
@Ctx() context:
|
66
|
+
@Ctx() context: ResolverContext
|
63
67
|
): Promise<DataSet[]> {
|
64
68
|
const { domain, user, tx } = context.state
|
65
69
|
const dataSetRepo = tx.getRepository(DataSet)
|
@@ -93,7 +97,8 @@ export class DataSetMutation {
|
|
93
97
|
const cuFlag = 'M'
|
94
98
|
for (let i = 0; i < _updateRecords.length; i++) {
|
95
99
|
const newRecord = _updateRecords[i]
|
96
|
-
const dataSet = await dataSetRepo.findOne(
|
100
|
+
const dataSet = await dataSetRepo.findOne({
|
101
|
+
where: { id: newRecord.id },
|
97
102
|
/* history에 항상 반영될 수 있도록 relations가 있어야 함. */
|
98
103
|
relations: ['domain', 'dataKeySet', 'entryRole', 'supervisoryRole', 'creator', 'updater']
|
99
104
|
})
|
@@ -119,10 +124,10 @@ export class DataSetMutation {
|
|
119
124
|
@Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
|
120
125
|
@Directive('@transaction')
|
121
126
|
@Mutation(returns => Boolean, { description: 'To delete DataSet' })
|
122
|
-
async deleteDataSet(@Arg('id') id: string, @Ctx() context:
|
127
|
+
async deleteDataSet(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
|
123
128
|
const { domain, tx } = context.state
|
124
129
|
|
125
|
-
await tx.getRepository(DataSet).delete({ domain, id })
|
130
|
+
await tx.getRepository(DataSet).delete({ domain: { id: domain.id }, id })
|
126
131
|
await deleteAttachmentsByRef(null, { refBys: [`report-${id}`] }, context)
|
127
132
|
return true
|
128
133
|
}
|
@@ -130,11 +135,11 @@ export class DataSetMutation {
|
|
130
135
|
@Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
|
131
136
|
@Directive('@transaction')
|
132
137
|
@Mutation(returns => Boolean, { description: 'To delete multiple dataSets' })
|
133
|
-
async deleteDataSets(@Arg('ids', type => [String]) ids: string[], @Ctx() context:
|
138
|
+
async deleteDataSets(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {
|
134
139
|
const { domain, tx } = context.state
|
135
140
|
|
136
141
|
await tx.getRepository(DataSet).delete({
|
137
|
-
domain,
|
142
|
+
domain: { id: domain.id },
|
138
143
|
id: In(ids)
|
139
144
|
})
|
140
145
|
|
@@ -148,7 +153,7 @@ export class DataSetMutation {
|
|
148
153
|
@Mutation(returns => Boolean, { description: 'To import multiple data-sets' })
|
149
154
|
async importDataSets(
|
150
155
|
@Arg('dataSets', type => [DataSetPatch]) dataSets: DataSet[],
|
151
|
-
@Ctx() context:
|
156
|
+
@Ctx() context: ResolverContext
|
152
157
|
): Promise<boolean> {
|
153
158
|
const { domain, tx } = context.state
|
154
159
|
const dataSetRepo = tx.getRepository(DataSet)
|
@@ -168,7 +173,7 @@ export class DataSetMutation {
|
|
168
173
|
@Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
|
169
174
|
@Directive('@transaction')
|
170
175
|
@Mutation(returns => [DataSet], { description: 'To copy multiple data-sets' })
|
171
|
-
async copyDataSets(@Arg('ids', type => [String]) ids: string[], @Ctx() context:
|
176
|
+
async copyDataSets(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<DataSet[]> {
|
172
177
|
const { domain, user, tx } = context.state
|
173
178
|
const dataSetRepo = tx.getRepository(DataSet)
|
174
179
|
|
@@ -1,14 +1,13 @@
|
|
1
1
|
import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
2
|
-
import { getRepository } from 'typeorm'
|
3
2
|
|
4
3
|
import { Attachment } from '@things-factory/attachment-base'
|
5
4
|
import { Role, User } from '@things-factory/auth-base'
|
6
5
|
import { Board } from '@things-factory/board-service'
|
7
|
-
import { Domain, getQueryBuilderFromListParams, ListParam } from '@things-factory/shell'
|
6
|
+
import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
|
8
7
|
|
9
|
-
import { DataItem } from '../data-item/data-item'
|
10
8
|
import { DataKeySet } from '../data-key-set/data-key-set'
|
11
9
|
import { DataSample } from '../data-sample/data-sample'
|
10
|
+
import { DataItem } from './data-item-type'
|
12
11
|
import { DataSet } from './data-set'
|
13
12
|
import { DataSetList } from './data-set-type'
|
14
13
|
|
@@ -18,17 +17,17 @@ var parser = require('cron-parser')
|
|
18
17
|
export class DataSetQuery {
|
19
18
|
@Directive('@privilege(category: "data-set", privilege: "query", domainOwnerGranted: true)')
|
20
19
|
@Query(returns => DataSet, { description: 'To fetch a DataSet' })
|
21
|
-
async dataSet(@Arg('id') id: string, @Ctx() context:
|
20
|
+
async dataSet(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<DataSet> {
|
22
21
|
const { domain } = context.state
|
23
22
|
|
24
23
|
return await getRepository(DataSet).findOne({
|
25
|
-
where: { domain, id }
|
24
|
+
where: { domain: { id: domain.id }, id }
|
26
25
|
})
|
27
26
|
}
|
28
27
|
|
29
28
|
@Directive('@privilege(category: "data-set", privilege: "query", domainOwnerGranted: true)')
|
30
29
|
@Query(returns => DataSetList, { description: 'To fetch multiple DataSets' })
|
31
|
-
async dataSets(@Args() params: ListParam, @Ctx() context:
|
30
|
+
async dataSets(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<DataSetList> {
|
32
31
|
const { domain } = context.state
|
33
32
|
|
34
33
|
const queryBuilder = getQueryBuilderFromListParams({
|
@@ -45,7 +44,7 @@ export class DataSetQuery {
|
|
45
44
|
}
|
46
45
|
|
47
46
|
@Query(returns => DataSetList, { description: 'To fetch multiple DataSets for data entry manually' })
|
48
|
-
async dataSetsForEntry(@Args() params: ListParam, @Ctx() context:
|
47
|
+
async dataSetsForEntry(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<DataSetList> {
|
49
48
|
var { domain, user } = context.state
|
50
49
|
|
51
50
|
/* 조회한 사용자가 entry-role을 가진 data-set 리스트만 반환 */
|
@@ -74,7 +73,7 @@ export class DataSetQuery {
|
|
74
73
|
}
|
75
74
|
|
76
75
|
@Query(returns => DataSetList, { description: 'To fetch multiple DataSets to see data report' })
|
77
|
-
async dataSetsForReport(@Args() params: ListParam, @Ctx() context:
|
76
|
+
async dataSetsForReport(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<DataSetList> {
|
78
77
|
var { domain, user } = context.state
|
79
78
|
|
80
79
|
/* 조회한 사용자가 supervisory 역할을 가진 data-set 리스트만 반환 */
|
@@ -104,21 +103,18 @@ export class DataSetQuery {
|
|
104
103
|
|
105
104
|
@FieldResolver(type => [DataItem])
|
106
105
|
async dataItems(@Root() dataSet: DataSet): Promise<DataItem[]> {
|
107
|
-
|
108
|
-
|
109
|
-
return dataSet.dataItems as DataItem[]
|
106
|
+
if (dataSet.dataItems instanceof Array) {
|
107
|
+
return dataSet.dataItems.filter(item => item.name)
|
110
108
|
}
|
111
109
|
|
112
|
-
return
|
113
|
-
dataSet
|
114
|
-
})
|
110
|
+
return []
|
115
111
|
}
|
116
112
|
|
117
113
|
@FieldResolver(type => Role)
|
118
114
|
async entryRole(@Root() dataSet: DataSet): Promise<Role> {
|
119
115
|
return (
|
120
116
|
dataSet.entryRole ||
|
121
|
-
(await getRepository(Role).
|
117
|
+
(await getRepository(Role).findOneBy({
|
122
118
|
id: dataSet.entryRoleId
|
123
119
|
}))
|
124
120
|
)
|
@@ -128,7 +124,7 @@ export class DataSetQuery {
|
|
128
124
|
async supervisoryRole(@Root() dataSet: DataSet): Promise<Role> {
|
129
125
|
return (
|
130
126
|
dataSet.supervisoryRole ||
|
131
|
-
(await getRepository(Role).
|
127
|
+
(await getRepository(Role).findOneBy({
|
132
128
|
id: dataSet.supervisoryRoleId
|
133
129
|
}))
|
134
130
|
)
|
@@ -137,14 +133,14 @@ export class DataSetQuery {
|
|
137
133
|
@FieldResolver(type => Board, { nullable: true })
|
138
134
|
async entryBoard(@Root() dataSet: DataSet) {
|
139
135
|
if (dataSet.entryType == 'board' && dataSet.entryView) {
|
140
|
-
return await getRepository(Board).
|
136
|
+
return await getRepository(Board).findOneBy({ id: dataSet.entryView })
|
141
137
|
}
|
142
138
|
}
|
143
139
|
|
144
140
|
@FieldResolver(type => Board, { nullable: true })
|
145
141
|
async monitorBoard(@Root() dataSet: DataSet) {
|
146
142
|
if (dataSet.monitorType == 'board' && dataSet.monitorView) {
|
147
|
-
return await getRepository(Board).
|
143
|
+
return await getRepository(Board).findOneBy({ id: dataSet.monitorView })
|
148
144
|
}
|
149
145
|
}
|
150
146
|
|
@@ -152,7 +148,7 @@ export class DataSetQuery {
|
|
152
148
|
async dataKeySet(@Root() dataSet: DataSet) {
|
153
149
|
return (
|
154
150
|
dataSet.dataKeySet ||
|
155
|
-
(await getRepository(DataKeySet).
|
151
|
+
(await getRepository(DataKeySet).findOneBy({
|
156
152
|
id: dataSet.dataKeySetId
|
157
153
|
}))
|
158
154
|
)
|
@@ -160,24 +156,24 @@ export class DataSetQuery {
|
|
160
156
|
|
161
157
|
@FieldResolver(type => Domain)
|
162
158
|
async domain(@Root() dataSet: DataSet): Promise<Domain> {
|
163
|
-
return await getRepository(Domain).
|
159
|
+
return await getRepository(Domain).findOneBy({ id: dataSet.domainId })
|
164
160
|
}
|
165
161
|
|
166
162
|
@FieldResolver(type => User)
|
167
163
|
async updater(@Root() dataSet: DataSet): Promise<User> {
|
168
|
-
return await getRepository(User).
|
164
|
+
return await getRepository(User).findOneBy({ id: dataSet.updaterId })
|
169
165
|
}
|
170
166
|
|
171
167
|
@FieldResolver(type => User)
|
172
168
|
async creator(@Root() dataSet: DataSet): Promise<User> {
|
173
|
-
return await getRepository(User).
|
169
|
+
return await getRepository(User).findOneBy({ id: dataSet.creatorId })
|
174
170
|
}
|
175
171
|
|
176
172
|
@FieldResolver(type => Date, { nullable: true })
|
177
173
|
async latestCollectedAt(@Root() dataSet: DataSet): Promise<Date> {
|
178
174
|
const sample = await getRepository(DataSample).findOne({
|
179
175
|
select: ['collectedAt'],
|
180
|
-
where: { dataSet },
|
176
|
+
where: { dataSet: { id: dataSet.id } },
|
181
177
|
order: { collectedAt: 'DESC' }
|
182
178
|
})
|
183
179
|
|
@@ -193,7 +189,7 @@ export class DataSetQuery {
|
|
193
189
|
}
|
194
190
|
|
195
191
|
var interval = parser.parseExpression(schedule, {
|
196
|
-
tz: timezone || ((await getRepository(Domain).
|
192
|
+
tz: timezone || ((await getRepository(Domain).findOneBy({ id: domainId })) as Domain).timezone || 'UTC'
|
197
193
|
})
|
198
194
|
|
199
195
|
return interval.next().toDate()
|
@@ -208,7 +204,7 @@ export class DataSetQuery {
|
|
208
204
|
}
|
209
205
|
|
210
206
|
var interval = parser.parseExpression(schedule, {
|
211
|
-
tz: timezone || ((await getRepository(Domain).
|
207
|
+
tz: timezone || ((await getRepository(Domain).findOneBy({ id: domainId })) as Domain).timezone || 'UTC'
|
212
208
|
})
|
213
209
|
|
214
210
|
return interval.prev().toDate()
|
@@ -218,7 +214,7 @@ export class DataSetQuery {
|
|
218
214
|
async reportTemplate(@Root() dataset: DataSet): Promise<string | undefined> {
|
219
215
|
const attachment: Attachment = await getRepository(Attachment).findOne({
|
220
216
|
where: {
|
221
|
-
domain: dataset.domainId,
|
217
|
+
domain: { id: dataset.domainId },
|
222
218
|
refType: `${DataSet.name}-report-template`,
|
223
219
|
refBy: dataset.id
|
224
220
|
}
|
@@ -1,10 +1,9 @@
|
|
1
1
|
import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
2
|
-
import { getRepository } from 'typeorm'
|
3
2
|
|
4
3
|
import { Attachment } from '@things-factory/attachment-base'
|
5
4
|
import { Role, User } from '@things-factory/auth-base'
|
6
5
|
import { Board } from '@things-factory/board-service'
|
7
|
-
import { Domain, getQueryBuilderFromListParams, ListParam, ScalarDate } from '@things-factory/shell'
|
6
|
+
import { Domain, getQueryBuilderFromListParams, getRepository, ListParam, ScalarDate } from '@things-factory/shell'
|
8
7
|
|
9
8
|
import { DataKeySet } from '../data-key-set/data-key-set'
|
10
9
|
import { DataSet } from '../data-set/data-set'
|
@@ -18,18 +17,18 @@ export class DataSetHistoryQuery {
|
|
18
17
|
async dataSetHistory(
|
19
18
|
@Arg('id') id: string,
|
20
19
|
@Arg('timestamp', type => ScalarDate) timestamp: Date,
|
21
|
-
@Ctx() context:
|
20
|
+
@Ctx() context: ResolverContext
|
22
21
|
): Promise<DataSetHistory> {
|
23
22
|
const { domain } = context.state
|
24
23
|
|
25
24
|
return await getRepository(DataSetHistory).findOne({
|
26
|
-
where: { domain, originalId: id, updatedAt: timestamp }
|
25
|
+
where: { domain: { id: domain.id }, originalId: id, updatedAt: timestamp }
|
27
26
|
})
|
28
27
|
}
|
29
28
|
|
30
29
|
@Directive('@privilege(category: "data-set-history", privilege: "query", domainOwnerGranted: true)')
|
31
30
|
@Query(returns => DataSetHistoryList, { description: 'To fetch multiple DataSetHistories' })
|
32
|
-
async dataSetHistories(@Args() params: ListParam, @Ctx() context:
|
31
|
+
async dataSetHistories(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<DataSetHistoryList> {
|
33
32
|
const { domain } = context.state
|
34
33
|
|
35
34
|
const queryBuilder = getQueryBuilderFromListParams({
|
@@ -48,7 +47,7 @@ export class DataSetHistoryQuery {
|
|
48
47
|
async entryRole(@Root() dataSetHistory: DataSetHistory): Promise<Role> {
|
49
48
|
return (
|
50
49
|
dataSetHistory.entryRole ||
|
51
|
-
(await getRepository(Role).
|
50
|
+
(await getRepository(Role).findOneBy({
|
52
51
|
id: dataSetHistory.entryRoleId
|
53
52
|
}))
|
54
53
|
)
|
@@ -58,7 +57,7 @@ export class DataSetHistoryQuery {
|
|
58
57
|
async supervisoryRole(@Root() dataSetHistory: DataSetHistory): Promise<Role> {
|
59
58
|
return (
|
60
59
|
dataSetHistory.supervisoryRole ||
|
61
|
-
(await getRepository(Role).
|
60
|
+
(await getRepository(Role).findOneBy({
|
62
61
|
id: dataSetHistory.supervisoryRoleId
|
63
62
|
}))
|
64
63
|
)
|
@@ -67,14 +66,14 @@ export class DataSetHistoryQuery {
|
|
67
66
|
@FieldResolver(type => Board, { nullable: true })
|
68
67
|
async entryBoard(@Root() dataSetHistory: DataSetHistory) {
|
69
68
|
if (dataSetHistory.entryType == 'board' && dataSetHistory.entryView) {
|
70
|
-
return await getRepository(Board).
|
69
|
+
return await getRepository(Board).findOneBy({ id: dataSetHistory.entryView })
|
71
70
|
}
|
72
71
|
}
|
73
72
|
|
74
73
|
@FieldResolver(type => Board, { nullable: true })
|
75
74
|
async monitorBoard(@Root() dataSetHistory: DataSetHistory) {
|
76
75
|
if (dataSetHistory.monitorType == 'board' && dataSetHistory.monitorView) {
|
77
|
-
return await getRepository(Board).
|
76
|
+
return await getRepository(Board).findOneBy({ id: dataSetHistory.monitorView })
|
78
77
|
}
|
79
78
|
}
|
80
79
|
|
@@ -82,7 +81,7 @@ export class DataSetHistoryQuery {
|
|
82
81
|
async dataKeySet(@Root() dataSet: DataSet) {
|
83
82
|
return (
|
84
83
|
dataSet.dataKeySet ||
|
85
|
-
(await getRepository(DataKeySet).
|
84
|
+
(await getRepository(DataKeySet).findOneBy({
|
86
85
|
id: dataSet.dataKeySetId
|
87
86
|
}))
|
88
87
|
)
|
@@ -95,24 +94,24 @@ export class DataSetHistoryQuery {
|
|
95
94
|
|
96
95
|
@FieldResolver(type => Domain)
|
97
96
|
async domain(@Root() dataSetHistory: DataSetHistory): Promise<Domain> {
|
98
|
-
return await getRepository(Domain).
|
97
|
+
return await getRepository(Domain).findOneBy({ id: dataSetHistory.domainId })
|
99
98
|
}
|
100
99
|
|
101
100
|
@FieldResolver(type => User)
|
102
101
|
async updater(@Root() dataSetHistory: DataSetHistory): Promise<User> {
|
103
|
-
return await getRepository(User).
|
102
|
+
return await getRepository(User).findOneBy({ id: dataSetHistory.updaterId })
|
104
103
|
}
|
105
104
|
|
106
105
|
@FieldResolver(type => User)
|
107
106
|
async creator(@Root() dataSetHistory: DataSetHistory): Promise<User> {
|
108
|
-
return await getRepository(User).
|
107
|
+
return await getRepository(User).findOneBy({ id: dataSetHistory.creatorId })
|
109
108
|
}
|
110
109
|
|
111
110
|
@FieldResolver(type => String)
|
112
111
|
async reportTemplate(@Root() dataSetHistory: DataSetHistory): Promise<string | undefined> {
|
113
112
|
const attachment: Attachment = await getRepository(Attachment).findOne({
|
114
113
|
where: {
|
115
|
-
domain: dataSetHistory.domainId,
|
114
|
+
domain: { id: dataSetHistory.domainId },
|
116
115
|
refType: `${DataSet.name}-report-template`,
|
117
116
|
refBy: dataSetHistory.originalId
|
118
117
|
}
|
package/server/service/index.ts
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
import { entities as DataItemEntities } from './data-item'
|
2
1
|
import { entities as DataKeySetEntities, resolvers as DataKeySetResolvers } from './data-key-set'
|
3
2
|
import { entities as DataOocEntities, resolvers as DataOocResolvers } from './data-ooc'
|
4
3
|
import { entities as DataSampleEntities, resolvers as DataSampleResolvers } from './data-sample'
|
@@ -24,7 +23,6 @@ export * from './data-spec/data-spec'
|
|
24
23
|
export const entities = [
|
25
24
|
/* ENTITIES */
|
26
25
|
...DataKeySetEntities,
|
27
|
-
...DataItemEntities,
|
28
26
|
...DataOocEntities,
|
29
27
|
...DataSensorEntities,
|
30
28
|
...DataSampleEntities,
|
package/things-factory.config.js
CHANGED
@@ -33,21 +33,25 @@ export default {
|
|
33
33
|
page: 'data-report-list'
|
34
34
|
},
|
35
35
|
{
|
36
|
-
tagname: '
|
37
|
-
page: '
|
38
|
-
},
|
39
|
-
{
|
40
|
-
|
41
|
-
|
42
|
-
},
|
43
|
-
{
|
44
|
-
|
45
|
-
|
46
|
-
},
|
47
|
-
{
|
48
|
-
|
49
|
-
|
50
|
-
},
|
36
|
+
tagname: 'data-report-samples-page',
|
37
|
+
page: 'data-report-samples'
|
38
|
+
},
|
39
|
+
// {
|
40
|
+
// tagname: 'jasper-report-samples-page',
|
41
|
+
// page: 'jasper-report-samples'
|
42
|
+
// },
|
43
|
+
// {
|
44
|
+
// tagname: 'jasper-report-samples-crosstab-page',
|
45
|
+
// page: 'jasper-report-samples-crosstab'
|
46
|
+
// },
|
47
|
+
// {
|
48
|
+
// tagname: 'jasper-report-oocs-page',
|
49
|
+
// page: 'jasper-report-oocs'
|
50
|
+
// },
|
51
|
+
// {
|
52
|
+
// tagname: 'data-report-embed-page',
|
53
|
+
// page: 'data-report-embed'
|
54
|
+
// },
|
51
55
|
{
|
52
56
|
tagname: 'data-key-set-list-page',
|
53
57
|
page: 'data-key-set-list'
|
package/translations/en.json
CHANGED
@@ -64,6 +64,7 @@
|
|
64
64
|
"title.data-item list": "data item list",
|
65
65
|
"title.data-monitor-view": "data monitor view",
|
66
66
|
"title.data-report-view": "data report view",
|
67
|
+
"title.data-report samples": "samples data report",
|
67
68
|
"title.data-ooc list": "data OOC list",
|
68
69
|
"title.data-ooc view": "data OOC view",
|
69
70
|
"title.data-sample list": "data sample list",
|
package/translations/ko.json
CHANGED
@@ -65,6 +65,7 @@
|
|
65
65
|
"title.data-ooc list": "데이타 이탈점 조회",
|
66
66
|
"title.data-ooc view": "데이타 이탈점 상세",
|
67
67
|
"title.data-report-view": "데이타 리포트",
|
68
|
+
"title.data-report samples": "샘플 데이타 리포트",
|
68
69
|
"title.data-sample list": "데이타 샘플 조회",
|
69
70
|
"title.data-sample search": "데이타 샘플 검색",
|
70
71
|
"title.data-sample view": "데이타 샘플 상세",
|
package/translations/ms.json
CHANGED
@@ -62,6 +62,7 @@
|
|
62
62
|
"title.data-item list": "data item list",
|
63
63
|
"title.data-monitor-view": "data monitor view",
|
64
64
|
"title.data-report-view": "data report view",
|
65
|
+
"title.data-report samples": "samples data report",
|
65
66
|
"title.data-ooc list": "data OOC list",
|
66
67
|
"title.data-ooc view": "data OOC view",
|
67
68
|
"title.data-sample list": "data sample list",
|
package/translations/zh.json
CHANGED
@@ -62,6 +62,7 @@
|
|
62
62
|
"title.data-item list": "data item list",
|
63
63
|
"title.data-monitor-view": "data monitor view",
|
64
64
|
"title.data-report-view": "data report view",
|
65
|
+
"title.data-report samples": "samples data report",
|
65
66
|
"title.data-ooc list": "data OOC list",
|
66
67
|
"title.data-ooc view": "data OOC view",
|
67
68
|
"title.data-sample list": "data sample list",
|