@operato/dataset 8.0.0-beta.6 → 8.0.1

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 (30) hide show
  1. package/CHANGELOG.md +37 -165
  2. package/dist/src/ox-data-entry-form.d.ts +2 -3
  3. package/dist/src/ox-data-entry-form.js +141 -66
  4. package/dist/src/ox-data-entry-form.js.map +1 -1
  5. package/dist/src/ox-data-entry-subgroup-form.d.ts +1 -23
  6. package/dist/src/ox-data-entry-subgroup-form.js +44 -20
  7. package/dist/src/ox-data-entry-subgroup-form.js.map +1 -1
  8. package/dist/src/ox-data-ooc-correction-part.js +17 -7
  9. package/dist/src/ox-data-ooc-correction-part.js.map +1 -1
  10. package/dist/src/ox-data-ooc-history.js +11 -4
  11. package/dist/src/ox-data-ooc-history.js.map +1 -1
  12. package/dist/src/ox-data-sample-view.d.ts +2 -3
  13. package/dist/src/ox-data-sample-view.js +44 -66
  14. package/dist/src/ox-data-sample-view.js.map +1 -1
  15. package/dist/stories/ox-data-entry-form.stories.js +42 -54
  16. package/dist/stories/ox-data-entry-form.stories.js.map +1 -1
  17. package/dist/stories/ox-data-ooc-brief-view.stories.js +18 -19
  18. package/dist/stories/ox-data-ooc-brief-view.stories.js.map +1 -1
  19. package/dist/stories/ox-data-ooc-view.stories.js +20 -21
  20. package/dist/stories/ox-data-ooc-view.stories.js.map +1 -1
  21. package/dist/stories/ox-data-sample-view.stories.js +18 -19
  22. package/dist/stories/ox-data-sample-view.stories.js.map +1 -1
  23. package/dist/tsconfig.tsbuildinfo +1 -1
  24. package/package.json +20 -20
  25. package/dist/src/ox-data-input-factory.d.ts +0 -53
  26. package/dist/src/ox-data-input-factory.js +0 -162
  27. package/dist/src/ox-data-input-factory.js.map +0 -1
  28. package/dist/stories/ox-data-entry-form-subgroups.stories.d.ts +0 -19
  29. package/dist/stories/ox-data-entry-form-subgroups.stories.js +0 -248
  30. package/dist/stories/ox-data-entry-form-subgroups.stories.js.map +0 -1
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@operato/dataset",
3
3
  "description": "WebApplication dataset supporting components following open-wc recommendations",
4
4
  "author": "heartyoh",
5
- "version": "8.0.0-beta.6",
5
+ "version": "8.0.1",
6
6
  "main": "dist/src/index.js",
7
7
  "module": "dist/src/index.js",
8
8
  "exports": {
@@ -108,30 +108,30 @@
108
108
  },
109
109
  "dependencies": {
110
110
  "@material/web": "^2.0.0",
111
- "@operato/data-grist": "^8.0.0-beta.6",
112
- "@operato/graphql": "^8.0.0-beta.2",
113
- "@operato/grist-editor": "^8.0.0-beta.6",
114
- "@operato/i18n": "^8.0.0-beta.2",
115
- "@operato/input": "^8.0.0-beta.5",
116
- "@operato/popup": "^8.0.0-beta.5",
117
- "@operato/property-editor": "^8.0.0-beta.6",
118
- "@operato/shell": "^8.0.0-beta.5",
119
- "@operato/styles": "^8.0.0-beta.2",
120
- "@operato/utils": "^8.0.0-beta.2",
111
+ "@operato/data-grist": "^8.0.0",
112
+ "@operato/graphql": "^8.0.0",
113
+ "@operato/grist-editor": "^8.0.0",
114
+ "@operato/i18n": "^8.0.0",
115
+ "@operato/input": "^8.0.0",
116
+ "@operato/popup": "^8.0.0",
117
+ "@operato/property-editor": "^8.0.0",
118
+ "@operato/shell": "^8.0.0",
119
+ "@operato/styles": "^8.0.0",
120
+ "@operato/utils": "^8.0.0",
121
121
  "lit": "^3.1.2"
122
122
  },
123
123
  "devDependencies": {
124
- "@custom-elements-manifest/analyzer": "^0.10.0",
124
+ "@custom-elements-manifest/analyzer": "^0.9.2",
125
125
  "@hatiolab/prettier-config": "^1.0.0",
126
126
  "@open-wc/eslint-config": "^12.0.3",
127
- "@open-wc/testing": "^4.0.0",
128
- "@typescript-eslint/eslint-plugin": "^8.0.0",
129
- "@typescript-eslint/parser": "^8.0.0",
130
- "@web/dev-server": "^0.4.0",
127
+ "@open-wc/testing": "^3.1.6",
128
+ "@typescript-eslint/eslint-plugin": "^7.0.1",
129
+ "@typescript-eslint/parser": "^7.0.1",
130
+ "@web/dev-server": "^0.3.0",
131
131
  "@web/dev-server-storybook": "^2.0.1",
132
- "@web/test-runner": "^0.19.0",
133
- "concurrently": "^9.0.0",
134
- "eslint": "^9.0.0",
132
+ "@web/test-runner": "^0.18.0",
133
+ "concurrently": "^8.0.1",
134
+ "eslint": "^8.39.0",
135
135
  "eslint-config-prettier": "^9.1.0",
136
136
  "husky": "^9.0.11",
137
137
  "lint-staged": "^15.2.2",
@@ -152,5 +152,5 @@
152
152
  "prettier --write"
153
153
  ]
154
154
  },
155
- "gitHead": "b152426bfb79be62ba34a2eb1a4bb092b5ead2c2"
155
+ "gitHead": "d7d8e783c8c7215997c404fde0c5f65508abd161"
156
156
  }
@@ -1,53 +0,0 @@
1
- import '@operato/input/ox-input-file.js';
2
- import '@operato/input/ox-input-signature.js';
3
- import { TemplateResult } from 'lit';
4
- /**
5
- * OxDataInputFactory
6
- * A factory class that dynamically generates input elements based on different data types.
7
- */
8
- export declare class OxDataInputFactory {
9
- /**
10
- * Creates an input element based on the specified type.
11
- * @param type - The type of input (e.g., text, number, date, select, etc.)
12
- * @param tag - The name attribute for the input field
13
- * @param value - The current value of the input field
14
- * @param options - Additional options (used for select, radio, etc.)
15
- * @param idx - Index for multiple input fields
16
- * @returns TemplateResult - A Lit template result for rendering
17
- */
18
- static createInputElement(type: string, tag: string, value: any, options?: any, idx?: number): TemplateResult;
19
- /**
20
- * Creates a select dropdown element.
21
- * @param tag - The name attribute for the select element
22
- * @param value - The currently selected value
23
- * @param options - The available options for the dropdown
24
- * @returns TemplateResult - A Lit template result for rendering
25
- */
26
- private static createSelect;
27
- /**
28
- * Creates a radio button group.
29
- * @param tag - The name attribute for the radio group
30
- * @param value - The currently selected value
31
- * @param options - The available radio options
32
- * @param idx - Index for multiple radio groups
33
- * @returns TemplateResult - A Lit template result for rendering
34
- */
35
- private static createRadio;
36
- /**
37
- * Creates a filter resource object element.
38
- * @param tag - The name attribute for the input field
39
- * @param value - The current value of the input field
40
- * @param options - Additional options
41
- * @returns TemplateResult - A Lit template result for
42
- */
43
- private static createEmployee;
44
- /**
45
- * Maps form input types to Grist-compatible column types.
46
- * Ensures `OxDataEntrySubgroupForm` properly maps UI components to Grist.
47
- */
48
- static mapGristType(type: string): string;
49
- /**
50
- * Retrieves additional record options for Grist columns.
51
- */
52
- static getGristRecordOptions(type: string, options?: any): any;
53
- }
@@ -1,162 +0,0 @@
1
- import '@operato/input/ox-input-file.js';
2
- import '@operato/input/ox-input-signature.js';
3
- // import '@operato/app/ox-filter-resource-object.js'
4
- import { html } from 'lit';
5
- /**
6
- * OxDataInputFactory
7
- * A factory class that dynamically generates input elements based on different data types.
8
- */
9
- export class OxDataInputFactory {
10
- /**
11
- * Creates an input element based on the specified type.
12
- * @param type - The type of input (e.g., text, number, date, select, etc.)
13
- * @param tag - The name attribute for the input field
14
- * @param value - The current value of the input field
15
- * @param options - Additional options (used for select, radio, etc.)
16
- * @param idx - Index for multiple input fields
17
- * @returns TemplateResult - A Lit template result for rendering
18
- */
19
- static createInputElement(type, tag, value, options = {}, idx = 0) {
20
- switch (type) {
21
- case 'select':
22
- return this.createSelect(tag, value, options);
23
- case 'radio':
24
- return this.createRadio(tag, value, options, idx);
25
- case 'boolean':
26
- return html `<input type="checkbox" name=${tag} .checked=${value} />`;
27
- case 'number':
28
- return html `<input type="number" name=${tag} .value=${value} />`;
29
- case 'date':
30
- return html `<input type="date" name=${tag} .value=${value} />`;
31
- case 'datetime':
32
- return html `<input type="datetime-local" name=${tag} .value=${value} />`;
33
- case 'file':
34
- return html `<ox-input-file name=${tag} multiple .value=${value}></ox-input-file>`;
35
- case 'signature':
36
- return html `<ox-input-signature name=${tag} .value=${value}></ox-input-signature>`;
37
- case 'employee':
38
- return this.createEmployee(tag, value, options);
39
- case 'string':
40
- default:
41
- return html `<input type="text" name=${tag} .value=${value} />`;
42
- }
43
- }
44
- /**
45
- * Creates a select dropdown element.
46
- * @param tag - The name attribute for the select element
47
- * @param value - The currently selected value
48
- * @param options - The available options for the dropdown
49
- * @returns TemplateResult - A Lit template result for rendering
50
- */
51
- static createSelect(tag, value, options) {
52
- var _a;
53
- return html `
54
- <select name=${tag}>
55
- <option value=""></option>
56
- ${(_a = options.options) === null || _a === void 0 ? void 0 : _a.map((option) => html `
57
- <option value=${option.value} ?selected=${option.value === value}>${option.text}</option>
58
- `)}
59
- </select>
60
- `;
61
- }
62
- /**
63
- * Creates a radio button group.
64
- * @param tag - The name attribute for the radio group
65
- * @param value - The currently selected value
66
- * @param options - The available radio options
67
- * @param idx - Index for multiple radio groups
68
- * @returns TemplateResult - A Lit template result for rendering
69
- */
70
- static createRadio(tag, value, options, idx) {
71
- var _a;
72
- return html `
73
- <div
74
- @change=${(e) => {
75
- const div = e.currentTarget;
76
- const hiddenInput = div.querySelector(`input[name="${tag}"]`);
77
- hiddenInput.value = e.target.value;
78
- }}
79
- >
80
- <input type="hidden" name=${tag} />
81
- ${(_a = options.options) === null || _a === void 0 ? void 0 : _a.map((option) => html `
82
- <label>
83
- <input type="radio" name=${`${tag}-${idx}`} value=${option.value} ?checked=${option.value === value} />
84
- ${option.text}
85
- </label>
86
- `)}
87
- </div>
88
- `;
89
- }
90
- /**
91
- * Creates a filter resource object element.
92
- * @param tag - The name attribute for the input field
93
- * @param value - The current value of the input field
94
- * @param options - Additional options
95
- * @returns TemplateResult - A Lit template result for
96
- */
97
- static createEmployee(tag, value, options) {
98
- return html ``;
99
- // return html`<ox-filter-resource-object
100
- // .name=${tag}
101
- // .value=${value}
102
- // .confirmCallback=${confirmCallback.bind(this)}
103
- // .queryName=${'employees'}
104
- // .columns=${columns}
105
- // .pagination=${pagination}
106
- // .list=${list}
107
- // .basicArgs=${basicArgs}
108
- // .valueField=${valueField}
109
- // ></ox-filter-resource-object>`
110
- }
111
- /**
112
- * Maps form input types to Grist-compatible column types.
113
- * Ensures `OxDataEntrySubgroupForm` properly maps UI components to Grist.
114
- */
115
- static mapGristType(type) {
116
- switch (type) {
117
- case 'radio':
118
- case 'select':
119
- return 'select'; // Convert radio to select for Grist
120
- case 'boolean':
121
- return 'boolean';
122
- case 'number':
123
- return 'number';
124
- case 'date':
125
- return 'date';
126
- case 'datetime':
127
- return 'datetime';
128
- case 'file':
129
- return 'file';
130
- case 'signature':
131
- return 'signature';
132
- case 'string':
133
- return 'text';
134
- default:
135
- return type;
136
- }
137
- }
138
- /**
139
- * Retrieves additional record options for Grist columns.
140
- */
141
- static getGristRecordOptions(type, options = {}) {
142
- switch (type) {
143
- case 'select':
144
- case 'radio':
145
- return {
146
- options: [
147
- '',
148
- ...(options.options || []).map((opt) => typeof opt === 'string' ? opt : { display: opt.text, value: opt.value })
149
- ]
150
- };
151
- case 'boolean':
152
- return { align: 'center' };
153
- case 'number':
154
- return { align: 'right' };
155
- case 'file':
156
- return { multiple: true };
157
- default:
158
- return {};
159
- }
160
- }
161
- }
162
- //# sourceMappingURL=ox-data-input-factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ox-data-input-factory.js","sourceRoot":"","sources":["../../src/ox-data-input-factory.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/input/ox-input-file.js'\nimport '@operato/input/ox-input-signature.js'\n// import '@operato/app/ox-filter-resource-object.js'\n\nimport { html, TemplateResult } from 'lit'\n\n/**\n * OxDataInputFactory\n * A factory class that dynamically generates input elements based on different data types.\n */\nexport class OxDataInputFactory {\n /**\n * Creates an input element based on the specified type.\n * @param type - The type of input (e.g., text, number, date, select, etc.)\n * @param tag - The name attribute for the input field\n * @param value - The current value of the input field\n * @param options - Additional options (used for select, radio, etc.)\n * @param idx - Index for multiple input fields\n * @returns TemplateResult - A Lit template result for rendering\n */\n static createInputElement(type: string, tag: string, value: any, options: any = {}, idx: number = 0): TemplateResult {\n switch (type) {\n case 'select':\n return this.createSelect(tag, value, options)\n case 'radio':\n return this.createRadio(tag, value, options, idx)\n case 'boolean':\n return html`<input type=\"checkbox\" name=${tag} .checked=${value} />`\n case 'number':\n return html`<input type=\"number\" name=${tag} .value=${value} />`\n case 'date':\n return html`<input type=\"date\" name=${tag} .value=${value} />`\n case 'datetime':\n return html`<input type=\"datetime-local\" name=${tag} .value=${value} />`\n case 'file':\n return html`<ox-input-file name=${tag} multiple .value=${value}></ox-input-file>`\n case 'signature':\n return html`<ox-input-signature name=${tag} .value=${value}></ox-input-signature>`\n case 'employee':\n return this.createEmployee(tag, value, options)\n case 'string':\n default:\n return html`<input type=\"text\" name=${tag} .value=${value} />`\n }\n }\n\n /**\n * Creates a select dropdown element.\n * @param tag - The name attribute for the select element\n * @param value - The currently selected value\n * @param options - The available options for the dropdown\n * @returns TemplateResult - A Lit template result for rendering\n */\n private static createSelect(tag: string, value: any, options: any): TemplateResult {\n return html`\n <select name=${tag}>\n <option value=\"\"></option>\n ${options.options?.map(\n (option: any) => html`\n <option value=${option.value} ?selected=${option.value === value}>${option.text}</option>\n `\n )}\n </select>\n `\n }\n\n /**\n * Creates a radio button group.\n * @param tag - The name attribute for the radio group\n * @param value - The currently selected value\n * @param options - The available radio options\n * @param idx - Index for multiple radio groups\n * @returns TemplateResult - A Lit template result for rendering\n */\n private static createRadio(tag: string, value: any, options: any, idx: number): TemplateResult {\n return html`\n <div\n @change=${(e: Event) => {\n const div = e.currentTarget as HTMLElement\n const hiddenInput = div.querySelector(`input[name=\"${tag}\"]`) as HTMLInputElement\n hiddenInput.value = (e.target as HTMLInputElement).value\n }}\n >\n <input type=\"hidden\" name=${tag} />\n ${options.options?.map(\n (option: any) => html`\n <label>\n <input type=\"radio\" name=${`${tag}-${idx}`} value=${option.value} ?checked=${option.value === value} />\n ${option.text}\n </label>\n `\n )}\n </div>\n `\n }\n\n /**\n * Creates a filter resource object element.\n * @param tag - The name attribute for the input field\n * @param value - The current value of the input field\n * @param options - Additional options\n * @returns TemplateResult - A Lit template result for\n */\n private static createEmployee(tag: string, value: any, options: any): TemplateResult {\n return html``\n // return html`<ox-filter-resource-object\n // .name=${tag}\n // .value=${value}\n // .confirmCallback=${confirmCallback.bind(this)}\n // .queryName=${'employees'}\n // .columns=${columns}\n // .pagination=${pagination}\n // .list=${list}\n // .basicArgs=${basicArgs}\n // .valueField=${valueField}\n // ></ox-filter-resource-object>`\n }\n\n /**\n * Maps form input types to Grist-compatible column types.\n * Ensures `OxDataEntrySubgroupForm` properly maps UI components to Grist.\n */\n static mapGristType(type: string): string {\n switch (type) {\n case 'radio':\n case 'select':\n return 'select' // Convert radio to select for Grist\n case 'boolean':\n return 'boolean'\n case 'number':\n return 'number'\n case 'date':\n return 'date'\n case 'datetime':\n return 'datetime'\n case 'file':\n return 'file'\n case 'signature':\n return 'signature'\n case 'string':\n return 'text'\n default:\n return type\n }\n }\n\n /**\n * Retrieves additional record options for Grist columns.\n */\n static getGristRecordOptions(type: string, options: any = {}): any {\n switch (type) {\n case 'select':\n case 'radio':\n return {\n options: [\n '',\n ...(options.options || []).map((opt: any) =>\n typeof opt === 'string' ? opt : { display: opt.text, value: opt.value }\n )\n ]\n }\n case 'boolean':\n return { align: 'center' }\n case 'number':\n return { align: 'right' }\n case 'file':\n return { multiple: true }\n default:\n return {}\n }\n }\n}\n"]}
@@ -1,19 +0,0 @@
1
- import '@operato/i18n';
2
- import '../src/ox-data-entry-form.js';
3
- import '../src/usecase/ccp';
4
- import '@material/web/icon/icon.js';
5
- import { TemplateResult } from 'lit';
6
- declare const _default: {
7
- title: string;
8
- component: string;
9
- argTypes: {};
10
- };
11
- export default _default;
12
- interface Story<T> {
13
- (args: T): TemplateResult;
14
- args?: Partial<T>;
15
- argTypes?: Record<string, unknown>;
16
- }
17
- interface ArgTypes {
18
- }
19
- export declare const Regular: Story<ArgTypes>;
@@ -1,248 +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
- import { html } from 'lit';
6
- export default {
7
- title: 'ox-data-entry-form-subgroups',
8
- component: 'ox-data-entry-form',
9
- argTypes: {}
10
- };
11
- const dataSet = {
12
- name: 'sample',
13
- description: 'sample description',
14
- useCase: 'CCP',
15
- dataItems: [
16
- {
17
- name: '라디오 독립',
18
- description: '라디오',
19
- sequence: 5,
20
- tag: 'check2',
21
- type: 'radio',
22
- options: {
23
- options: [
24
- {
25
- text: '예',
26
- value: 'Y'
27
- },
28
- {
29
- text: '아니오',
30
- value: 'N'
31
- }
32
- ]
33
- },
34
- quota: 1,
35
- active: true
36
- },
37
- {
38
- name: '첨부파일',
39
- description: '참조 첨부 파일.',
40
- sequence: 4,
41
- tag: 'attachment',
42
- type: 'file',
43
- quota: 1,
44
- active: true
45
- },
46
- {
47
- name: '창고 온도',
48
- description: '창고 온도는 섭씨 0도 이하로 유지되어야 합니다.',
49
- sequence: 1,
50
- tag: 'temp',
51
- group: '측정데이타',
52
- type: 'number',
53
- quota: 1,
54
- active: true,
55
- unit: '℃',
56
- spec: {
57
- CCP: {
58
- criticalLimits: {
59
- minimum: 100,
60
- maximum: 200
61
- },
62
- targetLimits: {
63
- minimum: 120,
64
- maximum: 180
65
- }
66
- }
67
- }
68
- },
69
- {
70
- name: '코멘트',
71
- description: '특이사항을 기록함.',
72
- sequence: 4,
73
- tag: 'comment',
74
- type: 'string',
75
- quota: 1,
76
- active: true
77
- },
78
- {
79
- name: '창고 습도',
80
- description: '창고 습도는 30% 이하로 유지되어야 합니다.',
81
- sequence: 2,
82
- tag: 'humid',
83
- group: '측정데이타2',
84
- type: 'number',
85
- quota: 5,
86
- active: true,
87
- unit: '%',
88
- spec: {
89
- CCP: {
90
- criticalLimits: {
91
- minimum: 10,
92
- maximum: 50
93
- },
94
- targetLimits: {
95
- minimum: 20,
96
- maximum: 40
97
- }
98
- }
99
- }
100
- },
101
- {
102
- name: '설명',
103
- description: '설명',
104
- sequence: 12,
105
- tag: 'description',
106
- type: 'string',
107
- active: true,
108
- group: '측정데이타2'
109
- },
110
- {
111
- name: '육안 검사',
112
- description: '육안 검사는 포장전 30분 내로 실행되어야 합니다.',
113
- sequence: 3,
114
- tag: 'inspection',
115
- group: '측정데이타',
116
- type: 'boolean',
117
- quota: 3,
118
- active: true,
119
- spec: {
120
- CCP: {
121
- criticalLimits: {
122
- acceptables: true
123
- },
124
- targetLimits: {
125
- acceptables: true
126
- }
127
- }
128
- }
129
- },
130
- {
131
- name: '품평',
132
- description: '품평은 최우수/우수/보통/미달을 포함하여 간단히 평가.',
133
- sequence: 4,
134
- tag: 'evaluation',
135
- group: '측정데이타2',
136
- type: 'select',
137
- options: {
138
- options: [
139
- { text: '최우수', value: '최우수' },
140
- { text: '우수', value: '우수' },
141
- { text: '보통', value: '보통' },
142
- { text: '미달', value: '미달' },
143
- { text: '등외', value: '등외' }
144
- ]
145
- },
146
- quota: 3,
147
- active: true,
148
- spec: {
149
- CCP: {
150
- criticalLimits: {
151
- acceptables: ['최우수', '우수', '보통']
152
- },
153
- targetLimits: {
154
- acceptables: ['최우수', '우수']
155
- }
156
- }
157
- }
158
- },
159
- {
160
- name: '라디오 측정',
161
- description: '라디오 그룹',
162
- group: '측정데이타',
163
- sequence: 5,
164
- tag: 'check1',
165
- type: 'radio',
166
- options: {
167
- options: [
168
- {
169
- text: '예',
170
- value: 'Y'
171
- },
172
- {
173
- text: '아니오',
174
- value: 'N'
175
- }
176
- ]
177
- },
178
- quota: 3,
179
- active: true
180
- },
181
- {
182
- name: '서명',
183
- description: '품평가 서명.',
184
- sequence: 4,
185
- tag: 'sign',
186
- group: '측정데이타',
187
- type: 'signature',
188
- quota: 3,
189
- active: true
190
- },
191
- {
192
- name: '서명',
193
- description: '서명',
194
- sequence: 5,
195
- tag: 'signature',
196
- type: 'signature',
197
- quota: 1,
198
- active: true
199
- }
200
- ]
201
- };
202
- var value = {
203
- temp: 1000,
204
- humid: [20, 23, 21, 26, 27],
205
- inspection: [true, false, true],
206
- evaluation: ['최우수', '보통', '우수'],
207
- comment: '이것이 코멘트입니다.',
208
- description: [''],
209
- signature: 'data:image/png;base64,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'
210
- };
211
- const Template = ({}) => html `
212
- <link
213
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
214
- rel="stylesheet"
215
- />
216
- <link
217
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
218
- rel="stylesheet"
219
- />
220
- <link
221
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
222
- rel="stylesheet"
223
- />
224
-
225
- <style>
226
- body {
227
- }
228
- </style>
229
-
230
- <link href="/themes/app-theme.css" rel="stylesheet" />
231
- <link href="/themes/light.css" rel="stylesheet" />
232
- <link href="/themes/dark.css" rel="stylesheet" />
233
- <link href="/themes/spacing.css" rel="stylesheet" />
234
- <link href="/themes/grist-theme.css" rel="stylesheet" />
235
- <link href="/themes/form-theme.css" rel="stylesheet" />
236
-
237
- <ox-data-entry-form
238
- .dataSet=${dataSet}
239
- .value=${value}
240
- @change=${(e) => {
241
- value = e.detail;
242
- console.log('change', value);
243
- }}
244
- ></ox-data-entry-form>
245
- `;
246
- export const Regular = Template.bind({});
247
- Regular.args = {};
248
- //# sourceMappingURL=ox-data-entry-form-subgroups.stories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ox-data-entry-form-subgroups.stories.js","sourceRoot":"","sources":["../../stories/ox-data-entry-form-subgroups.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/i18n'\nimport '../src/ox-data-entry-form.js'\nimport '../src/usecase/ccp' /* register usecase CCP */\nimport '@material/web/icon/icon.js'\n\nimport { html, TemplateResult } from 'lit'\n\nexport default {\n title: 'ox-data-entry-form-subgroups',\n component: 'ox-data-entry-form',\n argTypes: {}\n}\n\ninterface Story<T> {\n (args: T): TemplateResult\n args?: Partial<T>\n argTypes?: Record<string, unknown>\n}\n\ninterface ArgTypes {}\n\nconst dataSet = {\n name: 'sample',\n description: 'sample description',\n useCase: 'CCP',\n dataItems: [\n {\n name: '라디오 독립',\n description: '라디오',\n sequence: 5,\n tag: 'check2',\n type: 'radio',\n options: {\n options: [\n {\n text: '예',\n value: 'Y'\n },\n {\n text: '아니오',\n value: 'N'\n }\n ]\n },\n quota: 1,\n active: true\n },\n {\n name: '첨부파일',\n description: '참조 첨부 파일.',\n sequence: 4,\n tag: 'attachment',\n type: 'file',\n quota: 1,\n active: true\n },\n {\n name: '창고 온도',\n description: '창고 온도는 섭씨 0도 이하로 유지되어야 합니다.',\n sequence: 1,\n tag: 'temp',\n group: '측정데이타',\n type: 'number',\n quota: 1,\n active: true,\n unit: '℃',\n spec: {\n CCP: {\n criticalLimits: {\n minimum: 100,\n maximum: 200\n },\n targetLimits: {\n minimum: 120,\n maximum: 180\n }\n }\n }\n },\n {\n name: '코멘트',\n description: '특이사항을 기록함.',\n sequence: 4,\n tag: 'comment',\n type: 'string',\n quota: 1,\n active: true\n },\n {\n name: '창고 습도',\n description: '창고 습도는 30% 이하로 유지되어야 합니다.',\n sequence: 2,\n tag: 'humid',\n group: '측정데이타2',\n type: 'number',\n quota: 5,\n active: true,\n unit: '%',\n spec: {\n CCP: {\n criticalLimits: {\n minimum: 10,\n maximum: 50\n },\n targetLimits: {\n minimum: 20,\n maximum: 40\n }\n }\n }\n },\n {\n name: '설명',\n description: '설명',\n sequence: 12,\n tag: 'description',\n type: 'string',\n active: true,\n group: '측정데이타2'\n },\n {\n name: '육안 검사',\n description: '육안 검사는 포장전 30분 내로 실행되어야 합니다.',\n sequence: 3,\n tag: 'inspection',\n group: '측정데이타',\n type: 'boolean',\n quota: 3,\n active: true,\n spec: {\n CCP: {\n criticalLimits: {\n acceptables: true\n },\n targetLimits: {\n acceptables: true\n }\n }\n }\n },\n {\n name: '품평',\n description: '품평은 최우수/우수/보통/미달을 포함하여 간단히 평가.',\n sequence: 4,\n tag: 'evaluation',\n group: '측정데이타2',\n type: 'select',\n options: {\n options: [\n { text: '최우수', value: '최우수' },\n { text: '우수', value: '우수' },\n { text: '보통', value: '보통' },\n { text: '미달', value: '미달' },\n { text: '등외', value: '등외' }\n ]\n },\n quota: 3,\n active: true,\n spec: {\n CCP: {\n criticalLimits: {\n acceptables: ['최우수', '우수', '보통']\n },\n targetLimits: {\n acceptables: ['최우수', '우수']\n }\n }\n }\n },\n {\n name: '라디오 측정',\n description: '라디오 그룹',\n group: '측정데이타',\n sequence: 5,\n tag: 'check1',\n type: 'radio',\n options: {\n options: [\n {\n text: '예',\n value: 'Y'\n },\n {\n text: '아니오',\n value: 'N'\n }\n ]\n },\n quota: 3,\n active: true\n },\n {\n name: '서명',\n description: '품평가 서명.',\n sequence: 4,\n tag: 'sign',\n group: '측정데이타',\n type: 'signature',\n quota: 3,\n active: true\n },\n {\n name: '서명',\n description: '서명',\n sequence: 5,\n tag: 'signature',\n type: 'signature',\n quota: 1,\n active: true\n }\n ]\n}\n\nvar value = {\n temp: 1000,\n humid: [20, 23, 21, 26, 27],\n inspection: [true, false, true],\n evaluation: ['최우수', '보통', '우수'],\n comment: '이것이 코멘트입니다.',\n description: [''],\n signature:\n 'data:image/png;base64,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'\n}\n\nconst Template: Story<ArgTypes> = ({}: ArgTypes) => html`\n <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n\n <style>\n body {\n }\n </style>\n\n <link href=\"/themes/app-theme.css\" rel=\"stylesheet\" />\n <link href=\"/themes/light.css\" rel=\"stylesheet\" />\n <link href=\"/themes/dark.css\" rel=\"stylesheet\" />\n <link href=\"/themes/spacing.css\" rel=\"stylesheet\" />\n <link href=\"/themes/grist-theme.css\" rel=\"stylesheet\" />\n <link href=\"/themes/form-theme.css\" rel=\"stylesheet\" />\n\n <ox-data-entry-form\n .dataSet=${dataSet}\n .value=${value}\n @change=${(e: CustomEvent) => {\n value = e.detail\n console.log('change', value)\n }}\n ></ox-data-entry-form>\n`\n\nexport const Regular = Template.bind({})\nRegular.args = {}\n"]}