@things-factory/dataset 6.0.32 → 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 -8
- 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-collect-activity-view.d.ts +19 -0
- package/dist-client/components/data-collect-activity-view.js +101 -0
- package/dist-client/components/data-collect-activity-view.js.map +1 -0
- 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/components/ooc-resolve-activity-view.d.ts +1 -0
- package/dist-client/components/ooc-resolve-activity-view.js +175 -0
- package/dist-client/components/ooc-resolve-activity-view.js.map +1 -0
- package/dist-client/components/ooc-review-activity-view.d.ts +1 -0
- package/dist-client/components/ooc-review-activity-view.js +155 -0
- package/dist-client/components/ooc-review-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 +1 -1
- package/dist-server/activities/activity-data-collect.js.map +1 -1
- package/dist-server/activities/activity-ooc-resolve.js +2 -2
- package/dist-server/activities/activity-ooc-resolve.js.map +1 -1
- package/dist-server/activities/activity-ooc-review.js +2 -2
- package/dist-server/activities/activity-ooc-review.js.map +1 -1
- package/dist-server/controllers/activity-template/activity-data-collect.js +82 -0
- package/dist-server/controllers/activity-template/activity-data-collect.js.map +1 -0
- package/dist-server/controllers/activity-template/activity-ooc-resolve.js +100 -0
- package/dist-server/controllers/activity-template/activity-ooc-resolve.js.map +1 -0
- package/dist-server/controllers/activity-template/activity-ooc-review.js +107 -0
- package/dist-server/controllers/activity-template/activity-ooc-review.js.map +1 -0
- 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 +8 -7
- 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 +4 -4
- package/server/activities/activity-data-collect.ts +1 -1
- package/server/activities/activity-ooc-resolve.ts +2 -2
- package/server/activities/activity-ooc-review.ts +2 -2
- package/server/routes.ts +22 -5
- package/server/service/data-set/data-set-mutation.ts +6 -6
- 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)
|
@@ -637,7 +637,7 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
637
637
|
useCase
|
638
638
|
schedule
|
639
639
|
timezone
|
640
|
-
|
640
|
+
scheduleId
|
641
641
|
dataKeySet {
|
642
642
|
id
|
643
643
|
name
|
@@ -804,7 +804,7 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
804
804
|
mutation: gql`
|
805
805
|
mutation ($dataSetId: String!) {
|
806
806
|
startDataCollectionSchedule(dataSetId: $dataSetId) {
|
807
|
-
|
807
|
+
scheduleId
|
808
808
|
}
|
809
809
|
}
|
810
810
|
`,
|
@@ -813,12 +813,12 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
813
813
|
}
|
814
814
|
})
|
815
815
|
|
816
|
-
const
|
817
|
-
record.
|
816
|
+
const scheduleId = response.data.startDataCollectionSchedule.scheduleId
|
817
|
+
record.scheduleId = scheduleId
|
818
818
|
|
819
819
|
notify({
|
820
820
|
level: 'info',
|
821
|
-
message: `${record.
|
821
|
+
message: `${record.scheduleId ? 'success' : 'fail'} to start data collection schedule : ${record.name}`
|
822
822
|
})
|
823
823
|
|
824
824
|
this.grist.fetch()
|
@@ -829,7 +829,7 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
829
829
|
mutation: gql`
|
830
830
|
mutation ($dataSetId: String!) {
|
831
831
|
stopDataCollectionSchedule(dataSetId: $dataSetId) {
|
832
|
-
|
832
|
+
scheduleId
|
833
833
|
}
|
834
834
|
}
|
835
835
|
`,
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import '@operato/dataset/ox-data-entry-form.js';
|
2
|
+
import { LitElement } from 'lit';
|
3
|
+
import { OxDataEntryForm } from '@operato/dataset/ox-data-entry-form.js';
|
4
|
+
import { DataSet } from '@operato/dataset';
|
5
|
+
declare const DataCollectActivityEdit_base: (new (...args: any[]) => LitElement) & typeof LitElement;
|
6
|
+
export declare class DataCollectActivityEdit extends DataCollectActivityEdit_base {
|
7
|
+
static styles: import("lit").CSSResult[];
|
8
|
+
input?: any;
|
9
|
+
output?: any;
|
10
|
+
dataSet?: DataSet & {
|
11
|
+
id: string;
|
12
|
+
};
|
13
|
+
entryForm: OxDataEntryForm;
|
14
|
+
render(): import("lit-html").TemplateResult<1>;
|
15
|
+
_updateDataItems(): Promise<void>;
|
16
|
+
updated(changes: any): void;
|
17
|
+
fetchDataSet(): Promise<void>;
|
18
|
+
}
|
19
|
+
export {};
|