@things-factory/spc 9.1.19 → 10.0.0-beta.2
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.
|
@@ -9,13 +9,7 @@ import '@operato/spc/ox-chart-np.js';
|
|
|
9
9
|
import { PageView } from '@operato/shell';
|
|
10
10
|
import { PropertyValues } from 'lit';
|
|
11
11
|
import { FilterValue, OxFiltersFormBase } from '@operato/form';
|
|
12
|
-
declare const SpcChartPage_base: (new (...args: any[]) =>
|
|
13
|
-
_storeUnsubscribe: import("redux").Unsubscribe;
|
|
14
|
-
connectedCallback(): void;
|
|
15
|
-
disconnectedCallback(): void;
|
|
16
|
-
stateChanged(_state: unknown): void;
|
|
17
|
-
readonly isConnected: boolean;
|
|
18
|
-
}) & (new (...args: any[]) => import("lit").LitElement) & typeof PageView;
|
|
12
|
+
declare const SpcChartPage_base: (new (...args: any[]) => import("lit").LitElement) & typeof PageView;
|
|
19
13
|
export declare class SpcChartPage extends SpcChartPage_base {
|
|
20
14
|
static styles: import("lit").CSSResult[];
|
|
21
15
|
dataSetId?: string;
|
|
@@ -8,13 +8,12 @@ import '@operato/spc/ox-chart-c.js';
|
|
|
8
8
|
import '@operato/spc/ox-chart-p.js';
|
|
9
9
|
import '@operato/spc/ox-chart-np.js';
|
|
10
10
|
import { ScrollbarStyles, CommonHeaderStyles } from '@operato/styles';
|
|
11
|
-
import { PageView
|
|
11
|
+
import { PageView } from '@operato/shell';
|
|
12
12
|
import { css, html, nothing } from 'lit';
|
|
13
13
|
import { customElement, query, state } from 'lit/decorators.js';
|
|
14
14
|
import { client } from '@operato/graphql';
|
|
15
15
|
import { i18next, localize } from '@operato/i18n';
|
|
16
16
|
import { OxFiltersFormBase } from '@operato/form';
|
|
17
|
-
import { connect } from 'pwa-helpers/connect-mixin';
|
|
18
17
|
import gql from 'graphql-tag';
|
|
19
18
|
function formatDate(timestamp) {
|
|
20
19
|
const date = new Date(timestamp);
|
|
@@ -26,7 +25,7 @@ function formatDate(timestamp) {
|
|
|
26
25
|
const seconds = String(date.getSeconds()).padStart(2, '0');
|
|
27
26
|
return `${month}-${day} ${hours}:${minutes}`;
|
|
28
27
|
}
|
|
29
|
-
let SpcChartPage = class SpcChartPage extends
|
|
28
|
+
let SpcChartPage = class SpcChartPage extends localize(i18next)(PageView) {
|
|
30
29
|
constructor() {
|
|
31
30
|
super(...arguments);
|
|
32
31
|
this.dataSetId = '';
|
|
@@ -38,36 +37,31 @@ let SpcChartPage = class SpcChartPage extends connect(store)(localize(i18next)(P
|
|
|
38
37
|
ScrollbarStyles,
|
|
39
38
|
CommonHeaderStyles,
|
|
40
39
|
css `
|
|
41
|
-
:host {
|
|
42
|
-
display: flex;
|
|
40
|
+
:host { display: flex;
|
|
43
41
|
flex-direction: column;
|
|
44
42
|
|
|
45
43
|
width: 100%;
|
|
46
|
-
|
|
44
|
+
}
|
|
47
45
|
|
|
48
|
-
.chart {
|
|
49
|
-
flex: 1;
|
|
46
|
+
.chart { flex: 1;
|
|
50
47
|
padding: var(--spacing-medium);
|
|
51
|
-
|
|
48
|
+
}
|
|
52
49
|
`
|
|
53
50
|
]; }
|
|
54
51
|
get filtersConfig() {
|
|
55
52
|
return [
|
|
56
|
-
{
|
|
57
|
-
name: 'dataSetId',
|
|
53
|
+
{ name: 'dataSetId',
|
|
58
54
|
type: 'resource-id',
|
|
59
55
|
label: 'dataset',
|
|
60
56
|
operator: 'eq',
|
|
61
|
-
options: {
|
|
62
|
-
queryName: 'dataSets'
|
|
57
|
+
options: { queryName: 'dataSets'
|
|
63
58
|
},
|
|
64
59
|
onchange: (value, formBase) => {
|
|
65
60
|
requestAnimationFrame(async () => {
|
|
66
61
|
const variableFilter = formBase.getFieldByName('variable');
|
|
67
62
|
variableFilter.value = '';
|
|
68
63
|
this.variables = [
|
|
69
|
-
{
|
|
70
|
-
display: '',
|
|
64
|
+
{ display: '',
|
|
71
65
|
value: ''
|
|
72
66
|
},
|
|
73
67
|
...(await this.fetchVariables(value))
|
|
@@ -77,38 +71,31 @@ let SpcChartPage = class SpcChartPage extends connect(store)(localize(i18next)(P
|
|
|
77
71
|
return false; /* whether filters-change event triggered or not */
|
|
78
72
|
}
|
|
79
73
|
},
|
|
80
|
-
{
|
|
81
|
-
name: 'variable',
|
|
74
|
+
{ name: 'variable',
|
|
82
75
|
type: 'select',
|
|
83
76
|
label: 'variable',
|
|
84
77
|
operator: 'eq',
|
|
85
78
|
options: () => this.variables,
|
|
86
79
|
onchange: value => (this.variable = value)
|
|
87
80
|
},
|
|
88
|
-
{
|
|
89
|
-
name: 'chartType',
|
|
81
|
+
{ name: 'chartType',
|
|
90
82
|
type: 'select',
|
|
91
83
|
label: 'chart',
|
|
92
84
|
operator: 'eq',
|
|
93
85
|
options: ['Xbar-R', 'I-MR', 'C', 'U', 'P', 'NP'],
|
|
94
86
|
onchange: value => (this.chartType = value)
|
|
95
87
|
},
|
|
96
|
-
{
|
|
97
|
-
name: 'dateRange',
|
|
88
|
+
{ name: 'dateRange',
|
|
98
89
|
type: 'date',
|
|
99
90
|
label: 'date',
|
|
100
91
|
operator: 'between',
|
|
101
92
|
value: [
|
|
102
|
-
{
|
|
103
|
-
|
|
104
|
-
params: {
|
|
105
|
-
relativeDays: -30
|
|
93
|
+
{ name: 'today',
|
|
94
|
+
params: { relativeDays: -30
|
|
106
95
|
}
|
|
107
96
|
},
|
|
108
|
-
{
|
|
109
|
-
|
|
110
|
-
params: {
|
|
111
|
-
relativeDays: -1
|
|
97
|
+
{ name: 'today',
|
|
98
|
+
params: { relativeDays: -1
|
|
112
99
|
}
|
|
113
100
|
}
|
|
114
101
|
]
|
|
@@ -116,8 +103,7 @@ let SpcChartPage = class SpcChartPage extends connect(store)(localize(i18next)(P
|
|
|
116
103
|
];
|
|
117
104
|
}
|
|
118
105
|
get context() {
|
|
119
|
-
return {
|
|
120
|
-
title: i18next.t('title.spc-chart'),
|
|
106
|
+
return { title: i18next.t('title.spc-chart'),
|
|
121
107
|
help: 'spc/spc-chart'
|
|
122
108
|
};
|
|
123
109
|
}
|
|
@@ -153,11 +139,9 @@ let SpcChartPage = class SpcChartPage extends connect(store)(localize(i18next)(P
|
|
|
153
139
|
default:
|
|
154
140
|
}
|
|
155
141
|
plotters = plotters.map(plotter => {
|
|
156
|
-
return {
|
|
157
|
-
...plotter,
|
|
142
|
+
return { ...plotter,
|
|
158
143
|
data: plotter.data.map(plot => {
|
|
159
|
-
return {
|
|
160
|
-
...plot,
|
|
144
|
+
return { ...plot,
|
|
161
145
|
x: formatDate(Number(plot.x))
|
|
162
146
|
};
|
|
163
147
|
})
|
|
@@ -211,41 +195,33 @@ let SpcChartPage = class SpcChartPage extends connect(store)(localize(i18next)(P
|
|
|
211
195
|
if (!(dataSetId && fromDate && toDate && variable && chartType)) {
|
|
212
196
|
return;
|
|
213
197
|
}
|
|
214
|
-
const response = await client.query({
|
|
215
|
-
query: gql `
|
|
198
|
+
const response = await client.query({ query: gql `
|
|
216
199
|
query spcChart(
|
|
217
200
|
$dataSetId: String!
|
|
218
201
|
$variable: String!
|
|
219
202
|
$chartType: String!
|
|
220
203
|
$fromDate: String!
|
|
221
204
|
$toDate: String!
|
|
222
|
-
) {
|
|
223
|
-
spcChart(
|
|
205
|
+
) { spcChart(
|
|
224
206
|
dataSetId: $dataSetId
|
|
225
207
|
variable: $variable
|
|
226
208
|
chartType: $chartType
|
|
227
209
|
fromDate: $fromDate
|
|
228
210
|
toDate: $toDate
|
|
229
|
-
) {
|
|
230
|
-
dataSet {
|
|
231
|
-
id
|
|
211
|
+
) { dataSet { id
|
|
232
212
|
name
|
|
233
|
-
|
|
213
|
+
}
|
|
234
214
|
variable
|
|
235
|
-
charts {
|
|
236
|
-
|
|
237
|
-
controlLimits {
|
|
238
|
-
ucl
|
|
215
|
+
charts { chartType
|
|
216
|
+
controlLimits { ucl
|
|
239
217
|
lcl
|
|
240
218
|
cl
|
|
241
|
-
|
|
242
|
-
specLimits {
|
|
243
|
-
usl
|
|
219
|
+
}
|
|
220
|
+
specLimits { usl
|
|
244
221
|
lsl
|
|
245
222
|
target
|
|
246
|
-
|
|
247
|
-
plots {
|
|
248
|
-
x
|
|
223
|
+
}
|
|
224
|
+
plots { x
|
|
249
225
|
values
|
|
250
226
|
xbar
|
|
251
227
|
r
|
|
@@ -253,13 +229,12 @@ let SpcChartPage = class SpcChartPage extends connect(store)(localize(i18next)(P
|
|
|
253
229
|
mr
|
|
254
230
|
n
|
|
255
231
|
defects
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
260
236
|
`,
|
|
261
|
-
variables: {
|
|
262
|
-
dataSetId,
|
|
237
|
+
variables: { dataSetId,
|
|
263
238
|
variable,
|
|
264
239
|
chartType,
|
|
265
240
|
fromDate,
|
|
@@ -269,24 +244,18 @@ let SpcChartPage = class SpcChartPage extends connect(store)(localize(i18next)(P
|
|
|
269
244
|
this.spcChart = response.data.spcChart;
|
|
270
245
|
}
|
|
271
246
|
async fetchVariables(id) {
|
|
272
|
-
const response = await client.query({
|
|
273
|
-
|
|
274
|
-
query dataSet($id: String!) {
|
|
275
|
-
dataSet(id: $id) {
|
|
276
|
-
dataItems {
|
|
277
|
-
name
|
|
247
|
+
const response = await client.query({ query: gql `
|
|
248
|
+
query dataSet($id: String!) { dataSet(id: $id) { dataItems { name
|
|
278
249
|
tag
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
282
253
|
`,
|
|
283
|
-
variables: {
|
|
284
|
-
id
|
|
254
|
+
variables: { id
|
|
285
255
|
}
|
|
286
256
|
});
|
|
287
257
|
return response.data.dataSet.dataItems.map(dataItem => {
|
|
288
|
-
return {
|
|
289
|
-
display: dataItem.name,
|
|
258
|
+
return { display: dataItem.name,
|
|
290
259
|
value: dataItem.name
|
|
291
260
|
};
|
|
292
261
|
});
|
|
@@ -1 +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, store } 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 { connect } from 'pwa-helpers/connect-mixin'\nimport gql from 'graphql-tag'\n\nfunction formatDate(timestamp: number) {\n 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 connect(store)(localize(i18next)(PageView)) {\n static styles = [\n ScrollbarStyles,\n CommonHeaderStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n width: 100%;\n }\n\n .chart {\n 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[] {\n return [\n {\n name: 'dataSetId',\n type: 'resource-id',\n label: 'dataset',\n operator: 'eq',\n options: {\n queryName: 'dataSets'\n },\n onchange: (value, formBase) => {\n requestAnimationFrame(async () => {\n const variableFilter = formBase.getFieldByName('variable') as HTMLInputElement\n variableFilter.value = ''\n\n this.variables = [\n {\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 {\n name: 'variable',\n type: 'select',\n label: 'variable',\n operator: 'eq',\n options: () => this.variables,\n onchange: value => (this.variable = value)\n },\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 {\n name: 'dateRange',\n type: 'date',\n label: 'date',\n operator: 'between',\n value: [\n {\n name: 'today',\n params: {\n relativeDays: -30\n }\n },\n {\n name: 'today',\n params: {\n relativeDays: -1\n }\n }\n ]\n }\n ]\n }\n\n get context() {\n return {\n title: i18next.t('title.spc-chart'),\n help: 'spc/spc-chart'\n }\n }\n\n render() {\n const { dataSet = {}, variable, charts = [] } = this.spcChart || {}\n\n var plotters: { chart: string; data: any[] }[] = []\n\n switch (this.chartType) {\n 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 => {\n return {\n ...plotter,\n data: plotter.data.map(plot => {\n return {\n ...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) => {\n 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>) {\n if (!changes.has('spcChart')) {\n this.fetchSpcChart()\n }\n }\n\n async pageUpdated(changes: any, lifecycle: any) {\n if (this.active) {\n this.dataSetId = lifecycle.resourceId\n }\n }\n\n async fetchSpcChart() {\n const {\n dataSetId,\n dateRange: [fromDate, toDate],\n variable,\n chartType\n } = (await this.formBase.getQueryFilters()).reduce((sum, field) => {\n sum[field.name] = field.value\n return sum\n }, {} as any)\n\n if (!(dataSetId && fromDate && toDate && variable && chartType)) {\n return\n }\n\n const response = await client.query({\n query: gql`\n query spcChart(\n $dataSetId: String!\n $variable: String!\n $chartType: String!\n $fromDate: String!\n $toDate: String!\n ) {\n spcChart(\n dataSetId: $dataSetId\n variable: $variable\n chartType: $chartType\n fromDate: $fromDate\n toDate: $toDate\n ) {\n dataSet {\n id\n name\n }\n variable\n charts {\n chartType\n controlLimits {\n ucl\n lcl\n cl\n }\n specLimits {\n usl\n lsl\n target\n }\n plots {\n x\n values\n xbar\n r\n i\n mr\n n\n defects\n }\n }\n }\n }\n `,\n variables: {\n 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 }[]> {\n const response = await client.query({\n query: gql`\n query dataSet($id: String!) {\n dataSet(id: $id) {\n dataItems {\n name\n tag\n }\n }\n }\n `,\n variables: {\n id\n }\n })\n\n return response.data.dataSet.dataItems.map(dataItem => {\n return {\n display: dataItem.name,\n value: dataItem.name\n }\n })\n }\n}\n"]}
|
|
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"]}
|