@operato/dataset 1.0.0-beta.38 → 1.0.0-beta.40
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/CHANGELOG.md +20 -0
- package/dist/src/grist-editor/ox-grist-editor-data-item-spec.js +1 -1
- package/dist/src/grist-editor/ox-grist-editor-data-item-spec.js.map +1 -1
- package/dist/src/grist-editor/ox-popup-data-item-spec.js +3 -2
- package/dist/src/grist-editor/ox-popup-data-item-spec.js.map +1 -1
- package/dist/src/index.d.ts +1 -5
- package/dist/src/index.js +1 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/ox-data-item-spec.d.ts +2 -2
- package/dist/src/ox-data-item-spec.js +1 -1
- package/dist/src/ox-data-item-spec.js.map +1 -1
- package/dist/src/ox-data-ooc-view.js +1 -1
- package/dist/src/ox-data-ooc-view.js.map +1 -1
- package/dist/src/ox-data-sample-view.d.ts +1 -2
- package/dist/src/ox-data-sample-view.js +25 -31
- package/dist/src/ox-data-sample-view.js.map +1 -1
- package/dist/src/types.d.ts +18 -6
- package/dist/src/types.js.map +1 -1
- package/dist/src/usecase/ccp/index.d.ts +1 -0
- package/dist/src/usecase/ccp/index.js +8 -0
- package/dist/src/usecase/ccp/index.js.map +1 -0
- package/dist/src/usecase/ccp/ox-data-use-case-ccp.d.ts +7 -0
- package/dist/src/usecase/ccp/ox-data-use-case-ccp.js +102 -0
- package/dist/src/usecase/ccp/ox-data-use-case-ccp.js.map +1 -0
- package/dist/src/usecase/ccp/ox-input-ccp-limits.d.ts +44 -0
- package/dist/src/usecase/ccp/ox-input-ccp-limits.js +171 -0
- package/dist/src/usecase/ccp/ox-input-ccp-limits.js.map +1 -0
- package/dist/src/usecase/ccp/ox-property-editor-ccp-limits.d.ts +5 -0
- package/dist/src/usecase/ccp/ox-property-editor-ccp-limits.js +24 -0
- package/dist/src/usecase/ccp/ox-property-editor-ccp-limits.js.map +1 -0
- package/dist/src/{ox-data-use-case.d.ts → usecase/ox-data-use-case.d.ts} +5 -5
- package/dist/src/{ox-data-use-case.js → usecase/ox-data-use-case.js} +23 -34
- package/dist/src/usecase/ox-data-use-case.js.map +1 -0
- package/dist/src/usecase/qc/index.d.ts +1 -0
- package/dist/src/usecase/qc/index.js +8 -0
- package/dist/src/usecase/qc/index.js.map +1 -0
- package/dist/src/usecase/qc/ox-data-use-case-qc.d.ts +7 -0
- package/dist/src/usecase/qc/ox-data-use-case-qc.js +55 -0
- package/dist/src/usecase/qc/ox-data-use-case-qc.js.map +1 -0
- package/dist/src/usecase/qc/ox-input-qc-limits.d.ts +44 -0
- package/dist/src/usecase/qc/ox-input-qc-limits.js +171 -0
- package/dist/src/usecase/qc/ox-input-qc-limits.js.map +1 -0
- package/dist/src/usecase/qc/ox-property-editor-qc-limits.d.ts +5 -0
- package/dist/src/usecase/qc/ox-property-editor-qc-limits.js +24 -0
- package/dist/src/usecase/qc/ox-property-editor-qc-limits.js.map +1 -0
- package/dist/stories/ox-data-entry-form.stories.d.ts +19 -0
- package/dist/stories/ox-data-entry-form.stories.js +152 -0
- package/dist/stories/ox-data-entry-form.stories.js.map +1 -0
- package/dist/stories/ox-data-item-spec.stories.d.ts +26 -0
- package/dist/stories/ox-data-item-spec.stories.js +102 -0
- package/dist/stories/ox-data-item-spec.stories.js.map +1 -0
- package/dist/stories/ox-data-ooc-view.stories.d.ts +19 -0
- package/dist/stories/ox-data-ooc-view.stories.js +242 -0
- package/dist/stories/ox-data-ooc-view.stories.js.map +1 -0
- package/dist/stories/ox-data-sample-view.stories.d.ts +19 -0
- package/dist/stories/ox-data-sample-view.stories.js +213 -0
- package/dist/stories/ox-data-sample-view.stories.js.map +1 -0
- package/dist/stories/ox-grist-editor-data-item-spec.stories.d.ts +27 -0
- package/dist/stories/ox-grist-editor-data-item-spec.stories.js +389 -0
- package/dist/stories/ox-grist-editor-data-item-spec.stories.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -12
- package/src/grist-editor/ox-grist-editor-data-item-spec.ts +1 -1
- package/src/grist-editor/ox-popup-data-item-spec.ts +3 -2
- package/src/index.ts +1 -5
- package/src/ox-data-item-spec.ts +3 -3
- package/src/ox-data-ooc-view.ts +1 -1
- package/src/ox-data-sample-view.ts +28 -31
- package/src/types.ts +23 -6
- package/src/usecase/ccp/index.ts +10 -0
- package/src/usecase/ccp/ox-data-use-case-ccp.ts +147 -0
- package/src/usecase/ccp/ox-input-ccp-limits.ts +161 -0
- package/src/usecase/ccp/ox-property-editor-ccp-limits.ts +23 -0
- package/src/{ox-data-use-case.ts → usecase/ox-data-use-case.ts} +28 -40
- package/src/usecase/qc/index.ts +10 -0
- package/src/usecase/qc/ox-data-use-case-qc.ts +72 -0
- package/src/usecase/qc/ox-input-qc-limits.ts +161 -0
- package/src/usecase/qc/ox-property-editor-qc-limits.ts +23 -0
- package/stories/ox-data-entry-form.stories.ts +165 -0
- package/stories/ox-data-item-spec.stories.ts +121 -0
- package/stories/ox-data-ooc-view.stories.ts +256 -0
- package/stories/ox-data-sample-view.stories.ts +227 -0
- package/stories/ox-grist-editor-data-item-spec.stories.ts +409 -0
- package/translations/en.json +26 -8
- package/translations/ko.json +25 -7
- package/translations/ms.json +26 -8
- package/translations/zh.json +25 -7
- package/demo/index.html +0 -28
- package/demo/ox-data-entry-form.html +0 -118
- package/demo/ox-data-item-spec.html +0 -152
- package/demo/ox-data-ooc-view.html +0 -185
- package/demo/ox-data-sample-view.html +0 -150
- package/demo/ox-grist-editor-data-item-spec.html +0 -476
- package/dist/src/ox-data-use-case.js.map +0 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { LitElement } from 'lit';
|
|
5
|
+
export declare enum DataItemType {
|
|
6
|
+
number = "number",
|
|
7
|
+
text = "text",
|
|
8
|
+
boolean = "boolean",
|
|
9
|
+
select = "select",
|
|
10
|
+
file = "file"
|
|
11
|
+
}
|
|
12
|
+
export declare type CcpLimitValue = {
|
|
13
|
+
minimum?: number;
|
|
14
|
+
maximum?: number;
|
|
15
|
+
acceptables?: string[];
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
element for CCP limits
|
|
19
|
+
|
|
20
|
+
Example:
|
|
21
|
+
|
|
22
|
+
<ox-input-ccp-limits
|
|
23
|
+
.value=${value}
|
|
24
|
+
.type=${type}>
|
|
25
|
+
</ox-input-ccp-limits>
|
|
26
|
+
*/
|
|
27
|
+
export declare class OxInputCcpLimits extends LitElement {
|
|
28
|
+
static styles: import("lit").CSSResult;
|
|
29
|
+
value: CcpLimitValue;
|
|
30
|
+
type: DataItemType;
|
|
31
|
+
unit?: string;
|
|
32
|
+
options: {
|
|
33
|
+
options?: {
|
|
34
|
+
text: string;
|
|
35
|
+
value: string;
|
|
36
|
+
}[];
|
|
37
|
+
};
|
|
38
|
+
minimum: HTMLInputElement;
|
|
39
|
+
maximum: HTMLInputElement;
|
|
40
|
+
checkedAll: NodeListOf<HTMLInputElement>;
|
|
41
|
+
firstUpdated(): void;
|
|
42
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
43
|
+
private onChange;
|
|
44
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { __decorate } from "tslib";
|
|
5
|
+
import { css, html, LitElement } from 'lit';
|
|
6
|
+
import { customElement, property, query, queryAll } from 'lit/decorators.js';
|
|
7
|
+
import { i18next } from '@operato/i18n';
|
|
8
|
+
export var DataItemType;
|
|
9
|
+
(function (DataItemType) {
|
|
10
|
+
DataItemType["number"] = "number";
|
|
11
|
+
DataItemType["text"] = "text";
|
|
12
|
+
DataItemType["boolean"] = "boolean";
|
|
13
|
+
DataItemType["select"] = "select";
|
|
14
|
+
DataItemType["file"] = "file";
|
|
15
|
+
})(DataItemType || (DataItemType = {}));
|
|
16
|
+
/**
|
|
17
|
+
element for CCP limits
|
|
18
|
+
|
|
19
|
+
Example:
|
|
20
|
+
|
|
21
|
+
<ox-input-ccp-limits
|
|
22
|
+
.value=${value}
|
|
23
|
+
.type=${type}>
|
|
24
|
+
</ox-input-ccp-limits>
|
|
25
|
+
*/
|
|
26
|
+
let OxInputCcpLimits = class OxInputCcpLimits extends LitElement {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(...arguments);
|
|
29
|
+
this.value = {};
|
|
30
|
+
this.type = DataItemType.number;
|
|
31
|
+
this.options = {};
|
|
32
|
+
}
|
|
33
|
+
firstUpdated() {
|
|
34
|
+
this.renderRoot.addEventListener('change', this.onChange.bind(this));
|
|
35
|
+
}
|
|
36
|
+
render() {
|
|
37
|
+
var _a, _b;
|
|
38
|
+
const { minimum, maximum, acceptables = [] } = this.value || {};
|
|
39
|
+
return html `
|
|
40
|
+
<div>
|
|
41
|
+
${this.type === DataItemType.number
|
|
42
|
+
? html `
|
|
43
|
+
<label>
|
|
44
|
+
<div name>${i18next.t('text.minimum value')}</div>
|
|
45
|
+
<input type="number" name="minimum" .value=${minimum} />
|
|
46
|
+
<div unit>${this.unit}</div>
|
|
47
|
+
</select>
|
|
48
|
+
</label>
|
|
49
|
+
<label>
|
|
50
|
+
<div name>${i18next.t('text.maximum value')}</div>
|
|
51
|
+
<input type="number" name="maximum" .value=${maximum} />
|
|
52
|
+
<div unit>${this.unit}</div>
|
|
53
|
+
</label>
|
|
54
|
+
</div>
|
|
55
|
+
`
|
|
56
|
+
: this.type === DataItemType.select
|
|
57
|
+
? html `
|
|
58
|
+
<!-- <div>Acceptables</div> -->
|
|
59
|
+
${(_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.map(option => html `
|
|
60
|
+
<div>
|
|
61
|
+
<input type="checkbox" data-value=${option.value} ?checked=${acceptables.includes(option.value)} />
|
|
62
|
+
<span>${option.text}</span>
|
|
63
|
+
<span value>(${option.value})</span>
|
|
64
|
+
</div>
|
|
65
|
+
`)}
|
|
66
|
+
</div>
|
|
67
|
+
`
|
|
68
|
+
: html ` <div properties>${i18next.t('text.no properties to set')}</div> `}
|
|
69
|
+
</div>
|
|
70
|
+
`;
|
|
71
|
+
}
|
|
72
|
+
onChange(e) {
|
|
73
|
+
if (this.type === DataItemType.number) {
|
|
74
|
+
this.value = {
|
|
75
|
+
minimum: this.minimum.valueAsNumber,
|
|
76
|
+
maximum: this.maximum.valueAsNumber
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
else if (this.type === DataItemType.select) {
|
|
80
|
+
this.value = {
|
|
81
|
+
acceptables: Array.from(this.checkedAll).map(checked => {
|
|
82
|
+
const x = checked.getAttribute('data-value');
|
|
83
|
+
console.log(x);
|
|
84
|
+
return x;
|
|
85
|
+
})
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.value = {};
|
|
90
|
+
}
|
|
91
|
+
this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }));
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
OxInputCcpLimits.styles = css `
|
|
95
|
+
:host {
|
|
96
|
+
display: flex;
|
|
97
|
+
flex-direction: column;
|
|
98
|
+
align-content: center;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
label {
|
|
102
|
+
margin: 0 var(--margin-default) var(--margin-default) 0;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
label div > * {
|
|
106
|
+
vertical-align: middle;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
button {
|
|
110
|
+
width: 20px;
|
|
111
|
+
text-align: center;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
div[name],
|
|
115
|
+
input[type='checkbox'] + span {
|
|
116
|
+
display: inline-block;
|
|
117
|
+
font: var(--label-font);
|
|
118
|
+
color: var(--label-color);
|
|
119
|
+
text-align: right;
|
|
120
|
+
}
|
|
121
|
+
input,
|
|
122
|
+
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
|
+
input[type='checkbox'] {
|
|
130
|
+
width: initial;
|
|
131
|
+
}
|
|
132
|
+
input[checked] + span {
|
|
133
|
+
font-weight: bold;
|
|
134
|
+
}
|
|
135
|
+
[unit],
|
|
136
|
+
[value] {
|
|
137
|
+
display: inline-block;
|
|
138
|
+
opacity: 0.7;
|
|
139
|
+
font: var(--form-sublabel-font);
|
|
140
|
+
}
|
|
141
|
+
[properties] {
|
|
142
|
+
font: var(--input-field-font);
|
|
143
|
+
color: var(--label-color);
|
|
144
|
+
}
|
|
145
|
+
`;
|
|
146
|
+
__decorate([
|
|
147
|
+
property({ type: Object })
|
|
148
|
+
], OxInputCcpLimits.prototype, "value", void 0);
|
|
149
|
+
__decorate([
|
|
150
|
+
property({ type: String })
|
|
151
|
+
], OxInputCcpLimits.prototype, "type", void 0);
|
|
152
|
+
__decorate([
|
|
153
|
+
property({ type: String })
|
|
154
|
+
], OxInputCcpLimits.prototype, "unit", void 0);
|
|
155
|
+
__decorate([
|
|
156
|
+
property({ type: Array })
|
|
157
|
+
], OxInputCcpLimits.prototype, "options", void 0);
|
|
158
|
+
__decorate([
|
|
159
|
+
query('[name=minimum]')
|
|
160
|
+
], OxInputCcpLimits.prototype, "minimum", void 0);
|
|
161
|
+
__decorate([
|
|
162
|
+
query('[name=maximum]')
|
|
163
|
+
], OxInputCcpLimits.prototype, "maximum", void 0);
|
|
164
|
+
__decorate([
|
|
165
|
+
queryAll('[type=checkbox]:checked')
|
|
166
|
+
], OxInputCcpLimits.prototype, "checkedAll", void 0);
|
|
167
|
+
OxInputCcpLimits = __decorate([
|
|
168
|
+
customElement('ox-input-ccp-limits')
|
|
169
|
+
], OxInputCcpLimits);
|
|
170
|
+
export { OxInputCcpLimits };
|
|
171
|
+
//# sourceMappingURL=ox-input-ccp-limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ox-input-ccp-limits.js","sourceRoot":"","sources":["../../../../src/usecase/ccp/ox-input-ccp-limits.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query, queryAll } from 'lit/decorators.js'\n\nimport { i18next } from '@operato/i18n'\n\nexport enum DataItemType {\n number = 'number',\n text = 'text',\n boolean = 'boolean',\n select = 'select',\n file = 'file'\n}\n\nexport type CcpLimitValue = {\n minimum?: number\n maximum?: number\n acceptables?: string[]\n}\n\n/**\n element for CCP limits\n \n Example:\n \n <ox-input-ccp-limits\n .value=${value}\n .type=${type}>\n </ox-input-ccp-limits>\n */\n@customElement('ox-input-ccp-limits')\nexport class OxInputCcpLimits extends LitElement {\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n align-content: center;\n }\n\n label {\n margin: 0 var(--margin-default) var(--margin-default) 0;\n }\n\n label div > * {\n vertical-align: middle;\n }\n\n button {\n width: 20px;\n text-align: center;\n }\n\n div[name],\n input[type='checkbox'] + span {\n display: inline-block;\n font: var(--label-font);\n color: var(--label-color);\n text-align: right;\n }\n input,\n 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 input[type='checkbox'] {\n width: initial;\n }\n input[checked] + span {\n font-weight: bold;\n }\n [unit],\n [value] {\n display: inline-block;\n opacity: 0.7;\n font: var(--form-sublabel-font);\n }\n [properties] {\n font: var(--input-field-font);\n color: var(--label-color);\n }\n `\n\n @property({ type: Object }) value: CcpLimitValue = {}\n @property({ type: String }) type: DataItemType = DataItemType.number\n @property({ type: String }) unit?: string\n @property({ type: Array }) options: { options?: { text: string; value: string }[] } = {}\n\n @query('[name=minimum]') minimum!: HTMLInputElement\n @query('[name=maximum]') maximum!: HTMLInputElement\n @queryAll('[type=checkbox]:checked') checkedAll!: NodeListOf<HTMLInputElement>\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', this.onChange.bind(this))\n }\n\n render() {\n const { minimum, maximum, acceptables = [] } = this.value || {}\n\n return html`\n <div>\n ${this.type === DataItemType.number\n ? html`\n <label>\n <div name>${i18next.t('text.minimum value')}</div>\n <input type=\"number\" name=\"minimum\" .value=${minimum} />\n <div unit>${this.unit}</div>\n </select>\n </label>\n <label>\n <div name>${i18next.t('text.maximum value')}</div>\n <input type=\"number\" name=\"maximum\" .value=${maximum} />\n <div unit>${this.unit}</div>\n </label>\n </div>\n `\n : this.type === DataItemType.select\n ? html`\n <!-- <div>Acceptables</div> -->\n ${this.options?.options?.map(\n option => html`\n <div>\n <input type=\"checkbox\" data-value=${option.value} ?checked=${acceptables.includes(option.value)} />\n <span>${option.text}</span>\n <span value>(${option.value})</span>\n </div>\n `\n )}\n </div>\n `\n : html` <div properties>${i18next.t('text.no properties to set')}</div> `}\n </div>\n `\n }\n\n private onChange(e: Event) {\n if (this.type === DataItemType.number) {\n this.value = {\n minimum: this.minimum.valueAsNumber,\n maximum: this.maximum.valueAsNumber\n }\n } else if (this.type === DataItemType.select) {\n this.value = {\n acceptables: Array.from(this.checkedAll).map(checked => {\n const x = checked.getAttribute('data-value')!\n console.log(x)\n return x\n })\n }\n } else {\n this.value = {}\n }\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import './ox-input-ccp-limits.js';
|
|
3
|
+
import { html } from 'lit';
|
|
4
|
+
import { customElement } from 'lit/decorators.js';
|
|
5
|
+
import { OxPropertyEditor } from '@operato/property-editor';
|
|
6
|
+
let OxPropertyEditorCcpLimits = class OxPropertyEditorCcpLimits extends OxPropertyEditor {
|
|
7
|
+
editorTemplate() {
|
|
8
|
+
const { type, options, unit } = this.property || {};
|
|
9
|
+
return html `
|
|
10
|
+
<ox-input-ccp-limits
|
|
11
|
+
id="editor"
|
|
12
|
+
.value=${this.value}
|
|
13
|
+
.type=${type}
|
|
14
|
+
.unit=${unit}
|
|
15
|
+
.options=${options}
|
|
16
|
+
></ox-input-ccp-limits>
|
|
17
|
+
`;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
OxPropertyEditorCcpLimits = __decorate([
|
|
21
|
+
customElement('ox-property-editor-ccp-limits')
|
|
22
|
+
], OxPropertyEditorCcpLimits);
|
|
23
|
+
export { OxPropertyEditorCcpLimits };
|
|
24
|
+
//# sourceMappingURL=ox-property-editor-ccp-limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ox-property-editor-ccp-limits.js","sourceRoot":"","sources":["../../../../src/usecase/ccp/ox-property-editor-ccp-limits.ts"],"names":[],"mappings":";AAAA,OAAO,0BAA0B,CAAA;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAG3D,IAAa,yBAAyB,GAAtC,MAAa,yBAA0B,SAAQ,gBAAgB;IAC7D,cAAc;QACZ,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAA;QAEnD,OAAO,IAAI,CAAA;;;iBAGE,IAAI,CAAC,KAAK;gBACX,IAAI;gBACJ,IAAI;mBACD,OAAO;;KAErB,CAAA;IACH,CAAC;CACF,CAAA;AAdY,yBAAyB;IADrC,aAAa,CAAC,+BAA+B,CAAC;GAClC,yBAAyB,CAcrC;SAdY,yBAAyB","sourcesContent":["import './ox-input-ccp-limits.js'\n\nimport { html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { OxPropertyEditor } from '@operato/property-editor'\n\n@customElement('ox-property-editor-ccp-limits')\nexport class OxPropertyEditorCcpLimits extends OxPropertyEditor {\n editorTemplate() {\n const { type, options, unit } = this.property || {}\n\n return html`\n <ox-input-ccp-limits\n id=\"editor\"\n .value=${this.value}\n .type=${type}\n .unit=${unit}\n .options=${options}\n ></ox-input-ccp-limits>\n `\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DataItem,
|
|
1
|
+
import { DataItem, DataSet, DataSpecLimitSet, EvaluationResult, UseCaseDefinition } from '../types';
|
|
2
2
|
export declare abstract class OxDataUseCase {
|
|
3
3
|
static registry: {
|
|
4
4
|
[name: string]: OxDataUseCase;
|
|
@@ -7,10 +7,10 @@ export declare abstract class OxDataUseCase {
|
|
|
7
7
|
static getUseCaseNames(): string[];
|
|
8
8
|
static getUseCases(): OxDataUseCase[];
|
|
9
9
|
static getUseCase(name: string): OxDataUseCase | undefined;
|
|
10
|
-
static elaborateDataItemSpec(
|
|
11
|
-
static evaluate(dataSet: DataSet, dataItems: DataItem[], data: any): EvaluationResult
|
|
12
|
-
static evaluateItem(
|
|
10
|
+
static elaborateDataItemSpec(spec: DataSpecLimitSet): string;
|
|
11
|
+
static evaluate(dataSet: DataSet, dataItems: DataItem[], data: any): EvaluationResult;
|
|
12
|
+
static evaluateItem(spec: DataSpecLimitSet, values: any | any[]): EvaluationResult | undefined;
|
|
13
13
|
abstract evaluate(specs: any, values: any[]): EvaluationResult | undefined;
|
|
14
14
|
abstract elaborateUseCaseSpec(spec: any): string | undefined;
|
|
15
|
-
abstract getSpecification(dataItem: DataItem):
|
|
15
|
+
abstract getSpecification(dataItem: DataItem): UseCaseDefinition;
|
|
16
16
|
}
|
|
@@ -11,29 +11,25 @@ export class OxDataUseCase {
|
|
|
11
11
|
static getUseCase(name) {
|
|
12
12
|
return OxDataUseCase.registry[name];
|
|
13
13
|
}
|
|
14
|
-
static elaborateDataItemSpec(
|
|
15
|
-
|
|
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);
|
|
14
|
+
static elaborateDataItemSpec(spec) {
|
|
15
|
+
const useCaseNames = Object.keys(spec || {});
|
|
21
16
|
var texts = [];
|
|
22
|
-
|
|
23
|
-
const useCase =
|
|
17
|
+
useCaseNames.forEach(useCaseName => {
|
|
18
|
+
const useCase = OxDataUseCase.getUseCase(useCaseName);
|
|
24
19
|
if (!useCase) {
|
|
25
|
-
|
|
20
|
+
return;
|
|
26
21
|
}
|
|
27
|
-
const
|
|
28
|
-
if (!
|
|
29
|
-
|
|
22
|
+
const limits = spec === null || spec === void 0 ? void 0 : spec[useCaseName];
|
|
23
|
+
if (!limits) {
|
|
24
|
+
return;
|
|
30
25
|
}
|
|
31
|
-
const result = useCase.elaborateUseCaseSpec(
|
|
26
|
+
const result = useCase.elaborateUseCaseSpec(limits);
|
|
32
27
|
if (!result) {
|
|
33
|
-
|
|
28
|
+
return;
|
|
34
29
|
}
|
|
30
|
+
texts.push(`[ ${useCaseName} ]`);
|
|
35
31
|
texts.push(result);
|
|
36
|
-
}
|
|
32
|
+
});
|
|
37
33
|
return texts.join('\n');
|
|
38
34
|
}
|
|
39
35
|
static evaluate(dataSet, dataItems, data) {
|
|
@@ -64,7 +60,7 @@ export class OxDataUseCase {
|
|
|
64
60
|
if (!specs) {
|
|
65
61
|
continue;
|
|
66
62
|
}
|
|
67
|
-
const result = useCase
|
|
63
|
+
const result = useCase.evaluate(specs, values);
|
|
68
64
|
if (result) {
|
|
69
65
|
ooc || (ooc = result.ooc);
|
|
70
66
|
oos || (oos = result.oos);
|
|
@@ -73,37 +69,30 @@ export class OxDataUseCase {
|
|
|
73
69
|
}
|
|
74
70
|
return { ooc, oos };
|
|
75
71
|
}
|
|
76
|
-
static evaluateItem(
|
|
77
|
-
var _a;
|
|
72
|
+
static evaluateItem(spec, values) {
|
|
78
73
|
var ooc = false;
|
|
79
74
|
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
75
|
if (typeof values === 'undefined') {
|
|
90
76
|
return; // TODO what if in case no value ?
|
|
91
77
|
}
|
|
92
78
|
if (!(values instanceof Array)) {
|
|
93
79
|
values = [values];
|
|
94
80
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
81
|
+
const useCaseNames = Object.keys(spec || {});
|
|
82
|
+
if (useCaseNames.length === 0) {
|
|
83
|
+
return { ooc, oos };
|
|
84
|
+
}
|
|
85
|
+
useCaseNames.forEach(useCaseName => {
|
|
86
|
+
const useCase = OxDataUseCase.getUseCase(useCaseName);
|
|
87
|
+
if (!useCase) {
|
|
99
88
|
return;
|
|
100
89
|
}
|
|
101
|
-
const result = useCase === null || useCase === void 0 ? void 0 : useCase.evaluate(
|
|
90
|
+
const result = useCase === null || useCase === void 0 ? void 0 : useCase.evaluate(spec[useCaseName], values);
|
|
102
91
|
if (result) {
|
|
103
92
|
ooc || (ooc = result.ooc);
|
|
104
93
|
oos || (oos = result.oos);
|
|
105
94
|
}
|
|
106
|
-
}
|
|
95
|
+
});
|
|
107
96
|
return { ooc, oos };
|
|
108
97
|
}
|
|
109
98
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ox-data-use-case.js","sourceRoot":"","sources":["../../../src/usecase/ox-data-use-case.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,aAAa;IAG1B,MAAM,CAAC,eAAe,CAAC,IAAY,EAAE,OAAsB;QAChE,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;IACxC,CAAC;IAEM,MAAM,CAAC,eAAe;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC9C,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,IAAY;QACnC,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,IAAsB;QACxD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAE5C,IAAI,KAAK,GAAa,EAAE,CAAA;QAExB,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YACjC,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;YACrD,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAM;aACP;YAED,MAAM,MAAM,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,WAAW,CAAC,CAAA;YAClC,IAAI,CAAC,MAAM,EAAE;gBACX,OAAM;aACP;YAED,MAAM,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;YACnD,IAAI,CAAC,MAAM,EAAE;gBACX,OAAM;aACP;YAED,KAAK,CAAC,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,CAAA;YAChC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAgB,EAAE,SAAqB,EAAE,IAAS;;QACvE,IAAI,GAAG,GAAG,KAAK,CAAA;QACf,IAAI,GAAG,GAAG,KAAK,CAAA;QAEf,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;SACpB;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;QACtF,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAEpH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAA;YAChC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;gBACnB,SAAQ;aACT;YAED,IAAI,MAAM,GAAgB,IAAI,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjC,SAAQ,CAAC,kCAAkC;aAC5C;YAED,IAAI,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,EAAE;gBAC9B,MAAM,GAAG,CAAC,MAAM,CAAC,CAAA;aAClB;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;gBAE3B,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,IAAI,0CAAG,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC9C,IAAI,CAAC,KAAK,EAAE;oBACV,SAAQ;iBACT;gBAED,MAAM,MAAM,GAAG,OAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBAE/C,IAAI,MAAM,EAAE;oBACV,GAAG,KAAH,GAAG,GAAK,MAAM,CAAC,GAAG,EAAA;oBAClB,GAAG,KAAH,GAAG,GAAK,MAAM,CAAC,GAAG,EAAA;iBACnB;aACF;SACF;QAED,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IACrB,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,IAAsB,EAAE,MAAmB;QACpE,IAAI,GAAG,GAAG,KAAK,CAAA;QACf,IAAI,GAAG,GAAG,KAAK,CAAA;QAEf,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,OAAM,CAAC,kCAAkC;SAC1C;QAED,IAAI,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,EAAE;YAC9B,MAAM,GAAG,CAAC,MAAM,CAAC,CAAA;SAClB;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAE5C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;SACpB;QAED,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YACjC,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;YACrD,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAM;aACP;YAED,MAAM,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAA;YAE3D,IAAI,MAAM,EAAE;gBACV,GAAG,KAAH,GAAG,GAAK,MAAM,CAAC,GAAG,EAAA;gBAClB,GAAG,KAAH,GAAG,GAAK,MAAM,CAAC,GAAG,EAAA;aACnB;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IACrB,CAAC;;AA9HM,sBAAQ,GAAsC,EAAE,CAAA","sourcesContent":["import { DataItem, DataSet, DataSpecLimitSet, EvaluationResult, UseCaseDefinition } 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(spec: DataSpecLimitSet): string {\n const useCaseNames = Object.keys(spec || {})\n\n var texts: string[] = []\n\n useCaseNames.forEach(useCaseName => {\n const useCase = OxDataUseCase.getUseCase(useCaseName)\n if (!useCase) {\n return\n }\n\n const limits = spec?.[useCaseName]\n if (!limits) {\n return\n }\n\n const result = useCase.elaborateUseCaseSpec(limits)\n if (!result) {\n return\n }\n\n texts.push(`[ ${useCaseName} ]`)\n texts.push(result)\n })\n\n return texts.join('\\n')\n }\n\n public static evaluate(dataSet: DataSet, dataItems: DataItem[], data: any): EvaluationResult {\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(spec: DataSpecLimitSet, values: any | any[]): EvaluationResult | undefined {\n var ooc = false\n var oos = false\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 const useCaseNames = Object.keys(spec || {})\n\n if (useCaseNames.length === 0) {\n return { ooc, oos }\n }\n\n useCaseNames.forEach(useCaseName => {\n const useCase = OxDataUseCase.getUseCase(useCaseName)\n if (!useCase) {\n return\n }\n\n const result = useCase?.evaluate(spec[useCaseName], 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): UseCaseDefinition\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/* Here, only the common module of client and server is imported/exported. Be careful not to use a module dedicated to client or server. */
|
|
2
|
+
import { OxDataUseCase } from '../ox-data-use-case.js';
|
|
3
|
+
import { OxDataUseCaseQC } from './ox-data-use-case-qc.js';
|
|
4
|
+
// OxPropertyEditor.register({
|
|
5
|
+
// 'qc-limits': 'ox-property-editor-qc-limits'
|
|
6
|
+
// })
|
|
7
|
+
OxDataUseCase.registerUseCase('QC', new OxDataUseCaseQC());
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/usecase/qc/index.ts"],"names":[],"mappings":"AAAA,2IAA2I;AAE3I,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,8BAA8B;AAC9B,gDAAgD;AAChD,KAAK;AAEL,aAAa,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,eAAe,EAAE,CAAC,CAAA","sourcesContent":["/* Here, only the common module of client and server is imported/exported. Be careful not to use a module dedicated to client or server. */\n\nimport { OxDataUseCase } from '../ox-data-use-case.js'\nimport { OxDataUseCaseQC } from './ox-data-use-case-qc.js'\n\n// OxPropertyEditor.register({\n// 'qc-limits': 'ox-property-editor-qc-limits'\n// })\n\nOxDataUseCase.registerUseCase('QC', new OxDataUseCaseQC())\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DataItem, EvaluationResult, UseCaseDefinition } from '../../types.js';
|
|
2
|
+
import { OxDataUseCase } from '../ox-data-use-case.js';
|
|
3
|
+
export declare class OxDataUseCaseQC implements OxDataUseCase {
|
|
4
|
+
getSpecification(dataItem: DataItem): UseCaseDefinition;
|
|
5
|
+
evaluate(spec: any, values: any[]): EvaluationResult;
|
|
6
|
+
elaborateUseCaseSpec(limits: any): string | undefined;
|
|
7
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import i18next from 'i18next'; // Since this is a common module, @operato/i18n was deliberately avoided.
|
|
2
|
+
export class OxDataUseCaseQC {
|
|
3
|
+
getSpecification(dataItem) {
|
|
4
|
+
return {
|
|
5
|
+
name: 'QC',
|
|
6
|
+
description: 'Quality Control Data Spec',
|
|
7
|
+
help: '',
|
|
8
|
+
specs: [
|
|
9
|
+
{
|
|
10
|
+
type: 'qc-limits' /* 'A value which seperates acceptability from unacceptability' */,
|
|
11
|
+
label: 'pass-limits',
|
|
12
|
+
name: 'passLimits',
|
|
13
|
+
property: dataItem
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
evaluate(spec, values) {
|
|
19
|
+
const { minimum, maximum, acceptables } = spec['passLimits'];
|
|
20
|
+
for (let i = 0; i < values.length; i++) {
|
|
21
|
+
const value = values[i];
|
|
22
|
+
if (typeof minimum !== 'undefined' && value < minimum) {
|
|
23
|
+
return { oos: true, ooc: true };
|
|
24
|
+
}
|
|
25
|
+
if (typeof maximum !== 'undefined' && value > maximum) {
|
|
26
|
+
return { oos: true, ooc: true };
|
|
27
|
+
}
|
|
28
|
+
if (typeof acceptables !== 'undefined' && !acceptables.includes(value)) {
|
|
29
|
+
return { oos: true, ooc: true };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return { oos: false, ooc: false };
|
|
33
|
+
}
|
|
34
|
+
elaborateUseCaseSpec(limits) {
|
|
35
|
+
if (!limits) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
var text = '';
|
|
39
|
+
const { minimum, maximum, acceptables } = limits['passLimits'] || {};
|
|
40
|
+
if (minimum !== undefined || maximum !== undefined || acceptables !== undefined) {
|
|
41
|
+
text += `${i18next.t('label.pass-limits')}\n`;
|
|
42
|
+
}
|
|
43
|
+
if (minimum !== undefined) {
|
|
44
|
+
text += `\t${i18next.t('label.minimum value')} : ${minimum}\n`;
|
|
45
|
+
}
|
|
46
|
+
if (maximum !== undefined) {
|
|
47
|
+
text += `\t${i18next.t('label.maximum value')} : ${maximum}\n`;
|
|
48
|
+
}
|
|
49
|
+
if (acceptables !== undefined) {
|
|
50
|
+
text += `\t${i18next.t('label.acceptables')} : ${acceptables instanceof Array ? acceptables.join(', ') : acceptables}\n`;
|
|
51
|
+
}
|
|
52
|
+
return text;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=ox-data-use-case-qc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ox-data-use-case-qc.js","sourceRoot":"","sources":["../../../../src/usecase/qc/ox-data-use-case-qc.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA,CAAC,yEAAyE;AAKvG,MAAM,OAAO,eAAe;IAC1B,gBAAgB,CAAC,QAAkB;QACjC,OAAO;YACL,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,2BAA2B;YACxC,IAAI,EAAE,EAAE;YACR,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,WAAW,CAAC,kEAAkE;oBACpF,KAAK,EAAE,aAAa;oBACpB,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,QAAQ;iBACnB;aACF;SACF,CAAA;IACH,CAAC;IAED,QAAQ,CAAC,IAAS,EAAE,MAAa;QAC/B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;QAE5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YAEvB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,KAAK,GAAG,OAAO,EAAE;gBACrD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;aAChC;YAED,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,KAAK,GAAG,OAAO,EAAE;gBACrD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;aAChC;YAED,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACtE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;aAChC;SACF;QAED,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;IACnC,CAAC;IAED,oBAAoB,CAAC,MAAW;QAC9B,IAAI,CAAC,MAAM,EAAE;YACX,OAAM;SACP;QAED,IAAI,IAAI,GAAG,EAAE,CAAA;QAEb,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;QAEpE,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE;YAC/E,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAA;SAC9C;QAED,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,OAAO,IAAI,CAAA;SAC/D;QACD,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,OAAO,IAAI,CAAA;SAC/D;QACD,IAAI,WAAW,KAAK,SAAS,EAAE;YAC7B,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,MACzC,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAC1D,IAAI,CAAA;SACL;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF","sourcesContent":["import i18next from 'i18next' // Since this is a common module, @operato/i18n was deliberately avoided.\n\nimport { DataItem, EvaluationResult, UseCaseDefinition } from '../../types.js'\nimport { OxDataUseCase } from '../ox-data-use-case.js'\n\nexport class OxDataUseCaseQC implements OxDataUseCase {\n getSpecification(dataItem: DataItem): UseCaseDefinition {\n return {\n name: 'QC',\n description: 'Quality Control Data Spec',\n help: '',\n specs: [\n {\n type: 'qc-limits' /* 'A value which seperates acceptability from unacceptability' */,\n label: 'pass-limits',\n name: 'passLimits',\n property: dataItem\n }\n ]\n }\n }\n\n evaluate(spec: any, values: any[]): EvaluationResult {\n const { minimum, maximum, acceptables } = spec['passLimits']\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i]\n\n if (typeof minimum !== 'undefined' && value < minimum) {\n return { oos: true, ooc: true }\n }\n\n if (typeof maximum !== 'undefined' && value > maximum) {\n return { oos: true, ooc: true }\n }\n\n if (typeof acceptables !== 'undefined' && !acceptables.includes(value)) {\n return { oos: true, ooc: true }\n }\n }\n\n return { oos: false, ooc: false }\n }\n\n elaborateUseCaseSpec(limits: any): string | undefined {\n if (!limits) {\n return\n }\n\n var text = ''\n\n const { minimum, maximum, acceptables } = limits['passLimits'] || {}\n\n if (minimum !== undefined || maximum !== undefined || acceptables !== undefined) {\n text += `${i18next.t('label.pass-limits')}\\n`\n }\n\n if (minimum !== undefined) {\n text += `\\t${i18next.t('label.minimum value')} : ${minimum}\\n`\n }\n if (maximum !== undefined) {\n text += `\\t${i18next.t('label.maximum value')} : ${maximum}\\n`\n }\n if (acceptables !== undefined) {\n text += `\\t${i18next.t('label.acceptables')} : ${\n acceptables instanceof Array ? acceptables.join(', ') : acceptables\n }\\n`\n }\n\n return text\n }\n}\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { LitElement } from 'lit';
|
|
5
|
+
export declare enum DataItemType {
|
|
6
|
+
number = "number",
|
|
7
|
+
text = "text",
|
|
8
|
+
boolean = "boolean",
|
|
9
|
+
select = "select",
|
|
10
|
+
file = "file"
|
|
11
|
+
}
|
|
12
|
+
export declare type QcLimitValue = {
|
|
13
|
+
minimum?: number;
|
|
14
|
+
maximum?: number;
|
|
15
|
+
acceptables?: string[];
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
element for QC limits
|
|
19
|
+
|
|
20
|
+
Example:
|
|
21
|
+
|
|
22
|
+
<ox-input-qc-limits
|
|
23
|
+
.value=${value}
|
|
24
|
+
.type=${type}>
|
|
25
|
+
</ox-input-qc-limits>
|
|
26
|
+
*/
|
|
27
|
+
export declare class OxInputQcLimits extends LitElement {
|
|
28
|
+
static styles: import("lit").CSSResult;
|
|
29
|
+
value: QcLimitValue;
|
|
30
|
+
type: DataItemType;
|
|
31
|
+
unit?: string;
|
|
32
|
+
options: {
|
|
33
|
+
options?: {
|
|
34
|
+
text: string;
|
|
35
|
+
value: string;
|
|
36
|
+
}[];
|
|
37
|
+
};
|
|
38
|
+
minimum: HTMLInputElement;
|
|
39
|
+
maximum: HTMLInputElement;
|
|
40
|
+
checkedAll: NodeListOf<HTMLInputElement>;
|
|
41
|
+
firstUpdated(): void;
|
|
42
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
43
|
+
private onChange;
|
|
44
|
+
}
|