@things-factory/worklist 6.1.55 → 6.1.57
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-approval-ribon.ts +165 -0
- package/client/components/activity-instance-ribon.ts +19 -93
- package/client/components/activity-thread-ribon.ts +160 -0
- package/client/pages/activity/activity-page.ts +2 -0
- package/client/pages/activity-approval/activity-approval-page.ts +32 -3
- package/client/pages/activity-instance/activity-instance-start-page.ts +4 -2
- package/client/pages/activity-instance/activity-instance-view.ts +17 -10
- package/client/pages/activity-thread/activity-thread-page.ts +14 -7
- package/client/pages/activity-thread/activity-thread-view-page.ts +2 -0
- package/client/templates/activity-approval-context-template.ts +121 -23
- package/client/templates/activity-instance-context-template.ts +116 -115
- package/client/templates/activity-thread-context-template.ts +117 -18
- package/dist-client/components/activity-approval-ribon.d.ts +13 -0
- package/dist-client/components/activity-approval-ribon.js +166 -0
- package/dist-client/components/activity-approval-ribon.js.map +1 -0
- package/dist-client/components/activity-instance-ribon.d.ts +1 -0
- package/dist-client/components/activity-instance-ribon.js +19 -80
- package/dist-client/components/activity-instance-ribon.js.map +1 -1
- package/dist-client/components/activity-thread-ribon.d.ts +13 -0
- package/dist-client/components/activity-thread-ribon.js +160 -0
- package/dist-client/components/activity-thread-ribon.js.map +1 -0
- package/dist-client/pages/activity/activity-page.js +2 -2
- package/dist-client/pages/activity/activity-page.js.map +1 -1
- package/dist-client/pages/activity-approval/activity-approval-page.d.ts +5 -4
- package/dist-client/pages/activity-approval/activity-approval-page.js +28 -5
- package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
- package/dist-client/pages/activity-instance/activity-instance-start-page.d.ts +0 -1
- package/dist-client/pages/activity-instance/activity-instance-start-page.js +4 -4
- package/dist-client/pages/activity-instance/activity-instance-start-page.js.map +1 -1
- package/dist-client/pages/activity-instance/activity-instance-view.d.ts +1 -1
- package/dist-client/pages/activity-instance/activity-instance-view.js +17 -10
- package/dist-client/pages/activity-instance/activity-instance-view.js.map +1 -1
- package/dist-client/pages/activity-thread/activity-thread-page.d.ts +4 -4
- package/dist-client/pages/activity-thread/activity-thread-page.js +13 -9
- package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
- package/dist-client/pages/activity-thread/activity-thread-view-page.js +2 -2
- package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -1
- package/dist-client/route.d.ts +1 -1
- package/dist-client/templates/activity-approval-context-template.js +124 -23
- package/dist-client/templates/activity-approval-context-template.js.map +1 -1
- package/dist-client/templates/activity-instance-context-template.js +116 -102
- package/dist-client/templates/activity-instance-context-template.js.map +1 -1
- package/dist-client/templates/activity-thread-context-template.js +120 -18
- package/dist-client/templates/activity-thread-context-template.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/service/activity-approval/activity-approval-mutation.js +12 -0
- package/dist-server/service/activity-approval/activity-approval-mutation.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/server/service/activity-approval/activity-approval-mutation.ts +19 -1
- package/translations/en.json +3 -0
- package/translations/ja.json +3 -0
- package/translations/ko.json +3 -0
- package/translations/ms.json +136 -133
- package/translations/zh.json +133 -130
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import '@material/mwc-button'
|
|
2
|
+
import '@operato/property-editor/ox-properties-dynamic-view.js'
|
|
3
|
+
import '@things-factory/organization/dist-client/component/approval-line-brief.js'
|
|
4
|
+
import '../templates/activity-approval-context-template.js'
|
|
5
|
+
|
|
6
|
+
import { css, html, LitElement } from 'lit'
|
|
7
|
+
import { customElement, property, state } from 'lit/decorators.js'
|
|
8
|
+
|
|
9
|
+
import { i18next, localize } from '@operato/i18n'
|
|
10
|
+
import { toggleOverlay } from '@operato/layout'
|
|
11
|
+
|
|
12
|
+
@customElement('activity-approval-ribon')
|
|
13
|
+
export class ActivityApprovalRibon extends localize(i18next)(LitElement) {
|
|
14
|
+
static styles = [
|
|
15
|
+
css`
|
|
16
|
+
:host {
|
|
17
|
+
display: flex;
|
|
18
|
+
background-color: var(--worklist-status-color);
|
|
19
|
+
color: var(--theme-white-color);
|
|
20
|
+
align-items: center;
|
|
21
|
+
min-height: 44px;
|
|
22
|
+
--fontsize-small: 12px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
div {
|
|
26
|
+
border-left: var(--border-dark-color);
|
|
27
|
+
padding: var(--padding-narrow) var(--padding-default);
|
|
28
|
+
align-self: center;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:host([state='assigned']) {
|
|
32
|
+
--worklist-status-color: #5f7184;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
:host([state='started']) {
|
|
36
|
+
--worklist-status-color: #56af45;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:host([state='delegated']) {
|
|
40
|
+
--worklist-status-color: #8654b0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
:host([state='submitted']) {
|
|
44
|
+
--worklist-status-color: #428df3;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
:host([state='escalated']) {
|
|
48
|
+
--worklist-status-color: #595de5;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:host([state='rejected']) {
|
|
52
|
+
--worklist-status-color: #f27429;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:host([state='ended']) {
|
|
56
|
+
--worklist-status-color: #02acae;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:host([state='aborted']) {
|
|
60
|
+
--worklist-status-color: #cb3a33;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
mwc-icon {
|
|
64
|
+
font-size: 24px;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
[desc] {
|
|
68
|
+
flex: 2;
|
|
69
|
+
font-size: var(--fontsize-small);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
[desc] * {
|
|
73
|
+
vertical-align: middle;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
[assignee] {
|
|
77
|
+
text-align: center;
|
|
78
|
+
font-size: var(--fontsize-small);
|
|
79
|
+
line-height: 1.3;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
[assignee] span {
|
|
83
|
+
display: block;
|
|
84
|
+
font-size: var(--fontsize-large);
|
|
85
|
+
font-weight: bold;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
approval-line-brief {
|
|
89
|
+
background-color: var(--worklist-status-color);
|
|
90
|
+
flex: 2;
|
|
91
|
+
font-size: var(--fontsize-small);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
[state] {
|
|
95
|
+
text-align: right;
|
|
96
|
+
font-size: var(--fontsize-small);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@media only screen and (max-width: 460px) {
|
|
100
|
+
:host {
|
|
101
|
+
flex-direction: column;
|
|
102
|
+
}
|
|
103
|
+
div {
|
|
104
|
+
border-left: none;
|
|
105
|
+
border-bottom: var(--border-dark-color);
|
|
106
|
+
}
|
|
107
|
+
[assignee] {
|
|
108
|
+
display: none;
|
|
109
|
+
}
|
|
110
|
+
mwc-icon {
|
|
111
|
+
padding: 0;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
`
|
|
115
|
+
]
|
|
116
|
+
|
|
117
|
+
@property({ type: Object }) activityApproval: any
|
|
118
|
+
|
|
119
|
+
render() {
|
|
120
|
+
const { activityInstance, state } = this.activityApproval?.activityThread || {}
|
|
121
|
+
const { description, assignee, approvalLine, activity } = activityInstance || {}
|
|
122
|
+
const { startingType } = activity || {}
|
|
123
|
+
|
|
124
|
+
return html`
|
|
125
|
+
<div desc>
|
|
126
|
+
<mwc-icon
|
|
127
|
+
@click=${() => {
|
|
128
|
+
toggleOverlay('activity-info-overlay', {
|
|
129
|
+
template: html`<activity-approval-context-template
|
|
130
|
+
.activityApproval=${this.activityApproval}
|
|
131
|
+
state=${state}
|
|
132
|
+
></activity-approval-context-template>`
|
|
133
|
+
})
|
|
134
|
+
}}
|
|
135
|
+
>description</mwc-icon
|
|
136
|
+
>
|
|
137
|
+
${description}
|
|
138
|
+
</div>
|
|
139
|
+
${startingType == 'issue' && assignee
|
|
140
|
+
? html`
|
|
141
|
+
<div assignee>
|
|
142
|
+
${i18next.t('field.assignee')}
|
|
143
|
+
<span>${assignee?.name} </span>
|
|
144
|
+
</div>
|
|
145
|
+
`
|
|
146
|
+
: html``}
|
|
147
|
+
${approvalLine
|
|
148
|
+
? html`<approval-line-brief
|
|
149
|
+
.model=${approvalLine}
|
|
150
|
+
.current=${this.activityApproval.order}
|
|
151
|
+
></approval-line-brief>`
|
|
152
|
+
: html``}
|
|
153
|
+
|
|
154
|
+
<div state>${i18next.t('label.activity-state-' + state)}</div>
|
|
155
|
+
`
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
updated(changes) {
|
|
159
|
+
if (changes.has('activityApproval')) {
|
|
160
|
+
const { state } = this.activityApproval.activityThread
|
|
161
|
+
|
|
162
|
+
this.setAttribute('state', state)
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import '@material/mwc-button'
|
|
2
2
|
import '@operato/property-editor/ox-properties-dynamic-view.js'
|
|
3
|
+
import '@things-factory/organization/dist-client/component/approval-line-brief.js'
|
|
3
4
|
import '../templates/activity-instance-context-template.js'
|
|
4
5
|
|
|
5
6
|
import { css, html, LitElement } from 'lit'
|
|
@@ -16,6 +17,8 @@ export class ActivityInstanceRibon extends localize(i18next)(LitElement) {
|
|
|
16
17
|
display: flex;
|
|
17
18
|
background-color: var(--worklist-status-color);
|
|
18
19
|
color: var(--theme-white-color);
|
|
20
|
+
align-items: center;
|
|
21
|
+
min-height: 44px;
|
|
19
22
|
--fontsize-small: 12px;
|
|
20
23
|
}
|
|
21
24
|
|
|
@@ -61,11 +64,11 @@ export class ActivityInstanceRibon extends localize(i18next)(LitElement) {
|
|
|
61
64
|
font-size: 24px;
|
|
62
65
|
}
|
|
63
66
|
|
|
64
|
-
[desc]
|
|
65
|
-
[flow] {
|
|
67
|
+
[desc] {
|
|
66
68
|
flex: 2;
|
|
67
69
|
font-size: var(--fontsize-small);
|
|
68
70
|
}
|
|
71
|
+
|
|
69
72
|
[desc] * {
|
|
70
73
|
vertical-align: middle;
|
|
71
74
|
}
|
|
@@ -82,63 +85,15 @@ export class ActivityInstanceRibon extends localize(i18next)(LitElement) {
|
|
|
82
85
|
font-weight: bold;
|
|
83
86
|
}
|
|
84
87
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
display: flex;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
[flow] li {
|
|
93
|
-
width: 85px;
|
|
94
|
-
text-align: center;
|
|
95
|
-
color: rgba(255, 255, 255, 0.7);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
[flow] span:before {
|
|
99
|
-
content: '';
|
|
100
|
-
height: 2px;
|
|
101
|
-
width: 70px;
|
|
102
|
-
display: block;
|
|
103
|
-
position: absolute;
|
|
104
|
-
margin-left: -70px;
|
|
105
|
-
margin-top: 6px;
|
|
106
|
-
background-color: rgba(0, 0, 0, 0.4);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
[flow] span {
|
|
110
|
-
display: block;
|
|
111
|
-
width: 15px;
|
|
112
|
-
height: 15px;
|
|
113
|
-
margin: auto;
|
|
114
|
-
background-color: rgba(0, 0, 0, 0.4);
|
|
115
|
-
border-radius: 50%;
|
|
116
|
-
color: var(--theme-white-color);
|
|
117
|
-
line-height: 1.2;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
[flow] [past] span {
|
|
121
|
-
background-color: rgba(255, 255, 255, 0.9);
|
|
122
|
-
color: var(--primary-text-color);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
[flow] [now] span {
|
|
126
|
-
background-color: #84d600;
|
|
127
|
-
color: var(--theme-white-color);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
[flow] [now] {
|
|
131
|
-
font-weight: bold;
|
|
132
|
-
color: var(--theme-white-color);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
[flow] [past] span:before,
|
|
136
|
-
[flow] [now] span:before {
|
|
137
|
-
background-color: rgba(255, 255, 255, 0.9);
|
|
88
|
+
approval-line-brief {
|
|
89
|
+
background-color: var(--worklist-status-color);
|
|
90
|
+
flex: 2;
|
|
91
|
+
font-size: var(--fontsize-small);
|
|
138
92
|
}
|
|
139
93
|
|
|
140
|
-
[
|
|
141
|
-
|
|
94
|
+
[state] {
|
|
95
|
+
text-align: right;
|
|
96
|
+
font-size: var(--fontsize-small);
|
|
142
97
|
}
|
|
143
98
|
|
|
144
99
|
@media only screen and (max-width: 460px) {
|
|
@@ -160,34 +115,10 @@ export class ActivityInstanceRibon extends localize(i18next)(LitElement) {
|
|
|
160
115
|
]
|
|
161
116
|
|
|
162
117
|
@property({ type: Object }) activityInstance: any = {}
|
|
163
|
-
// @property({ type: Array }) activityThreads: any
|
|
164
|
-
|
|
165
|
-
// @state() picked: boolean = false
|
|
166
118
|
|
|
167
119
|
render() {
|
|
168
|
-
const {
|
|
169
|
-
|
|
170
|
-
name,
|
|
171
|
-
description,
|
|
172
|
-
input,
|
|
173
|
-
state,
|
|
174
|
-
assignee,
|
|
175
|
-
threadsMin = 0,
|
|
176
|
-
threadsMax = 0,
|
|
177
|
-
activity
|
|
178
|
-
} = this.activityInstance || {}
|
|
179
|
-
const { startingType, model, thumbnail } = activity || {}
|
|
180
|
-
|
|
181
|
-
// const inputSpec = (model || [])
|
|
182
|
-
// .filter(item => item.inout === 'in' || item.inout === 'inout')
|
|
183
|
-
// .map(item => {
|
|
184
|
-
// return {
|
|
185
|
-
// ...item,
|
|
186
|
-
// label: item.name
|
|
187
|
-
// }
|
|
188
|
-
// })
|
|
189
|
-
|
|
190
|
-
// const pickable = !this.picked && this.activityThreads?.length < threadsMax
|
|
120
|
+
const { description, state, assignee, approvalLine, activity } = this.activityInstance || {}
|
|
121
|
+
const { startingType } = activity || {}
|
|
191
122
|
|
|
192
123
|
return html`
|
|
193
124
|
<div desc>
|
|
@@ -204,22 +135,17 @@ export class ActivityInstanceRibon extends localize(i18next)(LitElement) {
|
|
|
204
135
|
>
|
|
205
136
|
${description}
|
|
206
137
|
</div>
|
|
207
|
-
${startingType == 'issue'
|
|
138
|
+
${startingType == 'issue' && assignee
|
|
208
139
|
? html`
|
|
209
140
|
<div assignee>
|
|
210
|
-
${i18next.t('
|
|
211
|
-
<span>${assignee?.name}
|
|
141
|
+
${i18next.t('field.assignee')}
|
|
142
|
+
<span>${assignee?.name} </span>
|
|
212
143
|
</div>
|
|
213
144
|
`
|
|
214
145
|
: html``}
|
|
146
|
+
${approvalLine ? html`<approval-line-brief .model=${approvalLine}></approval-line-brief>` : html``}
|
|
215
147
|
|
|
216
|
-
<div
|
|
217
|
-
<ul>
|
|
218
|
-
<li past><span>1</span>myself</li>
|
|
219
|
-
<li now><span>2</span>경리실장</li>
|
|
220
|
-
<li><span>3</span>사장님</li>
|
|
221
|
-
</ul>
|
|
222
|
-
</div>
|
|
148
|
+
<div state>${i18next.t('label.activity-state-' + state)}</div>
|
|
223
149
|
`
|
|
224
150
|
}
|
|
225
151
|
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import '@material/mwc-button'
|
|
2
|
+
import '@operato/property-editor/ox-properties-dynamic-view.js'
|
|
3
|
+
import '@things-factory/organization/dist-client/component/approval-line-brief.js'
|
|
4
|
+
import '../templates/activity-thread-context-template.js'
|
|
5
|
+
|
|
6
|
+
import { css, html, LitElement } from 'lit'
|
|
7
|
+
import { customElement, property, state } from 'lit/decorators.js'
|
|
8
|
+
|
|
9
|
+
import { i18next, localize } from '@operato/i18n'
|
|
10
|
+
import { toggleOverlay } from '@operato/layout'
|
|
11
|
+
|
|
12
|
+
@customElement('activity-thread-ribon')
|
|
13
|
+
export class ActivityThreadRibon extends localize(i18next)(LitElement) {
|
|
14
|
+
static styles = [
|
|
15
|
+
css`
|
|
16
|
+
:host {
|
|
17
|
+
display: flex;
|
|
18
|
+
background-color: var(--worklist-status-color);
|
|
19
|
+
color: var(--theme-white-color);
|
|
20
|
+
align-items: center;
|
|
21
|
+
min-height: 44px;
|
|
22
|
+
--fontsize-small: 12px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
div {
|
|
26
|
+
border-left: var(--border-dark-color);
|
|
27
|
+
padding: var(--padding-narrow) var(--padding-default);
|
|
28
|
+
align-self: center;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:host([state='assigned']) {
|
|
32
|
+
--worklist-status-color: #5f7184;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
:host([state='started']) {
|
|
36
|
+
--worklist-status-color: #56af45;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:host([state='delegated']) {
|
|
40
|
+
--worklist-status-color: #8654b0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
:host([state='submitted']) {
|
|
44
|
+
--worklist-status-color: #428df3;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
:host([state='escalated']) {
|
|
48
|
+
--worklist-status-color: #595de5;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:host([state='rejected']) {
|
|
52
|
+
--worklist-status-color: #f27429;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:host([state='ended']) {
|
|
56
|
+
--worklist-status-color: #02acae;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:host([state='aborted']) {
|
|
60
|
+
--worklist-status-color: #cb3a33;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
mwc-icon {
|
|
64
|
+
font-size: 24px;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
[desc] {
|
|
68
|
+
flex: 2;
|
|
69
|
+
font-size: var(--fontsize-small);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
[desc] * {
|
|
73
|
+
vertical-align: middle;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
[assignee] {
|
|
77
|
+
text-align: center;
|
|
78
|
+
font-size: var(--fontsize-small);
|
|
79
|
+
line-height: 1.3;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
[assignee] span {
|
|
83
|
+
display: block;
|
|
84
|
+
font-size: var(--fontsize-large);
|
|
85
|
+
font-weight: bold;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
approval-line-brief {
|
|
89
|
+
background-color: var(--worklist-status-color);
|
|
90
|
+
flex: 2;
|
|
91
|
+
font-size: var(--fontsize-small);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
[state] {
|
|
95
|
+
text-align: right;
|
|
96
|
+
font-size: var(--fontsize-small);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@media only screen and (max-width: 460px) {
|
|
100
|
+
:host {
|
|
101
|
+
flex-direction: column;
|
|
102
|
+
}
|
|
103
|
+
div {
|
|
104
|
+
border-left: none;
|
|
105
|
+
border-bottom: var(--border-dark-color);
|
|
106
|
+
}
|
|
107
|
+
[assignee] {
|
|
108
|
+
display: none;
|
|
109
|
+
}
|
|
110
|
+
mwc-icon {
|
|
111
|
+
padding: 0;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
`
|
|
115
|
+
]
|
|
116
|
+
|
|
117
|
+
@property({ type: Object }) activityThread: any
|
|
118
|
+
|
|
119
|
+
render() {
|
|
120
|
+
const { state, activityInstance } = this.activityThread
|
|
121
|
+
const { description, assignee, approvalLine, activity } = activityInstance || {}
|
|
122
|
+
const { startingType } = activity || {}
|
|
123
|
+
|
|
124
|
+
return html`
|
|
125
|
+
<div desc>
|
|
126
|
+
<mwc-icon
|
|
127
|
+
@click=${() => {
|
|
128
|
+
toggleOverlay('activity-info-overlay', {
|
|
129
|
+
template: html`<activity-thread-context-template
|
|
130
|
+
.activityThread=${this.activityThread}
|
|
131
|
+
state=${state}
|
|
132
|
+
></activity-thread-context-template>`
|
|
133
|
+
})
|
|
134
|
+
}}
|
|
135
|
+
>description</mwc-icon
|
|
136
|
+
>
|
|
137
|
+
${description}
|
|
138
|
+
</div>
|
|
139
|
+
${startingType == 'issue' && assignee
|
|
140
|
+
? html`
|
|
141
|
+
<div assignee>
|
|
142
|
+
${i18next.t('field.assignee')}
|
|
143
|
+
<span>${assignee?.name} </span>
|
|
144
|
+
</div>
|
|
145
|
+
`
|
|
146
|
+
: html``}
|
|
147
|
+
${approvalLine ? html`<approval-line-brief .model=${approvalLine}></approval-line-brief>` : html``}
|
|
148
|
+
|
|
149
|
+
<div state>${i18next.t('label.activity-state-' + state)}</div>
|
|
150
|
+
`
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
updated(changes) {
|
|
154
|
+
if (changes.has('activityThread')) {
|
|
155
|
+
const { state } = this.activityThread
|
|
156
|
+
|
|
157
|
+
this.setAttribute('state', state)
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -139,6 +139,7 @@ export class ActivityPage extends connect(store)(localize(i18next)(PageView)) {
|
|
|
139
139
|
.map(item => {
|
|
140
140
|
return {
|
|
141
141
|
...item,
|
|
142
|
+
name: item.tag,
|
|
142
143
|
label: item.name,
|
|
143
144
|
property: item.options
|
|
144
145
|
}
|
|
@@ -153,6 +154,7 @@ export class ActivityPage extends connect(store)(localize(i18next)(PageView)) {
|
|
|
153
154
|
.map(item => {
|
|
154
155
|
return {
|
|
155
156
|
...item,
|
|
157
|
+
name: item.tag,
|
|
156
158
|
label: item.name,
|
|
157
159
|
property: item.options
|
|
158
160
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import '@operato/property-editor/ox-properties-dynamic-view.js'
|
|
2
2
|
import '@operato/board/ox-board-viewer.js'
|
|
3
|
+
import '../../components/activity-approval-ribon.js'
|
|
3
4
|
|
|
4
5
|
import gql from 'graphql-tag'
|
|
5
6
|
import { css, html } from 'lit'
|
|
@@ -96,7 +97,6 @@ export class ActivityApprovalPage extends connect(store)(localize(i18next)(PageV
|
|
|
96
97
|
position: relative;
|
|
97
98
|
|
|
98
99
|
width: 100%;
|
|
99
|
-
padding: 5px;
|
|
100
100
|
overflow: auto;
|
|
101
101
|
}
|
|
102
102
|
|
|
@@ -136,6 +136,8 @@ export class ActivityApprovalPage extends connect(store)(localize(i18next)(PageV
|
|
|
136
136
|
@state() activityThread: any
|
|
137
137
|
@state() board: any
|
|
138
138
|
|
|
139
|
+
@query('textarea') commentInput!: HTMLTextAreaElement
|
|
140
|
+
|
|
139
141
|
get context() {
|
|
140
142
|
const judgment = this.activityApproval?.judgment
|
|
141
143
|
|
|
@@ -162,13 +164,14 @@ export class ActivityApprovalPage extends connect(store)(localize(i18next)(PageV
|
|
|
162
164
|
action: this.saveActivityApproval.bind(this),
|
|
163
165
|
...CommonButtonStyles.save
|
|
164
166
|
}
|
|
165
|
-
]
|
|
166
|
-
activityApproval: this.activityApproval
|
|
167
|
+
]
|
|
168
|
+
// activityApproval: this.activityApproval
|
|
167
169
|
}
|
|
168
170
|
}
|
|
169
171
|
|
|
170
172
|
render() {
|
|
171
173
|
return html`
|
|
174
|
+
<activity-approval-ribon .activityApproval=${this.activityApproval}></activity-approval-ribon>
|
|
172
175
|
${this.activityContent()}
|
|
173
176
|
<div comment>
|
|
174
177
|
<textarea
|
|
@@ -212,6 +215,7 @@ export class ActivityApprovalPage extends connect(store)(localize(i18next)(PageV
|
|
|
212
215
|
.map(item => {
|
|
213
216
|
return {
|
|
214
217
|
...item,
|
|
218
|
+
name: item.tag,
|
|
215
219
|
label: item.name,
|
|
216
220
|
property: item.options
|
|
217
221
|
}
|
|
@@ -226,6 +230,7 @@ export class ActivityApprovalPage extends connect(store)(localize(i18next)(PageV
|
|
|
226
230
|
.map(item => {
|
|
227
231
|
return {
|
|
228
232
|
...item,
|
|
233
|
+
name: item.tag,
|
|
229
234
|
label: item.name,
|
|
230
235
|
property: item.options
|
|
231
236
|
}
|
|
@@ -356,6 +361,18 @@ export class ActivityApprovalPage extends connect(store)(localize(i18next)(PageV
|
|
|
356
361
|
async rejectActivityApproval() {
|
|
357
362
|
var { id, comment } = this.activityApproval
|
|
358
363
|
|
|
364
|
+
if (!comment) {
|
|
365
|
+
document.dispatchEvent(
|
|
366
|
+
new CustomEvent('notify', {
|
|
367
|
+
detail: {
|
|
368
|
+
message: i18next.t('text.enter a comment')
|
|
369
|
+
}
|
|
370
|
+
})
|
|
371
|
+
)
|
|
372
|
+
this.commentInput.focus()
|
|
373
|
+
return
|
|
374
|
+
}
|
|
375
|
+
|
|
359
376
|
const response = await client.mutate({
|
|
360
377
|
mutation: gql`
|
|
361
378
|
mutation ($id: String!, $comment: String!) {
|
|
@@ -387,6 +404,18 @@ export class ActivityApprovalPage extends connect(store)(localize(i18next)(PageV
|
|
|
387
404
|
async approveActivityApproval() {
|
|
388
405
|
var { id, comment } = this.activityApproval
|
|
389
406
|
|
|
407
|
+
if (!comment) {
|
|
408
|
+
document.dispatchEvent(
|
|
409
|
+
new CustomEvent('notify', {
|
|
410
|
+
detail: {
|
|
411
|
+
message: i18next.t('text.enter a comment')
|
|
412
|
+
}
|
|
413
|
+
})
|
|
414
|
+
)
|
|
415
|
+
this.commentInput.focus()
|
|
416
|
+
return
|
|
417
|
+
}
|
|
418
|
+
|
|
390
419
|
const response = await client.mutate({
|
|
391
420
|
mutation: gql`
|
|
392
421
|
mutation ($id: String!, $comment: String!) {
|
|
@@ -66,8 +66,8 @@ export class ActivityInstanceStartPage extends connect(store)(localize(i18next)(
|
|
|
66
66
|
action: this.issueActivityInstance.bind(this),
|
|
67
67
|
...CommonButtonStyles.submit
|
|
68
68
|
}
|
|
69
|
-
].filter(Boolean /* truthy only */)
|
|
70
|
-
activityInstance: this.activityInstance
|
|
69
|
+
].filter(Boolean /* truthy only */)
|
|
70
|
+
// activityInstance: this.activityInstance
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -109,6 +109,7 @@ export class ActivityInstanceStartPage extends connect(store)(localize(i18next)(
|
|
|
109
109
|
.map(item => {
|
|
110
110
|
return {
|
|
111
111
|
...item,
|
|
112
|
+
name: item.tag,
|
|
112
113
|
label: item.name,
|
|
113
114
|
property: item.options
|
|
114
115
|
}
|
|
@@ -123,6 +124,7 @@ export class ActivityInstanceStartPage extends connect(store)(localize(i18next)(
|
|
|
123
124
|
.map(item => {
|
|
124
125
|
return {
|
|
125
126
|
...item,
|
|
127
|
+
name: item.tag,
|
|
126
128
|
label: item.name,
|
|
127
129
|
property: item.options
|
|
128
130
|
}
|
|
@@ -52,23 +52,24 @@ export class ActivityInstanceView extends localize(i18next)(LitElement) {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
renderSearchKeys() {
|
|
55
|
-
const {
|
|
55
|
+
const { activity } = this.activityInstance!
|
|
56
|
+
const { searchKeys = [] } = activity! || {}
|
|
56
57
|
|
|
57
|
-
return html`
|
|
58
|
-
<div>key01: ${key01}</div>
|
|
59
|
-
<div>key02: ${key02}</div>
|
|
60
|
-
<div>key03: ${key03}</div>
|
|
61
|
-
<div>key04: ${key04}</div>
|
|
62
|
-
<div>key05: ${key05}</div>
|
|
63
|
-
`
|
|
58
|
+
return searchKeys?.map((item, index) => html` <div>${item.name}: ${this.activityInstance![`key0${index}`]}</div> `)
|
|
64
59
|
}
|
|
65
60
|
|
|
66
61
|
renderInOut() {
|
|
67
62
|
const { input, output } = this.activityInstance!
|
|
68
63
|
|
|
69
64
|
return html`
|
|
70
|
-
<div>
|
|
71
|
-
|
|
65
|
+
<div>
|
|
66
|
+
input:
|
|
67
|
+
<pre>${JSON.stringify(input, null, 2)}</pre>
|
|
68
|
+
</div>
|
|
69
|
+
<div>
|
|
70
|
+
output:
|
|
71
|
+
<pre>${JSON.stringify(output, null, 2)}</pre>
|
|
72
|
+
</div>
|
|
72
73
|
`
|
|
73
74
|
}
|
|
74
75
|
|
|
@@ -99,6 +100,12 @@ export class ActivityInstanceView extends localize(i18next)(LitElement) {
|
|
|
99
100
|
id
|
|
100
101
|
name
|
|
101
102
|
description
|
|
103
|
+
searchKeys {
|
|
104
|
+
name
|
|
105
|
+
description
|
|
106
|
+
inputKey
|
|
107
|
+
tKey
|
|
108
|
+
}
|
|
102
109
|
}
|
|
103
110
|
activityThreads {
|
|
104
111
|
state
|