@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.
Files changed (64) hide show
  1. package/client/activities/activity-data-collect-edit.ts +71 -4
  2. package/client/activities/activity-data-review-edit.ts +28 -3
  3. package/client/activities/activity-data-review-view.ts +28 -3
  4. package/client/activities/activity-ooc-resolve-edit.ts +7 -0
  5. package/client/activities/activity-ooc-resolve-view.ts +7 -0
  6. package/client/activities/activity-ooc-review-edit.ts +33 -2
  7. package/client/activities/activity-ooc-review-view.ts +7 -0
  8. package/client/components/data-entry-form.ts +51 -4
  9. package/client/pages/data-entry/checklist-entry-page.ts +211 -0
  10. package/client/pages/data-entry/data-entry-list-page.ts +2 -1
  11. package/client/pages/data-ooc/data-ooc-page.ts +3 -0
  12. package/client/pages/data-ooc/data-ooc-view.ts +3 -0
  13. package/client/pages/data-sample/data-sample-view.ts +31 -1
  14. package/client/pages/data-set/data-item-list.ts +9 -0
  15. package/client/pages/data-set/data-set-list-page.ts +52 -11
  16. package/client/route.ts +4 -0
  17. package/dist-client/activities/activity-data-collect-edit.d.ts +8 -1
  18. package/dist-client/activities/activity-data-collect-edit.js +72 -3
  19. package/dist-client/activities/activity-data-collect-edit.js.map +1 -1
  20. package/dist-client/activities/activity-data-review-edit.d.ts +2 -0
  21. package/dist-client/activities/activity-data-review-edit.js +28 -3
  22. package/dist-client/activities/activity-data-review-edit.js.map +1 -1
  23. package/dist-client/activities/activity-data-review-view.d.ts +2 -0
  24. package/dist-client/activities/activity-data-review-view.js +28 -3
  25. package/dist-client/activities/activity-data-review-view.js.map +1 -1
  26. package/dist-client/activities/activity-ooc-resolve-edit.js +7 -0
  27. package/dist-client/activities/activity-ooc-resolve-edit.js.map +1 -1
  28. package/dist-client/activities/activity-ooc-resolve-view.js +7 -0
  29. package/dist-client/activities/activity-ooc-resolve-view.js.map +1 -1
  30. package/dist-client/activities/activity-ooc-review-edit.d.ts +1 -0
  31. package/dist-client/activities/activity-ooc-review-edit.js +33 -1
  32. package/dist-client/activities/activity-ooc-review-edit.js.map +1 -1
  33. package/dist-client/activities/activity-ooc-review-view.js +7 -0
  34. package/dist-client/activities/activity-ooc-review-view.js.map +1 -1
  35. package/dist-client/components/data-entry-form.d.ts +9 -2
  36. package/dist-client/components/data-entry-form.js +52 -2
  37. package/dist-client/components/data-entry-form.js.map +1 -1
  38. package/dist-client/pages/data-entry/checklist-entry-page.d.ts +21 -0
  39. package/dist-client/pages/data-entry/checklist-entry-page.js +209 -0
  40. package/dist-client/pages/data-entry/checklist-entry-page.js.map +1 -0
  41. package/dist-client/pages/data-entry/data-entry-list-page.js +2 -1
  42. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
  43. package/dist-client/pages/data-ooc/data-ooc-page.js +3 -0
  44. package/dist-client/pages/data-ooc/data-ooc-page.js.map +1 -1
  45. package/dist-client/pages/data-ooc/data-ooc-view.js +3 -0
  46. package/dist-client/pages/data-ooc/data-ooc-view.js.map +1 -1
  47. package/dist-client/pages/data-sample/data-sample-view.d.ts +2 -0
  48. package/dist-client/pages/data-sample/data-sample-view.js +31 -1
  49. package/dist-client/pages/data-sample/data-sample-view.js.map +1 -1
  50. package/dist-client/pages/data-set/data-item-list.js +9 -0
  51. package/dist-client/pages/data-set/data-item-list.js.map +1 -1
  52. package/dist-client/pages/data-set/data-set-list-page.d.ts +1 -0
  53. package/dist-client/pages/data-set/data-set-list-page.js +44 -8
  54. package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
  55. package/dist-client/route.js +3 -0
  56. package/dist-client/route.js.map +1 -1
  57. package/dist-client/tsconfig.tsbuildinfo +1 -1
  58. package/dist-server/service/data-set/data-item-type.d.ts +2 -0
  59. package/dist-server/service/data-set/data-item-type.js +14 -0
  60. package/dist-server/service/data-set/data-item-type.js.map +1 -1
  61. package/dist-server/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +13 -13
  63. package/server/service/data-set/data-item-type.ts +14 -0
  64. 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` <ox-data-sample-view .dataSample=${dataSample}></ox-data-sample-view> `
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: (columns, data, column, record, rowIndex) => {
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
- entryForm: OxDataEntryForm;
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
- <ox-data-entry-form
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, "entryForm", void 0);
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;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,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;AAIjE,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IA0BxE,MAAM;QACJ,OAAO,IAAI,CAAA;;mBAEI,IAAI,CAAC,OAAO;iBACd,IAAI,CAAC,MAAM;kBACV,IAAI,CAAC,gBAAgB;;KAElC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,CAAc;QACnC,CAAC,CAAC,eAAe,EAAE,CAAA;QAEnB,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;;;;;;;;;;;;;;;;;;;;;;;SAuBT;gBACD,SAAS,EAAE;oBACT,EAAE;iBACH;aACF,CAAC,CAAA;YAEF,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAA;QACtC,CAAC;IACH,CAAC;;AAzFM,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;;wDAAmC;AAEd;IAA5B,KAAK,CAAC,oBAAoB,CAAC;8BAAa,eAAe;0DAAA;AAxB7C,uBAAuB;IADnC,aAAa,CAAC,4BAA4B,CAAC;GAC/B,uBAAuB,CA2FnC","sourcesContent":["import '@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 { 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 { 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 }\n\n @query('ox-data-entry-form') entryForm!: OxDataEntryForm\n\n render() {\n return html`\n <ox-data-entry-form\n .dataSet=${this.dataSet}\n .value=${this.output}\n @change=${this._updateDataItems}\n ></ox-data-entry-form>\n `\n }\n\n async _updateDataItems(e: CustomEvent) {\n e.stopPropagation()\n\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 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 }\n }\n `,\n variables: {\n id\n }\n })\n\n this.dataSet = response.data.dataSet\n }\n }\n}\n"]}
1
+ {"version":3,"file":"activity-data-collect-edit.js","sourceRoot":"","sources":["../../client/activities/activity-data-collect-edit.ts"],"names":[],"mappings":"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","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":"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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'\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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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,