@things-factory/spc 10.0.0-zeta.7 → 10.0.0

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 (75) hide show
  1. package/dist-client/bootstrap.d.ts +1 -0
  2. package/dist-client/bootstrap.js +2 -0
  3. package/dist-client/bootstrap.js.map +1 -0
  4. package/dist-client/index.d.ts +0 -0
  5. package/dist-client/index.js +2 -0
  6. package/dist-client/index.js.map +1 -0
  7. package/dist-client/pages/spc-chart-page.d.ts +39 -0
  8. package/dist-client/pages/spc-chart-page.js +296 -0
  9. package/dist-client/pages/spc-chart-page.js.map +1 -0
  10. package/dist-client/route.d.ts +1 -0
  11. package/dist-client/route.js +8 -0
  12. package/dist-client/route.js.map +1 -0
  13. package/dist-client/tsconfig.tsbuildinfo +1 -0
  14. package/dist-server/controllers/data-use-case-spc.d.ts +5 -0
  15. package/dist-server/controllers/data-use-case-spc.js +40 -0
  16. package/dist-server/controllers/data-use-case-spc.js.map +1 -0
  17. package/dist-server/controllers/index.d.ts +1 -0
  18. package/dist-server/controllers/index.js +5 -0
  19. package/dist-server/controllers/index.js.map +1 -0
  20. package/dist-server/controllers/rules/cp-cpk.d.ts +1 -0
  21. package/dist-server/controllers/rules/cp-cpk.js +21 -0
  22. package/dist-server/controllers/rules/cp-cpk.js.map +1 -0
  23. package/dist-server/controllers/spc-chart/c.d.ts +2 -0
  24. package/dist-server/controllers/spc-chart/c.js +29 -0
  25. package/dist-server/controllers/spc-chart/c.js.map +1 -0
  26. package/dist-server/controllers/spc-chart/histogram.d.ts +13 -0
  27. package/dist-server/controllers/spc-chart/histogram.js +25 -0
  28. package/dist-server/controllers/spc-chart/histogram.js.map +1 -0
  29. package/dist-server/controllers/spc-chart/i.d.ts +2 -0
  30. package/dist-server/controllers/spc-chart/i.js +29 -0
  31. package/dist-server/controllers/spc-chart/i.js.map +1 -0
  32. package/dist-server/controllers/spc-chart/index.d.ts +140 -0
  33. package/dist-server/controllers/spc-chart/index.js +172 -0
  34. package/dist-server/controllers/spc-chart/index.js.map +1 -0
  35. package/dist-server/controllers/spc-chart/mr.d.ts +2 -0
  36. package/dist-server/controllers/spc-chart/mr.js +28 -0
  37. package/dist-server/controllers/spc-chart/mr.js.map +1 -0
  38. package/dist-server/controllers/spc-chart/np.d.ts +2 -0
  39. package/dist-server/controllers/spc-chart/np.js +29 -0
  40. package/dist-server/controllers/spc-chart/np.js.map +1 -0
  41. package/dist-server/controllers/spc-chart/p.d.ts +2 -0
  42. package/dist-server/controllers/spc-chart/p.js +28 -0
  43. package/dist-server/controllers/spc-chart/p.js.map +1 -0
  44. package/dist-server/controllers/spc-chart/pareto.d.ts +12 -0
  45. package/dist-server/controllers/spc-chart/pareto.js +23 -0
  46. package/dist-server/controllers/spc-chart/pareto.js.map +1 -0
  47. package/dist-server/controllers/spc-chart/r.d.ts +2 -0
  48. package/dist-server/controllers/spc-chart/r.js +32 -0
  49. package/dist-server/controllers/spc-chart/r.js.map +1 -0
  50. package/dist-server/controllers/spc-chart/u.d.ts +2 -0
  51. package/dist-server/controllers/spc-chart/u.js +30 -0
  52. package/dist-server/controllers/spc-chart/u.js.map +1 -0
  53. package/dist-server/controllers/spc-chart/x-bar-r.d.ts +2 -0
  54. package/dist-server/controllers/spc-chart/x-bar-r.js +47 -0
  55. package/dist-server/controllers/spc-chart/x-bar-r.js.map +1 -0
  56. package/dist-server/controllers/spc-chart/x-bar.d.ts +2 -0
  57. package/dist-server/controllers/spc-chart/x-bar.js +47 -0
  58. package/dist-server/controllers/spc-chart/x-bar.js.map +1 -0
  59. package/dist-server/index.d.ts +1 -0
  60. package/dist-server/index.js +11 -0
  61. package/dist-server/index.js.map +1 -0
  62. package/dist-server/service/index.d.ts +5 -0
  63. package/dist-server/service/index.js +21 -0
  64. package/dist-server/service/index.js.map +1 -0
  65. package/dist-server/service/spc-chart/index.d.ts +4 -0
  66. package/dist-server/service/spc-chart/index.js +8 -0
  67. package/dist-server/service/spc-chart/index.js.map +1 -0
  68. package/dist-server/service/spc-chart/spc-chart-query.d.ts +4 -0
  69. package/dist-server/service/spc-chart/spc-chart-query.js +99 -0
  70. package/dist-server/service/spc-chart/spc-chart-query.js.map +1 -0
  71. package/dist-server/service/spc-chart/spc-chart-type.d.ts +33 -0
  72. package/dist-server/service/spc-chart/spc-chart-type.js +133 -0
  73. package/dist-server/service/spc-chart/spc-chart-type.js.map +1 -0
  74. package/dist-server/tsconfig.tsbuildinfo +1 -0
  75. package/package.json +7 -7
@@ -0,0 +1 @@
1
+ export default function bootstrap(): void;
@@ -0,0 +1,2 @@
1
+ export default function bootstrap() { }
2
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,SAAS,KAAI,CAAC","sourcesContent":["export default function bootstrap() {}\n"]}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"","sourcesContent":[""]}
@@ -0,0 +1,39 @@
1
+ import '@material/web/icon/icon.js';
2
+ import '@operato/app/filters-form.js';
3
+ import '@operato/spc/ox-chart-xbar-r.js';
4
+ import '@operato/spc/ox-chart-i-mr.js';
5
+ import '@operato/spc/ox-chart-u.js';
6
+ import '@operato/spc/ox-chart-c.js';
7
+ import '@operato/spc/ox-chart-p.js';
8
+ import '@operato/spc/ox-chart-np.js';
9
+ import { PageView } from '@operato/shell';
10
+ import { PropertyValues } from 'lit';
11
+ import { FilterValue, OxFiltersFormBase } from '@operato/form';
12
+ declare const SpcChartPage_base: (new (...args: any[]) => import("lit").LitElement) & typeof PageView;
13
+ export declare class SpcChartPage extends SpcChartPage_base {
14
+ static styles: import("lit").CSSResult[];
15
+ dataSetId?: string;
16
+ variable?: string;
17
+ chartType?: string;
18
+ spcChart: any;
19
+ filtersValue?: FilterValue[];
20
+ variables: {
21
+ display: string;
22
+ value: string;
23
+ }[];
24
+ formBase: OxFiltersFormBase;
25
+ private get filtersConfig();
26
+ get context(): {
27
+ title: string;
28
+ help: string;
29
+ };
30
+ render(): import("lit-html").TemplateResult<1>;
31
+ updated(changes: PropertyValues<this>): void;
32
+ pageUpdated(changes: any, lifecycle: any): Promise<void>;
33
+ fetchSpcChart(): Promise<void>;
34
+ fetchVariables(id: string): Promise<{
35
+ display: string;
36
+ value: string;
37
+ }[]>;
38
+ }
39
+ export {};
@@ -0,0 +1,296 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import '@material/web/icon/icon.js';
3
+ import '@operato/app/filters-form.js';
4
+ import '@operato/spc/ox-chart-xbar-r.js';
5
+ import '@operato/spc/ox-chart-i-mr.js';
6
+ import '@operato/spc/ox-chart-u.js';
7
+ import '@operato/spc/ox-chart-c.js';
8
+ import '@operato/spc/ox-chart-p.js';
9
+ import '@operato/spc/ox-chart-np.js';
10
+ import { ScrollbarStyles, CommonHeaderStyles } from '@operato/styles';
11
+ import { PageView } from '@operato/shell';
12
+ import { css, html, nothing } from 'lit';
13
+ import { customElement, query, state } from 'lit/decorators.js';
14
+ import { client } from '@operato/graphql';
15
+ import { i18next, localize } from '@operato/i18n';
16
+ import { OxFiltersFormBase } from '@operato/form';
17
+ import gql from 'graphql-tag';
18
+ function formatDate(timestamp) {
19
+ const date = new Date(timestamp);
20
+ const year = date.getFullYear();
21
+ const month = String(date.getMonth() + 1).padStart(2, '0'); // 월은 0부터 시작하므로 1을 더함
22
+ const day = String(date.getDate()).padStart(2, '0');
23
+ const hours = String(date.getHours()).padStart(2, '0');
24
+ const minutes = String(date.getMinutes()).padStart(2, '0');
25
+ const seconds = String(date.getSeconds()).padStart(2, '0');
26
+ return `${month}-${day} ${hours}:${minutes}`;
27
+ }
28
+ let SpcChartPage = class SpcChartPage extends localize(i18next)(PageView) {
29
+ constructor() {
30
+ super(...arguments);
31
+ this.dataSetId = '';
32
+ this.variable = '';
33
+ this.chartType = '';
34
+ this.variables = [];
35
+ }
36
+ static { this.styles = [
37
+ ScrollbarStyles,
38
+ CommonHeaderStyles,
39
+ css `
40
+ :host { display: flex;
41
+ flex-direction: column;
42
+
43
+ width: 100%;
44
+ }
45
+
46
+ .chart { flex: 1;
47
+ padding: var(--spacing-medium);
48
+ }
49
+ `
50
+ ]; }
51
+ get filtersConfig() {
52
+ return [
53
+ { name: 'dataSetId',
54
+ type: 'resource-id',
55
+ label: 'dataset',
56
+ operator: 'eq',
57
+ options: { queryName: 'dataSets'
58
+ },
59
+ onchange: (value, formBase) => {
60
+ requestAnimationFrame(async () => {
61
+ const variableFilter = formBase.getFieldByName('variable');
62
+ variableFilter.value = '';
63
+ this.variables = [
64
+ { display: '',
65
+ value: ''
66
+ },
67
+ ...(await this.fetchVariables(value))
68
+ ];
69
+ });
70
+ this.dataSetId = value;
71
+ return false; /* whether filters-change event triggered or not */
72
+ }
73
+ },
74
+ { name: 'variable',
75
+ type: 'select',
76
+ label: 'variable',
77
+ operator: 'eq',
78
+ options: () => this.variables,
79
+ onchange: value => (this.variable = value)
80
+ },
81
+ { name: 'chartType',
82
+ type: 'select',
83
+ label: 'chart',
84
+ operator: 'eq',
85
+ options: ['Xbar-R', 'I-MR', 'C', 'U', 'P', 'NP'],
86
+ onchange: value => (this.chartType = value)
87
+ },
88
+ { name: 'dateRange',
89
+ type: 'date',
90
+ label: 'date',
91
+ operator: 'between',
92
+ value: [
93
+ { name: 'today',
94
+ params: { relativeDays: -30
95
+ }
96
+ },
97
+ { name: 'today',
98
+ params: { relativeDays: -1
99
+ }
100
+ }
101
+ ]
102
+ }
103
+ ];
104
+ }
105
+ get context() {
106
+ return { title: i18next.t('title.spc-chart'),
107
+ help: 'spc/spc-chart'
108
+ };
109
+ }
110
+ render() {
111
+ const { dataSet = {}, variable, charts = [] } = this.spcChart || {};
112
+ var plotters = [];
113
+ switch (this.chartType) {
114
+ case 'Xbar-R':
115
+ const xbar = charts.find(r => r.chartType == 'Xbar');
116
+ const r = charts.find(r => r.chartType == 'R');
117
+ plotters.push({ chart: 'xbar-r', data: xbar?.plots ?? [] });
118
+ break;
119
+ case 'I-MR':
120
+ const i = charts.find(r => r.chartType == 'I');
121
+ const mr = charts.find(r => r.chartType == 'MR');
122
+ plotters.push({ chart: 'i-mr', data: i?.plots ?? [] });
123
+ break;
124
+ case 'P':
125
+ const p = charts.find(r => r.chartType == 'P');
126
+ plotters.push({ chart: 'p', data: p?.plots ?? [] });
127
+ break;
128
+ case 'NP':
129
+ const np = charts.find(r => r.chartType == 'NP');
130
+ plotters.push({ chart: 'np', data: np?.plots ?? [] });
131
+ break;
132
+ case 'C':
133
+ const c = charts.find(r => r.chartType == 'C');
134
+ plotters.push({ chart: 'c', data: c?.plots ?? [] });
135
+ break;
136
+ case 'U':
137
+ const u = charts.find(r => r.chartType == 'U');
138
+ plotters.push({ chart: 'u', data: u?.plots ?? [] });
139
+ default:
140
+ }
141
+ plotters = plotters.map(plotter => {
142
+ return { ...plotter,
143
+ data: plotter.data.map(plot => {
144
+ return { ...plot,
145
+ x: formatDate(Number(plot.x))
146
+ };
147
+ })
148
+ };
149
+ });
150
+ return html `
151
+ <div class="header">
152
+ <div class="title"><md-icon>apps</md-icon>${i18next.t('title.spc-chart')}</div>
153
+ <ox-filters-form-base
154
+ class="filters"
155
+ .value=${this.filtersValue}
156
+ .filters=${this.filtersConfig}
157
+ ?url-params-sensitive=${false}
158
+ @filters-change=${(e) => {
159
+ this.fetchSpcChart();
160
+ }}
161
+ >
162
+ </ox-filters-form-base>
163
+ </div>
164
+
165
+ ${plotters.map(({ chart, data }) => chart == 'xbar-r'
166
+ ? html ` <ox-chart-xbar-r class="chart" .plots=${data}></ox-chart-xbar-r> `
167
+ : chart == 'i-mr'
168
+ ? html ` <ox-chart-i-mr class="chart" .plots=${data}></ox-chart-i-mr> `
169
+ : chart == 'u'
170
+ ? html ` <ox-chart-u class="chart" .plots=${data}></ox-chart-u> `
171
+ : chart == 'c'
172
+ ? html ` <ox-chart-c class="chart" .plots=${data}></ox-chart-c> `
173
+ : chart == 'p'
174
+ ? html ` <ox-chart-p class="chart" .plots=${data}></ox-chart-p> `
175
+ : chart == 'np'
176
+ ? html ` <ox-chart-np class="chart" .plots=${data}></ox-chart-np> `
177
+ : nothing)}
178
+ `;
179
+ }
180
+ updated(changes) {
181
+ if (!changes.has('spcChart')) {
182
+ this.fetchSpcChart();
183
+ }
184
+ }
185
+ async pageUpdated(changes, lifecycle) {
186
+ if (this.active) {
187
+ this.dataSetId = lifecycle.resourceId;
188
+ }
189
+ }
190
+ async fetchSpcChart() {
191
+ const { dataSetId, dateRange: [fromDate, toDate], variable, chartType } = (await this.formBase.getQueryFilters()).reduce((sum, field) => {
192
+ sum[field.name] = field.value;
193
+ return sum;
194
+ }, {});
195
+ if (!(dataSetId && fromDate && toDate && variable && chartType)) {
196
+ return;
197
+ }
198
+ const response = await client.query({ query: gql `
199
+ query spcChart(
200
+ $dataSetId: String!
201
+ $variable: String!
202
+ $chartType: String!
203
+ $fromDate: String!
204
+ $toDate: String!
205
+ ) { spcChart(
206
+ dataSetId: $dataSetId
207
+ variable: $variable
208
+ chartType: $chartType
209
+ fromDate: $fromDate
210
+ toDate: $toDate
211
+ ) { dataSet { id
212
+ name
213
+ }
214
+ variable
215
+ charts { chartType
216
+ controlLimits { ucl
217
+ lcl
218
+ cl
219
+ }
220
+ specLimits { usl
221
+ lsl
222
+ target
223
+ }
224
+ plots { x
225
+ values
226
+ xbar
227
+ r
228
+ i
229
+ mr
230
+ n
231
+ defects
232
+ }
233
+ }
234
+ }
235
+ }
236
+ `,
237
+ variables: { dataSetId,
238
+ variable,
239
+ chartType,
240
+ fromDate,
241
+ toDate
242
+ }
243
+ });
244
+ this.spcChart = response.data.spcChart;
245
+ }
246
+ async fetchVariables(id) {
247
+ const response = await client.query({ query: gql `
248
+ query dataSet($id: String!) { dataSet(id: $id) { dataItems { name
249
+ tag
250
+ }
251
+ }
252
+ }
253
+ `,
254
+ variables: { id
255
+ }
256
+ });
257
+ return response.data.dataSet.dataItems.map(dataItem => {
258
+ return { display: dataItem.name,
259
+ value: dataItem.name
260
+ };
261
+ });
262
+ }
263
+ };
264
+ __decorate([
265
+ state(),
266
+ __metadata("design:type", String)
267
+ ], SpcChartPage.prototype, "dataSetId", void 0);
268
+ __decorate([
269
+ state(),
270
+ __metadata("design:type", String)
271
+ ], SpcChartPage.prototype, "variable", void 0);
272
+ __decorate([
273
+ state(),
274
+ __metadata("design:type", String)
275
+ ], SpcChartPage.prototype, "chartType", void 0);
276
+ __decorate([
277
+ state(),
278
+ __metadata("design:type", Object)
279
+ ], SpcChartPage.prototype, "spcChart", void 0);
280
+ __decorate([
281
+ state(),
282
+ __metadata("design:type", Array)
283
+ ], SpcChartPage.prototype, "filtersValue", void 0);
284
+ __decorate([
285
+ state(),
286
+ __metadata("design:type", Array)
287
+ ], SpcChartPage.prototype, "variables", void 0);
288
+ __decorate([
289
+ query('ox-filters-form-base'),
290
+ __metadata("design:type", OxFiltersFormBase)
291
+ ], SpcChartPage.prototype, "formBase", void 0);
292
+ SpcChartPage = __decorate([
293
+ customElement('spc-chart-page')
294
+ ], SpcChartPage);
295
+ export { SpcChartPage };
296
+ //# sourceMappingURL=spc-chart-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spc-chart-page.js","sourceRoot":"","sources":["../../client/pages/spc-chart-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport '@operato/app/filters-form.js'\nimport '@operato/spc/ox-chart-xbar-r.js'\nimport '@operato/spc/ox-chart-i-mr.js'\nimport '@operato/spc/ox-chart-u.js'\nimport '@operato/spc/ox-chart-c.js'\nimport '@operato/spc/ox-chart-p.js'\nimport '@operato/spc/ox-chart-np.js'\n\nimport { ScrollbarStyles, CommonHeaderStyles } from '@operato/styles'\nimport { PageView } from '@operato/shell'\nimport { css, html, PropertyValues, nothing } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { isMobileDevice } from '@operato/utils'\nimport { FilterConfig, FilterValue, OxFiltersFormBase } from '@operato/form'\n\nimport gql from 'graphql-tag'\n\nfunction formatDate(timestamp: number) { const date = new Date(timestamp)\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0') // 월은 0부터 시작하므로 1을 더함\n const day = String(date.getDate()).padStart(2, '0')\n const hours = String(date.getHours()).padStart(2, '0')\n const minutes = String(date.getMinutes()).padStart(2, '0')\n const seconds = String(date.getSeconds()).padStart(2, '0')\n\n return `${month}-${day} ${hours}:${minutes}`\n}\n\n@customElement('spc-chart-page')\nexport class SpcChartPage extends localize(i18next)(PageView) { static styles = [\n ScrollbarStyles,\n CommonHeaderStyles,\n css`\n :host { display: flex;\n flex-direction: column;\n\n width: 100%;\n }\n\n .chart { flex: 1;\n padding: var(--spacing-medium);\n }\n `\n ]\n\n @state() dataSetId?: string = ''\n @state() variable?: string = ''\n @state() chartType?: string = ''\n @state() spcChart: any\n @state() filtersValue?: FilterValue[]\n @state() variables: { display: string; value: string }[] = []\n\n @query('ox-filters-form-base') formBase!: OxFiltersFormBase\n\n private get filtersConfig(): FilterConfig[] { return [\n { name: 'dataSetId',\n type: 'resource-id',\n label: 'dataset',\n operator: 'eq',\n options: { queryName: 'dataSets'\n },\n onchange: (value, formBase) => { requestAnimationFrame(async () => { const variableFilter = formBase.getFieldByName('variable') as HTMLInputElement\n variableFilter.value = ''\n\n this.variables = [\n { display: '',\n value: ''\n },\n ...(await this.fetchVariables(value as string))\n ]\n })\n\n this.dataSetId = value\n\n return false /* whether filters-change event triggered or not */\n }\n },\n { name: 'variable',\n type: 'select',\n label: 'variable',\n operator: 'eq',\n options: () => this.variables,\n onchange: value => (this.variable = value)\n },\n { name: 'chartType',\n type: 'select',\n label: 'chart',\n operator: 'eq',\n options: ['Xbar-R', 'I-MR', 'C', 'U', 'P', 'NP'],\n onchange: value => (this.chartType = value)\n },\n { name: 'dateRange',\n type: 'date',\n label: 'date',\n operator: 'between',\n value: [\n { name: 'today',\n params: { relativeDays: -30\n }\n },\n { name: 'today',\n params: { relativeDays: -1\n }\n }\n ]\n }\n ]\n }\n\n get context() { return { title: i18next.t('title.spc-chart'),\n help: 'spc/spc-chart'\n }\n }\n\n render() { const { dataSet = {}, variable, charts = [] } = this.spcChart || {}\n\n var plotters: { chart: string; data: any[] }[] = []\n\n switch (this.chartType) { case 'Xbar-R':\n const xbar = charts.find(r => r.chartType == 'Xbar')\n const r = charts.find(r => r.chartType == 'R')\n\n plotters.push({ chart: 'xbar-r', data: xbar?.plots ?? [] })\n break\n\n case 'I-MR':\n const i = charts.find(r => r.chartType == 'I')\n const mr = charts.find(r => r.chartType == 'MR')\n\n plotters.push({ chart: 'i-mr', data: i?.plots ?? [] })\n break\n\n case 'P':\n const p = charts.find(r => r.chartType == 'P')\n plotters.push({ chart: 'p', data: p?.plots ?? [] })\n break\n\n case 'NP':\n const np = charts.find(r => r.chartType == 'NP')\n plotters.push({ chart: 'np', data: np?.plots ?? [] })\n break\n\n case 'C':\n const c = charts.find(r => r.chartType == 'C')\n plotters.push({ chart: 'c', data: c?.plots ?? [] })\n break\n\n case 'U':\n const u = charts.find(r => r.chartType == 'U')\n plotters.push({ chart: 'u', data: u?.plots ?? [] })\n\n default:\n }\n\n plotters = plotters.map(plotter => { return { ...plotter,\n data: plotter.data.map(plot => { return { ...plot,\n x: formatDate(Number(plot.x))\n }\n })\n }\n })\n\n return html`\n <div class=\"header\">\n <div class=\"title\"><md-icon>apps</md-icon>${i18next.t('title.spc-chart')}</div>\n <ox-filters-form-base\n class=\"filters\"\n .value=${this.filtersValue}\n .filters=${this.filtersConfig}\n ?url-params-sensitive=${false}\n @filters-change=${(e: CustomEvent) => { this.fetchSpcChart()\n }}\n >\n </ox-filters-form-base>\n </div>\n\n ${plotters.map(({ chart, data }) =>\n chart == 'xbar-r'\n ? html` <ox-chart-xbar-r class=\"chart\" .plots=${data}></ox-chart-xbar-r> `\n : chart == 'i-mr'\n ? html` <ox-chart-i-mr class=\"chart\" .plots=${data}></ox-chart-i-mr> `\n : chart == 'u'\n ? html` <ox-chart-u class=\"chart\" .plots=${data}></ox-chart-u> `\n : chart == 'c'\n ? html` <ox-chart-c class=\"chart\" .plots=${data}></ox-chart-c> `\n : chart == 'p'\n ? html` <ox-chart-p class=\"chart\" .plots=${data}></ox-chart-p> `\n : chart == 'np'\n ? html` <ox-chart-np class=\"chart\" .plots=${data}></ox-chart-np> `\n : nothing\n )}\n `\n }\n\n updated(changes: PropertyValues<this>) { if (!changes.has('spcChart')) { this.fetchSpcChart()\n }\n }\n\n async pageUpdated(changes: any, lifecycle: any) { if (this.active) { this.dataSetId = lifecycle.resourceId\n }\n }\n\n async fetchSpcChart() { const { dataSetId,\n dateRange: [fromDate, toDate],\n variable,\n chartType\n } = (await this.formBase.getQueryFilters()).reduce((sum, field) => { sum[field.name] = field.value\n return sum\n }, {} as any)\n\n if (!(dataSetId && fromDate && toDate && variable && chartType)) { return\n }\n\n const response = await client.query({ query: gql`\n query spcChart(\n $dataSetId: String!\n $variable: String!\n $chartType: String!\n $fromDate: String!\n $toDate: String!\n ) { spcChart(\n dataSetId: $dataSetId\n variable: $variable\n chartType: $chartType\n fromDate: $fromDate\n toDate: $toDate\n ) { dataSet { id\n name\n }\n variable\n charts { chartType\n controlLimits { ucl\n lcl\n cl\n }\n specLimits { usl\n lsl\n target\n }\n plots { x\n values\n xbar\n r\n i\n mr\n n\n defects\n }\n }\n }\n }\n `,\n variables: { dataSetId,\n variable,\n chartType,\n fromDate,\n toDate\n }\n })\n\n this.spcChart = response.data.spcChart\n }\n\n async fetchVariables(id: string): Promise<{ display: string; value: string }[]> { const response = await client.query({ query: gql`\n query dataSet($id: String!) { dataSet(id: $id) { dataItems { name\n tag\n }\n }\n }\n `,\n variables: { id\n }\n })\n\n return response.data.dataSet.dataItems.map(dataItem => { return { display: dataItem.name,\n value: dataItem.name\n }\n })\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export default function route(page: any): any;
@@ -0,0 +1,8 @@
1
+ export default function route(page) {
2
+ switch (page) {
3
+ case 'spc-chart':
4
+ import('./pages/spc-chart-page');
5
+ return page;
6
+ }
7
+ }
8
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../client/route.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,IAAI;IAChC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW;YACd,MAAM,CAAC,wBAAwB,CAAC,CAAA;YAChC,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC","sourcesContent":["export default function route(page) {\n switch (page) {\n case 'spc-chart':\n import('./pages/spc-chart-page')\n return page\n }\n}\n"]}