@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.
- package/client/components/activity-instance-ribon.ts +2 -2
- package/client/components/activity-starter-form.ts +17 -4
- package/client/pages/activity-approval/activity-approval-page.ts +2 -1
- package/client/pages/activity-instance/activity-instance-view.ts +283 -35
- package/client/pages/activity-thread/activity-thread-page.ts +2 -1
- package/client/pages/activity-thread/activity-thread-view-page.ts +18 -41
- package/client/pages/activity-thread/activity-thread-view.ts +401 -0
- package/dist-client/components/activity-instance-ribon.js +2 -2
- package/dist-client/components/activity-instance-ribon.js.map +1 -1
- package/dist-client/components/activity-starter-form.js +17 -4
- package/dist-client/components/activity-starter-form.js.map +1 -1
- package/dist-client/pages/activity-approval/activity-approval-page.js +2 -1
- package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
- package/dist-client/pages/activity-instance/activity-instance-view.d.ts +1 -0
- package/dist-client/pages/activity-instance/activity-instance-view.js +266 -31
- package/dist-client/pages/activity-instance/activity-instance-view.js.map +1 -1
- package/dist-client/pages/activity-thread/activity-thread-page.js +2 -1
- package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
- package/dist-client/pages/activity-thread/activity-thread-view-page.d.ts +5 -5
- package/dist-client/pages/activity-thread/activity-thread-view-page.js +17 -38
- package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -1
- package/dist-client/pages/activity-thread/activity-thread-view.d.ts +17 -0
- package/dist-client/pages/activity-thread/activity-thread-view.js +380 -0
- package/dist-client/pages/activity-thread/activity-thread-view.js.map +1 -0
- package/dist-client/route.d.ts +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/controllers/activity-instance/issue.js +1 -1
- package/dist-server/controllers/activity-instance/issue.js.map +1 -1
- package/dist-server/service/activity-approval/activity-approval-query.js +4 -4
- package/dist-server/service/activity-approval/activity-approval-query.js.map +1 -1
- package/dist-server/service/activity-instance/activity-instance-query.js +2 -2
- package/dist-server/service/activity-instance/activity-instance-query.js.map +1 -1
- package/dist-server/service/activity-template/activity-template-query.js +2 -2
- package/dist-server/service/activity-template/activity-template-query.js.map +1 -1
- package/dist-server/service/activity-thread/activity-thread-query.js +3 -3
- package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/server/controllers/activity-instance/issue.ts +1 -1
- package/server/service/activity-approval/activity-approval-query.ts +4 -4
- package/server/service/activity-instance/activity-instance-query.ts +2 -2
- package/server/service/activity-template/activity-template-query.ts +2 -2
- package/server/service/activity-thread/activity-thread-query.ts +3 -3
- package/translations/en.json +2 -0
- package/translations/ja.json +2 -0
- package/translations/ko.json +2 -0
- package/translations/ms.json +2 -0
- 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:
|
|
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
|
|
43
|
-
|
|
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: '
|
|
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:
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
<div
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
<
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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 {
|
|
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
|
-
|
|
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
|
|