@operato/dataset 7.1.31 → 7.1.32

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 (50) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/tsconfig.tsbuildinfo +1 -1
  3. package/package.json +12 -12
  4. package/.editorconfig +0 -29
  5. package/.storybook/main.js +0 -3
  6. package/.storybook/preview.js +0 -52
  7. package/.storybook/server.mjs +0 -8
  8. package/demo/favicon.ico +0 -0
  9. package/demo/index.html +0 -349
  10. package/demo/ox-data-ooc-brief-view-test.html +0 -349
  11. package/src/grist-editor/index.ts +0 -10
  12. package/src/grist-editor/ox-grist-editor-data-item-spec.ts +0 -93
  13. package/src/grist-editor/ox-popup-data-item-spec.ts +0 -93
  14. package/src/index.ts +0 -2
  15. package/src/ox-data-entry-form.ts +0 -303
  16. package/src/ox-data-entry-subgroup-form.ts +0 -157
  17. package/src/ox-data-entry-subgroup-view.ts +0 -221
  18. package/src/ox-data-entry-view.ts +0 -241
  19. package/src/ox-data-item-spec.ts +0 -131
  20. package/src/ox-data-ooc-badge.ts +0 -73
  21. package/src/ox-data-ooc-brief-view.ts +0 -43
  22. package/src/ox-data-ooc-correction-part.ts +0 -107
  23. package/src/ox-data-ooc-history.ts +0 -74
  24. package/src/ox-data-ooc-view.ts +0 -51
  25. package/src/ox-data-sample-subgroup-view.ts +0 -210
  26. package/src/ox-data-sample-view.ts +0 -271
  27. package/src/ox-data-summary-view.ts +0 -198
  28. package/src/types.ts +0 -178
  29. package/src/usecase/ccp/index.ts +0 -10
  30. package/src/usecase/ccp/ox-data-use-case-ccp.ts +0 -147
  31. package/src/usecase/ccp/ox-input-ccp-limits.ts +0 -184
  32. package/src/usecase/ccp/ox-property-editor-ccp-limits.ts +0 -23
  33. package/src/usecase/ox-data-use-case.ts +0 -178
  34. package/src/usecase/qc/index.ts +0 -10
  35. package/src/usecase/qc/ox-data-use-case-qc.ts +0 -76
  36. package/src/usecase/qc/ox-input-qc-limits.ts +0 -183
  37. package/src/usecase/qc/ox-property-editor-qc-limits.ts +0 -23
  38. package/src/usecase/spc/index.ts +0 -10
  39. package/src/usecase/spc/ox-data-use-case-spc.ts +0 -147
  40. package/src/usecase/spc/ox-input-spc-limits.ts +0 -184
  41. package/src/usecase/spc/ox-property-editor-spc-limits.ts +0 -23
  42. package/stories/ox-data-entry-form.stories.ts +0 -253
  43. package/stories/ox-data-item-spec.stories.ts +0 -257
  44. package/stories/ox-data-ooc-brief-view.stories.ts +0 -333
  45. package/stories/ox-data-ooc-view.stories.ts +0 -327
  46. package/stories/ox-data-sample-view.stories.ts +0 -313
  47. package/stories/ox-grist-editor-data-item-spec.stories.ts +0 -412
  48. package/tsconfig.json +0 -24
  49. package/web-dev-server.config.mjs +0 -27
  50. package/web-test-runner.config.mjs +0 -41
@@ -1,184 +0,0 @@
1
- /**
2
- * @license Copyright © HatioLab Inc. All rights reserved.
3
- */
4
-
5
- import { css, html, LitElement } from 'lit'
6
- import { customElement, property, query, queryAll } from 'lit/decorators.js'
7
-
8
- import { i18next } from '@operato/i18n'
9
-
10
- export enum DataItemType {
11
- number = 'number',
12
- text = 'text',
13
- boolean = 'boolean',
14
- select = 'select',
15
- radio = 'radio',
16
- file = 'file',
17
- signature = 'signature'
18
- }
19
-
20
- export type SpcLimitValue = {
21
- minimum?: number
22
- maximum?: number
23
- acceptables?: string[] | boolean[]
24
- }
25
-
26
- /**
27
- element for SPC limits
28
-
29
- Example:
30
-
31
- <ox-input-spc-limits
32
- .value=${value}
33
- .type=${type}>
34
- </ox-input-spc-limits>
35
- */
36
- @customElement('ox-input-spc-limits')
37
- export class OxInputSpcLimits extends LitElement {
38
- static styles = css`
39
- :host {
40
- display: flex;
41
- flex-direction: column;
42
- align-content: center;
43
- }
44
-
45
- label {
46
- margin: 0 var(--margin-default) var(--margin-default) 0;
47
- }
48
-
49
- label div > * {
50
- vertical-align: middle;
51
- }
52
-
53
- button {
54
- width: 20px;
55
- text-align: center;
56
- }
57
-
58
- div[name],
59
- input[type='checkbox'] + span {
60
- display: inline-block;
61
- font: var(--label-font);
62
- color: var(--label-color, var(--md-sys-color-on-surface));
63
- text-align: right;
64
- }
65
- input,
66
- select {
67
- border: var(--input-field-border);
68
- border-radius: var(--input-field-border-radius);
69
- padding: var(--input-field-padding);
70
- font: var(--input-field-font);
71
- }
72
-
73
- input[type='checkbox'] {
74
- width: initial;
75
- }
76
- input[checked] + span {
77
- font-weight: bold;
78
- }
79
- [unit],
80
- [value] {
81
- display: inline-block;
82
- opacity: 0.7;
83
- font: var(--form-sublabel-font);
84
- }
85
- [properties] {
86
- font: var(--input-field-font);
87
- color: var(--label-color, var(--md-sys-color-on-surface));
88
- }
89
- `
90
-
91
- @property({ type: Object }) value: SpcLimitValue = {}
92
- @property({ type: String }) type: DataItemType = DataItemType.number
93
- @property({ type: String }) unit?: string
94
- @property({ type: Object }) options: { options?: { text: string; value: string }[] } = {}
95
-
96
- @query('[name=minimum]') minimum!: HTMLInputElement
97
- @query('[name=maximum]') maximum!: HTMLInputElement
98
- @queryAll('[type=checkbox]:checked') checkedAll!: NodeListOf<HTMLInputElement>
99
-
100
- firstUpdated() {
101
- this.renderRoot.addEventListener('change', this.onChange.bind(this))
102
- }
103
-
104
- render() {
105
- const { minimum, maximum, acceptables = [] } = this.value || {}
106
-
107
- return html`
108
- <div>
109
- ${this.type === DataItemType.number
110
- ? html`
111
- <label>
112
- <div name>${i18next.t('text.minimum value')}</div>
113
- <input type="number" name="minimum" .value=${String(minimum)} />
114
- <div unit>${this.unit}</div>
115
- </select>
116
- </label>
117
- <label>
118
- <div name>${i18next.t('text.maximum value')}</div>
119
- <input type="number" name="maximum" .value=${String(maximum)} />
120
- <div unit>${this.unit}</div>
121
- </label>
122
- `
123
- : this.type === DataItemType.select
124
- ? html`
125
- <!-- <div>Acceptables</div> -->
126
- ${this.options?.options?.map(
127
- option => html`
128
- <div>
129
- <input
130
- type="checkbox"
131
- data-value=${option.value}
132
- ?checked=${(acceptables as string[]).includes(option.value)}
133
- />
134
- <span>${option.text}</span>
135
- <span value>(${option.value})</span>
136
- </div>
137
- `
138
- )}
139
- `
140
- : this.type === DataItemType.boolean
141
- ? html`
142
- <div>
143
- <input type="checkbox" data-value=${true} ?checked=${(acceptables as boolean[]).includes(true)} />
144
- <span value>true</span>
145
- </div>
146
- <div>
147
- <input type="checkbox" data-value=${false} ?checked=${(acceptables as boolean[]).includes(false)} />
148
- <span value>false</span>
149
- </div>
150
- `
151
- : html` <div properties>${i18next.t('text.no properties to set')}</div> `}
152
- </div>
153
- `
154
- }
155
-
156
- private onChange(e: Event) {
157
- if (this.type === DataItemType.number) {
158
- this.value = {
159
- minimum: this.minimum.valueAsNumber,
160
- maximum: this.maximum.valueAsNumber
161
- }
162
- } else if (this.type === DataItemType.select) {
163
- this.value = {
164
- acceptables: Array.from(this.checkedAll).map(checked => {
165
- const x = checked.getAttribute('data-value')!
166
- console.log(x)
167
- return x
168
- })
169
- }
170
- } else if (this.type === DataItemType.boolean) {
171
- this.value = {
172
- acceptables: Array.from(this.checkedAll).map(checked => {
173
- const x = checked.getAttribute('data-value')! === 'true'
174
- console.log(x)
175
- return x
176
- })
177
- }
178
- } else {
179
- this.value = {}
180
- }
181
-
182
- this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))
183
- }
184
- }
@@ -1,23 +0,0 @@
1
- import './ox-input-spc-limits.js'
2
-
3
- import { html, TemplateResult } from 'lit'
4
- import { customElement } from 'lit/decorators.js'
5
-
6
- import { OxPropertyEditor, PropertySpec } from '@operato/property-editor'
7
-
8
- @customElement('ox-property-editor-spc-limits')
9
- export class OxPropertyEditorSpcLimits extends OxPropertyEditor {
10
- editorTemplate(value: any, spec: PropertySpec): TemplateResult {
11
- const { type, options, unit } = spec.property || {}
12
-
13
- return html`
14
- <ox-input-spc-limits
15
- id="editor"
16
- .value=${value}
17
- .type=${type}
18
- .unit=${unit}
19
- .options=${options}
20
- ></ox-input-spc-limits>
21
- `
22
- }
23
- }
@@ -1,253 +0,0 @@
1
- import '@operato/i18n'
2
- import '../src/ox-data-entry-form.js'
3
- import '../src/usecase/ccp' /* register usecase CCP */
4
- import '@material/web/icon/icon.js'
5
-
6
- import { html, TemplateResult } from 'lit'
7
-
8
- export default {
9
- title: 'ox-data-entry-form',
10
- component: 'ox-data-entry-form',
11
- argTypes: {}
12
- }
13
-
14
- interface Story<T> {
15
- (args: T): TemplateResult
16
- args?: Partial<T>
17
- argTypes?: Record<string, unknown>
18
- }
19
-
20
- interface ArgTypes {}
21
-
22
- const dataSet = {
23
- name: 'sample',
24
- description: 'sample description',
25
- useCase: 'CCP',
26
- dataItems: [
27
- {
28
- name: '창고 온도',
29
- description: '창고 온도는 섭씨 0도 이하로 유지되어야 합니다.',
30
- sequence: 1,
31
- tag: 'temp',
32
- group: '측정데이타',
33
- type: 'number',
34
- quota: 1,
35
- active: true,
36
- unit: '℃',
37
- spec: {
38
- CCP: {
39
- criticalLimits: {
40
- minimum: 100,
41
- maximum: 200
42
- },
43
- targetLimits: {
44
- minimum: 120,
45
- maximum: 180
46
- }
47
- }
48
- }
49
- },
50
- {
51
- name: '창고 습도',
52
- description: '창고 습도는 30% 이하로 유지되어야 합니다.',
53
- sequence: 2,
54
- tag: 'humid',
55
- group: '측정데이타',
56
- type: 'number',
57
- quota: 5,
58
- active: true,
59
- unit: '%',
60
- spec: {
61
- CCP: {
62
- criticalLimits: {
63
- minimum: 10,
64
- maximum: 50
65
- },
66
- targetLimits: {
67
- minimum: 20,
68
- maximum: 40
69
- }
70
- }
71
- }
72
- },
73
- {
74
- name: '육안 검사',
75
- description: '육안 검사는 포장전 30분 내로 실행되어야 합니다.',
76
- sequence: 3,
77
- tag: 'inspection',
78
- group: '측정데이타',
79
- type: 'boolean',
80
- quota: 3,
81
- active: true,
82
- spec: {
83
- CCP: {
84
- criticalLimits: {
85
- acceptables: true
86
- },
87
- targetLimits: {
88
- acceptables: true
89
- }
90
- }
91
- }
92
- },
93
- {
94
- name: '품평',
95
- description: '품평은 최우수/우수/보통/미달을 포함하여 간단히 평가.',
96
- sequence: 4,
97
- tag: 'evaluation',
98
- group: '측정데이타',
99
- type: 'select',
100
- options: {
101
- options: [
102
- { text: '최우수', value: '최우수' },
103
- { text: '우수', value: '우수' },
104
- { text: '보통', value: '보통' },
105
- { text: '미달', value: '미달' },
106
- { text: '등외', value: '등외' }
107
- ]
108
- },
109
- quota: 3,
110
- active: true,
111
- spec: {
112
- CCP: {
113
- criticalLimits: {
114
- acceptables: ['최우수', '우수', '보통']
115
- },
116
- targetLimits: {
117
- acceptables: ['최우수', '우수']
118
- }
119
- }
120
- }
121
- },
122
- {
123
- name: '서명',
124
- description: '품평가 서명.',
125
- sequence: 4,
126
- tag: 'sign',
127
- group: '측정데이타',
128
- type: 'signature',
129
- quota: 3,
130
- active: true
131
- },
132
- {
133
- name: '코멘트',
134
- description: '특이사항을 기록함.',
135
- sequence: 4,
136
- tag: 'comment',
137
- type: 'string',
138
- quota: 1,
139
- active: true
140
- },
141
- {
142
- name: '라디오',
143
- description: '라디오 그룹',
144
-
145
- group: '측정데이타',
146
- sequence: 5,
147
- tag: 'check1',
148
- type: 'radio',
149
- options: {
150
- options: [
151
- {
152
- text: '예',
153
- value: 'Y'
154
- },
155
- {
156
- text: '아니오',
157
- value: 'N'
158
- }
159
- ]
160
- },
161
- quota: 3,
162
- active: true
163
- },
164
- {
165
- name: '라디오2',
166
- description: '라디오 그룹2',
167
- sequence: 5,
168
- tag: 'check2',
169
- type: 'radio',
170
- options: {
171
- options: [
172
- {
173
- text: '예',
174
- value: 'Y'
175
- },
176
- {
177
- text: '아니오',
178
- value: 'N'
179
- }
180
- ]
181
- },
182
- quota: 1,
183
- active: true
184
- },
185
- {
186
- name: '첨부파일',
187
- description: '참조 첨부 파일.',
188
- sequence: 4,
189
- tag: 'attachment',
190
- type: 'file',
191
- quota: 1,
192
- active: true
193
- },
194
- {
195
- name: '서명',
196
- description: '서명',
197
- sequence: 5,
198
- tag: 'signature',
199
- type: 'signature',
200
- quota: 1,
201
- active: true
202
- }
203
- ]
204
- }
205
-
206
- var value = {
207
- temp: 1000,
208
- humid: [20, 23, 21, 26, 27],
209
- inspection: [true, false, true],
210
- evaluation: ['최우수', '보통', '우수'],
211
- comment: '이것이 코멘트입니다.',
212
- signature:
213
- 'data:image/png;base64,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'
214
- }
215
-
216
- const Template: Story<ArgTypes> = ({}: ArgTypes) => html`
217
- <link
218
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
219
- rel="stylesheet"
220
- />
221
- <link
222
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
223
- rel="stylesheet"
224
- />
225
- <link
226
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
227
- rel="stylesheet"
228
- />
229
-
230
- <style>
231
- body {
232
- }
233
- </style>
234
-
235
- <link href="/themes/app-theme.css" rel="stylesheet" />
236
- <link href="/themes/light.css" rel="stylesheet" />
237
- <link href="/themes/dark.css" rel="stylesheet" />
238
- <link href="/themes/spacing.css" rel="stylesheet" />
239
- <link href="/themes/grist-theme.css" rel="stylesheet" />
240
- <link href="/themes/form-theme.css" rel="stylesheet" />
241
-
242
- <ox-data-entry-form
243
- .dataSet=${dataSet}
244
- .value=${value}
245
- @change=${(e: CustomEvent) => {
246
- value = e.detail
247
- console.log('change', value)
248
- }}
249
- ></ox-data-entry-form>
250
- `
251
-
252
- export const Regular = Template.bind({})
253
- Regular.args = {}