@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.
Files changed (103) hide show
  1. package/README.md +20 -0
  2. package/assets/data-report.jpg +0 -0
  3. package/assets/glue-table-indices.png +0 -0
  4. package/client/pages/data-key-set/data-key-set-importer.js +4 -6
  5. package/client/pages/data-key-set/data-key-set-list-page.js +97 -2
  6. package/client/pages/data-report/data-report-embed-page.js +16 -12
  7. package/client/pages/data-report/data-report-list-page.js +16 -13
  8. package/client/pages/data-report/data-report-samples-page.js +186 -0
  9. package/client/pages/data-set/data-set-importer.js +1 -1
  10. package/client/pages/data-set/data-set-list-page.js +8 -0
  11. package/client/route.js +16 -12
  12. package/config/config.development.js +10 -0
  13. package/config/config.production.js +21 -11
  14. package/dist-server/controllers/create-data-sample.js +3 -1
  15. package/dist-server/controllers/create-data-sample.js.map +1 -1
  16. package/dist-server/controllers/jasper-report.js +17 -12
  17. package/dist-server/controllers/jasper-report.js.map +1 -1
  18. package/dist-server/controllers/shiny-report.js +44 -0
  19. package/dist-server/controllers/shiny-report.js.map +1 -0
  20. package/dist-server/routes.js +8 -0
  21. package/dist-server/routes.js.map +1 -1
  22. package/dist-server/service/data-key-set/data-key-set-mutation.js +4 -4
  23. package/dist-server/service/data-key-set/data-key-set-mutation.js.map +1 -1
  24. package/dist-server/service/data-key-set/data-key-set-query.js +9 -11
  25. package/dist-server/service/data-key-set/data-key-set-query.js.map +1 -1
  26. package/dist-server/service/data-key-set/data-key-set-type.js +17 -0
  27. package/dist-server/service/data-key-set/data-key-set-type.js.map +1 -1
  28. package/dist-server/service/data-key-set/data-key-set.js +14 -4
  29. package/dist-server/service/data-key-set/data-key-set.js.map +1 -1
  30. package/dist-server/service/data-ooc/data-ooc-mutation.js +1 -1
  31. package/dist-server/service/data-ooc/data-ooc-mutation.js.map +1 -1
  32. package/dist-server/service/data-ooc/data-ooc-query.js +9 -11
  33. package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -1
  34. package/dist-server/service/data-ooc/data-ooc-subscription.js +1 -2
  35. package/dist-server/service/data-ooc/data-ooc-subscription.js.map +1 -1
  36. package/dist-server/service/data-ooc/data-ooc-type.js +2 -3
  37. package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -1
  38. package/dist-server/service/data-ooc/data-ooc.js +4 -5
  39. package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
  40. package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -1
  41. package/dist-server/service/data-sample/data-sample-query.js +12 -14
  42. package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
  43. package/dist-server/service/data-sample/data-sample-type.js +1 -2
  44. package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
  45. package/dist-server/service/data-sample/data-sample.js +3 -4
  46. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  47. package/dist-server/service/data-sensor/data-sensor-mutation.js +4 -4
  48. package/dist-server/service/data-sensor/data-sensor-mutation.js.map +1 -1
  49. package/dist-server/service/data-sensor/data-sensor-query.js +9 -11
  50. package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -1
  51. package/dist-server/service/data-sensor/data-sensor-type.js +4 -5
  52. package/dist-server/service/data-sensor/data-sensor-type.js.map +1 -1
  53. package/dist-server/service/data-sensor/data-sensor.js +4 -5
  54. package/dist-server/service/data-sensor/data-sensor.js.map +1 -1
  55. package/dist-server/service/data-set/data-item-type.js.map +1 -1
  56. package/dist-server/service/data-set/data-set-mutation.js +5 -4
  57. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  58. package/dist-server/service/data-set/data-set-query.js +29 -34
  59. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  60. package/dist-server/service/data-set/data-set-type.js +6 -7
  61. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  62. package/dist-server/service/data-set/data-set.js +7 -6
  63. package/dist-server/service/data-set/data-set.js.map +1 -1
  64. package/dist-server/service/data-set-history/data-set-history-query.js +14 -16
  65. package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -1
  66. package/dist-server/service/data-set-history/data-set-history.js +5 -6
  67. package/dist-server/service/data-set-history/data-set-history.js.map +1 -1
  68. package/dist-server/service/index.js +0 -2
  69. package/dist-server/service/index.js.map +1 -1
  70. package/dist-server/tsconfig.tsbuildinfo +1 -1
  71. package/package.json +9 -9
  72. package/server/controllers/create-data-sample.ts +4 -0
  73. package/server/controllers/jasper-report.ts +17 -12
  74. package/server/controllers/shiny-report.ts +63 -0
  75. package/server/routes.ts +10 -0
  76. package/server/service/data-key-set/data-key-set-mutation.ts +16 -13
  77. package/server/service/data-key-set/data-key-set-query.ts +8 -9
  78. package/server/service/data-key-set/data-key-set-type.ts +13 -0
  79. package/server/service/data-key-set/data-key-set.ts +9 -0
  80. package/server/service/data-ooc/data-ooc-mutation.ts +12 -8
  81. package/server/service/data-ooc/data-ooc-query.ts +8 -9
  82. package/server/service/data-ooc/data-ooc-subscription.ts +1 -2
  83. package/server/service/data-sample/data-sample-mutation.ts +4 -1
  84. package/server/service/data-sample/data-sample-query.ts +10 -11
  85. package/server/service/data-sensor/data-sensor-mutation.ts +15 -9
  86. package/server/service/data-sensor/data-sensor-query.ts +9 -10
  87. package/server/service/data-set/data-item-type.ts +1 -1
  88. package/server/service/data-set/data-set-mutation.ts +16 -11
  89. package/server/service/data-set/data-set-query.ts +22 -26
  90. package/server/service/data-set/data-set.ts +3 -1
  91. package/server/service/data-set-history/data-set-history-query.ts +13 -14
  92. package/server/service/index.ts +0 -2
  93. package/things-factory.config.js +19 -15
  94. package/translations/en.json +1 -0
  95. package/translations/ko.json +1 -0
  96. package/translations/ms.json +1 -0
  97. package/translations/zh.json +1 -0
  98. package/dist-server/service/data-item/data-item.js +0 -155
  99. package/dist-server/service/data-item/data-item.js.map +0 -1
  100. package/dist-server/service/data-item/index.js +0 -6
  101. package/dist-server/service/data-item/index.js.map +0 -1
  102. package/server/service/data-item/data-item.ts +0 -136
  103. 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(@Arg('dataSensor') dataSensor: NewDataSensor, @Ctx() context: any): Promise<DataSensor> {
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: any
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: any
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.findOne(newRecord.id)
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: any): Promise<boolean> {
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(@Arg('ids', type => [String]) ids: string[], @Ctx() context: any): Promise<boolean> {
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: any): Promise<DataSensor> {
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: any): Promise<DataSensorList> {
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).findOne(dataSensor.applianceId || '')
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).findOne(dataSensor.dataSetId || '')
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).findOne(dataSensor.domainId)
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).findOne(dataSensor.updaterId)
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).findOne(dataSensor.creatorId)
59
+ return await getRepository(User).findOneBy({ id: dataSensor.creatorId })
61
60
  }
62
61
  }
@@ -42,7 +42,7 @@ export class DataItem {
42
42
  unit?: string
43
43
 
44
44
  @Field(type => Int, { nullable: true })
45
- quota: number
45
+ quota?: number
46
46
 
47
47
  @Field(type => ScalarObject, { nullable: true })
48
48
  spec?: { [key: string]: any }
@@ -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: any): Promise<DataSet> {
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(@Arg('id') id: string, @Arg('patch') patch: DataSetPatch, @Ctx() context: any): Promise<DataSet> {
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: any
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(newRecord.id, {
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: any): Promise<boolean> {
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: any): Promise<boolean> {
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: any
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: any): Promise<DataSet[]> {
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: any): Promise<DataSet> {
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: any): Promise<DataSetList> {
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: any): Promise<DataSetList> {
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: any): Promise<DataSetList> {
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
- /* TODO this fieldResolver should be removed. This is only for migration temporarily */
108
- if (dataSet.dataItems) {
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 await getRepository(DataItem).find({
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).findOne({
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).findOne({
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).findOne({ id: dataSet.entryView })
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).findOne({ id: dataSet.monitorView })
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).findOne({
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).findOne(dataSet.domainId)
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).findOne(dataSet.updaterId)
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).findOne(dataSet.creatorId)
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).findOne(domainId)) as Domain).timezone || 'UTC'
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).findOne(domainId)) as Domain).timezone || 'UTC'
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
  }
@@ -21,7 +21,9 @@ export enum DataSetEntryType {
21
21
  Generated = 'generated',
22
22
  Board = 'board',
23
23
  Page = 'page',
24
- ExternalURL = 'external'
24
+ ExternalURL = 'external',
25
+ Jasper = 'jasper',
26
+ Shiny = 'shiny'
25
27
  }
26
28
 
27
29
  registerEnumType(DataSetEntryType, {
@@ -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: any
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: any): Promise<DataSetHistoryList> {
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).findOne({
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).findOne({
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).findOne({ id: dataSetHistory.entryView })
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).findOne({ id: dataSetHistory.monitorView })
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).findOne({
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).findOne(dataSetHistory.domainId)
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).findOne(dataSetHistory.updaterId)
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).findOne(dataSetHistory.creatorId)
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
  }
@@ -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,
@@ -33,21 +33,25 @@ export default {
33
33
  page: 'data-report-list'
34
34
  },
35
35
  {
36
- tagname: 'jasper-report-samples-page',
37
- page: 'jasper-report-samples'
38
- },
39
- {
40
- tagname: 'jasper-report-samples-crosstab-page',
41
- page: 'jasper-report-samples-crosstab'
42
- },
43
- {
44
- tagname: 'jasper-report-oocs-page',
45
- page: 'jasper-report-oocs'
46
- },
47
- {
48
- tagname: 'data-report-embed-page',
49
- page: 'data-report-embed'
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'
@@ -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",
@@ -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": "데이타 샘플 상세",
@@ -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",
@@ -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",