{"version":3,"file":"js/app.dca3a009.js","mappings":"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","sources":["webpack://frontend/./src/api/api.ts","webpack://frontend/./src/api/baseUrl.ts","webpack://frontend/./src/api/clients.ts","webpack://frontend/./src/common/helpers/LoadingMixin.ts","webpack://frontend/./src/common/helpers/PresentationModeStore.ts","webpack://frontend/./src/common/helpers/StoreBase.ts","webpack://frontend/./src/common/helpers/downloadStore.ts","webpack://frontend/./src/common/helpers/loading.ts","webpack://frontend/./src/common/helpers/pushNotifications.ts","webpack://frontend/./src/customers/stores/CustomerStore.ts","webpack://frontend/./src/i18n.ts","webpack://frontend/./src/auth/auth0.ts","webpack://frontend/./src/auth/getAuth0Connection.ts","webpack://frontend/./src/common/components/IconWrapper.vue?2010","webpack://frontend/./src/common/components/IconWrapper.vue?900d","webpack://frontend/./src/common/components/IconWrapper.vue?1c2a","webpack://frontend/./src/common/components/IconWrapper.vue","webpack://frontend/./src/common/components/PageHeader.vue?fce5","webpack://frontend/./src/common/components/PageHeader.vue?034d","webpack://frontend/./src/common/components/PageHeader.vue?ba3e","webpack://frontend/./src/common/components/PageHeader.vue","webpack://frontend/./src/common/helpers/BackgroundSyncStore.ts","webpack://frontend/./src/registerServiceWorker.ts","webpack://frontend/./src/customers/helpers/nonStaffSingleCustomerGuard.ts","webpack://frontend/./src/router/authGuard.ts","webpack://frontend/./src/layout/BaseLayout.vue?e342","webpack://frontend/./src/layout/Breadcrumbs.vue?2019","webpack://frontend/./src/layout/Breadcrumbs.vue?008b","webpack://frontend/./src/layout/Breadcrumbs.vue?ff21","webpack://frontend/./src/layout/Breadcrumbs.vue","webpack://frontend/./src/layout/FooterLayout.vue?8992","webpack://frontend/./src/layout/FooterLayout.vue?95f5","webpack://frontend/./src/layout/FooterLayout.vue?23e5","webpack://frontend/./src/layout/FooterLayout.vue","webpack://frontend/./src/layout/Navigation.vue?df4e","webpack://frontend/./src/layout/NavigationItem.vue?43f8","webpack://frontend/./src/layout/NavigationItem.vue?2273","webpack://frontend/./src/layout/NavigationItem.vue?e663","webpack://frontend/./src/layout/NavigationItem.vue","webpack://frontend/./src/layout/Navigation.vue?5a43","webpack://frontend/./src/layout/Navigation.vue?e29a","webpack://frontend/./src/layout/Navigation.vue","webpack://frontend/./src/layout/BaseLayout.vue?824c","webpack://frontend/./src/layout/BaseLayout.vue?5c95","webpack://frontend/./src/layout/BaseLayout.vue","webpack://frontend/./src/layout/RouteParent.vue?ac63","webpack://frontend/./src/layout/RouteParent.vue?e7cf","webpack://frontend/./src/layout/RouteParent.vue?1b56","webpack://frontend/./src/layout/RouteParent.vue","webpack://frontend/./src/router/routes.ts","webpack://frontend/./src/router/router.ts","webpack://frontend/./src/App.vue?356d","webpack://frontend/./src/App.vue?38a5","webpack://frontend/./src/App.vue?a37c","webpack://frontend/./src/App.vue","webpack://frontend/./src/styles/fontAwesomeIcons.ts","webpack://frontend/./src/main.ts","webpack://frontend/./src/assets/ sync ^\\.\\/.*\\.svg$","webpack://frontend/webpack/bootstrap","webpack://frontend/webpack/runtime/amd options","webpack://frontend/webpack/runtime/chunk loaded","webpack://frontend/webpack/runtime/compat get default export","webpack://frontend/webpack/runtime/create fake namespace object","webpack://frontend/webpack/runtime/define property getters","webpack://frontend/webpack/runtime/ensure chunk","webpack://frontend/webpack/runtime/get javascript chunk filename","webpack://frontend/webpack/runtime/get mini-css chunk filename","webpack://frontend/webpack/runtime/global","webpack://frontend/webpack/runtime/hasOwnProperty shorthand","webpack://frontend/webpack/runtime/load script","webpack://frontend/webpack/runtime/make namespace object","webpack://frontend/webpack/runtime/publicPath","webpack://frontend/webpack/runtime/css loading","webpack://frontend/webpack/runtime/jsonp chunk loading","webpack://frontend/webpack/startup"],"sourcesContent":["import { baseUrl } from '@/api/baseUrl';\nimport {\n AnonymousClient,\n CustomersClient, DepartmentsClient,\n LubricantFillingClient,\n LubricantsClient,\n MachinesClient,\n MachineToursClient,\n MachineTypesClient,\n MeasurementsClient,\n NotificationsClient,\n ProductGroupsClient,\n ProductsClient,\n TenantClient,\n UsersClient,\n} from '@/api/clients';\nimport { ToastProgrammatic } from 'buefy';\nimport Vue from 'vue';\n\nfunction createTimeoutSignal(): AbortSignal {\n const controller = new AbortController();\n setTimeout(() => controller.abort(), 5000);\n return controller.signal;\n}\n\nconst fetchWrapper: { fetch: typeof window.fetch } = {\n async fetch(request, options): Promise {\n const accessToken = await Vue.prototype.$auth.getTokenSilently();\n\n try {\n return await window.fetch(request, {\n ...options,\n signal: options?.method === 'POST' ? createTimeoutSignal() : null,\n headers: {\n ...options?.headers,\n Authorization: 'Bearer ' + accessToken,\n },\n });\n } catch (e) {\n if ((e instanceof TypeError || e instanceof DOMException) && options?.method?.toUpperCase() === 'POST') {\n ToastProgrammatic.open({\n message: 'Anfrage wird bis zu 24h lang zwischengespeichert und wiederholt, wenn eine Netzwerkverbindung möglich ist.',\n type: 'is-warning',\n });\n\n return new Response(null, { status: 200 });\n } else {\n throw e;\n }\n }\n },\n};\n\nexport const customersClient = new CustomersClient(baseUrl, fetchWrapper);\nexport const usersClient = new UsersClient(baseUrl, fetchWrapper);\nexport const machinesClient = new MachinesClient(baseUrl, fetchWrapper);\nexport const machineTypesClient = new MachineTypesClient(baseUrl, fetchWrapper);\nexport const measurementsClient = new MeasurementsClient(baseUrl, fetchWrapper);\nexport const lubricantsClient = new LubricantsClient(baseUrl, fetchWrapper);\nexport const productsClient = new ProductsClient(baseUrl, fetchWrapper);\nexport const productGroupsClient = new ProductGroupsClient(baseUrl, fetchWrapper);\nexport const lubricantFillingClient = new LubricantFillingClient(baseUrl, fetchWrapper);\nexport const notificationsClient = new NotificationsClient(baseUrl, fetchWrapper);\nexport const toursClient = new MachineToursClient(baseUrl, fetchWrapper);\nexport const tenantClient = new TenantClient(baseUrl, fetchWrapper);\nexport const anonymousClient = new AnonymousClient(baseUrl);\nexport const departmentsClient = new DepartmentsClient(baseUrl, fetchWrapper);\n","export const baseUrl = process.env.NODE_ENV === 'production' ? window.location.origin : 'http://localhost:5000';\n","//----------------------\n// \n// Generated using the NSwag toolchain v14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nexport class AnonymousClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n getMachines(customerId: string | undefined, departmentId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/anonymous/machines?\";\n if (customerId === null)\n throw new Error(\"The parameter 'customerId' cannot be null.\");\n else if (customerId !== undefined)\n url_ += \"customerId=\" + encodeURIComponent(\"\" + customerId) + \"&\";\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetMachines(_response);\n });\n }\n\n protected processGetMachines(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MachineModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n exportMachine(machineId: string | undefined, from: string | undefined, to: string | undefined): Promise {\n let url_ = this.baseUrl + \"/anonymous/exportMachine?\";\n if (machineId === null)\n throw new Error(\"The parameter 'machineId' cannot be null.\");\n else if (machineId !== undefined)\n url_ += \"machineId=\" + encodeURIComponent(\"\" + machineId) + \"&\";\n if (from === null)\n throw new Error(\"The parameter 'from' cannot be null.\");\n else if (from !== undefined)\n url_ += \"from=\" + encodeURIComponent(\"\" + from) + \"&\";\n if (to === null)\n throw new Error(\"The parameter 'to' cannot be null.\");\n else if (to !== undefined)\n url_ += \"to=\" + encodeURIComponent(\"\" + to) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processExportMachine(_response);\n });\n }\n\n protected processExportMachine(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n exportAll(customerId: string | undefined, departmentId: string | null | undefined, from: string | undefined, to: string | undefined): Promise {\n let url_ = this.baseUrl + \"/anonymous/export-all?\";\n if (customerId === null)\n throw new Error(\"The parameter 'customerId' cannot be null.\");\n else if (customerId !== undefined)\n url_ += \"customerId=\" + encodeURIComponent(\"\" + customerId) + \"&\";\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n if (from === null)\n throw new Error(\"The parameter 'from' cannot be null.\");\n else if (from !== undefined)\n url_ += \"from=\" + encodeURIComponent(\"\" + from) + \"&\";\n if (to === null)\n throw new Error(\"The parameter 'to' cannot be null.\");\n else if (to !== undefined)\n url_ += \"to=\" + encodeURIComponent(\"\" + to) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class CustomersClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n getEnrichedById(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}/enriched\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetEnrichedById(_response);\n });\n }\n\n protected processGetEnrichedById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EnrichedCustomerModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createCustomer(model: CreateCustomerModel): Promise {\n let url_ = this.baseUrl + \"/api/Customers\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCreateCustomer(_response);\n });\n }\n\n protected processCreateCustomer(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAll(): Promise {\n let url_ = this.baseUrl + \"/api/Customers\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CustomerModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateMeasurementInterval(id: string, model: OptionalIntValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}/measurementInterval\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUpdateMeasurementInterval(_response);\n });\n }\n\n protected processUpdateMeasurementInterval(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n assignUser(id: string, model: AssignUserModel): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}/assignUser\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAssignUser(_response);\n });\n }\n\n protected processAssignUser(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCustomersByAssignedUser(userId: string): Promise {\n let url_ = this.baseUrl + \"/api/Customers/byUser/{userId}\";\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetCustomersByAssignedUser(_response);\n });\n }\n\n protected processGetCustomersByAssignedUser(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CustomersAndDepartmentsModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n parseMachinesForLabImport(id: string, departmentId: string | null | undefined, files: FileParameter[] | undefined): Promise<{ [key: string]: string; }> {\n let url_ = this.baseUrl + \"/api/Customers/{id}/labImport/parseMachines?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (files === null || files === undefined)\n throw new Error(\"The parameter 'files' cannot be null.\");\n else\n files.forEach(item_ => content_.append(\"files\", item_.data, item_.fileName ? item_.fileName : \"files\") );\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processParseMachinesForLabImport(_response);\n });\n }\n\n protected processParseMachinesForLabImport(response: Response): Promise<{ [key: string]: string; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: string; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: string; }>(null as any);\n }\n\n importLabResults(id: string, departmentId: string | null | undefined, files: FileParameter[] | undefined, machineIdsByName: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}/labImport?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (files === null || files === undefined)\n throw new Error(\"The parameter 'files' cannot be null.\");\n else\n files.forEach(item_ => content_.append(\"Files\", item_.data, item_.fileName ? item_.fileName : \"Files\") );\n if (machineIdsByName === null || machineIdsByName === undefined)\n throw new Error(\"The parameter 'machineIdsByName' cannot be null.\");\n else\n content_.append(\"MachineIdsByName\", machineIdsByName.toString());\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processImportLabResults(_response);\n });\n }\n\n protected processImportLabResults(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createTour(id: string, departmentId: string | null | undefined, type: MeasurementType | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}/tours?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n if (type === null)\n throw new Error(\"The parameter 'type' cannot be null.\");\n else if (type !== undefined)\n url_ += \"type=\" + encodeURIComponent(\"\" + type) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCreateTour(_response);\n });\n }\n\n protected processCreateTour(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValueModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getNotifications(id: string, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}/notifications?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetNotifications(_response);\n });\n }\n\n protected processGetNotifications(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NotificationModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getMachineAggregation(id: string, departmentId: string | undefined, from: string | undefined, to: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}/aggregations/machines?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (departmentId === null)\n throw new Error(\"The parameter 'departmentId' cannot be null.\");\n else if (departmentId !== undefined)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n if (from === null)\n throw new Error(\"The parameter 'from' cannot be null.\");\n else if (from !== undefined)\n url_ += \"from=\" + encodeURIComponent(\"\" + from) + \"&\";\n if (to === null)\n throw new Error(\"The parameter 'to' cannot be null.\");\n else if (to !== undefined)\n url_ += \"to=\" + encodeURIComponent(\"\" + to) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetMachineAggregation(_response);\n });\n }\n\n protected processGetMachineAggregation(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MachineAggregationModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAllProducts(id: string, departmentId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}/allProducts?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetAllProducts(_response);\n });\n }\n\n protected processGetAllProducts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AllProductsModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createDepartment(id: string, body: CreateCustomerModel): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}/departments\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCreateDepartment(_response);\n });\n }\n\n protected processCreateDepartment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getDepartments(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}/departments\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetDepartments(_response);\n });\n }\n\n protected processGetDepartments(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DepartmentModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n rename(id: string, body: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}/rename\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRename(_response);\n });\n }\n\n protected processRename(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getById(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetById(_response);\n });\n }\n\n protected processGetById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CustomerModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n delete(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Customers/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class DepartmentsClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n addMachines(id: string, body: MultipleIdsModel): Promise {\n let url_ = this.baseUrl + \"/api/Departments/{id}/machines\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddMachines(_response);\n });\n }\n\n protected processAddMachines(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getByCustomerId(customerId: string): Promise {\n let url_ = this.baseUrl + \"/api/Departments/byCustomer/{customerId}\";\n if (customerId === undefined || customerId === null)\n throw new Error(\"The parameter 'customerId' must be defined.\");\n url_ = url_.replace(\"{customerId}\", encodeURIComponent(\"\" + customerId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetByCustomerId(_response);\n });\n }\n\n protected processGetByCustomerId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DepartmentModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEnrichedById(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Departments/{id}/enriched\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetEnrichedById(_response);\n });\n }\n\n protected processGetEnrichedById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EnrichedDepartmentModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateMeasurementInterval(id: string, model: OptionalIntValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Departments/{id}/measurementInterval\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUpdateMeasurementInterval(_response);\n });\n }\n\n protected processUpdateMeasurementInterval(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n assignUser(id: string, model: AssignUserModel): Promise {\n let url_ = this.baseUrl + \"/api/Departments/{id}/assignUser\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAssignUser(_response);\n });\n }\n\n protected processAssignUser(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getNotifications(id: string, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Departments/{id}/notifications?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetNotifications(_response);\n });\n }\n\n protected processGetNotifications(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NotificationModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n rename(id: string, body: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Departments/{id}/rename\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRename(_response);\n });\n }\n\n protected processRename(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAll(): Promise {\n let url_ = this.baseUrl + \"/api/Departments\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DepartmentModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getById(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Departments/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetById(_response);\n });\n }\n\n protected processGetById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DepartmentModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n delete(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Departments/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class LubricantFillingClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n delete(id: string): Promise {\n let url_ = this.baseUrl + \"/api/LubricantFilling/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getById(id: string): Promise {\n let url_ = this.baseUrl + \"/api/LubricantFilling/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetById(_response);\n });\n }\n\n protected processGetById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LubricantFillingModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateLubricant(id: string, model: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/LubricantFilling/{id}/lubricant\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUpdateLubricant(_response);\n });\n }\n\n protected processUpdateLubricant(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateDate(id: string, model: DateValueModel): Promise {\n let url_ = this.baseUrl + \"/api/LubricantFilling/{id}/date\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUpdateDate(_response);\n });\n }\n\n protected processUpdateDate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAll(): Promise {\n let url_ = this.baseUrl + \"/api/LubricantFilling\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LubricantFillingModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class LubricantsClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n createLubricant(model: CreateLubricantModel): Promise {\n let url_ = this.baseUrl + \"/api/Lubricants\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCreateLubricant(_response);\n });\n }\n\n protected processCreateLubricant(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAll(): Promise {\n let url_ = this.baseUrl + \"/api/Lubricants\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LubricantModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n changeThreshold(lubricantId: string, body: OptionalChangeFieldOptionalValueModelOfLubricantThresholdField): Promise {\n let url_ = this.baseUrl + \"/api/Lubricants/{lubricantId}/threshold\";\n if (lubricantId === undefined || lubricantId === null)\n throw new Error(\"The parameter 'lubricantId' must be defined.\");\n url_ = url_.replace(\"{lubricantId}\", encodeURIComponent(\"\" + lubricantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeThreshold(_response);\n });\n }\n\n protected processChangeThreshold(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getByMachine(machineId: string): Promise {\n let url_ = this.baseUrl + \"/api/Lubricants/by/machine/{machineId}\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetByMachine(_response);\n });\n }\n\n protected processGetByMachine(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LubricantModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getByCustomer(customerId: string, departmentId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Lubricants/by/customer/{customerId}?\";\n if (customerId === undefined || customerId === null)\n throw new Error(\"The parameter 'customerId' must be defined.\");\n url_ = url_.replace(\"{customerId}\", encodeURIComponent(\"\" + customerId));\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetByCustomer(_response);\n });\n }\n\n protected processGetByCustomer(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LubricantModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n uploadDocuments(id: string, files: FileParameter[] | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Lubricants/{id}/documents\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (files === null || files === undefined)\n throw new Error(\"The parameter 'files' cannot be null.\");\n else\n files.forEach(item_ => content_.append(\"files\", item_.data, item_.fileName ? item_.fileName : \"files\") );\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploadDocuments(_response);\n });\n }\n\n protected processUploadDocuments(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n removeDocument(id: string, documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/Lubricants/{id}/documents/{documentId}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (documentId === undefined || documentId === null)\n throw new Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRemoveDocument(_response);\n });\n }\n\n protected processRemoveDocument(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadDocument(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/Lubricants/documents/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDownloadDocument(_response);\n });\n }\n\n protected processDownloadDocument(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n renameDocument(id: string, documentId: string, model: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Lubricants/{id}/documents/{documentId}/name\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (documentId === undefined || documentId === null)\n throw new Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRenameDocument(_response);\n });\n }\n\n protected processRenameDocument(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n rename(id: string, body: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Lubricants/{id}/rename\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRename(_response);\n });\n }\n\n protected processRename(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getById(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Lubricants/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetById(_response);\n });\n }\n\n protected processGetById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LubricantModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n delete(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Lubricants/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class MachinesClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n createMachines(body: CreateMachinesModel): Promise {\n let url_ = this.baseUrl + \"/api/Machines\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCreateMachines(_response);\n });\n }\n\n protected processCreateMachines(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAll(): Promise {\n let url_ = this.baseUrl + \"/api/Machines\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MachineModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getByCustomer(customerId: string, departmentId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Machines/byCustomer/{customerId}?\";\n if (customerId === undefined || customerId === null)\n throw new Error(\"The parameter 'customerId' must be defined.\");\n url_ = url_.replace(\"{customerId}\", encodeURIComponent(\"\" + customerId));\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetByCustomer(_response);\n });\n }\n\n protected processGetByCustomer(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MachineModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAllByCustomer(customerId: string): Promise {\n let url_ = this.baseUrl + \"/api/Machines/byCustomer/{customerId}/all\";\n if (customerId === undefined || customerId === null)\n throw new Error(\"The parameter 'customerId' must be defined.\");\n url_ = url_.replace(\"{customerId}\", encodeURIComponent(\"\" + customerId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetAllByCustomer(_response);\n });\n }\n\n protected processGetAllByCustomer(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DepartmentMachineModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getOverview(machineId: string): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{machineId}/overview\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetOverview(_response);\n });\n }\n\n protected processGetOverview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MachineOverviewModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n addFilling(machineId: string, model: AddFillingModel): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{machineId}/filling\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddFilling(_response);\n });\n }\n\n protected processAddFilling(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n addMeasurement(machineId: string, model: CreateMeasurementModel): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{machineId}/measurement\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddMeasurement(_response);\n });\n }\n\n protected processAddMeasurement(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n importMeasurements(machineId: string, files: FileParameter[] | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{machineId}/measurements/import\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (files === null || files === undefined)\n throw new Error(\"The parameter 'files' cannot be null.\");\n else\n files.forEach(item_ => content_.append(\"files\", item_.data, item_.fileName ? item_.fileName : \"files\") );\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processImportMeasurements(_response);\n });\n }\n\n protected processImportMeasurements(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ImportResultModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n addProduct(machineId: string, model: AddMachineProductModel): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{machineId}/products\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddProduct(_response);\n });\n }\n\n protected processAddProduct(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getMachineProduct(machineId: string, productId: string): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{machineId}/products/{productId}\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n if (productId === undefined || productId === null)\n throw new Error(\"The parameter 'productId' must be defined.\");\n url_ = url_.replace(\"{productId}\", encodeURIComponent(\"\" + productId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetMachineProduct(_response);\n });\n }\n\n protected processGetMachineProduct(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MachineProductModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n removeProduct(machineId: string, productId: string): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{machineId}/products/{productId}\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n if (productId === undefined || productId === null)\n throw new Error(\"The parameter 'productId' must be defined.\");\n url_ = url_.replace(\"{productId}\", encodeURIComponent(\"\" + productId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRemoveProduct(_response);\n });\n }\n\n protected processRemoveProduct(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateMachineProductFillingAmount(machineId: string, productId: string, model: OptionalDecimalModel): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{machineId}/products/{productId}/fillingAmount\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n if (productId === undefined || productId === null)\n throw new Error(\"The parameter 'productId' must be defined.\");\n url_ = url_.replace(\"{productId}\", encodeURIComponent(\"\" + productId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUpdateMachineProductFillingAmount(_response);\n });\n }\n\n protected processUpdateMachineProductFillingAmount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateFillingQuantity(machineId: string, model: DecimalValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{machineId}/quantity\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUpdateFillingQuantity(_response);\n });\n }\n\n protected processUpdateFillingQuantity(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateMeasurementInterval(machineId: string, model: OptionalIntValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{machineId}/measurementInterval\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUpdateMeasurementInterval(_response);\n });\n }\n\n protected processUpdateMeasurementInterval(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateType(machineId: string, model: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{machineId}/type\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUpdateType(_response);\n });\n }\n\n protected processUpdateType(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n reorder(customerId: string, departmentId: string | null | undefined, model: ReorderMachinesModel): Promise {\n let url_ = this.baseUrl + \"/api/Machines/byCustomer/{customerId}/reorder?\";\n if (customerId === undefined || customerId === null)\n throw new Error(\"The parameter 'customerId' must be defined.\");\n url_ = url_.replace(\"{customerId}\", encodeURIComponent(\"\" + customerId));\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReorder(_response);\n });\n }\n\n protected processReorder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n export(machineId: string, from: string | undefined, to: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{machineId}/export?\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n if (from === null)\n throw new Error(\"The parameter 'from' cannot be null.\");\n else if (from !== undefined)\n url_ += \"from=\" + encodeURIComponent(\"\" + from) + \"&\";\n if (to === null)\n throw new Error(\"The parameter 'to' cannot be null.\");\n else if (to !== undefined)\n url_ += \"to=\" + encodeURIComponent(\"\" + to) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n exportAll(customerId: string | undefined, departmentId: string | null | undefined, from: string | undefined, to: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Machines/export-all?\";\n if (customerId === null)\n throw new Error(\"The parameter 'customerId' cannot be null.\");\n else if (customerId !== undefined)\n url_ += \"customerId=\" + encodeURIComponent(\"\" + customerId) + \"&\";\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n if (from === null)\n throw new Error(\"The parameter 'from' cannot be null.\");\n else if (from !== undefined)\n url_ += \"from=\" + encodeURIComponent(\"\" + from) + \"&\";\n if (to === null)\n throw new Error(\"The parameter 'to' cannot be null.\");\n else if (to !== undefined)\n url_ += \"to=\" + encodeURIComponent(\"\" + to) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n exportMachinesList(customerId: string | undefined, departmentId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Machines/exportMachinesList?\";\n if (customerId === null)\n throw new Error(\"The parameter 'customerId' cannot be null.\");\n else if (customerId !== undefined)\n url_ += \"customerId=\" + encodeURIComponent(\"\" + customerId) + \"&\";\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processExportMachinesList(_response);\n });\n }\n\n protected processExportMachinesList(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n rename(id: string, body: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{id}/rename\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRename(_response);\n });\n }\n\n protected processRename(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getById(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetById(_response);\n });\n }\n\n protected processGetById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MachineModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n delete(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Machines/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class MachineToursClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n finishTour(tourId: string): Promise {\n let url_ = this.baseUrl + \"/api/MachineTours/{tourId}/finish\";\n if (tourId === undefined || tourId === null)\n throw new Error(\"The parameter 'tourId' must be defined.\");\n url_ = url_.replace(\"{tourId}\", encodeURIComponent(\"\" + tourId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processFinishTour(_response);\n });\n }\n\n protected processFinishTour(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getByCustomer(customerId: string, departmentId: string | null | undefined, types: MeasurementType[] | undefined, page: number | undefined, pageSize: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MachineTours/by/customer/{customerId}?\";\n if (customerId === undefined || customerId === null)\n throw new Error(\"The parameter 'customerId' must be defined.\");\n url_ = url_.replace(\"{customerId}\", encodeURIComponent(\"\" + customerId));\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n if (types === null)\n throw new Error(\"The parameter 'types' cannot be null.\");\n else if (types !== undefined)\n types && types.forEach(item => { url_ += \"types=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (page === null)\n throw new Error(\"The parameter 'page' cannot be null.\");\n else if (page !== undefined)\n url_ += \"page=\" + encodeURIComponent(\"\" + page) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"pageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetByCustomer(_response);\n });\n }\n\n protected processGetByCustomer(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PagingResultOfMachineTourPagingModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n export(tourId: string): Promise {\n let url_ = this.baseUrl + \"/api/MachineTours/{tourId}/export\";\n if (tourId === undefined || tourId === null)\n throw new Error(\"The parameter 'tourId' must be defined.\");\n url_ = url_.replace(\"{tourId}\", encodeURIComponent(\"\" + tourId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAll(): Promise {\n let url_ = this.baseUrl + \"/api/MachineTours\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MachineTourModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getById(id: string): Promise {\n let url_ = this.baseUrl + \"/api/MachineTours/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetById(_response);\n });\n }\n\n protected processGetById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MachineTourModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n delete(id: string): Promise {\n let url_ = this.baseUrl + \"/api/MachineTours/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class MachineTypesClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n createMachineType(model: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/MachineTypes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCreateMachineType(_response);\n });\n }\n\n protected processCreateMachineType(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAll(): Promise {\n let url_ = this.baseUrl + \"/api/MachineTypes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MachineTypeModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n rename(id: string, body: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/MachineTypes/{id}/rename\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRename(_response);\n });\n }\n\n protected processRename(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getById(id: string): Promise {\n let url_ = this.baseUrl + \"/api/MachineTypes/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetById(_response);\n });\n }\n\n protected processGetById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MachineTypeModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n delete(id: string): Promise {\n let url_ = this.baseUrl + \"/api/MachineTypes/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class MeasurementsClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n getByMachinePaged(machineId: string, page: number | undefined, pageSize: number | undefined, lubricantId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Measurements/by/machine/{machineId}/paged?\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n if (page === null)\n throw new Error(\"The parameter 'page' cannot be null.\");\n else if (page !== undefined)\n url_ += \"page=\" + encodeURIComponent(\"\" + page) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"pageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (lubricantId !== undefined && lubricantId !== null)\n url_ += \"lubricantId=\" + encodeURIComponent(\"\" + lubricantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetByMachinePaged(_response);\n });\n }\n\n protected processGetByMachinePaged(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PagingResultOfMeasurementModelWithUser;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getByMachineByDateRange(machineId: string, from: string | null | undefined, to: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Measurements/by/machine/{machineId}/by/date?\";\n if (machineId === undefined || machineId === null)\n throw new Error(\"The parameter 'machineId' must be defined.\");\n url_ = url_.replace(\"{machineId}\", encodeURIComponent(\"\" + machineId));\n if (from !== undefined && from !== null)\n url_ += \"from=\" + encodeURIComponent(\"\" + from) + \"&\";\n if (to !== undefined && to !== null)\n url_ += \"to=\" + encodeURIComponent(\"\" + to) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetByMachineByDateRange(_response);\n });\n }\n\n protected processGetByMachineByDateRange(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MeasurementModelWithUser[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getByCustomer(customerId: string, departmentId: string | null | undefined, type: MeasurementType | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Measurements/by/customer/{customerId}?\";\n if (customerId === undefined || customerId === null)\n throw new Error(\"The parameter 'customerId' must be defined.\");\n url_ = url_.replace(\"{customerId}\", encodeURIComponent(\"\" + customerId));\n if (departmentId !== undefined && departmentId !== null)\n url_ += \"departmentId=\" + encodeURIComponent(\"\" + departmentId) + \"&\";\n if (type === null)\n throw new Error(\"The parameter 'type' cannot be null.\");\n else if (type !== undefined)\n url_ += \"type=\" + encodeURIComponent(\"\" + type) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetByCustomer(_response);\n });\n }\n\n protected processGetByCustomer(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MeasurementModelWithUser[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n changeValue(measurementId: string, model: ChangeFieldValueModelOfMeasurementFieldAndNullableDecimal): Promise {\n let url_ = this.baseUrl + \"/api/Measurements/{measurementId}/value\";\n if (measurementId === undefined || measurementId === null)\n throw new Error(\"The parameter 'measurementId' must be defined.\");\n url_ = url_.replace(\"{measurementId}\", encodeURIComponent(\"\" + measurementId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeValue(_response);\n });\n }\n\n protected processChangeValue(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n changeMeasurementDate(measurementId: string, model: DateValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Measurements/{measurementId}/measurementDate\";\n if (measurementId === undefined || measurementId === null)\n throw new Error(\"The parameter 'measurementId' must be defined.\");\n url_ = url_.replace(\"{measurementId}\", encodeURIComponent(\"\" + measurementId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeMeasurementDate(_response);\n });\n }\n\n protected processChangeMeasurementDate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n changeVisualState(measurementId: string, model: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Measurements/{measurementId}/visualState\";\n if (measurementId === undefined || measurementId === null)\n throw new Error(\"The parameter 'measurementId' must be defined.\");\n url_ = url_.replace(\"{measurementId}\", encodeURIComponent(\"\" + measurementId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeVisualState(_response);\n });\n }\n\n protected processChangeVisualState(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n changeIsOk(measurementId: string, model: BoolValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Measurements/{measurementId}/isOk\";\n if (measurementId === undefined || measurementId === null)\n throw new Error(\"The parameter 'measurementId' must be defined.\");\n url_ = url_.replace(\"{measurementId}\", encodeURIComponent(\"\" + measurementId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeIsOk(_response);\n });\n }\n\n protected processChangeIsOk(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n changeActions(measurementId: string, actions: MeasurementActionModel[]): Promise {\n let url_ = this.baseUrl + \"/api/Measurements/{measurementId}/actions\";\n if (measurementId === undefined || measurementId === null)\n throw new Error(\"The parameter 'measurementId' must be defined.\");\n url_ = url_.replace(\"{measurementId}\", encodeURIComponent(\"\" + measurementId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(actions);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeActions(_response);\n });\n }\n\n protected processChangeActions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadReport(measurementId: string): Promise {\n let url_ = this.baseUrl + \"/api/Measurements/{measurementId}/labReport\";\n if (measurementId === undefined || measurementId === null)\n throw new Error(\"The parameter 'measurementId' must be defined.\");\n url_ = url_.replace(\"{measurementId}\", encodeURIComponent(\"\" + measurementId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDownloadReport(_response);\n });\n }\n\n protected processDownloadReport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n delete(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Measurements/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getById(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Measurements/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetById(_response);\n });\n }\n\n protected processGetById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MeasurementModelWithUser;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAll(): Promise {\n let url_ = this.baseUrl + \"/api/Measurements\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MeasurementModelWithUser[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class NotificationsClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n getMyNotifications(limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Notifications/my/notifications?\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetMyNotifications(_response);\n });\n }\n\n protected processGetMyNotifications(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NotificationModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n addPushSubscription(body: PushSubscription): Promise {\n let url_ = this.baseUrl + \"/api/Notifications/my/pushSubscriptions\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddPushSubscription(_response);\n });\n }\n\n protected processAddPushSubscription(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n removePushSubscription(body: PushSubscription): Promise {\n let url_ = this.baseUrl + \"/api/Notifications/my/pushSubscriptions\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRemovePushSubscription(_response);\n });\n }\n\n protected processRemovePushSubscription(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getMyPushSubscriptions(): Promise {\n let url_ = this.baseUrl + \"/api/Notifications/my/pushSubscriptions\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetMyPushSubscriptions(_response);\n });\n }\n\n protected processGetMyPushSubscriptions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PushSubscription[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProductGroupsClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n createProductGroup(model: CreateProductGroupModel): Promise {\n let url_ = this.baseUrl + \"/api/ProductGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCreateProductGroup(_response);\n });\n }\n\n protected processCreateProductGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAll(): Promise {\n let url_ = this.baseUrl + \"/api/ProductGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProductGroupModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n setIsSpecial(id: string, isSpecial: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProductGroups/{id}/special?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (isSpecial === null)\n throw new Error(\"The parameter 'isSpecial' cannot be null.\");\n else if (isSpecial !== undefined)\n url_ += \"isSpecial=\" + encodeURIComponent(\"\" + isSpecial) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSetIsSpecial(_response);\n });\n }\n\n protected processSetIsSpecial(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n rename(id: string, body: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/ProductGroups/{id}/rename\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRename(_response);\n });\n }\n\n protected processRename(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getById(id: string): Promise {\n let url_ = this.baseUrl + \"/api/ProductGroups/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetById(_response);\n });\n }\n\n protected processGetById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProductGroupModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n delete(id: string): Promise {\n let url_ = this.baseUrl + \"/api/ProductGroups/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProductsClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n createProduct(model: CreateProductModel): Promise {\n let url_ = this.baseUrl + \"/api/Products\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCreateProduct(_response);\n });\n }\n\n protected processCreateProduct(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAll(): Promise {\n let url_ = this.baseUrl + \"/api/Products\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProductModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateGroup(id: string, model: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Products/{id}/group\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUpdateGroup(_response);\n });\n }\n\n protected processUpdateGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateUsageConcentration(id: string, model: OptionalDecimalModel): Promise {\n let url_ = this.baseUrl + \"/api/Products/{id}/usageConcentration\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUpdateUsageConcentration(_response);\n });\n }\n\n protected processUpdateUsageConcentration(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getByGroup(groupId: string | null | undefined, query: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Products/by/group?\";\n if (groupId !== undefined && groupId !== null)\n url_ += \"groupId=\" + encodeURIComponent(\"\" + groupId) + \"&\";\n if (query !== undefined && query !== null)\n url_ += \"query=\" + encodeURIComponent(\"\" + query) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetByGroup(_response);\n });\n }\n\n protected processGetByGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProductModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n uploadDocuments(id: string, files: FileParameter[] | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Products/{id}/documents\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (files === null || files === undefined)\n throw new Error(\"The parameter 'files' cannot be null.\");\n else\n files.forEach(item_ => content_.append(\"files\", item_.data, item_.fileName ? item_.fileName : \"files\") );\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploadDocuments(_response);\n });\n }\n\n protected processUploadDocuments(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n removeDocument(id: string, documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/Products/{id}/documents/{documentId}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (documentId === undefined || documentId === null)\n throw new Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRemoveDocument(_response);\n });\n }\n\n protected processRemoveDocument(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadDocument(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/Products/documents/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDownloadDocument(_response);\n });\n }\n\n protected processDownloadDocument(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n renameDocument(id: string, documentId: string, model: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Products/{id}/documents/{documentId}/name\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (documentId === undefined || documentId === null)\n throw new Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_: RequestInit = {\n body: content_,\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRenameDocument(_response);\n });\n }\n\n protected processRenameDocument(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n rename(id: string, body: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Products/{id}/rename\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRename(_response);\n });\n }\n\n protected processRename(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getById(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Products/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetById(_response);\n });\n }\n\n protected processGetById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProductModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n delete(id: string): Promise {\n let url_ = this.baseUrl + \"/api/Products/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TenantClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n getTenantInfo(): Promise {\n let url_ = this.baseUrl + \"/tenant\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetTenantInfo(_response);\n });\n }\n\n protected processGetTenantInfo(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TenantInfoModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n manifest(): Promise {\n let url_ = this.baseUrl + \"/manifest.json\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processManifest(_response);\n });\n }\n\n protected processManifest(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getIcon(file: string): Promise {\n let url_ = this.baseUrl + \"/img/icons/{file}\";\n if (file === undefined || file === null)\n throw new Error(\"The parameter 'file' must be defined.\");\n url_ = url_.replace(\"{file}\", encodeURIComponent(\"\" + file));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetIcon(_response);\n });\n }\n\n protected processGetIcon(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class UsersClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n getUsers(page: number | undefined, pageSize: number | undefined, query: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Users?\";\n if (page === null)\n throw new Error(\"The parameter 'page' cannot be null.\");\n else if (page !== undefined)\n url_ += \"page=\" + encodeURIComponent(\"\" + page) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"pageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (query !== undefined && query !== null)\n url_ += \"query=\" + encodeURIComponent(\"\" + query) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetUsers(_response);\n });\n }\n\n protected processGetUsers(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PagingResultOfUserModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n addUser(body: AddUserModel): Promise {\n let url_ = this.baseUrl + \"/api/Users\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddUser(_response);\n });\n }\n\n protected processAddUser(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getUsersByCustomer(customerId: string): Promise {\n let url_ = this.baseUrl + \"/api/Users/byCustomer/{customerId}\";\n if (customerId === undefined || customerId === null)\n throw new Error(\"The parameter 'customerId' must be defined.\");\n url_ = url_.replace(\"{customerId}\", encodeURIComponent(\"\" + customerId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetUsersByCustomer(_response);\n });\n }\n\n protected processGetUsersByCustomer(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserWithRolesModel[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getUserById(userId: string): Promise {\n let url_ = this.baseUrl + \"/api/Users/{userId}\";\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processGetUserById(_response);\n });\n }\n\n protected processGetUserById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserWithRolesModel;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteUser(userId: string): Promise {\n let url_ = this.baseUrl + \"/api/Users/{userId}\";\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDeleteUser(_response);\n });\n }\n\n protected processDeleteUser(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n sendPasswordResetLink(userId: string, body: CreateResetPasswordLinkModel): Promise {\n let url_ = this.baseUrl + \"/api/Users/{userId}/passwordReset\";\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSendPasswordResetLink(_response);\n });\n }\n\n protected processSendPasswordResetLink(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n renameUser(userId: string, body: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Users/{userId}/rename\";\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRenameUser(_response);\n });\n }\n\n protected processRenameUser(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n changePhone(userId: string, body: ValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Users/{userId}/phone\";\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangePhone(_response);\n });\n }\n\n protected processChangePhone(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n setUserStaff(userId: string, body: BoolValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Users/{userId}/staff\";\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSetUserStaff(_response);\n });\n }\n\n protected processSetUserStaff(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n setUserSelfService(userId: string, body: BoolValueModel): Promise {\n let url_ = this.baseUrl + \"/api/Users/{userId}/selfService\";\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSetUserSelfService(_response);\n });\n }\n\n protected processSetUserSelfService(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface EntityModelBase {\n id: string;\n created: string;\n updated: string;\n}\n\nexport interface NamedEntityModelBase extends EntityModelBase {\n name: string;\n}\n\nexport interface MachineModel extends NamedEntityModelBase {\n customerId: string;\n departmentId: string | null;\n fillingQuantityInLiter: number;\n measurementInterval: number | null;\n type: MachineTypeModel | null;\n}\n\nexport interface MachineTypeModel extends NamedEntityModelBase {\n}\n\nexport interface CustomerModel extends NamedEntityModelBase {\n measurementInterval: number | null;\n}\n\nexport interface EnrichedCustomerModel extends CustomerModel {\n assignedUsers: UserWithRolesModel[];\n machines: EnrichedMachineModel[];\n departments: DepartmentModel[];\n currentWeek: number;\n hasDepartments: boolean;\n canBeAccessed: boolean;\n}\n\nexport interface UserModel {\n id: string;\n name: string;\n email: string;\n phone: string | null;\n picture: string;\n}\n\nexport interface UserWithRolesModel extends UserModel {\n roles: string[];\n}\n\nexport interface EnrichedMachineModel extends MachineModel {\n lastMeasurement: MeasurementModel | null;\n weeksUntilNextMeasurement: number | null;\n calendarWeekOfNextMeasurement: number | null;\n}\n\nexport interface MeasurementModel extends EntityModelBase {\n type: MeasurementType;\n customerId: string;\n machineId: string;\n lubricantId: string | null;\n measurementDate: string;\n phValue: number | null;\n nitriteConcentration: number | null;\n conductivity: number | null;\n lubricantConcentration: number | null;\n visualState: string | null;\n actions: MeasurementActionModel[];\n extraValues: { [key: string]: string; };\n thresholdStates: MeasurementThresholdStates;\n isOk: boolean;\n}\n\nexport enum MeasurementType {\n Staff = 0,\n LabAnalysis = 1,\n Customer = 2,\n}\n\nexport interface MeasurementActionModel {\n type: MeasurementActionType;\n properties: { [key: string]: string; };\n isRecommendation: boolean;\n}\n\nexport enum MeasurementActionType {\n ProductAddition = 0,\n LubricantConcentrationAdjustment = 1,\n LubricantRefilling = 2,\n ProcessRecommendation = 3,\n Custom = 4,\n}\n\nexport interface MeasurementThresholdStates {\n phValueState: ThresholdState;\n lubricantConcentrationState: ThresholdState;\n}\n\nexport enum ThresholdState {\n Ok = 0,\n TooHigh = 1,\n TooLow = 2,\n}\n\nexport interface DepartmentModel extends NamedEntityModelBase {\n customerId: string;\n isDefault: boolean;\n measurementInterval: number | null;\n}\n\nexport interface CreatedModel {\n id: string;\n}\n\nexport interface CreateCustomerModel {\n name: string;\n measurementInterval: number | null;\n}\n\nexport interface OptionalIntValueModel {\n value: number | null;\n}\n\nexport interface AssignUserModel {\n userId: string;\n isAssigned: boolean;\n}\n\nexport interface CustomersAndDepartmentsModel {\n customers: CustomerModel[];\n departments: DepartmentWithCustomerModel[];\n}\n\nexport interface DepartmentWithCustomerModel extends DepartmentModel {\n customer: CustomerModel;\n}\n\nexport interface ValueModel {\n value: string;\n}\n\nexport interface NotificationModel extends EntityModelBase {\n causer: UserModel | null;\n type: NotificationType;\n customer: CustomerModel | null;\n department: DepartmentModel | null;\n machine: MachineModel | null;\n values: { [key: string]: string; };\n}\n\nexport enum NotificationType {\n MeasurementAdded = 0,\n TourAdded = 1,\n LabReportAdded = 2,\n ActionsAdded = 3,\n}\n\nexport interface MachineAggregationModel {\n machine: MachineModel;\n phValue: number | null;\n nitriteConcentration: number | null;\n conductivity: number | null;\n lubricantConcentration: number | null;\n actions: { [key: string]: number; };\n fillings: number;\n lubricant: LubricantModel | null;\n}\n\nexport interface LubricantModel extends NamedEntityModelBase {\n minConcentration: number | null;\n maxConcentration: number | null;\n minPhValue: number | null;\n maxPhValue: number | null;\n refractometer: number | null;\n documents: DownloadDocument[];\n}\n\nexport interface DomainEntityBase {\n id: string;\n created: string;\n updated: string;\n}\n\nexport interface NamedDomainEntityBase extends DomainEntityBase {\n name: string;\n}\n\nexport interface DownloadDocument extends NamedDomainEntityBase {\n}\n\nexport interface AllProductsModel {\n lubricants: LubricantModel[];\n products: ProductModel[];\n}\n\nexport interface ProductModel extends NamedEntityModelBase {\n group: ProductGroupModel | null;\n usageConcentration: number | null;\n documents: DownloadDocument[];\n}\n\nexport interface ProductGroupModel extends NamedEntityModelBase {\n isSpecial: boolean;\n}\n\nexport interface MultipleIdsModel {\n ids: string[];\n}\n\nexport interface EnrichedDepartmentModel extends DepartmentModel {\n assignedUsers: UserWithRolesModel[];\n machines: EnrichedMachineModel[];\n currentWeek: number;\n}\n\nexport interface DateValueModel {\n value: string;\n}\n\nexport interface LubricantFillingModel extends EntityModelBase {\n customerId: string;\n machineId: string;\n lubricant: LubricantModel | null;\n fillingDate: string;\n}\n\nexport interface CreateLubricantModel {\n name: string;\n minConcentration: number | null;\n maxConcentration: number | null;\n minPhValue: number | null;\n maxPhValue: number | null;\n refractometer: number | null;\n}\n\nexport interface OptionalDecimalModel {\n value: number | null;\n}\n\nexport interface OptionalChangeFieldOptionalValueModelOfLubricantThresholdField extends OptionalDecimalModel {\n field: LubricantThresholdField;\n}\n\nexport enum LubricantThresholdField {\n MinConcentration = 0,\n MaxConcentration = 1,\n MinPhValue = 2,\n MaxPhValue = 3,\n Refractometer = 4,\n}\n\nexport interface CreateMachinesModel {\n customerId: string;\n departmentId: string | null;\n machines: CreateMachineModel[];\n}\n\nexport interface CreateMachineModel {\n name: string;\n fillingQuantityInLiter: number;\n typeId: string | null;\n measurementInterval: number | null;\n}\n\nexport interface DepartmentMachineModel extends MachineModel {\n departmentName: string | null;\n}\n\nexport interface MachineOverviewModel {\n id: string;\n machine: MachineModel;\n lubricant: LubricantModel | null;\n products: MachineProductModel[];\n fillings: LubricantFillingModel[];\n}\n\nexport interface MachineProductModel {\n product: ProductModel;\n fillingAmount: number | null;\n}\n\nexport interface AddFillingModel {\n lubricantId: string;\n fillingDate: string;\n}\n\nexport interface CreateMeasurementModel {\n measurementDate: string;\n phValue: number | null;\n nitriteConcentration: number | null;\n conductivity: number | null;\n lubricantConcentration: number | null;\n visualState: string | null;\n actions: MeasurementActionModel[];\n tourId: string | null;\n isFinalMeasurement: boolean;\n isOk: boolean;\n}\n\nexport interface ImportResultModel {\n file: string;\n success: boolean;\n errorMessage: string | null;\n}\n\nexport interface AddMachineProductModel {\n productId: string;\n fillingAmount: number | null;\n}\n\nexport interface DecimalValueModel {\n value: number;\n}\n\nexport interface ReorderMachinesModel {\n orders: { [key: string]: number; };\n}\n\nexport interface PagingResultOfMachineTourPagingModel {\n items: MachineTourPagingModel[];\n total: number;\n}\n\nexport interface MachineTourPagingModel extends EntityModelBase {\n customerId: string;\n user: UserModel | null;\n type: MeasurementType;\n}\n\nexport interface MachineTourModel extends EntityModelBase {\n customerId: string;\n departmentId: string | null;\n machines: TourMachineModel[];\n user: UserModel | null;\n type: MeasurementType;\n}\n\nexport interface TourMachineModel {\n machine: MachineModel;\n measurement: MeasurementModel | null;\n}\n\nexport interface PagingResultOfMeasurementModelWithUser {\n items: MeasurementModelWithUser[];\n total: number;\n}\n\nexport interface MeasurementModelWithUser extends MeasurementModel {\n user: UserWithRolesModel | null;\n}\n\nexport interface ChangeFieldValueModelOfMeasurementFieldAndNullableDecimal {\n field: MeasurementField;\n value: number | null;\n}\n\nexport enum MeasurementField {\n PhValue = 0,\n NitriteConcentration = 1,\n Conductivity = 2,\n LubricantConcentration = 3,\n VisualState = 4,\n}\n\nexport interface BoolValueModel {\n value: boolean;\n}\n\nexport interface PushSubscription {\n key: string;\n endpoint: string;\n authSecret: string;\n device: string | null;\n}\n\nexport interface CreateProductGroupModel {\n name: string;\n isSpecial: boolean;\n}\n\nexport interface CreateProductModel {\n name: string;\n groupId: string;\n usageConcentration: number | null;\n}\n\nexport interface TenantInfoModel {\n name: string;\n connection: string;\n logo: string;\n logoBig: string | null;\n favicon: string;\n culture: string;\n title: string;\n shortTitle: string;\n impressum: string;\n privacy: string;\n}\n\nexport interface PagingResultOfUserModel {\n items: UserModel[];\n total: number;\n}\n\nexport interface AddUserModel {\n name: string;\n email: string;\n isStaff: boolean;\n isSelfService: boolean;\n}\n\nexport interface CreateResetPasswordLinkModel {\n resultUrl: string;\n}\n\nexport interface FileParameter {\n data: any;\n fileName: string;\n}\n\nexport interface FileResponse {\n data: Blob;\n status: number;\n fileName?: string;\n headers?: { [name: string]: any };\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new ApiException(message, status, response, headers, null);\n}","import { doWithDelayedLoading } from '@/common/helpers/loading';\nimport i18n from '@/i18n';\nimport { ToastProgrammatic } from 'buefy';\nimport { LocaleMessages } from 'vue-i18n';\nimport { Component, Vue } from 'vue-property-decorator';\n\ninterface LoadingOptions {\n noLoading?: boolean;\n delayLoading?: boolean;\n}\n\ndeclare module 'vue/types/vue' {\n interface Vue {\n isLoading: boolean\n\n withProgress(f: () => Promise, description?: string | LocaleMessages, options?: LoadingOptions): Promise\n }\n}\n\nexport function showErrorToast(e: any, description?: string) {\n let message = description?.length ? i18n.t('failed', { description }) : (e instanceof Error ? e.message : e.toString());\n\n if (e.status === 400 && e.response) {\n message += `: ${e.response}`;\n }\n\n ToastProgrammatic.open({\n message,\n type: 'is-danger',\n });\n}\n\n@Component\nexport class LoadingMixin extends Vue {\n isLoading = false;\n\n async withProgress(f: () => Promise, description?: string | LocaleMessages, options?: LoadingOptions) {\n try {\n if (!options?.delayLoading) {\n this.isLoading = true;\n try {\n await f();\n } finally {\n this.isLoading = false;\n }\n } else {\n await doWithDelayedLoading(f, loading => {\n if (!options?.noLoading) {\n this.isLoading = loading;\n }\n });\n }\n } catch (e) {\n console.error(e);\n showErrorToast(e, description?.toString());\n }\n }\n}\n","import { Vue } from 'vue-property-decorator';\n\nclass PresentationModeStore {\n isEnabled = false;\n\n toggle() {\n this.isEnabled = !this.isEnabled;\n }\n}\n\nexport const presentationModeStore = Vue.observable(new PresentationModeStore());\n","import { doWithDelayedLoading } from '@/common/helpers/loading';\nimport { showErrorToast } from '@/common/helpers/LoadingMixin';\nimport i18n from '@/i18n';\n\nexport abstract class StoreBase {\n private _loading = false;\n private promise = Promise.resolve();\n\n protected _value: T | null = null;\n\n protected constructor(private descriptionKey: string) {\n }\n\n get loading() {\n return this._loading;\n }\n\n get value() {\n return this._value;\n }\n\n unload() {\n this._value = null;\n }\n\n async load(id: string) {\n // ensure a loading in progress is awaited\n await this.promise;\n\n if (this.value?.id === id) {\n return;\n }\n\n this._value = null;\n\n this.promise = this.loadNow(id);\n await this.promise;\n }\n\n private async loadNow(id: string) {\n try {\n await doWithDelayedLoading(\n async () => this._value = await this.loadInternal(id),\n loading => this._loading = loading);\n } catch (e) {\n showErrorToast(e, i18n.t(this.descriptionKey).toString());\n }\n }\n\n async reload() {\n if (!this._value) {\n throw new Error('No value is loaded');\n }\n\n await this.loadNow(this._value.id);\n }\n\n protected abstract loadInternal(id: string): Promise\n}\n","import { Vue } from 'vue-property-decorator';\n\nclass DownloadStore {\n exportFileName = '';\n exportDataUrl = '';\n\n trigger(blob: Blob, name: string) {\n this.exportFileName = name;\n this.exportDataUrl = window.URL.createObjectURL(blob);\n\n requestAnimationFrame(() => {\n document.getElementById('downloadHelper')!.click();\n window.URL.revokeObjectURL(downloadStore.exportDataUrl);\n });\n }\n}\n\nexport const downloadStore = Vue.observable(new DownloadStore());\n","export async function doWithDelayedLoading(f: () => Promise, setLoading: (loading: boolean) => void) {\n try {\n const workPromise = f();\n\n const resolvedFirst = await Promise.race([\n workPromise.then(() => 'work'),\n new Promise(resolve => setTimeout(resolve, 750, 'timeout')),\n ]);\n\n if (resolvedFirst === 'timeout') {\n setLoading(true);\n await workPromise;\n }\n } finally {\n setLoading(false);\n }\n}\n","import { notificationsClient } from '@/api/api';\nimport i18n from '@/i18n';\nimport { SnackbarProgrammatic } from 'buefy';\nimport { parseInt } from 'lodash-es';\n\nconst publicKey = 'BHhN4715M3r5DwiM0N3ks_4BLBCk088UgIZY363jl2JEVAAA52QgRLkpmtxj7M0Yx47GKgEn2aYkQUtjycJmAFg';\n\nexport type MappedSubscription = { endpoint: string; authSecret: string; key: string, device: string | null };\n\nexport function mapPushSubscription(subscription: PushSubscription): MappedSubscription {\n const rawKey = subscription.getKey ? subscription.getKey('p256dh') : '';\n const key = rawKey ? btoa(String.fromCharCode(...new Uint8Array(rawKey))) : '';\n const rawAuthSecret = subscription.getKey ? subscription.getKey('auth') : '';\n const authSecret = rawAuthSecret ? btoa(String.fromCharCode(...new Uint8Array(rawAuthSecret))) : '';\n const endpoint = subscription.endpoint;\n\n return { endpoint, key, authSecret, device: navigator.userAgent };\n}\n\nexport async function postPushTokenIfNecessary(subscription: PushSubscription) {\n if (localStorage.getItem('pushTokenPosted')) {\n return;\n }\n\n await notificationsClient.addPushSubscription(mapPushSubscription(subscription));\n\n localStorage.setItem('pushTokenPosted', 'true');\n}\n\nexport async function registerPush(registration: ServiceWorkerRegistration, forceToast = false) {\n const options: PushSubscriptionOptionsInit = {\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(publicKey),\n };\n\n const state = await registration.pushManager.permissionState(options);\n\n if (state === 'granted') {\n await createSubscription();\n } else if (state === 'prompt') {\n if (!forceToast) {\n const toastCount = parseInt(localStorage.getItem('pushToastCount') ?? '0', 10);\n\n if (toastCount >= 10) {\n return;\n }\n\n localStorage.setItem('pushToastCount', (toastCount + 1).toString());\n }\n\n await new Promise(resolve => {\n SnackbarProgrammatic.open({\n message: i18n.t('enable-push').toString(),\n actionText: i18n.t('activate-now').toString(),\n type: 'is-success',\n duration: 8_000,\n onAction: () => {\n resolve(createSubscription());\n },\n });\n });\n } else {\n console.log('Notifications denied');\n }\n\n async function createSubscription() {\n console.log('Creating subscription');\n\n const subscription = await registration.pushManager.subscribe(options);\n await postPushTokenIfNecessary(subscription);\n }\n}\n\nfunction urlBase64ToUint8Array(base64String: string): Uint8Array {\n const padding = '='.repeat((4 - base64String.length % 4) % 4);\n const base64 = (base64String + padding)\n .replace(/-/g, '+')\n .replace(/_/g, '/');\n\n const rawData = window.atob(base64);\n const outputArray = new Uint8Array(rawData.length);\n\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n}\n","import { customersClient } from '@/api/api';\nimport { EnrichedCustomerModel } from '@/api/clients';\nimport { StoreBase } from '@/common/helpers/StoreBase';\nimport { Vue } from 'vue-property-decorator';\n\nclass CustomerStore extends StoreBase {\n constructor() {\n super('load-customer');\n }\n\n protected loadInternal(id: string): Promise {\n return customersClient.getEnrichedById(id);\n }\n}\n\nexport const customerStore = Vue.observable(new CustomerStore());\n","import Vue from 'vue';\nimport VueI18n from 'vue-i18n';\nimport de from './locales/de.json';\nimport en from './locales/en.json';\n\nVue.use(VueI18n);\n\nexport default new VueI18n({\n locale: localStorage.getItem('locale') || navigator.language,\n fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en',\n messages: { de, en },\n});\n","import {\n Auth0Client,\n Auth0ClientOptions,\n createAuth0Client,\n GetTokenSilentlyOptions,\n LogoutOptions,\n RedirectLoginOptions,\n} from '@auth0/auth0-spa-js';\nimport Vue, { PluginObject } from 'vue';\nimport Component from 'vue-class-component';\n\nexport interface Auth0Options extends Auth0ClientOptions {\n onRedirectCallback(state: any): void,\n}\n\nlet options!: Auth0Options;\n\nexport interface Auth0User {\n sub?: string;\n picture?: string;\n name?: string;\n\n [key: string]: any;\n}\n\n@Component\nexport class AuthComponent extends Vue {\n loading = true;\n isAuthenticated = false;\n user: Auth0User = {};\n auth0Client!: Auth0Client;\n error = null;\n\n get roles() {\n return this.user?.['http://ruedinger-oel.de/roles'] ?? [];\n }\n\n get isStaff() {\n return this.roles.includes('Staff');\n }\n\n get isSelfService() {\n return this.roles.includes('SelfService');\n }\n\n get isStaffOrSelfService() {\n return this.isStaff || this.isSelfService;\n }\n\n loginWithRedirect(o?: RedirectLoginOptions) {\n return this.auth0Client.loginWithRedirect(\n {\n ...o,\n authorizationParams: {\n title: window.tenant.title,\n logo: `${location.origin}/img/logos/${window.tenant.logo}`,\n },\n },\n );\n }\n\n async getTokenSilently(o?: GetTokenSilentlyOptions) {\n if (!this.auth0Client) {\n return localStorage.getItem('auth_token');\n }\n\n const token = await this.auth0Client.getTokenSilently(o);\n\n localStorage.setItem('auth_token', token);\n\n return token;\n }\n\n logout(o?: LogoutOptions['logoutParams']) {\n return this.auth0Client.logout({\n logoutParams: o,\n });\n }\n\n async created() {\n if (!navigator.onLine) {\n const fromStorage = localStorage.getItem('auth');\n\n if (fromStorage) {\n this.user = JSON.parse(fromStorage);\n this.isAuthenticated = true;\n this.loading = false;\n\n console.log('Authorized from local storage', this.user.name);\n\n return;\n }\n }\n\n // Create a new instance of the SDK client using members of the given options object\n this.auth0Client = await createAuth0Client(options);\n\n try {\n // If the user is returning to the app after authentication..\n if (\n window.location.search.includes('code=') &&\n window.location.search.includes('state=')\n ) {\n // handle the redirect and retrieve tokens\n const { appState } = await this.auth0Client.handleRedirectCallback();\n\n // Notify subscribers that the redirect callback has happened, passing the appState\n // (useful for retrieving any pre-authentication state)\n options.onRedirectCallback(appState);\n }\n } catch (e: any) {\n this.error = e;\n } finally {\n // Initialize our internal authentication state\n this.isAuthenticated = await this.auth0Client.isAuthenticated();\n this.user = (await this.auth0Client.getUser())!;\n this.loading = false;\n }\n\n if (this.isAuthenticated) {\n localStorage.setItem('auth', JSON.stringify(this.user));\n }\n }\n}\n\n// Create a simple Vue plugin to expose the wrapper object throughout the application\nexport const Auth0Plugin: PluginObject = {\n install(Vue, o) {\n options = o!;\n Vue.prototype.$auth = new AuthComponent();\n },\n};\n\ndeclare module 'vue/types/vue' {\n interface Vue {\n $auth: AuthComponent;\n }\n}\n","import { baseUrl } from '@/api/baseUrl';\nimport { TenantInfoModel } from '@/api/clients';\nimport i18n from '@/i18n';\n\ndeclare global {\n interface Window {\n tenant: TenantInfoModel\n }\n}\n\nexport async function getAuth0Connection(): Promise {\n const response = await fetch(baseUrl + '/tenant');\n window.tenant = await response.json();\n\n if (!localStorage.getItem('locale')) {\n const locale = window.tenant.culture.substring(0, 2);\n i18n.locale = locale;\n localStorage.setItem('locale', locale);\n }\n\n return window.tenant.connection;\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon\",class:[_vm.type, _vm.size]},[(_vm.layer)?_c('FontAwesomeLayers',_vm._l((_vm.layer),function(l,index){return _c('FontAwesomeIcon',{key:index,attrs:{\"icon\":l.icon,\"transform\":l.transform}})}),1):_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.icon}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from 'vue-property-decorator';\n\ninterface LayerDef {\n icon: string,\n transform: string\n}\n\nconst layers: Record = {\n 'cog-plus': [\n { icon: 'cog', transform: 'shrink-2 up-3 left-5' },\n { icon: 'plus', transform: 'shrink-5 down-4 right-5' },\n ],\n 'cog-edit': [\n { icon: 'cog', transform: 'shrink-2 up-2 left-5' },\n { icon: 'pen', transform: 'shrink-5 down-4 right-5' },\n ],\n 'vial-plus': [\n { icon: 'vial', transform: 'up-2 left-4' },\n { icon: 'plus', transform: 'shrink-5 down-4 right-5' },\n ],\n 'vial-plus-plus': [\n { icon: 'vial', transform: 'up-2 left-4' },\n { icon: 'plus', transform: 'shrink-7 down-4 right-1' },\n { icon: 'plus', transform: 'shrink-7 down-4 right-9' },\n ],\n 'vial-edit': [\n { icon: 'vial', transform: 'up-2 left-4' },\n { icon: 'pen', transform: 'shrink-5 down-4 right-5' },\n ],\n 'vial-arrow-up': [\n { icon: 'vial', transform: 'up-2 left-4' },\n { icon: 'arrow-up', transform: 'shrink-5 down-4 right-5' },\n ],\n 'tint-plus': [\n { icon: 'tint', transform: 'shrink-2 down-2 left-4' },\n { icon: 'plus', transform: 'shrink-5 up-4 right-5' },\n ],\n 'tint-edit': [\n { icon: 'tint', transform: 'shrink-2 up-2 left-5' },\n { icon: 'pen', transform: 'shrink-5 down-4 right-3' },\n ],\n 'cube-plus': [\n { icon: 'cube', transform: 'shrink-4 down-2 left-4' },\n { icon: 'plus', transform: 'shrink-5 up-4 right-6' },\n ],\n 'cube-edit': [\n { icon: 'cube', transform: 'shrink-4 up-2 left-5' },\n { icon: 'pen', transform: 'shrink-5 down-4 right-3' },\n ],\n 'cubes-plus': [\n { icon: 'cubes', transform: 'shrink-4 down-2 left-4' },\n { icon: 'plus', transform: 'shrink-5 up-4 right-6' },\n ],\n 'cubes-edit': [\n { icon: 'cubes', transform: 'shrink-4 up-2 left-5' },\n { icon: 'pen', transform: 'shrink-5 down-4 right-3' },\n ],\n 'fill-drip-edit': [\n { icon: 'fill-drip', transform: 'shrink-4 up-2 left-5' },\n { icon: 'pen', transform: 'shrink-5 down-4 right-6' },\n ],\n 'flask-plus': [\n { icon: 'flask', transform: 'shrink-2 down-2 left-4' },\n { icon: 'plus', transform: 'shrink-5 up-4 right-6' },\n ],\n 'briefcase-edit': [\n { icon: 'briefcase', transform: 'shrink-3 up-2 left-4' },\n { icon: 'pen', transform: 'shrink-5 down-4 right-5' },\n ],\n 'threshold-too-high': [\n { icon: 'arrow-up', transform: 'shrink-3 up-2' },\n { icon: 'ellipsis-h', transform: 'shrink-7 down-6 left-5' },\n { icon: 'ellipsis-h', transform: 'shrink-7 down-6 right-4' },\n ],\n 'threshold-too-low': [\n { icon: 'arrow-down', transform: 'shrink-3 down-4' },\n { icon: 'ellipsis-h', transform: 'shrink-7 up-4 left-5' },\n { icon: 'ellipsis-h', transform: 'shrink-7 up-4 right-4' },\n ],\n 'users-cog-plus': [\n { icon: 'users-cog', transform: 'shrink-2 down-3 left-5' },\n { icon: 'plus', transform: 'shrink-5 up-4 right-6' },\n ],\n 'users-cog-edit': [\n { icon: 'users-cog', transform: 'shrink-2 up-3 left-5' },\n { icon: 'pen', transform: 'shrink-5 down-4 right-5' },\n ],\n};\n\n@Component\nexport default class IconWrapper extends Vue {\n @Prop(String) readonly type?: string;\n @Prop(String) readonly size?: string;\n @Prop(Array) readonly icon?: string[];\n\n get layer(): null | LayerDef[] {\n if (!this.icon) {\n return null;\n }\n\n return layers[this.icon[1]] ?? null;\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IconWrapper.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IconWrapper.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./IconWrapper.vue?vue&type=template&id=11b0442a&\"\nimport script from \"./IconWrapper.vue?vue&type=script&lang=ts&\"\nexport * from \"./IconWrapper.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header\"},[_c(_vm.titleTag,{tag:\"component\",staticClass:\"title\",class:_vm.titleClasses},[_vm._t(\"default\")],2),_c('div',{staticClass:\"buttons\"},[_vm._t(\"actions\")],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from 'vue-property-decorator';\n\n@Component\nexport default class PageHeader extends Vue {\n @Prop({ type: [Number, String] }) readonly size?: string | number;\n\n get titleTag() {\n if (!this.size) {\n return 'h2';\n }\n\n return 'h' + this.size;\n }\n\n get titleClasses() {\n if (!this.size) {\n return '';\n }\n\n return 'is-' + (parseInt(this.size.toString(), 10) + 1);\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PageHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PageHeader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PageHeader.vue?vue&type=template&id=4dbc85c4&scoped=true&\"\nimport script from \"./PageHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./PageHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PageHeader.vue?vue&type=style&index=0&id=4dbc85c4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4dbc85c4\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\n\nclass BackgroundSyncStore {\n private db?: IDBDatabase;\n count = 0;\n\n constructor() {\n const openDBRequest = window.indexedDB.open('workbox-background-sync');\n openDBRequest.onerror = e => console.error('could not open db', e);\n openDBRequest.onsuccess = async () => {\n this.db = openDBRequest.result;\n await this.syncCount();\n };\n }\n\n syncCount() {\n if (!this.db) {\n return;\n }\n\n if (![...this.db.objectStoreNames].includes('requests')) {\n return;\n }\n\n const tx = this.db.transaction(['requests'], 'readonly');\n const request = tx.objectStore('requests').count();\n request.onsuccess = () => this.count = request.result;\n }\n\n async executeOfflineRequests() {\n if ('serviceWorker' in navigator) {\n const registration = await navigator.serviceWorker.getRegistration();\n\n if (registration?.active) {\n registration.active.postMessage({ type: 'SYNC' });\n }\n }\n }\n}\n\nexport const backgroundSyncStore = Vue.observable(new BackgroundSyncStore());\n","import { backgroundSyncStore } from '@/common/helpers/BackgroundSyncStore';\nimport { postPushTokenIfNecessary, registerPush } from '@/common/helpers/pushNotifications';\nimport i18n from '@/i18n';\nimport { NotificationProgrammatic, SnackbarProgrammatic } from 'buefy';\nimport { Workbox } from 'workbox-window';\n\nexport async function registerServiceWorker() {\n console.log('Service Worker registration requested');\n\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n console.log('Registering Service Worker');\n\n const wb = new Workbox(`${process.env.BASE_URL}service-worker.js`);\n\n wb.addEventListener('installed', event => {\n console.log(event);\n if (event.isUpdate) {\n showUpdateToast();\n }\n });\n\n const registration = await wb.register();\n\n if (!registration) {\n return;\n }\n\n console.log('Service Worker ready');\n console.log('Checking push subscription');\n\n const subscription = await registration.pushManager.getSubscription();\n\n if (!subscription) {\n await registerPush(registration);\n } else {\n await postPushTokenIfNecessary(subscription);\n }\n\n navigator.serviceWorker.addEventListener('message', ({ data }) => {\n if (data.type === 'NOTIFICATION') {\n NotificationProgrammatic.open({\n message: data.title,\n type: 'is-black',\n duration: 5_000,\n });\n } else if (data.type === 'REQUEST_QUEUED' || data.type === 'BACKGROUND_SYNC') {\n backgroundSyncStore.syncCount();\n }\n });\n }\n}\n\nfunction showUpdateToast() {\n SnackbarProgrammatic.open({\n message: i18n.t('update-available').toString(),\n actionText: i18n.t('update-now').toString(),\n indefinite: true,\n type: 'is-warning',\n onAction: () => location.reload(),\n });\n}\n","import { customersClient } from '@/api/api';\nimport { AuthComponent } from '@/auth/auth0';\nimport Vue from 'vue';\nimport { NavigationGuard } from 'vue-router';\n\nexport const nonStaffSingleCustomerGuard: NavigationGuard = async (to, from, next) => {\n const $auth: AuthComponent = Vue.prototype.$auth;\n\n if (to.name === 'home' && !$auth.isStaff) {\n const { customers, departments } = await customersClient.getCustomersByAssignedUser($auth.user.sub!);\n if (customers.length === 1 && departments.length === 0) {\n await next({ name: 'customer', params: { customerId: customers[0].id } });\n return;\n } else if (customers.length === 0 && departments.length === 1) {\n const { customerId, id } = departments[0];\n await next({ name: 'department', params: { customerId, departmentId: id } });\n return;\n }\n }\n\n await next();\n};\n","import Vue from 'vue';\nimport { NavigationGuard } from 'vue-router';\n\nexport const authGuard: NavigationGuard = (to, from, next) => {\n if (to.meta?.nonAuthenticated) {\n next();\n return;\n }\n\n const authService = Vue.prototype.$auth;\n\n function fn() {\n // If the user is authenticated, continue with the route\n if (authService.isAuthenticated) {\n return next();\n }\n\n // Otherwise, log in\n authService.loginWithRedirect({ appState: { targetUrl: to.fullPath } });\n }\n\n // If loading has already finished, check our auth state using `fn()`\n if (!authService.loading) {\n fn();\n }\n\n // Watch for the loading property to change before we check isAuthenticated\n const unwatch = authService.$watch('loading', (loading: boolean) => {\n if (!loading) {\n fn();\n unwatch();\n }\n });\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"wrapper\"},[_c('Navigation'),_c('section',{staticClass:\"main\"},[_c('div',{staticClass:\"container\"},[(_vm.$auth.isAuthenticated)?_c('Breadcrumbs'):_vm._e(),_c('transition',{attrs:{\"name\":\"fade\"}},[_c('RouterView')],1)],1)]),_c('FooterLayout')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"breadcrumb has-succeeds-separator\",attrs:{\"aria-label\":\"breadcrumbs\"}},[_c('transition-group',{directives:[{name:\"observer\",rawName:\"v-observer:subtree.childList.characterData\",value:(_vm.onItemsChanged),expression:\"onItemsChanged\",arg:\"subtree\",modifiers:{\"childList\":true,\"characterData\":true}}],ref:\"scrollContainer\",staticClass:\"breadcrumbs\",attrs:{\"name\":\"fade\",\"tag\":\"ul\"}},_vm._l((_vm.items),function(route,index){return _c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(!route.hide),expression:\"!route.hide\"}],key:'breadcrumb- ' + index,class:{ 'is-active': index === _vm.items.length - 1 }},[_c(route.tag,{tag:\"component\",attrs:{\"to\":route.target}},[_c('BIcon',{attrs:{\"icon\":route.icon,\"size\":\"is-small\"}}),_c('PortalTarget',{attrs:{\"name\":(\"breadcrumb-\" + (route.name))}},[_vm._v(\" \"+_vm._s(_vm.$t(route.breadcrumb))+\" \")])],1)],1)}),0)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { customerStore } from '@/customers/stores/CustomerStore';\nimport { observer } from 'vue-mutation-observer';\nimport { Component, Ref, Vue } from 'vue-property-decorator';\nimport { RawLocation, RouteRecord } from 'vue-router/types/router';\n\ninterface Breadcrumb {\n tag: string\n target: RawLocation\n icon: string\n name: string\n breadcrumb: string\n hide?: boolean\n}\n\n@Component({\n directives: { observer },\n})\nexport default class Breadcrumbs extends Vue {\n @Ref('scrollContainer')\n readonly scrollContainer!: Vue;\n\n get items(): Breadcrumb[] {\n return this.$route.matched\n .filter(x => x.meta.breadcrumb)\n .map(route => ({\n tag: route.meta.staffOnly && !this.$auth.isStaff ? 'a' : 'router-link',\n target: { name: route.name, params: this.$route.params },\n icon: route.meta.icon,\n name: route.name!,\n breadcrumb: route.meta.breadcrumb,\n hide: this.shouldHide(route),\n }));\n }\n\n shouldHide(route: RouteRecord) {\n return (route.name === 'department' && !customerStore.value?.hasDepartments) ||\n (route.name === 'customers' && !this.$auth.isStaff);\n }\n\n async onItemsChanged() {\n await this.$nextTick();\n\n if (this.scrollContainer) {\n this.scrollContainer.$el.scrollLeft = this.scrollContainer.$el.scrollWidth;\n }\n }\n}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Breadcrumbs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Breadcrumbs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Breadcrumbs.vue?vue&type=template&id=c6d043a2&scoped=true&\"\nimport script from \"./Breadcrumbs.vue?vue&type=script&lang=ts&\"\nexport * from \"./Breadcrumbs.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Breadcrumbs.vue?vue&type=style&index=0&id=c6d043a2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c6d043a2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{staticClass:\"has-background-white-ter py-1\",staticStyle:{\"margin-top\":\"1rem\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"columns is-multiline\"},[_c('div',{staticClass:\"column\"},[_c('BButton',{attrs:{\"tag\":\"a\",\"href\":_vm.tenant.impressum,\"target\":\"_blank\",\"rel\":\"noopener\",\"icon-left\":\"info-circle\",\"type\":\"is-text\"}},[_vm._v(\" \"+_vm._s(_vm.$t('impressum'))+\" \")])],1),_c('div',{staticClass:\"column\"},[_c('BButton',{attrs:{\"tag\":\"router-link\",\"to\":{ name: 'privacy' },\"icon-left\":\"shield-alt\",\"type\":\"is-text\"}},[_vm._v(\" \"+_vm._s(_vm.$t('privacy'))+\" \")])],1),_c('div',{staticClass:\"column\"},[_c('BButton',{attrs:{\"tag\":\"router-link\",\"to\":{ name: 'open-source' },\"icon-left\":\"code\",\"type\":\"is-text\"}},[_vm._v(\" \"+_vm._s(_vm.$t('open-source'))+\" \")])],1),(_vm.$auth.isAuthenticated)?_c('div',{staticClass:\"column\"},[_c('BButton',{attrs:{\"tag\":\"router-link\",\"to\":{ name: 'notification-settings' },\"icon-left\":\"bell\",\"type\":\"is-text\"}},[_vm._v(\" \"+_vm._s(_vm.$t('notification-settings'))+\" \")])],1):_vm._e(),_c('div',{staticClass:\"column\"},[_c('BButton',{attrs:{\"tag\":\"router-link\",\"to\":{ name: (\"help-\" + (_vm.$i18n.locale)) },\"icon-left\":\"question\",\"type\":\"is-text\"}},[_vm._v(\" \"+_vm._s(_vm.$t('help'))+\" \")])],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\n\n@Component\nexport default class FooterLayout extends Vue {\n get tenant() {\n return window.tenant;\n }\n}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FooterLayout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FooterLayout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FooterLayout.vue?vue&type=template&id=1c3d719d&scoped=true&\"\nimport script from \"./FooterLayout.vue?vue&type=script&lang=ts&\"\nexport * from \"./FooterLayout.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FooterLayout.vue?vue&type=style&index=0&id=1c3d719d&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1c3d719d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BNavbar',{staticClass:\"navbar is-fixed-top\",attrs:{\"type\":\"is-dark\",\"wrapper-class\":\"container\"},scopedSlots:_vm._u([{key:\"brand\",fn:function(){return [_c('BNavbarItem',{attrs:{\"tag\":\"router-link\",\"to\":{ name: 'home' }}},[_c('img',{staticStyle:{\"height\":\"200px\",\"margin-right\":\".5rem\"},attrs:{\"src\":'/img/logos/' + _vm.tenant.logo,\"alt\":_vm.tenant.name + ' Fluid Management'}}),_c('h1',{staticClass:\"has-text-weight-bold is-size-4 upper\"},[_c('span',{staticClass:\"long-title\"},[_vm._v(_vm._s(_vm.tenant.title))]),_c('span',{staticClass:\"short-title\"},[_vm._v(_vm._s(_vm.tenant.shortTitle))])])])]},proxy:true},(_vm.$auth.isStaff)?{key:\"start\",fn:function(){return [_c('NavigationItem',{attrs:{\"item\":_vm.customers}}),_c('NavigationItem',{attrs:{\"item\":_vm.users}}),_c('BNavbarDropdown',{scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('BIcon',{attrs:{\"icon\":\"archive\",\"size\":\"is-small\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('inventory')))])]},proxy:true}],null,false,4043916944)},[_c('NavigationItem',{attrs:{\"item\":_vm.lubricants}}),_c('NavigationItem',{attrs:{\"item\":_vm.products}}),_c('NavigationItem',{attrs:{\"item\":_vm.machineTypes}})],1)]},proxy:true}:null,{key:\"end\",fn:function(){return [_c('BNavbarDropdown',{scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{staticClass:\"icon\"},[_c('img',{attrs:{\"src\":require((\"../assets/\" + (_vm.$i18n.locale) + \".svg\")),\"alt\":{de: 'Deutsch', en: 'English'}[_vm.$i18n.locale]}})]),_c('span',{staticClass:\"language-label\"},[_vm._v(_vm._s(_vm.$t('language')))])]},proxy:true}])},[_c('BNavbarItem',{on:{\"click\":function($event){return _vm.setLocale('de')}}},[_c('span',{staticClass:\"icon\"},[_c('img',{attrs:{\"src\":require(\"../assets/de.svg\"),\"alt\":\"Deutsch\"}})]),_c('span',[_vm._v(\"Deutsch\")])]),_c('BNavbarItem',{on:{\"click\":function($event){return _vm.setLocale('en')}}},[_c('span',{staticClass:\"icon\"},[_c('img',{attrs:{\"src\":require(\"../assets/en.svg\"),\"alt\":\"English\"}})]),_c('span',[_vm._v(\"English\")])])],1),(_vm.$auth.isAuthenticated)?_c('BNavbarDropdown',{scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('img',{staticClass:\"profile-picture\",attrs:{\"src\":_vm.$auth.user.picture,\"alt\":\"\"}}),_c('span',[_vm._v(_vm._s(_vm.$auth.user.name))]),(_vm.$auth.isStaff)?_c('BIcon',{staticClass:\"profile-badge\",attrs:{\"icon\":\"id-card-alt\",\"size\":\"is-small\",\"type\":\"is-success\"}}):_vm._e(),(_vm.$auth.isSelfService)?_c('BTooltip',{staticClass:\"profile-badge\",attrs:{\"label\":_vm.$t('self-service-permission'),\"position\":\"is-bottom\",\"type\":\"is-success\"}},[_c('BIcon',{attrs:{\"icon\":\"cog\",\"size\":\"is-small\",\"type\":\"is-success\"}})],1):_vm._e()]},proxy:true}],null,false,1784637170)},[(_vm.backgroundSyncStore.count)?_c('BNavbarItem',{on:{\"click\":function($event){return _vm.backgroundSyncStore.executeOfflineRequests()}}},[_c('BIcon',{attrs:{\"icon\":\"sync\",\"size\":\"is-small\"}}),_c('span',[_vm._v(_vm._s(_vm.$tc('offline-requests', _vm.backgroundSyncStore.count)))])],1):_vm._e(),(_vm.$auth.isStaff)?_c('BNavbarItem',{on:{\"click\":function($event){return _vm.togglePresentationMode()}}},[_c('BIcon',{attrs:{\"icon\":\"store\",\"size\":\"is-small\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(_vm.presentationModeStore.isEnabled ? 'presentation-mode-disable' : 'presentation-mode-enable')))])],1):_vm._e(),_c('NavigationItem',{attrs:{\"item\":_vm.notificationSettings}})],1):_vm._e(),_c('BNavbarItem',{staticClass:\"buttons\",attrs:{\"tag\":\"div\"}},[(_vm.$auth.isAuthenticated)?_c('BButton',{attrs:{\"icon-left\":\"sign-out-alt\",\"type\":\"is-link\"},on:{\"click\":_vm.logout}},[_vm._v(\" \"+_vm._s(_vm.$t('log-out'))+\" \")]):_c('BButton',{attrs:{\"tag\":\"router-link\",\"to\":{ name: 'home' },\"icon-left\":\"sign-in-alt\",\"type\":\"is-link\"}},[_vm._v(\" \"+_vm._s(_vm.$t('log-in'))+\" \")])],1)]},proxy:true}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BNavbarItem',{attrs:{\"tag\":\"router-link\",\"to\":{ name: _vm.item.routeName },\"active\":_vm.item.active},on:{\"click\":function($event){return _vm.$emit('click')}}},[_c('BIcon',{attrs:{\"icon\":_vm.item.icon,\"size\":\"is-small\"}}),_c('span',[_vm._v(_vm._s(_vm.item.title))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\nimport { NavItem } from '@/layout/helpers/NavItem';\nimport { Component, Prop, Vue } from 'vue-property-decorator';\n\n@Component\nexport default class NavigationItem extends Vue {\n @Prop({ type: Object, required: true })\n readonly item!: NavItem;\n\n async handleClickEvent() {\n setTimeout(() => {\n const parent: any = this.$parent;\n\n parent.closeMenu();\n\n if (parent.$data._isNavDropdown) {\n parent.$parent.closeMenu();\n }\n }, 100);\n }\n\n mounted() {\n this.$el.addEventListener('click', this.handleClickEvent);\n }\n\n beforeDestroy() {\n this.$el.removeEventListener('click', this.handleClickEvent);\n }\n}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavigationItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavigationItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavigationItem.vue?vue&type=template&id=08f376a0&\"\nimport script from \"./NavigationItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavigationItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { backgroundSyncStore } from '@/common/helpers/BackgroundSyncStore';\nimport { presentationModeStore } from '@/common/helpers/PresentationModeStore';\nimport { NavItem } from '@/layout/helpers/NavItem';\nimport NavigationItem from '@/layout/NavigationItem.vue';\nimport { Component, Vue } from 'vue-property-decorator';\n\n@Component({\n components: { NavigationItem },\n})\nexport default class Navigation extends Vue {\n backgroundSyncStore = backgroundSyncStore;\n presentationModeStore = presentationModeStore;\n\n get tenant() {\n return window.tenant;\n }\n\n get customers() {\n return this.item('customers');\n }\n\n get users() {\n return this.item('users');\n }\n\n get lubricants() {\n return this.item('lubricants');\n }\n\n get products() {\n return this.item('products');\n }\n\n get machineTypes() {\n return this.item('machine-types');\n }\n\n get notificationSettings() {\n return this.item('notification-settings');\n }\n\n private item(name: string): NavItem {\n const { route: { matched } } = this.$router.resolve({ name });\n\n const resolved = matched[1];\n\n return {\n title: this.$t(resolved.meta.breadcrumb) as string,\n routeName: name,\n icon: resolved.meta.icon,\n active: !!this.$route.matched.find(record => record.name === name),\n };\n }\n\n setLocale(locale: string) {\n this.$i18n.locale = locale;\n localStorage.setItem('locale', locale);\n\n if (this.$route.name?.startsWith('help-')) {\n this.$router.replace({ name: `help-${locale}` });\n }\n }\n\n togglePresentationMode() {\n presentationModeStore.toggle();\n this.$buefy.toast.open({\n message: this.$t(presentationModeStore.isEnabled ? 'presentation-mode-enabled' : 'presentation-mode-disabled').toString(),\n type: 'is-success',\n });\n }\n\n logout() {\n this.$auth.logout({\n returnTo: window.location.origin + '/logged-out',\n });\n }\n}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=e3920eee&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=ts&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=e3920eee&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3920eee\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Breadcrumbs from '@/layout/Breadcrumbs.vue';\nimport FooterLayout from '@/layout/FooterLayout.vue';\nimport Navigation from '@/layout/Navigation.vue';\nimport { Component, Vue } from 'vue-property-decorator';\n\n@Component({\n components: { FooterLayout, Breadcrumbs, Navigation },\n})\nexport default class BaseLayout extends Vue {\n}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseLayout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseLayout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseLayout.vue?vue&type=template&id=b9c11f30&scoped=true&\"\nimport script from \"./BaseLayout.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseLayout.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseLayout.vue?vue&type=style&index=0&id=b9c11f30&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b9c11f30\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"fade\"}},[_c('RouterView')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\n\n@Component\nexport default class RouteParent extends Vue {\n}\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RouteParent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RouteParent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RouteParent.vue?vue&type=template&id=0c33ed82&\"\nimport script from \"./RouteParent.vue?vue&type=script&lang=ts&\"\nexport * from \"./RouteParent.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import BaseLayout from '@/layout/BaseLayout.vue';\nimport RouteParent from '@/layout/RouteParent.vue';\nimport { Route, RouteConfig } from 'vue-router';\n\nconst machineRoutes: RouteConfig = {\n path: 'machine/:machineId',\n name: 'machine',\n props: true,\n component: () => import('../machines/views/MachineParentView.vue'),\n redirect: { name: 'view-machine' },\n meta: {\n breadcrumb: 'machine',\n icon: 'cog',\n },\n children: [\n {\n path: '',\n name: 'view-machine',\n component: () => import('../machines/views/MachineView.vue'),\n meta: {\n title: 'machine',\n },\n },\n {\n path: 'edit',\n name: 'edit-machine',\n component: () => import('../machines/views/EditMachineView.vue'),\n meta: {\n breadcrumb: 'edit-machine',\n icon: 'cog-edit',\n },\n },\n {\n path: 'add-measurement',\n name: 'add-measurement',\n component: () => import('../measurements/views/AddMeasurementView.vue'),\n props: bindQuery,\n meta: {\n breadcrumb: 'add-measurement',\n icon: 'vial-plus',\n },\n },\n {\n path: 'import-measurements',\n name: 'import-measurements',\n component: () => import('../measurements/views/ImportMeasurementsView.vue'),\n meta: {\n breadcrumb: 'import-measurement',\n icon: 'vial-arrow-up',\n },\n },\n {\n path: 'edit-measurement/:measurementId',\n name: 'edit-measurement',\n component: () => import('../measurements/views/EditMeasurementView.vue'),\n props: bindQuery,\n meta: {\n breadcrumb: 'edit-measurement',\n icon: 'vial-edit',\n },\n },\n {\n path: 'add-filling',\n name: 'add-filling',\n component: () => import('../machines/views/AddFillingView.vue'),\n meta: {\n breadcrumb: 'add-lubricant-filling',\n icon: 'fill-drip',\n },\n },\n {\n path: 'edit-filling/:fillingId',\n name: 'edit-filling',\n component: () => import('../machines/views/EditFillingView.vue'),\n meta: {\n breadcrumb: 'edit-filling',\n icon: 'fill-drip-edit',\n },\n props: true,\n },\n {\n path: 'qr-code',\n name: 'qr-code',\n component: () => import('../machines/views/QrCodeView.vue'),\n meta: {\n breadcrumb: 'qr-code',\n icon: 'qrcode',\n },\n },\n {\n path: 'add-product',\n name: 'add-machine-product',\n component: () => import('../machines/views/AddMachineProductView.vue'),\n meta: {\n breadcrumb: 'add-product',\n icon: 'cube-plus',\n },\n },\n {\n path: 'edit-product/:productId',\n name: 'edit-machine-product',\n component: () => import('../machines/views/EditMachineProductView.vue'),\n meta: {\n breadcrumb: 'edit-machine-product',\n icon: 'cube-edit',\n },\n props: true,\n },\n ],\n};\n\nconst departmentRoutes: RouteConfig = {\n path: ':departmentId?',\n name: 'department',\n props: true,\n component: () => import('../departments/views/DepartmentParentView.vue'),\n redirect: { name: 'view-department' },\n meta: {\n breadcrumb: 'department',\n icon: 'users-cog',\n },\n children: [\n {\n path: '',\n name: 'view-department',\n component: () => import('../departments/views/DepartmentView.vue'),\n meta: {\n title: 'department',\n },\n },\n {\n path: 'edit',\n name: 'edit-department',\n component: () => import('../departments/views/EditDepartmentView.vue'),\n meta: {\n breadcrumb: 'edit-department',\n icon: 'users-cog-edit',\n },\n },\n {\n path: 'aggregations',\n name: 'aggregations',\n component: () => import('../customers/views/CustomerAggregationView.vue'),\n meta: {\n breadcrumb: 'aggregations',\n icon: 'chart-pie',\n },\n },\n {\n path: 'downloads',\n name: 'customer-downloads',\n component: () => import('../downloads/views/CustomerDownloadsView.vue'),\n meta: {\n breadcrumb: 'downloads',\n icon: 'file-download',\n },\n },\n {\n path: 'scan-qr',\n name: 'scan-qr',\n component: () => import('../customers/views/ScanQrCodeView.vue'),\n meta: {\n breadcrumb: 'scan-qr',\n icon: 'qrcode',\n },\n },\n {\n path: 'lab-import',\n name: 'lab-import',\n component: () => import('../customers/views/ImportLabReportView.vue'),\n meta: {\n breadcrumb: 'import-lab-report',\n icon: 'flask',\n },\n },\n {\n path: 'add-machine',\n name: 'add-machine',\n component: () => import('../machines/views/AddMachineView.vue'),\n meta: {\n breadcrumb: 'add-machines',\n icon: 'cog-plus',\n },\n },\n {\n path: 'tours/:tourId',\n name: 'tour',\n component: () => import('../tours/views/TourView.vue'),\n props: true,\n meta: {\n breadcrumb: 'measurements-report',\n icon: 'file-alt',\n },\n },\n {\n path: 'lab-reports/:tourId',\n name: 'lab-report',\n component: () => import('../tours/views/TourView.vue'),\n props: true,\n meta: {\n breadcrumb: 'lab-report',\n icon: 'flask',\n },\n },\n {\n path: 'add-fillings',\n name: 'add-fillings',\n component: () => import('../lubricants/views/AddMultipleFillingsView.vue'),\n meta: {\n breadcrumb: 'add-fillings',\n icon: 'fill-drip',\n },\n },\n machineRoutes,\n ],\n};\n\nconst customerRoutes: RouteConfig = {\n path: 'customers',\n name: 'customers',\n component: RouteParent,\n redirect: { name: 'customers-list' },\n meta: {\n breadcrumb: 'customers',\n icon: 'address-book',\n },\n children: [\n {\n path: '',\n name: 'customers-list',\n component: () => import('../customers/views/CustomersView.vue'),\n meta: {\n title: 'customers',\n },\n },\n {\n path: 'add',\n name: 'add-customer',\n component: () => import('../customers/views/AddCustomerView.vue'),\n meta: {\n breadcrumb: 'add',\n title: 'add-customer',\n icon: 'plus',\n },\n },\n {\n path: ':customerId',\n name: 'customer',\n props: true,\n component: () => import('../customers/views/CustomerParentView.vue'),\n redirect: { name: 'view-customer' },\n meta: {\n breadcrumb: 'customer',\n icon: 'briefcase',\n },\n children: [\n {\n path: '',\n name: 'view-customer',\n component: () => import('../customers/views/CustomerView.vue'),\n meta: {\n title: 'customer',\n },\n },\n {\n path: 'edit',\n name: 'edit-customer',\n component: () => import('../customers/views/EditCustomerView.vue'),\n meta: {\n breadcrumb: 'edit',\n icon: 'briefcase-edit',\n },\n },\n {\n path: 'add-department',\n name: 'add-department',\n component: () => import('../departments/views/AddDepartmentView.vue'),\n meta: {\n breadcrumb: 'add-department',\n icon: 'users-cog-plus',\n },\n },\n departmentRoutes,\n ],\n },\n ],\n};\n\nexport const routes: RouteConfig[] = [\n {\n path: '/',\n name: 'base',\n component: BaseLayout,\n redirect: { name: 'home' },\n meta: {\n breadcrumb: 'home',\n icon: 'home',\n },\n children: [\n {\n path: '/',\n name: 'home',\n component: () => import('../home/Home.vue'),\n meta: {\n title: 'home',\n },\n },\n customerRoutes,\n {\n path: 'users',\n name: 'users',\n component: RouteParent,\n redirect: { name: 'users-list' },\n meta: {\n breadcrumb: 'user',\n icon: 'users',\n },\n children: [\n {\n path: '',\n name: 'users-list',\n component: () => import('../users/views/UsersView.vue'),\n meta: {\n title: 'users',\n },\n },\n {\n path: 'add',\n name: 'add-user',\n component: () => import('../users/views/AddUserView.vue'),\n meta: {\n breadcrumb: 'add',\n title: 'add-user',\n icon: 'user-plus',\n },\n },\n {\n path: ':userId',\n name: 'edit-user',\n component: () => import('../users/views/EditUserView.vue'),\n props: true,\n meta: {\n breadcrumb: 'edit',\n title: 'edit-user',\n icon: 'user-edit',\n },\n },\n ],\n },\n {\n path: 'machine-types',\n name: 'machine-types',\n component: RouteParent,\n redirect: { name: 'machine-types-list' },\n meta: {\n breadcrumb: 'machine-types',\n icon: 'cogs',\n },\n children: [\n {\n path: '',\n name: 'machine-types-list',\n component: () => import('../machines/views/MachineTypesView.vue'),\n meta: {\n title: 'machine-types',\n },\n },\n {\n path: 'add',\n name: 'add-machine-type',\n component: () => import('../machines/views/AddMachineTypeView.vue'),\n meta: {\n breadcrumb: 'add',\n title: 'add-machine-type',\n icon: 'plus',\n },\n },\n ],\n },\n {\n path: 'lubricants',\n name: 'lubricants',\n component: RouteParent,\n redirect: { name: 'lubricants-list' },\n meta: {\n breadcrumb: 'lubricants',\n icon: 'tint',\n staffOnly: true,\n },\n children: [\n {\n path: '',\n name: 'lubricants-list',\n component: () => import('../lubricants/views/LubricantsView.vue'),\n meta: {\n title: 'lubricants',\n },\n },\n {\n path: 'add',\n name: 'add-lubricant',\n component: () => import('../lubricants/views/AddLubricantView.vue'),\n meta: {\n breadcrumb: 'add',\n title: 'add-lubricant',\n icon: 'tint-plus',\n },\n },\n {\n path: ':lubricantId',\n name: 'lubricant',\n component: RouteParent,\n meta: {\n breadcrumb: 'lubricant',\n icon: 'tint',\n },\n redirect: { name: 'view-lubricant' },\n children: [\n {\n path: '',\n name: 'view-lubricant',\n component: () => import('../lubricants/views/LubricantView.vue'),\n props: true,\n meta: {\n title: 'lubricant',\n },\n },\n {\n path: 'edit',\n name: 'edit-lubricant',\n component: () => import('../lubricants/views/EditLubricantView.vue'),\n props: true,\n meta: {\n breadcrumb: 'edit',\n title: 'edit-lubricant',\n icon: 'tint-edit',\n },\n },\n ],\n },\n ],\n },\n {\n path: 'products',\n name: 'products',\n component: RouteParent,\n redirect: { name: 'products-list' },\n meta: {\n breadcrumb: 'other-products',\n icon: 'cube',\n staffOnly: true,\n },\n children: [\n {\n path: '',\n name: 'products-list',\n component: () => import('../products/views/ProductsView.vue'),\n meta: {\n title: 'other-products',\n },\n },\n {\n path: 'add',\n name: 'add-product',\n component: () => import('../products/views/AddProductView.vue'),\n meta: {\n breadcrumb: 'add',\n title: 'add-product',\n icon: 'cube-plus',\n },\n },\n {\n path: ':productId',\n name: 'product',\n component: RouteParent,\n meta: {\n breadcrumb: 'product',\n icon: 'cube',\n },\n redirect: { name: 'view-product' },\n children: [\n {\n path: '',\n name: 'view-product',\n component: () => import('../products/views/ProductView.vue'),\n props: true,\n meta: {\n title: 'product',\n },\n },\n {\n path: 'edit',\n name: 'edit-product',\n component: () => import('../products/views/EditProductView.vue'),\n props: true,\n meta: {\n breadcrumb: 'edit',\n title: 'edit-product',\n icon: 'cube-edit',\n },\n },\n ],\n },\n {\n path: 'group/add',\n name: 'add-product-group',\n component: () => import('../products/views/AddProductGroupView.vue'),\n meta: {\n breadcrumb: 'add-product-group',\n icon: 'cubes-plus',\n },\n },\n {\n path: 'group/:groupId/edit',\n name: 'edit-product-group',\n component: () => import('../products/views/EditProductGroupView.vue'),\n props: true,\n meta: {\n breadcrumb: 'edit-product-group',\n icon: 'cubes-edit',\n },\n },\n ],\n },\n {\n name: 'anonymous-machines',\n path: '/share/:customerId/:departmentId?',\n component: () => import('../anonymous/views/AnonymousMachinesView.vue'),\n props: true,\n meta: {\n nonAuthenticated: true,\n icon: 'file',\n breadcrumb: 'maintenance-sheet-view',\n },\n },\n {\n name: 'notification-settings',\n path: 'notification-settings',\n component: () => import('../users/views/MyNotificationSettings.vue'),\n meta: {\n breadcrumb: 'notification-settings',\n icon: 'bell',\n },\n },\n {\n name: 'privacy',\n path: 'privacy',\n component: () => import('../layout/PrivacyView.vue'),\n meta: {\n breadcrumb: 'privacy',\n icon: 'shield-alt',\n nonAuthenticated: true,\n },\n },\n {\n name: 'open-source',\n path: 'open-source',\n component: () => import('../layout/OpenSourceView.vue'),\n meta: {\n breadcrumb: 'open-source',\n icon: 'code',\n nonAuthenticated: true,\n },\n },\n {\n name: 'help-de',\n path: 'help-de',\n component: () => import('../layout/HelpView.vue'),\n meta: {\n breadcrumb: 'help',\n icon: 'question',\n nonAuthenticated: true,\n },\n },\n {\n name: 'help-en',\n path: 'help-en',\n component: () => import('../layout/HelpViewEn.vue'),\n meta: {\n breadcrumb: 'help',\n icon: 'question',\n nonAuthenticated: true,\n },\n },\n {\n path: '/logged-out',\n name: 'logged-out',\n component: () => import('../auth/LoggedOutView.vue'),\n meta: {\n nonAuthenticated: true,\n title: 'logged-out',\n },\n },\n ],\n },\n {\n path: '*',\n name: 'not-found',\n redirect: {\n name: 'home',\n },\n },\n];\n\nfunction bindQuery(route: Route) {\n return { ...route.params, ...route.query };\n}\n","import { nonStaffSingleCustomerGuard } from '@/customers/helpers/nonStaffSingleCustomerGuard';\nimport { authGuard } from '@/router/authGuard';\nimport { routes } from '@/router/routes';\nimport Vue from 'vue';\nimport VueRouter from 'vue-router';\n\nVue.use(VueRouter);\n\nexport const router = new VueRouter({\n mode: 'history',\n base: process.env.BASE_URL,\n routes,\n\n});\n\nrouter.beforeEach(authGuard);\nrouter.beforeEach(nonStaffSingleCustomerGuard);\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('transition',{attrs:{\"name\":\"fade\"}},[_c('RouterView')],1),_c('PortalTarget',{attrs:{\"name\":\"modals\",\"multiple\":\"\"}}),_c('a',{staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"downloadHelper\",\"href\":_vm.downloadStore.exportDataUrl,\"download\":_vm.downloadStore.exportFileName}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\nimport { downloadStore } from '@/common/helpers/downloadStore';\nimport { Component, Vue } from 'vue-property-decorator';\n\n@Component({\n metaInfo(this: App) {\n const { title, breadcrumb } = this.$route.meta ?? {};\n\n const prefix = this.$t(title ?? breadcrumb) as string;\n const suffix = `${this.tenant.name} Fluid Management`;\n\n return {\n title: prefix,\n titleTemplate: prefix ? `%s | ${suffix}` : suffix,\n link: [\n { rel: 'shortcut icon', href: `/img/icons/${this.tenant.favicon}/favicon.ico` },\n { rel: 'icon', type: 'image/png', href: `/img/icons/${this.tenant.favicon}/favicon-32x32.png` },\n ],\n };\n },\n})\nexport default class App extends Vue {\n downloadStore = downloadStore;\n\n get tenant() {\n return window.tenant;\n }\n}\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=2c327e06&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { library } from '@fortawesome/fontawesome-svg-core';\nimport {\n faAddressBook,\n faAngleLeft,\n faAngleRight,\n faArchive,\n faArrowDown,\n faArrowRight,\n faArrowUp,\n faBell,\n faBriefcase,\n faChartArea,\n faChartPie,\n faCheck,\n faCheckCircle,\n faChevronDown,\n faCode,\n faCog,\n faCogs,\n faCopy,\n faCube,\n faCubes,\n faDirections,\n faDoorOpen,\n faDownload,\n faEdit,\n faEllipsisH,\n faExchangeAlt,\n faExclamation,\n faExclamationCircle,\n faFile,\n faFileAlt,\n faFileDownload,\n faFileExport,\n faFillDrip,\n faFlask,\n faFolderOpen,\n faForward,\n faHome,\n faIdCardAlt,\n faInfoCircle,\n faKey,\n faLightbulb,\n faMinus,\n faPen,\n faPlus,\n faQrcode,\n faQuestion,\n faRulerHorizontal,\n faSave,\n faShieldAlt,\n faSignInAlt,\n faSignOutAlt,\n faStore,\n faSync,\n faTimesCircle,\n faTint,\n faTrash,\n faUpload,\n faUser,\n faUserEdit,\n faUserPlus,\n faUsers,\n faUsersCog,\n faVial,\n faWrench,\n} from '@fortawesome/free-solid-svg-icons';\n\nlibrary.add(\n faSignOutAlt, faHome, faUser, faPlus, faArrowUp, faArrowDown, faKey, faCopy,\n faIdCardAlt, faUsersCog, faUserPlus, faUserEdit, faBriefcase, faAddressBook,\n faTrash, faAngleLeft, faAngleRight, faEdit, faCog, faPen, faChartArea, faSave,\n faMinus, faExclamationCircle, faTint, faArchive, faFillDrip, faFolderOpen, faCube,\n faCheck, faExclamation, faVial, faTimesCircle, faUpload, faFlask, faCubes, faForward,\n faFileExport, faSync, faDirections, faFileAlt, faDoorOpen, faRulerHorizontal,\n faCogs, faChartPie, faEllipsisH, faFileDownload, faDownload, faBell, faQrcode, faLightbulb,\n faExchangeAlt, faInfoCircle, faShieldAlt, faSignInAlt, faChevronDown, faWrench, faFile,\n faCode, faCheckCircle, faUsers, faQuestion, faArrowRight, faStore,\n);\n","import { Auth0Plugin } from '@/auth/auth0';\nimport { getAuth0Connection } from '@/auth/getAuth0Connection';\nimport IconWrapper from '@/common/components/IconWrapper.vue';\nimport PageHeader from '@/common/components/PageHeader.vue';\nimport { LoadingMixin } from '@/common/helpers/LoadingMixin';\nimport { registerServiceWorker } from '@/registerServiceWorker';\nimport { router } from '@/router/router';\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome';\nimport Buefy from 'buefy';\nimport PortalVue from 'portal-vue';\nimport StackdriverErrorReporter from 'stackdriver-errors-js';\nimport Vue from 'vue';\nimport AsyncComputed from 'vue-async-computed';\nimport 'vue-class-component/hooks';\nimport VueCurrencyInput from 'vue-currency-input';\nimport VueMeta from 'vue-meta';\nimport VueScrollTo from 'vue-scrollto';\nimport Vuelidate from 'vuelidate';\nimport 'whatwg-fetch';\nimport App from './App.vue';\nimport i18n from './i18n';\nimport './styles/fontAwesomeIcons';\nimport './styles/index.scss';\n\nexport const errorHandler = new StackdriverErrorReporter();\n\n(async function() {\n registerServiceWorker().catch(x => console.error(x));\n\n errorHandler.start({\n key: 'AIzaSyCa_YxqIqEkY8eqlBYE1SE2acoUYPjJpUI',\n projectId: 'ruedingerfluidmanagement',\n service: 'FluidManagementSPA',\n });\n\n Vue.config.productionTip = false;\n Vue.config.errorHandler = err => errorHandler.report(err);\n\n Vue.use(AsyncComputed);\n\n Vue.component('FontAwesomeIcon', FontAwesomeIcon);\n Vue.component('FontAwesomeLayers', FontAwesomeLayers);\n Vue.component('IconWrapper', IconWrapper);\n\n Vue.use(VueCurrencyInput, {\n globalOptions: {\n currency: null as any,\n distractionFree: { hideGroupingSymbol: true },\n precision: { min: 0, max: 2 },\n },\n });\n\n Vue.use(Auth0Plugin, {\n domain: 'ruedinger.eu.auth0.com',\n clientId: 'cpWsWNRfv5UGlN3FVlpfls4SSAJ3WtkU',\n authorizationParams: {\n audience: 'fluid-management-api',\n scope: 'openid offline_access profile',\n responseType: 'token id_token',\n redirect_uri: window.location.origin,\n connection: await getAuth0Connection(),\n },\n onRedirectCallback(appState: any) {\n router.push(appState?.targetUrl ? appState.targetUrl : window.location.pathname);\n },\n });\n\n Vue.use(Buefy, {\n defaultIconComponent: 'IconWrapper',\n defaultIconPack: 'fas',\n defaultToastDuration: 2_500,\n defaultToastPosition: 'is-bottom',\n });\n\n Vue.use(Vuelidate);\n\n Vue.use(PortalVue);\n Vue.use(VueMeta);\n\n Vue.mixin(LoadingMixin);\n Vue.component('PageHeader', PageHeader);\n\n Vue.use(VueScrollTo);\n\n new Vue({\n router,\n i18n,\n render: h => h(App),\n }).$mount('#app');\n})();\n","var map = {\n\t\"./de.svg\": 5919,\n\t\"./en.svg\": 8987\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1980;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"94\":\"332cdb29\",\"177\":\"43fffbc9\",\"354\":\"74dd2b72\",\"616\":\"24a94202\",\"744\":\"93767f98\",\"857\":\"c50c3c17\",\"874\":\"d2286ad3\",\"1046\":\"38c208f3\",\"1314\":\"8b19158d\",\"1718\":\"2ac5b4f9\",\"1744\":\"6f25c4fb\",\"1972\":\"e695ea59\",\"2082\":\"21c41c12\",\"2262\":\"edef2921\",\"2343\":\"430c3999\",\"2543\":\"c1754e28\",\"2719\":\"5ab6003a\",\"2826\":\"fda54f10\",\"2838\":\"e5065286\",\"3182\":\"3a7ae7ae\",\"3333\":\"23ed7194\",\"3365\":\"251a1777\",\"3763\":\"b5b3aa2d\",\"3766\":\"8f950bff\",\"3968\":\"e287f692\",\"4024\":\"df8d0ec8\",\"4082\":\"daca2350\",\"4084\":\"8553a097\",\"4149\":\"cd0fc36b\",\"4243\":\"6fcd631a\",\"4266\":\"e33115df\",\"4843\":\"118473bc\",\"4962\":\"13595846\",\"5232\":\"549f3ad3\",\"5237\":\"ed0c56d5\",\"5368\":\"be52aafe\",\"5504\":\"3d015aee\",\"5564\":\"142e52e4\",\"5796\":\"9c5a353b\",\"5945\":\"6b76d694\",\"6008\":\"9e3f7228\",\"6067\":\"d837e66e\",\"6151\":\"24bbe43f\",\"6162\":\"a297960b\",\"6382\":\"7259ff45\",\"6399\":\"82a377ca\",\"6515\":\"dfd8aa55\",\"6655\":\"09508da1\",\"7016\":\"6529231d\",\"7209\":\"fd03cfe9\",\"7276\":\"ee4844a7\",\"7399\":\"c78fa702\",\"7448\":\"6da0ac90\",\"7890\":\"11c6bb89\",\"8302\":\"9ef50502\",\"8734\":\"86a99d8b\",\"8751\":\"48cb9dcd\",\"8962\":\"f62fcf60\",\"9069\":\"1d34c946\",\"9184\":\"4368a743\",\"9523\":\"237ceb64\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"94\":\"7ce8952f\",\"177\":\"d216fa78\",\"857\":\"4c2c5b83\",\"1314\":\"269011d9\",\"1744\":\"b510e9b1\",\"1972\":\"d0d632a0\",\"2082\":\"c1e5c43e\",\"2262\":\"c1e5c43e\",\"3365\":\"f51157ff\",\"3766\":\"49d5e5ea\",\"3968\":\"3c0bfed8\",\"4024\":\"74c2a152\",\"4084\":\"4c2c5b83\",\"4266\":\"c1e5c43e\",\"4843\":\"d216fa78\",\"5368\":\"3d59da9e\",\"5504\":\"51785010\",\"6008\":\"c1e5c43e\",\"6151\":\"c1e5c43e\",\"6382\":\"054b86b2\",\"7276\":\"f49dfe43\",\"7890\":\"6dfb5a06\",\"8751\":\"31f36290\",\"9523\":\"e8b7e99e\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t3524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"94\":1,\"177\":1,\"857\":1,\"1314\":1,\"1744\":1,\"1972\":1,\"2082\":1,\"2262\":1,\"3365\":1,\"3766\":1,\"3968\":1,\"4024\":1,\"4084\":1,\"4266\":1,\"4843\":1,\"5368\":1,\"5504\":1,\"6008\":1,\"6151\":1,\"6382\":1,\"7276\":1,\"7890\":1,\"8751\":1,\"9523\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkfrontend\"] = self[\"webpackChunkfrontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(9595); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["createTimeoutSignal","controller","AbortController","setTimeout","abort","signal","fetchWrapper","async","request","options","accessToken","Vue","prototype","$auth","getTokenSilently","window","fetch","method","headers","Authorization","e","TypeError","DOMException","_a","toUpperCase","ToastProgrammatic","open","message","type","Response","status","customersClient","CustomersClient","baseUrl","usersClient","UsersClient","machinesClient","MachinesClient","machineTypesClient","MachineTypesClient","measurementsClient","MeasurementsClient","lubricantsClient","LubricantsClient","productsClient","ProductsClient","productGroupsClient","ProductGroupsClient","lubricantFillingClient","LubricantFillingClient","notificationsClient","NotificationsClient","toursClient","MachineToursClient","anonymousClient","TenantClient","AnonymousClient","departmentsClient","DepartmentsClient","location","origin","MeasurementType","MeasurementActionType","ThresholdState","NotificationType","LubricantThresholdField","MeasurementField","constructor","http","jsonParseReviver","undefined","this","getMachines","customerId","departmentId","url_","Error","encodeURIComponent","replace","options_","then","_response","processGetMachines","response","_headers","forEach","v","k","text","_responseText","result200","JSON","parse","throwException","Promise","resolve","exportMachine","machineId","from","to","processExportMachine","contentDisposition","get","fileNameMatch","exec","fileName","length","decodeURIComponent","blob","data","exportAll","processExportAll","getEnrichedById","id","processGetEnrichedById","createCustomer","model","content_","stringify","body","processCreateCustomer","getAll","processGetAll","updateMeasurementInterval","processUpdateMeasurementInterval","assignUser","processAssignUser","getCustomersByAssignedUser","userId","processGetCustomersByAssignedUser","parseMachinesForLabImport","files","FormData","item_","append","processParseMachinesForLabImport","importLabResults","machineIdsByName","toString","processImportLabResults","createTour","processCreateTour","getNotifications","limit","processGetNotifications","getMachineAggregation","processGetMachineAggregation","getAllProducts","processGetAllProducts","createDepartment","processCreateDepartment","getDepartments","processGetDepartments","rename","processRename","getById","processGetById","delete","processDelete","addMachines","processAddMachines","getByCustomerId","processGetByCustomerId","updateLubricant","processUpdateLubricant","updateDate","processUpdateDate","createLubricant","processCreateLubricant","changeThreshold","lubricantId","processChangeThreshold","getByMachine","processGetByMachine","getByCustomer","processGetByCustomer","uploadDocuments","processUploadDocuments","removeDocument","documentId","processRemoveDocument","downloadDocument","processDownloadDocument","renameDocument","processRenameDocument","createMachines","processCreateMachines","getAllByCustomer","processGetAllByCustomer","getOverview","processGetOverview","addFilling","processAddFilling","addMeasurement","processAddMeasurement","importMeasurements","processImportMeasurements","addProduct","processAddProduct","getMachineProduct","productId","processGetMachineProduct","removeProduct","processRemoveProduct","updateMachineProductFillingAmount","processUpdateMachineProductFillingAmount","updateFillingQuantity","processUpdateFillingQuantity","updateType","processUpdateType","reorder","processReorder","export","processExport","exportMachinesList","processExportMachinesList","finishTour","tourId","processFinishTour","types","page","pageSize","item","createMachineType","processCreateMachineType","getByMachinePaged","processGetByMachinePaged","getByMachineByDateRange","processGetByMachineByDateRange","changeValue","measurementId","processChangeValue","changeMeasurementDate","processChangeMeasurementDate","changeVisualState","processChangeVisualState","changeIsOk","processChangeIsOk","changeActions","actions","processChangeActions","downloadReport","processDownloadReport","getMyNotifications","processGetMyNotifications","addPushSubscription","processAddPushSubscription","removePushSubscription","processRemovePushSubscription","getMyPushSubscriptions","processGetMyPushSubscriptions","createProductGroup","processCreateProductGroup","setIsSpecial","isSpecial","processSetIsSpecial","createProduct","processCreateProduct","updateGroup","processUpdateGroup","updateUsageConcentration","processUpdateUsageConcentration","getByGroup","groupId","query","processGetByGroup","getTenantInfo","processGetTenantInfo","manifest","processManifest","getIcon","file","processGetIcon","getUsers","processGetUsers","addUser","processAddUser","getUsersByCustomer","processGetUsersByCustomer","getUserById","processGetUserById","deleteUser","processDeleteUser","sendPasswordResetLink","processSendPasswordResetLink","renameUser","processRenameUser","changePhone","processChangePhone","setUserStaff","processSetUserStaff","setUserSelfService","processSetUserSelfService","ApiException","result","super","isApiException","obj","showErrorToast","description","i18n","t","LoadingMixin","isLoading","f","delayLoading","doWithDelayedLoading","loading","noLoading","console","error","Component","PresentationModeStore","isEnabled","toggle","presentationModeStore","observable","StoreBase","descriptionKey","_loading","promise","_value","value","unload","loadNow","loadInternal","DownloadStore","exportFileName","exportDataUrl","trigger","name","URL","createObjectURL","requestAnimationFrame","document","getElementById","click","revokeObjectURL","downloadStore","setLoading","workPromise","resolvedFirst","race","publicKey","mapPushSubscription","subscription","rawKey","getKey","key","btoa","String","fromCharCode","Uint8Array","rawAuthSecret","authSecret","endpoint","device","navigator","userAgent","postPushTokenIfNecessary","localStorage","getItem","setItem","registerPush","registration","forceToast","userVisibleOnly","applicationServerKey","urlBase64ToUint8Array","state","pushManager","permissionState","createSubscription","toastCount","parseInt","SnackbarProgrammatic","actionText","duration","onAction","log","subscribe","base64String","padding","repeat","base64","rawData","atob","outputArray","i","charCodeAt","CustomerStore","customerStore","use","VueI18n","locale","language","fallbackLocale","process","messages","de","en","AuthComponent","isAuthenticated","user","roles","_b","isStaff","includes","isSelfService","isStaffOrSelfService","loginWithRedirect","o","auth0Client","authorizationParams","title","tenant","logo","token","logout","logoutParams","onLine","fromStorage","createAuth0Client","search","appState","handleRedirectCallback","onRedirectCallback","getUser","Auth0Plugin","install","getAuth0Connection","json","culture","substring","connection","render","_vm","_h","$createElement","_c","_self","staticClass","class","size","_l","l","index","attrs","icon","transform","staticRenderFns","layers","IconWrapper","layer","__decorate","Prop","Array","component","titleTag","tag","titleClasses","_t","PageHeader","Number","BackgroundSyncStore","count","openDBRequest","indexedDB","onerror","onsuccess","db","syncCount","objectStoreNames","tx","transaction","objectStore","serviceWorker","getRegistration","active","postMessage","backgroundSyncStore","registerServiceWorker","wb","Workbox","addEventListener","event","isUpdate","showUpdateToast","register","getSubscription","NotificationProgrammatic","indefinite","reload","nonStaffSingleCustomerGuard","next","customers","departments","sub","params","authGuard","meta","nonAuthenticated","authService","fn","targetUrl","fullPath","unwatch","$watch","_e","directives","rawName","expression","arg","modifiers","ref","route","hide","items","target","_v","_s","$t","breadcrumb","Breadcrumbs","$route","matched","filter","x","map","staffOnly","shouldHide","hasDepartments","$nextTick","scrollContainer","$el","scrollLeft","scrollWidth","Ref","observer","staticStyle","impressum","$i18n","FooterLayout","scopedSlots","_u","shortTitle","proxy","users","lubricants","products","machineTypes","on","$event","setLocale","picture","executeOfflineRequests","$tc","togglePresentationMode","notificationSettings","routeName","$emit","NavigationItem","parent","$parent","closeMenu","$data","_isNavDropdown","mounted","handleClickEvent","beforeDestroy","removeEventListener","Object","required","Navigation","$router","resolved","find","record","startsWith","$buefy","toast","returnTo","components","BaseLayout","RouteParent","machineRoutes","path","props","redirect","children","bindQuery","departmentRoutes","customerRoutes","routes","VueRouter","router","mode","base","beforeEach","App","metaInfo","prefix","suffix","titleTemplate","link","rel","href","favicon","library","add","faSignOutAlt","faHome","faUser","faPlus","faArrowUp","faArrowDown","faKey","faCopy","faIdCardAlt","faUsersCog","faUserPlus","faUserEdit","faBriefcase","faAddressBook","faTrash","faAngleLeft","faAngleRight","faEdit","faCog","faPen","faChartArea","faSave","faMinus","faExclamationCircle","faTint","faArchive","faFillDrip","faFolderOpen","faCube","faCheck","faExclamation","faVial","faTimesCircle","faUpload","faFlask","faCubes","faForward","faFileExport","faSync","faDirections","faFileAlt","faDoorOpen","faRulerHorizontal","faCogs","faChartPie","faEllipsisH","faFileDownload","faDownload","faBell","faQrcode","faLightbulb","faExchangeAlt","faInfoCircle","faShieldAlt","faSignInAlt","faChevronDown","faWrench","faFile","faCode","faCheckCircle","faUsers","faQuestion","faArrowRight","faStore","errorHandler","StackdriverErrorReporter","catch","start","projectId","service","config","productionTip","err","report","AsyncComputed","FontAwesomeIcon","FontAwesomeLayers","VueCurrencyInput","globalOptions","currency","distractionFree","hideGroupingSymbol","precision","min","max","domain","clientId","audience","scope","responseType","redirect_uri","push","pathname","Buefy","defaultIconComponent","defaultIconPack","defaultToastDuration","defaultToastPosition","Vuelidate","PortalVue","VueMeta","mixin","VueScrollTo","h","$mount","webpackContext","req","webpackContextResolve","__webpack_require__","code","keys","module","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","call","m","amdO","deferred","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","leafPrototypes","getProto","getPrototypeOf","__proto__","ns","create","def","current","indexOf","getOwnPropertyNames","definition","defineProperty","enumerable","chunkId","all","reduce","promises","u","miniCssF","g","globalThis","Function","prop","hasOwnProperty","inProgress","dataWebpackPrefix","url","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","onload","clearTimeout","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","p","createStylesheet","fullhref","reject","linkTag","onLinkComplete","errorType","realHref","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}