@things-factory/worklist 6.0.12 → 6.0.16

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 (100) hide show
  1. package/client/pages/activity-approval/activity-approval-page.ts +17 -3
  2. package/client/pages/activity-thread/activity-thread-page.ts +93 -3
  3. package/dist-client/pages/activity-approval/activity-approval-page.js +19 -5
  4. package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
  5. package/dist-client/pages/activity-thread/activity-thread-page.d.ts +4 -0
  6. package/dist-client/pages/activity-thread/activity-thread-page.js +67 -6
  7. package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
  8. package/dist-client/tsconfig.tsbuildinfo +1 -1
  9. package/dist-server/controllers/activity-approval/approve.js +3 -4
  10. package/dist-server/controllers/activity-approval/approve.js.map +1 -1
  11. package/dist-server/controllers/activity-approval/delegate.js +10 -4
  12. package/dist-server/controllers/activity-approval/delegate.js.map +1 -1
  13. package/dist-server/controllers/activity-approval/reject.js +5 -3
  14. package/dist-server/controllers/activity-approval/reject.js.map +1 -1
  15. package/dist-server/controllers/activity-thread/delegate.js +2 -3
  16. package/dist-server/controllers/activity-thread/delegate.js.map +1 -1
  17. package/dist-server/controllers/activity-thread/end.js +1 -2
  18. package/dist-server/controllers/activity-thread/end.js.map +1 -1
  19. package/dist-server/controllers/activity-thread/index.js +1 -0
  20. package/dist-server/controllers/activity-thread/index.js.map +1 -1
  21. package/dist-server/controllers/activity-thread/restart.js +25 -0
  22. package/dist-server/controllers/activity-thread/restart.js.map +1 -0
  23. package/dist-server/controllers/activity-thread/save.js +6 -2
  24. package/dist-server/controllers/activity-thread/save.js.map +1 -1
  25. package/dist-server/controllers/activity-thread/start.js +3 -4
  26. package/dist-server/controllers/activity-thread/start.js.map +1 -1
  27. package/dist-server/controllers/activity-thread/submit.js +2 -1
  28. package/dist-server/controllers/activity-thread/submit.js.map +1 -1
  29. package/dist-server/controllers/activity-thread/terminate.js +2 -3
  30. package/dist-server/controllers/activity-thread/terminate.js.map +1 -1
  31. package/dist-server/service/activity-approval/activity-approval-mutation.js +10 -8
  32. package/dist-server/service/activity-approval/activity-approval-mutation.js.map +1 -1
  33. package/dist-server/service/activity-approval/activity-approval-query.js +21 -1
  34. package/dist-server/service/activity-approval/activity-approval-query.js.map +1 -1
  35. package/dist-server/service/activity-approval/activity-approval-subscription.js +48 -0
  36. package/dist-server/service/activity-approval/activity-approval-subscription.js.map +1 -0
  37. package/dist-server/service/activity-approval/activity-approval.js +23 -2
  38. package/dist-server/service/activity-approval/activity-approval.js.map +1 -1
  39. package/dist-server/service/activity-approval/index.js +2 -1
  40. package/dist-server/service/activity-approval/index.js.map +1 -1
  41. package/dist-server/service/activity-instance/activity-instance-subscription.js +2 -2
  42. package/dist-server/service/activity-instance/activity-instance-subscription.js.map +1 -1
  43. package/dist-server/service/activity-summary/activity-summary-query.js +154 -0
  44. package/dist-server/service/activity-summary/activity-summary-query.js.map +1 -0
  45. package/dist-server/service/activity-summary/activity-summary.js +28 -0
  46. package/dist-server/service/activity-summary/activity-summary.js.map +1 -0
  47. package/dist-server/service/activity-summary/index.js +8 -0
  48. package/dist-server/service/activity-summary/index.js.map +1 -0
  49. package/dist-server/service/activity-thread/activity-thread-history.js +194 -0
  50. package/dist-server/service/activity-thread/activity-thread-history.js.map +1 -0
  51. package/dist-server/service/activity-thread/activity-thread-mutation.js +15 -1
  52. package/dist-server/service/activity-thread/activity-thread-mutation.js.map +1 -1
  53. package/dist-server/service/activity-thread/activity-thread-query.js +18 -5
  54. package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -1
  55. package/dist-server/service/activity-thread/activity-thread-subscription.js +2 -2
  56. package/dist-server/service/activity-thread/activity-thread-subscription.js.map +1 -1
  57. package/dist-server/service/activity-thread/activity-thread.js +21 -22
  58. package/dist-server/service/activity-thread/activity-thread.js.map +1 -1
  59. package/dist-server/service/activity-thread/event-subscriber.js +15 -1
  60. package/dist-server/service/activity-thread/event-subscriber.js.map +1 -1
  61. package/dist-server/service/activity-thread/index.js +3 -2
  62. package/dist-server/service/activity-thread/index.js.map +1 -1
  63. package/dist-server/service/index.js +6 -2
  64. package/dist-server/service/index.js.map +1 -1
  65. package/dist-server/tsconfig.tsbuildinfo +1 -1
  66. package/package.json +3 -3
  67. package/server/controllers/activity-approval/approve.ts +5 -4
  68. package/server/controllers/activity-approval/delegate.ts +21 -6
  69. package/server/controllers/activity-approval/reject.ts +12 -4
  70. package/server/controllers/activity-thread/delegate.ts +2 -3
  71. package/server/controllers/activity-thread/end.ts +1 -2
  72. package/server/controllers/activity-thread/index.ts +1 -0
  73. package/server/controllers/activity-thread/restart.ts +42 -0
  74. package/server/controllers/activity-thread/save.ts +9 -2
  75. package/server/controllers/activity-thread/start.ts +3 -4
  76. package/server/controllers/activity-thread/submit.ts +2 -1
  77. package/server/controllers/activity-thread/terminate.ts +2 -3
  78. package/server/service/activity-approval/activity-approval-mutation.ts +6 -4
  79. package/server/service/activity-approval/activity-approval-query.ts +11 -1
  80. package/server/service/activity-approval/activity-approval-subscription.ts +46 -0
  81. package/server/service/activity-approval/activity-approval.ts +16 -0
  82. package/server/service/activity-approval/index.ts +2 -1
  83. package/server/service/activity-instance/activity-instance-subscription.ts +2 -2
  84. package/server/service/activity-summary/activity-summary-query.ts +132 -0
  85. package/server/service/activity-summary/activity-summary.ts +16 -0
  86. package/server/service/activity-summary/index.ts +5 -0
  87. package/server/service/activity-thread/activity-thread-history.ts +177 -0
  88. package/server/service/activity-thread/activity-thread-mutation.ts +21 -2
  89. package/server/service/activity-thread/activity-thread-query.ts +13 -5
  90. package/server/service/activity-thread/activity-thread-subscription.ts +2 -2
  91. package/server/service/activity-thread/activity-thread.ts +13 -15
  92. package/server/service/activity-thread/event-subscriber.ts +17 -1
  93. package/server/service/activity-thread/index.ts +4 -3
  94. package/server/service/index.ts +14 -6
  95. package/translations/en.json +3 -0
  96. package/translations/ko.json +3 -0
  97. package/translations/ms.json +3 -0
  98. package/translations/zh.json +3 -0
  99. package/server/controllers/activity-approval/abort.ts +0 -33
  100. package/server/controllers/activity-approval/escalate.ts +0 -33
@@ -0,0 +1,177 @@
1
+ import { Field, ID, Int, ObjectType } from 'type-graphql'
2
+ import { Column, Entity, Index, ManyToOne, OneToMany, PrimaryGeneratedColumn, RelationId } from 'typeorm'
3
+
4
+ import {
5
+ HistoryActionColumn,
6
+ HistoryActionType,
7
+ HistoryEntityInterface,
8
+ HistoryOriginalIdColumn
9
+ } from '@operato/typeorm-history'
10
+ import { User } from '@things-factory/auth-base'
11
+ import { config } from '@things-factory/env'
12
+ import { Domain, ScalarObject } from '@things-factory/shell'
13
+
14
+ import { ActivityThread, ActivityThreadStatus } from './activity-thread'
15
+ import { ActivityInstance } from '../activity-instance/activity-instance'
16
+
17
+ const ORMCONFIG = config.get('ormconfig', {})
18
+ const DATABASE_TYPE = ORMCONFIG.type
19
+
20
+ @Entity()
21
+ @Index(
22
+ 'ix_activity_thread_history_0',
23
+ (activityThreadHistory: ActivityThreadHistory) => [activityThreadHistory.originalId, activityThreadHistory.version],
24
+ { unique: true }
25
+ )
26
+ @Index(
27
+ 'ix_activity_thread_history_1',
28
+ (activityThreadHistory: ActivityThreadHistory) => [
29
+ activityThreadHistory.domain,
30
+ activityThreadHistory.originalId,
31
+ activityThreadHistory.version
32
+ ],
33
+ { unique: true }
34
+ )
35
+ @ObjectType({ description: 'History Entity of ActivityThread' })
36
+ export class ActivityThreadHistory implements HistoryEntityInterface<ActivityThread> {
37
+ @PrimaryGeneratedColumn('uuid')
38
+ @Field(type => ID)
39
+ readonly id: string
40
+
41
+ @Column({
42
+ nullable: true,
43
+ default: 1
44
+ })
45
+ @Field({ nullable: true })
46
+ version?: number = 1
47
+
48
+ @ManyToOne(type => Domain)
49
+ @Field({ nullable: true })
50
+ domain?: Domain
51
+
52
+ @RelationId((activityThread: ActivityThread) => activityThread.domain)
53
+ domainId?: string
54
+
55
+ @ManyToOne(type => ActivityInstance)
56
+ @Field(type => ActivityInstance, { nullable: true })
57
+ activityInstance?: ActivityInstance
58
+
59
+ @RelationId((activityThread: ActivityThread) => activityThread.activityInstance)
60
+ activityInstanceId?: string
61
+
62
+ @Column({ nullable: true })
63
+ @Field({ nullable: true })
64
+ state?: ActivityThreadStatus
65
+
66
+ @Column('simple-json', { nullable: true })
67
+ @Field(type => ScalarObject, { nullable: true })
68
+ output?: { [key: string]: any }
69
+
70
+ @ManyToOne(type => User, { nullable: true })
71
+ @Field({ nullable: true })
72
+ assignee?: User
73
+
74
+ @RelationId((activityThread: ActivityThread) => activityThread.assignee)
75
+ assigneeId?: string
76
+
77
+ @Column({ nullable: true })
78
+ @Field({ nullable: true })
79
+ round: number
80
+
81
+ @Column({ nullable: true })
82
+ @Field({ nullable: true })
83
+ transaction: string
84
+
85
+ @Column({ nullable: true })
86
+ @Field({ nullable: true })
87
+ dueAt?: Date
88
+
89
+ @Column({ nullable: true })
90
+ @Field({ nullable: true })
91
+ assignedAt?: Date
92
+
93
+ @Column({ nullable: true })
94
+ @Field({ nullable: true })
95
+ startedAt?: Date
96
+
97
+ @Column({ nullable: true })
98
+ @Field({ nullable: true })
99
+ terminatedAt?: Date
100
+
101
+ @Column()
102
+ @Field({ nullable: true })
103
+ createdAt?: Date
104
+
105
+ @Column()
106
+ @Field({ nullable: true })
107
+ updatedAt?: Date
108
+
109
+ @ManyToOne(type => User, { nullable: true })
110
+ @Field({ nullable: true })
111
+ creator?: User
112
+
113
+ @RelationId((activityThread: ActivityThread) => activityThread.creator)
114
+ creatorId?: string
115
+
116
+ @ManyToOne(type => User, { nullable: true })
117
+ @Field({ nullable: true })
118
+ updater?: User
119
+
120
+ @RelationId((activityThread: ActivityThread) => activityThread.updater)
121
+ updaterId?: string
122
+
123
+ @ManyToOne(type => User, { nullable: true })
124
+ @Field({ nullable: true })
125
+ terminator?: User
126
+
127
+ @RelationId((activityThread: ActivityThread) => activityThread.terminator)
128
+ terminatorId?: string
129
+
130
+ @HistoryOriginalIdColumn()
131
+ public originalId!: string
132
+
133
+ @HistoryActionColumn({
134
+ nullable: false,
135
+ type:
136
+ DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
137
+ ? 'enum'
138
+ : DATABASE_TYPE == 'oracle'
139
+ ? 'varchar2'
140
+ : 'smallint',
141
+ enum: HistoryActionType
142
+ })
143
+ public action!: HistoryActionType
144
+
145
+ isPendingStarted(): boolean {
146
+ switch (this.state) {
147
+ case ActivityThreadStatus.Assigned:
148
+ return true
149
+ default:
150
+ return false
151
+ }
152
+ }
153
+
154
+ isPendingEnded(): boolean {
155
+ switch (this.state) {
156
+ case ActivityThreadStatus.Started:
157
+ case ActivityThreadStatus.Rejected:
158
+ return true
159
+ default:
160
+ return false
161
+ }
162
+ }
163
+
164
+ isValid(): boolean {
165
+ switch (this.state) {
166
+ case ActivityThreadStatus.Assigned:
167
+ case ActivityThreadStatus.Started:
168
+ case ActivityThreadStatus.Ended:
169
+ case ActivityThreadStatus.Rejected:
170
+ return true
171
+ case ActivityThreadStatus.Delegated:
172
+ case ActivityThreadStatus.Aborted:
173
+ default:
174
+ return false
175
+ }
176
+ }
177
+ }
@@ -3,7 +3,15 @@ import { In } from 'typeorm'
3
3
 
4
4
  import { ObjectRef, ScalarObject } from '@things-factory/shell'
5
5
 
6
- import { abort, delegate, end, save as saveActivityThread, start, submit } from '../../controllers/activity-thread'
6
+ import {
7
+ abort,
8
+ delegate,
9
+ end,
10
+ restart,
11
+ save as saveActivityThread,
12
+ start,
13
+ submit
14
+ } from '../../controllers/activity-thread'
7
15
  import { ActivityThread } from './activity-thread'
8
16
  import { ActivityThreadSave } from './activity-thread-type'
9
17
 
@@ -12,7 +20,7 @@ export class ActivityThreadMutation {
12
20
  /* transactions ... */
13
21
 
14
22
  @Directive('@transaction')
15
- @Mutation(returns => ActivityThread!, { nullable: true, description: 'To start ActivityThread information' })
23
+ @Mutation(returns => ActivityThread!, { nullable: true, description: 'To start ActivityThread' })
16
24
  async startActivityThread(
17
25
  @Arg('id') id: string,
18
26
  @Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },
@@ -22,6 +30,17 @@ export class ActivityThreadMutation {
22
30
  return await start(id, output, reason, context)
23
31
  }
24
32
 
33
+ @Directive('@transaction')
34
+ @Mutation(returns => ActivityThread!, { nullable: true, description: 'To restart ActivityThread' })
35
+ async restartActivityThread(
36
+ @Arg('id') id: string,
37
+ @Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },
38
+ @Arg('reason', { nullable: true }) reason: string,
39
+ @Ctx() context: ResolverContext
40
+ ): Promise<ActivityThread> {
41
+ return await restart(id, output, reason, context)
42
+ }
43
+
25
44
  @Directive('@transaction')
26
45
  @Mutation(returns => ActivityThread, { description: 'To delegate a ActivityThread' })
27
46
  async delegateActivityThread(
@@ -39,10 +39,13 @@ export class ActivityThreadQuery {
39
39
  var { domain, user } = context.state
40
40
 
41
41
  const status = [
42
- ActivityThreadStatus.Assigned,
43
- ActivityThreadStatus.Started,
44
- ActivityThreadStatus.Submitted,
45
- ActivityThreadStatus.Rejected
42
+ // ActivityThreadStatus.Assigned,
43
+ // ActivityThreadStatus.Started,
44
+ // ActivityThreadStatus.Submitted,
45
+ // ActivityThreadStatus.Escalated,
46
+ // ActivityThreadStatus.Rejected,
47
+ ActivityThreadStatus.Ended,
48
+ ActivityThreadStatus.Aborted
46
49
  ]
47
50
 
48
51
  const [items, total] = await getQueryBuilderFromListParams({
@@ -56,7 +59,7 @@ export class ActivityThreadQuery {
56
59
  description: { columnName: 'description', relationColumn: 'activityInstance' }
57
60
  }
58
61
  })
59
- .andWhere('at.state IN (:...status)', { status })
62
+ .andWhere('at.state NOT IN (:...status)', { status })
60
63
  .andWhere('at.assignee = :user', { user: user.id })
61
64
  .getManyAndCount()
62
65
 
@@ -89,4 +92,9 @@ export class ActivityThreadQuery {
89
92
  async creator(@Root() activityThread: ActivityThread): Promise<User> {
90
93
  return await getRepository(User).findOneBy({ id: activityThread.creatorId })
91
94
  }
95
+
96
+ @FieldResolver(type => User)
97
+ async terminator(@Root() activityThread: ActivityThread): Promise<User> {
98
+ return await getRepository(User).findOneBy({ id: activityThread.terminatorId })
99
+ }
92
100
  }
@@ -24,9 +24,9 @@ export class ActivityThreadSubscription {
24
24
  () => pubsub.asyncIterator('activity-thread'),
25
25
  async (payload, variables, context, info) => {
26
26
  const { activityThread } = payload
27
- const { domain } = activityThread
27
+ const { domainId } = activityThread
28
28
 
29
- if (subdomain !== domain?.subdomain) {
29
+ if (domainId !== domain?.id) {
30
30
  return false
31
31
  }
32
32
 
@@ -8,6 +8,7 @@ import {
8
8
  ManyToOne,
9
9
  PrimaryGeneratedColumn,
10
10
  RelationId,
11
+ VersionColumn,
11
12
  UpdateDateColumn
12
13
  } from 'typeorm'
13
14
 
@@ -53,6 +54,10 @@ export class ActivityThread {
53
54
  @RelationId((activityThread: ActivityThread) => activityThread.domain)
54
55
  domainId?: string
55
56
 
57
+ @VersionColumn({ default: 1 })
58
+ @Field({ nullable: true })
59
+ version?: number = 1
60
+
56
61
  @ManyToOne(type => ActivityInstance, activityInstance => activityInstance.activityThreads)
57
62
  @Field(type => ActivityInstance, { nullable: true })
58
63
  activityInstance?: ActivityInstance
@@ -60,21 +65,6 @@ export class ActivityThread {
60
65
  @RelationId((activityThread: ActivityThread) => activityThread.activityInstance)
61
66
  activityInstanceId?: string
62
67
 
63
- @ManyToOne(type => ActivityThread, { nullable: true })
64
- @Field(type => ActivityThread, { nullable: true })
65
- originalThread?: ActivityThread
66
-
67
- @RelationId((activityThread: ActivityThread) => activityThread.originalThread)
68
- originalThreadId?: string
69
-
70
- @OneToMany(type => ActivityThread, activityThread => activityThread.originalThread)
71
- @Field(type => [ActivityThread])
72
- derivedThreads?: ActivityThread
73
-
74
- @Column({ nullable: true })
75
- @Field({ nullable: true })
76
- active?: boolean
77
-
78
68
  @Column({ nullable: true })
79
69
  @Field({ nullable: true })
80
70
  state?: ActivityThreadStatus
@@ -90,6 +80,14 @@ export class ActivityThread {
90
80
  @RelationId((activityThread: ActivityThread) => activityThread.assignee)
91
81
  assigneeId?: string
92
82
 
83
+ @Column({ nullable: true, default: 1 })
84
+ @Field({ nullable: true })
85
+ round: number = 1
86
+
87
+ @Column({ nullable: true })
88
+ @Field({ nullable: true })
89
+ transaction: string
90
+
93
91
  @Column({ nullable: true })
94
92
  @Field({ nullable: true })
95
93
  dueAt?: Date
@@ -1,8 +1,10 @@
1
- import { EventSubscriber, EntitySubscriberInterface, InsertEvent, RemoveEvent, UpdateEvent } from 'typeorm'
1
+ import { EventSubscriber, EntitySubscriberInterface, InsertEvent, UpdateEvent } from 'typeorm'
2
+ import { HistoryEntitySubscriber } from '@operato/typeorm-history'
2
3
 
3
4
  import { pubsub } from '@things-factory/shell'
4
5
 
5
6
  import { ActivityThread } from './activity-thread'
7
+ import { ActivityThreadHistory } from './activity-thread-history'
6
8
 
7
9
  @EventSubscriber()
8
10
  export class ActivityThreadSubscriber implements EntitySubscriberInterface<ActivityThread> {
@@ -29,3 +31,17 @@ export class ActivityThreadSubscriber implements EntitySubscriberInterface<Activ
29
31
  console.log('activity-thread updated', activityThread.id)
30
32
  }
31
33
  }
34
+
35
+ @EventSubscriber()
36
+ export class ActivityThreadHistoryEntitySubscriber extends HistoryEntitySubscriber<
37
+ ActivityThread,
38
+ ActivityThreadHistory
39
+ > {
40
+ public get entity() {
41
+ return ActivityThread
42
+ }
43
+
44
+ public get historyEntity() {
45
+ return ActivityThreadHistory
46
+ }
47
+ }
@@ -1,9 +1,10 @@
1
1
  import { ActivityThread } from './activity-thread'
2
+ import { ActivityThreadHistory } from './activity-thread-history'
2
3
  import { ActivityThreadMutation } from './activity-thread-mutation'
3
4
  import { ActivityThreadQuery } from './activity-thread-query'
4
5
  import { ActivityThreadSubscription } from './activity-thread-subscription'
5
- import { ActivityThreadSubscriber } from './event-subscriber'
6
+ import { ActivityThreadHistoryEntitySubscriber, ActivityThreadSubscriber } from './event-subscriber'
6
7
 
7
- export const entities = [ActivityThread]
8
+ export const entities = [ActivityThread, ActivityThreadHistory]
8
9
  export const resolvers = [ActivityThreadQuery, ActivityThreadMutation, ActivityThreadSubscription]
9
- export const subscribers = [ActivityThreadSubscriber]
10
+ export const subscribers = [ActivityThreadSubscriber, ActivityThreadHistoryEntitySubscriber]
@@ -4,9 +4,14 @@ export * from './activity-thread/activity-thread'
4
4
  export * from './activity-template/activity-template'
5
5
  export * from './activity-instance/activity-instance'
6
6
  export * from './activity/activity'
7
+ export * from './activity-summary/activity-summary'
7
8
 
8
9
  /* IMPORT ENTITIES AND RESOLVERS */
9
- import { entities as ActivityApprovalEntities, resolvers as ActivityApprovalResolvers, subscribers as ActivityApprovalSubscribers } from './activity-approval'
10
+ import {
11
+ entities as ActivityApprovalEntities,
12
+ resolvers as ActivityApprovalResolvers,
13
+ subscribers as ActivityApprovalSubscribers
14
+ } from './activity-approval'
10
15
  import {
11
16
  entities as ActivityEntities,
12
17
  resolvers as ActivityResolvers,
@@ -23,19 +28,21 @@ import {
23
28
  resolvers as ActivityThreadResolvers,
24
29
  subscribers as ActivityThreadSubscribers
25
30
  } from './activity-thread'
31
+ import { entities as ActivitySummaryEntities, resolvers as ActivitySummaryResolvers } from './activity-summary'
26
32
 
27
33
  export const entities = [
28
34
  /* ENTITIES */
29
- ...ActivityApprovalEntities,
35
+ ...ActivityApprovalEntities,
30
36
  ...ActivityEntities,
31
37
  ...ActivityInstanceEntities,
32
38
  ...ActivityTemplateEntities,
33
- ...ActivityThreadEntities
39
+ ...ActivityThreadEntities,
40
+ ...ActivitySummaryEntities
34
41
  ]
35
42
 
36
43
  export const subscribers = [
37
44
  /* SUBSCRIBERS */
38
- ...ActivityApprovalSubscribers,
45
+ ...ActivityApprovalSubscribers,
39
46
  ...ActivityInstanceSubscribers,
40
47
  ...ActivitySubscribers,
41
48
  ...ActivityThreadSubscribers
@@ -44,10 +51,11 @@ export const subscribers = [
44
51
  export const schema = {
45
52
  resolverClasses: [
46
53
  /* RESOLVER CLASSES */
47
- ...ActivityApprovalResolvers,
54
+ ...ActivityApprovalResolvers,
48
55
  ...ActivityResolvers,
49
56
  ...ActivityInstanceResolvers,
50
57
  ...ActivityTemplateResolvers,
51
- ...ActivityThreadResolvers
58
+ ...ActivityThreadResolvers,
59
+ ...ActivitySummaryResolvers
52
60
  ]
53
61
  }
@@ -1,11 +1,14 @@
1
1
  {
2
+ "button.abort": "abort",
2
3
  "button.approve": "approve",
3
4
  "button.assign": "assign",
4
5
  "button.buy": "buy",
6
+ "button.delegate": "delegate",
5
7
  "button.draft": "draft",
6
8
  "button.finish": "finish",
7
9
  "button.pick": "pick",
8
10
  "button.post": "post",
11
+ "button.restart": "restart",
9
12
  "button.start": "start",
10
13
  "button.submit": "submit",
11
14
  "field.activity-type": "activity type",
@@ -1,11 +1,14 @@
1
1
  {
2
+ "button.abort": "중단",
2
3
  "button.approve": "승인",
3
4
  "button.assign": "할당",
4
5
  "button.buy": "구매",
6
+ "button.delegate": "위임",
5
7
  "button.draft": "초안",
6
8
  "button.finish": "완료",
7
9
  "button.pick": "선택",
8
10
  "button.post": "게시",
11
+ "button.restart": "재시작",
9
12
  "button.start": "시작",
10
13
  "button.submit": "제출",
11
14
  "field.activity-type": "업무 타입",
@@ -1,11 +1,14 @@
1
1
  {
2
+ "button.abort": "abort",
2
3
  "button.approve": "approve",
3
4
  "button.assign": "assign",
4
5
  "button.buy": "buy",
6
+ "button.delegate": "delegate",
5
7
  "button.draft": "draft",
6
8
  "button.finish": "finish",
7
9
  "button.pick": "pick",
8
10
  "button.post": "post",
11
+ "button.restart": "restart",
9
12
  "button.start": "start",
10
13
  "button.submit": "submit",
11
14
  "field.activity-type": "activity type",
@@ -1,11 +1,14 @@
1
1
  {
2
+ "button.abort": "abort",
2
3
  "button.approve": "approve",
3
4
  "button.assign": "assign",
4
5
  "button.buy": "buy",
6
+ "button.delegate": "delegate",
5
7
  "button.draft": "draft",
6
8
  "button.finish": "finish",
7
9
  "button.pick": "pick",
8
10
  "button.post": "post",
11
+ "button.restart": "restart",
9
12
  "button.start": "start",
10
13
  "button.submit": "submit",
11
14
  "field.activity-type": "activity type",
@@ -1,33 +0,0 @@
1
- import { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'
2
-
3
- export async function abort(
4
- { id, comment }: { id: string; comment: string },
5
- context: ResolverContext
6
- ): Promise<ActivityApproval> {
7
- const { domain, user, tx } = context.state
8
-
9
- var repository = tx.getRepository(ActivityApproval)
10
-
11
- var activityApproval = await repository.findOne({
12
- where: { domain: { id: domain.id }, id },
13
- relations: ['domain', 'activityThread', 'updater', 'creator']
14
- })
15
-
16
- if (!activityApproval) {
17
- throw new Error(
18
- context.t('error.activity-approval not found', {
19
- activityApproval: id
20
- })
21
- )
22
- }
23
-
24
- return await repository.save({
25
- ...activityApproval,
26
- judgment: ActivityApprovalJudgment.Aborted,
27
- comment,
28
- transaction: 'abort',
29
- updater: user,
30
- terminatedAt: new Date(),
31
- terminator: user
32
- })
33
- }
@@ -1,33 +0,0 @@
1
- import { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'
2
-
3
- export async function escalate(
4
- { id, comment }: { id: string; comment: string },
5
- context: ResolverContext
6
- ): Promise<ActivityApproval> {
7
- const { domain, user, tx } = context.state
8
-
9
- var repository = tx.getRepository(ActivityApproval)
10
-
11
- var activityApproval = await repository.findOne({
12
- where: { domain: { id: domain.id }, id },
13
- relations: ['domain', 'activityThread', 'updater', 'creator']
14
- })
15
-
16
- if (!activityApproval) {
17
- throw new Error(
18
- context.t('error.activity-approval not found', {
19
- activityApproval: id
20
- })
21
- )
22
- }
23
-
24
- return await repository.save({
25
- ...activityApproval,
26
- judgment: ActivityApprovalJudgment.Escalated,
27
- comment,
28
- transaction: 'abort',
29
- updater: user,
30
- terminatedAt: new Date(),
31
- terminator: user
32
- })
33
- }