@things-factory/dataset 8.0.0-alpha.31 → 8.0.0-alpha.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. package/client/pages/data-entry/data-entry-list-page.ts +3 -2
  2. package/client/pages/data-set/data-set-list-page.ts +10 -0
  3. package/dist-client/pages/data-entry/data-entry-list-page.js +2 -2
  4. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
  5. package/dist-client/pages/data-set/data-set-list-page.js +10 -0
  6. package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
  7. package/dist-client/tsconfig.tsbuildinfo +1 -1
  8. package/dist-server/activities/activity-data-collect.d.ts +1 -0
  9. package/dist-server/activities/activity-data-collect.js +1 -0
  10. package/dist-server/activities/activity-data-collect.js.map +1 -1
  11. package/dist-server/activities/activity-data-review.d.ts +1 -0
  12. package/dist-server/activities/activity-data-review.js +1 -0
  13. package/dist-server/activities/activity-data-review.js.map +1 -1
  14. package/dist-server/activities/activity-ooc-resolve.d.ts +1 -0
  15. package/dist-server/activities/activity-ooc-resolve.js +2 -1
  16. package/dist-server/activities/activity-ooc-resolve.js.map +1 -1
  17. package/dist-server/activities/activity-ooc-review.d.ts +1 -0
  18. package/dist-server/activities/activity-ooc-review.js +2 -1
  19. package/dist-server/activities/activity-ooc-review.js.map +1 -1
  20. package/dist-server/controllers/create-data-sample.js +2 -2
  21. package/dist-server/controllers/create-data-sample.js.map +1 -1
  22. package/dist-server/controllers/issue-data-collection-task.js +2 -3
  23. package/dist-server/controllers/issue-data-collection-task.js.map +1 -1
  24. package/dist-server/service/data-set/data-set-mutation.js +3 -2
  25. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  26. package/dist-server/service/data-set/data-set-type.d.ts +2 -0
  27. package/dist-server/service/data-set/data-set-type.js +14 -0
  28. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  29. package/dist-server/service/data-set/data-set.d.ts +1 -0
  30. package/dist-server/service/data-set/data-set.js +8 -0
  31. package/dist-server/service/data-set/data-set.js.map +1 -1
  32. package/dist-server/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +2 -2
  34. package/server/activities/activity-data-collect.ts +1 -0
  35. package/server/activities/activity-data-review.ts +6 -1
  36. package/server/activities/activity-ooc-resolve.ts +2 -1
  37. package/server/activities/activity-ooc-review.ts +2 -1
  38. package/server/controllers/create-data-sample.ts +2 -2
  39. package/server/controllers/issue-data-collection-task.ts +2 -5
  40. package/server/service/data-set/data-set-mutation.ts +3 -2
  41. package/server/service/data-set/data-set-type.ts +12 -1
  42. package/server/service/data-set/data-set.ts +7 -0
  43. package/translations/en.json +1 -0
  44. package/translations/ja.json +1 -0
  45. package/translations/ko.json +1 -0
  46. package/translations/ms.json +1 -0
  47. package/translations/zh.json +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/dataset",
3
- "version": "8.0.0-alpha.31",
3
+ "version": "8.0.0-alpha.33",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "dist-client/index.js",
6
6
  "things-factory": true,
@@ -56,5 +56,5 @@
56
56
  "simple-statistics": "^7.8.3",
57
57
  "statistics": "^3.3.0"
58
58
  },
59
- "gitHead": "3d8df8131f3b0c1898c525d2928b7f9dc846840e"
59
+ "gitHead": "63554d4eb949ba731c493684e643bd9eac40f3e9"
60
60
  }
@@ -95,5 +95,6 @@ export const ActivityDataCollect = {
95
95
  reportType: 'custom-element',
96
96
  reportSource: 'activity-data-collect-view',
97
97
  thumbnail: '/assets/images/data-collect.png',
98
+ standardTime: 24 * 60 * 60, // seconds
98
99
  callback /* Called when there is a change in the lifecycle of a task (activity-instance). */
99
100
  }
@@ -3,7 +3,11 @@ import { ActivityInstance, ActivityInstanceStatus, UpdateActivityInstanceStateAd
3
3
  import { DataOocStatus } from '../service/data-ooc/data-ooc'
4
4
  import { DataSample } from '../service/data-sample/data-sample'
5
5
 
6
- async function callback(activityInstance: ActivityInstance, addendum: UpdateActivityInstanceStateAddendum, context: ResolverContext) {
6
+ async function callback(
7
+ activityInstance: ActivityInstance,
8
+ addendum: UpdateActivityInstanceStateAddendum,
9
+ context: ResolverContext
10
+ ) {
7
11
  const { domain, tx, user } = context.state
8
12
  const { input, output, state } = activityInstance
9
13
 
@@ -73,5 +77,6 @@ export const ActivityDataReview = {
73
77
  reportType: 'custom-element',
74
78
  reportSource: 'activity-data-review-view',
75
79
  thumbnail: '/assets/images/data-collect.png',
80
+ standardTime: 24 * 60 * 60, // seconds
76
81
  callback /* Called when there is a change in the lifecycle of a task (activity-instance). */
77
82
  }
@@ -30,7 +30,7 @@ async function callback(
30
30
  const corrector = activityThreads[0]?.assignee
31
31
 
32
32
  const { dataOocId } = input
33
- const correctiveAction = output.action
33
+ const correctiveAction = output?.action
34
34
 
35
35
  var dataOoc = await tx.getRepository(DataOoc).findOne({
36
36
  where: {
@@ -118,5 +118,6 @@ export const ActivityOocResolve = {
118
118
  reportType: 'custom-element',
119
119
  reportSource: 'data-ooc-report-page',
120
120
  thumbnail: '/assets/images/ooc.png',
121
+ standardTime: 24 * 60 * 60, // seconds
121
122
  callback /* Called when there is a change in the lifecycle of a task (activity-instance). */
122
123
  }
@@ -62,7 +62,7 @@ async function callback(
62
62
  name: `[OOC 조치] ${dataSet.name}`,
63
63
  description: dataSet.description,
64
64
  activityId: activity.id,
65
- dueAt: new Date(terminatedAt.getTime() + 24 * 60 * 60 * 1000),
65
+ dueAt: new Date(terminatedAt.getTime() + (activity.standardTime || 24 * 60 * 60) * 1000),
66
66
  input: {
67
67
  dataOocId,
68
68
  instruction: correctiveInstruction
@@ -139,5 +139,6 @@ export const ActivityOocReview = {
139
139
  reportType: 'custom-element',
140
140
  reportSource: 'data-ooc-report-page',
141
141
  thumbnail: '/assets/images/ooc.png',
142
+ standardTime: 24 * 60 * 60, // seconds
142
143
  callback /* Called when there is a change in the lifecycle of a task (activity-instance). */
143
144
  }
@@ -277,7 +277,7 @@ export async function createDataSample(newDataSample: NewDataSample, context: Re
277
277
  name: `[OOC 검토] ${dataSet.name}`,
278
278
  description: dataSet.description,
279
279
  activityId: activity.id,
280
- dueAt: new Date(collectedAt.getTime() + 24 * 60 * 60 * 1000),
280
+ dueAt: new Date(collectedAt.getTime() + (activity.standardTime || 24 * 60 * 60) * 1000),
281
281
  input: {
282
282
  dataOocId: dataOoc.id
283
283
  },
@@ -384,7 +384,7 @@ export async function createDataSample(newDataSample: NewDataSample, context: Re
384
384
  name: `[Data 검토] ${dataSet.name}`,
385
385
  description: dataSet.description,
386
386
  activityId: activity.id,
387
- dueAt: new Date(collectedAt.getTime() + 24 * 60 * 60 * 1000),
387
+ dueAt: new Date(collectedAt.getTime() + (activity.standardTime || 24 * 60 * 60) * 1000),
388
388
  input: {
389
389
  dataSampleId: dataSample.id
390
390
  },
@@ -4,7 +4,6 @@ import { Domain, getDataSource } from '@things-factory/shell'
4
4
  import { Activity, ActivityInstance, issue } from '@things-factory/worklist'
5
5
 
6
6
  import { DataSet } from '../service/data-set/data-set'
7
- import { OrgMemberTargetType } from '@things-factory/organization'
8
7
 
9
8
  export async function issueDataCollectionTask(
10
9
  domainId: string,
@@ -34,9 +33,7 @@ export async function issueDataCollectionTask(
34
33
  })) as Activity
35
34
 
36
35
  if (activity) {
37
- const { entryRole } = dataSet
38
-
39
- // const assignees = entryRole ? [{ type: OrgMemberTargetType.Role, value: entryRole.id, assignee: entryRole }] : []
36
+ const { entryRole, timeLimit } = dataSet
40
37
 
41
38
  /* 해당 dataset에 대한 데이타 수집 태스크를 dataset entryRole에게 할당한다. */
42
39
  if (entryRole) {
@@ -44,7 +41,7 @@ export async function issueDataCollectionTask(
44
41
  name: `[Data 수집] ${dataSet.name}`,
45
42
  description: dataSet.description,
46
43
  activityId: activity.id,
47
- dueAt: new Date(Date.now() + 24 * 60 * 60 * 1000),
44
+ dueAt: new Date(Date.now() + (timeLimit || activity.standardTime || 24 * 60 * 60) * 1000),
48
45
  input: {
49
46
  dataSetId: dataSet.id,
50
47
  dataSetName: dataSet.name
@@ -243,14 +243,15 @@ export class DataSetMutation {
243
243
  }
244
244
  })
245
245
 
246
- const { supervisoryRoleId } = dataSet
246
+ const { supervisoryRoleId, entryRoleId } = dataSet
247
+ const allowedRoles = [supervisoryRoleId, entryRoleId].filter(Boolean)
247
248
 
248
249
  const me = await getRepository(User, tx).findOne({
249
250
  where: { id: user.id },
250
251
  relations: ['roles']
251
252
  })
252
253
 
253
- if (!me.roles.find(role => role.id == supervisoryRoleId)) {
254
+ if (!me.roles.find(role => allowedRoles.includes(role.id))) {
254
255
  throw new Error(`You don't have permission to issue data collection task for this dataset.`)
255
256
  }
256
257
 
@@ -4,7 +4,6 @@ import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'
4
4
 
5
5
  import { ApprovalLineItem } from '@things-factory/organization'
6
6
  import { ObjectRef, ScalarObject } from '@things-factory/shell'
7
- import { AssigneeItem } from '@things-factory/worklist'
8
7
 
9
8
  import { DataItemPatch } from './data-item-type'
10
9
  import { DataSet, DataSetEntryType, DataSetMonitorType, DataSetReportType, DataSetSummaryPeriodType } from './data-set'
@@ -91,6 +90,12 @@ export class NewDataSet {
91
90
 
92
91
  @Field({ nullable: true })
93
92
  summaryPeriod?: DataSetSummaryPeriodType
93
+
94
+ @Field({
95
+ nullable: true,
96
+ description: 'The maximum allowed time limit (in seconds) for completing the data entry operation'
97
+ })
98
+ timeLimit?: number
94
99
  }
95
100
 
96
101
  @InputType()
@@ -179,6 +184,12 @@ export class DataSetPatch {
179
184
  @Field({ nullable: true })
180
185
  summaryPeriod?: DataSetSummaryPeriodType
181
186
 
187
+ @Field({
188
+ nullable: true,
189
+ description: 'The maximum allowed time limit (in seconds) for completing the data entry operation'
190
+ })
191
+ timeLimit?: number
192
+
182
193
  @Field()
183
194
  cuFlag: string
184
195
  }
@@ -295,6 +295,13 @@ export class DataSet {
295
295
  @Field({ nullable: true, description: 'The summary schedule ID of the dataset' })
296
296
  summaryScheduleId?: string
297
297
 
298
+ @Column({ nullable: true })
299
+ @Field({
300
+ nullable: true,
301
+ description: 'The maximum allowed time limit (in seconds) for completing the data entry operation'
302
+ })
303
+ timeLimit?: number
304
+
298
305
  @CreateDateColumn()
299
306
  @Field({ nullable: true, description: 'The date and time the dataset was created' })
300
307
  createdAt?: Date
@@ -83,6 +83,7 @@
83
83
  "field.supervisory-role": "supervisory role",
84
84
  "field.t-key": "translation key",
85
85
  "field.tag": "tag name",
86
+ "field.time-limit": "time limit",
86
87
  "field.time-period": "time period",
87
88
  "field.unit": "unit",
88
89
  "field.use-case": "use case",
@@ -41,6 +41,7 @@
41
41
  "field.entry-view": "入力用画面",
42
42
  "field.finalizing-function": "最終処理関数",
43
43
  "field.hidden": "隠し",
44
+ "field.hours-limit": "制限時間",
44
45
  "field.item": "項目",
45
46
  "field.key": "キ",
46
47
  "field.key-01": "キー1",
@@ -83,6 +83,7 @@
83
83
  "field.supervisory-role": "관리자 역할",
84
84
  "field.t-key": "번역 키",
85
85
  "field.tag": "태그이름",
86
+ "field.time-limit": "제한시간",
86
87
  "field.time-period": "시간단위",
87
88
  "field.unit": "단위",
88
89
  "field.use-case": "사용 사례",
@@ -83,6 +83,7 @@
83
83
  "field.supervisory-role": "peranan pengawasan",
84
84
  "field.t-key": "kunci terjemahan",
85
85
  "field.tag": "nama tag",
86
+ "field.time-limit": "had masa",
86
87
  "field.time-period": "tempoh masa",
87
88
  "field.unit": "unit",
88
89
  "field.use-case": "kes penggunaan",
@@ -83,6 +83,7 @@
83
83
  "field.supervisory-role": "监管角色",
84
84
  "field.t-key": "翻译键",
85
85
  "field.tag": "标签名",
86
+ "field.time-limit": "限制时间",
86
87
  "field.time-period": "时间单位",
87
88
  "field.unit": "单位",
88
89
  "field.use-case": "使用案例",