@things-factory/dataset 6.0.30 → 6.0.33
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/activities/activity-data-collect-edit.ts +100 -0
- package/client/activities/activity-data-collect-view.ts +1 -20
- package/client/activities/activity-ooc-resolve-edit.ts +174 -0
- package/client/activities/activity-ooc-resolve-view.ts +10 -37
- package/client/activities/activity-ooc-review-edit.ts +153 -0
- package/client/activities/activity-ooc-review-view.ts +10 -33
- package/client/bootstrap.ts +3 -0
- package/client/pages/data-set/data-set-list-page.ts +8 -9
- package/dist-client/activities/activity-data-collect-edit.d.ts +19 -0
- package/dist-client/activities/activity-data-collect-edit.js +101 -0
- package/dist-client/activities/activity-data-collect-edit.js.map +1 -0
- package/dist-client/activities/activity-data-collect-view.d.ts +0 -3
- package/dist-client/activities/activity-data-collect-view.js +2 -19
- package/dist-client/activities/activity-data-collect-view.js.map +1 -1
- package/dist-client/activities/activity-ooc-resolve-edit.d.ts +1 -0
- package/dist-client/activities/activity-ooc-resolve-edit.js +175 -0
- package/dist-client/activities/activity-ooc-resolve-edit.js.map +1 -0
- package/dist-client/activities/activity-ooc-resolve-view.js +12 -36
- package/dist-client/activities/activity-ooc-resolve-view.js.map +1 -1
- package/dist-client/activities/activity-ooc-review-edit.d.ts +1 -0
- package/dist-client/activities/activity-ooc-review-edit.js +155 -0
- package/dist-client/activities/activity-ooc-review-edit.js.map +1 -0
- package/dist-client/activities/activity-ooc-review-view.js +10 -29
- package/dist-client/activities/activity-ooc-review-view.js.map +1 -1
- package/dist-client/bootstrap.d.ts +3 -0
- package/dist-client/bootstrap.js +3 -0
- package/dist-client/bootstrap.js.map +1 -1
- package/dist-client/components/data-ooc-activity-view.d.ts +1 -0
- package/dist-client/components/data-ooc-activity-view.js +154 -0
- package/dist-client/components/data-ooc-activity-view.js.map +1 -0
- package/dist-client/pages/data-set/data-set-list-page.js +8 -8
- package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/activities/activity-data-collect.js +4 -2
- package/dist-server/activities/activity-data-collect.js.map +1 -1
- package/dist-server/activities/activity-ooc-resolve.js +4 -2
- package/dist-server/activities/activity-ooc-resolve.js.map +1 -1
- package/dist-server/activities/activity-ooc-review.js +4 -2
- package/dist-server/activities/activity-ooc-review.js.map +1 -1
- package/dist-server/controllers/activity-template/activity-data-collect.js.map +1 -1
- package/dist-server/controllers/activity-template/activity-ooc.js +59 -0
- package/dist-server/controllers/activity-template/activity-ooc.js.map +1 -0
- package/dist-server/routes.js +14 -4
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/data-set/data-set-mutation.js +12 -8
- package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
- package/dist-server/service/data-set/data-set-query.js +1 -1
- package/dist-server/service/data-set/data-set-query.js.map +1 -1
- package/dist-server/service/data-set/data-set.js +2 -2
- package/dist-server/service/data-set/data-set.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -11
- package/server/activities/activity-data-collect.ts +4 -2
- package/server/activities/activity-ooc-resolve.ts +4 -2
- package/server/activities/activity-ooc-review.ts +4 -2
- package/server/routes.ts +22 -5
- package/server/service/data-set/data-set-mutation.ts +12 -8
- package/server/service/data-set/data-set-query.ts +1 -1
- package/server/service/data-set/data-set.ts +2 -2
@@ -0,0 +1,100 @@
|
|
1
|
+
import '@operato/dataset/ox-data-entry-form.js'
|
2
|
+
|
3
|
+
import gql from 'graphql-tag'
|
4
|
+
import { css, html, LitElement } from 'lit'
|
5
|
+
import { customElement, property, query, state } from 'lit/decorators.js'
|
6
|
+
|
7
|
+
import { client } from '@operato/graphql'
|
8
|
+
import { i18next, localize } from '@operato/i18n'
|
9
|
+
import { ScrollbarStyles } from '@operato/styles'
|
10
|
+
import { OxDataEntryForm } from '@operato/dataset/ox-data-entry-form.js'
|
11
|
+
import { DataSet } from '@operato/dataset'
|
12
|
+
|
13
|
+
@customElement('activity-data-collect-edit')
|
14
|
+
export class DataCollectActivityEdit extends localize(i18next)(LitElement) {
|
15
|
+
static styles = [
|
16
|
+
ScrollbarStyles,
|
17
|
+
css`
|
18
|
+
:host {
|
19
|
+
display: flex;
|
20
|
+
flex-direction: column;
|
21
|
+
|
22
|
+
background-color: #fff;
|
23
|
+
}
|
24
|
+
|
25
|
+
ox-data-entry-form {
|
26
|
+
flex: 1;
|
27
|
+
padding: 10px;
|
28
|
+
overflow: auto;
|
29
|
+
}
|
30
|
+
`
|
31
|
+
]
|
32
|
+
|
33
|
+
@property({ type: Object }) input?: any
|
34
|
+
@property({ type: Object }) output?: any
|
35
|
+
|
36
|
+
@state() dataSet?: DataSet & { id: string }
|
37
|
+
|
38
|
+
@query('ox-data-entry-form') entryForm!: OxDataEntryForm
|
39
|
+
|
40
|
+
render() {
|
41
|
+
return html`
|
42
|
+
<ox-data-entry-form
|
43
|
+
.dataSet=${this.dataSet}
|
44
|
+
.value=${this.output}
|
45
|
+
@change=${this._updateDataItems}
|
46
|
+
></ox-data-entry-form>
|
47
|
+
`
|
48
|
+
}
|
49
|
+
|
50
|
+
async _updateDataItems() {
|
51
|
+
this.output = this.entryForm.value
|
52
|
+
|
53
|
+
this.dispatchEvent(
|
54
|
+
new CustomEvent('change', {
|
55
|
+
detail: this.output
|
56
|
+
})
|
57
|
+
)
|
58
|
+
}
|
59
|
+
|
60
|
+
updated(changes) {
|
61
|
+
if (changes.has('input')) {
|
62
|
+
this.fetchDataSet()
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
async fetchDataSet() {
|
67
|
+
const id = this.input.dataSetId
|
68
|
+
|
69
|
+
if (id) {
|
70
|
+
const response = await client.query({
|
71
|
+
query: gql`
|
72
|
+
query ($id: String!) {
|
73
|
+
dataSet(id: $id) {
|
74
|
+
id
|
75
|
+
name
|
76
|
+
description
|
77
|
+
useCase
|
78
|
+
dataItems {
|
79
|
+
name
|
80
|
+
description
|
81
|
+
active
|
82
|
+
tag
|
83
|
+
type
|
84
|
+
unit
|
85
|
+
options
|
86
|
+
quota
|
87
|
+
spec
|
88
|
+
}
|
89
|
+
}
|
90
|
+
}
|
91
|
+
`,
|
92
|
+
variables: {
|
93
|
+
id
|
94
|
+
}
|
95
|
+
})
|
96
|
+
|
97
|
+
this.dataSet = response.data.dataSet
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}
|
@@ -7,7 +7,6 @@ import { customElement, property, query, state } from 'lit/decorators.js'
|
|
7
7
|
import { client } from '@operato/graphql'
|
8
8
|
import { i18next, localize } from '@operato/i18n'
|
9
9
|
import { ScrollbarStyles } from '@operato/styles'
|
10
|
-
import { OxDataEntryForm } from '@operato/dataset/ox-data-entry-form.js'
|
11
10
|
import { DataSet } from '@operato/dataset'
|
12
11
|
|
13
12
|
@customElement('activity-data-collect-view')
|
@@ -35,26 +34,8 @@ export class DataCollectActivityView extends localize(i18next)(LitElement) {
|
|
35
34
|
|
36
35
|
@state() dataSet?: DataSet & { id: string }
|
37
36
|
|
38
|
-
@query('ox-data-entry-form') entryForm!: OxDataEntryForm
|
39
|
-
|
40
37
|
render() {
|
41
|
-
return html`
|
42
|
-
<ox-data-entry-form
|
43
|
-
.dataSet=${this.dataSet}
|
44
|
-
.value=${this.output}
|
45
|
-
@change=${this._updateDataItems}
|
46
|
-
></ox-data-entry-form>
|
47
|
-
`
|
48
|
-
}
|
49
|
-
|
50
|
-
async _updateDataItems() {
|
51
|
-
this.output = this.entryForm.value
|
52
|
-
|
53
|
-
this.dispatchEvent(
|
54
|
-
new CustomEvent('change', {
|
55
|
-
detail: this.output
|
56
|
-
})
|
57
|
-
)
|
38
|
+
return html` <ox-data-entry-form .dataSet=${this.dataSet} .value=${this.output}></ox-data-entry-form>`
|
58
39
|
}
|
59
40
|
|
60
41
|
updated(changes) {
|
@@ -0,0 +1,174 @@
|
|
1
|
+
import '@operato/dataset/ox-data-sample-view.js'
|
2
|
+
|
3
|
+
import gql from 'graphql-tag'
|
4
|
+
import { css, html, LitElement } from 'lit'
|
5
|
+
import { customElement, property, query, state } from 'lit/decorators.js'
|
6
|
+
|
7
|
+
import { client } from '@operato/graphql'
|
8
|
+
import { i18next, localize } from '@operato/i18n'
|
9
|
+
import { ScrollbarStyles } from '@operato/styles'
|
10
|
+
|
11
|
+
@customElement('activity-ooc-resolve-edit')
|
12
|
+
class OocResolveActivityEdit extends localize(i18next)(LitElement) {
|
13
|
+
static styles = [
|
14
|
+
ScrollbarStyles,
|
15
|
+
css`
|
16
|
+
:host {
|
17
|
+
display: flex;
|
18
|
+
flex-direction: column;
|
19
|
+
|
20
|
+
background-color: #fff;
|
21
|
+
}
|
22
|
+
|
23
|
+
div[content] {
|
24
|
+
flex: 1;
|
25
|
+
flex-direction: column;
|
26
|
+
|
27
|
+
display: flex;
|
28
|
+
overflow: auto;
|
29
|
+
}
|
30
|
+
|
31
|
+
ox-data-sample-view {
|
32
|
+
flex: 1;
|
33
|
+
padding: var(--padding-wide);
|
34
|
+
overflow: auto;
|
35
|
+
}
|
36
|
+
|
37
|
+
div[instruction] {
|
38
|
+
display: flex;
|
39
|
+
flex-direction: column;
|
40
|
+
|
41
|
+
padding: var(--padding-wide);
|
42
|
+
}
|
43
|
+
|
44
|
+
div[instruction] div {
|
45
|
+
display: flex;
|
46
|
+
}
|
47
|
+
|
48
|
+
div[instruction] div[content] {
|
49
|
+
display: flex;
|
50
|
+
min-height: 50px;
|
51
|
+
}
|
52
|
+
|
53
|
+
label[action] {
|
54
|
+
display: flex;
|
55
|
+
flex-direction: column;
|
56
|
+
|
57
|
+
padding: var(--padding-wide);
|
58
|
+
}
|
59
|
+
|
60
|
+
label[action] div {
|
61
|
+
display: flex;
|
62
|
+
}
|
63
|
+
|
64
|
+
mwc-icon {
|
65
|
+
color: var(--status-danger-color);
|
66
|
+
}
|
67
|
+
|
68
|
+
textarea {
|
69
|
+
border: var(--input-field-border);
|
70
|
+
border-radius: var(--input-border-radius);
|
71
|
+
padding: var(--input-field-padding);
|
72
|
+
font: var(--input-field-font);
|
73
|
+
}
|
74
|
+
|
75
|
+
.button-container {
|
76
|
+
display: flex;
|
77
|
+
margin-left: auto;
|
78
|
+
padding: var(--padding-default);
|
79
|
+
}
|
80
|
+
`
|
81
|
+
]
|
82
|
+
|
83
|
+
@property({ type: Object }) input?: any
|
84
|
+
@property({ type: Object }) output?: any
|
85
|
+
|
86
|
+
@state() dataOoc?: any
|
87
|
+
|
88
|
+
@query('textarea') actionTextArea!: HTMLTextAreaElement
|
89
|
+
|
90
|
+
render() {
|
91
|
+
const action = this.output?.action
|
92
|
+
|
93
|
+
return html`
|
94
|
+
<div content>
|
95
|
+
<ox-data-sample-view .dataSample=${this.dataOoc}></ox-data-sample-view>
|
96
|
+
</div>
|
97
|
+
|
98
|
+
<div instruction>
|
99
|
+
<div><mwc-icon>build_circle</mwc-icon> <span>corrective instruction</span></div>
|
100
|
+
<div content>${this.input?.instruction}</div>
|
101
|
+
</div>
|
102
|
+
|
103
|
+
<label action>
|
104
|
+
<div><mwc-icon>build_circle</mwc-icon> <span>corrective action</span></div>
|
105
|
+
<textarea
|
106
|
+
placeholder="시정 및 예방을 위한 조치 이행 사항을 입력해주세요."
|
107
|
+
.value=${action || ''}
|
108
|
+
@change=${this.onChangeAction}
|
109
|
+
></textarea>
|
110
|
+
</label>
|
111
|
+
`
|
112
|
+
}
|
113
|
+
|
114
|
+
onChangeAction(e: Event) {
|
115
|
+
this.output ||= {}
|
116
|
+
this.output.action = (e.target as HTMLTextAreaElement).value
|
117
|
+
|
118
|
+
this.dispatchEvent(
|
119
|
+
new CustomEvent('change', {
|
120
|
+
detail: this.output
|
121
|
+
})
|
122
|
+
)
|
123
|
+
}
|
124
|
+
|
125
|
+
updated(changes) {
|
126
|
+
if (changes.has('input')) {
|
127
|
+
this.fetchDataOoc()
|
128
|
+
}
|
129
|
+
}
|
130
|
+
|
131
|
+
async fetchDataOoc() {
|
132
|
+
const id = this.input.dataOocId
|
133
|
+
|
134
|
+
if (id) {
|
135
|
+
const response = await client.query({
|
136
|
+
query: gql`
|
137
|
+
query ($id: String!) {
|
138
|
+
dataOoc(id: $id) {
|
139
|
+
id
|
140
|
+
name
|
141
|
+
description
|
142
|
+
ooc
|
143
|
+
oos
|
144
|
+
state
|
145
|
+
type
|
146
|
+
useCase
|
147
|
+
data
|
148
|
+
judgment
|
149
|
+
dataItems {
|
150
|
+
name
|
151
|
+
description
|
152
|
+
active
|
153
|
+
tag
|
154
|
+
type
|
155
|
+
unit
|
156
|
+
options
|
157
|
+
quota
|
158
|
+
spec
|
159
|
+
}
|
160
|
+
workDate
|
161
|
+
workShift
|
162
|
+
collectedAt
|
163
|
+
}
|
164
|
+
}
|
165
|
+
`,
|
166
|
+
variables: {
|
167
|
+
id
|
168
|
+
}
|
169
|
+
})
|
170
|
+
|
171
|
+
this.dataOoc = response.data.dataOoc
|
172
|
+
}
|
173
|
+
}
|
174
|
+
}
|
@@ -50,32 +50,24 @@ class OocResolveActivityView extends localize(i18next)(LitElement) {
|
|
50
50
|
min-height: 50px;
|
51
51
|
}
|
52
52
|
|
53
|
-
|
53
|
+
div[action] {
|
54
54
|
display: flex;
|
55
55
|
flex-direction: column;
|
56
56
|
|
57
57
|
padding: var(--padding-wide);
|
58
58
|
}
|
59
59
|
|
60
|
-
|
60
|
+
div[action] div {
|
61
61
|
display: flex;
|
62
62
|
}
|
63
63
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
textarea {
|
69
|
-
border: var(--input-field-border);
|
70
|
-
border-radius: var(--input-border-radius);
|
71
|
-
padding: var(--input-field-padding);
|
72
|
-
font: var(--input-field-font);
|
64
|
+
div[action] div[content] {
|
65
|
+
display: flex;
|
66
|
+
min-height: 50px;
|
73
67
|
}
|
74
68
|
|
75
|
-
|
76
|
-
|
77
|
-
margin-left: auto;
|
78
|
-
padding: var(--padding-default);
|
69
|
+
mwc-icon {
|
70
|
+
color: var(--status-danger-color);
|
79
71
|
}
|
80
72
|
`
|
81
73
|
]
|
@@ -85,11 +77,7 @@ class OocResolveActivityView extends localize(i18next)(LitElement) {
|
|
85
77
|
|
86
78
|
@state() dataOoc?: any
|
87
79
|
|
88
|
-
@query('textarea') actionTextArea!: HTMLTextAreaElement
|
89
|
-
|
90
80
|
render() {
|
91
|
-
const action = this.output?.action
|
92
|
-
|
93
81
|
return html`
|
94
82
|
<div content>
|
95
83
|
<ox-data-sample-view .dataSample=${this.dataOoc}></ox-data-sample-view>
|
@@ -100,28 +88,13 @@ class OocResolveActivityView extends localize(i18next)(LitElement) {
|
|
100
88
|
<div content>${this.input?.instruction}</div>
|
101
89
|
</div>
|
102
90
|
|
103
|
-
<
|
91
|
+
<div action>
|
104
92
|
<div><mwc-icon>build_circle</mwc-icon> <span>corrective action</span></div>
|
105
|
-
<
|
106
|
-
|
107
|
-
.value=${action || ''}
|
108
|
-
@change=${this.onChangeAction}
|
109
|
-
></textarea>
|
110
|
-
</label>
|
93
|
+
<div content>${this.output?.action}</div>
|
94
|
+
</div>
|
111
95
|
`
|
112
96
|
}
|
113
97
|
|
114
|
-
onChangeAction(e: Event) {
|
115
|
-
this.output ||= {}
|
116
|
-
this.output.action = (e.target as HTMLTextAreaElement).value
|
117
|
-
|
118
|
-
this.dispatchEvent(
|
119
|
-
new CustomEvent('change', {
|
120
|
-
detail: this.output
|
121
|
-
})
|
122
|
-
)
|
123
|
-
}
|
124
|
-
|
125
98
|
updated(changes) {
|
126
99
|
if (changes.has('input')) {
|
127
100
|
this.fetchDataOoc()
|
@@ -0,0 +1,153 @@
|
|
1
|
+
import '@operato/dataset/ox-data-sample-view.js'
|
2
|
+
|
3
|
+
import gql from 'graphql-tag'
|
4
|
+
import { css, html, LitElement } from 'lit'
|
5
|
+
import { customElement, property, query, state } from 'lit/decorators.js'
|
6
|
+
|
7
|
+
import { client } from '@operato/graphql'
|
8
|
+
import { i18next, localize } from '@operato/i18n'
|
9
|
+
import { ScrollbarStyles } from '@operato/styles'
|
10
|
+
|
11
|
+
@customElement('activity-ooc-review-edit')
|
12
|
+
class OocReviewActivityEdit extends localize(i18next)(LitElement) {
|
13
|
+
static styles = [
|
14
|
+
ScrollbarStyles,
|
15
|
+
css`
|
16
|
+
:host {
|
17
|
+
display: flex;
|
18
|
+
flex-direction: column;
|
19
|
+
|
20
|
+
background-color: #fff;
|
21
|
+
}
|
22
|
+
|
23
|
+
div[content] {
|
24
|
+
flex: 1;
|
25
|
+
flex-direction: column;
|
26
|
+
|
27
|
+
display: flex;
|
28
|
+
overflow: auto;
|
29
|
+
}
|
30
|
+
|
31
|
+
ox-data-sample-view {
|
32
|
+
flex: 1;
|
33
|
+
padding: var(--padding-wide);
|
34
|
+
overflow: auto;
|
35
|
+
}
|
36
|
+
|
37
|
+
label[instruction] {
|
38
|
+
display: flex;
|
39
|
+
flex-direction: column;
|
40
|
+
|
41
|
+
padding: var(--padding-wide);
|
42
|
+
}
|
43
|
+
|
44
|
+
label[instruction] div {
|
45
|
+
display: flex;
|
46
|
+
}
|
47
|
+
|
48
|
+
mwc-icon {
|
49
|
+
color: var(--status-danger-color);
|
50
|
+
}
|
51
|
+
|
52
|
+
textarea {
|
53
|
+
border: var(--input-field-border);
|
54
|
+
border-radius: var(--input-border-radius);
|
55
|
+
padding: var(--input-field-padding);
|
56
|
+
font: var(--input-field-font);
|
57
|
+
}
|
58
|
+
|
59
|
+
.button-container {
|
60
|
+
display: flex;
|
61
|
+
margin-left: auto;
|
62
|
+
padding: var(--padding-default);
|
63
|
+
}
|
64
|
+
`
|
65
|
+
]
|
66
|
+
|
67
|
+
@property({ type: Object }) input?: any
|
68
|
+
@property({ type: Object }) output?: any
|
69
|
+
|
70
|
+
@state() dataOoc?: any
|
71
|
+
|
72
|
+
@query('textarea') instructionTextArea!: HTMLTextAreaElement
|
73
|
+
|
74
|
+
render() {
|
75
|
+
const instruction = this.output?.instruction
|
76
|
+
|
77
|
+
return html`
|
78
|
+
<div content>
|
79
|
+
<ox-data-sample-view .dataSample=${this.dataOoc}></ox-data-sample-view>
|
80
|
+
</div>
|
81
|
+
|
82
|
+
<label instruction>
|
83
|
+
<div><mwc-icon>build_circle</mwc-icon> <span>corrective instruction</span></div>
|
84
|
+
<textarea
|
85
|
+
placeholder="시정 및 예방을 위한 조치 지시 사항을 입력해주세요."
|
86
|
+
.value=${instruction || ''}
|
87
|
+
@change=${this.onChangeInstruction}
|
88
|
+
></textarea>
|
89
|
+
</label>
|
90
|
+
`
|
91
|
+
}
|
92
|
+
|
93
|
+
onChangeInstruction(e: Event) {
|
94
|
+
this.output ||= {}
|
95
|
+
this.output.instruction = (e.target as HTMLTextAreaElement).value
|
96
|
+
|
97
|
+
this.dispatchEvent(
|
98
|
+
new CustomEvent('change', {
|
99
|
+
detail: this.output
|
100
|
+
})
|
101
|
+
)
|
102
|
+
}
|
103
|
+
|
104
|
+
updated(changes) {
|
105
|
+
if (changes.has('input')) {
|
106
|
+
this.fetchDataOoc()
|
107
|
+
}
|
108
|
+
}
|
109
|
+
|
110
|
+
async fetchDataOoc() {
|
111
|
+
const id = this.input?.dataOocId
|
112
|
+
|
113
|
+
if (id) {
|
114
|
+
const response = await client.query({
|
115
|
+
query: gql`
|
116
|
+
query ($id: String!) {
|
117
|
+
dataOoc(id: $id) {
|
118
|
+
id
|
119
|
+
name
|
120
|
+
description
|
121
|
+
ooc
|
122
|
+
oos
|
123
|
+
state
|
124
|
+
type
|
125
|
+
useCase
|
126
|
+
data
|
127
|
+
judgment
|
128
|
+
dataItems {
|
129
|
+
name
|
130
|
+
description
|
131
|
+
active
|
132
|
+
tag
|
133
|
+
type
|
134
|
+
unit
|
135
|
+
options
|
136
|
+
quota
|
137
|
+
spec
|
138
|
+
}
|
139
|
+
workDate
|
140
|
+
workShift
|
141
|
+
collectedAt
|
142
|
+
}
|
143
|
+
}
|
144
|
+
`,
|
145
|
+
variables: {
|
146
|
+
id
|
147
|
+
}
|
148
|
+
})
|
149
|
+
|
150
|
+
this.dataOoc = response.data.dataOoc
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
@@ -34,32 +34,24 @@ class OocReviewActivityView extends localize(i18next)(LitElement) {
|
|
34
34
|
overflow: auto;
|
35
35
|
}
|
36
36
|
|
37
|
-
|
37
|
+
div[instruction] {
|
38
38
|
display: flex;
|
39
39
|
flex-direction: column;
|
40
40
|
|
41
41
|
padding: var(--padding-wide);
|
42
42
|
}
|
43
43
|
|
44
|
-
|
44
|
+
div[instruction] div {
|
45
45
|
display: flex;
|
46
46
|
}
|
47
47
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
textarea {
|
53
|
-
border: var(--input-field-border);
|
54
|
-
border-radius: var(--input-border-radius);
|
55
|
-
padding: var(--input-field-padding);
|
56
|
-
font: var(--input-field-font);
|
48
|
+
div[instruction] div[content] {
|
49
|
+
display: flex;
|
50
|
+
min-height: 50px;
|
57
51
|
}
|
58
52
|
|
59
|
-
|
60
|
-
|
61
|
-
margin-left: auto;
|
62
|
-
padding: var(--padding-default);
|
53
|
+
mwc-icon {
|
54
|
+
color: var(--status-danger-color);
|
63
55
|
}
|
64
56
|
`
|
65
57
|
]
|
@@ -79,28 +71,13 @@ class OocReviewActivityView extends localize(i18next)(LitElement) {
|
|
79
71
|
<ox-data-sample-view .dataSample=${this.dataOoc}></ox-data-sample-view>
|
80
72
|
</div>
|
81
73
|
|
82
|
-
<
|
74
|
+
<div instruction>
|
83
75
|
<div><mwc-icon>build_circle</mwc-icon> <span>corrective instruction</span></div>
|
84
|
-
<
|
85
|
-
|
86
|
-
.value=${instruction || ''}
|
87
|
-
@change=${this.onChangeInstruction}
|
88
|
-
></textarea>
|
89
|
-
</label>
|
76
|
+
<div content>${instruction || ''}</div>
|
77
|
+
</div>
|
90
78
|
`
|
91
79
|
}
|
92
80
|
|
93
|
-
onChangeInstruction(e: Event) {
|
94
|
-
this.output ||= {}
|
95
|
-
this.output.instruction = (e.target as HTMLTextAreaElement).value
|
96
|
-
|
97
|
-
this.dispatchEvent(
|
98
|
-
new CustomEvent('change', {
|
99
|
-
detail: this.output
|
100
|
-
})
|
101
|
-
)
|
102
|
-
}
|
103
|
-
|
104
81
|
updated(changes) {
|
105
82
|
if (changes.has('input')) {
|
106
83
|
this.fetchDataOoc()
|
package/client/bootstrap.ts
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
import './activities/activity-data-collect-edit' /* refered by the activity template (activity-data-collect) on server */
|
2
|
+
import './activities/activity-ooc-review-edit' /* refered by the activity template (activity-ooc-review) on server */
|
3
|
+
import './activities/activity-ooc-resolve-edit' /* refered by the activity template (activity-ooc-resolve) on server */
|
1
4
|
import './activities/activity-data-collect-view' /* refered by the activity template (activity-data-collect) on server */
|
2
5
|
import './activities/activity-ooc-review-view' /* refered by the activity template (activity-ooc-review) on server */
|
3
6
|
import './activities/activity-ooc-resolve-view' /* refered by the activity template (activity-ooc-resolve) on server */
|
@@ -247,14 +247,14 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
247
247
|
{
|
248
248
|
type: 'gutter',
|
249
249
|
gutterName: 'button',
|
250
|
-
icon: record => (!record || !record.name ? '' : record.
|
250
|
+
icon: record => (!record || !record.name ? '' : record.scheduleId ? 'pause' : 'play_arrow'),
|
251
251
|
handlers: {
|
252
252
|
click: (columns, data, column, record, rowIndex) => {
|
253
253
|
if (!record || !record.name) {
|
254
254
|
/* TODO record가 새로 추가된 것이면 리턴하도록 한다. */
|
255
255
|
return
|
256
256
|
}
|
257
|
-
if (record.
|
257
|
+
if (record.scheduleId) {
|
258
258
|
this.stopDataCollectionSchedule(record)
|
259
259
|
} else {
|
260
260
|
this.startDataCollectionSchedule(record)
|
@@ -451,7 +451,6 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
451
451
|
key: 'timezone'
|
452
452
|
}
|
453
453
|
},
|
454
|
-
|
455
454
|
{
|
456
455
|
type: 'resource-object',
|
457
456
|
name: 'supervisoryRole',
|
@@ -638,7 +637,7 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
638
637
|
useCase
|
639
638
|
schedule
|
640
639
|
timezone
|
641
|
-
|
640
|
+
scheduleId
|
642
641
|
dataKeySet {
|
643
642
|
id
|
644
643
|
name
|
@@ -805,7 +804,7 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
805
804
|
mutation: gql`
|
806
805
|
mutation ($dataSetId: String!) {
|
807
806
|
startDataCollectionSchedule(dataSetId: $dataSetId) {
|
808
|
-
|
807
|
+
scheduleId
|
809
808
|
}
|
810
809
|
}
|
811
810
|
`,
|
@@ -814,12 +813,12 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
814
813
|
}
|
815
814
|
})
|
816
815
|
|
817
|
-
const
|
818
|
-
record.
|
816
|
+
const scheduleId = response.data.startDataCollectionSchedule.scheduleId
|
817
|
+
record.scheduleId = scheduleId
|
819
818
|
|
820
819
|
notify({
|
821
820
|
level: 'info',
|
822
|
-
message: `${record.
|
821
|
+
message: `${record.scheduleId ? 'success' : 'fail'} to start data collection schedule : ${record.name}`
|
823
822
|
})
|
824
823
|
|
825
824
|
this.grist.fetch()
|
@@ -830,7 +829,7 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
830
829
|
mutation: gql`
|
831
830
|
mutation ($dataSetId: String!) {
|
832
831
|
stopDataCollectionSchedule(dataSetId: $dataSetId) {
|
833
|
-
|
832
|
+
scheduleId
|
834
833
|
}
|
835
834
|
}
|
836
835
|
`,
|