@things-factory/dataset 8.0.13 → 8.0.20
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 +71 -4
- package/client/activities/activity-data-review-edit.ts +28 -3
- package/client/activities/activity-data-review-view.ts +28 -3
- package/client/activities/activity-ooc-resolve-edit.ts +7 -0
- package/client/activities/activity-ooc-resolve-view.ts +7 -0
- package/client/activities/activity-ooc-review-edit.ts +33 -2
- package/client/activities/activity-ooc-review-view.ts +7 -0
- package/client/components/data-entry-form.ts +51 -4
- package/client/pages/data-entry/checklist-entry-page.ts +211 -0
- package/client/pages/data-entry/data-entry-list-page.ts +2 -1
- package/client/pages/data-ooc/data-ooc-page.ts +3 -0
- package/client/pages/data-ooc/data-ooc-view.ts +3 -0
- package/client/pages/data-sample/data-sample-view.ts +31 -1
- package/client/pages/data-set/data-item-list.ts +9 -0
- package/client/pages/data-set/data-set-list-page.ts +52 -11
- package/client/route.ts +4 -0
- package/dist-client/activities/activity-data-collect-edit.d.ts +8 -1
- package/dist-client/activities/activity-data-collect-edit.js +72 -3
- package/dist-client/activities/activity-data-collect-edit.js.map +1 -1
- package/dist-client/activities/activity-data-review-edit.d.ts +2 -0
- package/dist-client/activities/activity-data-review-edit.js +28 -3
- package/dist-client/activities/activity-data-review-edit.js.map +1 -1
- package/dist-client/activities/activity-data-review-view.d.ts +2 -0
- package/dist-client/activities/activity-data-review-view.js +28 -3
- package/dist-client/activities/activity-data-review-view.js.map +1 -1
- package/dist-client/activities/activity-ooc-resolve-edit.js +7 -0
- package/dist-client/activities/activity-ooc-resolve-edit.js.map +1 -1
- package/dist-client/activities/activity-ooc-resolve-view.js +7 -0
- 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 +33 -1
- package/dist-client/activities/activity-ooc-review-edit.js.map +1 -1
- package/dist-client/activities/activity-ooc-review-view.js +7 -0
- package/dist-client/activities/activity-ooc-review-view.js.map +1 -1
- package/dist-client/components/data-entry-form.d.ts +9 -2
- package/dist-client/components/data-entry-form.js +52 -2
- package/dist-client/components/data-entry-form.js.map +1 -1
- package/dist-client/pages/data-entry/checklist-entry-page.d.ts +21 -0
- package/dist-client/pages/data-entry/checklist-entry-page.js +209 -0
- package/dist-client/pages/data-entry/checklist-entry-page.js.map +1 -0
- package/dist-client/pages/data-entry/data-entry-list-page.js +2 -1
- package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
- package/dist-client/pages/data-ooc/data-ooc-page.js +3 -0
- package/dist-client/pages/data-ooc/data-ooc-page.js.map +1 -1
- package/dist-client/pages/data-ooc/data-ooc-view.js +3 -0
- package/dist-client/pages/data-ooc/data-ooc-view.js.map +1 -1
- package/dist-client/pages/data-sample/data-sample-view.d.ts +2 -0
- package/dist-client/pages/data-sample/data-sample-view.js +31 -1
- package/dist-client/pages/data-sample/data-sample-view.js.map +1 -1
- package/dist-client/pages/data-set/data-item-list.js +9 -0
- package/dist-client/pages/data-set/data-item-list.js.map +1 -1
- package/dist-client/pages/data-set/data-set-list-page.d.ts +1 -0
- package/dist-client/pages/data-set/data-set-list-page.js +44 -8
- package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
- package/dist-client/route.js +3 -0
- package/dist-client/route.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/service/data-set/data-item-type.d.ts +2 -0
- package/dist-server/service/data-set/data-item-type.js +14 -0
- package/dist-server/service/data-set/data-item-type.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -13
- package/server/service/data-set/data-item-type.ts +14 -0
- package/things-factory.config.js +4 -0
@@ -68,6 +68,8 @@ export class DataOocViewPage extends localize(i18next)(PageView) {
|
|
68
68
|
dataSet {
|
69
69
|
id
|
70
70
|
name
|
71
|
+
monitorType
|
72
|
+
monitorView
|
71
73
|
}
|
72
74
|
key01
|
73
75
|
key02
|
@@ -82,6 +84,7 @@ export class DataOocViewPage extends localize(i18next)(PageView) {
|
|
82
84
|
hidden
|
83
85
|
tag
|
84
86
|
group
|
87
|
+
subgroup
|
85
88
|
type
|
86
89
|
unit
|
87
90
|
options
|
@@ -120,6 +120,8 @@ export class DataOocView extends localize(i18next)(LitElement) {
|
|
120
120
|
dataSet {
|
121
121
|
id
|
122
122
|
name
|
123
|
+
monitorType
|
124
|
+
monitorView
|
123
125
|
}
|
124
126
|
key01
|
125
127
|
key02
|
@@ -134,6 +136,7 @@ export class DataOocView extends localize(i18next)(LitElement) {
|
|
134
136
|
hidden
|
135
137
|
tag
|
136
138
|
group
|
139
|
+
subgroup
|
137
140
|
type
|
138
141
|
unit
|
139
142
|
options
|
@@ -2,6 +2,7 @@ import '@material/web/icon/icon.js'
|
|
2
2
|
import '@material/web/fab/fab.js'
|
3
3
|
import '@operato/dataset/ox-data-sample-view.js'
|
4
4
|
import '@operato/dataset/ox-data-ooc-brief-view.js'
|
5
|
+
import '@operato/dataset/ox-checklist-sample-view.js'
|
5
6
|
import '@things-factory/worklist/dist-client/components/activity-thread-timeline.js'
|
6
7
|
|
7
8
|
import gql from 'graphql-tag'
|
@@ -77,7 +78,7 @@ export class DataSampleView extends localize(i18next)(LitElement) {
|
|
77
78
|
|
78
79
|
return html`
|
79
80
|
${!dataSample?.dataOoc
|
80
|
-
? html
|
81
|
+
? html`${this.showDataSampleView()}`
|
81
82
|
: html` <ox-data-ooc-brief-view .dataOoc=${dataSample!.dataOoc}></ox-data-ooc-brief-view>`}
|
82
83
|
${reviewActivityThread
|
83
84
|
? html`
|
@@ -118,6 +119,29 @@ export class DataSampleView extends localize(i18next)(LitElement) {
|
|
118
119
|
}
|
119
120
|
}
|
120
121
|
|
122
|
+
private showDataSampleView() {
|
123
|
+
const dataSet = this.dataSample?.dataSet
|
124
|
+
const monitorType = dataSet?.monitorType
|
125
|
+
const monitorView = dataSet?.monitorView
|
126
|
+
|
127
|
+
switch (monitorType) {
|
128
|
+
case 'generated':
|
129
|
+
if (!monitorView || monitorView === 'DEFAULT') {
|
130
|
+
return html`<ox-data-sample-view .dataSample=${this.dataSample}></ox-data-sample-view>`
|
131
|
+
} else if (monitorView === 'CHECKLIST') {
|
132
|
+
return html`<ox-checklist-sample-view .dataSample=${this.dataSample}></ox-checklist-sample-view>`
|
133
|
+
}
|
134
|
+
break
|
135
|
+
case 'board':
|
136
|
+
break
|
137
|
+
case 'page':
|
138
|
+
break
|
139
|
+
default:
|
140
|
+
return html`<ox-data-sample-view .dataSample=${this.dataSample}></ox-data-sample-view>`
|
141
|
+
break
|
142
|
+
}
|
143
|
+
}
|
144
|
+
|
121
145
|
async fetchDataSample() {
|
122
146
|
const id = this.dataSampleId
|
123
147
|
|
@@ -147,6 +171,8 @@ export class DataSampleView extends localize(i18next)(LitElement) {
|
|
147
171
|
id
|
148
172
|
name
|
149
173
|
description
|
174
|
+
monitorType
|
175
|
+
monitorView
|
150
176
|
}
|
151
177
|
dataItems {
|
152
178
|
name
|
@@ -155,6 +181,7 @@ export class DataSampleView extends localize(i18next)(LitElement) {
|
|
155
181
|
hidden
|
156
182
|
tag
|
157
183
|
group
|
184
|
+
subgroup
|
158
185
|
type
|
159
186
|
unit
|
160
187
|
options
|
@@ -175,6 +202,8 @@ export class DataSampleView extends localize(i18next)(LitElement) {
|
|
175
202
|
dataSet {
|
176
203
|
id
|
177
204
|
name
|
205
|
+
monitorType
|
206
|
+
monitorView
|
178
207
|
}
|
179
208
|
key01
|
180
209
|
key02
|
@@ -189,6 +218,7 @@ export class DataSampleView extends localize(i18next)(LitElement) {
|
|
189
218
|
hidden
|
190
219
|
tag
|
191
220
|
group
|
221
|
+
subgroup
|
192
222
|
type
|
193
223
|
unit
|
194
224
|
options
|
@@ -143,6 +143,15 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
143
143
|
{
|
144
144
|
type: 'string',
|
145
145
|
name: 'group',
|
146
|
+
header: i18next.t('field.group'),
|
147
|
+
record: {
|
148
|
+
editable: true
|
149
|
+
},
|
150
|
+
width: 180
|
151
|
+
},
|
152
|
+
{
|
153
|
+
type: 'string',
|
154
|
+
name: 'subgroup',
|
146
155
|
header: i18next.t('field.subgroup'),
|
147
156
|
record: {
|
148
157
|
editable: true
|
@@ -17,11 +17,12 @@ import { OxDataUseCase } from '@operato/dataset'
|
|
17
17
|
import { client } from '@operato/graphql'
|
18
18
|
import { i18next, localize } from '@operato/i18n'
|
19
19
|
import { notify, openPopup } from '@operato/layout'
|
20
|
-
import { PageView, store } from '@operato/shell'
|
20
|
+
import { PageView, store, navigate } from '@operato/shell'
|
21
21
|
import { CommonGristStyles, CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
|
22
22
|
import { isMobileDevice, sleep } from '@operato/utils'
|
23
23
|
|
24
24
|
import { p13n } from '@operato/p13n'
|
25
|
+
import { provider } from '@things-factory/board-ui/dist-client'
|
25
26
|
|
26
27
|
const MIN = 60
|
27
28
|
const HOUR = 60 * MIN
|
@@ -89,6 +90,54 @@ const USECASE_OPTIONS = () => {
|
|
89
90
|
})
|
90
91
|
}
|
91
92
|
|
93
|
+
export const showEntryView = async (columns, data, column, record, rowIndex) => {
|
94
|
+
const { name, entryType, entryView } = record
|
95
|
+
const title = `${name} - ${i18next.t('title.data-entry-form')}`
|
96
|
+
|
97
|
+
switch (entryType) {
|
98
|
+
case 'generated':
|
99
|
+
openPopup(html` <data-entry-form .dataSet=${record} style="background-color: white;"></data-entry-form> `, {
|
100
|
+
closable: true,
|
101
|
+
backdrop: true,
|
102
|
+
size: 'large',
|
103
|
+
title
|
104
|
+
})
|
105
|
+
break
|
106
|
+
|
107
|
+
case 'board':
|
108
|
+
const board = {
|
109
|
+
id: entryView
|
110
|
+
}
|
111
|
+
openPopup(
|
112
|
+
html`
|
113
|
+
<ox-board-viewer
|
114
|
+
style="background-color: white;"
|
115
|
+
.board=${board}
|
116
|
+
.provider=${provider}
|
117
|
+
hide-fullscreen
|
118
|
+
hide-navigation
|
119
|
+
></ox-board-viewer>
|
120
|
+
`,
|
121
|
+
{
|
122
|
+
closable: true,
|
123
|
+
backdrop: true,
|
124
|
+
size: 'large',
|
125
|
+
title
|
126
|
+
}
|
127
|
+
)
|
128
|
+
|
129
|
+
// navigate(`board-viewer/${entryView}?interactive=true&title=${title}`)
|
130
|
+
break
|
131
|
+
case 'page':
|
132
|
+
navigate(`${entryView}/${record.id}`)
|
133
|
+
break
|
134
|
+
|
135
|
+
case 'external':
|
136
|
+
window.open(entryView, '_blank')
|
137
|
+
break
|
138
|
+
}
|
139
|
+
}
|
140
|
+
|
92
141
|
@customElement('data-set-list-page')
|
93
142
|
export class DataSetListPage extends connect(store)(p13n(localize(i18next)(PageView))) {
|
94
143
|
static styles = [
|
@@ -255,16 +304,7 @@ export class DataSetListPage extends connect(store)(p13n(localize(i18next)(PageV
|
|
255
304
|
title: record =>
|
256
305
|
!record ? i18next.t('button.enter-data') : !record.id ? '' : i18next.t('button.enter-data'),
|
257
306
|
handlers: {
|
258
|
-
click:
|
259
|
-
openPopup(
|
260
|
-
html` <data-entry-form .dataSet=${record} style="background-color: white;"></data-entry-form> `,
|
261
|
-
{
|
262
|
-
backdrop: true,
|
263
|
-
size: 'large',
|
264
|
-
title: i18next.t('title.data-entry-form')
|
265
|
-
}
|
266
|
-
)
|
267
|
-
}
|
307
|
+
click: showEntryView
|
268
308
|
}
|
269
309
|
},
|
270
310
|
{
|
@@ -843,6 +883,7 @@ export class DataSetListPage extends connect(store)(p13n(localize(i18next)(PageV
|
|
843
883
|
hidden
|
844
884
|
tag
|
845
885
|
group
|
886
|
+
subgroup
|
846
887
|
type
|
847
888
|
unit
|
848
889
|
options
|
package/client/route.ts
CHANGED
@@ -56,6 +56,10 @@ export default function route(page) {
|
|
56
56
|
import('./pages/data-entry/data-entry-list-page.js')
|
57
57
|
return page
|
58
58
|
|
59
|
+
case 'checklist-entry-page':
|
60
|
+
import('./pages/data-entry/checklist-entry-page')
|
61
|
+
return page
|
62
|
+
|
59
63
|
case 'data-report-list':
|
60
64
|
import('./pages/data-report/data-report-list-page.js')
|
61
65
|
return page
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import '@operato/dataset/ox-data-entry-form.js';
|
2
|
+
import '@operato/dataset/ox-checklist-entry-form.js';
|
2
3
|
import { LitElement } from 'lit';
|
3
4
|
import { OxDataEntryForm } from '@operato/dataset/ox-data-entry-form.js';
|
5
|
+
import { OxChecklistEntryForm } from '@operato/dataset/ox-checklist-entry-form.js';
|
4
6
|
import { DataSet } from '@operato/dataset';
|
5
7
|
declare const DataCollectActivityEdit_base: (new (...args: any[]) => LitElement) & typeof LitElement;
|
6
8
|
export declare class DataCollectActivityEdit extends DataCollectActivityEdit_base {
|
@@ -9,9 +11,14 @@ export declare class DataCollectActivityEdit extends DataCollectActivityEdit_bas
|
|
9
11
|
output?: any;
|
10
12
|
dataSet?: DataSet & {
|
11
13
|
id: string;
|
14
|
+
entryType?: string;
|
15
|
+
entryView?: string;
|
12
16
|
};
|
13
|
-
|
17
|
+
dataEntryForm?: OxDataEntryForm;
|
18
|
+
checklistEntryForm?: OxChecklistEntryForm;
|
19
|
+
get entryForm(): OxDataEntryForm | OxChecklistEntryForm | undefined;
|
14
20
|
render(): import("lit-html").TemplateResult<1>;
|
21
|
+
private showEntryView;
|
15
22
|
_updateDataItems(e: CustomEvent): Promise<void>;
|
16
23
|
updated(changes: any): void;
|
17
24
|
fetchDataSet(): Promise<void>;
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
2
2
|
import '@operato/dataset/ox-data-entry-form.js';
|
3
|
+
import '@operato/dataset/ox-checklist-entry-form.js';
|
3
4
|
import gql from 'graphql-tag';
|
4
5
|
import { css, html, LitElement } from 'lit';
|
5
6
|
import { customElement, property, query, state } from 'lit/decorators.js';
|
@@ -7,18 +8,79 @@ import { client } from '@operato/graphql';
|
|
7
8
|
import { i18next, localize } from '@operato/i18n';
|
8
9
|
import { ScrollbarStyles } from '@operato/styles';
|
9
10
|
import { OxDataEntryForm } from '@operato/dataset/ox-data-entry-form.js';
|
11
|
+
import { OxChecklistEntryForm } from '@operato/dataset/ox-checklist-entry-form.js';
|
10
12
|
let DataCollectActivityEdit = class DataCollectActivityEdit extends localize(i18next)(LitElement) {
|
13
|
+
get entryForm() {
|
14
|
+
var _a, _b;
|
15
|
+
const entryType = (_a = this.dataSet) === null || _a === void 0 ? void 0 : _a.entryType;
|
16
|
+
const entryView = (_b = this.dataSet) === null || _b === void 0 ? void 0 : _b.entryView;
|
17
|
+
switch (entryType) {
|
18
|
+
case 'generated':
|
19
|
+
if (!entryView || entryView === 'DEFAULT') {
|
20
|
+
return this.dataEntryForm;
|
21
|
+
}
|
22
|
+
else if (entryView === 'CHECKLIST') {
|
23
|
+
return this.checklistEntryForm;
|
24
|
+
}
|
25
|
+
break;
|
26
|
+
case 'board':
|
27
|
+
break;
|
28
|
+
case 'page':
|
29
|
+
break;
|
30
|
+
default:
|
31
|
+
return this.dataEntryForm;
|
32
|
+
break;
|
33
|
+
}
|
34
|
+
}
|
11
35
|
render() {
|
12
36
|
return html `
|
13
|
-
<
|
37
|
+
<div class="container">
|
38
|
+
<!-- <ox-data-entry-form
|
14
39
|
.dataSet=${this.dataSet}
|
15
40
|
.value=${this.output}
|
16
41
|
@change=${this._updateDataItems}
|
17
|
-
></ox-data-entry-form>
|
42
|
+
></ox-data-entry-form> -->
|
43
|
+
${this.showEntryView()}
|
44
|
+
</div>
|
18
45
|
`;
|
19
46
|
}
|
47
|
+
showEntryView() {
|
48
|
+
var _a, _b;
|
49
|
+
const entryType = (_a = this.dataSet) === null || _a === void 0 ? void 0 : _a.entryType;
|
50
|
+
const entryView = (_b = this.dataSet) === null || _b === void 0 ? void 0 : _b.entryView;
|
51
|
+
switch (entryType) {
|
52
|
+
case 'generated':
|
53
|
+
if (!entryView || entryView === 'DEFAULT') {
|
54
|
+
return html `<ox-data-entry-form
|
55
|
+
.dataSet=${this.dataSet}
|
56
|
+
.value=${this.output}
|
57
|
+
@change=${this._updateDataItems}
|
58
|
+
></ox-data-entry-form>`;
|
59
|
+
}
|
60
|
+
else if (entryView === 'CHECKLIST') {
|
61
|
+
return html `<ox-checklist-entry-form
|
62
|
+
.dataSet=${this.dataSet}
|
63
|
+
.value=${this.output}
|
64
|
+
@change=${this._updateDataItems}
|
65
|
+
></ox-checklist-entry-form>`;
|
66
|
+
}
|
67
|
+
break;
|
68
|
+
case 'board':
|
69
|
+
break;
|
70
|
+
case 'page':
|
71
|
+
break;
|
72
|
+
default:
|
73
|
+
return html `<ox-data-entry-form
|
74
|
+
.dataSet=${this.dataSet}
|
75
|
+
.value=${this.output}
|
76
|
+
@change=${this._updateDataItems}
|
77
|
+
></ox-data-entry-form>`;
|
78
|
+
break;
|
79
|
+
}
|
80
|
+
}
|
20
81
|
async _updateDataItems(e) {
|
21
82
|
e.stopPropagation();
|
83
|
+
//@ts-ignore TODO replace with following line and confirm
|
22
84
|
this.output = this.entryForm.value;
|
23
85
|
this.dispatchEvent(new CustomEvent('change', {
|
24
86
|
detail: this.output
|
@@ -40,6 +102,8 @@ let DataCollectActivityEdit = class DataCollectActivityEdit extends localize(i18
|
|
40
102
|
name
|
41
103
|
description
|
42
104
|
useCase
|
105
|
+
entryType
|
106
|
+
entryView
|
43
107
|
dataItems {
|
44
108
|
name
|
45
109
|
description
|
@@ -47,6 +111,7 @@ let DataCollectActivityEdit = class DataCollectActivityEdit extends localize(i18
|
|
47
111
|
hidden
|
48
112
|
tag
|
49
113
|
group
|
114
|
+
subgroup
|
50
115
|
type
|
51
116
|
unit
|
52
117
|
options
|
@@ -97,7 +162,11 @@ __decorate([
|
|
97
162
|
__decorate([
|
98
163
|
query('ox-data-entry-form'),
|
99
164
|
__metadata("design:type", OxDataEntryForm)
|
100
|
-
], DataCollectActivityEdit.prototype, "
|
165
|
+
], DataCollectActivityEdit.prototype, "dataEntryForm", void 0);
|
166
|
+
__decorate([
|
167
|
+
query('ox-checklist-entry-form'),
|
168
|
+
__metadata("design:type", OxChecklistEntryForm)
|
169
|
+
], DataCollectActivityEdit.prototype, "checklistEntryForm", void 0);
|
101
170
|
DataCollectActivityEdit = __decorate([
|
102
171
|
customElement('activity-data-collect-edit')
|
103
172
|
], DataCollectActivityEdit);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"activity-data-collect-edit.js","sourceRoot":"","sources":["../../client/activities/activity-data-collect-edit.ts"],"names":[],"mappings":";AAAA,OAAO,wCAAwC,CAAA;
|
1
|
+
{"version":3,"file":"activity-data-collect-edit.js","sourceRoot":"","sources":["../../client/activities/activity-data-collect-edit.ts"],"names":[],"mappings":";AAAA,OAAO,wCAAwC,CAAA;AAC/C,OAAO,6CAA6C,CAAA;AAEpD,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAK3E,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IA2BxE,IAAI,SAAS;;QACX,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,SAAS,CAAA;QACzC,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,SAAS,CAAA;QAEzC,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,WAAW;gBACd,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC1C,OAAO,IAAI,CAAC,aAAa,CAAA;gBAC3B,CAAC;qBAAM,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;oBACrC,OAAO,IAAI,CAAC,kBAAkB,CAAA;gBAChC,CAAC;gBACD,MAAK;YACP,KAAK,OAAO;gBACV,MAAK;YACP,KAAK,MAAM;gBACT,MAAK;YACP;gBACE,OAAO,IAAI,CAAC,aAAa,CAAA;gBACzB,MAAK;QACT,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;mBAGI,IAAI,CAAC,OAAO;iBACd,IAAI,CAAC,MAAM;kBACV,IAAI,CAAC,gBAAgB;;UAE7B,IAAI,CAAC,aAAa,EAAE;;KAEzB,CAAA;IACH,CAAC;IAEO,aAAa;;QACnB,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,SAAS,CAAA;QACzC,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,SAAS,CAAA;QAEzC,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,WAAW;gBACd,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC1C,OAAO,IAAI,CAAA;uBACE,IAAI,CAAC,OAAO;qBACd,IAAI,CAAC,MAAM;sBACV,IAAI,CAAC,gBAAgB;iCACV,CAAA;gBACzB,CAAC;qBAAM,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;oBACrC,OAAO,IAAI,CAAA;uBACE,IAAI,CAAC,OAAO;qBACd,IAAI,CAAC,MAAM;sBACV,IAAI,CAAC,gBAAgB;sCACL,CAAA;gBAC9B,CAAC;gBACD,MAAK;YACP,KAAK,OAAO;gBACV,MAAK;YACP,KAAK,MAAM;gBACT,MAAK;YACP;gBACE,OAAO,IAAI,CAAA;qBACE,IAAI,CAAC,OAAO;mBACd,IAAI,CAAC,MAAM;oBACV,IAAI,CAAC,gBAAgB;+BACV,CAAA;gBACvB,MAAK;QACT,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,CAAc;QACnC,CAAC,CAAC,eAAe,EAAE,CAAA;QAEnB,yDAAyD;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAElC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,QAAQ,EAAE;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CACH,CAAA;IACH,CAAC;IAED,OAAO,CAAC,OAAO;QACb,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAA;QAE/B,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;gBAClC,KAAK,EAAE,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;SA0BT;gBACD,SAAS,EAAE;oBACT,EAAE;iBACH;aACF,CAAC,CAAA;YAEF,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAA;QACtC,CAAC;IACH,CAAC;;AAzJM,8BAAM,GAAG;IACd,eAAe;IACf,GAAG,CAAA;;;;;;;;;;;;;KAaF;CACF,AAhBY,CAgBZ;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;sDAAY;AACX;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;uDAAa;AAE/B;IAAR,KAAK,EAAE;;wDAA2E;AAEtD;IAA5B,KAAK,CAAC,oBAAoB,CAAC;8BAAiB,eAAe;8DAAA;AAC1B;IAAjC,KAAK,CAAC,yBAAyB,CAAC;8BAAsB,oBAAoB;mEAAA;AAzBhE,uBAAuB;IADnC,aAAa,CAAC,4BAA4B,CAAC;GAC/B,uBAAuB,CA2JnC","sourcesContent":["import '@operato/dataset/ox-data-entry-form.js'\nimport '@operato/dataset/ox-checklist-entry-form.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { OxDataEntryForm } from '@operato/dataset/ox-data-entry-form.js'\nimport { OxChecklistEntryForm } from '@operato/dataset/ox-checklist-entry-form.js'\n\nimport { DataSet } from '@operato/dataset'\n\n@customElement('activity-data-collect-edit')\nexport class DataCollectActivityEdit extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: var(--md-sys-color-surface);\n }\n\n ox-data-entry-form {\n flex: 1;\n padding: 10px;\n overflow: auto;\n }\n `\n ]\n\n @property({ type: Object }) input?: any\n @property({ type: Object }) output?: any\n\n @state() dataSet?: DataSet & { id: string; entryType?: string; entryView?: string }\n\n @query('ox-data-entry-form') dataEntryForm?: OxDataEntryForm\n @query('ox-checklist-entry-form') checklistEntryForm?: OxChecklistEntryForm\n\n get entryForm() {\n const entryType = this.dataSet?.entryType\n const entryView = this.dataSet?.entryView\n\n switch (entryType) {\n case 'generated':\n if (!entryView || entryView === 'DEFAULT') {\n return this.dataEntryForm\n } else if (entryView === 'CHECKLIST') {\n return this.checklistEntryForm\n }\n break\n case 'board':\n break\n case 'page':\n break\n default:\n return this.dataEntryForm\n break\n }\n }\n\n render() {\n return html`\n <div class=\"container\">\n <!-- <ox-data-entry-form\n .dataSet=${this.dataSet}\n .value=${this.output}\n @change=${this._updateDataItems}\n ></ox-data-entry-form> -->\n ${this.showEntryView()}\n </div>\n `\n }\n\n private showEntryView() {\n const entryType = this.dataSet?.entryType\n const entryView = this.dataSet?.entryView\n\n switch (entryType) {\n case 'generated':\n if (!entryView || entryView === 'DEFAULT') {\n return html`<ox-data-entry-form\n .dataSet=${this.dataSet}\n .value=${this.output}\n @change=${this._updateDataItems}\n ></ox-data-entry-form>`\n } else if (entryView === 'CHECKLIST') {\n return html`<ox-checklist-entry-form\n .dataSet=${this.dataSet}\n .value=${this.output}\n @change=${this._updateDataItems}\n ></ox-checklist-entry-form>`\n }\n break\n case 'board':\n break\n case 'page':\n break\n default:\n return html`<ox-data-entry-form\n .dataSet=${this.dataSet}\n .value=${this.output}\n @change=${this._updateDataItems}\n ></ox-data-entry-form>`\n break\n }\n }\n\n async _updateDataItems(e: CustomEvent) {\n e.stopPropagation()\n\n //@ts-ignore TODO replace with following line and confirm\n this.output = this.entryForm.value\n\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: this.output\n })\n )\n }\n\n updated(changes) {\n if (changes.has('input')) {\n this.fetchDataSet()\n }\n }\n\n async fetchDataSet() {\n const id = this.input.dataSetId\n\n if (id) {\n const response = await client.query({\n query: gql`\n query ($id: String!) {\n dataSet(id: $id) {\n id\n name\n description\n useCase\n entryType\n entryView\n dataItems {\n name\n description\n active\n hidden\n tag\n group\n subgroup\n type\n unit\n options\n quota\n spec\n stat\n }\n }\n }\n `,\n variables: {\n id\n }\n })\n\n this.dataSet = response.data.dataSet\n }\n }\n}\n"]}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import '@material/web/icon/icon.js';
|
2
2
|
import '@material/web/radio/radio.js';
|
3
3
|
import '@operato/dataset/ox-data-entry-form.js';
|
4
|
+
import '@operato/dataset/ox-checklist-sample-view.js';
|
4
5
|
import { LitElement } from 'lit';
|
5
6
|
declare const DataReviewActivityEdit_base: (new (...args: any[]) => LitElement) & typeof LitElement;
|
6
7
|
export declare class DataReviewActivityEdit extends DataReviewActivityEdit_base {
|
@@ -11,6 +12,7 @@ export declare class DataReviewActivityEdit extends DataReviewActivityEdit_base
|
|
11
12
|
dataSample?: any;
|
12
13
|
form: HTMLFormElement;
|
13
14
|
render(): import("lit-html").TemplateResult<1>;
|
15
|
+
private showDataSampleView;
|
14
16
|
onChangeInstruction(e: Event): void;
|
15
17
|
updated(changes: any): void;
|
16
18
|
fetchDataSample(): Promise<void>;
|
@@ -2,6 +2,7 @@ import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import '@material/web/icon/icon.js';
|
3
3
|
import '@material/web/radio/radio.js';
|
4
4
|
import '@operato/dataset/ox-data-entry-form.js';
|
5
|
+
import '@operato/dataset/ox-checklist-sample-view.js';
|
5
6
|
import gql from 'graphql-tag';
|
6
7
|
import { css, html, LitElement } from 'lit';
|
7
8
|
import { customElement, property, query, state } from 'lit/decorators.js';
|
@@ -14,9 +15,7 @@ let DataReviewActivityEdit = class DataReviewActivityEdit extends localize(i18ne
|
|
14
15
|
const { state } = this.activityThread || {};
|
15
16
|
const editable = state == 'unassigned' || state == 'assigned' || state == 'started' || state == 'submitted';
|
16
17
|
return html `
|
17
|
-
<div content>
|
18
|
-
<ox-data-sample-view .dataSample=${this.dataSample}></ox-data-sample-view>
|
19
|
-
</div>
|
18
|
+
<div content>${this.showDataSampleView()}</div>
|
20
19
|
|
21
20
|
<form @change=${this.onChangeInstruction}>
|
22
21
|
${editable
|
@@ -88,6 +87,29 @@ let DataReviewActivityEdit = class DataReviewActivityEdit extends localize(i18ne
|
|
88
87
|
</form>
|
89
88
|
`;
|
90
89
|
}
|
90
|
+
showDataSampleView() {
|
91
|
+
var _a;
|
92
|
+
const dataSet = (_a = this.dataSample) === null || _a === void 0 ? void 0 : _a.dataSet;
|
93
|
+
const monitorType = dataSet === null || dataSet === void 0 ? void 0 : dataSet.monitorType;
|
94
|
+
const monitorView = dataSet === null || dataSet === void 0 ? void 0 : dataSet.monitorView;
|
95
|
+
switch (monitorType) {
|
96
|
+
case 'generated':
|
97
|
+
if (!monitorView || monitorView === 'DEFAULT') {
|
98
|
+
return html `<ox-data-sample-view .dataSample=${this.dataSample}></ox-data-sample-view>`;
|
99
|
+
}
|
100
|
+
else if (monitorView === 'CHECKLIST') {
|
101
|
+
return html `<ox-checklist-sample-view .dataSample=${this.dataSample}></ox-checklist-sample-view>`;
|
102
|
+
}
|
103
|
+
break;
|
104
|
+
case 'board':
|
105
|
+
break;
|
106
|
+
case 'page':
|
107
|
+
break;
|
108
|
+
default:
|
109
|
+
return html `<ox-data-sample-view .dataSample=${this.dataSample}></ox-data-sample-view>`;
|
110
|
+
break;
|
111
|
+
}
|
112
|
+
}
|
91
113
|
onChangeInstruction(e) {
|
92
114
|
var output = {};
|
93
115
|
const formData = new FormData(this.form);
|
@@ -131,6 +153,8 @@ let DataReviewActivityEdit = class DataReviewActivityEdit extends localize(i18ne
|
|
131
153
|
id
|
132
154
|
name
|
133
155
|
description
|
156
|
+
monitorType
|
157
|
+
monitorView
|
134
158
|
}
|
135
159
|
dataItems {
|
136
160
|
name
|
@@ -139,6 +163,7 @@ let DataReviewActivityEdit = class DataReviewActivityEdit extends localize(i18ne
|
|
139
163
|
hidden
|
140
164
|
tag
|
141
165
|
group
|
166
|
+
subgroup
|
142
167
|
type
|
143
168
|
unit
|
144
169
|
options
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"activity-data-review-edit.js","sourceRoot":"","sources":["../../client/activities/activity-data-review-edit.ts"],"names":[],"mappings":";AAAA,OAAO,4BAA4B,CAAA;AACnC,OAAO,8BAA8B,CAAA;AACrC,OAAO,wCAAwC,CAAA;AAE/C,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAGlC,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAgGvE,MAAM;QACJ,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAA;QACnD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,CAAA;QAC3C,MAAM,QAAQ,GAAG,KAAK,IAAI,YAAY,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,WAAW,CAAA;QAE3G,OAAO,IAAI,CAAA;;2CAE4B,IAAI,CAAC,UAAU;;;sBAGpC,IAAI,CAAC,mBAAmB;UACpC,QAAQ;YACR,CAAC,CAAC,IAAI,CAAA;;iEAEiD,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;;;;;;iCAM3D,QAAQ,IAAI,QAAQ;mCAClB,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;;sBAE/C,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;;;;;;iCAMvB,QAAQ,IAAI,UAAU;mCACpB,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;;uBAEhD,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;;;;;;iEAMM,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC;;;gCAG1E,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC;2BACjE,WAAW,IAAI,EAAE;;;;aAI/B;YACH,CAAC,CAAC,IAAI,CAAA;;iEAEiD,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;;;;;iCAK3D,QAAQ,IAAI,QAAQ;mCAClB,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;;;sBAG/C,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;;;;;iCAKvB,QAAQ,IAAI,UAAU;mCACpB,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;;;uBAGhD,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;;;;;;iEAMM,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC;mCACvE,WAAW;;aAEjC;;KAER,CAAA;IACH,CAAC;IAED,mBAAmB,CAAC,CAAQ;QAC1B,IAAI,MAAM,GAAG,EAAE,CAAA;QAEf,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACrB,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,QAAQ,EAAE;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CACH,CAAA;IACH,CAAC;IAED,OAAO,CAAC,OAAO;QACb,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE,CAAA;QACxB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAA;QAErD,IAAI,UAAU,EAAE,CAAC;YACf,gEAAgE;YAChE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC9B,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;gBAClC,KAAK,EAAE,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA6CT;gBACD,SAAS,EAAE;oBACT,EAAE,EAAE,YAAY;iBACjB;aACF,CAAC,CAAA;YAEF,IAAI,CAAC,UAAU,qBACV,QAAQ,CAAC,IAAI,CAAC,UAAU,CAC5B,CAAA;QACH,CAAC;IACH,CAAC;;AAtQM,6BAAM,GAAG;IACd,eAAe;IACf,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkFF;CACF,AArFY,CAqFZ;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;qDAAY;AACX;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;sDAAa;AACZ;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;8DAAqB;AAEvC;IAAR,KAAK,EAAE;;0DAAiB;AAEV;IAAd,KAAK,CAAC,MAAM,CAAC;8BAAQ,eAAe;oDAAA;AA9F1B,sBAAsB;IADlC,aAAa,CAAC,2BAA2B,CAAC;GAC9B,sBAAsB,CAwQlC","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/radio/radio.js'\nimport '@operato/dataset/ox-data-entry-form.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { client } from '@operato/graphql'\n\n@customElement('activity-data-review-edit')\nexport class DataReviewActivityEdit extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: var(--md-sys-color-surface);\n }\n\n div[content] {\n flex: 1;\n flex-direction: column;\n\n display: flex;\n overflow: auto;\n }\n\n ox-data-sample-view {\n flex: 1;\n padding: var(--spacing-large);\n overflow: auto;\n }\n\n div[role='radiogroup'] {\n display: flex;\n flex-direction: row;\n gap: var(--spacing-medium);\n\n label {\n display: flex;\n flex-direction: row;\n\n gap: var(--spacing-small);\n align-items: center;\n }\n }\n\n label {\n display: flex;\n flex-direction: column;\n\n padding: var(--spacing-large);\n\n h2 {\n display: flex;\n\n color: var(--title-text-color);\n text-transform: capitalize;\n margin: var(--title-margin);\n align-items: center;\n }\n\n div {\n padding: var(--spacing-large);\n font: var(--input-field-font);\n border: var(--md-sys-color-outline) solid 1px;\n border-radius: var(--spacing-small);\n background-color: var(--md-sys-color-surface-variant);\n }\n\n div[instruction] {\n min-height: 200px;\n }\n\n md-icon {\n color: var(--status-danger-color);\n }\n\n textarea {\n margin: var(--spacing-medium);\n padding: var(--spacing-medium);\n margin: 0;\n font: var(--input-field-font);\n color: var(--md-sys-color-on-surface);\n border: var(--md-sys-color-outline) solid 1px;\n border-radius: var(--spacing-small);\n background-color: var(--md-sys-color-surface-variant);\n\n resize: none;\n outline: none;\n min-height: 200px;\n }\n }\n `\n ]\n\n @property({ type: Object }) input?: any\n @property({ type: Object }) output?: any\n @property({ type: Object }) activityThread?: any\n\n @state() dataSample?: any\n\n @query('form') form!: HTMLFormElement\n\n render() {\n const { instruction, judgment } = this.output || {}\n const { state } = this.activityThread || {}\n const editable = state == 'unassigned' || state == 'assigned' || state == 'started' || state == 'submitted'\n\n return html`\n <div content>\n <ox-data-sample-view .dataSample=${this.dataSample}></ox-data-sample-view>\n </div>\n\n <form @change=${this.onChangeInstruction}>\n ${editable\n ? html`\n <label>\n <h2><md-icon>build_circle</md-icon> <span>${i18next.t('label.judgment')}</span></h2>\n <div role=\"radiogroup\" aria-label=\"An example group of radio buttons\">\n <label>\n <md-radio\n name=\"judgment\"\n value=\"normal\"\n ?checked=${judgment == 'normal'}\n aria-label=${i18next.t('label.judgment-normal')}\n ></md-radio>\n ${i18next.t('label.judgment-normal')}\n </label>\n <label>\n <md-radio\n name=\"judgment\"\n value=\"abnormal\"\n ?checked=${judgment == 'abnormal'}\n aria-label=${i18next.t('label.judgment-abnormal')}\n ></md-radio\n >${i18next.t('label.judgment-abnormal')}\n </label>\n </div>\n </label>\n\n <label>\n <h2><md-icon>build_circle</md-icon> <span>${i18next.t('label.corrective instruction')}</span></h2>\n <textarea\n name=\"instruction\"\n placeholder=${String(i18next.t('text.corrective instruction placeholder'))}\n .value=${instruction || ''}\n instruction\n ></textarea>\n </label>\n `\n : html`\n <label>\n <h2><md-icon>build_circle</md-icon> <span>${i18next.t('label.judgment')}</span></h2>\n <div role=\"radiogroup\" aria-label=\"An example group of radio buttons\">\n <label>\n <md-radio\n value=\"normal\"\n ?checked=${judgment == 'normal'}\n aria-label=${i18next.t('label.judgment-normal')}\n disabled\n ></md-radio>\n ${i18next.t('label.judgment-normal')}\n </label>\n <label>\n <md-radio\n value=\"abnormal\"\n ?checked=${judgment == 'abnormal'}\n aria-label=${i18next.t('label.judgment-abnormal')}\n disabled\n ></md-radio\n >${i18next.t('label.judgment-abnormal')}\n </label>\n </div>\n </label>\n\n <label>\n <h2><md-icon>build_circle</md-icon> <span>${i18next.t('label.corrective instruction')}</span></h2>\n <div instruction>${instruction}</div>\n </label>\n `}\n </form>\n `\n }\n\n onChangeInstruction(e: Event) {\n var output = {}\n\n const formData = new FormData(this.form)\n formData.forEach((value, key) => {\n output[key] = value\n })\n\n this.output = output\n\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: this.output\n })\n )\n }\n\n updated(changes) {\n if (changes.has('input')) {\n this.fetchDataSample()\n }\n }\n\n async fetchDataSample() {\n const { dataSampleId, dataSample } = this.input || {}\n\n if (dataSample) {\n /* only for backwards compatibility - should be deleted later */\n this.dataSample = dataSample\n } else if (dataSampleId) {\n const response = await client.query({\n query: gql`\n query ($id: String!) {\n dataSample(id: $id) {\n id\n name\n description\n useCase\n key01\n key02\n key03\n key04\n key05\n data\n ooc\n oos\n dataSet {\n id\n name\n description\n }\n dataItems {\n name\n description\n active\n hidden\n tag\n group\n type\n unit\n options\n quota\n spec\n stat\n }\n judgment\n workDate\n workShift\n updater {\n id\n name\n }\n updatedAt\n collectedAt\n }\n }\n `,\n variables: {\n id: dataSampleId\n }\n })\n\n this.dataSample = {\n ...response.data.dataSample\n }\n }\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"activity-data-review-edit.js","sourceRoot":"","sources":["../../client/activities/activity-data-review-edit.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/radio/radio.js'\nimport '@operato/dataset/ox-data-entry-form.js'\nimport '@operato/dataset/ox-checklist-sample-view.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { client } from '@operato/graphql'\n\n@customElement('activity-data-review-edit')\nexport class DataReviewActivityEdit extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: var(--md-sys-color-surface);\n }\n\n div[content] {\n flex: 1;\n flex-direction: column;\n\n display: flex;\n overflow: auto;\n }\n\n ox-data-sample-view {\n flex: 1;\n padding: var(--spacing-large);\n overflow: auto;\n }\n\n div[role='radiogroup'] {\n display: flex;\n flex-direction: row;\n gap: var(--spacing-medium);\n\n label {\n display: flex;\n flex-direction: row;\n\n gap: var(--spacing-small);\n align-items: center;\n }\n }\n\n label {\n display: flex;\n flex-direction: column;\n\n padding: var(--spacing-large);\n\n h2 {\n display: flex;\n\n color: var(--title-text-color);\n text-transform: capitalize;\n margin: var(--title-margin);\n align-items: center;\n }\n\n div {\n padding: var(--spacing-large);\n font: var(--input-field-font);\n border: var(--md-sys-color-outline) solid 1px;\n border-radius: var(--spacing-small);\n background-color: var(--md-sys-color-surface-variant);\n }\n\n div[instruction] {\n min-height: 200px;\n }\n\n md-icon {\n color: var(--status-danger-color);\n }\n\n textarea {\n margin: var(--spacing-medium);\n padding: var(--spacing-medium);\n margin: 0;\n font: var(--input-field-font);\n color: var(--md-sys-color-on-surface);\n border: var(--md-sys-color-outline) solid 1px;\n border-radius: var(--spacing-small);\n background-color: var(--md-sys-color-surface-variant);\n\n resize: none;\n outline: none;\n min-height: 200px;\n }\n }\n `\n ]\n\n @property({ type: Object }) input?: any\n @property({ type: Object }) output?: any\n @property({ type: Object }) activityThread?: any\n\n @state() dataSample?: any\n\n @query('form') form!: HTMLFormElement\n\n render() {\n const { instruction, judgment } = this.output || {}\n const { state } = this.activityThread || {}\n const editable = state == 'unassigned' || state == 'assigned' || state == 'started' || state == 'submitted'\n\n return html`\n <div content>${this.showDataSampleView()}</div>\n\n <form @change=${this.onChangeInstruction}>\n ${editable\n ? html`\n <label>\n <h2><md-icon>build_circle</md-icon> <span>${i18next.t('label.judgment')}</span></h2>\n <div role=\"radiogroup\" aria-label=\"An example group of radio buttons\">\n <label>\n <md-radio\n name=\"judgment\"\n value=\"normal\"\n ?checked=${judgment == 'normal'}\n aria-label=${i18next.t('label.judgment-normal')}\n ></md-radio>\n ${i18next.t('label.judgment-normal')}\n </label>\n <label>\n <md-radio\n name=\"judgment\"\n value=\"abnormal\"\n ?checked=${judgment == 'abnormal'}\n aria-label=${i18next.t('label.judgment-abnormal')}\n ></md-radio\n >${i18next.t('label.judgment-abnormal')}\n </label>\n </div>\n </label>\n\n <label>\n <h2><md-icon>build_circle</md-icon> <span>${i18next.t('label.corrective instruction')}</span></h2>\n <textarea\n name=\"instruction\"\n placeholder=${String(i18next.t('text.corrective instruction placeholder'))}\n .value=${instruction || ''}\n instruction\n ></textarea>\n </label>\n `\n : html`\n <label>\n <h2><md-icon>build_circle</md-icon> <span>${i18next.t('label.judgment')}</span></h2>\n <div role=\"radiogroup\" aria-label=\"An example group of radio buttons\">\n <label>\n <md-radio\n value=\"normal\"\n ?checked=${judgment == 'normal'}\n aria-label=${i18next.t('label.judgment-normal')}\n disabled\n ></md-radio>\n ${i18next.t('label.judgment-normal')}\n </label>\n <label>\n <md-radio\n value=\"abnormal\"\n ?checked=${judgment == 'abnormal'}\n aria-label=${i18next.t('label.judgment-abnormal')}\n disabled\n ></md-radio\n >${i18next.t('label.judgment-abnormal')}\n </label>\n </div>\n </label>\n\n <label>\n <h2><md-icon>build_circle</md-icon> <span>${i18next.t('label.corrective instruction')}</span></h2>\n <div instruction>${instruction}</div>\n </label>\n `}\n </form>\n `\n }\n\n private showDataSampleView() {\n const dataSet = this.dataSample?.dataSet\n const monitorType = dataSet?.monitorType\n const monitorView = dataSet?.monitorView\n\n switch (monitorType) {\n case 'generated':\n if (!monitorView || monitorView === 'DEFAULT') {\n return html`<ox-data-sample-view .dataSample=${this.dataSample}></ox-data-sample-view>`\n } else if (monitorView === 'CHECKLIST') {\n return html`<ox-checklist-sample-view .dataSample=${this.dataSample}></ox-checklist-sample-view>`\n }\n break\n case 'board':\n break\n case 'page':\n break\n default:\n return html`<ox-data-sample-view .dataSample=${this.dataSample}></ox-data-sample-view>`\n break\n }\n }\n\n onChangeInstruction(e: Event) {\n var output = {}\n\n const formData = new FormData(this.form)\n formData.forEach((value, key) => {\n output[key] = value\n })\n\n this.output = output\n\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: this.output\n })\n )\n }\n\n updated(changes) {\n if (changes.has('input')) {\n this.fetchDataSample()\n }\n }\n\n async fetchDataSample() {\n const { dataSampleId, dataSample } = this.input || {}\n\n if (dataSample) {\n /* only for backwards compatibility - should be deleted later */\n this.dataSample = dataSample\n } else if (dataSampleId) {\n const response = await client.query({\n query: gql`\n query ($id: String!) {\n dataSample(id: $id) {\n id\n name\n description\n useCase\n key01\n key02\n key03\n key04\n key05\n data\n ooc\n oos\n dataSet {\n id\n name\n description\n monitorType\n monitorView\n }\n dataItems {\n name\n description\n active\n hidden\n tag\n group\n subgroup\n type\n unit\n options\n quota\n spec\n stat\n }\n judgment\n workDate\n workShift\n updater {\n id\n name\n }\n updatedAt\n collectedAt\n }\n }\n `,\n variables: {\n id: dataSampleId\n }\n })\n\n this.dataSample = {\n ...response.data.dataSample\n }\n }\n }\n}\n"]}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import '@operato/dataset/ox-data-entry-form.js';
|
2
|
+
import '@operato/dataset/ox-checklist-sample-view.js';
|
2
3
|
import { LitElement } from 'lit';
|
3
4
|
declare const DataReviewActivityView_base: (new (...args: any[]) => LitElement) & typeof LitElement;
|
4
5
|
export declare class DataReviewActivityView extends DataReviewActivityView_base {
|
@@ -10,5 +11,6 @@ export declare class DataReviewActivityView extends DataReviewActivityView_base
|
|
10
11
|
onChangeInstruction(e: Event): void;
|
11
12
|
updated(changes: any): void;
|
12
13
|
fetchDataAssign(): Promise<void>;
|
14
|
+
private showDataSampleView;
|
13
15
|
}
|
14
16
|
export {};
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
2
2
|
import '@operato/dataset/ox-data-entry-form.js';
|
3
|
+
import '@operato/dataset/ox-checklist-sample-view.js';
|
3
4
|
import gql from 'graphql-tag';
|
4
5
|
import { css, html, LitElement } from 'lit';
|
5
6
|
import { customElement, property, state } from 'lit/decorators.js';
|
@@ -10,9 +11,7 @@ let DataReviewActivityView = class DataReviewActivityView extends localize(i18ne
|
|
10
11
|
render() {
|
11
12
|
const { judgment, instruction } = this.output || {};
|
12
13
|
return html `
|
13
|
-
<div content>
|
14
|
-
<ox-data-sample-view .dataSample=${this.dataSample}></ox-data-sample-view>
|
15
|
-
</div>
|
14
|
+
<div content>${this.showDataSampleView()}</div>
|
16
15
|
|
17
16
|
<form>
|
18
17
|
<label>
|
@@ -87,6 +86,8 @@ let DataReviewActivityView = class DataReviewActivityView extends localize(i18ne
|
|
87
86
|
id
|
88
87
|
name
|
89
88
|
description
|
89
|
+
monitorType
|
90
|
+
monitorView
|
90
91
|
}
|
91
92
|
dataItems {
|
92
93
|
name
|
@@ -95,6 +96,7 @@ let DataReviewActivityView = class DataReviewActivityView extends localize(i18ne
|
|
95
96
|
hidden
|
96
97
|
tag
|
97
98
|
group
|
99
|
+
subgroup
|
98
100
|
type
|
99
101
|
unit
|
100
102
|
options
|
@@ -121,6 +123,29 @@ let DataReviewActivityView = class DataReviewActivityView extends localize(i18ne
|
|
121
123
|
this.dataSample = Object.assign({}, response.data.dataSample);
|
122
124
|
}
|
123
125
|
}
|
126
|
+
showDataSampleView() {
|
127
|
+
var _a;
|
128
|
+
const dataSet = (_a = this.dataSample) === null || _a === void 0 ? void 0 : _a.dataSet;
|
129
|
+
const monitorType = dataSet === null || dataSet === void 0 ? void 0 : dataSet.monitorType;
|
130
|
+
const monitorView = dataSet === null || dataSet === void 0 ? void 0 : dataSet.monitorView;
|
131
|
+
switch (monitorType) {
|
132
|
+
case 'generated':
|
133
|
+
if (!monitorView || monitorView === 'DEFAULT') {
|
134
|
+
return html `<ox-data-sample-view .dataSample=${this.dataSample}></ox-data-sample-view>`;
|
135
|
+
}
|
136
|
+
else if (monitorView === 'CHECKLIST') {
|
137
|
+
return html `<ox-checklist-sample-view .dataSample=${this.dataSample}></ox-checklist-sample-view>`;
|
138
|
+
}
|
139
|
+
break;
|
140
|
+
case 'board':
|
141
|
+
break;
|
142
|
+
case 'page':
|
143
|
+
break;
|
144
|
+
default:
|
145
|
+
return html `<ox-data-sample-view .dataSample=${this.dataSample}></ox-data-sample-view>`;
|
146
|
+
break;
|
147
|
+
}
|
148
|
+
}
|
124
149
|
};
|
125
150
|
DataReviewActivityView.styles = [
|
126
151
|
ScrollbarStyles,
|