{"version":3,"sources":["node_modules/dayjs/plugin/duration.js","src/app/secure/meteringpoints/guards/metering-point.guard.ts","src/app/secure/meteringpoints/components/metering-group-form/metering-group-form.component.ts","src/app/secure/meteringpoints/components/metering-group-form/metering-group-form.component.html","src/app/secure/meteringpoints/components/metering-points-pane/metering-points-pane-datasource.ts","src/app/secure/meteringpoints/components/metering-points-pane/metering-points-pane.component.ts","src/app/secure/meteringpoints/components/metering-points-pane/metering-points-pane.component.html","src/app/secure/meteringpoints/components/metering-group-dialog/metering-group-dialog.component.ts","src/app/secure/meteringpoints/components/metering-group-dialog/metering-group-dialog.component.html","src/app/secure/meteringpoints/components/metering-point-form/metering-point-form.component.ts","src/app/secure/meteringpoints/components/metering-point-form/metering-point-form.component.html","src/app/secure/meteringpoints/components/metering-group-pane/metering-group-pane.component.ts","src/app/secure/meteringpoints/components/metering-group-pane/metering-group-pane.component.html","src/app/secure/meteringpoints/components/metering-points-disruptions-pane/metering-points-disruptions-pane.component.ts","src/app/secure/meteringpoints/components/metering-points-disruptions-pane/metering-points-disruptions-pane.component.html","src/app/secure/meteringpoints/containers/metering-points-display/metering-points-display.component.ts","src/app/secure/meteringpoints/containers/metering-points-display/metering-points-display.component.html","src/app/secure/meteringpoints/components/metering-point-item-pane/metering-point-item-pane.component.ts","src/app/secure/meteringpoints/components/metering-point-item-pane/metering-point-item-pane.component.html","src/app/secure/meteringpoints/components/function-control-contract/function-control-contract.component.ts","src/app/secure/meteringpoints/components/function-control-contract/function-control-contract.component.html","src/app/secure/meteringpoints/components/function-control-listing/function-control-listing.component.ts","src/app/secure/meteringpoints/components/function-control-listing/function-control-listing.component.html","src/app/secure/meteringpoints/components/function-control-listing/function-control-listing-table-datasource.ts","src/app/secure/meteringpoints/components/metering-point-function-control-pane/metering-point-function-control-pane.component.ts","src/app/secure/meteringpoints/components/metering-point-function-control-pane/metering-point-function-control-pane.component.html","src/app/secure/meteringpoints/components/metering-point-logical-pane/metering-point-logical-pane.component.ts","src/app/secure/meteringpoints/components/metering-point-logical-pane/metering-point-logical-pane.component.html","src/app/secure/meteringpoints/components/metering-point-metering-pane/metering-point-metering-pane.datasource.ts","src/app/secure/meteringpoints/components/metering-point-metering-pane/metering-point-metering-pane.component.ts","src/app/secure/meteringpoints/components/metering-point-metering-pane/metering-point-metering-pane.component.html","src/app/secure/meteringpoints/containers/metering-point-display/metering-point-display.component.ts","src/app/secure/meteringpoints/containers/metering-point-display/metering-point-display.component.html","src/app/secure/meteringpoints/guards/metering-point-selected.guard.ts","src/app/secure/meteringpoints/metering-points-routing.module.ts","src/app/secure/meteringpoints/components/metering-points-filter-pane/metering-points-filter-pane.component.ts","src/app/secure/meteringpoints/components/metering-points-filter-pane/metering-points-filter-pane.component.html","src/app/secure/meteringpoints/components/metering-point-info-dialog/metering-point-info-dialog.component.ts","src/app/secure/meteringpoints/components/metering-point-info-dialog/metering-point-info-dialog.component.html","src/app/secure/meteringpoints/metering-points.module.ts"],"sourcesContent":["!function (t, s) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = s() : \"function\" == typeof define && define.amd ? define(s) : (t = \"undefined\" != typeof globalThis ? globalThis : t || self).dayjs_plugin_duration = s();\n}(this, function () {\n \"use strict\";\n\n var t,\n s,\n n = 1e3,\n i = 6e4,\n e = 36e5,\n r = 864e5,\n o = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,\n u = 31536e6,\n d = 2628e6,\n a = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,\n h = {\n years: u,\n months: d,\n days: r,\n hours: e,\n minutes: i,\n seconds: n,\n milliseconds: 1,\n weeks: 6048e5\n },\n c = function (t) {\n return t instanceof g;\n },\n f = function (t, s, n) {\n return new g(t, n, s.$l);\n },\n m = function (t) {\n return s.p(t) + \"s\";\n },\n l = function (t) {\n return t < 0;\n },\n $ = function (t) {\n return l(t) ? Math.ceil(t) : Math.floor(t);\n },\n y = function (t) {\n return Math.abs(t);\n },\n v = function (t, s) {\n return t ? l(t) ? {\n negative: !0,\n format: \"\" + y(t) + s\n } : {\n negative: !1,\n format: \"\" + t + s\n } : {\n negative: !1,\n format: \"\"\n };\n },\n g = function () {\n function l(t, s, n) {\n var i = this;\n if (this.$d = {}, this.$l = n, void 0 === t && (this.$ms = 0, this.parseFromMilliseconds()), s) return f(t * h[m(s)], this);\n if (\"number\" == typeof t) return this.$ms = t, this.parseFromMilliseconds(), this;\n if (\"object\" == typeof t) return Object.keys(t).forEach(function (s) {\n i.$d[m(s)] = t[s];\n }), this.calMilliseconds(), this;\n if (\"string\" == typeof t) {\n var e = t.match(a);\n if (e) {\n var r = e.slice(2).map(function (t) {\n return null != t ? Number(t) : 0;\n });\n return this.$d.years = r[0], this.$d.months = r[1], this.$d.weeks = r[2], this.$d.days = r[3], this.$d.hours = r[4], this.$d.minutes = r[5], this.$d.seconds = r[6], this.calMilliseconds(), this;\n }\n }\n return this;\n }\n var y = l.prototype;\n return y.calMilliseconds = function () {\n var t = this;\n this.$ms = Object.keys(this.$d).reduce(function (s, n) {\n return s + (t.$d[n] || 0) * h[n];\n }, 0);\n }, y.parseFromMilliseconds = function () {\n var t = this.$ms;\n this.$d.years = $(t / u), t %= u, this.$d.months = $(t / d), t %= d, this.$d.days = $(t / r), t %= r, this.$d.hours = $(t / e), t %= e, this.$d.minutes = $(t / i), t %= i, this.$d.seconds = $(t / n), t %= n, this.$d.milliseconds = t;\n }, y.toISOString = function () {\n var t = v(this.$d.years, \"Y\"),\n s = v(this.$d.months, \"M\"),\n n = +this.$d.days || 0;\n this.$d.weeks && (n += 7 * this.$d.weeks);\n var i = v(n, \"D\"),\n e = v(this.$d.hours, \"H\"),\n r = v(this.$d.minutes, \"M\"),\n o = this.$d.seconds || 0;\n this.$d.milliseconds && (o += this.$d.milliseconds / 1e3, o = Math.round(1e3 * o) / 1e3);\n var u = v(o, \"S\"),\n d = t.negative || s.negative || i.negative || e.negative || r.negative || u.negative,\n a = e.format || r.format || u.format ? \"T\" : \"\",\n h = (d ? \"-\" : \"\") + \"P\" + t.format + s.format + i.format + a + e.format + r.format + u.format;\n return \"P\" === h || \"-P\" === h ? \"P0D\" : h;\n }, y.toJSON = function () {\n return this.toISOString();\n }, y.format = function (t) {\n var n = t || \"YYYY-MM-DDTHH:mm:ss\",\n i = {\n Y: this.$d.years,\n YY: s.s(this.$d.years, 2, \"0\"),\n YYYY: s.s(this.$d.years, 4, \"0\"),\n M: this.$d.months,\n MM: s.s(this.$d.months, 2, \"0\"),\n D: this.$d.days,\n DD: s.s(this.$d.days, 2, \"0\"),\n H: this.$d.hours,\n HH: s.s(this.$d.hours, 2, \"0\"),\n m: this.$d.minutes,\n mm: s.s(this.$d.minutes, 2, \"0\"),\n s: this.$d.seconds,\n ss: s.s(this.$d.seconds, 2, \"0\"),\n SSS: s.s(this.$d.milliseconds, 3, \"0\")\n };\n return n.replace(o, function (t, s) {\n return s || String(i[t]);\n });\n }, y.as = function (t) {\n return this.$ms / h[m(t)];\n }, y.get = function (t) {\n var s = this.$ms,\n n = m(t);\n return \"milliseconds\" === n ? s %= 1e3 : s = \"weeks\" === n ? $(s / h[n]) : this.$d[n], s || 0;\n }, y.add = function (t, s, n) {\n var i;\n return i = s ? t * h[m(s)] : c(t) ? t.$ms : f(t, this).$ms, f(this.$ms + i * (n ? -1 : 1), this);\n }, y.subtract = function (t, s) {\n return this.add(t, s, !0);\n }, y.locale = function (t) {\n var s = this.clone();\n return s.$l = t, s;\n }, y.clone = function () {\n return f(this.$ms, this);\n }, y.humanize = function (s) {\n return t().add(this.$ms, \"ms\").locale(this.$l).fromNow(!s);\n }, y.valueOf = function () {\n return this.asMilliseconds();\n }, y.milliseconds = function () {\n return this.get(\"milliseconds\");\n }, y.asMilliseconds = function () {\n return this.as(\"milliseconds\");\n }, y.seconds = function () {\n return this.get(\"seconds\");\n }, y.asSeconds = function () {\n return this.as(\"seconds\");\n }, y.minutes = function () {\n return this.get(\"minutes\");\n }, y.asMinutes = function () {\n return this.as(\"minutes\");\n }, y.hours = function () {\n return this.get(\"hours\");\n }, y.asHours = function () {\n return this.as(\"hours\");\n }, y.days = function () {\n return this.get(\"days\");\n }, y.asDays = function () {\n return this.as(\"days\");\n }, y.weeks = function () {\n return this.get(\"weeks\");\n }, y.asWeeks = function () {\n return this.as(\"weeks\");\n }, y.months = function () {\n return this.get(\"months\");\n }, y.asMonths = function () {\n return this.as(\"months\");\n }, y.years = function () {\n return this.get(\"years\");\n }, y.asYears = function () {\n return this.as(\"years\");\n }, l;\n }(),\n p = function (t, s, n) {\n return t.add(s.years() * n, \"y\").add(s.months() * n, \"M\").add(s.days() * n, \"d\").add(s.hours() * n, \"h\").add(s.minutes() * n, \"m\").add(s.seconds() * n, \"s\").add(s.milliseconds() * n, \"ms\");\n };\n return function (n, i, e) {\n t = e, s = e().$utils(), e.duration = function (t, s) {\n var n = e.locale();\n return f(t, {\n $l: n\n }, s);\n }, e.isDuration = c;\n var r = i.prototype.add,\n o = i.prototype.subtract;\n i.prototype.add = function (t, s) {\n return c(t) ? p(this, t, 1) : r.bind(this)(t, s);\n }, i.prototype.subtract = function (t, s) {\n return c(t) ? p(this, t, -1) : o.bind(this)(t, s);\n };\n };\n});","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot } from '@angular/router';\r\n\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { Observable, of } from 'rxjs';\r\nimport * as fromMeteringPointStore from '@appStore/metering-points';\r\nimport * as fromMeteringPointReducers from '@appStore/metering-points/reducers';\r\nimport * as fromCustomersStore from '@appStore/customers';\r\nimport * as fromCustomersReducers from '@appStore/customers/reducers';\r\nimport * as fromAccountStore from '@appStore/account';\r\nimport { filter, take } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class MeteringPointsGuard {\r\n constructor(private store: Store) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot): Observable {\r\n let id = route.params['mpId'];\r\n this.store\r\n .select(fromMeteringPointReducers.getMeteringPointsLoaded)\r\n .pipe(\r\n filter(x => !x),\r\n take(1)\r\n )\r\n .subscribe(x => {\r\n this.store.dispatch(new fromMeteringPointStore.LoadMeteringPoints());\r\n });\r\n\r\n this.store\r\n .select(fromMeteringPointStore.getMeteringPointsLoaded)\r\n .pipe(\r\n filter(x => !!x),\r\n take(1)\r\n )\r\n .subscribe(x => {\r\n // MeteringPoints must be loaded before LoadDisruptions can be dispatched\r\n let fromDate = localStorage.getItem('sxFakeDate') ? new Date(localStorage.getItem('sxFakeDate')) : new Date();\r\n this.store.dispatch(new fromMeteringPointStore.LoadMeteringPointsDisruptions({fromDate : fromDate}));\r\n });\r\n\r\n this.store\r\n .select(fromMeteringPointStore.getMeteringPointsLoaded)\r\n .pipe(\r\n filter(x => !!x),\r\n take(1)\r\n )\r\n .subscribe(loaded => {\r\n // MeteringPoints must be loaded before LoadDisruptions can be dispatched\r\n if (loaded && id && id !== 'undefined') {\r\n \r\n if(!isNaN(+id)){\r\n this.store.dispatch(new fromMeteringPointStore.LoadMeteringPointIntelligyStatus(+id));\r\n } \r\n }\r\n });\r\n\r\n this.store\r\n .select(fromCustomersReducers.getCustomersLoaded)\r\n .pipe(\r\n filter(x => !x),\r\n take(1)\r\n )\r\n .subscribe(x => {\r\n this.store.dispatch(new fromCustomersStore.CustomersLoadData());\r\n });\r\n\r\n this.store\r\n .select(fromMeteringPointReducers.getMeteringPointGroupsLoaded)\r\n .pipe(\r\n filter(x => !x),\r\n take(1)\r\n )\r\n .subscribe(x => {\r\n this.store.dispatch(new fromMeteringPointStore.LoadMeteringPointGroups());\r\n });\r\n\r\n this.store\r\n .select(fromAccountStore.getSettingsLoaded)\r\n .pipe(\r\n filter(x => !x),\r\n take(1)\r\n )\r\n .subscribe(x => {\r\n this.store.dispatch(new fromAccountStore.SettingLoad());\r\n });\r\n\r\n return of(true);\r\n }\r\n}\r\n","import { Component, OnInit, Inject, ViewEncapsulation, ViewChild, ElementRef, OnDestroy } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MeteringPoint, MeteringPointGroup } from '@model';\r\nimport * as fromStore from '@appStore/metering-points';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { SubSink } from 'subsink';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-metering-group-form',\r\n templateUrl: './metering-group-form.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: false\r\n})\r\nexport class MeteringGroupFormComponent implements OnInit, OnDestroy {\r\n @ViewChild('groupName', { static: true })\r\n groupNameField: ElementRef;\r\n\r\n meteringPointsToAdd: MeteringPoint[];\r\n meteringGroups$: Observable;\r\n meteringGroupsView: MeteringPointGroup[];\r\n\r\n addingNewGroup: boolean;\r\n newGroupName: string;\r\n newCounter = 0;\r\n hasNoSelection = true;\r\n\r\n private subs = new SubSink();\r\n\r\n constructor(\r\n private store: Store,\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) {\r\n this.meteringPointsToAdd = data.selectedMeteringPoints;\r\n this.addingNewGroup = false;\r\n this.newGroupName = '';\r\n\r\n this.meteringGroups$ = store.select(fromStore.getMeteringPointGroups);\r\n\r\n this.subs.sink = this.meteringGroups$.pipe(filter(x => !!x)).subscribe(meteringGroups => {\r\n this.meteringGroupsView = meteringGroups\r\n .filter(mpg => mpg.meteringType === data.meteringType)\r\n .map((mpg: MeteringPointGroup) => ({ ...mpg, selected: false }));\r\n });\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n selectionChange = (event: any) => {\r\n this.hasNoSelection =\r\n this.meteringGroupsView.length === 0 || this.meteringGroupsView.filter(x => x.selected).length === 0;\r\n };\r\n\r\n onCancel(): void {\r\n this.dialogRef.close('cancel');\r\n }\r\n\r\n newGroupChange = (event: any) => {\r\n this.addingNewGroup = event;\r\n\r\n if (this.addingNewGroup) {\r\n this.groupNameField.nativeElement.focus();\r\n } else {\r\n this.newGroupName = '';\r\n this.groupNameField.nativeElement.blur();\r\n }\r\n };\r\n\r\n onSave(): void {\r\n if (this.addingNewGroup && this.newGroupName.length > 0) { \r\n this.addNewGroup();\r\n }\r\n const groupsToUpdate = this.meteringGroupsView.filter(meteringGroup => meteringGroup.selected);\r\n groupsToUpdate.forEach(group => {\r\n this.meteringPointsToAdd = this.meteringPointsToAdd.filter(\r\n mp => !group.meteringPoints.some(gmp => gmp.id === mp.id)\r\n );\r\n const mps = [...group.meteringPoints, ...this.meteringPointsToAdd];\r\n group.meteringPoints = mps.map(mp => ({ id: mp.id } as MeteringPoint));\r\n });\r\n\r\n this.store.dispatch(new fromStore.BulkUpdateMeteringPointGroups(groupsToUpdate));\r\n this.dialogRef.close('save');\r\n }\r\n\r\n setFocus() {\r\n this.addingNewGroup = true;\r\n this.groupNameField.nativeElement.focus();\r\n }\r\n\r\n addNewGroup() {\r\n if (!this.groupNameControlInvalid) {\r\n const newGroup = {\r\n id: this.newCounter--,\r\n name: this.newGroupName,\r\n meteringPoints: [],\r\n selected: true,\r\n meteringType: this.data.meteringType\r\n } as MeteringPointGroup;\r\n\r\n this.meteringGroupsView = [newGroup, ...this.meteringGroupsView];\r\n }\r\n }\r\n\r\n get groupNameControlInvalid() {\r\n if (this.addingNewGroup) {\r\n let exist = this.meteringGroupsView.some(\r\n o => o.name.toLowerCase().trim() === this.newGroupName.trim().toLowerCase()\r\n );\r\n return exist;\r\n }\r\n return false;\r\n }\r\n}\r\n","
\r\n
\r\n\r\n
\r\n

{{('metering.group-form.title' | translate:{value:\r\n meteringPointsToAdd.length})}}

\r\n
\r\n\r\n
\r\n {{'metering.group-form.group_validation_duplicate' | translate}}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{'metering.group-form.create_new' | translate}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {{'metering.group-form.group' | translate}}\r\n {{'metering.group-form.count' | translate}}\r\n
\r\n
\r\n
\r\n {{meteringGroup.name}}\r\n
{{meteringGroup.meteringPoints.length}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import { DataSource } from '@angular/cdk/collections';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { Observable, merge, BehaviorSubject, of } from 'rxjs';\r\nimport { MeteringPoint } from '@model';\r\n\r\n/**\r\n * Data source for the InvoicesTable view. This class should\r\n * encapsulate all logic for fetching and manipulating the displayed data\r\n * (including sorting, pagination, and filtering).\r\n */\r\nexport class MeteringpointPaneTableDataSource extends DataSource {\r\n data: MeteringPoint[] = [];\r\n _filterChange = new BehaviorSubject('');\r\n get filter(): string {\r\n return this._filterChange.value;\r\n }\r\n set filter(filter: string) {\r\n this._filterChange.next(filter.trim());\r\n }\r\n\r\n _filteredColumnChange = new BehaviorSubject([]);\r\n get filteredColumns(): string[] {\r\n return this._filteredColumnChange.value;\r\n }\r\n set filteredColumns(filteredColumns: string[]) {\r\n this._filteredColumnChange.next(filteredColumns);\r\n }\r\n\r\n private loadingSubject = new BehaviorSubject(false);\r\n public loading$ = this.loadingSubject.asObservable();\r\n\r\n renderedData: MeteringPoint[] = [];\r\n\r\n constructor(\r\n private paginator: MatPaginator,\r\n private sort: MatSort,\r\n private staticData: MeteringPoint[]\r\n ) {\r\n super();\r\n this.loadingSubject.next(true);\r\n\r\n of(this.staticData).subscribe(invoices => {\r\n this.data = invoices;\r\n this.data.length > 0 ? this.loadingSubject.next(false) : this.loadingSubject.next(true);\r\n });\r\n //this._filterChange.subscribe(() => (this.paginator.pageIndex = 0));\r\n }\r\n\r\n connect(): Observable {\r\n // Set the paginators length\r\n this.paginator.length = this.data.length;\r\n\r\n return merge(of(this.staticData), this.paginator.page, this.sort.sortChange, this._filterChange).pipe(\r\n map(() => {\r\n // Filter data\r\n\r\n\r\n // Sort filtered data\r\n const sortedData = this.getSortedData(this.staticData.slice());\r\n\r\n // Grab the page's slice of the filtered sorted data.\r\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\r\n this.renderedData = sortedData.splice(startIndex, this.paginator.pageSize);\r\n return this.renderedData;\r\n })\r\n );\r\n } \r\n\r\n /**\r\n * Sort the data (client-side). If you're using server-side sorting,\r\n * this would be replaced by requesting the appropriate data from the server.\r\n */\r\n private getSortedData(data: MeteringPoint[]) {\r\n if (!this.sort.active || this.sort.direction === '') {\r\n return data;\r\n }\r\n\r\n return data.sort((a, b) => {\r\n const isAsc = this.sort.direction === 'asc';\r\n switch (this.sort.active) {\r\n case 'meteringPointId':\r\n return compare(+a.id, +b.id, isAsc);\r\n case 'meteringPointName':\r\n return compare(a.name, b.name, isAsc);\r\n case 'meteringPointAddress':\r\n return compare(a.addresses[0].street, b.addresses[0].street, isAsc);\r\n case 'meteringPointGroups':\r\n {\r\n let grA = a.parentGroups?.length > 0 ? a.parentGroups[0].name: ''; \r\n let grB = b.parentGroups?.length > 0 ? b.parentGroups[0].name: '';\r\n return compare(grA, grB, isAsc);\r\n } \r\n default:\r\n return 0;\r\n }\r\n });\r\n }\r\n\r\n disconnect() {}\r\n}\r\n\r\n/** Simple sort comparator for example ID/Name columns (for client-side sorting). */\r\nfunction compare(a, b, isAsc) {\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n OnChanges,\r\n Input,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n Output,\r\n EventEmitter,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { MeteringGroupFormComponent } from '@metering/components/metering-group-form/metering-group-form.component';\r\nimport { MeteringType, PermissionType, MeteringFilterType, UserSettingOption, DisturbanceType } from '@enums';\r\nimport {\r\n Customer,\r\n MeteringPoint,\r\n MeteringPointAddress,\r\n MeteringFilter,\r\n UserSettings,\r\n UserInfo,\r\n DisruptionInfo,\r\n MeteringPointFilters\r\n} from '@model';\r\nimport { SxDialogService, SxPermissionService, SxExportService, SxRouterExtService } from '@services';\r\nimport { SearchFilterDataService } from '@appStore/metering-points/search-filter-data-service';\r\nimport { containsCaseInsensitive } from '@utils/sx-utilities';\r\nimport { debounceTime, filter, take } from 'rxjs/operators';\r\nimport { SubSink } from 'subsink';\r\nimport * as fromStore from '@appStore/metering-points';\r\nimport * as fromAccountStore from '@appStore/account';\r\nimport { Store } from '@ngrx/store';\r\nimport { MeteringPointService } from '@appStore/metering-points/services';\r\nimport { MeteringpointPaneTableDataSource } from './metering-points-pane-datasource';\r\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\r\nimport { MatSort, Sort } from '@angular/material/sort';\r\nimport { MatCheckboxChange } from '@angular/material/checkbox';\r\nimport { Observable } from 'rxjs';\r\nimport { ViewportScroller } from '@angular/common';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { ToLocalDateTimePipe } from '@utils/pipes';\r\n\r\n\r\nexport class CustomerMeteringView {\r\n id: string;\r\n name: string;\r\n meteringType: MeteringType;\r\n meteringPoints?: MeteringPoint[];\r\n _expanded?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'app-metering-points-pane',\r\n templateUrl: './metering-points-pane.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class MeteringPointsPaneComponent implements OnInit, OnChanges, OnDestroy {\r\n @ViewChild(MatPaginator, { static: true })\r\n paginator: MatPaginator;\r\n\r\n @ViewChild(MatSort, { static: true })\r\n sort: MatSort;\r\n\r\n @Input()\r\n paneType: MeteringType;\r\n @Input()\r\n customersWithMeteringPoints: Customer[];\r\n @Input()\r\n selectedMeteringPointIds: number[];\r\n @Input()\r\n virtualGroupActivated: boolean;\r\n @Input()\r\n userSettings: UserSettings;\r\n @Input()\r\n userInfo: UserInfo;\r\n @Input()\r\n filterArea: string;\r\n @Input()\r\n isMobile: boolean;\r\n\r\n @Output()\r\n meteringPointSelected = new EventEmitter();\r\n\r\n searchForm: UntypedFormGroup;\r\n searchFilter: MeteringPointFilters;\r\n\r\n DisturbanceTypeEnum = DisturbanceType;\r\n\r\n customersWithMeteringPointsView: CustomerMeteringView[];\r\n dataSource: MeteringpointPaneTableDataSource;\r\n\r\n groupingEnabled: boolean;\r\n\r\n customersWithMeteringPointsViewLoaded: boolean;\r\n\r\n PermissionEnum = PermissionType;\r\n hasManageGroupPermission = true;\r\n isExporting = false;\r\n\r\n private meteringPointsCount: number;\r\n private subs = new SubSink();\r\n private allMeteringPoints: MeteringPoint[] = [];\r\n tableView = false;\r\n sortActive: string;\r\n sortDirection: string;\r\n\r\n toggleAll = false;\r\n\r\n displayedColumns = ['select', 'meteringPointId', 'meteringPointName', 'meteringPointAddress', 'meteringPointGroups'];\r\n selectedPageIndex$: Observable;\r\n currentPage: number;\r\n paginationInitialized = false;\r\n pageSize: number;\r\n scrollPosition: [number, number] = [0, 0];\r\n previousRoute: string;\r\n\r\n constructor(\r\n private sxDialogService: SxDialogService,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private filterData: SearchFilterDataService,\r\n private sxPermissionService: SxPermissionService,\r\n private store: Store,\r\n private accountStore: Store,\r\n private meteringPointService: MeteringPointService,\r\n private exportService: SxExportService,\r\n private scroller: ViewportScroller,\r\n private routerService: SxRouterExtService,\r\n private fb: UntypedFormBuilder,\r\n private toLocalDate: ToLocalDateTimePipe\r\n ) {\r\n this.loadSearchFilter();\r\n }\r\n\r\n loadSearchFilter() {\r\n this.subs.sink = this.filterData.currentSearchFilter\r\n .pipe(\r\n filter(x => !!x),\r\n take(1)\r\n )\r\n .subscribe(searchFilter => {\r\n this.searchFilter = searchFilter;\r\n this.createForm();\r\n this.setupListeners();\r\n });\r\n }\r\n\r\n createForm() {\r\n this.searchForm = this.fb.group({\r\n searchPhrase: ''\r\n });\r\n }\r\n\r\n initializeSearchForm() {\r\n this.searchForm.controls['searchPhrase'].setValue(this.paneType === MeteringType.Hot ? \r\n this.searchFilter.hotMeteringPointFilter.searchPhrase : \r\n this.searchFilter.coldMeteringPointFilter.searchPhrase);\r\n }\r\n\r\n setupListeners() {\r\n const searchPhraseListener$ = this.searchForm.controls['searchPhrase'].valueChanges;\r\n this.subs.sink = searchPhraseListener$.subscribe(searchPhrase =>\r\n this.doSearch((this.searchForm.value.searchPhrase = searchPhrase))\r\n );\r\n }\r\n\r\n toggleAllItems(value: boolean) {\r\n this.toggleAll = !value;\r\n for (let x of this.dataSource.data) {\r\n x.selected = this.toggleAll;\r\n this.selectMeteringPoint(x);\r\n }\r\n }\r\n\r\n isAllSelected() {\r\n this.toggleAll = this.dataSource?.data.every(function(item: MeteringPoint) {\r\n return item.selected === true;\r\n });\r\n }\r\n\r\n doSearch(newValue: any) {\r\n this.searchFilter = {\r\n hotMeteringPointFilter: {\r\n searchPhrase: this.paneType === MeteringType.Hot ? \r\n this.searchForm.value.searchPhrase : \r\n this.searchFilter.hotMeteringPointFilter.searchPhrase,\r\n searchName: true,\r\n searchClientName: true,\r\n searchAddress: true,\r\n searchGroupName: true,\r\n searchId: true,\r\n meteringType: MeteringType.Hot\r\n },\r\n coldMeteringPointFilter: {\r\n searchPhrase: this.paneType === MeteringType.Cold ? \r\n this.searchForm.value.searchPhrase : \r\n this.searchFilter.coldMeteringPointFilter.searchPhrase,\r\n searchName: true,\r\n searchClientName: true,\r\n searchAddress: true,\r\n searchGroupName: true,\r\n searchId: true,\r\n meteringType: MeteringType.Cold\r\n }\r\n } as MeteringPointFilters;\r\n\r\n this.filterData.pushSearchFilter(this.searchFilter);\r\n }\r\n\r\n ngOnInit() {\r\n this.customersWithMeteringPointsViewLoaded = false;\r\n\r\n this.hasManageGroupPermission = this.sxPermissionService.hasUserManageMeteringPointGroupsPermission();\r\n this.initializeSearchForm();\r\n\r\n // Recieve updates on the search filter\r\n this.subs.sink = this.filterData.currentSearchFilter.pipe(debounceTime(300)).subscribe((searchFilter) => {\r\n this.searchFilter = searchFilter;\r\n if (searchFilter.hotMeteringPointFilter.searchPhrase !== '') {\r\n this.currentPage = 0;\r\n this.store.dispatch(\r\n new fromStore.SelectPageIndexHotMeteringPoint(\r\n this.currentPage,\r\n this.pageSize,\r\n this.sort.active,\r\n this.sort.direction,\r\n this.scrollPosition)\r\n );\r\n }\r\n if (searchFilter.coldMeteringPointFilter.searchPhrase !== '') {\r\n this.store.dispatch(\r\n new fromStore.SelectPageIndexColdMeteringPoint(\r\n this.currentPage,\r\n this.pageSize,\r\n this.sort.active,\r\n this.sort.direction,\r\n this.scrollPosition)\r\n );\r\n } else {\r\n this.createLocalView();\r\n }\r\n this.isAllSelected();\r\n });\r\n\r\n if (this.paneType === MeteringType.Hot) {\r\n this.subs.sink = this.store\r\n .select(fromStore.getSelectedHotMeteringPointsPageIndex)\r\n .pipe(take(1))\r\n .subscribe((i) => {\r\n this.currentPage = i.pageIndex;\r\n this.paginator.pageSize = i.pageSize;\r\n this.pageSize = i.pageSize;\r\n this.sort.direction = i.sortDirection === 'desc' ? 'desc' : 'asc';\r\n this.sort.active = i.sortColumn;\r\n this.scrollPosition = i.scrollPosition;\r\n this.sort.sortChange.emit(); // Needed to update the sorting direction in UI\r\n });\r\n this.createLocalView();\r\n }\r\n if (this.paneType === MeteringType.Cold) {\r\n this.subs.sink = this.store\r\n .select(fromStore.getSelectedColdMeteringPointsPageIndex)\r\n .pipe(take(1))\r\n .subscribe((i) => {\r\n this.currentPage = i.pageIndex;\r\n this.paginator.pageSize = i.pageSize;\r\n this.pageSize = i.pageSize;\r\n this.sort.direction = i.sortDirection === 'desc' ? 'desc' : 'asc';\r\n this.sort.active = i.sortColumn;\r\n this.scrollPosition = i.scrollPosition;\r\n this.sort.sortChange.emit(); // Needed to update the sorting direction in UI\r\n });\r\n this.createLocalView();\r\n }\r\n\r\n\r\n }\r\n\r\n filterDisruption(disruptions: DisruptionInfo[]){\r\n if (disruptions){\r\n return disruptions.find(di => !di.isRestored);\r\n }\r\n return null;\r\n }\r\n\r\n containedMeteringPointsHasFunctionControl(meteringPoint: MeteringPoint): boolean {\r\n return meteringPoint.type === 'LOG' && meteringPoint.containedMeteringPoints?.some(mp => mp.hasFunctionControl);\r\n }\r\n\r\n onPagination(event: PageEvent) {\r\n this.currentPage = event.pageIndex;\r\n this.pageSize = event.pageSize;\r\n }\r\n\r\n setTableView(): boolean {\r\n if (this.isMobile) return false;\r\n \r\n\r\n switch (this.userSettings?.meteringpointTableview) {\r\n case UserSettingOption.Active:\r\n return true;\r\n case UserSettingOption.Inactive:\r\n return false;\r\n case UserSettingOption.Notset:\r\n return this.allMeteringPoints.length > 12;\r\n default:\r\n //\r\n return false;\r\n }\r\n }\r\n\r\n // Runs whenever the input prameters changes\r\n ngOnChanges() {\r\n\r\n if (this.paneType === MeteringType.Hot) {\r\n this.subs.sink = this.store\r\n .select(fromStore.getSelectedHotMeteringPointsPageIndex)\r\n .pipe(take(1))\r\n .subscribe((i) => {\r\n this.currentPage = i.pageIndex;\r\n this.paginator.pageSize = i.pageSize;\r\n this.pageSize = i.pageSize;\r\n this.sort.direction = i.sortDirection === 'desc' ? 'desc' : 'asc';\r\n this.sort.active = i.sortColumn;\r\n this.scrollPosition = i.scrollPosition;\r\n this.sort.sortChange.emit(); // Needed to update the sorting direction in UI\r\n });\r\n this.createLocalView();\r\n }\r\n\r\n if (this.paneType === MeteringType.Cold) {\r\n this.subs.sink = this.store\r\n .select(fromStore.getSelectedColdMeteringPointsPageIndex)\r\n .pipe(take(1))\r\n .subscribe((i) => {\r\n this.currentPage = i.pageIndex;\r\n this.paginator.pageSize = i.pageSize;\r\n this.pageSize = i.pageSize;\r\n this.sort.direction = i.sortDirection === 'desc' ? 'desc' : 'asc';\r\n this.sort.active = i.sortColumn;\r\n this.scrollPosition = i.scrollPosition;\r\n this.sort.sortChange.emit(); // Needed to update the sorting direction in UI\r\n });\r\n this.createLocalView();\r\n }\r\n this.setTableView();\r\n\r\n setTimeout(() => {\r\n if (this.routerService.getPreviousUrl()?.includes('secure/meteringpoints/')) {\r\n this.scroller.scrollToPosition(this.scrollPosition);\r\n }\r\n }, 1000);\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.scrollPosition = this.scroller.getScrollPosition();\r\n\r\n if (this.paneType === MeteringType.Hot) {\r\n this.store.dispatch(\r\n new fromStore.SelectPageIndexHotMeteringPoint(\r\n this.currentPage,\r\n this.pageSize,\r\n this.sort.active,\r\n this.sort.direction,\r\n this.scrollPosition)\r\n );\r\n }\r\n\r\n if (this.paneType === MeteringType.Cold) {\r\n this.store.dispatch(\r\n new fromStore.SelectPageIndexColdMeteringPoint(\r\n this.currentPage,\r\n this.pageSize,\r\n this.sort.active,\r\n this.sort.direction,\r\n this.scrollPosition)\r\n );\r\n }\r\n this.subs.unsubscribe();\r\n }\r\n\r\n panelOpened(customer: Customer) {\r\n this.customersWithMeteringPointsView.map((item) => (item.id === customer.id ? (item._expanded = true) : item));\r\n }\r\n\r\n panelClosed(customer: Customer) {\r\n this.customersWithMeteringPointsView.map((item) => (item.id === customer.id ? (item._expanded = false) : item));\r\n }\r\n\r\n createLocalView = () => {\r\n\r\n if (!this.customersWithMeteringPoints || this.customersWithMeteringPoints.length === 0 ) {\r\n return;\r\n }\r\n\r\n this.meteringPointsCount = 0;\r\n this.allMeteringPoints = [];\r\n this.customersWithMeteringPoints.forEach((customer) => {\r\n switch (this.paneType) {\r\n case MeteringType.Hot:\r\n this.meteringPointsCount += customer.meteringPointsHeat.length;\r\n this.allMeteringPoints = [...this.allMeteringPoints, ...customer.meteringPointsHeat];\r\n break;\r\n case MeteringType.Cold:\r\n this.meteringPointsCount += customer.meteringPointsCold.length;\r\n this.allMeteringPoints = [...this.allMeteringPoints, ...customer.meteringPointsCold];\r\n break;\r\n }\r\n });\r\n this.groupingEnabled = this.meteringPointsCount > 1;\r\n\r\n let filteredCustomers = this.filterCustomers(this.customersWithMeteringPoints);\r\n this.customersWithMeteringPointsView = filteredCustomers.map((customer: Customer) =>\r\n this.mapFromCustomer(customer, this.paneType)\r\n );\r\n\r\n this.customersWithMeteringPointsViewLoaded = true;\r\n\r\n this.paginator.pageSize = this.pageSize;\r\n this.paginator.pageIndex = this.currentPage;\r\n\r\n this.dataSource = new MeteringpointPaneTableDataSource(\r\n this.paginator,\r\n this.sort,\r\n this.customersWithMeteringPointsView.flatMap((c) => c.meteringPoints)\r\n );\r\n this.tableView = this.setTableView();\r\n this.isAllSelected();\r\n // Force the view to update\r\n this.changeDetectorRef.detectChanges();\r\n };\r\n\r\n filterCustomers = (customers: Customer[]) => {\r\n let filteredCustomers = [] as Customer[];\r\n\r\n for (let c = 0; c < customers.length; c++) {\r\n let newCustomer = {\r\n ...customers[c],\r\n meteringPointsHeat: this.paneType === MeteringType.Hot ? [...customers[c].meteringPointsHeat] : [],\r\n meteringPointsCold: this.paneType === MeteringType.Cold ? [...customers[c].meteringPointsCold] : []\r\n };\r\n\r\n switch (this.paneType) {\r\n case MeteringType.Hot:\r\n if (this.searchFilter && this.searchFilter.hotMeteringPointFilter.searchPhrase.length > 0) {\r\n // Only filter if there is a search phrase\r\n newCustomer.meteringPointsHeat = newCustomer.meteringPointsHeat.filter((mp) =>\r\n this.filterMeteringPoint(mp, newCustomer)\r\n );\r\n }\r\n newCustomer.meteringPointsHeat.sort((a, b) => this.sortMeteringPointsByName(a, b));\r\n break;\r\n case MeteringType.Cold:\r\n if (this.searchFilter && this.searchFilter.coldMeteringPointFilter.searchPhrase.length > 0) {\r\n // Only filter if there is a search phrase\r\n newCustomer.meteringPointsCold = newCustomer.meteringPointsCold.filter((mp) =>\r\n this.filterMeteringPoint(mp, newCustomer)\r\n );\r\n }\r\n newCustomer.meteringPointsCold.sort((a, b) => this.sortMeteringPointsByName(a, b));\r\n break;\r\n }\r\n\r\n if (newCustomer.meteringPointsCold.length > 0 || newCustomer.meteringPointsHeat.length > 0) {\r\n filteredCustomers.push(newCustomer);\r\n }\r\n }\r\n\r\n return filteredCustomers;\r\n };\r\n\r\n filterMeteringPoint = (mp: MeteringPoint, customer: Customer): boolean => {\r\n if (this.selectedMeteringPointIds.some((smpId) => smpId === mp.id)) {\r\n return true;\r\n }\r\n if (this.paneType === MeteringType.Hot) {\r\n if (containsCaseInsensitive(mp.name, this.searchFilter.hotMeteringPointFilter.searchPhrase)) {\r\n return true;\r\n }\r\n\r\n if (containsCaseInsensitive(customer.name, this.searchFilter.hotMeteringPointFilter.searchPhrase)) {\r\n return true;\r\n }\r\n\r\n if (this.isMeteringPointInGroupByname(mp.parentGroups)) {\r\n return true;\r\n }\r\n\r\n if (this.foundInAdresses(mp.addresses, this.searchFilter.hotMeteringPointFilter.searchPhrase)) {\r\n return true;\r\n }\r\n\r\n if (containsCaseInsensitive(mp.id.toString(), this.searchFilter.hotMeteringPointFilter.searchPhrase)) {\r\n return true;\r\n }\r\n }\r\n if (this.paneType === MeteringType.Cold) {\r\n if (containsCaseInsensitive(mp.name, this.searchFilter.coldMeteringPointFilter.searchPhrase)) {\r\n return true;\r\n }\r\n\r\n if (containsCaseInsensitive(customer.name, this.searchFilter.coldMeteringPointFilter.searchPhrase)) {\r\n return true;\r\n }\r\n\r\n if (this.isMeteringPointInGroupByname(mp.parentGroups)) {\r\n return true;\r\n }\r\n\r\n if (this.foundInAdresses(mp.addresses, this.searchFilter.coldMeteringPointFilter.searchPhrase)) {\r\n return true;\r\n }\r\n\r\n if (containsCaseInsensitive(mp.id.toString(), this.searchFilter.coldMeteringPointFilter.searchPhrase)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n foundInAdresses = (addresses: MeteringPointAddress[], filterString: string): boolean => {\r\n const matched = addresses.filter((address) =>\r\n containsCaseInsensitive(address.street + ' ' + address.streetNo + ' ' + address.zip + ' ' + address.city, filterString)\r\n );\r\n return matched.length > 0;\r\n };\r\n\r\n isMeteringPointInGroupByname = (parentGroups: { name: string; id: number }[]): boolean => {\r\n if (!parentGroups || parentGroups.length === 0) {\r\n return false;\r\n }\r\n\r\n for (let pg of parentGroups) {\r\n if (containsCaseInsensitive(pg.name, this.paneType === MeteringType.Hot ? \r\n this.searchFilter.hotMeteringPointFilter.searchPhrase :\r\n this.searchFilter.coldMeteringPointFilter.searchPhrase)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n createNewGroup = () => {\r\n let selectedMeteringPoints = this.allMeteringPoints.filter((mp) =>\r\n this.selectedMeteringPointIds.some((mpId) => mpId === mp.id)\r\n );\r\n\r\n let dialogRef = this.sxDialogService.openDialog(MeteringGroupFormComponent, {\r\n selectedMeteringPoints: selectedMeteringPoints,\r\n meteringType: this.paneType\r\n });\r\n\r\n this.subs.sink = dialogRef.afterClosed().subscribe((result: string) => {\r\n if (!!result && result === 'save' && !this.virtualGroupActivated) {\r\n this.toggleAllVisible(false);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n });\r\n\r\n // Reset scroll position\r\n this.store.dispatch(new fromStore.ClearScrollPosition());\r\n };\r\n\r\n createVirtualGroup = () => {\r\n this.setSortAndPaging();\r\n this.store.dispatch(new fromStore.ActivateVirtualGroup(this.paneType));\r\n this.accountStore.dispatch(\r\n new fromAccountStore.FilterSettingUpdate({\r\n filter: this.getVirtualFilter(this.selectedMeteringPointIds),\r\n meteringType: this.paneType,\r\n userId: this.userInfo.id,\r\n filterArea: this.filterArea,\r\n meteringPoints: this.allMeteringPoints\r\n })\r\n );\r\n this.store.dispatch(\r\n new fromStore.SetSelection({ meteringPointIds: this.selectedMeteringPointIds, meteringType: this.paneType })\r\n );\r\n\r\n // Reset scroll position\r\n this.store.dispatch(new fromStore.ClearScrollPosition());\r\n };\r\n\r\n removeVirtualGroup = () => {\r\n this.setSortAndPaging();\r\n this.store.dispatch(new fromStore.DeactivateVirtualGroup(this.paneType));\r\n this.accountStore.dispatch(new fromAccountStore.FilterSettingReset(this.paneType));\r\n // Reset scroll position\r\n this.store.dispatch(new fromStore.ClearScrollPosition());\r\n };\r\n\r\n selectTableMeteringPoint(event: MatCheckboxChange, meteringPoint: MeteringPoint) {\r\n meteringPoint.selected = event.checked;\r\n this.selectMeteringPoint(meteringPoint);\r\n this.isAllSelected();\r\n }\r\n\r\n onMeteringPointCheckboxClick(event: any){\r\n event.stopPropagation();\r\n }\r\n\r\n onSelectCardMeteringPoint = (event: MatCheckboxChange, meteringPoint: MeteringPoint) => {\r\n meteringPoint.selected = event.checked;\r\n this.selectMeteringPoint(meteringPoint);\r\n };\r\n\r\n selectMeteringPoint = (meteringPoint: MeteringPoint) => {\r\n let selectedMpIds = this.selectedMeteringPointIds.filter((x) => x !== meteringPoint.id);\r\n if (meteringPoint.selected) {\r\n selectedMpIds.push(meteringPoint.id);\r\n }\r\n if (this.virtualGroupActivated) {\r\n if (selectedMpIds.length === 0) {\r\n this.accountStore.dispatch(new fromAccountStore.FilterSettingReset(this.paneType));\r\n } else {\r\n this.accountStore.dispatch(\r\n new fromAccountStore.FilterSettingUpdate({\r\n filter: this.getVirtualFilter(selectedMpIds),\r\n meteringType: this.paneType,\r\n userId: this.userInfo.id,\r\n filterArea: this.filterArea,\r\n meteringPoints: this.allMeteringPoints\r\n })\r\n );\r\n }\r\n }\r\n // Only use Store when managing virtual groups... otherwise the UI gets very slow for customers with many MeterinPoints\r\n this.selectedMeteringPointIds = selectedMpIds;\r\n };\r\n\r\n getVirtualFilter = (selectedMpIds: number[]): MeteringFilter =>\r\n {\r\n id: -1,\r\n filterId: -1,\r\n meteringType: this.paneType,\r\n filterType: MeteringFilterType.VirtualFilter,\r\n containsMeteringPointIds: [...selectedMpIds],\r\n subtitle: '' + selectedMpIds.length\r\n };\r\n\r\n toggleAllVisible = (visible: boolean) => {\r\n this.customersWithMeteringPointsView = this.customersWithMeteringPointsView.map(\r\n (customer: CustomerMeteringView) => {\r\n return {\r\n ...customer,\r\n meteringPoints: [\r\n ...customer.meteringPoints.map((meteringPoint: MeteringPoint) => ({ ...meteringPoint, selected: visible }))\r\n ]\r\n };\r\n }\r\n );\r\n\r\n let selectedMpIds = this.customersWithMeteringPointsView\r\n .map((customer: CustomerMeteringView) => customer.meteringPoints.filter((mp) => mp.selected))\r\n .reduce((a, b) => a.concat(b))\r\n .map((mp) => mp.id);\r\n\r\n this.store.dispatch(new fromStore.SetSelection({ meteringPointIds: selectedMpIds, meteringType: this.paneType }));\r\n\r\n if (this.virtualGroupActivated && selectedMpIds.length === 0) {\r\n this.accountStore.dispatch(new fromAccountStore.FilterSettingReset(this.paneType));\r\n } else if (this.userSettings) {\r\n let currentFilter = this.getMeteringFilter(this.paneType);\r\n if (currentFilter && currentFilter.filterType === MeteringFilterType.VirtualFilter) {\r\n this.accountStore.dispatch(\r\n new fromAccountStore.FilterSettingUpdate({\r\n filter: this.getVirtualFilter(selectedMpIds),\r\n meteringType: this.paneType,\r\n userId: this.userInfo.id,\r\n filterArea: this.filterArea,\r\n meteringPoints: this.allMeteringPoints\r\n })\r\n );\r\n }\r\n }\r\n\r\n // Reset scroll position\r\n this.store.dispatch(new fromStore.ClearScrollPosition());\r\n };\r\n\r\n mapFromCustomer = (customer: Customer, meteringType: MeteringType): CustomerMeteringView => {\r\n return {\r\n id: customer.id,\r\n name: customer.name,\r\n _expanded: customer._expanded,\r\n meteringType: meteringType,\r\n meteringPoints:\r\n meteringType === MeteringType.Cold\r\n ? [\r\n ...customer.meteringPointsCold.map((meteringPoint: MeteringPoint) => ({\r\n ...meteringPoint,\r\n selected: this.selectedMeteringPointIds.some((x) => x === meteringPoint.id),\r\n customerName: customer.name\r\n }))\r\n ]\r\n : [\r\n ...customer.meteringPointsHeat.map((meteringPoint: MeteringPoint) => ({\r\n ...meteringPoint,\r\n selected: this.selectedMeteringPointIds.some((x) => x === meteringPoint.id),\r\n customerName: customer.name\r\n }))\r\n ]\r\n };\r\n };\r\n\r\n getMeteringFilter = (meteringType: MeteringType): MeteringFilter => {\r\n switch (meteringType) {\r\n case MeteringType.Hot:\r\n return this.userSettings.hotMeteringFilter;\r\n case MeteringType.Cold:\r\n return this.userSettings.coldMeteringFilter;\r\n case MeteringType.HotLogical:\r\n return this.userSettings.hotLogicalMeteringFilter;\r\n case MeteringType.ColdLogical:\r\n return this.userSettings.coldLogicalMeteringFilter;\r\n }\r\n };\r\n\r\n setSortAndPaging(){\r\n if (!this.tableView)\r\n return;\r\n\r\n if (this.paneType === MeteringType.Hot) {\r\n this.store.dispatch(\r\n new fromStore.SelectPageIndexHotMeteringPoint(\r\n this.currentPage,\r\n this.pageSize,\r\n this.sort.active,\r\n this.sort.direction,\r\n this.scrollPosition)\r\n );\r\n }\r\n\r\n if (this.paneType === MeteringType.Cold) {\r\n this.store.dispatch(\r\n new fromStore.SelectPageIndexColdMeteringPoint(\r\n this.currentPage,\r\n this.pageSize,\r\n this.sort.active,\r\n this.sort.direction,\r\n this.scrollPosition)\r\n );\r\n }\r\n }\r\n\r\n viewInformation = (id: number) => {\r\n this.scrollPosition = this.scroller.getScrollPosition();\r\n this.setSortAndPaging();\r\n\r\n let selectedMeteringPoint: MeteringPoint;\r\n let customerName;\r\n\r\n for (let index = 0; index < this.customersWithMeteringPointsView.length; index++) {\r\n selectedMeteringPoint = this.customersWithMeteringPointsView[index].meteringPoints.find((mp) => mp.id === id);\r\n\r\n if (selectedMeteringPoint) {\r\n customerName = this.customersWithMeteringPointsView[index].name;\r\n break;\r\n }\r\n }\r\n\r\n this.meteringPointSelected.emit(selectedMeteringPoint);\r\n };\r\n\r\n sortMeteringPointsByName = (a: MeteringPoint, b: MeteringPoint) => {\r\n if (a.name > b.name) {\r\n return 1;\r\n }\r\n\r\n if (a.name < b.name) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n onExportToExcel(){\r\n this.isExporting = true;\r\n let allMpIds: number[] = [];\r\n let timestamp = this.toLocalDate.transform(new Date(), 'YYYY-MM-dd_H-mm-ss');\r\n\r\n this.customersWithMeteringPointsView.forEach((customer) => {\r\n allMpIds = [...allMpIds, ...customer.meteringPoints.map((mp) => mp.id)];\r\n });\r\n\r\n this.subs.sink = this.exportService.exportInFrame(\r\n this.meteringPointService.createReportKey(),\r\n (key: string) => this.meteringPointService.exportMeteringPointsToExcel(key, this.paneType, allMpIds),\r\n () => {\r\n this.isExporting = false;\r\n this.changeDetectorRef.detectChanges();\r\n },\r\n `Anläggningar_${timestamp}.xlsx`\r\n );\r\n\r\n // Reset scroll position\r\n this.store.dispatch(new fromStore.ClearScrollPosition());\r\n };\r\n\r\n toggleView() {\r\n this.tableView = !this.tableView;\r\n let tableViewSetting = this.tableView ? UserSettingOption.Active : UserSettingOption.Inactive;\r\n\r\n let newUserSettings = {\r\n ...this.userSettings,\r\n meteringpointTableview: tableViewSetting\r\n };\r\n\r\n // do not try to save virtual filter if it´s included in the user settings\r\n if (newUserSettings.hotMeteringFilter.filterType === MeteringFilterType.VirtualFilter) {\r\n newUserSettings.hotMeteringFilter.filterType = MeteringFilterType.Unfiltered;\r\n }\r\n if (newUserSettings.coldMeteringFilter.filterType === MeteringFilterType.VirtualFilter) {\r\n newUserSettings.coldMeteringFilter.filterType = MeteringFilterType.Unfiltered;\r\n }\r\n\r\n // Reset scroll position\r\n this.store.dispatch(new fromStore.ClearScrollPosition());\r\n\r\n this.accountStore.dispatch(\r\n new fromAccountStore.SettingUpdate({\r\n userSettings: newUserSettings,\r\n userId: this.userInfo.id,\r\n filterArea: this.filterArea,\r\n meteringType: this.paneType,\r\n meteringPoints: null\r\n })\r\n );\r\n\r\n this.isAllSelected();\r\n }\r\n}\r\n","
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n

{{customer.name}}\r\n ({{customer.id}})\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{meteringPoint.name}}
\r\n
{{'meteringpoints.card.id' | translate}} {{meteringPoint.id}}
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {{meteringPoint.addresses[0]!.street}} {{meteringPoint.addresses[0]!.streetNo}}\r\n
{{meteringPoint.addresses[0]!.zip}} {{meteringPoint.addresses[0]!.city | titlecase}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {{ \"disruptions.ongoing-delivery-disruption\" | translate }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {{ \"disruptions.ongoing-planned-disruption\" | translate }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {{ \"disruptions.ongoing-unplanned-disruption\" | translate }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{'meteringpoints.card.logic_chip'\r\n | translate}}\r\n
\r\n
{{'meteringpoints.card.functionControl'\r\n | translate}}\r\n
\r\n
{{'meteringpoints.card.hasIntelligy'\r\n | translate}}\r\n
\r\n 0\">\r\n
\r\n {{parentGroup.name}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n {{'meteringpoints.table.id' | translate}}\r\n \r\n {{'meteringpoints.table.id' | translate}}:\r\n {{row.id}} \r\n \r\n \r\n\r\n \r\n {{'meteringpoints.table.name' | translate}}\r\n \r\n \r\n {{'meteringpoints.table.name' | translate}}:\r\n {{row.name | titlecase }}\r\n \r\n \r\n\r\n \r\n {{'meteringpoints.table.address' | translate}}\r\n \r\n \r\n {{'meteringpoints.table.address' | translate}}:\r\n \r\n {{row.addresses[0]!.street | titlecase}} {{row.addresses[0]!.streetNo}},\r\n {{row.addresses[0]!.zip}} {{row.addresses[0]!.city | titlecase}}\r\n \r\n \r\n \r\n\r\n \r\n {{'meteringpoints.table.groups' | translate}}\r\n \r\n \r\n 0\">\r\n
\r\n {{parentGroup.name}}\r\n
\r\n
\r\n
{{'meteringpoints.card.logic_chip' | translate}}\r\n
\r\n
\r\n {{'meteringpoints.card.functionControl' | translate}}\r\n
\r\n
{{'meteringpoints.card.hasIntelligy'\r\n | translate}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
\r\n \r\n
\r\n","import { Component, OnInit, Inject, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MeteringType } from '@enums';\r\nimport { MeteringPoint, MeteringPointAddress, MeteringPointGroup } from '@model';\r\nimport { distinctUntilChanged, map, filter, take, debounceTime, switchMap } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\nimport { Store } from '@ngrx/store';\r\nimport * as fromMeteringStore from '@appStore/metering-points';\r\nimport { containsCaseInsensitive } from '@utils/sx-utilities';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-metering-group-dialog',\r\n templateUrl: './metering-group-dialog.component.html',\r\n standalone: false\r\n})\r\nexport class MeteringGroupDialogComponent implements OnInit, OnDestroy {\r\n meteringType: MeteringType;\r\n newGroupName: string;\r\n addingNewGroup: boolean;\r\n public keyUp = new Subject();\r\n meteringGroups: MeteringPointGroup[];\r\n private subs = new SubSink();\r\n\r\n // New\r\n searchAdresses: boolean;\r\n meteringPoints: MeteringPoint[];\r\n meteringPointsView: MeteringPoint[] = [];\r\n selectedMeteringPoints: MeteringPoint[] = [];\r\n searchFilter: string;\r\n public keyUpMP = new Subject();\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n private meteringStore: Store,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private store: Store,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) {\r\n this.subs.sink = this.keyUpMP\r\n .pipe(\r\n map(event => event.target.value),\r\n debounceTime(300),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(selectedFilter => {\r\n this.updateView(selectedFilter);\r\n });\r\n\r\n this.keyUp\r\n .pipe(\r\n map(event => event.target.value),\r\n debounceTime(300),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(value => {\r\n this.isValueSet(value);\r\n });\r\n\r\n this.meteringType = this.data.meteringType;\r\n }\r\n\r\n get groupNameControlInvalid() {\r\n if (this.addingNewGroup) {\r\n let exist = this.meteringGroups.some(o => o.name.toLowerCase().trim() === this.newGroupName.trim().toLowerCase());\r\n return exist;\r\n }\r\n return false;\r\n }\r\n\r\n ngOnInit() {\r\n // Fetch meteringPointGroups from Store for MeteringType\r\n this.subs.sink = this.store\r\n .select(fromMeteringStore.getMeteringPointGroups)\r\n .pipe(\r\n filter(x => !!x),\r\n take(1)\r\n )\r\n .subscribe(mpgs => {\r\n this.meteringGroups = mpgs\r\n .filter(mpg => mpg.meteringType === this.meteringType)\r\n .map((mpg: MeteringPointGroup) => ({ ...mpg, selected: false }));\r\n });\r\n\r\n this.initNormalMpSubscription();\r\n }\r\n\r\n initNormalMpSubscription = () => {\r\n this.subs.sink = this.meteringStore.select(fromMeteringStore.getMeteringPointsWithAdresses).subscribe(mps => {\r\n this.meteringPoints = mps\r\n .filter(mp => mp.meteringType === this.meteringType)\r\n .map(mp => ({\r\n ...mp,\r\n selected: false\r\n }));\r\n this.meteringPointsView = this.meteringPoints;\r\n\r\n });\r\n };\r\n\r\n updateView(filterString: string) {\r\n if (this.searchAdresses) {\r\n if (filterString === '') {\r\n this.meteringPointsView = [...this.meteringPoints];\r\n } else {\r\n this.meteringPointsView = [\r\n ...this.meteringPoints.filter(mp => this.foundInAdresses(mp.addresses, filterString) ||\r\n containsCaseInsensitive(mp.id.toString(), filterString))\r\n ];\r\n }\r\n } else {\r\n if (filterString === '') {\r\n this.meteringPointsView = [...this.meteringPoints];\r\n } else {\r\n this.meteringPointsView = [...this.meteringPoints.filter(mp => containsCaseInsensitive(mp.name, filterString) ||\r\n containsCaseInsensitive(mp.id.toString(), filterString))];\r\n }\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n onCancel(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n setFilterType(adressFilter: boolean) {\r\n this.searchAdresses = adressFilter;\r\n }\r\n\r\n isAllMpsSelected(): boolean {\r\n return this.meteringPointsView.filter(mp => mp.selected).length === this.meteringPointsView.length;\r\n }\r\n\r\n foundInAdresses = (addresses: MeteringPointAddress[], filterString: string): boolean => {\r\n const matched = addresses.filter(address =>\r\n containsCaseInsensitive(address.street + ' ' + address.streetNo, filterString)\r\n );\r\n return matched.length > 0;\r\n };\r\n\r\n toggleAllMps() {\r\n let selectAll = !this.isAllMpsSelected();\r\n\r\n for (let mp of this.meteringPointsView) {\r\n mp.selected = selectAll;\r\n }\r\n this.selectedMeteringPoints = this.meteringPointsView.filter(mp => mp.selected);\r\n }\r\n\r\n selectMeteringPoint(meteringPoint: MeteringPoint) {\r\n meteringPoint.selected = !meteringPoint.selected;\r\n this.setSelectedMeteringPoint(meteringPoint.id, meteringPoint.selected, this.meteringPointsView);\r\n\r\n this.selectedMeteringPoints = this.meteringPointsView.filter(mp => mp.selected);\r\n }\r\n\r\n setSelectedMeteringPoint(id: number, isSelected: boolean, meteringPoints: MeteringPoint[]) {\r\n for (let mp of meteringPoints) {\r\n if (mp.id === id) {\r\n mp.selected = isSelected;\r\n }\r\n }\r\n }\r\n\r\n onSave() {\r\n if (!this.groupNameControlInvalid) {\r\n const newGroup = {\r\n id: 0,\r\n name: this.newGroupName,\r\n meteringPoints: [],\r\n selected: true,\r\n meteringType: this.meteringType\r\n } as MeteringPointGroup;\r\n\r\n // Valdidate unique groupname\r\n this.store.dispatch(new fromMeteringStore.AddMeteringPointGroup(newGroup));\r\n\r\n\r\n this.subs.sink = this.store\r\n .select(fromMeteringStore.getAddMeteringPointGroupSuccess)\r\n .pipe(\r\n filter(x => !!x),\r\n take(1),\r\n switchMap(x => this.store.select(fromMeteringStore.getAddedMeteringPointGroup))\r\n )\r\n .subscribe(addedMpg => {\r\n if (addedMpg) {\r\n if (this.selectedMeteringPoints && this.selectedMeteringPoints.length > 0) {\r\n addedMpg = {...addedMpg, meteringPoints: this.selectedMeteringPoints, selected: true};\r\n this.store.dispatch(new fromMeteringStore.UpdateMeteringPointGroup(addedMpg));\r\n }\r\n\r\n this.dialogRef.close(addedMpg);\r\n }\r\n });\r\n }\r\n }\r\n\r\n isValueSet(val: string) {\r\n if (val === undefined || val === null || val === '') {\r\n this.addingNewGroup = false;\r\n } else {\r\n this.addingNewGroup = true;\r\n }\r\n }\r\n\r\n \r\n}\r\n","
\r\n\r\n
\r\n
\r\n

{{(meteringType === 'Hot' ? 'metering.group-dialog.title_hot' :\r\n 'metering.group-dialog.title_cold')\r\n | translate}}

\r\n
\r\n\r\n
\r\n \r\n {{'metering.group-dialog.group_name' | translate}}\r\n \r\n \r\n
\r\n {{'metering.group-dialog.group_validation_duplicate' | translate}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {{'alarms.form.name'\r\n | translate}}\r\n \r\n \r\n {{'alarms.form.adress'\r\n | translate}}\r\n \r\n
\r\n \r\n \r\n
\r\n {{'alarms.form.meteringpoint' | translate}}\r\n
\r\n
\r\n
\r\n {{'customers.meteringpoints.select_all' |\r\n translate}}\r\n
\r\n
\r\n {{searchAdresses ? meteringPoint.addressLabel :\r\n meteringPoint.name}}\r\n ({{meteringPoint.id}})\r\n {{'metering.filter.form.logical' | translate}}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MeteringPoint, MeteringPointAddress } from '@model';\r\nimport { debounceTime, distinctUntilChanged, map, Subject } from 'rxjs';\r\nimport { SubSink } from 'subsink';\r\nimport * as fromMeteringStore from '@appStore/metering-points';\r\nimport { Store } from '@ngrx/store';\r\nimport { containsCaseInsensitive } from '@utils/sx-utilities';\r\nimport { MeteringFilterType, MeteringType } from '@enums';\r\n\r\n@Component({\r\n selector: 'app-metering-point-form',\r\n templateUrl: './metering-point-form.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class MeteringPointFormComponent implements OnInit, OnDestroy {\r\n\r\n searchFilter: string;\r\n searchAdresses: boolean;\r\n meteringPoints: MeteringPoint[];\r\n meteringPointsView: MeteringPoint[];\r\n meteringType: MeteringType;\r\n existingMeteringPointIds: number[];\r\n selectedMeteringPoints: MeteringPoint[] = [];\r\n\r\n private subs = new SubSink();\r\n public keyUp = new Subject();\r\n\r\n constructor(\r\n private meteringStore: Store,\r\n public dialogRef: MatDialogRef,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) {\r\n this.subs.sink = this.keyUp\r\n .pipe(\r\n map(event => event.target.value),\r\n debounceTime(300),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(selectedFilter => {\r\n this.updateView(selectedFilter);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.searchFilter = '';\r\n this.searchAdresses = false;\r\n this.meteringType = this.data.meteringType;\r\n this.existingMeteringPointIds = this.data.meteringPointIds;\r\n\r\n this.initNormalMpSubscription();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n initNormalMpSubscription = () => {\r\n this.subs.sink = this.meteringStore.select(fromMeteringStore.getMeteringPointsWithAdresses).subscribe(mps => {\r\n this.meteringPoints = mps\r\n .filter(mp => mp.meteringType === this.meteringType && !this.existingMeteringPointIds.includes(mp.id, 0))\r\n .map(mp => ({\r\n ...mp,\r\n selected: false\r\n }));\r\n this.meteringPointsView = this.meteringPoints;\r\n\r\n });\r\n };\r\n\r\n updateView(filterString: string) {\r\n if (this.searchAdresses) {\r\n if (filterString === '') {\r\n this.meteringPointsView = [...this.meteringPoints];\r\n } else {\r\n this.meteringPointsView = [\r\n ...this.meteringPoints.filter(mp => this.foundInAdresses(mp.addresses, filterString) ||\r\n containsCaseInsensitive(mp.id.toString(), filterString))\r\n ];\r\n }\r\n } else {\r\n if (filterString === '') {\r\n this.meteringPointsView = [...this.meteringPoints];\r\n } else {\r\n this.meteringPointsView = [...this.meteringPoints.filter(mp => containsCaseInsensitive(mp.name, filterString) ||\r\n containsCaseInsensitive(mp.id.toString(), filterString))];\r\n }\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n setFilterType(adressFilter: boolean) {\r\n this.searchAdresses = adressFilter;\r\n }\r\n\r\n isAllMpsSelected(): boolean {\r\n return this.meteringPointsView.filter(mp => mp.selected).length === this.meteringPointsView.length;\r\n }\r\n\r\n isNonGroupMpsSelected(): boolean {\r\n return this.meteringPointsView.filter(mp => mp.selected).length !== 0;\r\n }\r\n\r\n selectMeteringPoint(meteringPoint: MeteringPoint) {\r\n meteringPoint.selected = !meteringPoint.selected;\r\n this.setSelectedMeteringPoint(meteringPoint.id, meteringPoint.selected, this.meteringPointsView);\r\n\r\n this.selectedMeteringPoints = this.meteringPointsView.filter(mp => mp.selected);\r\n }\r\n\r\n setSelectedMeteringPoint(id: number, isSelected: boolean, meteringPoints: MeteringPoint[]) {\r\n for (let mp of meteringPoints) {\r\n if (mp.id === id) {\r\n mp.selected = isSelected;\r\n }\r\n }\r\n }\r\n\r\n toggleAllMps() {\r\n let selectAll = !this.isAllMpsSelected();\r\n\r\n for (let mp of this.meteringPointsView) {\r\n mp.selected = selectAll;\r\n }\r\n this.selectedMeteringPoints = this.meteringPointsView.filter(mp => mp.selected);\r\n }\r\n\r\n foundInAdresses = (addresses: MeteringPointAddress[], filterString: string): boolean => {\r\n const matched = addresses.filter(address =>\r\n containsCaseInsensitive(address.street + ' ' + address.streetNo, filterString)\r\n );\r\n return matched.length > 0;\r\n };\r\n\r\n onSave() {\r\n this.dialogRef.close(this.selectedMeteringPoints);\r\n }\r\n\r\n onCancel() {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n

{{'metering.filter.form.title_add' |translate}}

\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {{'alarms.form.name'\r\n | translate}}\r\n \r\n \r\n {{'alarms.form.adress'\r\n | translate}}\r\n \r\n
\r\n \r\n \r\n
\r\n {{'alarms.form.meteringpoint' | translate}}\r\n
\r\n
\r\n
\r\n {{'customers.meteringpoints.select_all' |\r\n translate}}\r\n
\r\n
\r\n {{searchAdresses ? meteringPoint.addressLabel :\r\n meteringPoint.name}}\r\n ({{meteringPoint.id}})\r\n {{'metering.filter.form.logical' | translate}}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n ","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { MeteringPointGroup, MeteringPoint, UserSettings, UserInfo } from '@model';\r\nimport { MeteringType, MeteringFilterType } from '@enums';\r\nimport { SxDialogService, SxSnackbarService } from '@services';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MeteringGroupDialogComponent } from '@metering/components/metering-group-dialog/metering-group-dialog.component';\r\n\r\nimport * as fromMeteringStore from '@appStore/metering-points';\r\nimport * as fromAccountStore from '@appStore/account';\r\nimport { SubSink } from 'subsink';\r\nimport { filter } from 'rxjs/operators';\r\nimport { MeteringPointFormComponent } from '../metering-point-form/metering-point-form.component';\r\n\r\n@Component({\r\n selector: 'app-metering-group-pane',\r\n templateUrl: './metering-group-pane.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class MeteringGroupPaneComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input()\r\n paneType: MeteringType;\r\n @Input()\r\n meteringPointGroups: MeteringPointGroup[];\r\n @Input()\r\n userSettings: UserSettings;\r\n @Input()\r\n userInfo:UserInfo;\r\n @Input()\r\n filterArea: string;\r\n\r\n meteringPointGroupsView: MeteringPointGroup[];\r\n selectedMPGId: number;\r\n isEditing: boolean;\r\n pristineGroup: MeteringPointGroup;\r\n\r\n private subs = new SubSink();\r\n \r\n constructor(\r\n private sxDialogService: SxDialogService,\r\n private sxSnackbarService: SxSnackbarService,\r\n private translate: TranslateService,\r\n private store: Store,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private accountStore: Store\r\n ) {\r\n this.isEditing = false;\r\n }\r\n\r\n ngOnInit() {\r\n this.initiateView();\r\n }\r\n\r\n ngOnChanges() {\r\n this.initiateView();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n initiateView() {\r\n this.pristineGroup = null;\r\n this.isEditing = false;\r\n\r\n this.meteringPointGroupsView = this.meteringPointGroups\r\n .filter(mpg => mpg.meteringType === this.paneType)\r\n .map(meteringPointGroup => {\r\n return {\r\n ...meteringPointGroup,\r\n selected: false,\r\n meteringPoints: [...meteringPointGroup.meteringPoints.map(mp => ({ ...mp, selected: false }))]\r\n };\r\n });\r\n }\r\n\r\n unsavedChanges(mpg: MeteringPointGroup): boolean {\r\n let modified = mpg.meteringPoints.some(x => x.selected) || mpg.meteringPoints.some(x => x.added);\r\n let newName = this.meteringPointGroupsView.find(x => x.id === mpg.id).name;\r\n let oldName = this.meteringPointGroups.find(x => x.id === mpg.id).name;\r\n return modified || newName !== oldName;\r\n }\r\n\r\n selectMeteringPointToRemove(mp: MeteringPoint) {\r\n mp.selected = !mp.selected;\r\n }\r\n\r\n selectMeteringPoints(mpg: MeteringPointGroup) {\r\n let existingMeteringPointIds = this.getMeteringPointIds(mpg);\r\n let dialogRef = this.sxDialogService.openDialog(MeteringPointFormComponent, {\r\n meteringType: this.paneType,\r\n meteringPointIds: existingMeteringPointIds\r\n });\r\n\r\n this.subs.sink = dialogRef.afterClosed().subscribe((meteringPoints: MeteringPoint[]) => {\r\n let allSelectedMeteringPoint = [...mpg.meteringPoints, ... meteringPoints.map( mp => \r\n { ...mp, selected: false, added: true\r\n })];\r\n this.meteringPointGroupsView.find(x => x.id === mpg.id).meteringPoints = allSelectedMeteringPoint;\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n getMeteringPointIds(meteringPointGroup: MeteringPointGroup) {\r\n let mpIds: number[] = [];\r\n if (meteringPointGroup.meteringPoints !== null && meteringPointGroup.meteringPoints.length !== 0) {\r\n meteringPointGroup.meteringPoints.forEach(a => {\r\n if (a.id !== null) {\r\n mpIds.push(a.id);\r\n }\r\n });\r\n }\r\n return mpIds;\r\n }\r\n\r\n removeGroup(mpg: MeteringPointGroup) {\r\n const dialogRef = this.sxDialogService.confirmDialog(\r\n this.translate.instant('metering.group-pane.remove_group'),\r\n this.translate.instant('metering.group-pane.remove_group_button')\r\n );\r\n\r\n this.subs.sink = dialogRef.afterClosed().subscribe((confirmed: boolean) => {\r\n if (confirmed) {\r\n if (this.isCurrentFilterGroup(mpg)) {\r\n this.sxSnackbarService.openSnackBar(this.translate.instant('metering.group-pane.no_filter'));\r\n this.updateMeteringPointFilter(mpg);\r\n }\r\n\r\n this.store.dispatch(new fromMeteringStore.RemoveMeteringPointGroup(mpg));\r\n }\r\n\r\n mpg = { ...mpg, selected: false };\r\n this.isEditing = false;\r\n });\r\n }\r\n\r\n editGroup(mpg: MeteringPointGroup) {\r\n this.initiateView();\r\n mpg = this.meteringPointGroupsView.find(x => x.id === mpg.id);\r\n mpg.selected = true;\r\n this.pristineGroup = { ...mpg };\r\n this.isEditing = true;\r\n }\r\n\r\n cancelEditing(mpg: MeteringPointGroup) {\r\n mpg.selected = false;\r\n this.initiateView();\r\n }\r\n\r\n addNewGroup() {\r\n let dialogRef = this.sxDialogService.openDialog(MeteringGroupDialogComponent, {\r\n meteringType: this.paneType\r\n });\r\n\r\n this.subs.sink = dialogRef\r\n .afterClosed()\r\n .pipe(filter(x => !!x))\r\n .subscribe((newGroup: MeteringPointGroup) => {\r\n this.meteringPointGroupsView = [newGroup, ...this.meteringPointGroupsView];\r\n this.sxSnackbarService.openSnackBar(this.translate.instant('metering.group-form.create_confirmation'), '');\r\n });\r\n }\r\n\r\n saveEditing(mpg: MeteringPointGroup) {\r\n mpg = { ...mpg, meteringPoints: mpg.meteringPoints.filter(mp => !mp.selected) };\r\n mpg.selected = false;\r\n this.isEditing = false;\r\n\r\n if (!mpg.id || mpg.id <= 0) {\r\n return;\r\n }\r\n\r\n this.store.dispatch(new fromMeteringStore.UpdateMeteringPointGroup(mpg));\r\n\r\n // In case all metering points are removed from the current filter\r\n if (mpg.meteringPoints.length === 0 && this.isCurrentFilterGroup(mpg)) {\r\n this.sxSnackbarService.openSnackBar(this.translate.instant('metering.group-form.save_changes_no_mps'));\r\n this.updateMeteringPointFilter(mpg);\r\n return;\r\n }\r\n // Standard message\r\n this.sxSnackbarService.openSnackBar(this.translate.instant('metering.group-form.save_changes'));\r\n }\r\n\r\n isCurrentFilterGroup(mpg: MeteringPointGroup): boolean {\r\n if (!this.userSettings) {\r\n return false;\r\n }\r\n\r\n if (\r\n this.userSettings.coldMeteringFilter &&\r\n this.userSettings.coldMeteringFilter.filterType === MeteringFilterType.MeteringPointGroup &&\r\n this.userSettings.coldMeteringFilter.filterId === mpg.id\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n this.userSettings.hotMeteringFilter &&\r\n this.userSettings.hotMeteringFilter.filterType === MeteringFilterType.MeteringPointGroup &&\r\n this.userSettings.hotMeteringFilter.filterId === mpg.id\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n updateMeteringPointFilter(mpg: MeteringPointGroup) {\r\n let newFilter = {\r\n ...(mpg.meteringType === MeteringType.Cold\r\n ? this.userSettings.coldMeteringFilter\r\n : this.userSettings.hotMeteringFilter),\r\n filterId: -1,\r\n filterType: MeteringFilterType.Unfiltered,\r\n meteringType: mpg.meteringType\r\n };\r\n\r\n this.userSettings = {\r\n ...this.userSettings,\r\n coldMeteringFilter: mpg.meteringType === MeteringType.Cold ? newFilter : this.userSettings.coldMeteringFilter,\r\n hotMeteringFilter: mpg.meteringType === MeteringType.Hot ? newFilter : this.userSettings.hotMeteringFilter\r\n };\r\n\r\n this.accountStore.dispatch(new fromAccountStore.SettingUpdate({userSettings: this.userSettings,userId:this.userInfo.id, filterArea:this.filterArea, meteringType : mpg.meteringType, meteringPoints:null}));\r\n }\r\n}\r\n","
\r\n\r\n
\r\n

\r\n {{'metering.group-pane.title' | translate}}{{ (paneType == 'Hot' ? 'metering.group-pane.hot' :\r\n 'metering.group-pane.cold') | translate}}\r\n

\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n

{{meteringPointGroup.name}}

\r\n
{{meteringPointGroup.meteringPoints.length}}\r\n {{ (meteringPointGroup.meteringPoints.length === 1 ? 'metering.group-pane.metering_point' :\r\n 'metering.group-pane.metering_points') | translate }}
\r\n
\r\n\r\n
\r\n \r\n Gruppens namn\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {{'metering.group-pane.add_metering_point' | translate}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {{meteringPoint.name}} \r\n ({{meteringPoint.id}})\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n","import { Component, OnInit, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { MeteringPoint, Customer } from '@model';\r\nimport { DisturbanceType } from '@enums';\r\n\r\nexport class CustomerMeteringDisruptionView {\r\n id: string;\r\n name: string;\r\n meteringPoints?: MeteringPoint[];\r\n _expanded?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'app-metering-points-disruptions-pane',\r\n templateUrl: './metering-points-disruptions-pane.component.html',\r\n standalone: false\r\n})\r\nexport class MeteringPointsDisruptionsPaneComponent implements OnInit, OnChanges {\r\n @Input()\r\n customersWithDisruptions: Customer[];\r\n customersWithMeteringPointDisruptionsView: CustomerMeteringDisruptionView[] = [];\r\n\r\n @Output()\r\n meteringPointSelected = new EventEmitter();\r\n\r\n DisturbanceTypeEnum = DisturbanceType;\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.createLocalView();\r\n }\r\n\r\n ngOnChanges() {\r\n this.createLocalView();\r\n }\r\n\r\n createLocalView() {\r\n if (!this.customersWithDisruptions || this.customersWithDisruptions.length === 0) {\r\n return;\r\n }\r\n\r\n this.customersWithMeteringPointDisruptionsView = [];\r\n\r\n this.customersWithDisruptions.forEach(cwd => {\r\n this.customersWithMeteringPointDisruptionsView.push({\r\n id: cwd.id,\r\n meteringPoints: [...cwd.meteringPointsCold, ...cwd.meteringPointsHeat],\r\n name: cwd.name,\r\n _expanded: true\r\n });\r\n });\r\n }\r\n\r\n panelOpened(customer: Customer) {\r\n if (this.customersWithMeteringPointDisruptionsView.some(c => c.id === customer.id)) {\r\n this.customersWithMeteringPointDisruptionsView.map(item =>\r\n item.id === customer.id ? (item._expanded = true) : item\r\n );\r\n }\r\n }\r\n\r\n panelClosed(customer: Customer) {\r\n if (this.customersWithMeteringPointDisruptionsView.some(c => c.id === customer.id)) {\r\n this.customersWithMeteringPointDisruptionsView.map(item =>\r\n item.id === customer.id ? (item._expanded = false) : item\r\n );\r\n }\r\n }\r\n\r\n viewInformation = (mp: MeteringPoint) => {\r\n this.meteringPointSelected.emit(mp);\r\n };\r\n}\r\n","
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n

{{customer.name}}\r\n ({{customer.id}})\r\n

\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{{meteringPoint.name}}

\r\n\r\n
{{ \"disruptions.metering_point\" | translate }} {{meteringPoint.id}}
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {{meteringPoint.addresses[0]!.street}} {{meteringPoint.addresses[0]!.streetNo}}\r\n
{{meteringPoint.addresses[0]!.zip}} {{meteringPoint.addresses[0]!.city | titlecase}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {{ \"disruptions.ongoing-delivery-disruption\" | translate }}\r\n \r\n \r\n {{ \"disruptions.ongoing-planned-disruption\" | translate }}\r\n \r\n \r\n {{ \"disruptions.ongoing-unplanned-disruption\" | translate }}\r\n \r\n \r\n {{ \"disruptions.restored-delivery-disruption\" | translate }}\r\n \r\n \r\n {{ \"disruptions.restored-planned-disruption\" | translate }}\r\n \r\n \r\n {{ \"disruptions.restored-unplanned-disruption\" | translate }}\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {{ \"disruptions.start_time_label\" | translate }}\r\n {{ disruptionInfo.startTime | date: 'HH:mm, d MMMM yyyy' }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{ \"disruptions.restore_information_label_short\" | translate }}\r\n {{ disruptionInfo.estimatedRestoreTime | date: 'HH:mm, d MMMM yyyy' }}\r\n
\r\n
\r\n {{ \"disruptions.restore_information_label_short_not_set\" | translate }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { Customer, MeteringPoint, MeteringPointGroup, UserSettings, UserInfo, DisruptionInfo } from '@model';\r\nimport { Observable } from 'rxjs';\r\nimport { Store } from '@ngrx/store';\r\nimport { UserType, MeteringType, PermissionType } from '@enums';\r\nimport { SxPermissionService } from '@services';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport * as combinedSelectors from '@appStore/metering-points/combined-selectors';\r\nimport * as combinedAccountSelectors from '@appStore/account/combined-selectors';\r\nimport * as fromStore from '@appStore/metering-points';\r\nimport * as fromCustomerStore from '@appStore/customers';\r\nimport * as fromAccountStore from '@appStore/account';\r\nimport * as sxUtilities from '@utils/sx-utilities';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-metering-points-display',\r\n templateUrl: './metering-points-display.component.html',\r\n standalone: false\r\n})\r\nexport class MeteringPointsDisplayComponent implements OnInit, OnDestroy {\r\n customersWithMeteringPoints$: Observable;\r\n customersWithDisruptions$: Observable;\r\n meteringPoints$: Observable;\r\n meteringPointGroups$: Observable;\r\n\r\n selectedHotMeteringPoints$: Observable;\r\n selectedColdMeteringPoints$: Observable;\r\n activatedHotVirtualGroup$: Observable;\r\n activatedColdVirtualGroup$: Observable;\r\n\r\n customersLoaded$: Observable;\r\n meteringPointsLoaded$: Observable;\r\n meteringPointGroupsLoaded$: Observable;\r\n\r\n userSettings$: Observable;\r\n selectTabIndex$: Observable;\r\n\r\n showMeteringPointGroups: boolean;\r\n selectedTabIndex = 0;\r\n hotMeteringPointsCount: number;\r\n coldMeteringPointsCount: number;\r\n allMeteringPointsCount: number;\r\n countSet = false;\r\n\r\n plannedDisruptions = 0;\r\n unPlannedDisruptions = 0;\r\n numberOfMeteringTypes = 0;\r\n\r\n hasHotMeteringPoints: boolean;\r\n hasColdMeteringPoints: boolean;\r\n \r\n private subs = new SubSink();\r\n userInfo$: Observable;\r\n isMobile$: Observable;\r\n\r\n constructor(\r\n private store: Store,\r\n private customersStore: Store,\r\n private accountStore: Store,\r\n private sxPermissionService: SxPermissionService,\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n private breakpointObserver: BreakpointObserver\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.store.select(fromStore.getMeteringPointsWithDisruptions).subscribe(mps => {\r\n this.disruptionsLoaded(mps);\r\n });\r\n \r\n this.customersWithMeteringPoints$ = this.customersStore.select(combinedSelectors.getFilledCustomers);\r\n this.customersLoaded$ = this.customersStore.select(fromCustomerStore.getCustomersLoaded);\r\n this.customersWithDisruptions$ = this.customersStore.select(combinedSelectors.getFilledCustomersWithDisruptions);\r\n this.meteringPoints$ = this.store.select(fromStore.getMeteringPoints);\r\n this.meteringPointsLoaded$ = this.store.select(fromStore.getMeteringPointsLoaded);\r\n\r\n let virtualGroup = this.store.select(fromStore.getVirtualGroup);\r\n\r\n this.activatedHotVirtualGroup$ = virtualGroup.pipe(map(x => x.hotActivated));\r\n this.activatedColdVirtualGroup$ = virtualGroup.pipe(map(x => x.coldActivated));\r\n this.selectedHotMeteringPoints$ = virtualGroup.pipe(map(x => x.hot));\r\n this.selectedColdMeteringPoints$ = virtualGroup.pipe(map(x => x.cold));\r\n\r\n this.meteringPointGroups$ = this.store.select(combinedSelectors.getFilledMeteringPointGroups);\r\n this.meteringPointGroupsLoaded$ = this.store.select(fromStore.getMeteringPointGroupsLoaded);\r\n\r\n this.userSettings$ = this.accountStore.select(combinedAccountSelectors.getFilledSettings);\r\n this.userInfo$ = this.accountStore.select(fromAccountStore.getUserInfo);\r\n\r\n this.selectTabIndex$ = this.store.select(fromStore.getSelectedMeteringPointsTabIndex);\r\n\r\n this.showMeteringPointGroups = this.sxPermissionService.securityTrimByUserType([\r\n UserType.Company,\r\n UserType.Brf,\r\n UserType.Manager\r\n ]);\r\n\r\n this.showMeteringPointGroups =\r\n this.showMeteringPointGroups &&\r\n this.sxPermissionService.checkPermissions([PermissionType.ManageMeteringPointGroup], null);\r\n\r\n this.subs.sink = this.meteringPoints$.pipe(filter(x => !!x)).subscribe(meteringPoints => {\r\n this.hasHotMeteringPoints = meteringPoints.find(m => m.meteringType === MeteringType.Hot) !== undefined;\r\n this.hotMeteringPointsCount = meteringPoints.filter(mp => mp.meteringType === MeteringType.Hot).length;\r\n this.hasColdMeteringPoints = meteringPoints.find(m => m.meteringType === MeteringType.Cold) !== undefined;\r\n this.coldMeteringPointsCount = meteringPoints.filter(mp => mp.meteringType === MeteringType.Cold).length;\r\n this.allMeteringPointsCount = this.hotMeteringPointsCount + this.coldMeteringPointsCount;\r\n this.countSet = true;\r\n this.numberOfMeteringTypes = 0;\r\n \r\n if (this.hasHotMeteringPoints) {\r\n this.numberOfMeteringTypes += 1;\r\n }\r\n if (this.hasColdMeteringPoints) {\r\n this.numberOfMeteringTypes += 1;\r\n }\r\n\r\n if (this.allMeteringPointsCount === 1) {\r\n this.router.navigate(['/secure/meteringpoints/' + meteringPoints[0].id], {relativeTo: this.activatedRoute, replaceUrl: true});\r\n }\r\n });\r\n this.isMobile$ = this.breakpointObserver.observe(\"(max-width: 576px)\").pipe(map((result) => result.matches));\r\n \r\n this.setSelectedTab();\r\n }\r\n\r\n setSelectedTab = async () => {\r\n if (this.activatedRoute.snapshot.url.length === 0) {\r\n this.selectedTabIndex = 0;\r\n return;\r\n }\r\n\r\n switch (this.activatedRoute.snapshot.url[0].path) {\r\n case 'groups': {\r\n this.selectedTabIndex = 1;\r\n break;\r\n }\r\n case 'disruptions': {\r\n await this.delay(1); // Utan denna fuling ser tabben inte ut att vara aktiv :-)\r\n this.selectedTabIndex = 2;\r\n break;\r\n }\r\n default: {\r\n this.selectedTabIndex = 0;\r\n break;\r\n }\r\n }\r\n };\r\n\r\n disruptionsLoaded = (disruptions: MeteringPoint[]) => {\r\n this.plannedDisruptions = 0;\r\n this.unPlannedDisruptions = 0;\r\n this.setSelectedTab();\r\n let disruptionsInfos: DisruptionInfo[] = new Array();\r\n\r\n disruptions.forEach(d => {\r\n if (d.disruptionInfos && d.disruptionInfos.length > 0){\r\n disruptionsInfos = [...disruptionsInfos, ...d.disruptionInfos];\r\n }\r\n });\r\n disruptionsInfos.forEach(d => {\r\n if (d.isPlanned) {\r\n this.plannedDisruptions++;\r\n } else {\r\n this.unPlannedDisruptions++;\r\n }\r\n })\r\n };\r\n\r\n private delay(ms: number) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n fixTabs(event) {\r\n sxUtilities.fixInnerMatGroupTabs();\r\n }\r\n\r\n onTabIndexChange = (ix: number) => {\r\n this.store.dispatch(new fromStore.SelectTabIndexMeteringPoints(ix));\r\n this.store.dispatch(new fromStore.ClearScrollPosition());\r\n };\r\n\r\n onMeteringPointSelected = (selectedMp: MeteringPoint) => {\r\n this.store.dispatch(new fromStore.SelectMeteringPoint(selectedMp));\r\n\r\n this.router.navigate([`/secure/meteringpoints/${selectedMp.id}`]);\r\n };\r\n}\r\n","
\r\n

{{'metering.title' | translate}}

\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n 0 || coldMeteringPointsCount > 0\" \r\n mat-stretch-tabs=\"false\"\r\n [selectedIndex]=\"selectedTabIndex\" \r\n (selectedTabChange)=\"fixTabs($event)\" \r\n appSelectedTab>\r\n \r\n
\r\n \r\n
\r\n \r\n 0\" id=\"tab_meteringpoints_hot\" label=\"{{'metering.tabs.title_hot'|translate}}\">\r\n \r\n \r\n 0\" id=\"tab_meteringpoints_cold\" label=\"{{'metering.tabs.title_cold'|translate}}\">\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n 1)\" id=\"tab_meteringpoint_groups\" label=\"{{'metering.tabs.title_groups'|translate}}\" >\r\n \r\n
\r\n \r\n 0\" id=\"tab_meteringpoint_groups_hot\" label=\"{{'metering.tabs.title_hot' | translate}}\">\r\n \r\n \r\n \r\n 0\" id=\"tab_meteringpoint_groups_cold\" label=\"{{'metering.tabs.title_cold' | translate}}\">\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input, OnDestroy, ChangeDetectorRef, OnChanges } from '@angular/core';\r\nimport { MeteringPoint, \r\n Customer, \r\n MeteringSubFilter, \r\n UserSettings, \r\n AnalyzePaneSettings, \r\n InformationGroup, \r\n ApplicationConfiguration, \r\n MeteringPointStub, \r\n UserInfo, \r\n Contract, \r\n AnalyzePeriodData,\r\n TaxReturnAgreementParams} from '@model';\r\nimport { MeteringType, MeteringFilterType,\r\n AnalyzeSettingsType, \r\n UserType, \r\n AnalyzeUnitType, \r\n AnalyzeConsumptionType, \r\n DatePeriodType, \r\n AdditionCodes, \r\n PermissionType} from '@enums';\r\nimport { SxSnackbarService, SxDialogService, SxPermissionService, SxExportService } from '@services';\r\nimport { SubSink } from 'subsink';\r\nimport { filter, take, map, tap, switchMap } from 'rxjs/operators';\r\nimport * as fromStore from '@core/store';\r\nimport { MeteringPointService, AgreementService } from '@appStore/metering-points/services';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Router } from '@angular/router';\r\nimport * as fromAccountStore from '@appStore/account';\r\nimport * as fromMeteringStore from '@appStore/metering-points';\r\nimport * as fromAnalyzeStore from '@appStore/analyze';\r\nimport * as fromContractStore from '@appStore/contracts';\r\nimport { Store } from '@ngrx/store';\r\nimport * as combinedSelectors from '@appStore/account/combined-selectors';\r\nimport { MeteringGroupFormComponent } from '../metering-group-form/metering-group-form.component';\r\nimport { Observable, combineLatest } from 'rxjs';\r\nimport * as fromConfiguration from '@appStore/configuration';\r\nimport { InformationKey } from 'app/models/enums/information-key.enum';\r\nimport dayjs from 'dayjs';\r\nimport duration from 'dayjs/plugin/duration';\r\nimport { ToLocalDateTimePipe } from '@utils/pipes';\r\nimport { BusinessArea } from 'app/models/enums/business-area.enum';\r\n\r\n@Component({\r\n selector: 'app-metering-point-item-pane',\r\n templateUrl: './metering-point-item-pane.component.html',\r\n standalone: false\r\n})\r\nexport class MeteringPointItemPaneComponent implements OnInit, OnDestroy, OnChanges {\r\n @Input()\r\n meteringPoint: MeteringPoint;\r\n\r\n @Input()\r\n meteringPoints: MeteringPoint[];\r\n\r\n @Input()\r\n customer: Customer;\r\n\r\n @Input()\r\n userInfo: UserInfo;\r\n\r\n @Input()\r\n filterArea: string;\r\n\r\n @Input()\r\n userType: UserType;\r\n\r\n @Input()\r\n contract: Contract;\r\n\r\n @Input()\r\n periodData$: Observable;\r\n\r\n MeteringTypeEnum = MeteringType;\r\n\r\n userSettings: UserSettings;\r\n meteringPointsCount = 0;\r\n hasManageGroupPermission = true;\r\n hasManageAlarmsPermission = true;\r\n hasIntelligy = false;\r\n taxReturingMeteringpoint = false;\r\n isPrivate = false;\r\n ageOfCentralInYears = 0;\r\n\r\n matTooltipText: string;\r\n intelligyIcon = \"#sx-intelligy\";\r\n\r\n private subs = new SubSink();\r\n exportRequested = false;\r\n informationLoaded$: Observable;\r\n meteringpointInformationGroup: InformationGroup = {\r\n id : 0,\r\n informations: [],\r\n expanded: true\r\n };\r\n intelligyStateLoaded$: Observable;\r\n appConfig: ApplicationConfiguration;\r\n clientIsIntelligyCompatible = false;\r\n customerServiceEmailAddress: string;\r\n meteringPointName: string;\r\n\r\n co2CompensationKeyFigure: number;\r\n co2CompensationCertificateYear: number;\r\n co2CompensationCalculated = false;\r\n co2CompensationInTons = 0;\r\n hasClimateNeutralAddition = false;\r\n isProcessing = false;\r\n\r\n currentPeriodData: AnalyzePeriodData;\r\n UserTypeEnum = UserType;\r\n insufficentPermissions: boolean;\r\n PermissionEnum = PermissionType;\r\n businessArea: BusinessArea;\r\n\r\n\r\n constructor(\r\n private meteringPointService: MeteringPointService,\r\n private agreementService: AgreementService,\r\n private translate: TranslateService,\r\n private sxSnackbarService: SxSnackbarService,\r\n private router: Router,\r\n private accountStore: Store,\r\n private meteringPointStore: Store,\r\n private analyzeStore: Store,\r\n private contractStore: Store,\r\n private sxDialogService: SxDialogService,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private sxPermissionService: SxPermissionService,\r\n private exportService: SxExportService,\r\n private store: Store,\r\n private toLocalDate: ToLocalDateTimePipe,\r\n private configStore: Store\r\n ) {\r\n this.co2CompensationCalculated = false;\r\n this.hasClimateNeutralAddition = false;\r\n this.isProcessing = false;\r\n }\r\n\r\n get isManager(){\r\n return this.userType === this.UserTypeEnum.Manager;\r\n }\r\n\r\n ngOnInit() {\r\n dayjs.extend(duration);\r\n\r\n this.subs.sink = this.accountStore\r\n .select(combinedSelectors.getFilledSettings)\r\n .pipe(\r\n filter(x => !!x),\r\n take(1)\r\n )\r\n .subscribe(x => (this.userSettings = x));\r\n\r\n this.subs.sink = this.configStore.select(fromConfiguration.getApiConfiguration).subscribe(apiConfig => {\r\n this.appConfig = apiConfig;\r\n let taxReturingMeteringpoints = this.appConfig?.industiralTaxMeteringpotins.split(';');\r\n this.taxReturingMeteringpoint = taxReturingMeteringpoints.some(mp => mp === this.meteringPoint.id.toString());\r\n this.clientIsIntelligyCompatible = this.appConfig?.intelligyCompatibleClients.includes(this.appConfig.client_id);\r\n this.customerServiceEmailAddress = this.appConfig?.comCustomerServiceEmailAddress;\r\n this.co2CompensationCertificateYear = this.appConfig?.co2CompensationCertificateYear;\r\n this.co2CompensationKeyFigure = this.appConfig?.co2CompensationKeyFigure;\r\n this.getContractAddition();\r\n });\r\n\r\n this.insufficentPermissions = this.sxPermissionService.securityTrim(\r\n undefined,\r\n [PermissionType.SignServices],\r\n this.contract?.customerId,\r\n undefined\r\n ) ? false : true;\r\n\r\n // Fetch HasIntelligy from MeteringPoint instead...\r\n this.hasIntelligy = this.meteringPoint.hasIntelligy;\r\n \r\n const meteringPointInformations$ = this.store.select(fromStore.getMeteringPointInformations);\r\n this.subs.sink = meteringPointInformations$.subscribe(mInfo => {\r\n if (mInfo) {\r\n this.meteringpointInformationGroup = {\r\n id : 0,\r\n informations: this.meteringPoint.hasIntelligy ?\r\n mInfo.filter(x => x.key === InformationKey.MeteringpointInfoGeneric)\r\n : mInfo.filter(x => x.key === InformationKey.MeteringpointInfoIntelligy),\r\n expanded: true\r\n }\r\n }\r\n });\r\n\r\n if (this.meteringPoint && this.meteringPoints && this.meteringPoints.length > 0) {\r\n\r\n this.businessArea = this.meteringPoint.meteringType === MeteringType.Hot || \r\n this.meteringPoint.meteringType === MeteringType.HotLogical ? BusinessArea.Hot : BusinessArea.Cold;\r\n\r\n this.meteringPointsCount = this.meteringPoints.filter(\r\n x => x.meteringType === this.meteringPoint.meteringType\r\n ).length;\r\n\r\n if (this.meteringPointsCount > 1) {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n this.subs.sink = this.periodData$.subscribe(periodData => {\r\n if (periodData && periodData?.consumptionData) {\r\n this.currentPeriodData = periodData;\r\n }\r\n });\r\n\r\n this.hasManageGroupPermission = this.sxPermissionService.hasUserManageMeteringPointGroupsPermission();\r\n this.hasManageAlarmsPermission = this.sxPermissionService.hasUserManageAlarmsPermission();\r\n this.isPrivate = this.userType === UserType.Private;\r\n this.meteringPointName = this.capitalize(this.meteringPoint.name);\r\n this.ageOfCentralInYears = this.calculateAge(this.meteringPoint);\r\n\r\n this.matTooltipText = !!this.userInfo.impersonatedAsName ? \r\n this.translate.instant('metering.item.overview.intelligy-impersonation-tooltip')\r\n : null;\r\n \r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n // Ålder på fjärrkyla-/fjärrvärmecentral\r\n calculateAge(meteringPoint: MeteringPoint): number {\r\n \r\n let years = 0;\r\n\r\n let latestConstructionDateStr = meteringPoint.latestConstructionDate;\r\n if (!latestConstructionDateStr) {\r\n return 0;\r\n }\r\n //console.log('latestConstructionDateStr: ' + latestConstructionDateStr);\r\n\r\n let latestConstructionDate = dayjs(latestConstructionDateStr);\r\n //console.log('latestConstructionDate: ' + latestConstructionDate);\r\n \r\n // First in Month (Used in FortumServices)\r\n let toDate = dayjs().startOf('month');\r\n //console.log('toDate: ' + toDate);\r\n\r\n let duration = dayjs.duration(toDate.diff(latestConstructionDate));\r\n let numberOfdays = duration.asDays();\r\n //console.log('numberOfdays: ' + numberOfdays);\r\n\r\n \r\n // numberofDays / 365.25 => to Integer\r\n years = Math.round(numberOfdays / 365.25);\r\n //console.log('years: ' + years);\r\n return years;\r\n }\r\n\r\n ngOnChanges() {\r\n }\r\n\r\n getContractAddition() {\r\n\r\n // Get co2CompensationCertificateDate interval\r\n let co2CompensationCertificateDateFrom = dayjs(new Date(this.co2CompensationCertificateYear, 0, 1))\r\n .startOf('day')\r\n .toDate();\r\n\r\n let co2CompensationCertificateDateTo = dayjs(new Date(this.co2CompensationCertificateYear, 11, 31))\r\n .endOf('day')\r\n .toDate();\r\n\r\n // Check if the Customer/MeteringPoint had the contractAddition during the date-intervall?\r\n let additionCodes = [];\r\n additionCodes.push(AdditionCodes.ClimateNeutral);\r\n this.store.dispatch(new fromContractStore.HasContractAdditions({\r\n meteringPointId: this.meteringPoint.id,\r\n customerId: this.meteringPoint.customerId,\r\n from: co2CompensationCertificateDateFrom,\r\n to: co2CompensationCertificateDateTo,\r\n additions: additionCodes\r\n }));\r\n\r\n this.subs.sink = this.store\r\n .select(fromContractStore.getHasContractAdditionsLoaded)\r\n .pipe(\r\n filter(x => !!x),\r\n take(1),\r\n switchMap(x => this.store.select(fromContractStore.getHasContractAdditions).pipe(take(1)))\r\n )\r\n .subscribe(hasAdditions => {\r\n if (hasAdditions) {\r\n this.isProcessing = true;\r\n this.hasClimateNeutralAddition = true;\r\n this.co2CompensationCalculated = false;\r\n\r\n let dateFrom = co2CompensationCertificateDateFrom;\r\n let dateTo = co2CompensationCertificateDateTo;\r\n\r\n let unit = this.userType === UserType.Private ? AnalyzeUnitType.Kwh : AnalyzeUnitType.Mwh;\r\n\r\n let meteringType = this.meteringPoint.meteringType === MeteringType.Hot\r\n ? this.meteringPoint.type === 'LOG' ? MeteringType.HotLogical : MeteringType.Hot\r\n : this.meteringPoint.type === 'LOG' ? MeteringType.ColdLogical : MeteringType.Cold;\r\n\r\n this.subs.sink = this.meteringPointStore\r\n .select(fromMeteringStore.getClimateCompensatedCO2)\r\n .pipe(take(1))\r\n .subscribe((i) => {\r\n if (!i || i.meteringPointId !== this.meteringPoint.id) {\r\n // Climate compensation for meteringPoint not in Store\r\n \r\n this.meteringPointStore.dispatch(\r\n new fromMeteringStore.LoadClimateCompensatedCO2({\r\n meteringPointId: this.meteringPoint.id,\r\n customerId: this.meteringPoint.customerId,\r\n from: dateFrom,\r\n to: dateTo,\r\n resolution: DatePeriodType.Day,\r\n type: AnalyzeConsumptionType.Energy,\r\n unit: unit,\r\n meteringType: meteringType,\r\n compensationKeyFigure: this.co2CompensationKeyFigure\r\n })\r\n );\r\n this.subs.sink = this.meteringPointStore\r\n .select(fromMeteringStore.getClimateCompensatedCO2Loaded)\r\n .pipe(\r\n filter(x => !!x),\r\n take(1),\r\n switchMap(x => this.store.select(fromMeteringStore.getClimateCompensatedCO2).pipe(take(1)))\r\n )\r\n .subscribe(x => {\r\n // Fetched climate compensation from backend\r\n this.co2CompensationInTons = Math.round(x.compensation * 10) / 10;\r\n this.isProcessing = false;\r\n this.co2CompensationCalculated = true;\r\n });\r\n } else {\r\n // Climate compensation in Store\r\n this.co2CompensationInTons = Math.round(i.compensation * 10) / 10;\r\n this.isProcessing = false;\r\n this.co2CompensationCalculated = true;\r\n }\r\n });\r\n } else {\r\n // No additions\r\n this.isProcessing = false;\r\n this.hasClimateNeutralAddition = false;\r\n this.co2CompensationCalculated = true;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n // Clear state\r\n this.meteringPointStore.dispatch(new fromMeteringStore.ClearClimateCompensatedCO2State());\r\n }\r\n\r\n goToIntelligyPage() {\r\n this.router.navigate([`/secure/intelligy`]);\r\n }\r\n\r\n goToIntelligyApplication() {\r\n if (!!this.userInfo.impersonatedAsName) return;\r\n \r\n this.accountStore.dispatch(new fromAccountStore.SetIntelligyLogin());\r\n window.open(this.appConfig?.intelligyLoginUrl, '_self');\r\n }\r\n\r\n goToAggrement = () => {\r\n this.router.navigate([`/secure/contracts/redirect/${this.meteringPoint.id}`], { skipLocationChange: true });\r\n };\r\n\r\n changeArea = () => {\r\n alert('mailto: ' + this.customerServiceEmailAddress);\r\n };\r\n\r\n goToInvoices = () => {\r\n if (!this.userSettings) {\r\n return;\r\n }\r\n this.setMainFilter();\r\n this.router.navigate([`/secure/invoices/${this.meteringPoint.id}`]);\r\n };\r\n\r\n goToAnalyze = () => {\r\n if (!this.userSettings) {\r\n return;\r\n }\r\n this.setMainFilter();\r\n\r\n let meteringType = this.meteringPoint.meteringType === MeteringType.Hot\r\n ? this.meteringPoint.type === 'LOG' ? MeteringType.HotLogical : MeteringType.Hot\r\n : this.meteringPoint.type === 'LOG' ? MeteringType.ColdLogical : MeteringType.Cold;\r\n let analyzeSettings = {\r\n ...AnalyzePaneSettings.initalState(meteringType, AnalyzeSettingsType.Energy)\r\n };\r\n\r\n this.analyzeStore.dispatch(new fromAnalyzeStore.AnalyzeUpdateSettings(analyzeSettings));\r\n\r\n this.router.navigate([`/secure/analyze/${this.meteringPoint.id}`]);\r\n };\r\n\r\n goToAlarm = () => {\r\n this.router.navigate([`/secure/alarms/redirect/${this.meteringPoint.id}`], { skipLocationChange: true });\r\n };\r\n\r\n addToGroup = () => {\r\n let dialogRef = this.sxDialogService.openDialog(MeteringGroupFormComponent, {\r\n selectedMeteringPoints: [this.meteringPoint],\r\n meteringType: this.meteringPoint.meteringType\r\n });\r\n\r\n this.subs.sink = dialogRef.afterClosed().subscribe((result: string) => {\r\n if (!!result && result === 'save') {\r\n this.sxSnackbarService.openSnackBar(this.translate.instant('metering.item.overview.added-to-group'), '');\r\n }\r\n });\r\n };\r\n\r\n setMainFilter = () => {\r\n let meteringType = this.meteringPoint.meteringType === MeteringType.Hot\r\n ? this.meteringPoint.type === 'LOG' ? MeteringType.HotLogical : MeteringType.Hot\r\n : this.meteringPoint.type === 'LOG' ? MeteringType.ColdLogical : MeteringType.Cold;\r\n\r\n let currentFilter = this.meteringPoint.meteringType === MeteringType.Hot\r\n ? this.meteringPoint.type === 'LOG' ? this.userSettings.hotLogicalMeteringFilter : this.userSettings.hotMeteringFilter\r\n : this.meteringPoint.type === 'LOG' ? this.userSettings.coldLogicalMeteringFilter : this.userSettings.coldMeteringFilter;\r\n\r\n let subFilter: MeteringSubFilter = null;\r\n if (meteringType === MeteringType.HotLogical || meteringType === MeteringType.ColdLogical) {\r\n subFilter = {\r\n meteringType: meteringType,\r\n includedMeteringPoints: this.meteringPoint.containedMeteringPoints.map(\r\n mp => { id: mp.id, name: mp.name, selected: true }\r\n )\r\n };\r\n }\r\n\r\n currentFilter = {\r\n ...currentFilter,\r\n filterType: MeteringFilterType.MeteringPoint,\r\n filterId: this.meteringPoint.id,\r\n meteringType: meteringType,\r\n name: this.meteringPoint.name,\r\n containsMeteringPointIds: this.meteringPoint.containedMeteringPoints\r\n ? this.meteringPoint.containedMeteringPoints.map(x => x.id)\r\n : [],\r\n subfilter: subFilter,\r\n };\r\n\r\n this.accountStore.dispatch(\r\n new fromAccountStore.FilterSettingUpdate({\r\n meteringType: meteringType,\r\n filter: currentFilter,\r\n userId: this.userInfo.id,\r\n filterArea: this.filterArea,\r\n meteringPoints: this.meteringPoints })\r\n );\r\n };\r\n\r\n getReport(meteringPointId: number) {\r\n let type = this.meteringPoint.meteringType === MeteringType.Hot ? 'Fjärrvärmerapport' : 'Fjärrkylarapport';\r\n let meteringPointName = this.meteringPoint.name;\r\n let filename = type + '-' + meteringPointId + '-' + this.capitalize(this.replaceInvalidChars(meteringPointName));\r\n let timestamp = this.toLocalDate.transform(new Date(), 'YYYY-MM-dd');\r\n\r\n this.subs.sink = this.exportService.exportInNewWindow(\r\n 'meteringpoints.info.downloading_report',\r\n this.meteringPointService.createReportKey(),\r\n `/meteringpoints/${meteringPointId}/summaryreport/${filename}_${timestamp}`\r\n );\r\n }\r\n\r\n capitalize = s => {\r\n if (typeof s !== 'string') {\r\n return '';\r\n }\r\n return s.charAt(0).toUpperCase() + s.slice(1);\r\n };\r\n\r\n replaceInvalidChars = s => {\r\n return s.replace(/[/\\\\?%*:|\"<>+]/g, '-');\r\n };\r\n\r\n displayAgreementSignPage = () => {\r\n // prevent multiple clicks\r\n if (this.exportRequested) {\r\n return;\r\n }\r\n\r\n this.exportRequested = true;\r\n let request: TaxReturnAgreementParams = { meteringPointId: this.meteringPoint.id.toString() };\r\n\r\n this.meteringPointStore.dispatch(new fromMeteringStore.CreateTaxReturnAgreement(request));\r\n this.subs.sink = this.contractStore.select(fromMeteringStore.getTaxReturnAgreementCreated)\r\n .pipe(\r\n filter(created => created),\r\n take(1)\r\n ).subscribe(isCreated => {\r\n this.contractStore.select(fromMeteringStore.getTaxReturnAgreementCreatedId)\r\n .pipe(\r\n take(1)\r\n ).subscribe(agreementId => {\r\n \r\n this.contractStore.dispatch(new fromMeteringStore.AgreementLinkLoad(agreementId));\r\n this.contractStore.select(fromMeteringStore.getActiveAgreementLinkLoaded)\r\n .pipe(\r\n filter(loaded => loaded),\r\n take(1)\r\n ).subscribe(() => {\r\n this.exportRequested = false;\r\n this.changeDetectorRef.detectChanges();\r\n this.subs.sink = this.exportService.openLinkInNewWindow('metering.item.overview.agreement_download',\r\n this.contractStore.select(fromMeteringStore.getActiveAgreementLink));\r\n \r\n });\r\n });\r\n });\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n

{{'metering.item.overview.title'|translate}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{'metering.item.overview.customer_name'|translate}}
\r\n
{{customer?.name}}
\r\n
{{'metering.item.overview.meteringpoint'|translate}}
\r\n
{{meteringPoint.id}}
\r\n
{{'metering.item.overview.address'|translate}}
\r\n
{{meteringPoint.addresses[0]!.street| titlecase}} {{meteringPoint.addresses[0]!.streetNo}}\r\n
{{meteringPoint.addresses[0]!.zip}} {{meteringPoint.addresses[0]!.city | titlecase}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
{{'metering.item.overview.category'|translate}}
\r\n
{{meteringPoint.category}}
\r\n
{{'metering.item.overview.area'|translate}}
\r\n \r\n
\r\n {{ (meteringPoint.meteringType===MeteringTypeEnum.Hot? 'metering.item.overview.age_hot' : 'metering.item.overview.age_cold') |translate}}\r\n
\r\n
{{ageOfCentralInYears}} {{'metering.item.overview.years'|translate}}
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
{{'metering.item.overview.environment'|translate}}
\r\n \r\n
\r\n {{('metering.item.overview.co2_climate_compensation' | translate:{value1: co2CompensationCertificateYear, value2: co2CompensationInTons | toLocal})}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
0 && this.meteringPointsCount > 1\"/>\r\n\r\n
\r\n
\r\n
\r\n
0 && this.meteringPointsCount > 1\"\r\n class=\"sx-contract-item__bold\">{{'metering.item.overview.groups'|translate}}\r\n
\r\n
0 && this.meteringPointsCount > 1\"\r\n id=\"mp_groups\">\r\n
\r\n {{parentGroup.name}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n","import { Component, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { MeteringPoint, MeteringPointFunctionControlContract } from '@model';\r\nimport { Store } from '@ngrx/store';\r\nimport * as mpStore from '@appStore/metering-points';\r\nimport { filter, Observable } from 'rxjs';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-function-control-contract',\r\n templateUrl: './function-control-contract.component.html',\r\n standalone: false\r\n})\r\nexport class FunctionControlContractComponent implements OnInit, OnChanges {\r\n @Input()\r\n meteringPoint: MeteringPoint;\r\n @Input()\r\n containedMeteringPoint: MeteringPoint;\r\n\r\n meteringPointsWithFunctionsControlContract$: Observable;\r\n functionControlContract: MeteringPointFunctionControlContract;\r\n private subs = new SubSink();\r\n\r\n containedMeteringPointsWithFunctionsControlContract$: Observable;\r\n\r\n constructor(\r\n private meteringStore: Store\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n\r\n // Same metering point\r\n if(this.meteringPoint.hasFunctionControl && !this.containedMeteringPoint) {\r\n\r\n if (!this.meteringPoint.functionControlContract) {\r\n this.meteringStore.dispatch(new mpStore.LoadMeteringPointFunctionControlContract({\r\n masterMeteringPointId: this.meteringPoint.id,\r\n meteringPointId: this.meteringPoint.id\r\n }));\r\n }\r\n\r\n this.meteringPointsWithFunctionsControlContract$ = this.meteringStore.select(mpStore.getMeteringPointFunctionControlContract);\r\n this.subs.sink = this.meteringPointsWithFunctionsControlContract$.pipe(filter(x => !!x)).subscribe(mps => {\r\n\r\n let filteredMp = mps.find(mp => mp.id === this.meteringPoint.id);\r\n this.functionControlContract = filteredMp ? filteredMp.functionControlContract : null;\r\n });\r\n\r\n } else if(this.containedMeteringPoint && this.containedMeteringPoint.hasFunctionControl) {\r\n // Contained metering point\r\n\r\n if (!this.containedMeteringPoint.functionControlContract) {\r\n this.meteringStore.dispatch(new mpStore.LoadMeteringPointFunctionControlContract(\r\n {\r\n masterMeteringPointId: this.meteringPoint.id,\r\n meteringPointId: this.containedMeteringPoint.id\r\n }\r\n ));\r\n }\r\n this.containedMeteringPointsWithFunctionsControlContract$ = this.meteringStore.select(mpStore.getMeteringPointFunctionControlContract);\r\n this.subs.sink = this.containedMeteringPointsWithFunctionsControlContract$.pipe(filter(x => !!x)).subscribe(mps => {\r\n\r\n // Master meteringPoint\r\n let filteredMp = mps.find(mp => mp.id === this.meteringPoint.id);\r\n let filteredContainedMp = filteredMp.containedMeteringPoints.find(mp => mp.id === this.containedMeteringPoint.id);\r\n this.functionControlContract = filteredContainedMp ? filteredContainedMp.functionControlContract : null;\r\n });\r\n\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n if (this.containedMeteringPoint && this.containedMeteringPoint.hasFunctionControl && this.containedMeteringPoint.functionControlContractLoaded) {\r\n \r\n this.functionControlContract = this.containedMeteringPoint ? this.containedMeteringPoint.functionControlContract : null;\r\n }\r\n }\r\n}\r\n","\r\n\r\n

{{'metering.item.functioncontrol.contract'|translate}}

\r\n
{{functionControlContract?.energyServiceName}}
\r\n\r\n\r\n","import { Component, OnInit, Input, OnDestroy, ViewChild, ChangeDetectorRef, OnChanges } from '@angular/core';\r\nimport { MeteringPoint } from '@model';\r\nimport * as mpStore from '@appStore/metering-points';\r\nimport { Store } from '@ngrx/store';\r\nimport { String } from 'typescript-string-operations';\r\nimport { Observable } from 'rxjs';\r\nimport { MeteringPointFunctionControl } from 'app/models/metering-point-function-control';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { environment } from '@environment';\r\nimport { SubSink } from 'subsink';\r\nimport { SxSnackbarService } from '@services';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MeteringPointService } from '@appStore/metering-points/services';\r\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { FunctionControlListingTableDataSource } from './function-control-listing-table-datasource';\r\nimport { ToLocalDateTimePipe } from '@utils/pipes';\r\n\r\n@Component({\r\n selector: 'app-function-control-listing',\r\n templateUrl: './function-control-listing.component.html',\r\n standalone: false\r\n})\r\nexport class FunctionControlListingComponent implements OnInit, OnDestroy, OnChanges {\r\n @Input()\r\n meteringPoint: MeteringPoint;\r\n @Input()\r\n containedMeteringPoint: MeteringPoint;\r\n\r\n @ViewChild(MatPaginator, { static: true })\r\n paginator: MatPaginator;\r\n\r\n @ViewChild(MatSort, { static: true })\r\n sort: MatSort;\r\n\r\n meteringPointsWithFunctionsControls$: Observable;\r\n functionControls: MeteringPointFunctionControl[];\r\n dataSource: FunctionControlListingTableDataSource;\r\n selectedMeteringPoint: MeteringPoint;\r\n isContainerMeteringPoint = false;\r\n\r\n sortActive: string;\r\n sortDirection: string;\r\n pageSize: number;\r\n currentPage = 0;\r\n\r\n displayedColumns = [\r\n 'id',\r\n 'performed',\r\n 'notes'\r\n ];\r\n\r\n private subs = new SubSink();\r\n\r\n constructor(\r\n private meteringStore: Store,\r\n private sxSnackbarService: SxSnackbarService,\r\n private translate: TranslateService,\r\n private meteringPointService: MeteringPointService,\r\n private toLocalDate: ToLocalDateTimePipe,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n this.sortActive = 'performed';\r\n this.sortDirection = 'desc';\r\n }\r\n\r\n ngOnInit() {\r\n \r\n if (\r\n this.meteringPoint.type !== 'LOG' &&\r\n this.meteringPoint.hasFunctionControl && \r\n !this.meteringPoint.functionControls &&\r\n !this.meteringPoint.functionControlsLoaded &&\r\n !this.meteringPoint.functionControlsLoading\r\n ) {\r\n this.selectedMeteringPoint = this.meteringPoint;\r\n\r\n this.meteringStore.dispatch(\r\n new mpStore.LoadMeteringPointFunctionControls({\r\n masterMeteringPointId: this.meteringPoint.id,\r\n meteringPointId: this.meteringPoint.id,\r\n }));\r\n }\r\n\r\n if (this.meteringPoint.type === 'LOG' && this.containedMeteringPoint?.hasFunctionControl) {\r\n\r\n if (this.containedMeteringPoint.hasFunctionControl && \r\n !this.containedMeteringPoint.functionControlsLoaded && \r\n !this.containedMeteringPoint.functionControlsLoading) {\r\n\r\n this.selectedMeteringPoint = this.containedMeteringPoint;\r\n this.isContainerMeteringPoint = true;\r\n\r\n this.meteringStore.dispatch(\r\n new mpStore.LoadMeteringPointFunctionControls({\r\n masterMeteringPointId: this.meteringPoint.id,\r\n meteringPointId: this.containedMeteringPoint.id\r\n })\r\n );\r\n } \r\n }\r\n\r\n this.meteringPointsWithFunctionsControls$ = this.meteringStore.select(mpStore.getMeteringPointFunctionControls);\r\n this.subs.sink = this.meteringPointsWithFunctionsControls$.pipe(filter(x => !!x)).subscribe(mps => {\r\n \r\n // Master meteringPoint\r\n let filteredMp = mps.find(mp => mp.id === this.meteringPoint.id);\r\n\r\n if(filteredMp) {\r\n if(!this.isContainerMeteringPoint) {\r\n this.functionControls = filteredMp ? filteredMp.functionControls : [];\r\n } else {\r\n // Contained meteringPoint\r\n let filteredContainedMp = filteredMp.containedMeteringPoints.find(mp => mp.id === this.containedMeteringPoint.id);\r\n this.functionControls = filteredContainedMp ? filteredContainedMp.functionControls : [];\r\n }\r\n this.createLocalView();\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(): void {\r\n\r\n if (this.containedMeteringPoint && this.containedMeteringPoint.hasFunctionControl && this.containedMeteringPoint.functionControlsLoaded) {\r\n // Set already loaded Function-controls\r\n this.functionControls = this.containedMeteringPoint ? this.containedMeteringPoint.functionControls : [];\r\n }\r\n\r\n this.createLocalView();\r\n\r\n // Force the view to update\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n \r\n createLocalView() {\r\n\r\n if (!this.functionControls || this.functionControls.length === 0) {\r\n this.paginator.pageSize = this.pageSize;\r\n this.dataSource = new FunctionControlListingTableDataSource(\r\n this.paginator,\r\n this.sort,\r\n []\r\n );\r\n return;\r\n }\r\n\r\n this.paginator.pageSize = this.pageSize;\r\n this.dataSource = new FunctionControlListingTableDataSource(this.paginator, this.sort, this.functionControls);\r\n }\r\n\r\n onPagination(event: PageEvent) {\r\n this.currentPage = event.pageIndex;\r\n this.pageSize = event.pageSize;\r\n }\r\n\r\n\r\n getReportKey(functionControlId: number) {\r\n let ts = '' + new Date().getTime();\r\n let win = window.open('about:blank', ts);\r\n win.location.replace('/report-download.html?ts=' + ts);\r\n win['selfRef'] = win;\r\n\r\n let filename = 'Funktionskontroll-' + functionControlId + '-' + this.meteringPoint.id + '-' + this.replaceInvalidChars(this.meteringPoint.name);\r\n let timestamp = this.toLocalDate.transform(new Date(), 'YYYY-MM-dd');\r\n\r\n this.sxSnackbarService.openSnackBar(this.translate.instant('meteringpoints.info.downloading'), '');\r\n\r\n this.subs.sink = this.meteringPointService\r\n .createReportKey()\r\n .pipe(\r\n filter(x => !!x),\r\n take(1)\r\n )\r\n .subscribe(\r\n key => {\r\n let reportUrl = String.Format(\r\n '{0}/Reports/{1}/meteringpoints/{2}/functioncontrol/{3}/{4}_{5}',\r\n environment.apiEndpoint,\r\n key,\r\n this.meteringPoint.id,\r\n functionControlId,\r\n filename,\r\n timestamp\r\n );\r\n win.location.replace('/report-download.html?ts=' + ts + '&redir=' + encodeURIComponent(reportUrl));\r\n win['selfRef'] = win;\r\n win.focus();\r\n },\r\n () => {\r\n let errorUrl = String.Format('{0}/error', window.location.origin);\r\n win.location.href = errorUrl;\r\n win.focus();\r\n }\r\n );\r\n }\r\n\r\n replaceInvalidChars = s => {\r\n return s.replace(/[/\\\\?%*:|\"<>+]/g, '-');\r\n };\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","
\r\n \r\n\r\n \r\n {{'metering.item.functioncontrol.id' | translate}}\r\n \r\n {{'metering.item.functioncontrol.id' | translate}}:\r\n \r\n \r\n \r\n\r\n \r\n {{'metering.item.functioncontrol.performed' | translate}}\r\n \r\n \r\n {{'metering.item.functioncontrol.performed' | translate}}:\r\n {{row.performed}}\r\n \r\n \r\n\r\n \r\n {{'metering.item.functioncontrol.notes' | translate}}\r\n \r\n \r\n {{'metering.item.functioncontrol.notes' | translate}}:\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n","import { DataSource } from '@angular/cdk/collections';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { map } from 'rxjs/operators';\r\nimport { Observable, merge, BehaviorSubject, of } from 'rxjs';\r\nimport { MeteringPointFunctionControl } from 'app/models/metering-point-function-control';\r\n\r\n/**\r\n * Data source for the InvoicesTable view. This class should\r\n * encapsulate all logic for fetching and manipulating the displayed data\r\n * (including sorting, pagination, and filtering).\r\n */\r\nexport class FunctionControlListingTableDataSource extends DataSource {\r\n data: MeteringPointFunctionControl[] = [];\r\n _filterChange = new BehaviorSubject('');\r\n get filter(): string {\r\n return this._filterChange.value;\r\n }\r\n set filter(filter: string) {\r\n this._filterChange.next(filter.trim());\r\n }\r\n\r\n _filteredColumnChange = new BehaviorSubject([]);\r\n get filteredColumns(): string[] {\r\n return this._filteredColumnChange.value;\r\n }\r\n set filteredColumns(filteredColumns: string[]) {\r\n this._filteredColumnChange.next(filteredColumns);\r\n }\r\n\r\n private loadingSubject = new BehaviorSubject(false);\r\n public loading$ = this.loadingSubject.asObservable();\r\n\r\n filteredData: MeteringPointFunctionControl[] = [];\r\n renderedData: MeteringPointFunctionControl[] = [];\r\n\r\n constructor(\r\n private paginator: MatPaginator,\r\n private sort: MatSort,\r\n private staticData: MeteringPointFunctionControl[]\r\n ) {\r\n super();\r\n this.loadingSubject.next(true);\r\n\r\n of(this.staticData).subscribe(functionControls => {\r\n this.data = functionControls;\r\n this.data.length > 0 ? this.loadingSubject.next(false) : this.loadingSubject.next(true);\r\n });\r\n }\r\n\r\n connect(): Observable {\r\n // Set the paginators length\r\n this.paginator.length = this.data.length;\r\n\r\n return merge(of(this.staticData), this.paginator.page, this.sort.sortChange, this._filterChange).pipe(\r\n map(() => {\r\n // Filter data\r\n this.filteredData = this.data;\r\n\r\n // Sort filtered data\r\n const sortedData = this.getSortedData(this.filteredData.slice());\r\n\r\n // Grab the page's slice of the filtered sorted data.\r\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\r\n this.renderedData = sortedData.splice(startIndex, this.paginator.pageSize);\r\n return this.renderedData;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Sort the data (client-side). If you're using server-side sorting,\r\n * this would be replaced by requesting the appropriate data from the server.\r\n */\r\n private getSortedData(data: MeteringPointFunctionControl[]) {\r\n if (!this.sort.active || this.sort.direction === '') {\r\n return data;\r\n }\r\n\r\n return data.sort((a, b) => {\r\n const isAsc = this.sort.direction === 'asc';\r\n switch (this.sort.active) {\r\n case 'id':\r\n return compare(+a.id, +b.id, isAsc);\r\n case 'performed':\r\n return compare(a.performed, b.performed, isAsc);\r\n case 'notes':\r\n return compare(a.notes, b.notes, isAsc);\r\n default:\r\n return 0;\r\n }\r\n });\r\n }\r\n\r\n disconnect() {}\r\n}\r\n\r\n/** Simple sort comparator for example ID/Name columns (for client-side sorting). */\r\nfunction compare(a, b, isAsc) {\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n}\r\n","import { Component, OnInit, Input, OnDestroy, ChangeDetectorRef, OnChanges } from '@angular/core';\r\nimport { MeteringPoint, Information } from '@model';\r\nimport { Observable } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { PageType } from '@enums';\r\nimport { Store } from '@ngrx/store';\r\nimport * as fromStore from '@core/store';\r\nimport * as fromProductsStore from '@appStore/products';\r\nimport * as fromMeteringPointStore from '@appStore/metering-points';\r\nimport { map } from 'rxjs/operators';\r\nimport { environment } from '@environment';\r\nimport { SubSink } from 'subsink';\r\nimport { MatSelectChange } from '@angular/material/select';\r\nimport { MeteringPointFunctionControl } from 'app/models/metering-point-function-control';\r\n\r\n@Component({\r\n selector: 'app-metering-point-function-control-pane',\r\n templateUrl: './metering-point-function-control-pane.component.html',\r\n standalone: false\r\n})\r\nexport class MeteringPointFunctionControlPaneComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input()\r\n meteringPoint: MeteringPoint;\r\n\r\n information$: Observable;\r\n isProductAvailable = false;\r\n private subs = new SubSink();\r\n\r\n containedHasFunctionControls = false;\r\n selectedMeteringPoint: MeteringPoint;\r\n functionControls: MeteringPointFunctionControl[];\r\n\r\n // functionControls: Observable;\r\n\r\n constructor(private router: Router,\r\n private informationStore: Store,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private meteringPointStore: Store,\r\n private productsStore: Store) {}\r\n\r\n ngOnInit() {\r\n\r\n this.containedHasFunctionControls = this.meteringPoint?.containedMeteringPoints.some(meteringPoint => meteringPoint.hasFunctionControl); \r\n \r\n if (this.meteringPoint.type !== 'LOG') {\r\n this.selectedMeteringPoint = this.meteringPoint;\r\n }\r\n\r\n this.information$ = this.informationStore\r\n .select(fromStore.getInformation)\r\n .pipe(\r\n map(infos =>\r\n infos?.informations.find(\r\n info =>\r\n info.key !== null &&\r\n info.key.toLowerCase() ===\r\n (this.meteringPoint.hasFunctionControl || this.containedHasFunctionControls\r\n ? PageType.MeteringPointDetailsHaveFunctionProtocol.toLowerCase()\r\n : PageType.MeteringPointDetailsDontHaveFunctionProtocol.toLowerCase())\r\n )\r\n )\r\n );\r\n\r\n this.subs.sink = this.productsStore.select(fromProductsStore.getAllProducts).subscribe((productCategories) => {\r\n if (productCategories) {\r\n productCategories.forEach(productCategory => {\r\n let fcProducts = productCategory.products.filter(\r\n product => product.productNumber === environment.functionControlProductCode\r\n );\r\n if (fcProducts && fcProducts.length > 0) {\r\n this.isProductAvailable = true;\r\n }\r\n });\r\n }\r\n });\r\n\r\n\r\n if (this.meteringPoint.type === 'LOG' && this.containedHasFunctionControls) {\r\n\r\n this.selectedMeteringPoint = this.meteringPoint.containedMeteringPoints[0];\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (!this.meteringPoint) {\r\n return;\r\n }\r\n \r\n if (this.meteringPoint.type !== 'LOG' && this.meteringPoint.functionControlsLoaded && this.meteringPoint.functionControls) {\r\n this.selectedMeteringPoint = this.meteringPoint;\r\n this.functionControls = this.meteringPoint.functionControls.map(x => ({\r\n ...x\r\n }));\r\n \r\n this.changeDetectorRef.detectChanges();\r\n\r\n } else if (\r\n this.meteringPoint.type === 'LOG' &&\r\n this.containedHasFunctionControls &&\r\n this.selectedMeteringPoint &&\r\n this.selectedMeteringPoint.functionControlsLoaded\r\n ) {\r\n this.functionControls = this.selectedMeteringPoint.functionControls.map(x => ({\r\n ...x\r\n }));\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n subMeteringPointChanged = (event: MatSelectChange) => {\r\n \r\n this.selectedMeteringPoint = this.meteringPoint.containedMeteringPoints.find(x => x.id === event.value);\r\n \r\n if (this.selectedMeteringPoint.hasFunctionControl && \r\n !this.selectedMeteringPoint.functionControlsLoaded && \r\n !this.selectedMeteringPoint.functionControlsLoading) {\r\n this.meteringPointStore.dispatch(\r\n new fromMeteringPointStore.LoadMeteringPointFunctionControls({\r\n masterMeteringPointId: this.meteringPoint.id,\r\n meteringPointId: this.selectedMeteringPoint.id\r\n })\r\n );\r\n } \r\n\r\n if (this.selectedMeteringPoint.hasFunctionControl && \r\n !this.selectedMeteringPoint.functionControlContractLoaded && \r\n !this.selectedMeteringPoint.functionControlContractLoading) {\r\n this.meteringPointStore.dispatch(\r\n new fromMeteringPointStore.LoadMeteringPointFunctionControlContract({\r\n masterMeteringPointId: this.meteringPoint.id,\r\n meteringPointId: this.selectedMeteringPoint.id\r\n })\r\n );\r\n } \r\n\r\n\r\n this.changeDetectorRef.detectChanges();\r\n };\r\n\r\n goToOrder = () => {\r\n this.router.navigate([`/secure/products/functioncontrol/${this.meteringPoint.id}`]);\r\n };\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n

{{ (information$ | async).title }}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n

{{'metering.item.functioncontrol.title_performed'|translate}}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
{{'metering.item.metering.selected-mp'|translate}}
\r\n \r\n \r\n \r\n {{y.name}} ({{y.id}})\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

{{'metering.item.functioncontrol.title_performed'|translate}}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { MeteringPoint } from '@model';\r\n\r\n@Component({\r\n selector: 'app-metering-point-logical-pane',\r\n templateUrl: './metering-point-logical-pane.component.html',\r\n standalone: false\r\n})\r\nexport class MeteringPointLogicalPaneComponent implements OnInit {\r\n @Input()\r\n meteringPoint: MeteringPoint;\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n}\r\n","
\r\n
\r\n

{{'metering.item.logical.title'|translate}}

\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{{meteringPoint.name}}

\r\n
{{'meteringpoints.card.id' | translate}} {{meteringPoint.id}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {{meteringPoint.addresses[0]!.street}} {{meteringPoint.addresses[0]!.streetNo}}\r\n
{{meteringPoint.addresses[0]!.zip}} {{meteringPoint.addresses[0]!.city | titlecase}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {{ \"disruptions.ongoing-planned-disruption\" | translate }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {{ \"disruptions.ongoing-unplanned-disruption\" | translate }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{'meteringpoints.card.hasIntelligy'\r\n | translate}}\r\n
\r\n
\r\n {{'meteringpoints.card.functionControl' | translate}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { DataSource } from '@angular/cdk/table';\r\nimport { MeteringPointReadingPoint } from '@model';\r\nimport { BehaviorSubject, Observable, merge, of } from 'rxjs';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { map } from 'rxjs/operators';\r\nimport dayjs from 'dayjs';\r\n\r\nexport class MeteringPointMeteringPaneDataSource extends DataSource {\r\n data: MeteringPointReadingPoint[] = [];\r\n\r\n private loadingSubject = new BehaviorSubject(false);\r\n public loading$ = this.loadingSubject.asObservable();\r\n\r\n renderedData: MeteringPointReadingPoint[] = [];\r\n\r\n constructor(private paginator: MatPaginator, private sort: MatSort, private staticData: MeteringPointReadingPoint[]) {\r\n super();\r\n this.loadingSubject.next(true);\r\n\r\n of(this.staticData).subscribe(reads => {\r\n this.data = reads;\r\n this.data.length > 0 ? this.loadingSubject.next(false) : this.loadingSubject.next(true);\r\n });\r\n }\r\n\r\n connect(): Observable {\r\n // Set the paginators length\r\n this.paginator.length = this.data.length;\r\n \r\n return merge(of(this.staticData), this.paginator.page, this.sort.sortChange).pipe(\r\n map(() => {\r\n // Sort filtered data\r\n const sortedData = this.getSortedData(this.data.slice());\r\n\r\n // Grab the page's slice of the filtered sorted data.\r\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\r\n this.renderedData = sortedData.splice(startIndex, this.paginator.pageSize);\r\n return this.renderedData;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Sort the data (client-side). If you're using server-side sorting,\r\n * this would be replaced by requesting the appropriate data from the server.\r\n */\r\n private getSortedData(data: MeteringPointReadingPoint[]) {\r\n if (!this.sort.active || this.sort.direction === '') {\r\n return data;\r\n }\r\n\r\n return data.sort((a, b) => {\r\n const isAsc = this.sort.direction === 'asc';\r\n switch (this.sort.active) {\r\n case 'timestamp':\r\n return this.compare(+dayjs(a.timeStamp), +dayjs(b.timeStamp), isAsc);\r\n case 'quantity':\r\n return this.compare(a.quantity, b.quantity, isAsc);\r\n case 'statusName':\r\n return this.compare(a.statusName, b.statusName, isAsc);\r\n default:\r\n return 0;\r\n }\r\n });\r\n }\r\n\r\n disconnect() {}\r\n\r\n compare(a, b, isAsc) {\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n}\r\n","import { Component, OnInit, Input, OnChanges, ChangeDetectorRef, ViewChild, OnDestroy } from '@angular/core';\r\nimport { MeteringPoint, MeteringPointReadingPoint, MeterReadingsExportParameters } from '@model';\r\nimport { Store } from '@ngrx/store';\r\nimport * as fromStore from '@appStore/metering-points';\r\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSelectChange } from '@angular/material/select';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { DatePeriodType } from '@enums';\r\nimport { MeteringPointMeteringPaneDataSource } from './metering-point-metering-pane.datasource';\r\nimport { MeteringPointService } from '@appStore/metering-points/services';\r\nimport { SxExportService } from '@services';\r\nimport { SubSink } from 'subsink';\r\nimport { ToLocalDateTimePipe } from '@utils/pipes/to-local-date-time.pipe';\r\n\r\n@Component({\r\n selector: 'app-metering-point-metering-pane',\r\n templateUrl: './metering-point-metering-pane.component.html',\r\n standalone: false\r\n})\r\nexport class MeteringPointMeteringPaneComponent implements OnInit, OnDestroy, OnChanges {\r\n @Input()\r\n meteringPoint: MeteringPoint;\r\n\r\n @ViewChild(MatPaginator, { static: true })\r\n paginator: MatPaginator;\r\n\r\n @ViewChild(MatSort, { static: true })\r\n sort: MatSort;\r\n\r\n isExporting = false;\r\n\r\n dataSource: MeteringPointMeteringPaneDataSource;\r\n\r\n readings: MeteringPointReadingPoint[] = [];\r\n displayColumns = ['timestamp', 'quantity', 'statusName'];\r\n\r\n selectedMeteringPoint: MeteringPoint;\r\n datePeriodType: DatePeriodType = DatePeriodType.Day;\r\n\r\n private subs = new SubSink();\r\n\r\n constructor(\r\n private store: Store,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private meteringPointService: MeteringPointService,\r\n private translateService: TranslateService,\r\n private exportService: SxExportService,\r\n private toLocalDate: ToLocalDateTimePipe\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.dataSource = new MeteringPointMeteringPaneDataSource(this.paginator, this.sort, this.readings);\r\n\r\n if (!this.meteringPoint) {\r\n return;\r\n }\r\n // Test\r\n if (this.meteringPoint.type !== 'LOG') {\r\n this.selectedMeteringPoint = this.meteringPoint;\r\n }\r\n\r\n if (\r\n this.meteringPoint.type !== 'LOG' &&\r\n !this.meteringPoint.readingsLoaded &&\r\n !this.meteringPoint.readingsLoading\r\n ) {\r\n this.store.dispatch(\r\n new fromStore.LoadMeteringPointReadingData({\r\n masterMeteringPointId: this.meteringPoint.id,\r\n meteringPointId: this.meteringPoint.id,\r\n resolution: DatePeriodType.Day\r\n })\r\n );\r\n }\r\n\r\n if (\r\n this.meteringPoint.type === 'LOG' &&\r\n this.meteringPoint.containedMeteringPoints &&\r\n this.meteringPoint.containedMeteringPoints.length > 0\r\n ) {\r\n this.selectedMeteringPoint = this.meteringPoint.containedMeteringPoints[0];\r\n\r\n if (!this.selectedMeteringPoint.readingsLoaded && !this.selectedMeteringPoint.readingsLoading) {\r\n this.store.dispatch(\r\n new fromStore.LoadMeteringPointReadingData({\r\n masterMeteringPointId: this.meteringPoint.id,\r\n meteringPointId: this.selectedMeteringPoint.id,\r\n resolution: DatePeriodType.Day\r\n })\r\n );\r\n } else {\r\n this.reloadTableData();\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (!this.meteringPoint) {\r\n return;\r\n }\r\n\r\n if (this.meteringPoint.type !== 'LOG' && this.meteringPoint.readingsLoaded && this.meteringPoint.readings) {\r\n this.selectedMeteringPoint = this.meteringPoint;\r\n this.readings = this.meteringPoint.readings.map(x => ({\r\n ...x,\r\n statusName: this.translateService.instant('metering.item.metering.statuses.status' + x.status)\r\n }));\r\n this.dataSource = new MeteringPointMeteringPaneDataSource(this.paginator, this.sort, this.readings);\r\n this.changeDetectorRef.detectChanges();\r\n } else if (\r\n this.meteringPoint.type === 'LOG' &&\r\n this.meteringPoint.containedMeteringPoints &&\r\n this.meteringPoint.containedMeteringPoints.length > 0 &&\r\n this.selectedMeteringPoint\r\n ) {\r\n this.reloadTableData();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n reloadTableData = () => {\r\n let subMp = this.meteringPoint.containedMeteringPoints.find(x => x.id === this.selectedMeteringPoint.id);\r\n if (subMp && subMp.readingsLoaded && subMp.readings) {\r\n this.selectedMeteringPoint = subMp;\r\n this.readings = this.selectedMeteringPoint.readings.map(x => ({\r\n ...x,\r\n statusName: this.translateService.instant('metering.item.metering.statuses.status' + x.status)\r\n }));\r\n this.dataSource = new MeteringPointMeteringPaneDataSource(this.paginator, this.sort, this.readings);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n };\r\n\r\n onPeriodChanged = (event: MatButtonToggleChange): void => {\r\n this.resetPaginator();\r\n this.datePeriodType = event.value;\r\n\r\n if (this.meteringPoint.type !== 'LOG') {\r\n this.store.dispatch(\r\n new fromStore.LoadMeteringPointReadingData({\r\n masterMeteringPointId: this.meteringPoint.id,\r\n meteringPointId: this.meteringPoint.id,\r\n resolution: event.value\r\n })\r\n );\r\n } else {\r\n this.selectedMeteringPoint = { ...this.selectedMeteringPoint, readingsLoading: true, readingsLoaded: false };\r\n this.store.dispatch(\r\n new fromStore.LoadMeteringPointReadingData({\r\n masterMeteringPointId: this.meteringPoint.id,\r\n meteringPointId: this.selectedMeteringPoint.id,\r\n resolution: event.value\r\n })\r\n );\r\n }\r\n };\r\n\r\n resetPaginator() {\r\n this.paginator.pageIndex = 0;\r\n }\r\n\r\n subMeteringPointChanged = (event: MatSelectChange) => {\r\n this.resetPaginator();\r\n this.selectedMeteringPoint = this.meteringPoint.containedMeteringPoints.find(x => x.id === event.value.id);\r\n\r\n if (this.selectedMeteringPoint) {\r\n if (!this.selectedMeteringPoint.readingsLoaded && !this.selectedMeteringPoint.readingsLoading) {\r\n this.store.dispatch(\r\n new fromStore.LoadMeteringPointReadingData({\r\n masterMeteringPointId: this.meteringPoint.id,\r\n meteringPointId: this.selectedMeteringPoint.id,\r\n resolution: DatePeriodType.Day\r\n })\r\n );\r\n } else {\r\n this.reloadTableData();\r\n }\r\n }\r\n };\r\n\r\n export = () => {\r\n let exportParameters = {\r\n meteringPointId: this.selectedMeteringPoint.id,\r\n masterMeteringPointId: this.meteringPoint.id,\r\n periodType: this.datePeriodType\r\n };\r\n\r\n this.isExporting = true;\r\n let timestamp = this.toLocalDate.transform(new Date(), 'YYYY-MM-dd_H-mm-ss');\r\n\r\n let fileName = 'Mätarställning_' + this.selectedMeteringPoint.id;\r\n if (this.datePeriodType === DatePeriodType.Day) {\r\n fileName += `_dygn_${timestamp}.xlsx`;\r\n }\r\n if (this.datePeriodType === DatePeriodType.Month) {\r\n fileName += `_månad_${timestamp}.xlsx`;\r\n }\r\n\r\n this.subs.sink = this.exportService.exportInFrame(\r\n this.meteringPointService.createReportKey(),\r\n (key: string) => this.meteringPointService.exportReadingsToExcel(key, exportParameters),\r\n () => {\r\n this.isExporting = false;\r\n this.changeDetectorRef.detectChanges();\r\n },\r\n fileName\r\n );\r\n };\r\n}\r\n","
\r\n
\r\n

{{'metering.item.metering.title'|translate}}

\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{'metering.item.metering.selected-period'|translate}}
\r\n \r\n {{\"metering.item.metering.period_month\"| translate}}\r\n {{\"metering.item.metering.period_day\"| translate}}\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
{{'metering.item.metering.selected-mp'|translate}}
\r\n \r\n \r\n \r\n {{y.name}} ({{y.id}})\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
0)\">\r\n \r\n\r\n \r\n \r\n {{'metering.item.metering.column-date' | translate}}\r\n \r\n {{'metering.item.metering.column-date' | translate}}:\r\n {{element.timeStamp | date: 'yyyy-MM-dd' : 'CET': 'sv'}} \r\n \r\n \r\n\r\n \r\n \r\n {{'metering.item.metering.column-meter' | translate}}\r\n \r\n {{'metering.item.metering.column-meter' | translate}}:\r\n {{element.quantity | number:'1.3-3': 'sv'}} {{'metering.item.metering.mwh' | translate}}\r\n \r\n \r\n\r\n \r\n \r\n {{'metering.item.metering.column-status' | translate}}\r\n \r\n {{'metering.item.metering.column-status' | translate}}:\r\n {{element.statusName}}\r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport * as fromStore from '@appStore/metering-points';\r\nimport * as fromCustomerStore from '@appStore/customers';\r\nimport * as fromAccountStore from '@appStore/account';\r\nimport * as fromContractsStore from '@appStore/contracts';\r\nimport * as fromAnalyzeStore from '@appStore/analyze';\r\nimport { Observable } from 'rxjs';\r\nimport { MeteringPoint, Customer, UserInfo, Contract, AnalyzePeriodData } from '@model';\r\nimport { filter, switchMap, map, take, tap } from 'rxjs/operators';\r\nimport * as combinedSelectors from '@appStore/metering-points/combined-selectors';\r\nimport { SubSink } from 'subsink';\r\nimport { AnalyzeSettingsType, DatePeriodType, MeteringType, UserType } from '@enums';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { MeteringPointTabType } from 'app/models/enums/metering-point-tab-type.enum';\r\n\r\n@Component({\r\n selector: 'app-metering-point-display',\r\n templateUrl: './metering-point-display.component.html',\r\n standalone: false\r\n})\r\nexport class MeteringPointDisplayComponent implements OnInit, OnDestroy {\r\n meteringPoint$: Observable;\r\n meteringPoints$: Observable;\r\n customer$: Observable;\r\n selectedIndex$: Observable;\r\n allMeteringPoints$: Observable;\r\n contract$: Observable;\r\n periodData$: Observable;\r\n\r\n private subs = new SubSink();\r\n hotMeteringPointsCount: number;\r\n coldMeteringPointsCount: number;\r\n allMeteringPointsCount: number;\r\n\r\n showRouterLink = true;\r\n selectedContractId: number;\r\n userInfo$: Observable;\r\n userType$: Observable;\r\n\r\n constructor(\r\n private store: Store,\r\n private customersStore: Store,\r\n private route: ActivatedRoute,\r\n private accountStore: Store,\r\n private contractStore: Store,\r\n private analyzeStore: Store,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.allMeteringPoints$ = this.store.select(fromStore.getMeteringPoints);\r\n this.userInfo$ = this.accountStore.select(fromAccountStore.getUserInfo);\r\n this.userType$ = this.accountStore.select(fromAccountStore.getUserType);\r\n this.subs.sink = this.allMeteringPoints$.pipe(filter(x => !!x)).subscribe(meteringPoints => {\r\n this.hotMeteringPointsCount = meteringPoints.filter(mp => mp.meteringType === MeteringType.Hot).length;\r\n this.coldMeteringPointsCount = meteringPoints.filter(mp => mp.meteringType === MeteringType.Cold).length;\r\n this.allMeteringPointsCount = this.hotMeteringPointsCount + this.coldMeteringPointsCount;\r\n\r\n if (this.allMeteringPointsCount === 1) {\r\n this.showRouterLink = false;\r\n }\r\n });\r\n\r\n this.meteringPoint$ = this.store.select(combinedSelectors.getSelectedMeteringPointWithGroups);\r\n\r\n this.meteringPoints$ = this.store.select(combinedSelectors.getMeteringPointsWithGroups);\r\n\r\n this.customer$ = this.meteringPoint$.pipe(\r\n filter(mp => !!mp),\r\n switchMap(mp =>\r\n this.customersStore.select(fromCustomerStore.getCustomers).pipe(\r\n filter(x => !!x && x.length > 0),\r\n map(c => c.find(cs => cs.id === mp.customerId))\r\n )\r\n )\r\n );\r\n\r\n this.contract$ = this.meteringPoint$.pipe(\r\n filter(mp => !!mp),\r\n switchMap(mp =>\r\n this.contractStore.select(fromContractsStore.getContracts).pipe(\r\n map(contracts => contracts.find(contract => contract.meteringPointId === mp.id)),\r\n tap((contract: Contract) => {\r\n if (!contract || !contract.isFullObject) {\r\n this.contractStore.dispatch(new fromContractsStore.ContractLoad(mp.id));\r\n }\r\n })\r\n )\r\n )\r\n );\r\n\r\n let allPeriodData$ = this.analyzeStore.select(fromAnalyzeStore.getAnalyzePeriodData);\r\n this.periodData$ = allPeriodData$.pipe(map(sets => sets.find(x => x.meteringType === MeteringType.Hot &&\r\n x.settingsType === AnalyzeSettingsType.Energy && x.period === DatePeriodType.Month)));\r\n\r\n this.subs.sink = this.route.params\r\n .pipe(\r\n filter(x => !!x),\r\n take(1)\r\n )\r\n .subscribe(params => {\r\n this.selectedContractId = params.contractId ? +params.contractId : null;\r\n let meteringPointId = params.mpId ? +params.mpId : null;\r\n\r\n // If deep linking to meteringpoint replace url for url matching to work in contextual help\r\n if (params?.tabType) {\r\n window.history.replaceState(null, '', '/secure/meteringpoints/' + meteringPointId);\r\n }\r\n });\r\n\r\n this.selectedIndex$ = this.store.select(fromStore.getSelectedMeteringPointTabIndex);\r\n\r\n this.configureSettingsFromRouteIfProvided();\r\n }\r\n\r\n onTabIndexChange = (ix: number) => {\r\n switch (ix) {\r\n case 0:\r\n this.store.dispatch(new fromStore.SelectTabIndexMeteringPoint(MeteringPointTabType.Details)); \r\n break;\r\n case 1:\r\n this.store.dispatch(new fromStore.SelectTabIndexMeteringPoint(MeteringPointTabType.Metering));\r\n break;\r\n case 2:\r\n this.store.dispatch(new fromStore.SelectTabIndexMeteringPoint(MeteringPointTabType.FunctionalControl));\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n configureSettingsFromRouteIfProvided(){\r\n let paramTabType = this.route.snapshot.paramMap.get('tabType')?.toLowerCase();\r\n\r\n if (paramTabType) {\r\n if (paramTabType === 'details') {\r\n this.store.dispatch(new fromStore.SelectTabIndexMeteringPoint(MeteringPointTabType.Details));\r\n } else if (paramTabType === 'metering') {\r\n this.store.dispatch(new fromStore.SelectTabIndexMeteringPoint(MeteringPointTabType.Metering));\r\n } else if (paramTabType === 'functionalcontrol') {\r\n this.store.dispatch(new fromStore.SelectTabIndexMeteringPoint(MeteringPointTabType.FunctionalControl));\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot } from '@angular/router';\r\n\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { Observable, of } from 'rxjs';\r\nimport * as fromStore from '@appStore/metering-points';\r\nimport * as fromInformationStore from '@core/store';\r\nimport * as fromProductsStore from '@appStore/products';\r\n\r\nimport { filter, take, switchMap } from 'rxjs/operators';\r\n\r\n\r\n@Injectable()\r\nexport class MeteringPointsSelectedGuard {\r\n constructor(\r\n private store: Store,\r\n private informationStore: Store,\r\n private productStore: Store\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot): Observable {\r\n let id = route.params['mpId'];\r\n\r\n this.productStore\r\n .select(fromProductsStore.getAllProducts)\r\n .pipe(\r\n filter(x => !x),\r\n take(1)\r\n )\r\n .subscribe(x => {\r\n this.store.dispatch(new fromProductsStore.ProductsLoad());\r\n });\r\n\r\n this.informationStore\r\n .select(fromInformationStore.getInformationLoaded)\r\n .pipe(\r\n filter(x => !x),\r\n take(1)\r\n )\r\n .subscribe(x => {\r\n this.informationStore.dispatch(new fromInformationStore.Load());\r\n });\r\n\r\n return this.store.select(fromStore.getMeteringPoints).pipe(\r\n filter(x => !!x && x.length > 0),\r\n switchMap(_ =>\r\n this.store.select(fromStore.getSelectedMeteringPoint).pipe(\r\n switchMap(mp => {\r\n if (mp) {\r\n\r\n return of(true);\r\n } else if (id && +id > 0) {\r\n this.store.dispatch(new fromStore.SelectMeteringPointById(+id));\r\n\r\n return of(true);\r\n }\r\n return of(false);\r\n })\r\n )\r\n )\r\n );\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { MeteringPointsGuard } from '@metering/guards/metering-point.guard';\r\nimport { MeteringPointsDisplayComponent, MeteringPointDisplayComponent } from '@metering/containers';\r\nimport { MeteringPointsSelectedGuard } from '@metering/guards/metering-point-selected.guard';\r\n\r\nconst routes: Routes = [\r\n { \r\n path: '',\r\n component: MeteringPointsDisplayComponent,\r\n canActivate: [MeteringPointsGuard],\r\n data: { name: 'MeteringPointsDisplayComponent' }\r\n },\r\n {\r\n path: 'disruptions',\r\n component: MeteringPointsDisplayComponent,\r\n canActivate: [MeteringPointsGuard],\r\n data: { name: 'MeteringPointsDisplayComponent' }\r\n },\r\n {\r\n path: 'groups',\r\n component: MeteringPointsDisplayComponent,\r\n canActivate: [MeteringPointsGuard],\r\n data: { name: 'MeteringPointsDisplayComponent' }\r\n },\r\n {\r\n path: ':mpId',\r\n component: MeteringPointDisplayComponent,\r\n canActivate: [MeteringPointsGuard, MeteringPointsSelectedGuard],\r\n data: { name: 'MeteringPointDisplayComponent' },\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: ':mpId/:tabType',\r\n component: MeteringPointDisplayComponent,\r\n canActivate: [MeteringPointsGuard, MeteringPointsSelectedGuard],\r\n data: { name: 'MeteringPointDisplayComponent' },\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: ':mpId/:contractId',\r\n component: MeteringPointDisplayComponent,\r\n canActivate: [MeteringPointsGuard, MeteringPointsSelectedGuard],\r\n data: { name: 'MeteringPointDisplayComponent' }\r\n }\r\n ];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class MeteringPointsRoutingModule {}\r\n","import { Input } from '@angular/core';\r\nimport { Component, OnInit, ViewEncapsulation, OnDestroy } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder } from '@angular/forms';\r\nimport { SearchFilterDataService } from '@appStore/metering-points/search-filter-data-service';\r\nimport { MeteringPointFilter } from '@model';\r\nimport { take, filter } from 'rxjs/operators';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-metering-points-filter-pane',\r\n templateUrl: './metering-points-filter-pane.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: false\r\n})\r\n// ---- Not used anywhere? ---- \r\nexport class MeteringPointsFilterPaneComponent implements OnInit, OnDestroy {\r\n @Input()\r\n isMobile: boolean;\r\n \r\n searchForm: UntypedFormGroup;\r\n searchFilter: MeteringPointFilter;\r\n\r\n private subs = new SubSink();\r\n\r\n constructor(private fb: UntypedFormBuilder, private filterData: SearchFilterDataService) {\r\n this.loadSearchFilter();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n loadSearchFilter() {\r\n this.subs.sink = this.filterData.currentSearchFilter\r\n .pipe(\r\n filter(x => !!x),\r\n take(1)\r\n )\r\n .subscribe(searchFilter => {\r\n // this.searchFilter = searchFilter;\r\n this.createForm();\r\n this.setupListeners();\r\n });\r\n }\r\n\r\n createForm() {\r\n this.searchForm = this.fb.group({\r\n searchPhrase: [this.searchFilter.searchPhrase],\r\n searchName: [this.searchFilter.searchName],\r\n searchClientName: [this.searchFilter.searchClientName],\r\n searchAddress: [this.searchFilter.searchAddress],\r\n searchGroupName: [this.searchFilter.searchGroupName],\r\n searchId: [this.searchFilter.searchId]\r\n });\r\n }\r\n\r\n setupListeners() {\r\n const searchPhraseListener$ = this.searchForm.controls['searchPhrase'].valueChanges;\r\n this.subs.sink = searchPhraseListener$.subscribe(searchPhrase =>\r\n this.updateSearchFilter((this.searchForm.value.searchPhrase = searchPhrase))\r\n );\r\n\r\n const searchNameListener$ = this.searchForm.controls['searchName'].valueChanges;\r\n this.subs.sink = searchNameListener$.subscribe(searchName =>\r\n this.updateSearchFilter((this.searchForm.value.searchName = searchName))\r\n );\r\n\r\n const searchClientNameListener$ = this.searchForm.controls['searchClientName'].valueChanges;\r\n this.subs.sink = searchClientNameListener$.subscribe(searchClientName =>\r\n this.updateSearchFilter((this.searchForm.value.searchClientName = searchClientName))\r\n );\r\n\r\n const searchAddressListener$ = this.searchForm.controls['searchAddress'].valueChanges;\r\n this.subs.sink = searchAddressListener$.subscribe(searchAddress =>\r\n this.updateSearchFilter((this.searchForm.value.searchAddress = searchAddress))\r\n );\r\n\r\n const searchGroupNameListener$ = this.searchForm.controls['searchGroupName'].valueChanges;\r\n this.subs.sink = searchGroupNameListener$.subscribe(searchGroupName =>\r\n this.updateSearchFilter((this.searchForm.value.searchGroupName = searchGroupName))\r\n );\r\n\r\n const searchIdListener$ = this.searchForm.controls['searchId'].valueChanges;\r\n this.subs.sink = searchIdListener$.subscribe(searchId =>\r\n this.updateSearchFilter((this.searchForm.value.searchId = searchId))\r\n );\r\n }\r\n\r\n updateSearchFilter(newValue: any) {\r\n this.searchFilter = {\r\n searchPhrase: this.searchForm.value.searchPhrase,\r\n searchName: this.searchForm.value.searchName,\r\n searchClientName: this.searchForm.value.searchClientName,\r\n searchAddress: this.searchForm.value.searchAddress,\r\n searchGroupName: this.searchForm.value.searchGroupName,\r\n searchId: this.searchForm.value.searchId\r\n } as MeteringPointFilter;\r\n\r\n // this.filterData.pushSearchFilter(this.searchFilter);\r\n }\r\n}\r\n","\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n {{ \"meteringpoints.filter.search_phrase_name\" | translate }}\r\n {{ \"meteringpoints.filter.search_phrase_clientname\" | translate }}\r\n {{ \"meteringpoints.filter.search_phrase_address\" | translate }}\r\n {{ \"meteringpoints.filter.search_phrase_groupname\" | translate }}\r\n {{ \"meteringpoints.filter.search_phrase_id\" | translate }}\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import { Component, OnInit, Inject, ViewEncapsulation, OnDestroy } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MeteringPoint, MeteringPointAddress } from '@model';\r\nimport { environment } from '@environment';\r\nimport { MeteringPointType, MeteringType } from '@enums';\r\nimport { String } from 'typescript-string-operations';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { SubSink } from 'subsink';\r\nimport { SxSnackbarService } from '@services';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MeteringPointService } from '@appStore/metering-points/services';\r\nimport { DisruptionInfo } from 'app/models/disruptionInfo.model';\r\nimport { ToLocalDateTimePipe } from '@utils/pipes';\r\n\r\n@Component({\r\n selector: 'app-metering-point-info-dialog',\r\n templateUrl: './metering-point-info-dialog.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: false\r\n})\r\nexport class MeteringPointInfoDialogComponent implements OnInit, OnDestroy {\r\n meteringPoint: MeteringPoint;\r\n disruptionInfo: DisruptionInfo;\r\n customerName: string;\r\n isLogical: boolean;\r\n apiUrl: string;\r\n\r\n private subs = new SubSink();\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n private sxSnackbarService: SxSnackbarService,\r\n private translate: TranslateService,\r\n private meteringPointService: MeteringPointService,\r\n private toLocalDate: ToLocalDateTimePipe,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) {\r\n this.meteringPoint = data.selectedMeteringPoint;\r\n if (this.meteringPoint.disruptionInfos && this.meteringPoint.disruptionInfos.length > 0){\r\n this.disruptionInfo = this.meteringPoint.disruptionInfos.find(d => !d.isRestored);\r\n }\r\n this.customerName = data.customerName;\r\n this.apiUrl = environment.apiEndpoint;\r\n }\r\n\r\n ngOnInit() {\r\n this.isLogical = this.meteringPoint.type === MeteringPointType.Logical;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n onCancel(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n prettyPrintAddress(address: MeteringPointAddress) {\r\n return (\r\n address.street + ' ' + address.streetNo + ', ' + address.zip + ' ' + this.capitalizeFirstLetter(address.city)\r\n );\r\n }\r\n\r\n capitalizeFirstLetter(str: string) {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n\r\n getReport(meteringPointId: number) {\r\n let type = this.meteringPoint.meteringType === MeteringType.Hot ? 'Fjärrvärmerapport' : 'Fjärrkylarapport';\r\n let meteringPointName = this.meteringPoint.name;\r\n let filename = type + '-' + meteringPointId + '-' + this.capitalize(meteringPointName);\r\n let timestamp = this.toLocalDate.transform(new Date(), 'YYYY-MM-dd');\r\n\r\n let ts = '' + new Date().getTime();\r\n let win = window.open('about:blank', ts);\r\n win.location.replace('/report-download.html?ts=' + ts);\r\n win['selfRef'] = win;\r\n\r\n this.sxSnackbarService.openSnackBar(this.translate.instant('meteringpoints.info.downloading_report'), '');\r\n this.subs.sink = this.meteringPointService\r\n .createReportKey()\r\n .pipe(\r\n filter(x => !!x),\r\n take(1)\r\n )\r\n .subscribe(key => {\r\n let reportUrl = String.Format(\r\n '{0}/Reports/{1}/meteringpoints/{2}/summaryreport/{3}_{4}',\r\n this.apiUrl,\r\n key,\r\n meteringPointId,\r\n filename,\r\n timestamp\r\n );\r\n win.location.replace('/report-download.html?ts=' + ts + '&redir=' + encodeURIComponent(reportUrl));\r\n win['selfRef'] = win;\r\n });\r\n }\r\n\r\n capitalize = s => {\r\n if (typeof s !== 'string') {\r\n return '';\r\n }\r\n return s.charAt(0).toUpperCase() + s.slice(1);\r\n };\r\n}\r\n","
\r\n
\r\n \r\n\r\n
\r\n

{{ meteringPoint.name }}

\r\n
{{'meteringpoints.info.id' | translate}} {{ meteringPoint.id }}
\r\n
\r\n\r\n
\r\n {{'meteringpoints.info.property_data_label' | translate}}\r\n
\r\n\r\n
\r\n\r\n
\r\n
{{'meteringpoints.info.disruption_label' | translate}}
\r\n
{{'disruptions.no_restore_information_label' |\r\n translate}}
\r\n
{{'disruptions.restore_information_label' |\r\n translate}} {{disruptionInfo.estimatedRestoreTime | date: 'HH:mm, d MMMM yyyy'}}
\r\n
\r\n\r\n\r\n
\r\n
{{'meteringpoints.info.customer_label' | translate}}
\r\n
{{ customerName }}
\r\n
\r\n\r\n
\r\n
{{'meteringpoints.info.address_label' | translate}}
\r\n
{{ meteringPoint.addresses && meteringPoint.addresses.length > 0 ?\r\n prettyPrintAddress(meteringPoint.addresses[0])\r\n : ''}}
\r\n
\r\n\r\n
\r\n
{{'meteringpoints.info.category_label' | translate}}
\r\n
{{ meteringPoint.category }}
\r\n
\r\n\r\n
\r\n
{{'meteringpoints.info.area_label' | translate}}
\r\n
{{ meteringPoint.area }} m\r\n 2\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n {{'meteringpoints.info.logic_label' | translate}}\r\n
\r\n
\r\n
\r\n
{{ child.name }}
\r\n
{{ meteringPoint.addresses && meteringPoint.addresses.length > 0 ? prettyPrintAddress(child.addresses[0])\r\n :\r\n ''}}
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\r\n\r\nimport { MeteringPointsRoutingModule } from '@metering/metering-points-routing.module';\r\nimport { MeteringPointsGuard } from '@metering/guards/metering-point.guard';\r\nimport { MeteringPointsSelectedGuard } from '@metering/guards/metering-point-selected.guard';\r\nimport { MeteringPointsStoreModule } from '@appStore/metering-points';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport * as fromComponents from '@metering/components';\r\nimport * as fromContainers from '@metering/containers';\r\n\r\nimport { MaterialModule } from '@material';\r\nimport { CoreModule } from '@core/core.module';\r\nimport { MeteringPointsFilterPaneComponent } from '@metering/components/metering-points-filter-pane/metering-points-filter-pane.component';\r\nimport { SearchFilterDataService } from '@appStore/metering-points/search-filter-data-service';\r\nimport { MeteringGroupDialogComponent } from '@metering/components/metering-group-dialog/metering-group-dialog.component';\r\nimport { FunctionControlListingComponent } from '@metering/components/function-control-listing/function-control-listing.component';\r\nimport { MeteringPointItemPaneComponent } from '@metering/components/metering-point-item-pane/metering-point-item-pane.component';\r\n// tslint:disable-next-line: max-line-length\r\nimport { MeteringPointFunctionControlPaneComponent } from '@metering/components/metering-point-function-control-pane/metering-point-function-control-pane.component';\r\nimport { MeteringPointLogicalPaneComponent } from '@metering/components/metering-point-logical-pane/metering-point-logical-pane.component';\r\nimport { MeteringPointMeteringPaneComponent } from '@metering/components/metering-point-metering-pane/metering-point-metering-pane.component';\r\nimport { DirectivesModule, RouterLinkDirective, SelectedTabDirective, AutoFocusDirective } from '@utils/directives';\r\nimport { PipesModule } from '@utils/pipes';\r\n\r\n@NgModule({\r\n imports: [\r\n CoreModule,\r\n CommonModule,\r\n MeteringPointsStoreModule,\r\n MeteringPointsRoutingModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n MaterialModule,\r\n TranslateModule,\r\n DirectivesModule,\r\n PipesModule\r\n ],\r\n providers: [\r\n MeteringPointsGuard,\r\n MeteringPointsSelectedGuard,\r\n { provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: { hasBackdrop: false } },\r\n MeteringPointsFilterPaneComponent,\r\n SearchFilterDataService,\r\n RouterLinkDirective,\r\n SelectedTabDirective\r\n ],\r\n declarations: [\r\n ...fromContainers.containers,\r\n ...fromComponents.components,\r\n MeteringGroupDialogComponent,\r\n FunctionControlListingComponent,\r\n MeteringPointItemPaneComponent,\r\n MeteringPointFunctionControlPaneComponent,\r\n MeteringPointLogicalPaneComponent,\r\n MeteringPointMeteringPaneComponent\r\n ]\r\n})\r\nexport class MeteringPointsModule {}\r\n"],"mappings":"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","names":["require_duration","__commonJSMin","exports","module","s","n","i","e","r","o","u","d","a","h","c","t","g","f","m","l","$","y","v","p","MeteringPointsGuard","constructor","store","canActivate","route","id","params","select","getMeteringPointsLoaded","pipe","filter","x","take","subscribe","dispatch","LoadMeteringPoints","fromDate","localStorage","getItem","Date","LoadMeteringPointsDisruptions","loaded","isNaN","LoadMeteringPointIntelligyStatus","getCustomersLoaded","CustomersLoadData","getMeteringPointGroupsLoaded","LoadMeteringPointGroups","getSettingsLoaded","SettingLoad","of","ɵɵinject","Store","factory","ɵfac","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵtwoWayListener","$event","meteringGroup_r3","ɵɵrestoreView","_r2","$implicit","i0","ɵɵtwoWayBindingSet","selected","ɵɵresetView","ɵɵlistener","ctx_r3","ɵɵnextContext","selectionChange","ɵɵpropertyInterpolate1","i_r5","ɵɵtwoWayProperty","ɵɵproperty","name","meteringPoints","length","MeteringGroupFormComponent","constructor","store","dialogRef","data","newCounter","hasNoSelection","subs","SubSink","event","meteringGroupsView","filter","x","newGroupChange","addingNewGroup","groupNameField","nativeElement","focus","newGroupName","blur","meteringPointsToAdd","selectedMeteringPoints","meteringGroups$","select","getMeteringPointGroups","sink","pipe","subscribe","meteringGroups","mpg","meteringType","map","__spreadProps","__spreadValues","ngOnInit","ngOnDestroy","unsubscribe","onCancel","close","onSave","addNewGroup","groupsToUpdate","meteringGroup","forEach","group","mp","some","gmp","id","mps","dispatch","BulkUpdateMeteringPointGroups","setFocus","groupNameControlInvalid","newGroup","o","toLowerCase","trim","ɵɵdirectiveInject","Store","MatDialogRef","MAT_DIALOG_DATA","selectors","viewQuery","rf","ctx","ɵɵtemplate","MeteringGroupFormComponent_div_6_Template","_r1","ɵɵelement","MeteringGroupFormComponent_div_27_Template","ɵɵpipeBind2","ɵɵpureFunction1","_c1","_c2","ɵɵtextInterpolate1","ɵɵpropertyInterpolate","MeteringpointPaneTableDataSource","DataSource","filter","_filterChange","value","next","trim","filteredColumns","_filteredColumnChange","constructor","paginator","sort","staticData","data","BehaviorSubject","loadingSubject","loading$","asObservable","renderedData","of","subscribe","invoices","length","connect","merge","page","sortChange","pipe","map","sortedData","getSortedData","slice","startIndex","pageIndex","pageSize","splice","active","direction","a","b","isAsc","compare","id","name","addresses","street","grA","parentGroups","grB","disconnect","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵlistener","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","toggleView","ɵɵpropertyInterpolate1","paneType","ɵɵpropertyInterpolate","ɵɵpipeBind1","_r4","_r6","createVirtualGroup","ɵɵtext","ɵɵproperty","selectedMeteringPointIds","length","ɵɵpureFunction1","_c2","selectedMeteringPoints","ɵɵadvance","ɵɵtextInterpolate","_r7","removeVirtualGroup","ɵɵtemplate","MeteringPointsPaneComponent_div_19_button_1_Template","MeteringPointsPaneComponent_div_19_button_2_Template","_r5","createNewGroup","toggleAllVisible","virtualGroupActivated","tableView","customersWithMeteringPointsViewLoaded","ɵɵelementContainerStart","MeteringPointsPaneComponent_div_22_section_1_div_10_div_22_ng_container_1_Template","MeteringPointsPaneComponent_div_22_section_1_div_10_div_22_ng_container_2_Template","MeteringPointsPaneComponent_div_22_section_1_div_10_div_22_ng_container_3_Template","filterDisruption","meteringPoint_r11","disruptionInfos","disturbanceType","DisturbanceTypeEnum","Delivery","isPlanned","ɵɵtextInterpolate1","parentGroup_r12","name","MeteringPointsPaneComponent_div_22_section_1_div_10_ng_container_27_div_1_Template","parentGroups","_r10","$implicit","viewInformation","id","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","selected","onMeteringPointCheckboxClick","onSelectCardMeteringPoint","MeteringPointsPaneComponent_div_22_section_1_div_10_div_22_Template","MeteringPointsPaneComponent_div_22_section_1_div_10_div_24_Template","MeteringPointsPaneComponent_div_22_section_1_div_10_div_25_Template","MeteringPointsPaneComponent_div_22_section_1_div_10_div_26_Template","MeteringPointsPaneComponent_div_22_section_1_div_10_ng_container_27_Template","ɵɵpropertyInterpolate3","c_r14","m_r13","_c3","ɵɵtextInterpolate2","ɵɵtwoWayProperty","addresses","street","streetNo","zip","city","type","hasFunctionControl","hasIntelligy","customer_r9","_r8","panelOpened","panelClosed","MeteringPointsPaneComponent_div_22_section_1_div_10_Template","ɵɵpropertyInterpolate2","_expanded","meteringPoints","MeteringPointsPaneComponent_div_22_section_1_Template","customersWithMeteringPointsView","_r15","toggleAllItems","toggleAll","row_r17","_r16","selectTableMeteringPoint","row_r19","_r18","row_r20","customerName","row_r21","ɵɵtextInterpolate4","parentGroup_r22","MeteringPointsPaneComponent_mat_cell_40_ng_container_1_div_1_Template","row_r23","MeteringPointsPaneComponent_mat_cell_40_div_5__svg_svg_3_Template","MeteringPointsPaneComponent_mat_cell_40_div_5__svg_svg_6_Template","MeteringPointsPaneComponent_mat_cell_40_div_5__svg_svg_9_Template","MeteringPointsPaneComponent_mat_cell_40_ng_container_1_Template","MeteringPointsPaneComponent_mat_cell_40_div_2_Template","MeteringPointsPaneComponent_mat_cell_40_div_3_Template","MeteringPointsPaneComponent_mat_cell_40_div_4_Template","MeteringPointsPaneComponent_mat_cell_40_div_5_Template","containedMeteringPointsHasFunctionControl","MeteringPointsPaneComponent","constructor","sxDialogService","changeDetectorRef","filterData","sxPermissionService","store","accountStore","meteringPointService","exportService","scroller","routerService","fb","toLocalDate","meteringPointSelected","EventEmitter","DisturbanceTypeEnum","DisturbanceType","PermissionEnum","PermissionType","hasManageGroupPermission","isExporting","subs","SubSink","allMeteringPoints","tableView","toggleAll","displayedColumns","paginationInitialized","scrollPosition","createLocalView","customersWithMeteringPoints","length","meteringPointsCount","forEach","customer","paneType","MeteringType","Hot","meteringPointsHeat","Cold","meteringPointsCold","groupingEnabled","filteredCustomers","filterCustomers","customersWithMeteringPointsView","map","mapFromCustomer","customersWithMeteringPointsViewLoaded","paginator","pageSize","pageIndex","currentPage","dataSource","MeteringpointPaneTableDataSource","sort","flatMap","c","meteringPoints","setTableView","isAllSelected","detectChanges","customers","newCustomer","__spreadProps","__spreadValues","searchFilter","hotMeteringPointFilter","searchPhrase","filter","mp","filterMeteringPoint","a","b","sortMeteringPointsByName","coldMeteringPointFilter","push","selectedMeteringPointIds","some","smpId","id","containsCaseInsensitive","name","isMeteringPointInGroupByname","parentGroups","foundInAdresses","addresses","toString","filterString","address","street","streetNo","zip","city","pg","createNewGroup","selectedMeteringPoints","mpId","dialogRef","openDialog","MeteringGroupFormComponent","meteringType","sink","afterClosed","subscribe","result","virtualGroupActivated","toggleAllVisible","dispatch","ClearScrollPosition","createVirtualGroup","setSortAndPaging","ActivateVirtualGroup","FilterSettingUpdate","getVirtualFilter","userId","userInfo","filterArea","SetSelection","meteringPointIds","removeVirtualGroup","DeactivateVirtualGroup","FilterSettingReset","onSelectCardMeteringPoint","event","meteringPoint","selected","checked","selectMeteringPoint","selectedMpIds","x","filterId","filterType","MeteringFilterType","VirtualFilter","containsMeteringPointIds","subtitle","visible","reduce","concat","userSettings","currentFilter","getMeteringFilter","_expanded","customerName","hotMeteringFilter","coldMeteringFilter","HotLogical","hotLogicalMeteringFilter","ColdLogical","coldLogicalMeteringFilter","viewInformation","getScrollPosition","selectedMeteringPoint","index","find","emit","loadSearchFilter","currentSearchFilter","pipe","take","createForm","setupListeners","searchForm","group","initializeSearchForm","controls","setValue","searchPhraseListener$","valueChanges","doSearch","value","toggleAllItems","data","every","item","newValue","searchName","searchClientName","searchAddress","searchGroupName","searchId","pushSearchFilter","ngOnInit","hasUserManageMeteringPointGroupsPermission","debounceTime","SelectPageIndexHotMeteringPoint","active","direction","SelectPageIndexColdMeteringPoint","select","getSelectedHotMeteringPointsPageIndex","i","sortDirection","sortColumn","sortChange","getSelectedColdMeteringPointsPageIndex","filterDisruption","disruptions","di","isRestored","containedMeteringPointsHasFunctionControl","type","containedMeteringPoints","hasFunctionControl","onPagination","isMobile","meteringpointTableview","UserSettingOption","Active","Inactive","Notset","ngOnChanges","setTimeout","getPreviousUrl","includes","scrollToPosition","ngOnDestroy","unsubscribe","panelOpened","panelClosed","selectTableMeteringPoint","onMeteringPointCheckboxClick","stopPropagation","onExportToExcel","allMpIds","timestamp","transform","Date","exportInFrame","createReportKey","key","exportMeteringPointsToExcel","toggleView","tableViewSetting","newUserSettings","Unfiltered","SettingUpdate","ɵɵdirectiveInject","SxDialogService","ChangeDetectorRef","SearchFilterDataService","SxPermissionService","Store","MeteringPointService","SxExportService","ViewportScroller","SxRouterExtService","UntypedFormBuilder","ToLocalDateTimePipe","selectors","viewQuery","rf","ctx","MatPaginator","MatSort","ɵɵelementStart","ɵɵelement","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵelementEnd","ɵɵtemplate","MeteringPointsPaneComponent__svg_svg_16_Template","MeteringPointsPaneComponent_button_17_Template","MeteringPointsPaneComponent_button_18_Template","MeteringPointsPaneComponent_div_19_Template","MeteringPointsPaneComponent_div_21_Template","MeteringPointsPaneComponent_div_22_Template","ɵɵelementContainerStart","MeteringPointsPaneComponent_mat_header_cell_27_Template","MeteringPointsPaneComponent_mat_cell_28_Template","MeteringPointsPaneComponent_mat_header_cell_30_Template","MeteringPointsPaneComponent_mat_cell_31_Template","MeteringPointsPaneComponent_mat_header_cell_33_Template","MeteringPointsPaneComponent_mat_cell_34_Template","MeteringPointsPaneComponent_mat_header_cell_36_Template","MeteringPointsPaneComponent_mat_cell_37_Template","MeteringPointsPaneComponent_mat_header_cell_39_Template","MeteringPointsPaneComponent_mat_cell_40_Template","MeteringPointsPaneComponent_mat_header_row_41_Template","MeteringPointsPaneComponent_mat_row_42_Template","$event","ɵɵadvance","ɵɵproperty","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵpureFunction1","_c0","ɵɵpropertyInterpolate1","sortActive","ɵɵpureFunction0","_c1","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵtemplate","MeteringGroupDialogComponent_div_12_span_1_Template","ɵɵproperty","ctx_r0","groupNameControlInvalid","ɵɵlistener","meteringPoint_r3","ɵɵrestoreView","_r2","$implicit","ɵɵnextContext","ɵɵresetView","selectMeteringPoint","MeteringGroupDialogComponent_div_39_span_6_Template","ɵɵpropertyInterpolate1","i_r4","selected","searchAdresses","addressLabel","name","ɵɵtextInterpolate1","id","type","MeteringGroupDialogComponent","constructor","dialogRef","meteringStore","changeDetectorRef","store","data","keyUp","Subject","subs","SubSink","meteringPointsView","selectedMeteringPoints","keyUpMP","initNormalMpSubscription","sink","select","getMeteringPointsWithAdresses","subscribe","mps","meteringPoints","filter","mp","meteringType","map","__spreadProps","__spreadValues","foundInAdresses","addresses","filterString","address","containsCaseInsensitive","street","streetNo","length","pipe","event","target","value","debounceTime","distinctUntilChanged","selectedFilter","updateView","isValueSet","addingNewGroup","meteringGroups","some","o","toLowerCase","trim","newGroupName","ngOnInit","getMeteringPointGroups","x","take","mpgs","mpg","toString","detectChanges","ngOnDestroy","unsubscribe","onCancel","close","setFilterType","adressFilter","isAllMpsSelected","toggleAllMps","selectAll","meteringPoint","setSelectedMeteringPoint","isSelected","onSave","newGroup","dispatch","AddMeteringPointGroup","getAddMeteringPointGroupSuccess","switchMap","getAddedMeteringPointGroup","addedMpg","UpdateMeteringPointGroup","val","ɵɵdirectiveInject","MatDialogRef","Store","ChangeDetectorRef","MAT_DIALOG_DATA","selectors","standalone","decls","vars","consts","template","rf","ctx","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","next","MeteringGroupDialogComponent_div_12_Template","searchFilter","ɵɵelement","MeteringGroupDialogComponent_div_39_Template","ɵɵtwoWayProperty","ɵɵpropertyInterpolate","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵlistener","meteringPoint_r2","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","selectMeteringPoint","ɵɵtemplate","MeteringPointFormComponent_div_29_span_6_Template","ɵɵpropertyInterpolate1","i_r4","ɵɵproperty","selected","searchAdresses","addressLabel","name","ɵɵtextInterpolate1","id","type","MeteringPointFormComponent","constructor","meteringStore","dialogRef","changeDetectorRef","data","selectedMeteringPoints","subs","SubSink","keyUp","Subject","initNormalMpSubscription","sink","select","getMeteringPointsWithAdresses","subscribe","mps","meteringPoints","filter","mp","meteringType","existingMeteringPointIds","includes","map","__spreadProps","__spreadValues","meteringPointsView","foundInAdresses","addresses","filterString","address","containsCaseInsensitive","street","streetNo","length","pipe","event","target","value","debounceTime","distinctUntilChanged","selectedFilter","updateView","ngOnInit","searchFilter","meteringPointIds","ngOnDestroy","unsubscribe","toString","detectChanges","setFilterType","adressFilter","isAllMpsSelected","isNonGroupMpsSelected","meteringPoint","setSelectedMeteringPoint","isSelected","toggleAllMps","selectAll","onSave","close","onCancel","ɵɵdirectiveInject","Store","MatDialogRef","ChangeDetectorRef","MAT_DIALOG_DATA","selectors","standalone","decls","vars","consts","template","rf","ctx","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","next","ɵɵelement","MeteringPointFormComponent_div_29_Template","ɵɵtwoWayProperty","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","ɵɵlistener","ɵɵrestoreView","_r3","meteringPointGroup_r2","ɵɵnextContext","$implicit","ctx_r3","ɵɵresetView","cancelEditing","ɵɵtext","saveEditing","ɵɵpropertyInterpolate1","i_r6","ɵɵtextInterpolate1","name","length","unsavedChanges","_r7","removeGroup","editGroup","id","ɵɵpureFunction1","_c1","selected","meteringPoint_r10","_r9","selectMeteringPointToRemove","ɵɵpropertyInterpolate2","mp_r11","ɵɵpureFunction2","_c2","added","_r8","selectMeteringPoints","ɵɵtemplate","MeteringGroupPaneComponent_article_12_div_15_div_9_Template","ɵɵtextInterpolate","meteringPoints","ɵɵtwoWayListener","$event","_r1","i0","ɵɵtwoWayBindingSet","MeteringGroupPaneComponent_article_12_div_13_Template","MeteringGroupPaneComponent_article_12_div_14_Template","MeteringGroupPaneComponent_article_12_div_15_Template","_c0","ɵɵtextInterpolate2","ɵɵtwoWayProperty","MeteringGroupPaneComponent","constructor","sxDialogService","sxSnackbarService","translate","store","changeDetectorRef","accountStore","subs","SubSink","isEditing","ngOnInit","initiateView","ngOnChanges","ngOnDestroy","unsubscribe","pristineGroup","meteringPointGroupsView","meteringPointGroups","filter","mpg","meteringType","paneType","map","meteringPointGroup","__spreadProps","__spreadValues","mp","modified","some","x","newName","find","oldName","existingMeteringPointIds","getMeteringPointIds","dialogRef","openDialog","MeteringPointFormComponent","meteringPointIds","sink","afterClosed","subscribe","allSelectedMeteringPoint","detectChanges","mpIds","forEach","a","push","confirmDialog","instant","confirmed","isCurrentFilterGroup","openSnackBar","updateMeteringPointFilter","dispatch","RemoveMeteringPointGroup","addNewGroup","MeteringGroupDialogComponent","pipe","newGroup","UpdateMeteringPointGroup","userSettings","coldMeteringFilter","filterType","MeteringFilterType","MeteringPointGroup","filterId","hotMeteringFilter","newFilter","MeteringType","Cold","Unfiltered","Hot","SettingUpdate","userId","userInfo","filterArea","ɵɵdirectiveInject","SxDialogService","SxSnackbarService","TranslateService","Store","ChangeDetectorRef","selectors","inputs","standalone","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","MeteringGroupPaneComponent_div_11_Template","MeteringGroupPaneComponent_article_12_Template","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵpropertyInterpolate1","ɵɵpipeBind1","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","ɵɵtextInterpolate2","ɵɵpipeBind2","disruptionInfo_r6","startTime","estimatedRestoreTime","ɵɵtemplate","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_div_2_Template","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_div_3_Template","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_div_4_Template","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_div_5_Template","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_span_7_Template","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_span_8_Template","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_span_9_Template","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_span_10_Template","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_span_11_Template","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_span_12_Template","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_div_16_Template","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_div_19_Template","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_div_20_Template","ɵɵproperty","isRestored","disturbanceType","ctx_r2","DisturbanceTypeEnum","Delivery","isPlanned","ɵɵlistener","meteringPoint_r5","ɵɵrestoreView","_r4","$implicit","ɵɵnextContext","ɵɵresetView","viewInformation","MeteringPointsDisruptionsPaneComponent_section_3_div_10_div_18_Template","ɵɵpureFunction1","_c0","selected","ɵɵtextInterpolate","name","id","addresses","street","streetNo","zip","city","disruptionInfos","customer_r2","_r1","panelOpened","panelClosed","MeteringPointsDisruptionsPaneComponent_section_3_div_10_Template","_expanded","meteringPoints","MeteringPointsDisruptionsPaneComponent","constructor","customersWithMeteringPointDisruptionsView","meteringPointSelected","EventEmitter","DisturbanceTypeEnum","DisturbanceType","viewInformation","mp","emit","ngOnInit","createLocalView","ngOnChanges","customersWithDisruptions","length","forEach","cwd","push","id","meteringPoints","meteringPointsCold","meteringPointsHeat","name","_expanded","panelOpened","customer","some","c","map","item","panelClosed","selectors","inputs","outputs","standalone","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵtemplate","MeteringPointsDisruptionsPaneComponent_section_3_Template","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵproperty","ɵɵpipeBind1","ctx_r0","customersLoaded$","meteringPointsLoaded$","ɵɵadvance","ɵɵlistener","$event","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","onMeteringPointSelected","ɵɵpropertyInterpolate","userSettings$","userInfo$","selectedHotMeteringPoints$","activatedHotVirtualGroup$","customersWithMeteringPoints$","isMobile$","_r4","selectedColdMeteringPoints$","activatedColdVirtualGroup$","meteringPointGroups$","ɵɵtemplate","MeteringPointsDisplayComponent_mat_tab_group_7_mat_tab_14_mat_tab_7_Template","MeteringPointsDisplayComponent_mat_tab_group_7_mat_tab_14_mat_tab_8_Template","meteringPointGroupsLoaded$","ɵɵpureFunction1","_c1","numberOfMeteringTypes","hotMeteringPointsCount","coldMeteringPointsCount","_r2","fixTabs","onTabIndexChange","MeteringPointsDisplayComponent_mat_tab_group_7_mat_tab_12_Template","MeteringPointsDisplayComponent_mat_tab_group_7_mat_tab_13_Template","MeteringPointsDisplayComponent_mat_tab_group_7_mat_tab_14_Template","selectedTabIndex","selectTabIndex$","showMeteringPointGroups","allMeteringPointsCount","customersWithDisruptions$","length","MeteringPointsDisplayComponent","constructor","store","customersStore","accountStore","sxPermissionService","activatedRoute","router","breakpointObserver","countSet","plannedDisruptions","unPlannedDisruptions","subs","SubSink","setSelectedTab","__async","snapshot","url","path","delay","disruptionsLoaded","disruptions","disruptionsInfos","Array","forEach","d","disruptionInfos","isPlanned","ix","dispatch","SelectTabIndexMeteringPoints","ClearScrollPosition","selectedMp","SelectMeteringPoint","navigate","id","ngOnInit","select","getMeteringPointsWithDisruptions","subscribe","mps","getFilledCustomers","getCustomersLoaded","getFilledCustomersWithDisruptions","meteringPoints$","getMeteringPoints","getMeteringPointsLoaded","virtualGroup","getVirtualGroup","pipe","map","x","hotActivated","coldActivated","hot","cold","getFilledMeteringPointGroups","getMeteringPointGroupsLoaded","getFilledSettings","getUserInfo","getSelectedMeteringPointsTabIndex","securityTrimByUserType","UserType","Company","Brf","Manager","checkPermissions","PermissionType","ManageMeteringPointGroup","sink","filter","meteringPoints","hasHotMeteringPoints","find","m","meteringType","MeteringType","Hot","undefined","mp","hasColdMeteringPoints","Cold","relativeTo","replaceUrl","observe","result","matches","ms","Promise","resolve","setTimeout","ngOnDestroy","unsubscribe","event","fixInnerMatGroupTabs","ɵɵdirectiveInject","Store","SxPermissionService","ActivatedRoute","Router","BreakpointObserver","selectors","standalone","decls","vars","consts","template","rf","ctx","ɵɵtext","MeteringPointsDisplayComponent_div_5_Template","MeteringPointsDisplayComponent_mat_tab_group_7_Template","ɵɵtextInterpolate","_c0","import_dayjs","import_duration","ɵɵelement","ɵɵproperty","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction2","_c1","ctx_r0","co2CompensationCertificateYear","ɵɵpipeBind1","co2CompensationInTons","customer","name","meteringPoint","ɵɵtemplate","MeteringPointItemPaneComponent_div_58_app_spinner_6_Template","MeteringPointItemPaneComponent_div_58_div_7_Template","MeteringPointItemPaneComponent_div_58_div_8_Template","ɵɵtextInterpolate","isProcessing","co2CompensationCalculated","parentGroup_r2","MeteringPointItemPaneComponent_div_64_div_1_Template","parentGroups","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","displayAgreementSignPage","ɵɵpropertyInterpolate","insufficentPermissions","exportRequested","ɵɵclassProp","meteringpointInformationGroup","businessArea","MeteringPointItemPaneComponent","constructor","meteringPointService","agreementService","translate","sxSnackbarService","router","accountStore","meteringPointStore","analyzeStore","contractStore","sxDialogService","changeDetectorRef","sxPermissionService","exportService","store","toLocalDate","configStore","MeteringTypeEnum","MeteringType","meteringPointsCount","hasManageGroupPermission","hasManageAlarmsPermission","hasIntelligy","taxReturingMeteringpoint","isPrivate","ageOfCentralInYears","intelligyIcon","subs","SubSink","id","informations","expanded","clientIsIntelligyCompatible","hasClimateNeutralAddition","UserTypeEnum","UserType","PermissionEnum","PermissionType","goToAggrement","navigate","skipLocationChange","changeArea","alert","customerServiceEmailAddress","goToInvoices","userSettings","setMainFilter","goToAnalyze","meteringType","Hot","type","HotLogical","ColdLogical","Cold","analyzeSettings","__spreadValues","AnalyzePaneSettings","initalState","AnalyzeSettingsType","Energy","dispatch","AnalyzeUpdateSettings","goToAlarm","addToGroup","dialogRef","openDialog","MeteringGroupFormComponent","selectedMeteringPoints","sink","afterClosed","subscribe","result","openSnackBar","instant","currentFilter","hotLogicalMeteringFilter","hotMeteringFilter","coldLogicalMeteringFilter","coldMeteringFilter","subFilter","includedMeteringPoints","containedMeteringPoints","map","mp","selected","__spreadProps","filterType","MeteringFilterType","MeteringPoint","filterId","containsMeteringPointIds","x","subfilter","FilterSettingUpdate","filter","userId","userInfo","filterArea","meteringPoints","capitalize","s","charAt","toUpperCase","slice","replaceInvalidChars","replace","request","meteringPointId","toString","CreateTaxReturnAgreement","select","getTaxReturnAgreementCreated","pipe","created","take","isCreated","getTaxReturnAgreementCreatedId","agreementId","AgreementLinkLoad","getActiveAgreementLinkLoaded","loaded","detectChanges","openLinkInNewWindow","getActiveAgreementLink","isManager","userType","Manager","ngOnInit","dayjs","extend","duration","getFilledSettings","getApiConfiguration","apiConfig","appConfig","taxReturingMeteringpoints","industiralTaxMeteringpotins","split","some","intelligyCompatibleClients","includes","client_id","comCustomerServiceEmailAddress","co2CompensationKeyFigure","getContractAddition","securityTrim","undefined","SignServices","contract","customerId","meteringPointInformations$","getMeteringPointInformations","mInfo","key","InformationKey","MeteringpointInfoGeneric","MeteringpointInfoIntelligy","length","BusinessArea","periodData$","periodData","consumptionData","currentPeriodData","hasUserManageMeteringPointGroupsPermission","hasUserManageAlarmsPermission","Private","meteringPointName","calculateAge","matTooltipText","impersonatedAsName","years","latestConstructionDateStr","latestConstructionDate","toDate","startOf","numberOfdays","diff","asDays","Math","round","ngOnChanges","co2CompensationCertificateDateFrom","Date","co2CompensationCertificateDateTo","endOf","additionCodes","push","AdditionCodes","ClimateNeutral","HasContractAdditions","from","to","additions","getHasContractAdditionsLoaded","switchMap","getHasContractAdditions","hasAdditions","dateFrom","dateTo","unit","AnalyzeUnitType","Kwh","Mwh","getClimateCompensatedCO2","i","LoadClimateCompensatedCO2","resolution","DatePeriodType","Day","AnalyzeConsumptionType","compensationKeyFigure","getClimateCompensatedCO2Loaded","compensation","ngOnDestroy","unsubscribe","ClearClimateCompensatedCO2State","goToIntelligyPage","goToIntelligyApplication","SetIntelligyLogin","window","open","intelligyLoginUrl","getReport","filename","timestamp","transform","exportInNewWindow","createReportKey","ɵɵdirectiveInject","MeteringPointService","AgreementService","TranslateService","SxSnackbarService","Router","Store","SxDialogService","ChangeDetectorRef","SxPermissionService","SxExportService","ToLocalDateTimePipe","selectors","inputs","standalone","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","MeteringPointItemPaneComponent_hr_57_Template","MeteringPointItemPaneComponent_div_58_Template","MeteringPointItemPaneComponent_hr_59_Template","MeteringPointItemPaneComponent_div_63_Template","MeteringPointItemPaneComponent_div_64_Template","MeteringPointItemPaneComponent_div_119_Template","MeteringPointItemPaneComponent_div_133_Template","ɵɵtextInterpolate2","addresses","street","streetNo","zip","city","category","area","ɵɵpropertyInterpolate3","ɵɵpureFunction1","_c0","ɵɵsanitizeUrl","meteringpoint_show_intelligylinks","FunctionControlContractComponent","constructor","meteringStore","subs","SubSink","ngOnInit","meteringPoint","hasFunctionControl","containedMeteringPoint","functionControlContract","dispatch","LoadMeteringPointFunctionControlContract","masterMeteringPointId","id","meteringPointId","meteringPointsWithFunctionsControlContract$","select","getMeteringPointFunctionControlContract","sink","pipe","filter","x","subscribe","mps","filteredMp","find","mp","containedMeteringPointsWithFunctionsControlContract$","filteredContainedMp","containedMeteringPoints","ngOnChanges","functionControlContractLoaded","ɵɵdirectiveInject","Store","selectors","inputs","standalone","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","energyServiceName","import_typescript_string_operations","FunctionControlListingTableDataSource","DataSource","filter","_filterChange","value","next","trim","filteredColumns","_filteredColumnChange","constructor","paginator","sort","staticData","data","BehaviorSubject","loadingSubject","loading$","asObservable","filteredData","renderedData","of","subscribe","functionControls","length","connect","merge","page","sortChange","pipe","map","sortedData","getSortedData","slice","startIndex","pageIndex","pageSize","splice","active","direction","a","b","isAsc","compare","id","performed","notes","disconnect","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵlistener","row_r3","ɵɵrestoreView","_r2","$implicit","ctx_r3","ɵɵnextContext","ɵɵresetView","getReportKey","id","ɵɵelement","ɵɵtextInterpolate1","row_r5","performed","ɵɵproperty","row_r6","notes","ɵɵsanitizeHtml","ɵɵtemplate","FunctionControlListingComponent_mat_cell_11_span_4_Template","ɵɵpropertyInterpolate","FunctionControlListingComponent","constructor","meteringStore","sxSnackbarService","translate","meteringPointService","toLocalDate","changeDetectorRef","isContainerMeteringPoint","currentPage","displayedColumns","subs","SubSink","replaceInvalidChars","s","replace","sortActive","sortDirection","ngOnInit","meteringPoint","type","hasFunctionControl","functionControls","functionControlsLoaded","functionControlsLoading","selectedMeteringPoint","dispatch","LoadMeteringPointFunctionControls","masterMeteringPointId","meteringPointId","containedMeteringPoint","meteringPointsWithFunctionsControls$","select","getMeteringPointFunctionControls","sink","pipe","filter","x","subscribe","mps","filteredMp","find","mp","filteredContainedMp","containedMeteringPoints","createLocalView","ngOnChanges","detectChanges","length","paginator","pageSize","dataSource","FunctionControlListingTableDataSource","sort","onPagination","event","pageIndex","functionControlId","ts","Date","getTime","win","window","open","location","filename","name","timestamp","transform","openSnackBar","instant","createReportKey","take","key","reportUrl","String","Format","environment","apiEndpoint","encodeURIComponent","focus","errorUrl","origin","href","ngOnDestroy","unsubscribe","ɵɵdirectiveInject","Store","SxSnackbarService","TranslateService","MeteringPointService","ToLocalDateTimePipe","ChangeDetectorRef","selectors","viewQuery","rf","ctx","MatPaginator","MatSort","ɵɵelementContainerStart","FunctionControlListingComponent_mat_header_cell_4_Template","FunctionControlListingComponent_mat_cell_5_Template","FunctionControlListingComponent_mat_header_cell_7_Template","FunctionControlListingComponent_mat_cell_8_Template","FunctionControlListingComponent_mat_header_cell_10_Template","FunctionControlListingComponent_mat_cell_11_Template","FunctionControlListingComponent_mat_header_row_12_Template","FunctionControlListingComponent_mat_row_13_Template","$event","i0","_r1","FunctionControlListingComponent_div_16_Template","FunctionControlListingComponent_div_17_Template","data","ɵɵpureFunction0","_c0","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","goToOrder","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵelement","ɵɵtemplate","MeteringPointFunctionControlPaneComponent_div_1_div_7_Template","information$","title","ɵɵproperty","content","ɵɵsanitizeHtml","meteringPoint","hasFunctionControl","isProductAvailable","containedHasFunctionControls","y_r4","id","ɵɵtextInterpolate1","name","$event","_r3","subMeteringPointChanged","MeteringPointFunctionControlPaneComponent_div_4_mat_option_8_Template","selectedMeteringPoint","containedMeteringPoints","MeteringPointFunctionControlPaneComponent","constructor","router","informationStore","changeDetectorRef","meteringPointStore","productsStore","subs","SubSink","event","find","x","value","functionControlsLoaded","functionControlsLoading","dispatch","LoadMeteringPointFunctionControls","masterMeteringPointId","meteringPointId","functionControlContractLoaded","functionControlContractLoading","LoadMeteringPointFunctionControlContract","detectChanges","navigate","ngOnInit","some","type","select","getInformation","pipe","map","infos","informations","info","key","toLowerCase","PageType","MeteringPointDetailsHaveFunctionProtocol","MeteringPointDetailsDontHaveFunctionProtocol","sink","getAllProducts","subscribe","productCategories","forEach","productCategory","fcProducts","products","filter","product","productNumber","environment","functionControlProductCode","length","ngOnChanges","functionControls","__spreadValues","ngOnDestroy","unsubscribe","ɵɵdirectiveInject","Router","Store","ChangeDetectorRef","selectors","inputs","standalone","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","MeteringPointFunctionControlPaneComponent_div_1_Template","MeteringPointFunctionControlPaneComponent_div_3_Template","MeteringPointFunctionControlPaneComponent_div_4_Template","ɵɵelementContainerStart","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtext","ɵɵadvance","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵtextInterpolate","ɵɵtemplate","MeteringPointLogicalPaneComponent_div_7_div_18_ng_container_1_Template","MeteringPointLogicalPaneComponent_div_7_div_18_ng_container_2_Template","ɵɵproperty","meteringPoint_r1","disruptionInfo","isPlanned","ɵɵtextInterpolate1","MeteringPointLogicalPaneComponent_div_7_div_18_Template","MeteringPointLogicalPaneComponent_div_7_div_20_Template","MeteringPointLogicalPaneComponent_div_7_div_21_Template","ɵɵpureFunction1","_c0","selected","name","ɵɵtextInterpolate2","id","addresses","street","streetNo","zip","city","hasIntelligy","hasFunctionControl","MeteringPointLogicalPaneComponent","constructor","ngOnInit","selectors","inputs","meteringPoint","standalone","decls","vars","consts","template","rf","ctx","MeteringPointLogicalPaneComponent_div_7_Template","containedMeteringPoints","import_dayjs","MeteringPointMeteringPaneDataSource","DataSource","constructor","paginator","sort","staticData","data","loadingSubject","BehaviorSubject","loading$","asObservable","renderedData","next","of","subscribe","reads","length","connect","merge","page","sortChange","pipe","map","sortedData","getSortedData","slice","startIndex","pageIndex","pageSize","splice","active","direction","a","b","isAsc","compare","dayjs","timeStamp","quantity","statusName","disconnect","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","y_r2","ɵɵadvance","ɵɵtextInterpolate1","name","id","ɵɵelement","ctx_r2","meteringPoint","type","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵpropertyInterpolate1","i_r5","ɵɵpipeBind4","element_r4","timeStamp","i_r7","ɵɵtextInterpolate2","ɵɵpipeBind3","element_r6","quantity","i_r9","ɵɵtextInterpolate","element_r8","statusName","i_r10","MeteringPointMeteringPaneComponent","constructor","store","changeDetectorRef","meteringPointService","translateService","exportService","toLocalDate","isExporting","readings","displayColumns","datePeriodType","DatePeriodType","Day","subs","SubSink","reloadTableData","subMp","containedMeteringPoints","find","x","selectedMeteringPoint","readingsLoaded","map","__spreadProps","__spreadValues","instant","status","dataSource","MeteringPointMeteringPaneDataSource","paginator","sort","detectChanges","onPeriodChanged","event","resetPaginator","value","dispatch","LoadMeteringPointReadingData","masterMeteringPointId","meteringPointId","resolution","readingsLoading","subMeteringPointChanged","export","exportParameters","periodType","timestamp","transform","Date","fileName","Month","sink","exportInFrame","createReportKey","key","exportReadingsToExcel","ngOnInit","length","ngOnChanges","ngOnDestroy","unsubscribe","pageIndex","ɵɵdirectiveInject","Store","ChangeDetectorRef","MeteringPointService","TranslateService","SxExportService","ToLocalDateTimePipe","selectors","viewQuery","rf","ctx","MatPaginator","MatSort","ɵɵlistener","$event","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵtemplate","MeteringPointMeteringPaneComponent_mat_option_34_Template","MeteringPointMeteringPaneComponent_div_35_Template","MeteringPointMeteringPaneComponent_div_36_Template","ɵɵelementContainerStart","MeteringPointMeteringPaneComponent_mat_header_cell_40_Template","MeteringPointMeteringPaneComponent_mat_cell_41_Template","MeteringPointMeteringPaneComponent_mat_header_cell_43_Template","MeteringPointMeteringPaneComponent_mat_cell_44_Template","MeteringPointMeteringPaneComponent_mat_header_cell_46_Template","MeteringPointMeteringPaneComponent_mat_cell_47_Template","MeteringPointMeteringPaneComponent_mat_header_row_48_Template","MeteringPointMeteringPaneComponent_mat_row_49_Template","MeteringPointMeteringPaneComponent_div_52_Template","data","ɵɵpureFunction0","_c0","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtext","ɵɵproperty","ɵɵpureFunction0","_c0","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵpureFunction1","_c1","ctx_r0","selectedContractId","ɵɵtemplate","MeteringPointDisplayComponent_div_3_div_4_a_1_Template","MeteringPointDisplayComponent_div_3_div_4_a_2_Template","MeteringPointDisplayComponent_div_3_div_4_Template","meteringPoint$","name","showRouterLink","ɵɵpropertyInterpolate","userInfo$","ɵɵlistener","$event","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","onTabIndexChange","MeteringPointDisplayComponent_div_5_mat_tab_17_Template","selectedIndex$","userType$","meteringPoints$","customer$","contract$","periodData$","type","MeteringPointDisplayComponent","constructor","store","customersStore","route","accountStore","contractStore","analyzeStore","subs","SubSink","ix","dispatch","SelectTabIndexMeteringPoint","MeteringPointTabType","Details","Metering","FunctionalControl","ngOnInit","allMeteringPoints$","select","getMeteringPoints","getUserInfo","getUserType","sink","pipe","filter","x","subscribe","meteringPoints","hotMeteringPointsCount","mp","meteringType","MeteringType","Hot","length","coldMeteringPointsCount","Cold","allMeteringPointsCount","getSelectedMeteringPointWithGroups","getMeteringPointsWithGroups","switchMap","getCustomers","map","c","find","cs","id","customerId","getContracts","contracts","contract","meteringPointId","tap","isFullObject","ContractLoad","allPeriodData$","getAnalyzePeriodData","sets","settingsType","AnalyzeSettingsType","Energy","period","DatePeriodType","Month","params","take","contractId","mpId","tabType","window","history","replaceState","getSelectedMeteringPointTabIndex","configureSettingsFromRouteIfProvided","paramTabType","snapshot","paramMap","get","toLowerCase","ngOnDestroy","unsubscribe","ɵɵdirectiveInject","Store","ActivatedRoute","selectors","standalone","decls","vars","consts","template","rf","ctx","MeteringPointDisplayComponent_div_1_Template","MeteringPointDisplayComponent_div_3_Template","MeteringPointDisplayComponent_div_5_Template","MeteringPointsSelectedGuard","constructor","store","informationStore","productStore","canActivate","route","id","params","select","getAllProducts","pipe","filter","x","take","subscribe","dispatch","ProductsLoad","getInformationLoaded","Load","getMeteringPoints","length","switchMap","_","getSelectedMeteringPoint","mp","of","SelectMeteringPointById","ɵɵinject","Store","factory","ɵfac","routes","path","component","MeteringPointsDisplayComponent","canActivate","MeteringPointsGuard","data","name","MeteringPointDisplayComponent","MeteringPointsSelectedGuard","pathMatch","MeteringPointsRoutingModule","RouterModule","forChild","MeteringPointsFilterPaneComponent","constructor","fb","filterData","subs","SubSink","loadSearchFilter","ngOnInit","ngOnDestroy","unsubscribe","sink","currentSearchFilter","pipe","filter","x","take","subscribe","searchFilter","createForm","setupListeners","searchForm","group","searchPhrase","searchName","searchClientName","searchAddress","searchGroupName","searchId","searchPhraseListener$","controls","valueChanges","updateSearchFilter","value","searchNameListener$","searchClientNameListener$","searchAddressListener$","searchGroupNameListener$","searchIdListener$","newValue","ɵɵdirectiveInject","UntypedFormBuilder","SearchFilterDataService","selectors","inputs","isMobile","standalone","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵlistener","ɵɵelementEnd","ɵɵtext","ɵɵadvance","ɵɵproperty","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵpureFunction1","_c0","ɵɵtextInterpolate1","ɵɵtextInterpolate","import_typescript_string_operations","MeteringPointsModule","MeteringPointsGuard","MeteringPointsSelectedGuard","provide","MAT_DIALOG_DEFAULT_OPTIONS","useValue","hasBackdrop","MeteringPointsFilterPaneComponent","SearchFilterDataService","RouterLinkDirective","SelectedTabDirective","imports","CoreModule","CommonModule","MeteringPointsStoreModule","MeteringPointsRoutingModule","FormsModule","ReactiveFormsModule","RouterModule","MaterialModule","TranslateModule","DirectivesModule","PipesModule"],"x_google_ignoreList":[0]}