@operato/dataset 1.0.0-alpha.34 → 1.0.0-alpha.37

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ox-data-item-spec.js","sourceRoot":"","sources":["../../src/ox-data-item-spec.ts"],"names":[],"mappings":";;AAAA,OAAO,wDAAwD,CAAA;AAG/D,OAAO,EAAE,UAAU,EAAkB,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG5E,IAAa,cAAc,sBAA3B,MAAa,cAAe,SAAQ,UAAU;IAA9C;;QAuCW,qBAAgB,GAAsB,EAAE,CAAA;IAuCnD,CAAC;IA3EQ,MAAM,CAAC,gBAAgB,CAAC,IAAY,EAAE,QAAiC;QAC5E,gBAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA;IAC1C,CAAC;IAEM,MAAM,CAAC,gBAAgB;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,gBAAc,CAAC,QAAQ,CAAC,CAAA;IAC7C,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAY;QACpC,OAAO,gBAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IA8BD,MAAM;QACJ,OAAO,IAAI,CAAA,0BAA0B,CAAC,CAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACzB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE;;YAAC,OAAA,IAAI,CAAA,kBAAkB,IAAI;6BACvC,WAAW;kDACU,IAAI,WAAW,KAAK,WAAW,MAAA,IAAI,CAAC,KAAK,0CAAG,IAAI,CAAC;wCAC3D,CAAA;SAAA,CACjC;YACK,CAAA;IACV,CAAC;IAED,OAAO,CAAC,OAA6B;QACnC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC3B,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC,CAAA;SACzG;IACH,CAAC;IAEO,QAAQ,CAAC,CAAQ;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAE9B,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,QAAQ,EAAE;YACxB,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;SAC1B,CAAC,CACH,CAAA;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,KAAK,GAAG,EAAS,CAAA;QACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAExF,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA;AA7EQ,uBAAQ,GAAgD,EAAE,CAAA;AAc1D,qBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;GAmBlB,CAAA;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAuC;AACtC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDAAoB;AAEtC;IAAR,KAAK,EAAE;wDAAyC;AAET;IAAvC,QAAQ,CAAC,4BAA4B,CAAC;oDAAwD;AAzCpF,cAAc;IAD1B,aAAa,CAAC,mBAAmB,CAAC;GACtB,cAAc,CA8E1B;SA9EY,cAAc","sourcesContent":["import '@operato/property-editor/ox-properties-dynamic-view.js'\n\nimport { DataItem, DataItemSpecSet, DataItemSpecSetProvider } from './types.js'\nimport { LitElement, PropertyValues, css, html } from 'lit'\nimport { customElement, property, queryAll, state } from 'lit/decorators.js'\n\n@customElement('ox-data-item-spec')\nexport class OxDataItemSpec extends LitElement {\n static registry: { [name: string]: DataItemSpecSetProvider } = {}\n\n public static registerProvider(name: string, provider: DataItemSpecSetProvider) {\n OxDataItemSpec.registry[name] = provider\n }\n\n public static getProviderNames() {\n return Object.keys(OxDataItemSpec.registry)\n }\n\n public static getProvider(name: string): DataItemSpecSetProvider | undefined {\n return OxDataItemSpec.registry[name]\n }\n\n static styles = css`\n :host {\n display: flex;\n flex-direction: row;\n border-bottom: var(--border-dark-color);\n padding: var(--margin-default) 0;\n }\n [specName] {\n font: var(--legend-font);\n color: var(--legend-text-color);\n }\n [description] {\n font: var(--form-sublabel-font);\n opacity: 0.8;\n }\n\n form {\n flex: 1;\n }\n `\n\n @property({ type: Object }) value?: { [specSetName: string]: any }\n @property({ type: Object }) dataItem?: DataItem\n\n @state() dataItemSpecSets: DataItemSpecSet[] = []\n\n @queryAll('ox-properties-dynamic-view') specSetViews!: NodeListOf<HTMLElement & { value: any }>\n\n render() {\n return html`<form @property-change=${(e: Event) => this.onChange(e)}>\n ${this.dataItemSpecSets.map(\n ({ name, description, specs }) => html` <div specName>${name}</div>\n <div description>${description}</div>\n <ox-properties-dynamic-view data-name=${name} .props=${specs} .value=${this.value?.[name]}>\n </ox-properties-dynamic-view>`\n )}\n </form>`\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('dataItem')) {\n this.dataItemSpecSets = Object.values(OxDataItemSpec.registry).map(provider => provider(this.dataItem!))\n }\n }\n\n private onChange(e: Event) {\n this.value = this.buildValue()\n\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n composed: true,\n detail: { ...this.value }\n })\n )\n }\n\n private buildValue() {\n var value = {} as any\n this.specSetViews.forEach(view => (value[view.getAttribute('data-name')!] = view.value))\n\n return value\n }\n}\n"]}
1
+ {"version":3,"file":"ox-data-item-spec.js","sourceRoot":"","sources":["../../src/ox-data-item-spec.ts"],"names":[],"mappings":";AAAA,OAAO,wDAAwD,CAAA;AAE/D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAIrD,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,UAAU;IAA9C;;QAyBW,qBAAgB,GAAsB,EAAE,CAAA;IAuCnD,CAAC;IAnCC,MAAM;QACJ,OAAO,IAAI,CAAA,0BAA0B,CAAC,CAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACzB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE;;YAAC,OAAA,IAAI,CAAA,kBAAkB,IAAI;6BACvC,WAAW;kDACU,IAAI,WAAW,KAAK,WAAW,MAAA,IAAI,CAAC,KAAK,0CAAG,IAAI,CAAC;wCAC3D,CAAA;SAAA,CACjC;YACK,CAAA;IACV,CAAC;IAED,OAAO,CAAC,OAA6B;QACnC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC3B,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC,CAAA;SAC7G;IACH,CAAC;IAEO,QAAQ,CAAC,CAAQ;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAE9B,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,QAAQ,EAAE;YACxB,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;SAC1B,CAAC,CACH,CAAA;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,KAAK,GAAG,EAAS,CAAA;QACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAExF,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA;AA/DQ,qBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;GAmBlB,CAAA;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAuC;AACtC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDAAoB;AAEtC;IAAR,KAAK,EAAE;wDAAyC;AAET;IAAvC,QAAQ,CAAC,4BAA4B,CAAC;oDAAwD;AA3BpF,cAAc;IAD1B,aAAa,CAAC,mBAAmB,CAAC;GACtB,cAAc,CAgE1B;SAhEY,cAAc","sourcesContent":["import '@operato/property-editor/ox-properties-dynamic-view.js'\n\nimport { css, html, LitElement, PropertyValues } from 'lit'\nimport { customElement, property, queryAll, state } from 'lit/decorators.js'\n\nimport { OxDataUseCase } from './ox-data-use-case.js'\nimport { DataItem, DataItemSpecSet } from './types.js'\n\n@customElement('ox-data-item-spec')\nexport class OxDataItemSpec extends LitElement {\n static styles = css`\n :host {\n display: flex;\n flex-direction: row;\n border-bottom: var(--border-dark-color);\n padding: var(--margin-default) 0;\n }\n [specName] {\n font: var(--legend-font);\n color: var(--legend-text-color);\n }\n [description] {\n font: var(--form-sublabel-font);\n opacity: 0.8;\n }\n\n form {\n flex: 1;\n }\n `\n\n @property({ type: Object }) value?: { [specSetName: string]: any }\n @property({ type: Object }) dataItem?: DataItem\n\n @state() dataItemSpecSets: DataItemSpecSet[] = []\n\n @queryAll('ox-properties-dynamic-view') specSetViews!: NodeListOf<HTMLElement & { value: any }>\n\n render() {\n return html`<form @property-change=${(e: Event) => this.onChange(e)}>\n ${this.dataItemSpecSets.map(\n ({ name, description, specs }) => html` <div specName>${name}</div>\n <div description>${description}</div>\n <ox-properties-dynamic-view data-name=${name} .props=${specs} .value=${this.value?.[name]}>\n </ox-properties-dynamic-view>`\n )}\n </form>`\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('dataItem')) {\n this.dataItemSpecSets = OxDataUseCase.getUseCases().map(useCase => useCase.getSpecification(this.dataItem!))\n }\n }\n\n private onChange(e: Event) {\n this.value = this.buildValue()\n\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n composed: true,\n detail: { ...this.value }\n })\n )\n }\n\n private buildValue() {\n var value = {} as any\n this.specSetViews.forEach(view => (value[view.getAttribute('data-name')!] = view.value))\n\n return value\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import '@operato/input/ox-input-file.js';
2
+ import { LitElement } from 'lit';
3
+ import { DataSample, DataSet } from './types.js';
4
+ export declare class OxDataSampleView extends LitElement {
5
+ static styles: import("lit").CSSResult;
6
+ dataSet?: DataSet;
7
+ dataSample?: DataSample;
8
+ value?: {
9
+ [tag: string]: any;
10
+ };
11
+ render(): import("lit-html").TemplateResult<1>;
12
+ private onChange;
13
+ private buildSpec;
14
+ private buildValue;
15
+ private evaluateOOC;
16
+ }
@@ -0,0 +1,151 @@
1
+ import { __decorate } from "tslib";
2
+ import '@operato/input/ox-input-file.js';
3
+ import { css, html, LitElement } from 'lit';
4
+ import { customElement, property } from 'lit/decorators.js';
5
+ import { OxDataUseCase } from './ox-data-use-case.js';
6
+ let OxDataSampleView = class OxDataSampleView extends LitElement {
7
+ render() {
8
+ var _a, _b, _c, _d;
9
+ const dataItems = this.dataSet.dataItems.filter(item => item.active);
10
+ const data = (_a = this.dataSample) === null || _a === void 0 ? void 0 : _a.data;
11
+ return html ` <h2>${(_b = this.dataSample) === null || _b === void 0 ? void 0 : _b.name}</h2>
12
+ <h3>${(_c = this.dataSample) === null || _c === void 0 ? void 0 : _c.description}</h3>
13
+ <div>collected at: ${new Date((_d = this.dataSample) === null || _d === void 0 ? void 0 : _d.collectedAt)}</div>
14
+
15
+ <form @change=${(e) => this.onChange(e)}>
16
+ <table>
17
+ <tr>
18
+ <th>item</th>
19
+ <th>description</th>
20
+ <th>unit</th>
21
+ <th>value</th>
22
+ <th>specification</th>
23
+ <th>ooc</th>
24
+ <th>oos</th>
25
+ </tr>
26
+ ${dataItems.map(dataItem => {
27
+ const { ooc, oos } = this.evaluateOOC(dataItem, data === null || data === void 0 ? void 0 : data[dataItem.tag]) || {};
28
+ return html `
29
+ <tr>
30
+ <td>${dataItem.name}</td>
31
+ <td>${dataItem.description}</td>
32
+ <td>${dataItem.unit}</td>
33
+ <td>${this.buildValue(dataItem)}</td>
34
+ <td><pre>${this.buildSpec(dataItem)}</pre></td>
35
+ <td>${ooc ? html `<mwc-icon>checked</mwc-icon>` : ''}</td>
36
+ <td>${oos ? html `<mwc-icon>checked</mwc-icon>` : ''}</td>
37
+ </tr>
38
+ `;
39
+ })}
40
+ </table>
41
+
42
+ <label>correction activity</label>
43
+ <textarea name="correctionActivity"> </textarea>
44
+ </form>`;
45
+ }
46
+ onChange(e) { }
47
+ buildSpec(dataItem) {
48
+ return OxDataUseCase.elaborateDataItemSpec(this.dataSet, dataItem);
49
+ }
50
+ buildValue(dataItem) {
51
+ var _a;
52
+ const { tag, type } = dataItem;
53
+ if (!this.dataSample) {
54
+ return '';
55
+ }
56
+ const value = (_a = this.dataSample) === null || _a === void 0 ? void 0 : _a.data[dataItem.tag];
57
+ if (value === undefined) {
58
+ return '';
59
+ }
60
+ const values = value instanceof Array ? value : [value];
61
+ const elements = values.map((_, idx) => {
62
+ const v = value[idx];
63
+ switch (type) {
64
+ case 'boolean':
65
+ return html ` <input type="checkbox" name=${tag} .checked=${v} disabled />`;
66
+ break;
67
+ case 'select':
68
+ case 'number':
69
+ case 'string':
70
+ default:
71
+ return String(v === undefined ? '' : v);
72
+ }
73
+ });
74
+ return type === 'boolean' ? elements : elements.join(', ');
75
+ }
76
+ evaluateOOC(dataItem, value) {
77
+ return OxDataUseCase.evaluateItem(this.dataSet, dataItem, value);
78
+ }
79
+ };
80
+ OxDataSampleView.styles = css `
81
+ :host {
82
+ display: flex;
83
+ flex-direction: column;
84
+ }
85
+
86
+ form {
87
+ flex: 1;
88
+
89
+ display: flex;
90
+ flex-direction: column;
91
+ }
92
+ label {
93
+ display: grid;
94
+ grid-template-columns: repeat(12, 1fr);
95
+ gap: 9px;
96
+ align-items: center;
97
+ margin-bottom: var(--margin-default);
98
+ }
99
+ label:nth-child(even) {
100
+ background-color: var(--main-section-background-color);
101
+ padding: var(--padding-default) 0;
102
+ }
103
+
104
+ div[name] {
105
+ grid-column: span 2 / auto;
106
+ font: var(--label-font);
107
+ color: var(--label-color);
108
+ text-align: right;
109
+ }
110
+ div[elements] {
111
+ grid-column: span 10 / auto;
112
+ display: flex;
113
+ flex-direction: row;
114
+ flex-wrap: wrap;
115
+ gap: 10px;
116
+ padding-right: var(--padding-default);
117
+ }
118
+ div[elements] * {
119
+ flex: 1;
120
+ }
121
+ div[elements] input,
122
+ div[elements] select {
123
+ border: var(--input-field-border);
124
+ border-radius: var(--input-field-border-radius);
125
+ padding: var(--input-field-padding);
126
+ font: var(--input-field-font);
127
+ }
128
+
129
+ @media only screen and (max-width: 460px) {
130
+ div[name] {
131
+ grid-column: span 3 / auto;
132
+ }
133
+ div[elements] {
134
+ grid-column: span 9 / auto;
135
+ }
136
+ }
137
+ `;
138
+ __decorate([
139
+ property({ type: Object })
140
+ ], OxDataSampleView.prototype, "dataSet", void 0);
141
+ __decorate([
142
+ property({ type: Object })
143
+ ], OxDataSampleView.prototype, "dataSample", void 0);
144
+ __decorate([
145
+ property({ type: Object })
146
+ ], OxDataSampleView.prototype, "value", void 0);
147
+ OxDataSampleView = __decorate([
148
+ customElement('ox-data-sample-view')
149
+ ], OxDataSampleView);
150
+ export { OxDataSampleView };
151
+ //# sourceMappingURL=ox-data-sample-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-data-sample-view.js","sourceRoot":"","sources":["../../src/ox-data-sample-view.ts"],"names":[],"mappings":";AAAA,OAAO,iCAAiC,CAAA;AAExC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAIrD,IAAa,gBAAgB,GAA7B,MAAa,gBAAiB,SAAQ,UAAU;IAgE9C,MAAM;;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,OAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrE,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,CAAA;QAElC,OAAO,IAAI,CAAA,QAAQ,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI;YAChC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW;2BACb,IAAI,IAAI,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAY,CAAC;;sBAE5C,CAAC,CAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;;;;;;;;;;;YAWxC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACzB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;YAC3E,OAAO,IAAI,CAAA;;sBAED,QAAQ,CAAC,IAAI;sBACb,QAAQ,CAAC,WAAW;sBACpB,QAAQ,CAAC,IAAI;sBACb,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;2BACpB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;sBAC7B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA,8BAA8B,CAAC,CAAC,CAAC,EAAE;sBAC7C,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA,8BAA8B,CAAC,CAAC,CAAC,EAAE;;aAEtD,CAAA;QACH,CAAC,CAAC;;;;;cAKE,CAAA;IACZ,CAAC;IAEO,QAAQ,CAAC,CAAQ,IAAG,CAAC;IAErB,SAAS,CAAC,QAAkB;QAClC,OAAO,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAQ,EAAE,QAAQ,CAAC,CAAA;IACrE,CAAC;IAEO,UAAU,CAAC,QAAkB;;QACnC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAA;QAE9B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO,EAAE,CAAA;SACV;QAED,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACjD,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO,EAAE,CAAA;SACV;QACD,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAEvD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,GAAG,EAAE,EAAE;YAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;YAEpB,QAAQ,IAAI,EAAE;gBACZ,KAAK,SAAS;oBACZ,OAAO,IAAI,CAAA,gCAAgC,GAAG,aAAa,CAAC,cAAc,CAAA;oBAC1E,MAAK;gBAEP,KAAK,QAAQ,CAAC;gBACd,KAAK,QAAQ,CAAC;gBACd,KAAK,QAAQ,CAAC;gBACd;oBACE,OAAO,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;aAC1C;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5D,CAAC;IAEO,WAAW,CAAC,QAAkB,EAAE,KAAU;QAChD,OAAO,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,OAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;IACnE,CAAC;CACF,CAAA;AAhJQ,uBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDlB,CAAA;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDAAkB;AACjB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oDAAwB;AACvB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;+CAA+B;AA9D/C,gBAAgB;IAD5B,aAAa,CAAC,qBAAqB,CAAC;GACxB,gBAAgB,CAiJ5B;SAjJY,gBAAgB","sourcesContent":["import '@operato/input/ox-input-file.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { OxDataUseCase } from './ox-data-use-case.js'\nimport { DataItem, DataSample, DataSet } from './types.js'\n\n@customElement('ox-data-sample-view')\nexport class OxDataSampleView extends LitElement {\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n }\n\n form {\n flex: 1;\n\n display: flex;\n flex-direction: column;\n }\n label {\n display: grid;\n grid-template-columns: repeat(12, 1fr);\n gap: 9px;\n align-items: center;\n margin-bottom: var(--margin-default);\n }\n label:nth-child(even) {\n background-color: var(--main-section-background-color);\n padding: var(--padding-default) 0;\n }\n\n div[name] {\n grid-column: span 2 / auto;\n font: var(--label-font);\n color: var(--label-color);\n text-align: right;\n }\n div[elements] {\n grid-column: span 10 / auto;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 10px;\n padding-right: var(--padding-default);\n }\n div[elements] * {\n flex: 1;\n }\n div[elements] input,\n div[elements] select {\n border: var(--input-field-border);\n border-radius: var(--input-field-border-radius);\n padding: var(--input-field-padding);\n font: var(--input-field-font);\n }\n\n @media only screen and (max-width: 460px) {\n div[name] {\n grid-column: span 3 / auto;\n }\n div[elements] {\n grid-column: span 9 / auto;\n }\n }\n `\n\n @property({ type: Object }) dataSet?: DataSet\n @property({ type: Object }) dataSample?: DataSample\n @property({ type: Object }) value?: { [tag: string]: any }\n\n render() {\n const dataItems = this.dataSet!.dataItems.filter(item => item.active)\n const data = this.dataSample?.data\n\n return html` <h2>${this.dataSample?.name}</h2>\n <h3>${this.dataSample?.description}</h3>\n <div>collected at: ${new Date(this.dataSample?.collectedAt!)}</div>\n\n <form @change=${(e: Event) => this.onChange(e)}>\n <table>\n <tr>\n <th>item</th>\n <th>description</th>\n <th>unit</th>\n <th>value</th>\n <th>specification</th>\n <th>ooc</th>\n <th>oos</th>\n </tr>\n ${dataItems.map(dataItem => {\n const { ooc, oos } = this.evaluateOOC(dataItem, data?.[dataItem.tag]) || {}\n return html`\n <tr>\n <td>${dataItem.name}</td>\n <td>${dataItem.description}</td>\n <td>${dataItem.unit}</td>\n <td>${this.buildValue(dataItem)}</td>\n <td><pre>${this.buildSpec(dataItem)}</pre></td>\n <td>${ooc ? html`<mwc-icon>checked</mwc-icon>` : ''}</td>\n <td>${oos ? html`<mwc-icon>checked</mwc-icon>` : ''}</td>\n </tr>\n `\n })}\n </table>\n\n <label>correction activity</label>\n <textarea name=\"correctionActivity\"> </textarea>\n </form>`\n }\n\n private onChange(e: Event) {}\n\n private buildSpec(dataItem: DataItem) {\n return OxDataUseCase.elaborateDataItemSpec(this.dataSet!, dataItem)\n }\n\n private buildValue(dataItem: DataItem) {\n const { tag, type } = dataItem\n\n if (!this.dataSample) {\n return ''\n }\n\n const value = this.dataSample?.data[dataItem.tag]\n if (value === undefined) {\n return ''\n }\n const values = value instanceof Array ? value : [value]\n\n const elements = values.map((_: any, idx) => {\n const v = value[idx]\n\n switch (type) {\n case 'boolean':\n return html` <input type=\"checkbox\" name=${tag} .checked=${v} disabled />`\n break\n\n case 'select':\n case 'number':\n case 'string':\n default:\n return String(v === undefined ? '' : v)\n }\n })\n\n return type === 'boolean' ? elements : elements.join(', ')\n }\n\n private evaluateOOC(dataItem: DataItem, value: any) {\n return OxDataUseCase.evaluateItem(this.dataSet!, dataItem, value)\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { DataItem, DataItemSpecSet, DataSet, EvaluationResult } from './types';
2
+ export declare abstract class OxDataUseCase {
3
+ static registry: {
4
+ [name: string]: OxDataUseCase;
5
+ };
6
+ static registerUseCase(name: string, useCase: OxDataUseCase): void;
7
+ static getUseCaseNames(): string[];
8
+ static getUseCases(): OxDataUseCase[];
9
+ static getUseCase(name: string): OxDataUseCase | undefined;
10
+ static elaborateDataItemSpec(dataSet: DataSet, dataItem: DataItem): string;
11
+ static evaluate(dataSet: DataSet, dataItems: DataItem[], data: any): EvaluationResult | undefined;
12
+ static evaluateItem(dataSet: DataSet, dataItem: DataItem, values: any | any[]): EvaluationResult | undefined;
13
+ abstract evaluate(specs: any, values: any[]): EvaluationResult | undefined;
14
+ abstract elaborateUseCaseSpec(spec: any): string | undefined;
15
+ abstract getSpecification(dataItem: DataItem): DataItemSpecSet;
16
+ }
@@ -0,0 +1,111 @@
1
+ export class OxDataUseCase {
2
+ static registerUseCase(name, useCase) {
3
+ OxDataUseCase.registry[name] = useCase;
4
+ }
5
+ static getUseCaseNames() {
6
+ return Object.keys(OxDataUseCase.registry);
7
+ }
8
+ static getUseCases() {
9
+ return Object.values(OxDataUseCase.registry);
10
+ }
11
+ static getUseCase(name) {
12
+ return OxDataUseCase.registry[name];
13
+ }
14
+ static elaborateDataItemSpec(dataSet, dataItem) {
15
+ var _a;
16
+ if (!dataSet.useCase) {
17
+ return '';
18
+ }
19
+ const useCaseNames = dataSet.useCase.split(',').map(useCaseName => useCaseName.trim());
20
+ const useCases = useCaseNames.map(useCaseName => OxDataUseCase.getUseCase(useCaseName)).filter(useCase => !!useCase);
21
+ var texts = [];
22
+ for (let j = 0; j < useCases.length; j++) {
23
+ const useCase = useCases[j];
24
+ if (!useCase) {
25
+ continue;
26
+ }
27
+ const specs = (_a = dataItem.spec) === null || _a === void 0 ? void 0 : _a[dataSet.useCase];
28
+ if (!specs) {
29
+ continue;
30
+ }
31
+ const result = useCase.elaborateUseCaseSpec(dataItem.spec);
32
+ if (!result) {
33
+ continue;
34
+ }
35
+ texts.push(result);
36
+ }
37
+ return texts.join('\n');
38
+ }
39
+ static evaluate(dataSet, dataItems, data) {
40
+ var _a;
41
+ var ooc = false;
42
+ var oos = false;
43
+ if (!dataSet.useCase) {
44
+ return { ooc, oos };
45
+ }
46
+ const useCaseNames = dataSet.useCase.split(',').map(useCaseName => useCaseName.trim());
47
+ const useCases = useCaseNames.map(useCaseName => OxDataUseCase.getUseCase(useCaseName)).filter(useCase => !!useCase);
48
+ for (let i = 0; i < dataItems.length; i++) {
49
+ const dataItem = dataItems[i];
50
+ const { active, tag } = dataItem;
51
+ if (!active || !tag) {
52
+ continue;
53
+ }
54
+ let values = data[tag];
55
+ if (typeof values === 'undefined') {
56
+ continue; // TODO what if in case no value ?
57
+ }
58
+ if (!(values instanceof Array)) {
59
+ values = [values];
60
+ }
61
+ for (let j = 0; j < useCases.length; j++) {
62
+ const useCase = useCases[j];
63
+ const specs = (_a = dataItem.spec) === null || _a === void 0 ? void 0 : _a[dataSet.useCase];
64
+ if (!specs) {
65
+ continue;
66
+ }
67
+ const result = useCase === null || useCase === void 0 ? void 0 : useCase.evaluate(specs, values);
68
+ if (result) {
69
+ ooc || (ooc = result.ooc);
70
+ oos || (oos = result.oos);
71
+ }
72
+ }
73
+ }
74
+ return { ooc, oos };
75
+ }
76
+ static evaluateItem(dataSet, dataItem, values) {
77
+ var _a;
78
+ var ooc = false;
79
+ var oos = false;
80
+ if (!dataSet.useCase) {
81
+ return { ooc, oos };
82
+ }
83
+ const useCaseNames = dataSet.useCase.split(',').map(useCaseName => useCaseName.trim());
84
+ const useCases = useCaseNames.map(useCaseName => OxDataUseCase.getUseCase(useCaseName)).filter(useCase => !!useCase);
85
+ const { active, tag } = dataItem;
86
+ if (!active || !tag) {
87
+ return;
88
+ }
89
+ if (typeof values === 'undefined') {
90
+ return; // TODO what if in case no value ?
91
+ }
92
+ if (!(values instanceof Array)) {
93
+ values = [values];
94
+ }
95
+ for (let j = 0; j < useCases.length; j++) {
96
+ const useCase = useCases[j];
97
+ const specs = (_a = dataItem.spec) === null || _a === void 0 ? void 0 : _a[dataSet.useCase];
98
+ if (!specs) {
99
+ return;
100
+ }
101
+ const result = useCase === null || useCase === void 0 ? void 0 : useCase.evaluate(specs, values);
102
+ if (result) {
103
+ ooc || (ooc = result.ooc);
104
+ oos || (oos = result.oos);
105
+ }
106
+ }
107
+ return { ooc, oos };
108
+ }
109
+ }
110
+ OxDataUseCase.registry = {};
111
+ //# sourceMappingURL=ox-data-use-case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-data-use-case.js","sourceRoot":"","sources":["../../src/ox-data-use-case.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataItem, DataItemSpecSet, DataSet, EvaluationResult } from './types'\n\nexport abstract class OxDataUseCase {\n static registry: { [name: string]: OxDataUseCase } = {}\n\n public static registerUseCase(name: string, useCase: OxDataUseCase) {\n OxDataUseCase.registry[name] = useCase\n }\n\n public static getUseCaseNames() {\n return Object.keys(OxDataUseCase.registry)\n }\n\n public static getUseCases(): OxDataUseCase[] {\n return Object.values(OxDataUseCase.registry)\n }\n\n public static getUseCase(name: string): OxDataUseCase | undefined {\n return OxDataUseCase.registry[name]\n }\n\n public static elaborateDataItemSpec(dataSet: DataSet, dataItem: DataItem): string {\n if (!dataSet.useCase) {\n return ''\n }\n\n const useCaseNames = dataSet.useCase.split(',').map(useCaseName => useCaseName.trim())\n const useCases = useCaseNames.map(useCaseName => OxDataUseCase.getUseCase(useCaseName)).filter(useCase => !!useCase)\n\n var texts = []\n\n for (let j = 0; j < useCases.length; j++) {\n const useCase = useCases[j]\n if (!useCase) {\n continue\n }\n\n const specs = dataItem.spec?.[dataSet.useCase]\n if (!specs) {\n continue\n }\n\n const result = useCase.elaborateUseCaseSpec(dataItem.spec)\n if (!result) {\n continue\n }\n\n texts.push(result)\n }\n\n return texts.join('\\n')\n }\n\n public static evaluate(dataSet: DataSet, dataItems: DataItem[], data: any): EvaluationResult | undefined {\n var ooc = false\n var oos = false\n\n if (!dataSet.useCase) {\n return { ooc, oos }\n }\n\n const useCaseNames = dataSet.useCase.split(',').map(useCaseName => useCaseName.trim())\n const useCases = useCaseNames.map(useCaseName => OxDataUseCase.getUseCase(useCaseName)).filter(useCase => !!useCase)\n\n for (let i = 0; i < dataItems.length; i++) {\n const dataItem = dataItems[i]\n const { active, tag } = dataItem\n if (!active || !tag) {\n continue\n }\n\n let values: any | any[] = data[tag]\n if (typeof values === 'undefined') {\n continue // TODO what if in case no value ?\n }\n\n if (!(values instanceof Array)) {\n values = [values]\n }\n\n for (let j = 0; j < useCases.length; j++) {\n const useCase = useCases[j]\n\n const specs = dataItem.spec?.[dataSet.useCase]\n if (!specs) {\n continue\n }\n\n const result = useCase?.evaluate(specs, values)\n\n if (result) {\n ooc ||= result.ooc\n oos ||= result.oos\n }\n }\n }\n\n return { ooc, oos }\n }\n\n public static evaluateItem(dataSet: DataSet, dataItem: DataItem, values: any | any[]): EvaluationResult | undefined {\n var ooc = false\n var oos = false\n\n if (!dataSet.useCase) {\n return { ooc, oos }\n }\n\n const useCaseNames = dataSet.useCase.split(',').map(useCaseName => useCaseName.trim())\n const useCases = useCaseNames.map(useCaseName => OxDataUseCase.getUseCase(useCaseName)).filter(useCase => !!useCase)\n\n const { active, tag } = dataItem\n if (!active || !tag) {\n return\n }\n\n if (typeof values === 'undefined') {\n return // TODO what if in case no value ?\n }\n\n if (!(values instanceof Array)) {\n values = [values]\n }\n\n for (let j = 0; j < useCases.length; j++) {\n const useCase = useCases[j]\n\n const specs = dataItem.spec?.[dataSet.useCase]\n if (!specs) {\n return\n }\n\n const result = useCase?.evaluate(specs, values)\n\n if (result) {\n ooc ||= result.ooc\n oos ||= result.oos\n }\n }\n\n return { ooc, oos }\n }\n\n public abstract evaluate(specs: any, values: any[]): EvaluationResult | undefined\n public abstract elaborateUseCaseSpec(spec: any): string | undefined\n public abstract getSpecification(dataItem: DataItem): DataItemSpecSet\n}\n"]}
@@ -17,6 +17,9 @@ export declare type DataItem = {
17
17
  options: TypeOptions;
18
18
  unit: string;
19
19
  quota: number;
20
+ spec: {
21
+ [useCase: string]: any;
22
+ };
20
23
  };
21
24
  export declare type DataSet = {
22
25
  name: string;
@@ -25,18 +28,35 @@ export declare type DataSet = {
25
28
  useCase: string;
26
29
  active: boolean;
27
30
  dataItems: DataItem[];
31
+ spec: {
32
+ [dataItem: string]: {
33
+ [useCase: string]: any;
34
+ };
35
+ };
28
36
  };
29
37
  export declare type DataItemSpec = {
30
38
  type: string;
31
39
  label: string;
32
40
  name: string;
33
- property: {
41
+ property?: {
34
42
  [option: string]: any;
35
43
  };
36
44
  };
37
45
  export declare type DataItemSpecSet = {
38
46
  name: string;
39
47
  description: string;
48
+ help: string;
40
49
  specs: DataItemSpec[];
41
50
  };
42
- export declare type DataItemSpecSetProvider = (dataItem: DataItem) => DataItemSpecSet;
51
+ export declare type DataSample = {
52
+ name: string;
53
+ description: string;
54
+ data: any;
55
+ spec: any;
56
+ quota: number;
57
+ collectedAt: Date;
58
+ };
59
+ export declare type EvaluationResult = {
60
+ oos: boolean;
61
+ ooc: boolean;
62
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type SelectOption = { text: string; value: string }\nexport type SelectOptions = SelectOption[]\nexport type TypeOptions = {\n options?: SelectOptions\n [prop: string]: any\n}\n\nexport type DataItem = {\n name: string\n description: string\n sequence: number\n tag: string\n type: string\n active: boolean\n options: TypeOptions\n unit: string\n quota: number\n}\n\nexport type DataSet = {\n name: string\n description: string\n type: 'manual' | 'automatic'\n useCase: string\n active: boolean\n dataItems: DataItem[]\n}\n\nexport type DataItemSpec = {\n type: string\n label: string\n name: string\n property: { [option: string]: any }\n}\n\nexport type DataItemSpecSet = {\n name: string\n description: string\n specs: DataItemSpec[]\n}\n\nexport type DataItemSpecSetProvider = (dataItem: DataItem) => DataItemSpecSet\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type SelectOption = { text: string; value: string }\nexport type SelectOptions = SelectOption[]\nexport type TypeOptions = {\n options?: SelectOptions\n [prop: string]: any\n}\n\nexport type DataItem = {\n name: string\n description: string\n sequence: number\n tag: string\n type: string\n active: boolean\n options: TypeOptions\n unit: string\n quota: number\n spec: { [useCase: string]: any }\n}\n\nexport type DataSet = {\n name: string\n description: string\n type: 'manual' | 'automatic'\n useCase: string\n active: boolean\n dataItems: DataItem[]\n spec: { [dataItem: string]: { [useCase: string]: any } }\n}\n\nexport type DataItemSpec = {\n type: string\n label: string\n name: string\n property?: { [option: string]: any }\n}\n\nexport type DataItemSpecSet = {\n name: string\n description: string\n help: string\n specs: DataItemSpec[]\n}\n\nexport type DataSample = {\n name: string\n description: string\n data: any\n spec: any\n quota: number\n collectedAt: Date\n}\n\nexport type EvaluationResult = { oos: boolean; ooc: boolean }\n"]}