@things-factory/worklist 6.0.27 → 6.0.32

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 (195) hide show
  1. package/client/bootstrap.ts +9 -1
  2. package/client/components/activity-starter-form.ts +35 -10
  3. package/client/grist-editor/grist-editor-activity-search-key.ts +79 -0
  4. package/client/grist-editor/popup-activity-search-keys-input.ts +167 -0
  5. package/client/pages/activity/activity-list-page.ts +122 -11
  6. package/client/pages/activity/activity-partial-view.ts +85 -0
  7. package/client/pages/activity/starter-list-page.ts +1 -0
  8. package/client/pages/activity-approval/activity-approval-page.ts +6 -6
  9. package/client/pages/activity-instance/activity-instance-search-page.ts +377 -0
  10. package/client/pages/activity-instance/activity-instance-view.ts +135 -0
  11. package/client/pages/activity-store/activity-store-page.ts +1 -1
  12. package/client/pages/activity-template/activity-template-list-page.ts +29 -1
  13. package/client/pages/activity-thread/activity-thread-page.ts +8 -3
  14. package/client/pages/activity-thread/activity-thread-view.ts +102 -0
  15. package/client/pages/installable-activity/installable-activity-list-page.ts +29 -1
  16. package/client/pages/todo/approval-waiting-list-page.ts +19 -9
  17. package/client/pages/todo/done-list-page.ts +344 -0
  18. package/client/pages/todo/draft-list-page.ts +13 -2
  19. package/client/pages/todo/todo-list-page.ts +14 -3
  20. package/client/route.ts +8 -0
  21. package/client/types/activity-instance-type.ts +123 -0
  22. package/client/types/activity-instance.ts +124 -0
  23. package/client/types/activity-model-type.ts +40 -0
  24. package/client/types/activity-search-key-item-type.ts +9 -0
  25. package/client/types/activity-thread-type.ts +19 -0
  26. package/client/types/activity-thread.ts +88 -0
  27. package/client/types/activity.ts +103 -0
  28. package/client/{types.js → types/types.ts} +0 -9
  29. package/dist-client/bootstrap.js +4 -1
  30. package/dist-client/bootstrap.js.map +1 -1
  31. package/dist-client/components/activity-starter-form.d.ts +1 -1
  32. package/dist-client/components/activity-starter-form.js +34 -9
  33. package/dist-client/components/activity-starter-form.js.map +1 -1
  34. package/dist-client/grist-editor/grist-editor-activity-search-key.d.ts +12 -0
  35. package/dist-client/grist-editor/grist-editor-activity-search-key.js +70 -0
  36. package/dist-client/grist-editor/grist-editor-activity-search-key.js.map +1 -0
  37. package/dist-client/grist-editor/popup-activity-search-keys-input.d.ts +17 -0
  38. package/dist-client/grist-editor/popup-activity-search-keys-input.js +177 -0
  39. package/dist-client/grist-editor/popup-activity-search-keys-input.js.map +1 -0
  40. package/dist-client/pages/activity/activity-list-page.d.ts +4 -0
  41. package/dist-client/pages/activity/activity-list-page.js +121 -11
  42. package/dist-client/pages/activity/activity-list-page.js.map +1 -1
  43. package/dist-client/pages/activity/activity-partial-view.d.ts +13 -0
  44. package/dist-client/pages/activity/activity-partial-view.js +56 -0
  45. package/dist-client/pages/activity/activity-partial-view.js.map +1 -0
  46. package/dist-client/pages/activity/starter-list-page.js.map +1 -1
  47. package/dist-client/pages/activity-approval/activity-approval-page.js +6 -6
  48. package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
  49. package/dist-client/pages/activity-instance/activity-instance-search-page.d.ts +76 -0
  50. package/dist-client/pages/activity-instance/activity-instance-search-page.js +371 -0
  51. package/dist-client/pages/activity-instance/activity-instance-search-page.js.map +1 -0
  52. package/dist-client/pages/activity-instance/activity-instance-view.d.ts +14 -0
  53. package/dist-client/pages/activity-instance/activity-instance-view.js +130 -0
  54. package/dist-client/pages/activity-instance/activity-instance-view.js.map +1 -0
  55. package/dist-client/pages/activity-store/activity-store-page.js +1 -1
  56. package/dist-client/pages/activity-store/activity-store-page.js.map +1 -1
  57. package/dist-client/pages/activity-template/activity-template-list-page.js +29 -1
  58. package/dist-client/pages/activity-template/activity-template-list-page.js.map +1 -1
  59. package/dist-client/pages/activity-thread/activity-thread-page.js +8 -3
  60. package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
  61. package/dist-client/pages/activity-thread/activity-thread-view.d.ts +11 -0
  62. package/dist-client/pages/activity-thread/activity-thread-view.js +103 -0
  63. package/dist-client/pages/activity-thread/activity-thread-view.js.map +1 -0
  64. package/dist-client/pages/installable-activity/installable-activity-list-page.js +29 -1
  65. package/dist-client/pages/installable-activity/installable-activity-list-page.js.map +1 -1
  66. package/dist-client/pages/todo/approval-waiting-list-page.js +19 -9
  67. package/dist-client/pages/todo/approval-waiting-list-page.js.map +1 -1
  68. package/dist-client/pages/todo/done-list-page.d.ts +44 -0
  69. package/dist-client/pages/todo/done-list-page.js +342 -0
  70. package/dist-client/pages/todo/done-list-page.js.map +1 -0
  71. package/dist-client/pages/todo/draft-list-page.js +12 -2
  72. package/dist-client/pages/todo/draft-list-page.js.map +1 -1
  73. package/dist-client/pages/todo/todo-list-page.js +13 -3
  74. package/dist-client/pages/todo/todo-list-page.js.map +1 -1
  75. package/dist-client/route.d.ts +1 -1
  76. package/dist-client/route.js +6 -0
  77. package/dist-client/route.js.map +1 -1
  78. package/dist-client/tsconfig.tsbuildinfo +1 -1
  79. package/dist-client/types/activity-instance-type.d.ts +76 -0
  80. package/dist-client/types/activity-instance-type.js +11 -0
  81. package/dist-client/types/activity-instance-type.js.map +1 -0
  82. package/dist-client/types/activity-instance.d.ts +70 -0
  83. package/dist-client/types/activity-instance.js +36 -0
  84. package/dist-client/types/activity-instance.js.map +1 -0
  85. package/dist-client/types/activity-model-type.d.ts +31 -0
  86. package/dist-client/types/activity-model-type.js +18 -0
  87. package/dist-client/types/activity-model-type.js.map +1 -0
  88. package/dist-client/types/activity-search-key-item-type.d.ts +6 -0
  89. package/dist-client/types/activity-search-key-item-type.js +3 -0
  90. package/dist-client/types/activity-search-key-item-type.js.map +1 -0
  91. package/dist-client/types/activity-thread-type.d.ts +15 -0
  92. package/dist-client/types/activity-thread-type.js +7 -0
  93. package/dist-client/types/activity-thread-type.js.map +1 -0
  94. package/dist-client/types/activity-thread.d.ts +37 -0
  95. package/dist-client/types/activity-thread.js +51 -0
  96. package/dist-client/types/activity-thread.js.map +1 -0
  97. package/dist-client/types/activity.d.ts +65 -0
  98. package/dist-client/types/activity.js +35 -0
  99. package/dist-client/types/activity.js.map +1 -0
  100. package/dist-client/{types.d.ts → types/types.d.ts} +3 -7
  101. package/dist-client/{types.js → types/types.js} +0 -8
  102. package/dist-client/types/types.js.map +1 -0
  103. package/dist-server/controllers/activity-approval/approve.js +2 -0
  104. package/dist-server/controllers/activity-approval/approve.js.map +1 -1
  105. package/dist-server/controllers/activity-approval/reject.js +2 -0
  106. package/dist-server/controllers/activity-approval/reject.js.map +1 -1
  107. package/dist-server/controllers/{activity-installation-controller.js → activity-installation/activity-installation-controller.js} +8 -0
  108. package/dist-server/controllers/activity-installation/activity-installation-controller.js.map +1 -0
  109. package/dist-server/controllers/activity-installation/call-webhook.js.map +1 -0
  110. package/dist-server/controllers/activity-instance/abort.js +1 -1
  111. package/dist-server/controllers/activity-instance/abort.js.map +1 -1
  112. package/dist-server/controllers/activity-instance/adjust.js +1 -1
  113. package/dist-server/controllers/activity-instance/adjust.js.map +1 -1
  114. package/dist-server/controllers/activity-instance/delegate.js +5 -0
  115. package/dist-server/controllers/activity-instance/delegate.js.map +1 -1
  116. package/dist-server/controllers/activity-instance/draft.js +16 -1
  117. package/dist-server/controllers/activity-instance/draft.js.map +1 -1
  118. package/dist-server/controllers/activity-instance/post.js +38 -3
  119. package/dist-server/controllers/activity-instance/post.js.map +1 -1
  120. package/dist-server/controllers/activity-instance/start.js +1 -1
  121. package/dist-server/controllers/activity-instance/start.js.map +1 -1
  122. package/dist-server/controllers/activity-thread/submit.js +1 -1
  123. package/dist-server/controllers/activity-thread/submit.js.map +1 -1
  124. package/dist-server/controllers/common.js +72 -25
  125. package/dist-server/controllers/common.js.map +1 -1
  126. package/dist-server/controllers/index.js +1 -1
  127. package/dist-server/controllers/index.js.map +1 -1
  128. package/dist-server/service/activity/activity-history.js +38 -1
  129. package/dist-server/service/activity/activity-history.js.map +1 -1
  130. package/dist-server/service/activity/activity-search-key-item-type.js +28 -0
  131. package/dist-server/service/activity/activity-search-key-item-type.js.map +1 -0
  132. package/dist-server/service/activity/activity-type.js +56 -0
  133. package/dist-server/service/activity/activity-type.js.map +1 -1
  134. package/dist-server/service/activity/activity.js +40 -4
  135. package/dist-server/service/activity/activity.js.map +1 -1
  136. package/dist-server/service/activity-approval/event-subscriber.js +1 -1
  137. package/dist-server/service/activity-approval/event-subscriber.js.map +1 -1
  138. package/dist-server/service/activity-instance/activity-instance-history.js +53 -0
  139. package/dist-server/service/activity-instance/activity-instance-history.js.map +1 -1
  140. package/dist-server/service/activity-instance/activity-instance-query.js +29 -0
  141. package/dist-server/service/activity-instance/activity-instance-query.js.map +1 -1
  142. package/dist-server/service/activity-instance/activity-instance-type.js +16 -0
  143. package/dist-server/service/activity-instance/activity-instance-type.js.map +1 -1
  144. package/dist-server/service/activity-instance/activity-instance.js +63 -0
  145. package/dist-server/service/activity-instance/activity-instance.js.map +1 -1
  146. package/dist-server/service/activity-instance/event-subscriber.js +4 -4
  147. package/dist-server/service/activity-instance/event-subscriber.js.map +1 -1
  148. package/dist-server/service/activity-thread/activity-thread-query.js +27 -0
  149. package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -1
  150. package/dist-server/service/activity-thread/activity-thread.js +4 -1
  151. package/dist-server/service/activity-thread/activity-thread.js.map +1 -1
  152. package/dist-server/service/installable-activity/installable-activity-mutation.js +1 -1
  153. package/dist-server/service/installable-activity/installable-activity-mutation.js.map +1 -1
  154. package/dist-server/service/installable-activity/installable-activity-query.js +1 -1
  155. package/dist-server/service/installable-activity/installable-activity-query.js.map +1 -1
  156. package/dist-server/service/installable-activity/installable-activity.js.map +1 -1
  157. package/dist-server/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +9 -8
  159. package/server/controllers/activity-approval/approve.ts +3 -0
  160. package/server/controllers/activity-approval/reject.ts +3 -0
  161. package/server/controllers/{activity-installation-controller.ts → activity-installation/activity-installation-controller.ts} +12 -1
  162. package/server/controllers/activity-instance/abort.ts +1 -1
  163. package/server/controllers/activity-instance/adjust.ts +1 -1
  164. package/server/controllers/activity-instance/delegate.ts +9 -1
  165. package/server/controllers/activity-instance/draft.ts +16 -5
  166. package/server/controllers/activity-instance/post.ts +54 -6
  167. package/server/controllers/activity-instance/start.ts +1 -1
  168. package/server/controllers/activity-thread/submit.ts +1 -0
  169. package/server/controllers/common.ts +85 -28
  170. package/server/controllers/index.ts +1 -1
  171. package/server/service/activity/activity-history.ts +32 -1
  172. package/server/service/activity/activity-search-key-item-type.ts +16 -0
  173. package/server/service/activity/activity-type.ts +46 -1
  174. package/server/service/activity/activity.ts +34 -4
  175. package/server/service/activity-approval/event-subscriber.ts +1 -1
  176. package/server/service/activity-instance/activity-instance-history.ts +41 -0
  177. package/server/service/activity-instance/activity-instance-query.ts +30 -1
  178. package/server/service/activity-instance/activity-instance-type.ts +12 -0
  179. package/server/service/activity-instance/activity-instance.ts +49 -0
  180. package/server/service/activity-instance/event-subscriber.ts +4 -4
  181. package/server/service/activity-thread/activity-thread-query.ts +24 -0
  182. package/server/service/activity-thread/activity-thread.ts +6 -3
  183. package/server/service/installable-activity/installable-activity-mutation.ts +1 -1
  184. package/server/service/installable-activity/installable-activity-query.ts +1 -1
  185. package/server/service/installable-activity/installable-activity.ts +3 -1
  186. package/things-factory.config.js +5 -1
  187. package/translations/en.json +7 -0
  188. package/translations/ko.json +7 -0
  189. package/translations/ms.json +7 -0
  190. package/translations/zh.json +7 -0
  191. package/dist-client/types.js.map +0 -1
  192. package/dist-server/controllers/activity-installation-controller.js.map +0 -1
  193. package/dist-server/controllers/call-webhook.js.map +0 -1
  194. /package/dist-server/controllers/{call-webhook.js → activity-installation/call-webhook.js} +0 -0
  195. /package/server/controllers/{call-webhook.ts → activity-installation/call-webhook.ts} +0 -0
@@ -13,8 +13,11 @@ import {
13
13
 
14
14
  import { Role, User } from '@things-factory/auth-base'
15
15
  import { Domain } from '@things-factory/shell'
16
+ import { ApprovalLineItem } from '@things-factory/organization'
16
17
 
18
+ import { AssigneeItem } from '../activity-instance/activity-instance'
17
19
  import { ActivityModelItem } from './activity-model-type'
20
+ import { ActivitySearchKeyItem } from './activity-search-key-item-type'
18
21
 
19
22
  export enum ActivityStatus {
20
23
  Draft = 'draft',
@@ -95,6 +98,10 @@ export class Activity {
95
98
  @Field({ nullable: true })
96
99
  state?: ActivityStatus
97
100
 
101
+ @Column('simple-json', { nullable: true })
102
+ @Field(type => [ActivitySearchKeyItem], { nullable: true })
103
+ searchKeys?: ActivitySearchKeyItem[]
104
+
98
105
  @Column('simple-json', { nullable: true })
99
106
  @Field(type => [ActivityModelItem], { nullable: true })
100
107
  model?: ActivityModelItem[]
@@ -104,7 +111,7 @@ export class Activity {
104
111
  priority?: number = 1
105
112
 
106
113
  @Column({ nullable: true })
107
- @Field({ nullable: true })
114
+ @Field({ nullable: true, description: 'Whether the task can be started arbitrarily by a user with privileges.' })
108
115
  startable?: boolean
109
116
 
110
117
  @Column({
@@ -113,6 +120,10 @@ export class Activity {
113
120
  @Field({ nullable: true })
114
121
  schedule?: string
115
122
 
123
+ @Column({ nullable: true })
124
+ @Field({ nullable: true })
125
+ timezone?: string
126
+
116
127
  @Column({ nullable: true })
117
128
  @Field({ nullable: true })
118
129
  standardTime?: number
@@ -137,29 +148,48 @@ export class Activity {
137
148
  issuerRoleId?: string
138
149
 
139
150
  @ManyToOne(type => Role, { nullable: true })
140
- @Field(type => Role, { nullable: true })
151
+ @Field(type => Role, { nullable: true, description: 'Roles eligible to pick up activity from the activity bank.' })
141
152
  assigneeRole?: Role
142
153
 
143
154
  @RelationId((activity: Activity) => activity.assigneeRole)
144
155
  assigneeRoleId?: string
145
156
 
146
157
  @ManyToOne(type => Role, { nullable: true })
147
- @Field(type => Role, { nullable: true })
158
+ @Field(type => Role, { nullable: true, description: 'The final authority on a given activity.' })
148
159
  supervisoryRole?: Role
149
160
 
150
161
  @RelationId((activity: Activity) => activity.supervisoryRole)
151
162
  supervisoryRoleId?: string
152
163
 
164
+ @Column('simple-json', { nullable: true })
165
+ @Field(type => [AssigneeItem], { nullable: true, description: 'Who to resolve for the activity.' })
166
+ assignees?: AssigneeItem[]
167
+
168
+ @Column('simple-json', { nullable: true })
169
+ @Field(type => [ApprovalLineItem], {
170
+ nullable: true,
171
+ description: 'Approval line for handling the activity.'
172
+ })
173
+ approvalLine?: ApprovalLineItem[]
174
+
153
175
  @Column({ nullable: true })
154
- @Field({ nullable: true })
176
+ @Field({ nullable: true, description: 'The type of UI to be shown when a task is performed' })
155
177
  uiType?: ActivityUIType
156
178
 
157
179
  @Column({ nullable: true })
158
180
  @Field({ nullable: true })
159
181
  uiSource?: string
160
182
 
183
+ @Column({ nullable: true })
184
+ @Field({ nullable: true, description: 'The type of view to be shown when a task is approved' })
185
+ viewType?: ActivityUIType
186
+
161
187
  @Column({ nullable: true })
162
188
  @Field({ nullable: true })
189
+ viewSource?: string
190
+
191
+ @Column({ nullable: true })
192
+ @Field({ nullable: true, description: 'The type of report to be shown when a task is approved' })
163
193
  reportType?: ActivityUIType
164
194
 
165
195
  @Column({ nullable: true })
@@ -3,7 +3,7 @@ import { EventSubscriber, EntitySubscriberInterface, InsertEvent, UpdateEvent }
3
3
  import { Domain, pubsub } from '@things-factory/shell'
4
4
 
5
5
  import { ActivityApproval } from './activity-approval'
6
- import { callWebhook } from '../../controllers/call-webhook'
6
+ import { callWebhook } from '../../controllers/activity-installation/call-webhook'
7
7
 
8
8
  @EventSubscriber()
9
9
  export class ActivityApprovalSubscriber implements EntitySubscriberInterface<ActivityApproval> {
@@ -72,6 +72,26 @@ export class ActivityInstanceHistory implements HistoryEntityInterface<ActivityI
72
72
  @Field({ nullable: true })
73
73
  adhocType?: string
74
74
 
75
+ @Column({ nullable: true, default: '' })
76
+ @Field({ nullable: true })
77
+ key01?: string = ''
78
+
79
+ @Column({ nullable: true, default: '' })
80
+ @Field({ nullable: true })
81
+ key02?: string = ''
82
+
83
+ @Column({ nullable: true, default: '' })
84
+ @Field({ nullable: true })
85
+ key03?: string = ''
86
+
87
+ @Column({ nullable: true, default: '' })
88
+ @Field({ nullable: true })
89
+ key04?: string = ''
90
+
91
+ @Column({ nullable: true, default: '' })
92
+ @Field({ nullable: true })
93
+ key05?: string = ''
94
+
75
95
  @Column({ nullable: true })
76
96
  @Field({ nullable: true })
77
97
  uiType?: ActivityUIType
@@ -146,6 +166,10 @@ export class ActivityInstanceHistory implements HistoryEntityInterface<ActivityI
146
166
  @Field({ nullable: true })
147
167
  updatedAt?: Date
148
168
 
169
+ @Column({ nullable: true })
170
+ @Field({ nullable: true })
171
+ issuedAt?: Date
172
+
149
173
  @Column({ nullable: true })
150
174
  @Field({ nullable: true })
151
175
  assignedAt?: Date
@@ -172,6 +196,13 @@ export class ActivityInstanceHistory implements HistoryEntityInterface<ActivityI
172
196
  @RelationId((activityInstance: ActivityInstance) => activityInstance.updater)
173
197
  updaterId?: string
174
198
 
199
+ @ManyToOne(type => User, { nullable: true })
200
+ @Field({ nullable: true })
201
+ issuer?: User
202
+
203
+ @RelationId((activityInstance: ActivityInstance) => activityInstance.issuer)
204
+ issuerId?: string
205
+
175
206
  @ManyToOne(type => User, { nullable: true })
176
207
  @Field({ nullable: true })
177
208
  starter?: User
@@ -200,4 +231,14 @@ export class ActivityInstanceHistory implements HistoryEntityInterface<ActivityI
200
231
  enum: HistoryActionType
201
232
  })
202
233
  public action!: HistoryActionType
234
+
235
+ isDelegatable(): boolean {
236
+ switch (this.state) {
237
+ case ActivityInstanceStatus.Posted:
238
+ case ActivityInstanceStatus.Assigned:
239
+ return true
240
+ default:
241
+ return false
242
+ }
243
+ }
203
244
  }
@@ -1,4 +1,4 @@
1
- import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
1
+ import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
2
 
3
3
  import { Attachment } from '@things-factory/attachment-base'
4
4
  import { Role, User } from '@things-factory/auth-base'
@@ -12,6 +12,7 @@ import { ApprovalLineItem } from '@things-factory/organization'
12
12
 
13
13
  @Resolver(ActivityInstance)
14
14
  export class ActivityInstanceQuery {
15
+ @Directive('@privilege(category: "activity-instance", privilege: "query", domainOwnerGranted: true)')
15
16
  @Query(returns => ActivityInstance!, { nullable: true, description: 'To fetch a ActivityInstance' })
16
17
  async activityInstance(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<ActivityInstance> {
17
18
  const { domain } = context.state
@@ -21,6 +22,7 @@ export class ActivityInstanceQuery {
21
22
  })
22
23
  }
23
24
 
25
+ @Directive('@privilege(category: "activity-instance", privilege: "query", domainOwnerGranted: true)')
24
26
  @Query(returns => ActivityInstanceList, { description: 'To fetch multiple ActivityInstances' })
25
27
  async activityInstances(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<ActivityInstanceList> {
26
28
  const { domain } = context.state
@@ -35,6 +37,32 @@ export class ActivityInstanceQuery {
35
37
  return { items, total }
36
38
  }
37
39
 
40
+ @Directive('@privilege(category: "activity-instance", privilege: "query", domainOwnerGranted: true)')
41
+ @Query(returns => ActivityInstanceList, { description: 'To fetch multiple activity instances by activity' })
42
+ async activityInstancesByActivity(
43
+ @Arg('activityId') activityId: string,
44
+ @Args() params: ListParam,
45
+ @Ctx() context: ResolverContext
46
+ ): Promise<ActivityInstanceList> {
47
+ const { domain } = context.state
48
+
49
+ const activity = await getRepository(Activity).findOneBy({ id: activityId })
50
+ const searchables = activity?.searchKeys?.map((item, index) => `key0${index + 1}`) || []
51
+
52
+ const queryBuilder = getQueryBuilderFromListParams({
53
+ repository: getRepository(ActivityInstance),
54
+ params,
55
+ domain,
56
+ alias: 'ai',
57
+ searchables: ['name', 'description'].concat(searchables)
58
+ }).where('ai.activity = :activity', { activity: activityId })
59
+
60
+ const [items, total] = await queryBuilder.getManyAndCount()
61
+
62
+ return { items, total }
63
+ }
64
+
65
+ // @Directive('@privilege(category: "activity-instance", privilege: "query", domainOwnerGranted: true)')
38
66
  @Query(returns => ActivityInstanceList, { description: 'To get list of activity instance that a user can pick' })
39
67
  async pickableActivityList(
40
68
  @Args() params: ListParam,
@@ -78,6 +106,7 @@ export class ActivityInstanceQuery {
78
106
  return { items, total }
79
107
  }
80
108
 
109
+ // @Directive('@privilege(category: "activity-instance", privilege: "query", domainOwnerGranted: true)')
81
110
  @Query(returns => ActivityInstanceList, { description: 'To fetch my own ActivityInstances' })
82
111
  async draftList(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<ActivityInstanceList> {
83
112
  var { domain, user } = context.state
@@ -50,6 +50,12 @@ export class NewActivityInstance {
50
50
  @Field({ nullable: true })
51
51
  uiSource?: string
52
52
 
53
+ @Field({ nullable: true })
54
+ viewType?: ActivityUIType
55
+
56
+ @Field({ nullable: true })
57
+ viewSource?: string
58
+
53
59
  @Field(type => ObjectRef, { nullable: true })
54
60
  supervisoryRole?: Role
55
61
 
@@ -110,6 +116,12 @@ export class ActivityInstancePost {
110
116
  @Field({ nullable: true })
111
117
  uiSource?: string
112
118
 
119
+ @Field({ nullable: true })
120
+ viewType?: ActivityUIType
121
+
122
+ @Field({ nullable: true })
123
+ viewSource?: string
124
+
113
125
  @Field(type => ObjectRef, { nullable: true })
114
126
  supervisoryRole?: Role
115
127
 
@@ -91,6 +91,26 @@ export class ActivityInstance {
91
91
  @Field({ nullable: true })
92
92
  adhocType?: string
93
93
 
94
+ @Column({ nullable: true, default: '' })
95
+ @Field({ nullable: true })
96
+ key01?: string = ''
97
+
98
+ @Column({ nullable: true, default: '' })
99
+ @Field({ nullable: true })
100
+ key02?: string = ''
101
+
102
+ @Column({ nullable: true, default: '' })
103
+ @Field({ nullable: true })
104
+ key03?: string = ''
105
+
106
+ @Column({ nullable: true, default: '' })
107
+ @Field({ nullable: true })
108
+ key04?: string = ''
109
+
110
+ @Column({ nullable: true, default: '' })
111
+ @Field({ nullable: true })
112
+ key05?: string = ''
113
+
94
114
  @OneToMany(type => ActivityThread, activityThread => activityThread.activityInstance)
95
115
  @Field(type => [ActivityThread])
96
116
  activityThreads?: ActivityThread[]
@@ -103,6 +123,14 @@ export class ActivityInstance {
103
123
  @Field({ nullable: true })
104
124
  uiSource?: string
105
125
 
126
+ @Column({ nullable: true })
127
+ @Field({ nullable: true })
128
+ viewType?: ActivityUIType
129
+
130
+ @Column({ nullable: true })
131
+ @Field({ nullable: true })
132
+ viewSource?: string
133
+
106
134
  @Column({ nullable: true, default: 1 })
107
135
  @Field({ nullable: true })
108
136
  priority?: number = 1
@@ -180,6 +208,10 @@ export class ActivityInstance {
180
208
  @Field({ nullable: true })
181
209
  updatedAt?: Date
182
210
 
211
+ @Column({ nullable: true })
212
+ @Field({ nullable: true })
213
+ issuedAt?: Date
214
+
183
215
  @Column({ nullable: true })
184
216
  @Field({ nullable: true })
185
217
  assignedAt?: Date
@@ -206,6 +238,13 @@ export class ActivityInstance {
206
238
  @RelationId((activityInstance: ActivityInstance) => activityInstance.updater)
207
239
  updaterId?: string
208
240
 
241
+ @ManyToOne(type => User, { nullable: true })
242
+ @Field({ nullable: true })
243
+ issuer?: User
244
+
245
+ @RelationId((activityInstance: ActivityInstance) => activityInstance.issuer)
246
+ issuerId?: string
247
+
209
248
  @ManyToOne(type => User, { nullable: true })
210
249
  @Field({ nullable: true })
211
250
  starter?: User
@@ -222,4 +261,14 @@ export class ActivityInstance {
222
261
 
223
262
  @Field(type => String, { nullable: true })
224
263
  thumbnail?: string
264
+
265
+ isDelegatable(): boolean {
266
+ switch (this.state) {
267
+ case ActivityInstanceStatus.Posted:
268
+ case ActivityInstanceStatus.Assigned:
269
+ return true
270
+ default:
271
+ return false
272
+ }
273
+ }
225
274
  }
@@ -12,16 +12,16 @@ export class ActivityInstanceSubscriber implements EntitySubscriberInterface<Act
12
12
  return ActivityInstance
13
13
  }
14
14
 
15
- afterInsert(event: InsertEvent<ActivityInstance>): Promise<any> | void {
16
- const activityInstance = event.entity
15
+ async afterInsert(event: InsertEvent<ActivityInstance>): Promise<any | void> {
16
+ const { entity: activityInstance, manager: tx } = event
17
17
 
18
18
  pubsub.publish('activity-instance', {
19
19
  activityInstance
20
20
  })
21
21
  }
22
22
 
23
- afterUpdate(event: UpdateEvent<ActivityInstance>): Promise<any> | void {
24
- const activityInstance = event.entity
23
+ async afterUpdate(event: UpdateEvent<ActivityInstance>): Promise<any | void> {
24
+ const { entity: activityInstance, manager: tx } = event
25
25
 
26
26
  pubsub.publish('activity-instance', {
27
27
  activityInstance
@@ -66,6 +66,30 @@ export class ActivityThreadQuery {
66
66
  return { items, total }
67
67
  }
68
68
 
69
+ @Query(returns => ActivityThreadList, { description: 'To fetch the tasks(ActivityThreads) which has done by me' })
70
+ async doneList(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<ActivityThreadList> {
71
+ var { domain, user } = context.state
72
+
73
+ const status = [ActivityThreadStatus.Ended, ActivityThreadStatus.Aborted]
74
+
75
+ const [items, total] = await getQueryBuilderFromListParams({
76
+ repository: getRepository(ActivityThread),
77
+ params,
78
+ domain,
79
+ alias: 'at',
80
+ searchables: ['name', 'description'],
81
+ filtersMap: {
82
+ name: { columnName: 'name', relationColumn: 'activityInstance' },
83
+ description: { columnName: 'description', relationColumn: 'activityInstance' }
84
+ }
85
+ })
86
+ .andWhere('at.state IN (:...status)', { status })
87
+ .andWhere('at.assignee = :user', { user: user.id })
88
+ .getManyAndCount()
89
+
90
+ return { items, total }
91
+ }
92
+
69
93
  @FieldResolver(type => User)
70
94
  async assignee(@Root() activityThread: ActivityThread): Promise<User> {
71
95
  return activityThread.assigneeId
@@ -82,11 +82,11 @@ export class ActivityThread {
82
82
 
83
83
  @Column({ nullable: true, default: 1 })
84
84
  @Field({ nullable: true })
85
- round: number = 1
85
+ round?: number = 1
86
86
 
87
87
  @Column({ nullable: true })
88
88
  @Field({ nullable: true })
89
- transaction: string
89
+ transaction?: string
90
90
 
91
91
  @Column({ nullable: true })
92
92
  @Field({ nullable: true })
@@ -146,6 +146,7 @@ export class ActivityThread {
146
146
  switch (this.state) {
147
147
  case ActivityThreadStatus.Started:
148
148
  case ActivityThreadStatus.Rejected:
149
+ case ActivityThreadStatus.Submitted:
149
150
  return true
150
151
  default:
151
152
  return false
@@ -158,9 +159,11 @@ export class ActivityThread {
158
159
  case ActivityThreadStatus.Started:
159
160
  case ActivityThreadStatus.Ended:
160
161
  case ActivityThreadStatus.Rejected:
162
+ case ActivityThreadStatus.Escalated:
163
+ case ActivityThreadStatus.Aborted:
164
+ case ActivityThreadStatus.Submitted:
161
165
  return true
162
166
  case ActivityThreadStatus.Delegated:
163
- case ActivityThreadStatus.Aborted:
164
167
  default:
165
168
  return false
166
169
  }
@@ -1,6 +1,6 @@
1
1
  import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
2
2
 
3
- import { ActivityInstallations } from '../../controllers/activity-installation-controller'
3
+ import { ActivityInstallations } from '../../controllers/activity-installation/activity-installation-controller'
4
4
  import { Activity, ActivityStatus } from '../activity/activity'
5
5
  import { InstallableActivity } from './installable-activity'
6
6
 
@@ -1,7 +1,7 @@
1
1
  import { Arg, Args, Ctx, Query, Resolver, FieldResolver, Root } from 'type-graphql'
2
2
  import { Domain, getRepository, ListParam } from '@things-factory/shell'
3
3
 
4
- import { ActivityInstallations } from '../../controllers/activity-installation-controller'
4
+ import { ActivityInstallations } from '../../controllers/activity-installation/activity-installation-controller'
5
5
  import { Activity } from '../activity/activity'
6
6
  import { InstallableActivity } from './installable-activity'
7
7
  import { InstallableActivityList } from './installable-activity-type'
@@ -1,4 +1,4 @@
1
- import { Field, ObjectType, registerEnumType } from 'type-graphql'
1
+ import { Field, ObjectType } from 'type-graphql'
2
2
 
3
3
  import { Activity, ActivityType, ActivityUIType } from '../activity/activity'
4
4
  import { ActivityModelItem } from '../activity/activity-model-type'
@@ -46,4 +46,6 @@ export class InstallableActivity {
46
46
 
47
47
  @Field(type => Activity, { nullable: true })
48
48
  activity?: Activity
49
+
50
+ callback?: (content: any, context: ResolverContext) => void
49
51
  }
@@ -10,13 +10,17 @@ export default {
10
10
  { tagname: 'pickable-list-page', page: 'pickable-list' },
11
11
  { tagname: 'assigned-list-page', page: 'assigned-list' },
12
12
  { tagname: 'todo-list-page', page: 'todo-list' },
13
+ { tagname: 'done-list-page', page: 'done-list' },
13
14
  { tagname: 'approval-waiting-list-page', page: 'approval-waiting-list' },
14
15
  { tagname: 'draft-list-page', page: 'draft-list' },
15
16
  { tagname: 'starter-list-page', page: 'starter-list' },
16
17
  { tagname: 'reporter-list-page', page: 'reporter-list' },
18
+ { tagname: 'activity-key-set-list-page', page: 'activity-key-set-list' },
19
+ { tagname: 'activity-key-set-page', page: 'activity-key-set' },
17
20
  { tagname: 'activity-list-page', page: 'activity-list' },
18
- { tagname: 'activity-instance-list-page', page: 'activity-instance-list' },
19
21
  { tagname: 'activity-page', page: 'activity' },
22
+ { tagname: 'activity-instance-search-page', page: 'activity-instance-search' },
23
+ { tagname: 'activity-instance-list-page', page: 'activity-instance-list' },
20
24
  { tagname: 'activity-instance-page', page: 'activity-instance' },
21
25
  { tagname: 'activity-thread-page', page: 'activity-thread' },
22
26
  { tagname: 'activity-approval-page', page: 'activity-approval' },
@@ -19,6 +19,7 @@
19
19
  "field.due-in": "due in",
20
20
  "field.hidden": "hidden",
21
21
  "field.inout": "inout",
22
+ "field.input-key": "input-key",
22
23
  "field.issuer": "issuer",
23
24
  "field.posted-at": "posted at",
24
25
  "field.issuer-role": "issuer role",
@@ -32,13 +33,16 @@
32
33
  "field.report-source": "report source",
33
34
  "field.release": "release",
34
35
  "field.schedule": "schedule",
36
+ "field.search-keys": "search keys",
35
37
  "field.spec": "spec",
36
38
  "field.standard-time": "ST(sec)",
37
39
  "field.startable": "startable",
40
+ "field.started-at": "started at",
38
41
  "field.status": "status",
39
42
  "field.supervisory-role": "supervisory role",
40
43
  "field.tact-time": "TT(sec)",
41
44
  "field.tag": "tag name",
45
+ "field.terminated-at": "terminated at",
42
46
  "field.ui-type": "UI type",
43
47
  "field.ui-source": "UI source",
44
48
  "field.unit": "unit",
@@ -59,6 +63,8 @@
59
63
  "title.activity list": "activity list",
60
64
  "title.activity model item list": "activity model item list",
61
65
  "title.activity instance list": "activity instance list",
66
+ "title.activity instance search": "activity instance search",
67
+ "title.activity instance view": "activity instance view",
62
68
  "title.activity intro": "activity intro",
63
69
  "title.activity preview": "activity preview",
64
70
  "title.activity reporter list": "activity reporter list",
@@ -70,6 +76,7 @@
70
76
  "title.activity template list": "activity template list",
71
77
  "title.approval waiting list": "approval waiting list",
72
78
  "title.assigned list": "assigned list",
79
+ "title.done list": "done list",
73
80
  "title.draft list": "draft list",
74
81
  "title.installable activity list": "installable activity list",
75
82
  "title.todo list": "todo list"
@@ -19,6 +19,7 @@
19
19
  "field.due-in": "잔여시간",
20
20
  "field.hidden": "숨기기",
21
21
  "field.inout": "입출력",
22
+ "field.input-key": "입력키",
22
23
  "field.issuer": "발급자",
23
24
  "field.posted-at": "발급일",
24
25
  "field.issuer-role": "발급자 역할",
@@ -32,13 +33,16 @@
32
33
  "field.report-source": "리포트 소스",
33
34
  "field.release": "배포버전",
34
35
  "field.schedule": "스케줄",
36
+ "field.search-keys": "검색키",
35
37
  "field.spec": "명세",
36
38
  "field.standard-time": "ST(초)",
37
39
  "field.startable": "시작 가능 업무",
40
+ "field.started-at": "시작 시간",
38
41
  "field.status": "상태",
39
42
  "field.supervisory-role": "관리자 역할",
40
43
  "field.tact-time": "TT(초)",
41
44
  "field.tag": "태그이름",
45
+ "field.terminated-at": "완료 시간",
42
46
  "field.ui-type": "화면 타입",
43
47
  "field.ui-source": "화면 소스",
44
48
  "field.unit": "단위",
@@ -59,6 +63,8 @@
59
63
  "title.activity list": "업무정의 리스트",
60
64
  "title.activity model item list": "업무 모델 항목",
61
65
  "title.activity instance list": "업무 리스트",
66
+ "title.activity instance search": "업무 검색",
67
+ "title.activity instance view": "업무 상세 정보",
62
68
  "title.activity intro": "업무 소개",
63
69
  "title.activity preview": "업무 미리보기",
64
70
  "title.activity reporter list": "업무 현황",
@@ -70,6 +76,7 @@
70
76
  "title.activity template list": "업무 템플릿",
71
77
  "title.approval waiting list": "승인 대기 리스트",
72
78
  "title.assigned list": "나의 연관 업무 현황",
79
+ "title.done list": "완료한 업무",
73
80
  "title.draft list": "작성중인 업무",
74
81
  "title.installable activity list": "설치 가능 업무",
75
82
  "title.todo list": "나의 할일 리스트"
@@ -19,6 +19,7 @@
19
19
  "field.due-in": "due in",
20
20
  "field.hidden": "hidden",
21
21
  "field.inout": "inout",
22
+ "field.input-key": "[ms] input-key",
22
23
  "field.issuer": "issuer",
23
24
  "field.posted-at": "posted at",
24
25
  "field.issuer-role": "issuer role",
@@ -31,14 +32,17 @@
31
32
  "field.report-type": "report type",
32
33
  "field.report-source": "report source",
33
34
  "field.schedule": "jadual",
35
+ "field.search-keys": "[ms] search keys",
34
36
  "field.release": "[ms] release",
35
37
  "field.spec": "spec",
36
38
  "field.standard-time": "ST(sec)",
37
39
  "field.startable": "startable",
40
+ "field.started-at": "[ms] started at",
38
41
  "field.status": "keadaan",
39
42
  "field.supervisory-role": "supervisory role",
40
43
  "field.tact-time": "TT(sec)",
41
44
  "field.tag": "[ms] tag name",
45
+ "field.terminated-at": "[ms] terminated at",
42
46
  "field.ui-type": "UI type",
43
47
  "field.ui-source": "UI source",
44
48
  "field.unit": "[ms] unit",
@@ -59,6 +63,8 @@
59
63
  "title.activity list": "activity list",
60
64
  "title.activity model item list": "activity model item list",
61
65
  "title.activity instance list": "activity instance list",
66
+ "title.activity instance search": "activity instance search",
67
+ "title.activity instance view": "activity instance view",
62
68
  "title.activity intro": "activity intro",
63
69
  "title.activity preview": "activity preview",
64
70
  "title.activity reporter list": "activity reporter list",
@@ -70,6 +76,7 @@
70
76
  "title.activity template list": "activity template list",
71
77
  "title.approval waiting list": "approval waiting list",
72
78
  "title.assigned list": "assigned list",
79
+ "title.done list": "done list",
73
80
  "title.draft list": "draft list",
74
81
  "title.installable activity list": "installable activity list",
75
82
  "title.todo list": "todo list"
@@ -18,6 +18,7 @@
18
18
  "field.due-at": "due at",
19
19
  "field.due-in": "due in",
20
20
  "field.inout": "inout",
21
+ "field.input-key": "[zh] input-key",
21
22
  "field.issuer": "issuer",
22
23
  "field.hidden": "hidden",
23
24
  "field.posted-at": "posted at",
@@ -29,16 +30,19 @@
29
30
  "field.priority": "priority",
30
31
  "field.quantifier": "quantifier",
31
32
  "field.schedule": "日程",
33
+ "field.search-keys": "[zh] search keys",
32
34
  "field.spec": "spec",
33
35
  "field.report-type": "report type",
34
36
  "field.release": "[zh] release",
35
37
  "field.report-source": "report source",
36
38
  "field.standard-time": "ST(sec)",
37
39
  "field.startable": "startable",
40
+ "field.started-at": "[zh] started at",
38
41
  "field.status": "状态",
39
42
  "field.supervisory-role": "supervisory role",
40
43
  "field.tact-time": "TT(sec)",
41
44
  "field.tag": "[zh] tag name",
45
+ "field.terminated-at": "[zh] terminated at",
42
46
  "field.ui-type": "UI type",
43
47
  "field.ui-source": "UI source",
44
48
  "field.unit": "[zh] unit",
@@ -59,6 +63,8 @@
59
63
  "title.activity list": "activity list",
60
64
  "title.activity model item list": "activity model item list",
61
65
  "title.activity instance list": "activity instance list",
66
+ "title.activity instance search": "activity instance search",
67
+ "title.activity instance view": "activity instance view",
62
68
  "title.activity intro": "activity intro",
63
69
  "title.activity preview": "activity preview",
64
70
  "title.activity reporter list": "activity reporter list",
@@ -70,6 +76,7 @@
70
76
  "title.activity template list": "activity template list",
71
77
  "title.approval waiting list": "approval waiting list",
72
78
  "title.assigned list": "assigned list",
79
+ "title.done list": "done list",
73
80
  "title.draft list": "draft list",
74
81
  "title.installable activity list": "installable activity list",
75
82
  "title.todo list": "todo list"
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../client/types.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1B,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACtC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IAC1C,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACxC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IACpC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;CACzC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1B,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE;IAClC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE;IAClC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE;IAC/B,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1B,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IAC5C,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IAC1C,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IACpC,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACrD,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE;CAC/C,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1B,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACxC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACxC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACtC,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE;IACnD,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACtC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/C,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CACnC,CAAA","sourcesContent":["export const ActivityInstanceStatus = [\n { display: '', value: '' },\n { display: 'posted', value: 'posted' },\n { display: 'Assigned', value: 'assigned' },\n { display: 'Started', value: 'started' },\n { display: 'Ended', value: 'ended' },\n { display: 'Aborted', value: 'aborted' }\n]\n\nexport const Priorities = [\n { display: '', value: '' },\n { display: 'Emergency', value: 3 },\n { display: 'Important', value: 2 },\n { display: 'Normal', value: 1 },\n { display: 'Low', value: 0 }\n]\n\nexport const ActivityUITypes = [\n { display: '', value: '' },\n { display: 'Generated', value: 'generated' },\n { display: 'Template', value: 'template' },\n { display: 'Board', value: 'board' },\n { display: 'CustomElement', value: 'custom-element' },\n { display: 'Page', value: 'page' },\n { display: 'External URL', value: 'external' }\n]\n\nexport const ActivityTypes = [\n { display: '', value: '' },\n { display: 'Task', value: 'task' },\n { display: 'Service', value: 'service' },\n { display: 'Send', value: 'send' },\n { display: 'Receive', value: 'receive' },\n { display: 'User', value: 'user' },\n { display: 'Manual', value: 'manual' },\n { display: 'BusinessRule', value: 'business-rule' },\n { display: 'Script', value: 'script' },\n { display: 'Subprocess', value: 'sub-process' },\n { display: 'Call', value: 'call' }\n]\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"activity-installation-controller.js","sourceRoot":"","sources":["../../server/controllers/activity-installation-controller.ts"],"names":[],"mappings":";;;AAEA,MAAa,qBAAqB;IAGhC,MAAM,CAAC,uBAAuB,CAAC,QAA6B;QAC1D,qBAAqB,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA;IAC3D,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,IAAY;QACrB,OAAO,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAA;IACvD,CAAC;;AAbH,sDAcC;AAbQ,+BAAS,GAA4C,EAAE,CAAA","sourcesContent":["import { InstallableActivity } from '../service/installable-activity/installable-activity'\n\nexport class ActivityInstallations {\n static templates: { [name: string]: InstallableActivity } = {}\n\n static installActivityTemplate(template: InstallableActivity) {\n ActivityInstallations.templates[template.name] = template\n }\n\n static get(name: string): InstallableActivity {\n return ActivityInstallations.templates[name]\n }\n\n static list(): InstallableActivity[] {\n return Object.values(ActivityInstallations.templates)\n }\n}\n"]}