@things-factory/worklist 6.1.61 → 6.1.64

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 (48) hide show
  1. package/client/components/activity-instance-ribon.ts +2 -2
  2. package/client/components/activity-starter-form.ts +17 -4
  3. package/client/pages/activity-approval/activity-approval-page.ts +2 -1
  4. package/client/pages/activity-instance/activity-instance-view.ts +283 -35
  5. package/client/pages/activity-thread/activity-thread-page.ts +2 -1
  6. package/client/pages/activity-thread/activity-thread-view-page.ts +18 -41
  7. package/client/pages/activity-thread/activity-thread-view.ts +401 -0
  8. package/dist-client/components/activity-instance-ribon.js +2 -2
  9. package/dist-client/components/activity-instance-ribon.js.map +1 -1
  10. package/dist-client/components/activity-starter-form.js +17 -4
  11. package/dist-client/components/activity-starter-form.js.map +1 -1
  12. package/dist-client/pages/activity-approval/activity-approval-page.js +2 -1
  13. package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
  14. package/dist-client/pages/activity-instance/activity-instance-view.d.ts +1 -0
  15. package/dist-client/pages/activity-instance/activity-instance-view.js +266 -31
  16. package/dist-client/pages/activity-instance/activity-instance-view.js.map +1 -1
  17. package/dist-client/pages/activity-thread/activity-thread-page.js +2 -1
  18. package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
  19. package/dist-client/pages/activity-thread/activity-thread-view-page.d.ts +5 -5
  20. package/dist-client/pages/activity-thread/activity-thread-view-page.js +17 -38
  21. package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -1
  22. package/dist-client/pages/activity-thread/activity-thread-view.d.ts +17 -0
  23. package/dist-client/pages/activity-thread/activity-thread-view.js +380 -0
  24. package/dist-client/pages/activity-thread/activity-thread-view.js.map +1 -0
  25. package/dist-client/route.d.ts +1 -1
  26. package/dist-client/tsconfig.tsbuildinfo +1 -1
  27. package/dist-server/controllers/activity-instance/issue.js +1 -1
  28. package/dist-server/controllers/activity-instance/issue.js.map +1 -1
  29. package/dist-server/service/activity-approval/activity-approval-query.js +4 -4
  30. package/dist-server/service/activity-approval/activity-approval-query.js.map +1 -1
  31. package/dist-server/service/activity-instance/activity-instance-query.js +2 -2
  32. package/dist-server/service/activity-instance/activity-instance-query.js.map +1 -1
  33. package/dist-server/service/activity-template/activity-template-query.js +2 -2
  34. package/dist-server/service/activity-template/activity-template-query.js.map +1 -1
  35. package/dist-server/service/activity-thread/activity-thread-query.js +3 -3
  36. package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -1
  37. package/dist-server/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +3 -3
  39. package/server/controllers/activity-instance/issue.ts +1 -1
  40. package/server/service/activity-approval/activity-approval-query.ts +4 -4
  41. package/server/service/activity-instance/activity-instance-query.ts +2 -2
  42. package/server/service/activity-template/activity-template-query.ts +2 -2
  43. package/server/service/activity-thread/activity-thread-query.ts +3 -3
  44. package/translations/en.json +2 -0
  45. package/translations/ja.json +2 -0
  46. package/translations/ko.json +2 -0
  47. package/translations/ms.json +2 -0
  48. package/translations/zh.json +2 -0
@@ -94,6 +94,7 @@ export class ActivityInstanceRibon extends localize(i18next)(LitElement) {
94
94
  [state] {
95
95
  text-align: right;
96
96
  font-size: var(--fontsize-small);
97
+ font-weight:bold;
97
98
  }
98
99
 
99
100
  @media only screen and (max-width: 460px) {
@@ -131,8 +132,7 @@ export class ActivityInstanceRibon extends localize(i18next)(LitElement) {
131
132
  ></activity-instance-context-template>`
132
133
  })
133
134
  }}
134
- >description</mwc-icon
135
- >
135
+ >description</mwc-icon>
136
136
  ${description}
137
137
  </div>
138
138
  ${startingType == 'issue' && assignee
@@ -22,7 +22,7 @@ export class ActivityStarterForm extends localize(i18next)(LitElement) {
22
22
  display: flex;
23
23
  flex-direction: column;
24
24
 
25
- background-color: #fff;
25
+ background-color: var(--main-section-background-color);
26
26
  }
27
27
 
28
28
  content {
@@ -37,10 +37,23 @@ export class ActivityStarterForm extends localize(i18next)(LitElement) {
37
37
  content > div {
38
38
  display: flex;
39
39
  flex-direction: column;
40
+ color: var(--secondary-color);
40
41
  }
41
42
 
42
- content span {
43
- color: navy;
43
+ content label{
44
+ font:var(--label-font)
45
+ }
46
+ content input, content textarea{
47
+ border-radius:var(--border-radius);
48
+ border:var(--border-dark-color);
49
+ padding:var(--input-padding);
50
+ margin:var(--input-margin);
51
+ font:var(--input-font);
52
+ }
53
+
54
+ content [desc]{
55
+ color: var(--secondary-text-color);
56
+ font-size:0.9em
44
57
  }
45
58
 
46
59
  #description {
@@ -70,7 +83,7 @@ export class ActivityStarterForm extends localize(i18next)(LitElement) {
70
83
 
71
84
  return html`
72
85
  <content>
73
- <div>
86
+ <div desc>
74
87
  <span
75
88
  >업무의 타이틀과 설명을 작성해서 초안저장을 클릭하시면, 업무 초안이 생성되고 편집할 수 있는 페이지로
76
89
  이동합니다.</span
@@ -197,8 +197,9 @@ export class ActivityApprovalPage extends connect(store)(localize(i18next)(PageV
197
197
  return this.customElementContent()
198
198
  case 'page':
199
199
  case 'external':
200
- default:
201
200
  return html``
201
+ default:
202
+ return this.generatedContent()
202
203
  }
203
204
  }
204
205
 
@@ -1,3 +1,5 @@
1
+ import '@things-factory/organization/dist-client/component/approval-line-view.js'
2
+
1
3
  import gql from 'graphql-tag'
2
4
  import { css, html, LitElement } from 'lit'
3
5
  import { customElement, property, query, state } from 'lit/decorators.js'
@@ -10,7 +12,7 @@ import { ActivityInstance } from '../../types/activity-instance'
10
12
  import { ActivityThread } from '../../types/activity-thread'
11
13
  import { ActivityApproval } from '../../types/activity-approval'
12
14
 
13
- const formatter = new Intl.DateTimeFormat(navigator.language, { dateStyle: 'full', timeStyle: 'short' })
15
+ const formatter = new Intl.DateTimeFormat(navigator.language, { dateStyle: 'short', timeStyle: 'short' })
14
16
 
15
17
  @customElement('activity-instance-view')
16
18
  export class ActivityInstanceView extends localize(i18next)(LitElement) {
@@ -18,9 +20,188 @@ export class ActivityInstanceView extends localize(i18next)(LitElement) {
18
20
  ScrollbarStyles,
19
21
  css`
20
22
  :host {
21
- display: block;
22
- background-color: #fff;
23
+ display: flex;
23
24
  overflow: auto;
25
+ font-size: var(--fontsize-default);
26
+ }
27
+ :host([state='assigned']) {
28
+ --worklist-status-color: #5f7184;
29
+ }
30
+
31
+ :host([state='started']) {
32
+ --worklist-status-color: #56af45;
33
+ }
34
+
35
+ :host([state='delegated']) {
36
+ --worklist-status-color: #8654b0;
37
+ }
38
+
39
+ :host([state='submitted']) {
40
+ --worklist-status-color: #428df3;
41
+ }
42
+
43
+ :host([state='escalated']) {
44
+ --worklist-status-color: #595de5;
45
+ }
46
+
47
+ :host([state='rejected']) {
48
+ --worklist-status-color: #f27429;
49
+ }
50
+
51
+ :host([state='ended']) {
52
+ --worklist-status-color: #02acae;
53
+ }
54
+
55
+ :host([state='aborted']) {
56
+ --worklist-status-color: #cb3a33;
57
+ }
58
+ [instance-container] {
59
+ flex: 1;
60
+ background-color: var(--main-section-background-color);
61
+ border-right: var(--border-dark-color);
62
+ padding: var(--padding-wide);
63
+ color: var(--primary-text-color);
64
+ }
65
+ [thread-container] {
66
+ flex: 2;
67
+ padding: var(--padding-wide);
68
+ }
69
+ [instance-container] div {
70
+ margin-bottom: var(--margin-default);
71
+ padding-bottom: var(--padding-default);
72
+ border-bottom: var(--border-dark-color);
73
+ }
74
+ [header] mwc-icon {
75
+ background-color: var(--worklist-status-color, tomato);
76
+ float: left;
77
+ margin-right: var(--margin-default);
78
+ padding: var(--padding-default);
79
+ border-radius: 50%;
80
+ float: left;
81
+ font-size: 1.8em;
82
+ color: var(--theme-white-color);
83
+ }
84
+ [header] strong {
85
+ display: block;
86
+ font: bold 22px / 1.1 var(--theme-font);
87
+ }
88
+ [header] {
89
+ overflow: hidden;
90
+ font-size: var(--fontsize-small);
91
+ }
92
+ [instance-container] div label {
93
+ display: inline-block;
94
+ margin-right: var(--margin-default);
95
+ }
96
+ span[status] {
97
+ width: 15px;
98
+ height: 15px;
99
+ background-color: var(--worklist-status-color, tomato);
100
+ display: inline-block;
101
+ margin-right: var(--margin-narrow);
102
+ border-radius: 50%;
103
+ }
104
+ [thread-container] table {
105
+ width: 100%;
106
+ border-collapse: collapse;
107
+ }
108
+ [thread-container] th {
109
+ background-color: rgba(var(--primary-color-rgb), 0.05);
110
+ border-top: var(--grid-header-top-border);
111
+ border-bottom: var(--grid-header-bottom-border);
112
+ padding: var(--grid-header-padding);
113
+ text-overflow: ellipsis;
114
+ font: var(--grid-header-font);
115
+ color: var(--grid-header-color);
116
+ }
117
+ [thread-container] td {
118
+ padding: var(--padding-narrow);
119
+ border-bottom: var(--grid-record-border-bottom);
120
+ }
121
+ [assignee] * {
122
+ vertical-align: middle;
123
+ }
124
+ [assignee] mwc-icon {
125
+ opacity: 0.5;
126
+ }
127
+ [subtitle] {
128
+ display: block;
129
+ margin: var(--margin-wide) 0 var(--margin-narrow) 0;
130
+ font: bold 16px var(--theme-font);
131
+ color: var(--secondary-text-color);
132
+ }
133
+ [timeline] ol {
134
+ list-style: none;
135
+ margin: 0;
136
+ padding: 0;
137
+ }
138
+ [timeline] li {
139
+ display: flex;
140
+ }
141
+ [timeline] [info] {
142
+ flex: 1;
143
+ }
144
+ [timeline] [date] {
145
+ opacity: 0.7;
146
+ width: 120px;
147
+ font-size: var(--fontsize-small);
148
+ }
149
+ [timeline] [info] strong {
150
+ float: right;
151
+ }
152
+ [timeline] [status] {
153
+ margin: 0 var(--margin-narrow);
154
+ display: block;
155
+ border-radius: 50%;
156
+ width: 12px;
157
+ height: 12px;
158
+ position: relative;
159
+ top: 3px;
160
+ border: 2px solid #fff;
161
+ background-color: var(--worklist-status-color, tomato);
162
+ }
163
+ [timeline] [status]::before {
164
+ content: '';
165
+ height: 60px;
166
+ width: 2px;
167
+ display: block;
168
+ position: relative;
169
+ margin-left: 5px;
170
+ background-color: var(--worklist-status-color, tomato);
171
+ opacity: 0.2;
172
+ }
173
+ [timeline] [info] mwc-icon {
174
+ position: relative;
175
+ top: 3px;
176
+ font-size: var(--fontsize-large);
177
+ }
178
+ [timeline] [info] p {
179
+ background-color: #f4f4f4;
180
+ margin: var(--margin-narrow) 0 var(--margin-default) 0;
181
+ padding: var(--padding-narrow) var(--padding-default);
182
+ border-radius: var(--border-radius);
183
+ font-size: var(--fontsize-small);
184
+ text-align: justify;
185
+ }
186
+ [timeline] [info] p::before {
187
+ content: '';
188
+ float: right;
189
+ margin-top: -10px;
190
+ margin-right: 20px;
191
+ border: 7px solid transparent;
192
+ border-bottom-color: #f4f4f4;
193
+ border-top: 0;
194
+ }
195
+ [thread] div {
196
+ border-bottom: var(--border-dark-color);
197
+ padding: var(--padding-narrow);
198
+ text-align: right;
199
+ overflow: hidden;
200
+ }
201
+ [thread] div label {
202
+ float: left;
203
+ width: 25%;
204
+ text-align: left;
24
205
  }
25
206
  `
26
207
  ]
@@ -37,22 +218,49 @@ export class ActivityInstanceView extends localize(i18next)(LitElement) {
37
218
  if (!this.activityInstance) {
38
219
  return html`<div>no activity instance info.</div>`
39
220
  }
40
- const { id, name, description, input, output, assignedAt, startedAt, activityThreads, terminatedAt, updatedAt } =
41
- this.activityInstance
42
- const instance = this.activityInstance
221
+
222
+ const {
223
+ id,
224
+ name,
225
+ description,
226
+ input,
227
+ output,
228
+ state,
229
+ assignedAt,
230
+ startedAt,
231
+ approvalLine,
232
+ activityThreads,
233
+ terminatedAt,
234
+ updatedAt
235
+ } = this.activityInstance
43
236
 
44
237
  return html`
45
- <div>${i18next.t('field.name')}: ${name}</div>
46
- <div>${i18next.t('field.description')}: ${description}</div>
47
- <div>${i18next.t('field.search-keys')}: ${this.renderSearchKeys()}</div>
48
- <div>${i18next.t('field.assigned-at')}: ${assignedAt && formatter.format(new Date(assignedAt))}</div>
49
- <div>${i18next.t('field.started-at')}: ${startedAt && formatter.format(new Date(startedAt))}</div>
50
- <div>${i18next.t('field.terminated-at')}: ${terminatedAt && formatter.format(new Date(terminatedAt))}</div>
51
- <div>${i18next.t('field.updated-at')}: ${updatedAt && formatter.format(new Date(updatedAt))}</div>
52
-
53
- ${this.renderInOut({ ...input, ...output })}
54
- <div>실행 이력</div>
55
- ${activityThreads?.map(activityThread => this.renderActivityThread(activityThread))}
238
+ <div instance-container>
239
+ <div header>
240
+ <mwc-icon>description</mwc-icon>
241
+ <strong>${name}</strong>
242
+ ${description}
243
+ </div>
244
+ <div>
245
+ ${approvalLine ? html`<approval-line-view .model=${approvalLine}></approval-line-view>` : html``}
246
+ </div>
247
+
248
+ <div>
249
+ <label>${i18next.t('label.status')}</label>
250
+ <span status></span>
251
+ <strong>${i18next.t('label.activity-state-' + state)}</strong>
252
+ </div>
253
+
254
+ <div>
255
+ <label>${i18next.t('field.assigned-at')}</label>${assignedAt && formatter.format(new Date(assignedAt))}
256
+ </div>
257
+ <div><label>${i18next.t('field.started-at')}</label>${startedAt && formatter.format(new Date(startedAt))}</div>
258
+ <div><label>${i18next.t('field.updated-at')}</label>${updatedAt && formatter.format(new Date(updatedAt))}</div>
259
+ <div>
260
+ <label>${i18next.t('field.terminated-at')}</label>${terminatedAt && formatter.format(new Date(terminatedAt))}
261
+ </div>
262
+ </div>
263
+ <div thread-container>${activityThreads?.map(activityThread => this.renderActivityThread(activityThread))}</div>
56
264
  `
57
265
  }
58
266
 
@@ -70,16 +278,40 @@ export class ActivityInstanceView extends localize(i18next)(LitElement) {
70
278
  const { name, email } = assignee || {}
71
279
 
72
280
  return html`
73
- <div>${i18next.t('field.assignee')}: ${name}</div>
74
- <div>${i18next.t('field.round')}: ${round}</div>
75
- <div>${i18next.t('field.output')}: ${this.renderInOut(output)}</div>
76
- <div>${i18next.t('field.assigned-at')}: ${assignedAt && formatter.format(new Date(assignedAt))}</div>
77
- <div>${i18next.t('field.started-at')}: ${startedAt && formatter.format(new Date(startedAt))}</div>
78
- <div>${i18next.t('field.terminated-at')}: ${terminatedAt && formatter.format(new Date(terminatedAt))}</div>
79
-
80
- ${activityApprovals
81
- .sort((a, b) => (a.round > b.round ? 1 : a.round < b.round ? -1 : a.order! > b.order! ? 1 : -1))
82
- .map(approval => this.renderActivityApproval(approval))}
281
+ <div assignee>
282
+ <mwc-icon>account_circle</mwc-icon>
283
+ <strong>${name}</strong>
284
+ </div>
285
+
286
+ <div thread>
287
+ <span subtitle>${i18next.t('label.information')}</span>
288
+ <div>
289
+ <label>${i18next.t('label.status')}</label>
290
+ <span status></span>
291
+ <strong>${i18next.t('label.activity-state-' + state)}</strong>
292
+ </div>
293
+ <div>
294
+ <label>${i18next.t('field.assigned-at')}</label> ${assignedAt && formatter.format(new Date(assignedAt))}
295
+ </div>
296
+ <div><label>${i18next.t('field.started-at')}</label> ${startedAt && formatter.format(new Date(startedAt))}</div>
297
+ <div>
298
+ <label>${i18next.t('field.terminated-at')}</label> ${terminatedAt && formatter.format(new Date(terminatedAt))}
299
+ </div>
300
+ <div><label>${i18next.t('field.round')}</label> ${round}</div>
301
+ </div>
302
+
303
+ <div>
304
+ <span subtitle>${i18next.t('field.output')}</span>
305
+ ${this.renderInOut(output || {})}
306
+ </div>
307
+ <div timeline>
308
+ <span subtitle>승인 검토 이력</span>
309
+ <ol>
310
+ ${activityApprovals
311
+ .sort((a, b) => (a.round < b.round ? 1 : a.round > b.round ? -1 : a.order! < b.order! ? 1 : -1))
312
+ .map(approval => this.renderActivityApproval(approval))}
313
+ </ol>
314
+ </div>
83
315
  `
84
316
  }
85
317
 
@@ -88,13 +320,15 @@ export class ActivityInstanceView extends localize(i18next)(LitElement) {
88
320
  const { name, email } = approver || {}
89
321
 
90
322
  return html`
91
- <div>${i18next.t('field.approver')}: ${name}</div>
92
- <div>${i18next.t('field.judgment')}: ${judgment}</div>
93
- <div>${i18next.t('field.comment')}: ${comment}</div>
94
- <div>${i18next.t('field.round')}: ${round}</div>
95
- <div>${i18next.t('field.order')}: ${order}</div>
96
- <div>${i18next.t('field.started-at')}: ${createdAt && formatter.format(new Date(createdAt))}</div>
97
- <div>${i18next.t('field.terminated-at')}: ${terminatedAt && formatter.format(new Date(terminatedAt))}</div>
323
+ <li>
324
+ <span date>${formatter.format(new Date(terminatedAt || createdAt!))}</span>
325
+ <span status></span>
326
+ <span info>
327
+ ${i18next.t('label.activity-state-' + (judgment || 'started'))}
328
+ <strong><mwc-icon>account_circle</mwc-icon>${name}</strong>
329
+ <p>${comment}</p>
330
+ </span>
331
+ </li>
98
332
  `
99
333
  }
100
334
 
@@ -122,7 +356,7 @@ export class ActivityInstanceView extends localize(i18next)(LitElement) {
122
356
  }
123
357
 
124
358
  renderInOut(data) {
125
- const { input, output, activity } = this.activityInstance!
359
+ const { activity } = this.activityInstance!
126
360
  const { model } = activity || {}
127
361
 
128
362
  return html`
@@ -159,6 +393,7 @@ export class ActivityInstanceView extends localize(i18next)(LitElement) {
159
393
  id
160
394
  name
161
395
  description
396
+ state
162
397
  key01
163
398
  key02
164
399
  key03
@@ -189,6 +424,16 @@ export class ActivityInstanceView extends localize(i18next)(LitElement) {
189
424
  spec
190
425
  }
191
426
  }
427
+ approvalLine {
428
+ type
429
+ value
430
+ approver {
431
+ id
432
+ name
433
+ description
434
+ controlNo
435
+ }
436
+ }
192
437
  activityThreads {
193
438
  state
194
439
  transaction
@@ -208,6 +453,8 @@ export class ActivityInstanceView extends localize(i18next)(LitElement) {
208
453
  }
209
454
  judgment
210
455
  comment
456
+ createdAt
457
+ terminatedAt
211
458
  }
212
459
  assignedAt
213
460
  startedAt
@@ -230,5 +477,6 @@ export class ActivityInstanceView extends localize(i18next)(LitElement) {
230
477
  })
231
478
 
232
479
  this.activityInstance = response.data.activityInstance
480
+ this.setAttribute('state', this.activityInstance?.state || '')
233
481
  }
234
482
  }
@@ -172,8 +172,9 @@ export class ActivityThreadPage extends connect(store)(localize(i18next)(PageVie
172
172
  return this.customElementContent()
173
173
  case 'page':
174
174
  case 'external':
175
- default:
176
175
  return html``
176
+ default:
177
+ return this.generatedContent()
177
178
  }
178
179
  }
179
180
 
@@ -1,5 +1,6 @@
1
- import '@operato/property-editor/ox-properties-dynamic-view.js'
2
1
  import '@operato/board/ox-board-viewer.js'
2
+ import '../../components/activity-thread-ribon.js'
3
+ import './activity-thread-view.js'
3
4
 
4
5
  import gql from 'graphql-tag'
5
6
  import { css, html } from 'lit'
@@ -32,6 +33,7 @@ const ActivityThreadFetchResult = `\
32
33
  description
33
34
  state
34
35
  activity {
36
+ id
35
37
  model {
36
38
  name
37
39
  description
@@ -85,7 +87,6 @@ export class ActivityThreadViewPage extends connect(store)(localize(i18next)(Pag
85
87
  flex-direction: column;
86
88
 
87
89
  width: 100%;
88
- padding: 5px;
89
90
  overflow: auto;
90
91
  }
91
92
 
@@ -94,6 +95,10 @@ export class ActivityThreadViewPage extends connect(store)(localize(i18next)(Pag
94
95
  height: 100%;
95
96
  }
96
97
 
98
+ activity-thread-view {
99
+ padding: var(--padding-default);
100
+ }
101
+
97
102
  #custom-content {
98
103
  flex: 1;
99
104
  }
@@ -107,13 +112,18 @@ export class ActivityThreadViewPage extends connect(store)(localize(i18next)(Pag
107
112
  return {
108
113
  title: this.lifecycle?.params?.['title'] || i18next.t('title.activity'),
109
114
  help: 'worklist/activity',
110
- actions: [],
111
- activityThread: this.activityThread
115
+ actions: []
116
+ // activityThread: this.activityThread
112
117
  }
113
118
  }
114
119
 
115
120
  render() {
116
- return html` ${this.activityContent()}`
121
+ const activityThread = this.activityThread
122
+
123
+ return html` ${activityThread
124
+ ? html`<activity-thread-ribon .activityThread=${activityThread}></activity-thread-ribon>`
125
+ : html``}
126
+ ${this.activityContent()}`
117
127
  }
118
128
 
119
129
  activityContent() {
@@ -128,8 +138,9 @@ export class ActivityThreadViewPage extends connect(store)(localize(i18next)(Pag
128
138
  return this.customElementContent()
129
139
  case 'page':
130
140
  case 'external':
131
- default:
132
141
  return html``
142
+ default:
143
+ return this.generatedContent()
133
144
  }
134
145
  }
135
146
 
@@ -169,43 +180,9 @@ export class ActivityThreadViewPage extends connect(store)(localize(i18next)(Pag
169
180
  }
170
181
 
171
182
  generatedContent() {
172
- var { output, activityInstance } = this.activityThread || {}
173
- var { input } = activityInstance || {}
174
-
175
- const inputSpec = this.getInputSpec()
176
- const outputSpec = this.getOutputSpec()
177
-
178
- if (!output) {
179
- output = inputSpec
180
- .filter(item => item.inout === 'inout')
181
- .reduce((inout, item) => {
182
- inout[item.name] = input[item.name]
183
- return inout
184
- }, {})
185
- }
186
-
187
183
  return keyed(
188
184
  this.activityThread.id,
189
- html`
190
- <fieldset>
191
- <legend>Input</legend>
192
- <ox-properties-dynamic-view
193
- data-name="input"
194
- .props=${inputSpec}
195
- .value=${input}
196
- ></ox-properties-dynamic-view>
197
- </fieldset>
198
-
199
- <fieldset>
200
- <legend>Output</legend>
201
- <ox-properties-dynamic-view
202
- data-name="output"
203
- .props=${outputSpec}
204
- .value=${output}
205
- @property-change=${e => (this.activityThread.output = e.currentTarget.value)}
206
- ></ox-properties-dynamic-view>
207
- </fieldset>
208
- `
185
+ html` <activity-thread-view .activityThreadId=${this.activityThread.id}></activity-thread-view> `
209
186
  )
210
187
  }
211
188