{"version":3,"sources":["./src/app/shared/components/donut-chart/donut-chart.component.ts","./src/app/shared/components/donut-chart/donut-chart.component.html","./src/app/components/date-selector/date-selector.component.ts","./src/app/components/date-selector/date-selector.component.html","./src/app/components/campus-spreadsheet/campus-spreadsheet.component.ts","./src/app/components/campus-spreadsheet/campus-spreadsheet.component.html","./src/app/shared/components/svg-definitions/svg-definitions.component.ts","./src/app/shared/components/svg-definitions/svg-definitions.component.html","./src/app/components/campus-spreadsheet/campus-spreadsheet.model.ts","./src/app/services/stub-services/client-summary.stub.service.ts","./src/app/components/building-contacts/building-contacts.component.ts","./src/app/components/building-contacts/building-contacts.component.html","./src/app/pages/campus-page/campus-page.component.ts","./src/app/pages/campus-page/campus-page.component.html","./src/app/shared/components/svg-icon/svg-icon.component.ts","./src/app/shared/components/svg-icon/svg-icon.component.html","./src/app/components/building-event-modal/building-event-modal.model.ts","./src/app/services/real-services/event-snapshot.service.ts","./src/app/components/header/header.component.ts","./src/app/components/header/header.component.html","./src/app/components/building-spreadsheet/building-tag-filter.ts","./src/app/services/services.module.ts","./src/app/components/building-contact-modal/building-contact-modal.component.ts","./src/app/components/building-contact-modal/building-contact-modal.component.html","./src/app/services/real-services/go-live-date.service.ts","./src/app/components/event-snapshot/event-snapshot.component.ts","./src/app/components/event-snapshot/event-snapshot.component.html","./src/app/components/building-asset-list/building-asset-list.model.ts","./src/app/components/date-selector/date-selector.service.ts","./src/app/components/building-asset-list/building-asset/building-asset.component.ts","./src/app/components/building-asset-list/building-asset/building-asset.component.html","./src/app/services/real-services/benchmarks.service.ts","./src/app/services/interfaces/event-snapshot.interface.ts","./src/app/components/building-benchmarks/utility-benchmarks/utility-benchmarks.model.ts","./src/app/shared/utils.ts","./src/app/pages/admin/translation-items-filter.ts","./src/app/services/admin.service.ts","./src/app/shared/services/with-credentials-interceptor.service.ts","./src/environments/environment.ts","./src/app/services/stub-services/building-spreadshee.stub.service.ts","./src/app/pages/page-not-found/page-not-found.component.ts","./src/app/pages/page-not-found/page-not-found.component.html","./src/app/components/note-manager/note-manager.component.ts","./src/app/components/note-manager/note-manager.component.html","./src/app/services/selected-client.service.ts","./src/app/components/client-summary/client-summary.component.ts","./src/app/components/client-summary/client-summary.component.html","./src/app/shared/interceptors/auth.interceptor.ts","./src/app/shared/excel-utils.ts","./src/app/components/building-equipment-modal/building-equipment-modal.component.ts","./src/app/components/building-equipment-modal/building-equipment-modal.component.html","./src/app/shared/components/info-block/info-block.component.ts","./src/app/shared/components/info-block/info-block.component.html","./src/app/components/building-event-modal/building-event-modal.component.ts","./src/app/components/building-event-modal/building-event-modal.component.html","./src/app/services/real-services/endpoint-const.ts","./src/app/services/interfaces/go-live-date.interface.ts","./src/app/shared/services/token-provider.service.ts","./src/app/services/selected-building.service.ts","./src/app/shared/components/card/card.component.ts","./src/app/shared/components/card/card.component.html","./src/app/shared/guards/auth.guard.ts","./src/app/components/footer/footer.component.ts","./src/app/components/footer/footer.component.html","./src/app/shared/pipes/value-format.pipe.ts","./src/app/services/real-services/client-summary.service.ts","./src/app/models/BuildingInfo.ts","./src/app/shared/shared.module.ts","./src/app/shared/components/base/base.component.ts","./src/app/components/building-alerts/building-alerts.component.ts","./src/app/components/building-alerts/building-alerts.component.html","./src/app/pages/building-page/building-page.component.ts","./src/app/pages/building-page/building-page.component.html","./src/app/components/campus-summary/campus-summary.model.ts","./src/app/routing-const.ts","./src/app/components/building-spreadsheet/building-spreadsheet.model.ts","./src/app/services/interfaces/building-spreadsheet.interface.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/shared/services/authentication.service.ts","./src/app/components/dashboard-btn-group/dashboard-btn-group.component.ts","./src/app/components/dashboard-btn-group/dashboard-btn-group.component.html","./src/app/shared/pipes/map-to-iterable.pipe.ts","./src/app/services/real-services/image.service.ts","./src/app/components/building-event-modal/building-event-filter.ts","./src/app/app.module.ts","./src/app/shared/models/NumberFormat.ts","./src/app/services/stub-services/dashboard.stub.service.ts","./src/app/services/real-services/building-summary.service.ts","./src/app/shared/components/event-modal/event-modal.component.ts","./src/app/shared/components/event-modal/event-modal.component.html","./src/app/shared/components/bar-chart/bar-chart.model.ts","./src/app/shared/pipes/localize-text.pipe.ts","./src/app/pages/client-select/client-select.component.ts","./src/app/pages/client-select/client-select.component.html","./src/app/components/building-spreadsheet/building-spreadsheet.component.ts","./src/app/components/building-spreadsheet/building-spreadsheet.component.html","./src/app/models/EquipmentsEvents.ts","./src/app/authentication/login/login.component.ts","./src/app/authentication/login/login.component.html","./src/app/components/client-summary/client-summary.model.ts","./src/app/components/building-benchmarks/facility-benchmarks/facility-benchmarks.component.ts","./src/app/components/building-benchmarks/facility-benchmarks/facility-benchmarks.component.html","./src/app/components/building-equipment-modal/building-equipment-modal.model.ts","./src/app/services/dashboard-excel.service.ts","./src/app/components/building-benchmarks/facility-benchmarks/facility-benchmarks.model.ts","./src/app/shared/services/local-storage.service.ts","./src/app/components/building-benchmarks/utility-benchmarks/utility-benchmarks.component.ts","./src/app/components/building-benchmarks/utility-benchmarks/utility-benchmarks.component.html","./src/app/services/real-services/building-spreadsheet.service.ts","./src/app/shared/interceptors/http-error.interceptor.ts","./src/app/services/real-services/building-asset-list.service.ts","./src/app/components/campus-summary/campus-summary.component.ts","./src/app/components/campus-summary/campus-summary.component.html","./src/app/services/interfaces/client-summary.interface.ts","./src/app/pages/main-dashboard/main-dashboard.component.ts","./src/app/pages/main-dashboard/main-dashboard.component.html","./src/app/services/go-live-date-storage.service.ts","./src/app/services/interfaces/building-summary.interface.ts","./src/app/pages/admin/admin.component.ts","./src/app/pages/admin/admin.component.html","./src/app/components/building-events/building-events.component.ts","./src/app/components/building-events/building-events.component.html","./src/app/app-routing.module.ts","./src/app/components/building-info/building-info.model.ts","./src/app/services/stub-services/building-summary.stub.service.ts","./src/app/components/building-info/building-info.component.ts","./src/app/components/building-info/building-info.component.html","./src/app/shared/components/bar-chart/bar-chart.component.ts","./src/app/shared/components/bar-chart/bar-chart.component.html","./src/main.ts","./src/app/components/building-asset-list/building-asset-list.component.ts","./src/app/components/building-asset-list/building-asset-list.component.html","./$_lazy_route_resource lazy namespace object"],"names":[],"mappings":"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","file":"main-es2015.js","sourcesContent":["import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport * as d3 from 'd3';\nimport { IconDataAdaptive } from 'src/app/components/building-info/building-info.model';\nimport { BaseComponent } from '../base/base.component';\n\nexport interface DonutChartOptions {\n id: string;\n innerRadius: number;\n outerRadius: number;\n startAngle: number;\n cornerRadius: number;\n arcColor: string;\n innerColor: string;\n icon?: IconDataAdaptive;\n relativeSize: string;\n}\n\n@Component({\n selector: 'br-donut-chart',\n templateUrl: './donut-chart.component.html',\n styleUrls: ['./donut-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DonutChartComponent extends BaseComponent implements OnChanges {\n\n @Input()\n public options!: DonutChartOptions;\n\n @Input()\n public data: number | null = null;\n\n public enterCount: number = 0;\n\n constructor() {\n super();\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.data) {\n this.createSvg();\n }\n }\n\n private createSvg(): void {\n const width = this.options.outerRadius * 2;\n const height = width;\n const backgroundArc = d3.arc()\n .innerRadius(this.options.innerRadius)\n .outerRadius(this.options.outerRadius)\n .startAngle(0)\n .endAngle(Math.PI * 2);\n\n const mainArc = d3.arc()\n .innerRadius(this.options.innerRadius)\n .outerRadius(this.options.outerRadius)\n .cornerRadius(this.options.cornerRadius)\n .startAngle(this.options.startAngle)\n .endAngle((d: any) => this.options.startAngle + (d / 100 * Math.PI * 2));\n\n this.enterCount += 1; //todo\n if (this.enterCount > 2){\n return;\n }\n\n const svg = d3.select('#' + this.options.id).append('svg')\n .attr('width', this.options.relativeSize)\n .attr('height', this.options.relativeSize)\n .attr('viewBox', (-width / 2) + ' ' + (-height / 2) + ' ' + width + ' ' + height)\n .attr('preserveAspectRatio', 'xMaxYMax meet')\n .attr('position', 'relative');\n\n const charts = svg.selectAll('g')\n .data([this.data ?? 0])\n .enter()\n .append('g');\n\n charts.append('path')\n .attr('d', backgroundArc as any)\n .attr('fill', this.options.innerColor);\n\n charts.append('path')\n .attr('d', mainArc as any)\n .attr('fill', this.options.arcColor);\n\n charts.append('circle')\n .attr('cx', 0)\n .attr('cy', 0)\n .attr('r', this.options.innerRadius)\n .attr('fill', this.options.innerColor);\n }\n}\n","<div [id]=\"options.id\" class=\"wrapper\">\n <ng-content></ng-content>\n</div>\n\n","import { DatePipe } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { DateSelectorService } from './date-selector.service';\n\n@Component({\n selector: 'br-date-selector',\n templateUrl: './date-selector.component.html',\n styleUrls: ['./date-selector.component.scss']\n})\nexport class DateSelectorComponent {\n\n @Input()\n public goLiveDate?: Date | null;\n\n public maxDate: Date = new Date();\n public defaultDateRangeTitle = this.localizeText.transform('Date Range');\n\n public selectedIndexChanged$ = this.dataFilterService.selectedIndexChanged$;\n public menuClosed = true;\n public rangeLabels = [this.localizeText.transform('Yesterday'), this.localizeText.transform('Week'), this.localizeText.transform('Month'), this.localizeText.transform('Quarter'), this.localizeText.transform('Year'), this.localizeText.transform('YTD')];\n public customRangeIndex = this.rangeLabels.length;\n private datePipe = new DatePipe('en-US'); //!!todo\n public dateRange = '';\n public range: FormGroup;\n\n constructor(private readonly dataFilterService: DateSelectorService,\n formBuilder: FormBuilder,\n private localizeText: LocalizeTextPipe) {\n this.range = formBuilder.group({\n start: [],\n end: []\n });\n }\n\n public changeTab(index: number): void {\n this.dataFilterService.setSelectedIndex(index);\n this.range.reset();\n }\n\n public closeMenu(): void {\n this.menuClosed = true;\n let startDate = this.range.controls.start.value;\n const endDate = this.range.controls.end.value;\n\n if (this.goLiveDate !== undefined && this.goLiveDate !== null && !!startDate && !!endDate\n && startDate.getTime() < new Date(this.goLiveDate).getTime()\n && endDate.getTime() >= new Date(this.goLiveDate).getTime()) {\n this.range.controls.start.setValue(this.goLiveDate);\n startDate = this.range.controls.start.value;\n }\n\n if (!!startDate && !!endDate) {\n this.dateRange = this.datePipe.transform(startDate, 'M/d/yy') + ' - '\n + this.datePipe.transform(endDate, 'M/d/yy');\n this.customRangeChanged(startDate, endDate);\n }\n }\n\n public openMenu(): void {\n this.menuClosed = false;\n }\n\n private customRangeChanged(startDate: Date, endDate: Date): void {\n this.dataFilterService.setSelectedIndex(this.customRangeIndex);\n this.dataFilterService.setStartEndDates(startDate, endDate);\n }\n}\n","<span *ngFor=\"let rangeLabel of rangeLabels; index as i\" class=\"text-st button\"\n [class.selected-range]=\"(selectedIndexChanged$ | async) === i\" (click)=\"changeTab(i)\">{{ rangeLabel }}</span>\n<span #menuButton [matMenuTriggerFor]=\"menu\" (menuClosed)=\"closeMenu()\" (menuOpened)=\"openMenu()\"\n class=\"text-st button\" [class.selected-range]=\"(selectedIndexChanged$ | async) === customRangeIndex\">\n {{ ((selectedIndexChanged$ | async) !== customRangeIndex ? defaultDateRangeTitle : dateRange)\n + (menuClosed ? ' ▾' : ' ▴') }}\n</span>\n<mat-menu #menu=\"matMenu\" class=\"menu-customize\">\n <div mat-menu-item (click)=\"$event.stopPropagation()\" class=\"mat-menu-it\" [disableRipple]=\"true\">\n <mat-form-field appearance=\"fill\">\n <mat-label>{{ 'Enter a date range' | localizeText }}</mat-label>\n <mat-date-range-input [formGroup]=\"range\" [max]=\"maxDate\" [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"start\" placeholder=\"Start date\">\n <input matEndDate formControlName=\"end\" placeholder=\"End date\">\n </mat-date-range-input>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n <mat-error *ngIf=\"range.controls.start.hasError('matStartDateInvalid')\">{{ 'Invalid start date' | localizeText }}</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matEndDateInvalid')\">{{ 'Invalid end date' | localizeText }}</mat-error>\n </mat-form-field>\n </div>\n</mat-menu>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { NumberFormat } from '../../shared/models/NumberFormat';\nimport { BaseComponent } from '../../shared/components/base/base.component';\nimport { ArrowType, CampusModel } from './campus-spreadsheet.model';\nimport { CampusData, UsageByDate } from '../../models/CampusData';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BuildingSpreadsheetDateService, DateSelectorService } from '../date-selector/date-selector.service';\nimport { BUILDING_SPREADSHEET_SERVICE, IBuildingSpreadsheetService } from 'src/app/services/interfaces/building-spreadsheet.interface';\nimport { switchMap } from 'rxjs/operators';\nimport { SelectedClientService } from '../../services/selected-client.service';\nimport { CAMPUS_ROUTE } from '../../routing-const';\nimport { GoLiveDateStorage } from '../../services/go-live-date-storage.service';\nimport { BUILDING_SUMMARY_SERVICE, IBuildingSummaryService } from 'src/app/services/interfaces/building-summary.interface';\nimport { DateRange } from '@angular/material/datepicker';\nimport { BuildingInfoAdditional } from 'src/app/models/BuildingInfo';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'br-campus-spreadsheet',\n templateUrl: './campus-spreadsheet.component.html',\n styleUrls: ['./campus-spreadsheet.component.scss'],\n providers: [CampusModel,\n {\n provide: DateSelectorService,\n useExisting: BuildingSpreadsheetDateService\n }],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CampusSpreadsheetComponent extends BaseComponent implements OnInit {\n\n @Output()\n public showCampusChanged = new EventEmitter<boolean>();\n\n public format = NumberFormat;\n\n public tagName: string = \"\";\n\n public campusInfo$ = new Observable<CampusData[]>();\n public campusData = [] as CampusData[];\n public rangeSavingsTitle = this.model.rangeSavingsTitleShort;\n public arrowType = this.model.arrowType;\n public blocks = this.model.defaultInfoBlockData;\n public liveDate$ = this.clientGoLiveDateService.clientGoLiveDate$;\n public savingsTitle = '';\n\n public electricityGraphs: any = [];\n public gasGraphs: any = [];\n public waterGraphs: any = [];\n public isElectricityPresented = false;\n public isGasPresented = false;\n public isWaterPresented = false;\n\n public fixedUsageType: string = null;\n\n currentUsageViewName = \"Water\"; \n\n constructor(private readonly model: CampusModel,\n private readonly router: Router,\n private readonly activateRoute: ActivatedRoute,\n private readonly selectedClientService: SelectedClientService,\n private readonly dateFilterService: DateSelectorService,\n private readonly clientGoLiveDateService: GoLiveDateStorage,\n @Inject(BUILDING_SPREADSHEET_SERVICE) private readonly buildingSpreadsheetService: IBuildingSpreadsheetService,\n @Inject(BUILDING_SUMMARY_SERVICE) private readonly buildingSummaryService: IBuildingSummaryService,\n private changeDetectorRef: ChangeDetectorRef,) {\n super();\n\n setInterval(() => {\n this.changeUsageView();\n this.changeDetectorRef.detectChanges();\n }, 5000);\n }\n\n public clickUsageType(usageType: string) {\n if (this.fixedUsageType === usageType) {\n this.fixedUsageType = null;\n return;\n }\n\n this.fixedUsageType = usageType;\n\n this.currentUsageViewName = usageType;\n }\n\n public changeUsageView() {\n if (this.fixedUsageType != null) {\n return;\n }\n\n switch (this.currentUsageViewName) {\n case \"Electricity\":\n if (this.isGasPresented) {\n this.currentUsageViewName = \"Gas\";\n } else if (this.isWaterPresented) {\n this.currentUsageViewName = \"Water\";\n } \n break;\n case \"Gas\":\n if (this.isWaterPresented) {\n this.currentUsageViewName = \"Water\";\n } else if (this.isElectricityPresented) {\n this.currentUsageViewName = \"Electricity\";\n }\n break;\n case \"Water\":\n if (this.isElectricityPresented) {\n this.currentUsageViewName = \"Electricity\";\n } else if (this.isGasPresented) {\n this.currentUsageViewName = \"Gas\";\n }\n break;\n }\n }\n\n private removeTrailingNulls (usagesByDates: UsageByDate[], getValueFunc: (t: UsageByDate) => number): UsageByDate[] {\n const resultArray = [] as UsageByDate[];\n\n let isZeroItems = true;\n [...usagesByDates].reverse().forEach(p => {\n const value = getValueFunc(p);\n\n if (value && value != 0) {\n isZeroItems = false;\n }\n\n if (!isZeroItems) {\n resultArray[resultArray.length] = p;\n }\n });\n\n return resultArray.reverse();\n }\n\n public createGraph(campusData: CampusData, resourceName: string, getValueFunc: (t: UsageByDate) => number, lineColor: string): any {\n var graph = {\n hasData: false,\n chartType: \"LineChart\",\n dataTable: [] as any,\n options: {\n title: resourceName,\n chartArea: {\n width: \"250\",\n height: \"100\"\n },\n legend: 'none',\n series: {\n 0: { type: 'line', color: lineColor },\n },\n }, \n };\n\n graph.dataTable[0] = [\"Date\", resourceName];\n\n const cleanUsagesByDates = this.removeTrailingNulls(campusData.usagesByDates, getValueFunc);\n\n cleanUsagesByDates.forEach(p => {\n const value = getValueFunc(p);\n graph.dataTable[graph.dataTable.length] = [(new Date(p.date)).toLocaleDateString(), value];\n\n if (value > 0) {\n graph.hasData = true;\n }\n });\n\n return graph;\n }\n\n public initGraphs(campusDataList: CampusData[]): void {\n this.electricityGraphs = campusDataList.map(p => this.createGraph(p, \"Electricity\", t => t.electricity, p.rangeElectricitySavings >= 0 ? 'green' : 'red'));\n this.gasGraphs = campusDataList.map(p => this.createGraph(p, \"Gas\", t => t.gas, p.rangeNaturalGasSavings >= 0 ? 'green' : 'red'));\n this.waterGraphs = campusDataList.map(p => this.createGraph(p, \"Water\", t => t.water, 'blue'));\n \n this.isElectricityPresented = campusDataList.filter(p => p.usagesByDates.filter(t => t.electricity > 0).length > 0).length > 0;\n this.isGasPresented = campusDataList.filter(p => p.usagesByDates.filter(t => t.gas > 0).length > 0).length > 0;\n this.isWaterPresented = campusDataList.filter(p => p.usagesByDates.filter(t => t.water > 0).length > 0).length > 0;\n\n this.fixedUsageType = null;\n\n this.changeUsageView();\n }\n\n public ngOnInit(): void {\n this.campusInfo$ = combineLatest([\n this.selectedClientService.selectedClientId$,\n this.dateFilterService.dateRangeChanged$,\n ]).pipe(\n switchMap(([clientId, dateRange]) => this.buildingSpreadsheetService.getCampusSpredsheetData(clientId, dateRange))\n );\n\n this.addSubscription(\n this.campusInfo$.subscribe((campusData) => {\n this.showCampusChanged.emit(campusData.length > 1);\n this.campusData = campusData;\n this.initGraphs(this.campusData);\n this.changeDetectorRef.detectChanges();\n campusData.forEach(campus => {\n this.addSubscription(\n this.buildingSummaryService.getCampusSummaryAdditional(campus.id, new DateRange(new Date(), new Date())).subscribe((data: BuildingInfoAdditional) => {\n const campusData = this.campusData.filter(p => p.id === campus.id)[0];\n campusData.energyEfficiencyScore = data.energyEfficiencyScore;\n campusData.energyStarScore = data.energyStarScore;\n this.changeDetectorRef.detectChanges();\n })\n );\n });\n })\n );\n\n this.addSubscription(\n this.dateFilterService.selectedIndexChanged$.subscribe(index => {\n this.savingsTitle = this.rangeSavingsTitle[index];\n })\n );\n }\n\n public cardClick(campusId: number): void {\n this.router.navigate([`${CAMPUS_ROUTE}/${campusId}`], { relativeTo: this.activateRoute });\n\n }\n\n public get arrow(): typeof ArrowType {\n return ArrowType;\n }\n}\n","<div class=\"component-title\">\n <div class=\"text-h3 component-title__text\">{{ 'Campus Spreadsheet' | localizeText }}</div>\n <br-date-selector [goLiveDate]=\"liveDate$ | async\"></br-date-selector> \n</div>\n<div>\n <span *ngIf=\"isElectricityPresented\" class=\"link text-st-semibold\" [ngStyle]=\"{'color': fixedUsageType === 'Electricity' ? '#193769' : '#53698F'}\" (click)=\"clickUsageType('Electricity')\">Electricity</span>\n <span *ngIf=\"isGasPresented\" class=\"link text-st-semibold\" [ngStyle]=\"{'color': fixedUsageType === 'Gas' ? '#193769' : '#53698F'}\" (click)=\"clickUsageType('Gas')\">Gas</span>\n <span *ngIf=\"isWaterPresented\" class=\"link text-st-semibold\" [ngStyle]=\"{'color': fixedUsageType === 'Water' ? '#193769' : '#53698F'}\" (click)=\"clickUsageType('Water')\">Water</span>\n</div>\n<div class=\"cards-container\">\n <div class=\"main-block col-adapt card\" *ngFor=\"let data of campusData; index as i\" (click)=\"cardClick(data.id)\"\n [class.card-highlight-red]=\"data.rangeElectricitySavings + data.rangeNaturalGasSavings < 0\"\n [class.card-highlight-green]=\"data.rangeElectricitySavings + data.rangeNaturalGasSavings > 0\"\n > \n <div style=\"height: 64px;\"> \n <div class=\"header\">\n <div class=\"campus-name text-st-semibold\">\n {{ data.campusName }} \n </div> \n <div class=\"info-block text-sm-semibold temperature-block\">\n <br-svg-icon name=\"thermometer-half\" [width]=\"6\" [height]=\"12\" class=\"icon\"></br-svg-icon>\n {{ data.temperature | valueFormat: format.temperatureFormat }}\n </div>\n </div>\n <div>\n <span class=\"description text-sm\">{{ data.location }}</span>\n </div>\n </div> \n <div style=\"height: 200px;\">\n <div *ngIf=\"currentUsageViewName === 'Electricity'\">\n <div *ngIf=\"electricityGraphs[i] && electricityGraphs[i].dataTable && electricityGraphs[i].dataTable.length > 1 && electricityGraphs[i].hasData\" class=\"graph-block\"\n [ngStyle]=\"{'background-color': electricityGraphs[i].options.series[0].color}\">\n <div class=\"graph-block-in\">\n <google-chart [data]=\"electricityGraphs[i]\"></google-chart>\n </div> \n </div>\n <div class=\"no-data-block\" *ngIf=\"!electricityGraphs[i] || !electricityGraphs[i].dataTable || electricityGraphs[i].dataTable.length <= 1 || !electricityGraphs[i].hasData\">\n <span class=\"no-data-span\">No Data/Model</span>\n </div>\n </div>\n <div *ngIf=\"currentUsageViewName === 'Gas'\">\n <div *ngIf=\"gasGraphs[i] && gasGraphs[i].dataTable && gasGraphs[i].dataTable.length > 1 && gasGraphs[i].hasData\" class=\"graph-block\"\n [ngStyle]=\"{'background-color': gasGraphs[i].options.series[0].color}\">\n <div class=\"graph-block-in\">\n <google-chart [data]=\"gasGraphs[i]\"></google-chart>\n </div> \n </div>\n <div class=\"no-data-block\" *ngIf=\"!gasGraphs[i] || !gasGraphs[i].dataTable || gasGraphs[i].dataTable.length <= 1 || !gasGraphs[i].hasData\">\n <span class=\"no-data-span\">No Data/Model</span>\n </div>\n </div>\n <div *ngIf=\"currentUsageViewName === 'Water'\">\n <div *ngIf=\"waterGraphs[i] && waterGraphs[i].dataTable && waterGraphs[i].dataTable.length > 1 && waterGraphs[i].hasData\" class=\"graph-block\"\n [ngStyle]=\"{'background-color': waterGraphs[i].options.series[0].color}\">\n <div class=\"graph-block-in\">\n <google-chart [data]=\"waterGraphs[i]\"></google-chart>\n </div> \n </div>\n <div class=\"no-data-block\" *ngIf=\"!waterGraphs[i] || !waterGraphs[i].dataTable || waterGraphs[i].dataTable.length <= 1 || !waterGraphs[i].hasData\">\n <span class=\"no-data-span\">No Data/Model</span>\n </div>\n </div> \n </div>\n <div class=\"auto-width\">\n <div>\n <div class=\"col-2-circle mgn-r\">\n <div class=\"info-block text-st cost-block\">\n <br-svg-icon name=\"plug\" [width]=\"13.5\" [height]=\"18\" [color]=\"'#53698F'\" class=\"icon\"></br-svg-icon>\n <span>{{ data.rangeElectricitySavings | valueFormat: format.integerCurrencyFormat }}</span>\n <!-- <br-svg-icon [name]=\"arrowType[data.electricityDynamics].icon\"\n [width]=\"arrowType[data.electricityDynamics].width\" [height]=\"arrowType[data.electricityDynamics].height\"\n class=\"icon state-icon\"></br-svg-icon> -->\n </div>\n <!-- <p class=\"text-sm-semibold score\">{{ 'Energy Efficiency Score' | localizeText }}</p> -->\n </div>\n <div class=\"col-2-circle\">\n <div class=\"info-block text-st cost-block\">\n <br-svg-icon name=\"fire-alt\" [width]=\"15.75\" [height]=\"18\" [color]=\"'#3EB049'\" class=\"icon\"></br-svg-icon>\n <span>{{ data.rangeNaturalGasSavings | valueFormat: format.integerCurrencyFormat }}</span>\n <!-- <br-svg-icon [name]=\"arrowType[data.gasDynamics].icon\" [width]=\"arrowType[data.gasDynamics].width\"\n [height]=\"arrowType[data.gasDynamics].height\" class=\"icon state-icon\"></br-svg-icon> -->\n </div>\n <!-- <p class=\"text-sm-semibold score\">{{ 'Energy Star Score' | localizeText }}</p> -->\n </div>\n </div>\n <!-- <div class=\"col-2-circle mgn-r\">\n <div class=\"pie-chart circle circle-box-shadow text-h3 eff-score\">\n {{ data.energyEfficiencyScore | valueFormat: format.integerNumberFormat }}\n </div>\n </div>\n <div class=\"col-2-circle\">\n <div class=\"pie-chart circle circle-box-shadow text-h3 star-score\">\n <br-svg-icon name=\"star\" [width]=\"27.84\" [height]=\"26.67\" class=\"star\"></br-svg-icon>\n {{ data.energyStarScore | valueFormat: format.integerNumberFormat }}\n </div>\n </div> -->\n </div>\n <div class=\"info-block text-st cost-block mtd-savings\">\n <br-svg-icon name=\"usd-circle\" [width]=\"16\" [height]=\"16\" [color]=\"'#3EB049'\" class=\"icon\"></br-svg-icon>\n <span>{{ data.savings | valueFormat: format.integerCurrencyFormat }} {{ savingsTitle }}</span>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'br-svg-definitions',\n templateUrl: './svg-definitions.component.html'\n})\nexport class SvgDefinitionsComponent { }\n","<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <defs>\n <symbol id=\"building\" viewBox=\"0 0 25 29\">\n <path d=\"M10.75 6.35156C10.75 6.02344 10.4219 5.69531 10.0938 5.69531H7.90625C7.52344 5.69531 7.25 6.02344 7.25 6.35156V8.53906C7.25 8.92188 7.52344 9.19531 7.90625 9.19531H10.0938C10.4219 9.19531 10.75 8.92188 10.75 8.53906V6.35156ZM17.0938 5.69531H14.9062C14.5234 5.69531 14.25 6.02344 14.25 6.35156V8.53906C14.25 8.92188 14.5234 9.19531 14.9062 9.19531H17.0938C17.4219 9.19531 17.75 8.92188 17.75 8.53906V6.35156C17.75 6.02344 17.4219 5.69531 17.0938 5.69531ZM10.0938 10.9453H7.90625C7.52344 10.9453 7.25 11.2734 7.25 11.6016V13.7891C7.25 14.1719 7.52344 14.4453 7.90625 14.4453H10.0938C10.4219 14.4453 10.75 14.1719 10.75 13.7891V11.6016C10.75 11.2734 10.4219 10.9453 10.0938 10.9453ZM17.0938 10.9453H14.9062C14.5234 10.9453 14.25 11.2734 14.25 11.6016V13.7891C14.25 14.1719 14.5234 14.4453 14.9062 14.4453H17.0938C17.4219 14.4453 17.75 14.1719 17.75 13.7891V11.6016C17.75 11.2734 17.4219 10.9453 17.0938 10.9453ZM10.0938 16.1953H7.90625C7.52344 16.1953 7.25 16.5234 7.25 16.8516V19.0391C7.25 19.4219 7.52344 19.6953 7.90625 19.6953H10.0938C10.4219 19.6953 10.75 19.4219 10.75 19.0391V16.8516C10.75 16.5234 10.4219 16.1953 10.0938 16.1953ZM17.0938 16.1953H14.9062C14.5234 16.1953 14.25 16.5234 14.25 16.8516V19.0391C14.25 19.4219 14.5234 19.6953 14.9062 19.6953H17.0938C17.4219 19.6953 17.75 19.4219 17.75 19.0391V16.8516C17.75 16.5234 17.4219 16.1953 17.0938 16.1953ZM24.75 27.4062C24.75 27.0781 24.4219 26.75 24.0938 26.75H23V1.8125C23 1.10156 22.3984 0.5 21.6875 0.5H3.3125C2.54688 0.5 2 1.10156 2 1.8125V26.75H0.90625C0.523438 26.75 0.25 27.0781 0.25 27.4062V28.5H24.75V27.4062ZM21.25 26.75H14.25V22.1016C14.25 21.7734 13.9219 21.4453 13.5938 21.4453H11.4062C11.0234 21.4453 10.75 21.7734 10.75 22.1016V26.75H3.75V2.25H21.25V26.75Z\"/>\n </symbol>\n <symbol id=\"fire\" viewBox=\"0 0 21 29\">\n <path d=\"M11.8125 1.86729C11.8125 0.554794 10.0625 0.00791919 9.35156 1.10167C4.15625 9.19542 10.9375 13.5704 10.9375 16.2501C10.9375 17.5079 9.95312 18.4376 8.75 18.4376C7.49219 18.4376 6.5625 17.5079 6.5625 16.2501V10.5079C6.5625 9.41417 5.35938 8.81261 4.48438 9.41417C1.64062 11.3829 0 14.6095 0 18.0001C0 23.797 4.70312 28.5001 10.5 28.5001C16.2422 28.5001 21 23.797 21 18.0001C21 8.70323 11.8125 7.50011 11.8125 1.86729ZM10.5 26.7501C5.63281 26.7501 1.75 22.8673 1.75 18.0001C1.75 15.4845 2.84375 12.6954 4.8125 11.0001V16.2501C4.8125 18.4376 6.5625 20.1876 8.75 20.1876C10.8828 20.1876 12.6875 18.4376 12.6875 16.2501C12.6875 12.6954 6.5625 9.25011 10.1719 2.68761C11.375 9.25011 19.25 10.1251 19.25 18.0001C19.25 22.8673 15.3125 26.7501 10.5 26.7501Z\"/>\n </symbol>\n <symbol id=\"plug\" viewBox=\"0 0 21 29\">\n <path d=\"M19.6875 9.25H1.3125C0.546875 9.25 0 9.85156 0 10.5625V13.1875C0 13.9531 0.546875 14.5 1.3125 14.5H1.75C1.75 19.0391 5.19531 22.8125 9.625 23.25V28.5H11.375V23.25C15.75 22.8125 19.25 19.0391 19.25 14.5H19.6875C20.3984 14.5 21 13.9531 21 13.1875V10.5625C21 9.85156 20.3984 9.25 19.6875 9.25ZM19.25 12.75H17.5V14.5C17.5 18.3828 14.3281 21.5 10.5 21.5C6.61719 21.5 3.5 18.3828 3.5 14.5V12.75H1.75V11H19.25V12.75ZM14.875 8.375H16.625V1.375C16.625 0.9375 16.1875 0.5 15.75 0.5C15.2578 0.5 14.875 0.9375 14.875 1.375V8.375ZM4.375 8.375H6.125V1.375C6.125 0.9375 5.6875 0.5 5.25 0.5C4.75781 0.5 4.375 0.9375 4.375 1.375V8.375Z\"/>\n </symbol>\n <symbol id=\"bed\" viewBox=\"0 0 28 17\">\n <path d=\"M6.3 11.3333C8.225 11.3333 9.8 9.78385 9.8 7.79167C9.8 5.84375 8.225 4.25 6.3 4.25C4.33125 4.25 2.8 5.84375 2.8 7.79167C2.8 9.78385 4.33125 11.3333 6.3 11.3333ZM6.3 5.66667C7.4375 5.66667 8.4 6.64062 8.4 7.79167C8.4 8.98698 7.4375 9.91667 6.3 9.91667C5.11875 9.91667 4.2 8.98698 4.2 7.79167C4.2 6.64062 5.11875 5.66667 6.3 5.66667ZM23.1 4.25H11.9C11.5063 4.25 11.2 4.60417 11.2 4.95833V12.75H1.4V0.354167C1.4 0.177083 1.225 0 1.05 0H0.35C0.13125 0 0 0.177083 0 0.354167V16.6458C0 16.8672 0.13125 17 0.35 17H1.05C1.225 17 1.4 16.8672 1.4 16.6458V14.1667H26.6V16.6458C26.6 16.8672 26.7313 17 26.95 17H27.65C27.825 17 28 16.8672 28 16.6458V9.20833C28 6.50781 25.7687 4.25 23.1 4.25ZM26.6 12.75H12.6V5.66667H23.1C25.025 5.66667 26.6 7.26042 26.6 9.20833V12.75Z\"/>\n </symbol>\n <symbol id=\"ruler\" viewBox=\"0 0 36 27\">\n <path d=\"M35.7266 8.57812L31.4063 1.03125C31.0781 0.484375 30.4766 0.15625 29.875 0.15625C29.6016 0.15625 29.2734 0.265625 29 0.429688L1.82032 16.0703C1 16.5625 0.726566 17.6016 1.21875 18.4766L5.53907 25.9688C5.86719 26.5703 6.46875 26.8438 7.07032 26.8438C7.34375 26.8438 7.67188 26.7891 7.94532 26.625L35.125 10.9844C35.9453 10.4922 36.2188 9.39844 35.7266 8.57812ZM7.07032 25.1484L2.69532 17.6016L6.46875 15.4141L8.875 19.5703C8.98438 19.7891 9.25782 19.8438 9.47657 19.7344L10.2422 19.2969C10.4609 19.1328 10.5156 18.9141 10.4063 18.6953L8 14.5391L11.0078 12.7891L12.5391 15.4141C12.6484 15.6328 12.9219 15.6875 13.1406 15.5781L13.9063 15.1406C14.125 15.0312 14.1797 14.7578 14.0703 14.5391L12.5391 11.9141L15.5469 10.1641L17.9531 14.3203C18.0625 14.5391 18.3359 14.5938 18.5547 14.4844L19.3203 14.0469C19.4844 13.9375 19.5938 13.6641 19.4297 13.4453L17.0781 9.34375L20.0859 7.59375L21.6172 10.2188C21.7266 10.4375 22 10.4922 22.2188 10.3828L22.9297 9.94531C23.1484 9.83594 23.2031 9.5625 23.0938 9.34375L21.5625 6.71875L24.625 4.96875L26.9766 9.125C27.1406 9.34375 27.3594 9.39844 27.5781 9.28906L28.3438 8.85156C28.5625 8.6875 28.6172 8.46875 28.5078 8.25L26.1016 4.09375L29.875 1.90625L34.25 9.45312L7.07032 25.1484Z\"/>\n </symbol>\n <symbol id=\"lightbulb\" viewBox=\"0 0 20 29\">\n <path d=\"M10.0001 0.5C4.36725 0.5 0.320372 5.09375 0.375059 10.1797C0.375059 12.5859 1.25006 14.7734 2.72662 16.4688C4.1485 18.1094 5.461 20.6797 5.62506 21.5V25.6562C5.62506 25.8203 5.67975 25.9844 5.73443 26.1484L7.10162 28.1172C7.26568 28.3906 7.53912 28.5 7.81256 28.5H12.1329C12.4063 28.5 12.6797 28.3906 12.8438 28.1172L14.211 26.1484C14.2657 25.9844 14.3204 25.8203 14.3204 25.6562L14.3751 21.5C14.4844 20.6797 15.7969 18.0547 17.2188 16.4688C18.6954 14.7734 19.6251 12.5859 19.6251 10.125C19.6251 4.82031 15.3047 0.5 10.0001 0.5ZM12.5704 25.3828L11.6407 26.75H8.30475L7.37506 25.3828V25H12.5704V25.3828ZM12.5704 23.25H7.37506L7.32037 21.5H12.6251L12.5704 23.25ZM15.9063 15.3203C15.1407 16.1953 13.9376 17.9453 13.1172 19.75H6.82818C6.00787 17.9453 4.80475 16.1953 4.03912 15.3203C2.78131 13.8984 2.12506 12.0391 2.12506 10.125C2.07037 5.96875 5.40631 2.25 10.0001 2.25C14.3204 2.25 17.8751 5.80469 17.8751 10.125C17.8751 12.0391 17.1641 13.8984 15.9063 15.3203ZM10.0001 4C6.60943 4 3.87506 6.78906 3.87506 10.125C3.87506 10.6172 4.25787 11 4.75006 11C5.18756 11 5.62506 10.6172 5.62506 10.125C5.62506 7.71875 7.53912 5.75 10.0001 5.75C10.4376 5.75 10.8751 5.36719 10.8751 4.875C10.8751 4.4375 10.4376 4 10.0001 4Z\"/>\n </symbol>\n <symbol id=\"fire-alt\" viewBox=\"0 0 25 29\">\n <path d=\"M24.75 15.9219C24.75 13.0234 21.9062 7.00781 17.9141 3.34375C16.7656 4.38281 15.7266 5.47656 14.8516 6.625C13.375 4.54688 11.5156 2.46875 9.4375 0.5C4.02344 5.53125 0.25 11.9844 0.25 15.9219C0.25 22.8672 5.71875 28.5 12.5 28.5H12.5547H12.6094C12.7188 28.5 12.8281 28.5 12.9375 28.5C19.5 28.2812 24.75 22.7578 24.75 15.9219ZM2 15.9219C2 13.1875 4.57031 7.88281 9.4375 2.96094C10.9141 4.4375 12.2812 6.07812 13.4297 7.60938L14.7422 9.46875L16.2188 7.71875C16.6562 7.17188 17.4219 6.29688 17.9141 5.80469C20.9766 9.25 23 13.9531 23 15.9219C23 18.9297 21.7969 21.6094 19.8828 23.5781C20.5938 21.6641 20.4844 19.4219 19.4453 17.4531C19.2812 17.1797 19.0625 16.6875 18.8438 16.4141L17.6406 14.3906L16.0547 16.1953L14.6328 17.7812C13.2656 16.0312 11.4062 13.6797 11.1328 13.4062L9.82031 11.8203L8.50781 13.4062C6.15625 16.1953 4.625 18.2734 4.625 20.7891C4.625 21.8281 4.78906 22.8125 5.11719 23.6875C3.20312 21.7188 2 18.9844 2 15.9219ZM12.5547 26.75C9.10938 26.75 6.375 24.4531 6.375 20.7891C6.375 18.9297 7.52344 17.2891 9.82031 14.5C10.1484 14.8828 14.5781 20.5156 14.5781 20.5156L17.3672 17.3438C17.5312 17.5625 17.75 18 17.9141 18.2734C19.2266 20.7891 18.6797 23.9609 16.3281 25.6016C15.3438 26.3125 14.1406 26.6953 12.8828 26.75C12.7734 26.75 12.6641 26.75 12.5547 26.75Z\"/>\n </symbol>\n <symbol id=\"thermometer-half\" viewBox=\"0 0 6 12\">\n <path d=\"M4.1253 9C4.1253 8.53125 3.79718 8.10938 3.3753 7.94531V4.875C3.3753 4.6875 3.1878 4.5 3.0003 4.5C2.78937 4.5 2.6253 4.6875 2.6253 4.875V7.94531C2.17999 8.10938 1.8753 8.53125 1.8753 9C1.8753 9.63281 2.36749 10.125 3.0003 10.125C3.60968 10.125 4.1253 9.63281 4.1253 9ZM5.2503 7.03125V2.25C5.2503 1.00781 4.24249 0 3.0003 0C1.73468 0 0.750304 1.00781 0.750304 2.25V7.03125C0.281554 7.54688 0.000303735 8.25 0.000303735 9C-0.0231338 10.6406 1.3128 12 2.97687 12C2.97687 12 2.97687 12 3.0003 12C4.64093 12 6.0003 10.6641 6.0003 9C6.0003 8.25 5.69562 7.54688 5.2503 7.03125ZM5.2503 9C5.2503 10.2422 4.21905 11.25 3.0003 11.25H2.97687C1.73468 11.25 0.726866 10.2422 0.750304 9C0.750304 8.08594 1.26593 7.57031 1.5003 7.3125V2.25C1.5003 1.42969 2.15655 0.75 3.0003 0.75C3.82062 0.75 4.5003 1.42969 4.5003 2.25V7.3125C4.71124 7.54688 5.2503 8.08594 5.2503 9Z\"/>\n </symbol>\n <symbol id=\"star\" viewBox=\"0 0 28 27\">\n <path fill-rule=\"evenodd\" d=\"M16.7312 10.8206L13.9185 2.16407L11.1059 10.8206L2.00383 10.8206L9.36753 16.1706L6.55484 24.8272L13.9185 19.4771L21.2822 24.8272L18.4696 16.1706L25.8333 10.8206H16.7312ZM9.65278 8.82061H2.00384C0.0663903 8.82061 -0.739166 11.2998 0.828262 12.4386L7.01639 16.9346L4.65274 24.2092C4.05403 26.0518 6.16299 27.584 7.73042 26.4452L13.9185 21.9493L20.1067 26.4452C21.6741 27.584 23.7831 26.0518 23.1844 24.2092L20.8207 16.9346L27.0088 12.4386C28.5762 11.2998 27.7707 8.82061 25.8333 8.82061H18.1843L15.8207 1.54603C15.222 -0.29659 12.6151 -0.296595 12.0164 1.54603L9.65278 8.82061Z\" fill=\"#193769\"/>\n </symbol>\n <symbol id=\"usd-circle\" viewBox=\"0 0 17 16\">\n <path d=\"M8.5 0C4.08065 0 0.5 3.58065 0.5 8C0.5 12.4194 4.08065 16 8.5 16C12.9194 16 16.5 12.4194 16.5 8C16.5 3.58065 12.9194 0 8.5 0ZM8.5 14.9677C4.62903 14.9677 1.53226 11.871 1.53226 8C1.53226 4.16129 4.62903 1.03226 8.5 1.03226C12.3387 1.03226 15.4677 4.16129 15.4677 8C15.4677 11.871 12.3387 14.9677 8.5 14.9677ZM9.79032 7.83871L7.46774 7.19355C7.08065 7.09677 6.79032 6.74194 6.79032 6.32258C6.79032 5.83871 7.20968 5.41935 7.72581 5.41935H9.17742C9.53226 5.41935 9.8871 5.54839 10.1452 5.77419C10.2742 5.83871 10.4032 5.83871 10.5 5.74194L10.8548 5.35484C10.9516 5.25806 10.9516 5.06452 10.8226 4.96774C10.371 4.6129 9.79032 4.3871 9.17742 4.3871H9.01613V3.09677C9.01613 2.96774 8.8871 2.83871 8.75806 2.83871H8.24194C8.08065 2.83871 7.98387 2.96774 7.98387 3.09677V4.3871H7.72581C6.62903 4.3871 5.75806 5.25806 5.75806 6.32258C5.75806 7.19355 6.33871 7.93548 7.17742 8.19355L9.5 8.83871C9.8871 8.93548 10.1774 9.29032 10.1774 9.70968C10.1774 10.1935 9.75806 10.5806 9.24194 10.5806H7.79032C7.43548 10.5806 7.08065 10.4839 6.82258 10.2581C6.69355 10.1935 6.56452 10.1935 6.46774 10.2903L6.1129 10.6774C6.01613 10.7742 6.01613 10.9677 6.14516 11.0645C6.59677 11.4194 7.17742 11.6129 7.79032 11.6129H7.98387V12.9032C7.98387 13.0645 8.08065 13.1613 8.24194 13.1613H8.75806C8.8871 13.1613 9.01613 13.0645 9.01613 12.9032V11.6129H9.24194C10.3387 11.6129 11.2097 10.7742 11.2097 9.70968C11.2097 8.83871 10.629 8.06452 9.79032 7.83871Z\"/>\n </symbol>\n <symbol id=\"arrow-increase\" viewBox=\"0 0 8 16\">\n <path d=\"M0.714318 4.07843L3.8963 0.896446C4.09156 0.701184 4.40814 0.701184 4.60341 0.896446L7.78539 4.07843C7.98065 4.27369 7.98065 4.59027 7.78539 4.78553C7.59012 4.9808 7.27354 4.9808 7.07828 4.78553L4.74985 2.45711L4.74985 15.25L3.74985 15.25L3.74985 2.45711L1.42143 4.78553C1.22616 4.9808 0.90958 4.9808 0.714318 4.78553C0.519056 4.59027 0.519056 4.27369 0.714318 4.07843Z\"/>\n </symbol>\n <symbol id=\"arrow-decrease\" viewBox=\"0 0 8 16\">\n <path d=\"M7.78568 11.9216L4.6037 15.1036C4.40844 15.2988 4.09186 15.2988 3.89659 15.1036L0.714614 11.9216C0.519351 11.7263 0.519351 11.4097 0.714614 11.2145C0.909876 11.0192 1.22646 11.0192 1.42172 11.2145L3.75015 13.5429L3.75015 0.75L4.75015 0.75L4.75015 13.5429L7.07857 11.2145C7.27384 11.0192 7.59042 11.0192 7.78568 11.2145C7.98094 11.4097 7.98094 11.7263 7.78568 11.9216Z\"/>\n </symbol>\n <symbol id=\"vector\" viewBox=\"0 0 13 2\">\n <path d=\"M0.25 1H12.25\" stroke=\"#FFA26B\"/>\n </symbol>\n <symbol id=\"arrow-left\" viewBox=\"0 0 12 12\">\n <path d=\"M0.46967 5.46967C0.176777 5.76256 0.176777 6.23744 0.46967 6.53033L5.24264 11.3033C5.53553 11.5962 6.01041 11.5962 6.3033 11.3033C6.59619 11.0104 6.59619 10.5355 6.3033 10.2426L2.06066 6L6.3033 1.75736C6.59619 1.46447 6.59619 0.989592 6.3033 0.696699C6.01041 0.403805 5.53553 0.403805 5.24264 0.696699L0.46967 5.46967ZM12 5.25L1 5.25L1 6.75L12 6.75L12 5.25Z\"/>\n </symbol>\n <symbol id=\"edit\" viewBox=\"0 0 20 20\">\n <path d=\"M18.303,4.742l-1.454-1.455c-0.171-0.171-0.475-0.171-0.646,0l-3.061,3.064H2.019c-0.251,0-0.457,0.205-0.457,0.456v9.578c0,0.251,0.206,0.456,0.457,0.456h13.683c0.252,0,0.457-0.205,0.457-0.456V7.533l2.144-2.146C18.481,5.208,18.483,4.917,18.303,4.742 M15.258,15.929H2.476V7.263h9.754L9.695,9.792c-0.057,0.057-0.101,0.13-0.119,0.212L9.18,11.36h-3.98c-0.251,0-0.457,0.205-0.457,0.456c0,0.253,0.205,0.456,0.457,0.456h4.336c0.023,0,0.899,0.02,1.498-0.127c0.312-0.077,0.55-0.137,0.55-0.137c0.08-0.018,0.155-0.059,0.212-0.118l3.463-3.443V15.929z M11.241,11.156l-1.078,0.267l0.267-1.076l6.097-6.091l0.808,0.808L11.241,11.156z\"></path>\n </symbol>\n <symbol id=\"save\" viewBox=\"0 0 20 20\">\n <path d=\"M10.219,1.688c-4.471,0-8.094,3.623-8.094,8.094s3.623,8.094,8.094,8.094s8.094-3.623,8.094-8.094S14.689,1.688,10.219,1.688 M10.219,17.022c-3.994,0-7.242-3.247-7.242-7.241c0-3.994,3.248-7.242,7.242-7.242c3.994,0,7.241,3.248,7.241,7.242C17.46,13.775,14.213,17.022,10.219,17.022 M15.099,7.03c-0.167-0.167-0.438-0.167-0.604,0.002L9.062,12.48l-2.269-2.277c-0.166-0.167-0.437-0.167-0.603,0c-0.166,0.166-0.168,0.437-0.002,0.603l2.573,2.578c0.079,0.08,0.188,0.125,0.3,0.125s0.222-0.045,0.303-0.125l5.736-5.751C15.268,7.466,15.265,7.196,15.099,7.03\"></path>\n </symbol>\n <symbol id=\"plus\" viewBox=\"0 0 20 20\">\n <path d=\"M14.613,10c0,0.23-0.188,0.419-0.419,0.419H10.42v3.774c0,0.23-0.189,0.42-0.42,0.42s-0.419-0.189-0.419-0.42v-3.774H5.806c-0.23,0-0.419-0.189-0.419-0.419s0.189-0.419,0.419-0.419h3.775V5.806c0-0.23,0.189-0.419,0.419-0.419s0.42,0.189,0.42,0.419v3.775h3.774C14.425,9.581,14.613,9.77,14.613,10 M17.969,10c0,4.401-3.567,7.969-7.969,7.969c-4.402,0-7.969-3.567-7.969-7.969c0-4.402,3.567-7.969,7.969-7.969C14.401,2.031,17.969,5.598,17.969,10 M17.13,10c0-3.932-3.198-7.13-7.13-7.13S2.87,6.068,2.87,10c0,3.933,3.198,7.13,7.13,7.13S17.13,13.933,17.13,10\"></path>\n </symbol>\n <symbol id=\"water\" viewBox=\"0 0 512.053 512.053\">\n <g>\n <path d=\"M261.36,437.387C202.48,437.28,154.8,389.6,154.693,330.72c0-5.867-4.8-10.667-10.667-10.667\n c-5.867,0-10.667,4.8-10.667,10.667c0.107,70.613,57.387,127.893,128,128c5.867,0,10.667-4.8,10.667-10.667\n C272.027,442.187,267.227,437.387,261.36,437.387z\"/>\n <path d=\"M263.387,3.04c-4.16-4.053-10.773-4.053-14.827,0C241.733,9.76,80.027,169.333,80.027,332.213\n c0,99.2,78.933,179.84,176,179.84s176-80.64,176-179.84C432.027,168.373,270.32,9.76,263.387,3.04z M256.027,490.72\n c-85.333,0-154.667-71.147-154.667-158.507c0-134.613,122.88-272.747,154.667-306.24\n c31.787,33.387,154.667,170.88,154.667,306.24C410.693,419.573,341.253,490.72,256.027,490.72z\"/>\n </g>\n </symbol>\n </defs>\n</svg>\n","import { Injectable } from '@angular/core';\nimport { InfoBlockData } from 'src/app/shared/components/info-block/info-block.model';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { NumberFormat } from '../../shared/models/NumberFormat';\n\nexport enum ArrowType {\n Increased = 'arrow-increase',\n Decreased = 'arrow-decrease',\n Unaltered = 'vector'\n}\n\nexport interface ArrowData {\n icon: string;\n width: number;\n height: number;\n color: string;\n}\n\nexport interface FormattedNumber {\n value: number;\n format: NumberFormat;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CampusModel {\n\n constructor(private localizeText: LocalizeTextPipe) {\n }\n\n public defaultInfoBlockData: Record<string, InfoBlockData> = {\n electricitySavings: {\n icon: { name: 'plug', width: 13.5, height: 18, color: '#53698F' }\n },\n gasSavings: {\n icon: { name: 'fire-alt', width: 15.75, height: 18, color: '#3EB049' }\n },\n savings: {\n icon: { name: 'usd-circle', width: 16, height: 16, color: '#3EB049' }\n }\n };\n\n public rangeSavingsTitleShort = [\n this.localizeText.transform('Yesterday Savings'),\n this.localizeText.transform('Last 7 Day Savings'),\n this.localizeText.transform('Last 30 Day Savings'),\n this.localizeText.transform('Last 90 Day Savings'),\n this.localizeText.transform('Last 365 Day Savings'),\n this.localizeText.transform('YTD Savings'),\n this.localizeText.transform('Savings')\n ];\n\n public arrowType: Record<string, ArrowData> = {\n increased: {\n icon: ArrowType.Increased,\n width: 8,\n height: 16,\n color: '#3EB049'\n },\n decreased: {\n icon: ArrowType.Decreased,\n width: 8,\n height: 16,\n color: '#CD0402'\n },\n unaltered: {\n icon: ArrowType.Unaltered,\n width: 13,\n height: 15,\n color: '#FFA26B'\n }\n };\n}\n","import { Injectable } from '@angular/core';\nimport { DateRange } from '@angular/material/datepicker';\nimport { Observable, of } from 'rxjs';\nimport { AlertsData } from 'src/app/models/AlertsData';\nimport { CampusSummaryData } from 'src/app/models/CampusSummaryData';\nimport { ClientSummaryAdditionalData } from 'src/app/models/ClientSummaryAdditionalData';\nimport { ClientSummaryData } from '../../models/ClientSummaryData';\nimport { IClientSummaryService } from '../interfaces/client-summary.interface';\n\n@Injectable()\nexport class ClientSummaryStubService implements IClientSummaryService {\n getAlerts(clientId: number, campusId: number, dateRange: DateRange<Date>): Observable<AlertsData> {\n throw new Error('Method not implemented.');\n }\n getCampusSummaryData(clientId: number, campusId: number, dateRange: DateRange<Date>): Observable<CampusSummaryData> {\n throw new Error('Method not implemented.');\n }\n getCampusSummaryAdditionalData(campusId: number, dateRange: DateRange<Date>): Observable<ClientSummaryAdditionalData> {\n throw new Error('Method not implemented.');\n }\n private readonly msInHour = 1000 * 3600 * 24;\n private readonly buildingGroupName = 'Hospitals Group Name';\n private readonly buildingCount = 6;\n private readonly totalSavings = 1483392.56;\n private readonly eui = 522;\n private readonly totalBeds = 130500;\n private readonly totalSquareFootage = 2345000;\n\n private readonly commonSavings: ClientSummaryData = {\n clientName: this.buildingGroupName,\n totalSavings: this.totalSavings,\n buildingsCount: this.buildingCount,\n bedsCount: this.totalBeds,\n totalSqFt: this.totalSquareFootage,\n hasElectricity: true,\n hasGas: true,\n hasWater: true\n };\n\n private readonly todaySavings: ClientSummaryData = {\n ...this.commonSavings,\n rangeSavings: 31567,\n rangeElectricitySavings: 25000,\n rangeNaturalGasSavings: 6000,\n electricityCost: 79,\n naturalGasCost: 21,\n totalEnergySpend: 250000\n };\n\n private readonly weekSavings: ClientSummaryData = {\n ...this.commonSavings,\n rangeSavings: 205645,\n rangeElectricitySavings: 175000,\n rangeNaturalGasSavings: 39000,\n electricityCost: 82,\n naturalGasCost: 18,\n totalEnergySpend: 1250000\n };\n\n private readonly monthSavings: ClientSummaryData = {\n ...this.commonSavings,\n rangeSavings: 891543,\n rangeElectricitySavings: 723000,\n rangeNaturalGasSavings: 150000,\n electricityCost: 83,\n naturalGasCost: 17,\n totalEnergySpend: 5230000\n };\n\n private readonly quarterSavings: ClientSummaryData = {\n ...this.commonSavings,\n rangeSavings: 3021567,\n rangeElectricitySavings: 2883000,\n rangeNaturalGasSavings: 600000,\n electricityCost: 82,\n naturalGasCost: 18,\n totalEnergySpend: 20300000\n };\n\n private readonly yearSavings: ClientSummaryData = {\n ...this.commonSavings,\n rangeSavings: 10124752,\n rangeElectricitySavings: 9113000,\n rangeNaturalGasSavings: 1900000,\n electricityCost: 81,\n naturalGasCost: 19,\n totalEnergySpend: 74560000\n };\n\n public getClientSummaryData(clientId: number, dateRange: DateRange<Date>): Observable<ClientSummaryData> {\n const savings = {...this.commonSavings};\n const startDate = dateRange.start?.getTime();\n const endDate = dateRange.end?.getTime();\n if (!startDate || !endDate) {\n return of(savings);\n }\n const dateDiff = endDate - startDate;\n const diffDays = Math.ceil(dateDiff / this.msInHour);\n if (diffDays <= 2) {\n return of(this.todaySavings);\n } else if (diffDays <= 8) {\n return of(this.weekSavings);\n } else if (diffDays <= 31) {\n return of(this.monthSavings);\n } else if (diffDays <= 125) {\n return of(this.quarterSavings);\n } else if (diffDays <= 400) {\n return of(this.yearSavings);\n }\n return of(this.monthSavings);\n }\n\n public getClientSummaryAdditionalData(clientId: number, dateRange: DateRange<Date>): Observable<ClientSummaryAdditionalData> { \n return of({eui: this.eui});\n }\n}\n","import { ChangeDetectorRef, Component, Inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { switchMap } from 'rxjs/operators';\nimport { BuildingContact } from 'src/app/models/BuildingInfo';\nimport { BUILDING_SUMMARY_SERVICE, IBuildingSummaryService } from 'src/app/services/interfaces/building-summary.interface';\nimport { SelectedBuildingService } from 'src/app/services/selected-building.service';\nimport { SelectedClientService } from 'src/app/services/selected-client.service';\nimport { BaseComponent } from 'src/app/shared/components/base/base.component';\nimport { BuildingContactModalComponent } from '../building-contact-modal/building-contact-modal.component';\n\n@Component({\n selector: 'br-building-contacts',\n templateUrl: './building-contacts.component.html',\n styleUrls: ['./building-contacts.component.scss']\n})\nexport class BuildingContactsComponent extends BaseComponent implements OnChanges { \n\n @Input()\n public buildingId: number;\n\n public contacts: BuildingContact[]=[];\n\n constructor(private changeDetectorRef: ChangeDetectorRef,\n private selectedClientService: SelectedClientService,\n private dialog: MatDialog,\n public readonly selectedBuildingService: SelectedBuildingService,\n @Inject(BUILDING_SUMMARY_SERVICE) private readonly buildingSummaryService: IBuildingSummaryService\n ) { \n super(); \n }\n\n \n ngOnChanges(changes: SimpleChanges): void {\n if (changes.buildingId) {\n this.getContacts(); \n }\n }\n\n public openContactEditModal(contact: BuildingContact): void {\n\n const contactModal = this.dialog.open(BuildingContactModalComponent, {\n panelClass: 'app-full-bleed-dialog',\n width: '88.9vw',\n data: contact,\n maxWidth: '88.9vw',\n minHeight: '600px'\n });\n\n contactModal.afterClosed().subscribe(result => {\n if (result === 'reget') {\n this.getContacts();\n }\n });\n }\n\n private getContacts(): void {\n this.addSubscription(\n this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap(buildingId => this.buildingSummaryService.getBuildingContacts(buildingId)),\n ).subscribe(res => {\n this.contacts = res;\n this.changeDetectorRef.detectChanges();\n })\n );\n }\n}\n\n\n","<mat-expansion-panel class=\"card\" [expanded]=\"true\" #panel>\n <mat-expansion-panel-header>\n <mat-panel-title>\n <div class=\"text-h3\">{{ 'Contacts' | localizeText }}</div>\n <br-svg-icon name=\"plus\" [width]=\"30\" [height]=\"30\" [color]=\"'black'\" class=\"icon-add-contact\"\n (click)=\"openContactEditModal(null);panel.toggle();\"></br-svg-icon> \n </mat-panel-title>\n </mat-expansion-panel-header>\n <div class=\"table-container\">\n <table>\n <thead>\n <tr>\n <th [style.width]=\"'25%'\">{{ 'Name' | localizeText }}</th>\n <th [style.width]=\"'25%'\">{{ 'Title' | localizeText }}</th>\n <th [style.width]=\"'10%'\">{{ 'Office Number' | localizeText }}</th>\n <th [style.width]=\"'25%'\">{{ 'Email' | localizeText }}</th>\n <th [style.width]=\"'15%'\">{{ 'Cell Phone Number' | localizeText }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let contact of contacts\">\n <td (click)=\"openContactEditModal(contact)\" class=\"link\">{{ contact.name }}</td>\n <td (click)=\"openContactEditModal(contact)\" class=\"link\">{{ contact.title }}</td>\n <td (click)=\"openContactEditModal(contact)\" class=\"link\">{{ contact.officeNumber }}</td>\n <td (click)=\"openContactEditModal(contact)\" class=\"link\">{{ contact.email }}</td>\n <td (click)=\"openContactEditModal(contact)\" class=\"link\">{{ contact.cellPhoneNumber }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n</mat-expansion-panel>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { FacilityBenchmarkData } from '../../models/FacilityBenchmarkData';\nimport { BenchmarksService } from '../../services/real-services/benchmarks.service';\nimport { BaseComponent } from '../../shared/components/base/base.component';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Utils } from '../../shared/utils';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport { SelectedClientService } from '../../services/selected-client.service';\nimport { NOT_FOUND_ROUTE } from '../../routing-const';\n\n@Component({\n selector: 'br-campus-page',\n templateUrl: './campus-page.component.html',\n styleUrls: ['./campus-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CampusPageComponent extends BaseComponent implements OnInit {\n\n @ViewChild('anchor')\n public anchor: ElementRef | null = null;\n\n public advanced$ = new BehaviorSubject<boolean>(false);\n public facilityBenchmarksData$ = new Observable<FacilityBenchmarkData[]>();\n constructor(\n private readonly selectedClientService: SelectedClientService,\n private readonly benchmarksService: BenchmarksService,\n private readonly activateRoute: ActivatedRoute,\n private readonly router: Router,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit(): void { \n this.facilityBenchmarksData$ = this.selectedClientService.selectedClientId$.pipe(\n switchMap(clientId => this.benchmarksService.getClientFacilityBenchmarks(clientId, this.selectedClientService.campusId))\n );\n\n this.addSubscription(\n this.activateRoute.params.pipe(\n map(params => Utils.tryGetNumberFromAny(params.clientId))\n ).subscribe(clientId => {\n if (clientId !== undefined) {\n this.selectedClientService.clientId = clientId;\n } else {\n //!!todo this.router.navigate([NOT_FOUND_ROUTE]);\n }\n })\n );\n\n this.addSubscription(\n this.activateRoute.params.pipe(\n map(params => Utils.tryGetNumberFromAny(params.campusId))\n ).subscribe(campusId => {\n if (campusId !== undefined) {\n this.selectedClientService.campusId = campusId;\n } else {\n //!!todo this.router.navigate([NOT_FOUND_ROUTE]);\n }\n })\n );\n\n this.addSubscription(\n this.advanced$.subscribe((value) => {\n if (value) {\n setTimeout(() => this.scrollToAnchor(), 0);\n }\n })\n );\n\n this.selectedClientService.currentLocalization$.subscribe(localization => {\n if (localization) {\n this.changeDetectorRef.detectChanges(); \n }\n });\n }\n\n public onChanged(advanced: boolean): void {\n this.advanced$.next(advanced);\n }\n\n private scrollToAnchor(): void {\n this.anchor?.nativeElement?.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });\n }\n\n public backToOverview(): void {\n this.router.navigate(['../../'], { relativeTo: this.activateRoute });\n }\n}\n","<button class=\"button-link text-sm-semibold\" (click)=\"backToOverview()\">\n <br-svg-icon name=\"arrow-left\" [width]=\"11\" [height]=\"11\" class=\"arrow icon\"></br-svg-icon>\n <span>{{ 'Back to Overview' | localizeText }}</span>\n </button>\n<br-campus-summary (summaryChanged)=\"onChanged($event)\"></br-campus-summary>\n<br-building-spreadsheet></br-building-spreadsheet>\n<div #anchor></div>\n<br-event-snapshot *ngIf=\"advanced$ | async\" class=\"avoid-page-breaks-inside\"></br-event-snapshot>\n<br-facility-benchmarks *ngIf=\"advanced$ | async\" [data]=\"(facilityBenchmarksData$ | async)!\" class=\"avoid-page-breaks-inside\"></br-facility-benchmarks>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'br-svg-icon',\n templateUrl: './svg-icon.component.html',\n styleUrls: ['./svg-icon.component.scss']\n})\nexport class SvgIconComponent {\n\n @Input()\n public name = '';\n\n @Input()\n public width: number | undefined;\n\n @Input()\n public height: number | undefined;\n\n @Input()\n public color: string | undefined;\n\n public get absUrl(): string {\n return window.location.href;\n }\n}\n","<svg [attr.width]=\"width\" [attr.height]=\"height\" [attr.fill]=\"color\">\n <use [attr.xlink:href]=\"absUrl + '#' + name\"></use>\n</svg>\n","import { DatePipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { NumberFormat } from 'src/app/shared/models/NumberFormat';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { ValueFormatPipe } from 'src/app/shared/pipes/value-format.pipe';\n\nexport interface EventProperty {\n name: string;\n width: string;\n getter: (arg: any) => string | null | undefined;\n isEditable: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BuildingEventModalModel {\n\n private valuePipe = new ValueFormatPipe();\n private datePipe = new DatePipe('en-US');\n\n constructor(private localizeText: LocalizeTextPipe) {\n }\n\n public propMap: Record<string, EventProperty> = {\n addedBy: { name: this.localizeText.transform('Added By'), width: '9.82%', getter: (arg: string) => arg, isEditable: false },\n engineer: { name: this.localizeText.transform('Engineer'), width: '16.72%', getter: (arg: string) => arg, isEditable: true },\n addedDate: { name: this.localizeText.transform('Added date'), width: '13.15%', getter: (arg: Date) => this.datePipe.transform(arg, 'MM/dd/yyyy'), isEditable: false },\n daysImplemented: { name: this.localizeText.transform('Days Implemented'), width: '13.15%', getter: (arg: number) => `${arg} Days`, isEditable: false },\n // impact: { name: this.localizeText.transform('Impact %'), width: '8.85%', getter:\n // (arg: number) => this.valuePipe.transform(arg, NumberFormat.defaultPercentsFormat), isEditable: false },\n description: { name: this.localizeText.transform('Description'), width: '38.31%', getter: (arg: string) => arg, isEditable: true },\n // id: { name: '№', width: '0%', getter: (arg: number) => arg.toString(), isEditable: false },\n // eventType: { name: 'Equipment', width: '0%', getter: (arg: string) => arg, isEditable: false },\n };\n}\n\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { environment } from '../../../environments/environment';\nimport { EndpointConst } from './endpoint-const';\nimport { DateRange } from '@angular/material/datepicker';\nimport { IEventSnapshotService } from '../interfaces/event-snapshot.interface';\nimport { EventsByType, EventSummary } from 'src/app/components/building-events/building-event.model';\nimport { ClientDateRange } from '../../models/ClientDateRange';\nimport { BuildingDateRange } from '../../models/BuildingDateRange';\n\n@Injectable()\nexport class EventSnapshotService implements IEventSnapshotService {\n private REST_API_SERVER = environment.apiUrl;\n private readonly BUILDING_EVENTS = 'events';\n\n constructor(private httpClient: HttpClient) { }\n\n public getEventSummary(clientId: number, campusId: number | undefined, dateRange: DateRange<Date>): Observable<EventSummary> {\n const data = this.httpClient.post<EventSummary>(\n `${this.REST_API_SERVER}/${EndpointConst.DASHBOARD}/${this.BUILDING_EVENTS}`,\n {\n clientId,\n campusId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as ClientDateRange);\n return data;\n }\n\n public getBuildingEventVolumeByType(buildingId: number, dateRange: DateRange<Date>): Observable<EventsByType[]> {\n const data = this.httpClient.post<EventsByType[]>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${this.BUILDING_EVENTS}`,\n {\n buildingId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as BuildingDateRange);\n return data;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimport { Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { AuthenticationService } from '../../shared/services/authentication.service';\nimport { LOGIN_ROUTE, ADMIN_ROUTE, CLIENT_SELECT_ROUTE } from '../../routing-const';\nimport { TokenProviderService } from 'src/app/shared/services/token-provider.service';\nimport { SelectedClientService } from 'src/app/services/selected-client.service';\nimport { LocalizationInfo } from 'src/app/models/AuthModel';\nimport { takeLast } from 'rxjs/operators';\n\n@Component({\n selector: 'br-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n public qmetDashboardLink = environment.qmetDashboardLink;\n public isUserAuthenticated$ = new Observable<boolean>();\n\n public isEditMode: boolean = false;\n public isEditor: boolean = false;\n public isEngCoAdmin: boolean = false;\n\n public localization: LocalizationInfo;\n\n constructor(private authService: AuthenticationService,\n private router: Router,\n private tokenProvider: TokenProviderService,\n private selectedClientService: SelectedClientService,\n ) { }\n\n ngOnInit(): void {\n this.isUserAuthenticated$ = this.authService.authChanged$;\n\n this.selectedClientService.currentIsEditMode$.subscribe(isEditMode => {\n this.isEditMode = isEditMode;\n });\n\n this.selectedClientService.currentIsEditor$.subscribe(isEditor => {\n this.isEditor = isEditor;\n });\n\n this.selectedClientService.currentIsEngCoAdmin$.subscribe(isEngCoAdmin => {\n this.isEngCoAdmin = isEngCoAdmin;\n });\n\n this.selectedClientService.currentLocalization$.subscribe(localization => {\n this.localization = localization;\n });\n }\n\n public logout(): void {\n this.authService.logout();\n this.navigateToLogin();\n }\n\n public navigateToLogin(): void {\n this.router.navigate([LOGIN_ROUTE]);\n }\n\n public openClientSelect(): void {\n this.router.navigate([CLIENT_SELECT_ROUTE]);\n }\n\n public openQmet(): void {\n //document.cookie = \"auth=\" + this.tokenProvider.getToken();\n\n let targetLink = this.qmetDashboardLink;\n let authParam = '?key=' + this.tokenProvider.getToken();\n targetLink += authParam;\n\n window.open(targetLink);\n }\n\n public toggleEditMode(): void {\n this.selectedClientService.toggleIsEditMode();\n }\n\n public onLanguageChanged(ev: any): void {\n var selectedLanguage = this.localization.languages.filter(p => p.code == this.localization.currentLanguage.code)[0];\n this.authService.changeLanguage(selectedLanguage)\n .pipe(takeLast(1))\n .subscribe(res => {\n \n });\n }\n\n public navigateToAdmin(): void {\n this.router.navigate([ADMIN_ROUTE]);\n }\n}\n\n\n","<!-- <img class=\"logo\" src=\"../../../assets/images/BrogdonEnergyLogo.svg\" alt=\"Brogdon Energy Logo\"> -->\n<div class=\"header-brogdon-block\">\n <img class=\"logo-header\" src=\"../../../assets/images/Brogdon_Logo.jpg\" alt=\"Brogdon Logo\"> \n</div>\n<div class=\"header-block\">\n <img class=\"logo\" src=\"../../../assets/images/Everest_Logo_300.png\" alt=\"Everest Logo\" *ngIf=\"!isEditor && !isEngCoAdmin\">\n <img class=\"logo\" src=\"../../../assets/images/Everest_Logo_300.png\" alt=\"Everest Logo\" (click)=openClientSelect() *ngIf=\"isEditor || isEngCoAdmin\" style=\"cursor: pointer;\">\n <div class=\"menu\">\n <!--//!!todo <a [href]=\"qmetDashboardLink\" class=\"right menu-item text-st-semibold\" target=\"_blank\">QMET Modeling Dashboard</a> -->\n <a (click)=toggleEditMode() class=\"right menu-item text-st-semibold\" *ngIf=\"isEditor\"><span *ngIf=\"!isEditMode\">{{ 'Switch to Edit Mode' | localizeText }}</span><span *ngIf=\"isEditMode\">{{ 'Switch to View Mode' | localizeText }}</span></a>\n <mat-select [(value)]=\"localization.currentLanguage.code\" style=\"width: 230px; margin-left: auto;\" (selectionChange)=\"onLanguageChanged($event)\" *ngIf=\"localization\">\n <mat-option *ngFor=\"let language of localization.languages\" [value]=\"language.code\">{{ language.name === language.nativeName ? language.name : language.name + ' (' + language.nativeName + ')' }}</mat-option> \n </mat-select>\n <a (click)=navigateToAdmin() class=\"right menu-item text-st-semibold\" *ngIf=\"isEditor\">Admin</a>\n <a (click)=openQmet() class=\"right menu-item text-st-semibold\">{{ 'QMET Modeling Dashboard' | localizeText }}</a> \n <a *ngIf=\"!(isUserAuthenticated$ | async)\" (click)=\"navigateToLogin()\" class=\"menu-item text-st-semibold\">{{ 'Login' | localizeText }}</a>\n <a *ngIf=\"(isUserAuthenticated$ | async)\" class=\"menu-item text-st-semibold\" (click)=\"logout()\">{{ 'Logout' | localizeText }}</a>\n </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { BuildingData } from 'src/app/models/BuildingData';\r\n@Pipe({\r\n name: 'tagfilter',\r\n pure: false\r\n})\r\nexport class TagFilterPipe implements PipeTransform {\r\n transform(items: BuildingData[], filterTag: string): any {\r\n if (!items || !filterTag) {\r\n return items;\r\n }\r\n\r\n return items.filter(\r\n item => item.tags &&\r\n item.tags.filter(\r\n tag => tag.toUpperCase().includes(filterTag.toUpperCase())\r\n ).length > 0\r\n );\r\n }\r\n}","import { Provider } from '@angular/core';\nimport { NgModule, Type } from '@angular/core';\nimport { Dictionary } from 'lodash';\nimport { environment } from '../../environments/environment';\nimport { BuildingSpreadsheetStubService } from './stub-services/building-spreadshee.stub.service';\nimport { BuildingSummaryStubService } from './stub-services/building-summary.stub.service';\nimport { ClientSummaryStubService } from './stub-services/client-summary.stub.service';\nimport { BuildingSpreadsheetRealService } from './real-services/building-spreadsheet.service';\nimport { BuildingSummaryRealService } from './real-services/building-summary.service';\nimport { ClientSummaryRealService } from './real-services/client-summary.service';\nimport { GoLiveDateService } from './real-services/go-live-date.service';\nimport { GoLiveDateStubService } from './stub-services/dashboard.stub.service';\nimport { EventSnapshotService } from './real-services/event-snapshot.service';\nimport { ImageService } from './real-services/image.service';\n\nexport interface ServiceMetadata {\n stub?: any;\n real?: any;\n}\n\nconst services: Dictionary<ServiceMetadata> = {\n CLIENT_SUMMARY_SERVICE: {\n stub: ClientSummaryStubService,\n real: ClientSummaryRealService\n },\n BUILDING_SPREADSHEET_SERVICE: {\n stub: BuildingSpreadsheetStubService,\n real: BuildingSpreadsheetRealService\n },\n BUILDING_SUMMARY_SERVICE: {\n stub: BuildingSummaryStubService,\n real: BuildingSummaryRealService\n },\n EVENT_SNAPSHOT_SERVICE: {\n stub: EventSnapshotService,\n real: EventSnapshotService\n },\n GO_LIVE_DATE_SERVICE: {\n stub: GoLiveDateStubService,\n real: GoLiveDateService\n },\n IMAGE_SERVICE: {\n stub: ImageService,\n real: ImageService\n } \n};\n\n@NgModule({\n providers: [\n ...getProviders()\n ]\n})\nexport class ServicesModule { }\n\nexport function getProviders(): Provider[] {\n return Object.keys(services).map(key => ({\n provide: key,\n useClass: !!environment.useStubServices[key] ? services[key].stub : services[key].real\n } as Provider));\n}\n","import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { switchMap } from 'rxjs/operators';\nimport { BuildingContact } from 'src/app/models/BuildingInfo';\nimport { NoteItem } from 'src/app/models/EquipmentsEvents';\nimport { BUILDING_SUMMARY_SERVICE, IBuildingSummaryService } from 'src/app/services/interfaces/building-summary.interface';\nimport { SelectedBuildingService } from 'src/app/services/selected-building.service';\nimport { BaseComponent } from 'src/app/shared/components/base/base.component';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\n\n@Component({\n selector: 'br-building-contact-modal',\n templateUrl: './building-contact-modal.component.html',\n styleUrls: ['./building-contact-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BuildingContactModalComponent extends BaseComponent {\n\n public isEditMode: boolean = false;\n public isNewContact: boolean = false;\n public contact: BuildingContact = null;\n\n constructor(\n public dialogRef: MatDialogRef<BuildingContactModalComponent>,\n @Inject(MAT_DIALOG_DATA) public data: BuildingContact,\n public readonly selectedBuildingService: SelectedBuildingService,\n @Inject(BUILDING_SUMMARY_SERVICE) private readonly buildingSummaryService: IBuildingSummaryService,\n private localizeText: LocalizeTextPipe) {\n super();\n\n this.contact = data;\n\n if (this.contact === null) {\n this.isNewContact = true;\n this.contact = new BuildingContact();\n this.isEditMode = true;\n }\n }\n\n public saveNotes(notes: NoteItem[]): void {\n this.contact.notes = notes;\n this.contact.notes = this.contact.notes.filter(p => p.text !== '');\n\n if (!this.isNewContact) {\n this.saveContact(false);\n }\n }\n\n public deleteClicked() {\n if (confirm(this.localizeText.transform(\"Are you sure you want to delete this Contact?\"))) {\n this.addSubscription(\n this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap(buildingId => this.buildingSummaryService.deleteBuildingContact(buildingId, this.contact)),\n ).subscribe(res => {\n this.dialogRef.close('reget');\n })\n );\n }\n }\n\n public saveClicked() { \n this.saveContact();\n }\n\n public editClicked() {\n this.isEditMode = true;\n }\n\n private saveContact(isCloseAfterSave: boolean = true) {\n this.addSubscription(\n this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap(buildingId => this.buildingSummaryService.saveBuildingContact(buildingId, this.contact)),\n ).subscribe(res => {\n if (isCloseAfterSave) {\n this.dialogRef.close('reget');\n } \n })\n );\n }\n}\n","<div class=\"title\">\n <span class=\"text-h3\">{{ 'Contact' | localizeText }}</span>\n <button class=\"close-button text-h3\" mat-dialog-close>x</button> \n</div>\n<table *ngIf=\"isEditMode\">\n <tbody>\n <tr>\n <td>\n <mat-form-field class=\"contact-form-field\">\n <mat-label>{{ 'Name' | localizeText }}</mat-label>\n <input matInput placeholder=\"\" [(ngModel)]=\"contact.name\"\n [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n </td>\n <td>\n <mat-form-field class=\"contact-form-field\">\n <mat-label>{{ 'Title' | localizeText }}</mat-label>\n <input matInput placeholder=\"\" [(ngModel)]=\"contact.title\"\n [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n </td>\n <td>\n <mat-form-field class=\"contact-form-field\">\n <mat-label>{{ 'Office Number' | localizeText }}</mat-label>\n <input matInput placeholder=\"\" [(ngModel)]=\"contact.officeNumber\"\n [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n </td>\n </tr>\n <tr>\n <td>\n <mat-form-field class=\"contact-form-field\">\n <mat-label>{{ 'Cell Phone Number' | localizeText }}</mat-label>\n <input matInput placeholder=\"\" [(ngModel)]=\"contact.cellPhoneNumber\"\n [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n </td>\n <td>\n <mat-form-field class=\"contact-form-field\">\n <mat-label>{{ 'Email' | localizeText }}</mat-label>\n <input matInput placeholder=\"\" [(ngModel)]=\"contact.email\"\n [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n </td>\n </tr>\n </tbody>\n</table>\n<table class=\"contact-view-table\" *ngIf=\"!isEditMode\">\n <tbody>\n <tr>\n <td class=\"contact-keys-column\"><span>{{ 'Name' | localizeText }}</span></td>\n <td class=\"contact-values-column\"><span>{{ contact.name }}</span></td>\n </tr>\n <tr>\n <td class=\"contact-keys-column\"><span>{{ 'Title' | localizeText }}</span></td>\n <td class=\"contact-values-column\"><span>{{ contact.title }}</span></td>\n </tr>\n <tr>\n <td class=\"contact-keys-column\"><span>{{ 'Office Number' | localizeText }}</span></td>\n <td class=\"contact-values-column\"><span>{{ contact.officeNumber }}</span></td>\n </tr>\n <tr>\n <td class=\"contact-keys-column\"><span>{{ 'Cell Phone Number' | localizeText }}</span></td>\n <td class=\"contact-values-column\"><span>{{ contact.cellPhoneNumber }}</span></td>\n </tr>\n <tr>\n <td class=\"contact-keys-column\"><span>{{ 'Email' | localizeText }}</span></td>\n <td class=\"contact-values-column\"><span>{{ contact.email }}</span></td>\n </tr>\n </tbody>\n</table>\n<div class=\"note-item\">\n <br-note-manager\n [noteItems]=\"contact.notes\"\n (onSaveNotes)=\"saveNotes($event)\">\n </br-note-manager>\n <div class=\"main-button-block\">\n <button mat-raised-button color=\"warn\" (click)=editClicked() class=\"button-edit\" *ngIf=\"!isEditMode\">{{ 'Edit Contact' | localizeText }}</button>\n <button mat-raised-button color=\"warn\" (click)=deleteClicked() class=\"button-delete\" *ngIf=\"!isNewContact && isEditMode\">{{ 'Delete Contact' | localizeText }}</button>\n <button mat-raised-button color=\"primary\" (click)=saveClicked() *ngIf=\"isEditMode\">{{ 'Save Contact' | localizeText }}</button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { environment } from '../../../environments/environment';\nimport { EndpointConst } from './endpoint-const';\nimport { IGoLiveDateService } from '../interfaces/go-live-date.interface';\nimport { shareReplay } from 'rxjs/operators';\nimport { GoLiveDateInfo } from 'src/app/shared/models/GoLiveDateInfo';\n\n@Injectable()\nexport class GoLiveDateService implements IGoLiveDateService {\n\n private readonly REST_API_SERVER = environment.apiUrl;\n private readonly GO_LIVE_DATE = 'goLiveDate';\n\n constructor(private httpClient: HttpClient) { }\n\n public getBuildingGoLiveDate(buildingId: number): Observable<GoLiveDateInfo> {\n return this.httpClient.get<GoLiveDateInfo>(`${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.GO_LIVE_DATE}`);\n }\n\n public getGoLiveDate(clientId: number): Observable<Date> {\n return this.httpClient.get<Date>(`${this.REST_API_SERVER}/${EndpointConst.DASHBOARD}/${clientId}/${this.GO_LIVE_DATE}`);\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, Input, OnInit } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map, shareReplay, switchMap } from 'rxjs/operators';\nimport { EVENT_SNAPSHOT_SERVICE, IEventSnapshotService } from 'src/app/services/interfaces/event-snapshot.interface';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { GoLiveDateStorage } from '../../services/go-live-date-storage.service';\nimport { SelectedClientService } from '../../services/selected-client.service';\nimport { BarChartData, HorizontalBarChartOptions, MaxValueStrategy } from '../../shared/components/bar-chart/bar-chart.model';\nimport { BaseComponent } from '../../shared/components/base/base.component';\nimport { NumberFormat } from '../../shared/models/NumberFormat';\nimport { BuildingEventCommonImpact, EventsByBuilding, EventSummary } from '../building-events/building-event.model';\nimport { DateSelectorService, EventSnapshotDateService } from '../date-selector/date-selector.service';\n\n@Component({\n selector: 'br-event-snapshot',\n templateUrl: './event-snapshot.component.html',\n styleUrls: ['./event-snapshot.component.scss'],\n providers: [DateSelectorService,\n { provide: DateSelectorService,\n useExisting: EventSnapshotDateService\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EventSnapshotComponent extends BaseComponent implements OnInit {\n private readonly chartDescription = this.localizeText.transform('To view event details, select a building from the Building Spreadsheet area above.');\n\n public volumeByBuildingChartOptions: HorizontalBarChartOptions = {\n chartTitle: this.localizeText.transform('Event Volume by Building'),\n description: this.chartDescription,\n maxHeight: 520,\n datasets: [\n {\n key: 'lb1',\n label: this.localizeText.transform('Events'),\n format: NumberFormat.shortNumberFormat,\n maxValueStrategy: MaxValueStrategy.maxDataset\n }\n ]\n };\n\n public volumeByTypeChartOptions: HorizontalBarChartOptions = {\n chartTitle: this.localizeText.transform('Event Volume by Type'),\n description: this.chartDescription,\n maxHeight: 520,\n datasets: [\n {\n key: 'lb1',\n label: this.localizeText.transform('Events'),\n format: NumberFormat.shortNumberFormat,\n maxValueStrategy: MaxValueStrategy.maxDataset\n },\n // {\n // key: 'lb2',\n // label: this.localizeText.transform('Usage'),\n // format: NumberFormat.defaultPercentsFormat,\n // maxValueStrategy: MaxValueStrategy.percentsMax\n // }\n ]\n };\n\n public volumeByBuildingData$ = new Observable<BarChartData>();\n public volumeByTypeData$ = new Observable<BarChartData>();\n public liveDate$ = this.clientGoLiveDateService.clientGoLiveDate$;\n\n constructor(\n private readonly selectedClientService: SelectedClientService,\n private readonly dateFilterService: DateSelectorService,\n @Inject(EVENT_SNAPSHOT_SERVICE) private readonly eventSnapshotService: IEventSnapshotService,\n private readonly clientGoLiveDateService: GoLiveDateStorage,\n private localizeText: LocalizeTextPipe\n ) {\n super();\n }\n\n ngOnInit(): void {\n const eventSummary$ = combineLatest([\n this.selectedClientService.selectedClientId$,\n this.selectedClientService.selectedCampusId$,\n this.dateFilterService.dateRangeChanged$,\n ]).pipe(\n switchMap(([clientId, campusId, dateRange]) => this.eventSnapshotService.getEventSummary(clientId, campusId, dateRange)),\n shareReplay()\n );\n\n this.volumeByBuildingData$ = eventSummary$.pipe(map(data => this.createVolumeByBuildingData(data.eventsByBuilding)));\n this.volumeByTypeData$ = eventSummary$.pipe(map(data => this.createVolumeByTypeData(data.eventsVolumeByType)));\n }\n\n public createVolumeByBuildingData(events: EventsByBuilding[]): BarChartData {\n return events.reduce((volumeByBuildingData, curr) => {\n volumeByBuildingData.titles.push(curr.buildingName);\n volumeByBuildingData.values.lb1.push(curr.events.length);\n return volumeByBuildingData;\n }, this.emptyVolumeByBuildingData);\n }\n\n public createVolumeByTypeData(events: BuildingEventCommonImpact[]): BarChartData {\n return events.reduce((volumeByTypeData, curr) => {\n volumeByTypeData.titles.push(curr.typedEvents.eventsType);\n volumeByTypeData.values.lb1.push(curr.typedEvents.events.length);\n volumeByTypeData.values.lb2.push(curr.commonImpact);\n return volumeByTypeData;\n }, this.emptyVolumeByTypeData);\n }\n\n private get emptyVolumeByBuildingData(): BarChartData {\n return {\n titles: [],\n values: {\n lb1: [],\n }\n } as BarChartData;\n }\n\n private get emptyVolumeByTypeData(): BarChartData {\n return {\n titles: [],\n values: {\n lb1: [],\n lb2: []\n }\n } as BarChartData;\n }\n}\n","<div class=\"component-title\">\n <div class=\"text-h3 component-title__text\">{{ 'Event Snapshot' | localizeText }}</div>\n <br-date-selector [goLiveDate]=\"liveDate$ | async\"></br-date-selector>\n</div>\n<div class=\"cards-container\">\n <br-card class=\"marg col-adaptive\">\n <br-bar-chart [options]=\"volumeByBuildingChartOptions\" [data]=\"volumeByBuildingData$ | async\"></br-bar-chart>\n </br-card>\n <br-card class=\"marg col-adaptive\">\n <br-bar-chart [options]=\"volumeByTypeChartOptions\" [data]=\"volumeByTypeData$ | async\"></br-bar-chart>\n </br-card>\n</div>\n","import { DatePipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { AirHandlersEvents, BasControlsEvents, BoilerEvents, ChillerEvents,\n CoolingTowersEvents, EnergyUsesItem, Equipment, EquipmentEvents, HotWaterConvertersEvents, MriEvents, WishListEvents, WishListItem } from '../../models/EquipmentsEvents';\nimport { GridOptions } from './building-asset/building-asset.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AssetListModel {\n constructor(private localizeText: LocalizeTextPipe,\n private datePipe: DatePipe) { \n }\n\n private readonly manufacturerNameCaption = this.localizeText.transform('Manufacturer');\n private readonly controllabilityCaption = this.localizeText.transform('Controllability');\n private readonly ageCaption = this.localizeText.transform('Age');\n private readonly eventsColumn = { caption: this.localizeText.transform('Events'), alignRight: true, getter: (c: EquipmentEvents<Equipment>) => c.events.length };\n\n public readonly chillersGridOptions: GridOptions<ChillerEvents> = {\n columnOptions: [\n { caption: this.localizeText.transform('Name'), width: 260, getter: (e: ChillerEvents) => e.equipment.name },\n { caption: this.controllabilityCaption, width: 260, getter: (e: ChillerEvents) => e.equipment.controllability },\n { caption: this.manufacturerNameCaption, width: 320, getter: (e: ChillerEvents) => e.equipment.manufacturerName },\n { caption: this.localizeText.transform('Tonnage'), width: 240, getter: (e: ChillerEvents) => e.equipment.tonnage },\n { caption: this.localizeText.transform('Model #'), width: 240, getter: (e: ChillerEvents) => e.equipment.model },\n { caption: this.localizeText.transform('Serial #'), width: 240, getter: (e: ChillerEvents) => e.equipment.serial }, \n { caption: this.localizeText.transform('Type'), width: 260, getter: (e: ChillerEvents) => e.equipment.chillerType }, \n { caption: this.localizeText.transform('Date Installed'), width: 240, getter: (e: ChillerEvents) => this.formatDate(e.equipment.dateInstalled) },\n \n this.eventsColumn\n ],\n getTitle: (e: ChillerEvents) => e.equipment.manufacturerName\n };\n\n public readonly boilersGridOptions: GridOptions<BoilerEvents> = {\n columnOptions: [\n { caption: this.localizeText.transform('Name'), width: 260, getter: (e: BoilerEvents) => e.equipment.name },\n { caption: this.controllabilityCaption, width: 230, getter: (e: BoilerEvents) => e.equipment.controllability },\n { caption: this.manufacturerNameCaption, width: 260, getter: (e: BoilerEvents) => e.equipment.manufacturerName },\n { caption: this.localizeText.transform('Size (HP)'), width: 150, getter: (e: BoilerEvents) => e.equipment.size },\n { caption: this.localizeText.transform('Model #'), width: 240, getter: (e: BoilerEvents) => e.equipment.model },\n { caption: this.localizeText.transform('Serial #'), width: 240, getter: (e: BoilerEvents) => e.equipment.serial },\n { caption: this.localizeText.transform('Date Installed'), width: 240, getter: (e: BoilerEvents) => this.formatDate(e.equipment.dateInstalled) },\n this.eventsColumn\n ],\n getTitle: (e: BoilerEvents) => e.equipment.manufacturerName\n };\n\n public readonly coolingTowersGridOptions: GridOptions<CoolingTowersEvents> = {\n columnOptions: [\n { caption: this.localizeText.transform('Name'), width: 260, getter: (e: CoolingTowersEvents) => e.equipment.name },\n { caption: this.localizeText.transform('Chiller(s)'), width: 200, getter: (e: CoolingTowersEvents) => e.equipment.chillers },\n { caption: this.controllabilityCaption, width: 200, getter: (e: CoolingTowersEvents) => e.equipment.controllability },\n { caption: this.manufacturerNameCaption, width: 280, getter: (e: CoolingTowersEvents) => e.equipment.manufacturerName },\n { caption: this.localizeText.transform('Model #'), width: 240, getter: (e: CoolingTowersEvents) => e.equipment.model },\n { caption: this.localizeText.transform('Serial #'), width: 240, getter: (e: CoolingTowersEvents) => e.equipment.serial },\n { caption: this.localizeText.transform('Date Installed'), width: 240, getter: (e: CoolingTowersEvents) => this.formatDate(e.equipment.dateInstalled) }, \n this.eventsColumn\n ],\n getTitle: (e: CoolingTowersEvents) => e.equipment.manufacturerName\n };\n\n public readonly airHandlersGridOptions: GridOptions<AirHandlersEvents> = {\n columnOptions: [\n { caption: this.localizeText.transform('Name'), width: 260, getter: (e: AirHandlersEvents) => e.equipment.name },\n { caption: this.controllabilityCaption, width: 110, getter: (e: AirHandlersEvents) => e.equipment.controllability },\n { caption: this.localizeText.transform('Area Served'), width: 120, getter: (e: AirHandlersEvents) => e.equipment.areaServed },\n { caption: this.localizeText.transform('Chiller Served'), width: 120, getter: (e: AirHandlersEvents) => e.equipment.chillerServed },\n { caption: this.localizeText.transform('Type'), width: 120, getter: (e: AirHandlersEvents) => e.equipment.mainType },\n this.eventsColumn\n ],\n getTitle: (e: AirHandlersEvents) => e.equipment.floorName\n };\n\n public readonly hwConvertersGridOptions: GridOptions<HotWaterConvertersEvents> = {\n columnOptions: [\n { caption: this.localizeText.transform('Name'), width: 260, getter: (e: HotWaterConvertersEvents) => e.equipment.name },\n { caption: this.controllabilityCaption, width: 100, getter: (e: HotWaterConvertersEvents) => e.equipment.controllability },\n { caption: this.manufacturerNameCaption, width: 280, getter: (e: HotWaterConvertersEvents) => e.equipment.manufacturer },\n { caption: this.localizeText.transform('Date Installed'), width: 240, getter: (e: HotWaterConvertersEvents) => this.formatDate(e.equipment.dateInstalled) }, \n \n this.eventsColumn\n ],\n getTitle: (e: HotWaterConvertersEvents) => e.equipment.loopName\n };\n\n public readonly basControlsGridOptions: GridOptions<BasControlsEvents> = {\n columnOptions: [\n { caption: this.manufacturerNameCaption, width: 300, getter: (e: BasControlsEvents) => e.equipment.manufacturerName },\n { caption: this.localizeText.transform('Model'), width: 240, getter: (e: BasControlsEvents) => e.equipment.informationModel },\n { caption: this.localizeText.transform('Date Installed'), width: 240, getter: (e: BasControlsEvents) => this.formatDate(e.equipment.dateInstalled) },\n { caption: this.localizeText.transform('Remote Access'), width: 200,\n getter: (e: BasControlsEvents) => this.formatBool(e.equipment.remoteAccess) }, \n { caption: this.localizeText.transform('% Pneumatic'), width: 240,\n getter: (e: BasControlsEvents) => this.formatPercents(e.equipment.percentPneumatic) },\n { caption: this.localizeText.transform('% DDC'), width: 200, getter: (e: BasControlsEvents) => e.equipment.percentDdc },\n this.eventsColumn\n ],\n getTitle: (e: BasControlsEvents) => e.equipment.manufacturerName\n };\n\n public readonly mriGridOptions: GridOptions<MriEvents> = {\n columnOptions: [\n { caption: this.localizeText.transform('Description'), width: 100, getter: (e: MriEvents) => e.equipment.description },\n this.eventsColumn\n ],\n getTitle: (e: MriEvents) => this.localizeText.transform('MRI')\n };\n\n public readonly wishListGridOptions: GridOptions<WishListItem> = {\n hideEventsLink: true,\n columnOptions: [\n { caption: this.localizeText.transform('Item'), width: 100, getter: (i: WishListItem) => i.description },\n ],\n };\n\n public readonly energyUsesGridOptions: GridOptions<EnergyUsesItem> = {\n hideEventsLink: true,\n columnOptions: [\n { caption: this.localizeText.transform('Large Equipment/Room'), width: 370, getter: (i: EnergyUsesItem) => i.name },\n { caption: this.localizeText.transform('Electric Energy Source'), width: 300, getter: (i: EnergyUsesItem) => i.electricEnergySource },\n { caption: this.localizeText.transform('Natural Gas Source'), width: 300, getter: (i: EnergyUsesItem) => i.naturalGasSource }\n ],\n };\n\n private formatAge = (age: number) => `${age} ${this.localizeText.transform('yr')}`;\n private formatBool = (bool: boolean) => bool ? this.localizeText.transform('True') : this.localizeText.transform('False');\n private formatPercents = (value: number) => value ? `${value}%` : '';\n private formatDate = (value?: Date) => `${value ? this.datePipe.transform(value,\"yyyy-MM-dd\") : ''}`;\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { DateRange } from '@angular/material/datepicker';\n\n@Injectable()\nexport class DateSelectorService {\n\n private initialSelectedIndex = 2;\n private dateArray = [this.getFirstDate(1), this.getFirstDate(7), this.getFirstDate(0, 1),\n this.getFirstDate(0, 3), this.getFirstDate(0, 0, 1), new Date(new Date().getFullYear(), 0, 1, 0, 0 , 0 ,0) ];\n private dateRange = new BehaviorSubject<DateRange<Date>>(this.getInitDateRange());\n private selectedIndex = new BehaviorSubject<number>(this.initialSelectedIndex);\n public readonly dateRangeChanged$ = this.dateRange.asObservable();\n public readonly selectedIndexChanged$ = this.selectedIndex.asObservable();\n\n public setSelectedIndex(index: number): void {\n this.selectedIndex.next(index);\n if (index < 6) {\n this.setDateRangeByIndex(index);\n }\n }\n\n public setDateRangeByIndex(index: number): void {\n const startDate = this.dateArray[index];\n const endDate = new Date();\n this.setStartEndDates(startDate, endDate);\n }\n\n public setStartEndDates(startDate: Date, endDate: Date): void {\n this.setDateRange(new DateRange(startDate, endDate));\n }\n\n public setDateRange(value: DateRange<Date>): void {\n this.dateRange.next(value);\n }\n\n public getDateRange(): DateRange<Date> {\n return this.dateRange.getValue();\n }\n\n private getInitDateRange(): DateRange<Date> {\n return new DateRange(this.dateArray[this.initialSelectedIndex], new Date());\n }\n\n private getFirstDate(day = 0, month = 0, year = 0): Date {\n const date = new Date();\n if (day !== 0) {\n date.setDate(date.getDate() - day);\n }\n else if (month !== 0) {\n date.setMonth(date.getMonth() - month);\n }\n else if (year !== 0) {\n date.setFullYear(date.getFullYear() - year);\n }\n return date;\n }\n}\n\n@Injectable()\nexport class ClientSummaryDateService extends DateSelectorService {}\n\n@Injectable()\nexport class BuildingSpreadsheetDateService extends DateSelectorService {}\n\n@Injectable()\nexport class EventSnapshotDateService extends DateSelectorService {}\n\n@Injectable()\nexport class AlarmDateService extends DateSelectorService {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { BoilerEvents, BoilerInfo, ChillerEvents, Equipment, EquipmentEvents, EquipmentType } from 'src/app/models/EquipmentsEvents';\nimport { BaseComponent } from '../../../shared/components/base/base.component';\nimport { BuildingEquipmentModalComponent } from '../../building-equipment-modal/building-equipment-modal.component';\nimport { BuildingEventModalComponent } from '../../building-event-modal/building-event-modal.component';\nimport { ChillerInfo } from 'src/app/models/EquipmentsEvents';\nimport { SelectedClientService } from 'src/app/services/selected-client.service';\n\nexport class GridOptions<T> {\n columnOptions: ColumnOption<T>[] = [];\n hideEventsLink?: boolean;\n getTitle?: (value: T) => any = (value: T) => '';\n\n}\n\nexport class ColumnOption<T> {\n caption = '';\n width?: number;\n alignRight ? = false;\n getter: (value: T) => any = (value: T) => undefined;\n}\n\n@Component({\n selector: 'br-building-asset',\n templateUrl: './building-asset.component.html',\n styleUrls: ['./building-asset.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BuildingAssetComponent<T extends EquipmentEvents<Equipment> | Equipment> extends BaseComponent implements OnChanges, OnInit {\n\n @Input()\n public equipmentName = '';\n\n @Input()\n public equipmentType!: string;\n\n @Input()\n public equimpmentsList: T[] = [];\n\n @Input()\n public gridOptions!: GridOptions<T>;\n\n @Input()\n public assetListInfo?: string;\n\n @Input()\n public chillers: ChillerEvents[] = [];\n\n @Input()\n public boilers: BoilerEvents[] = [];\n\n @Output() \n public onRegetRequested = new EventEmitter<boolean>();\n\n public totalWidth = 0;\n public equimpmentsCount = 0;\n public detailsInfo = '';\n public showEventsLink = true;\n\n public isEditMode: boolean = false;\n\n constructor(private dialog: MatDialog,\n private selectedClientService: SelectedClientService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n super();\n }\n\n public ngOnInit(): void { \n this.selectedClientService.currentIsEditMode$.subscribe(isEditMode => {\n this.isEditMode = isEditMode;\n this.changeDetectorRef.detectChanges(); \n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.equimpmentsList) {\n this.equimpmentsCount = this.equimpmentsList?.length ?? 0;\n this.detailsInfo = this.assetListInfo || this.equimpmentsCount.toString();\n }\n if (changes.gridOptions) {\n this.showEventsLink = !this.gridOptions.hideEventsLink;\n this.totalWidth = this.gridOptions.columnOptions\n .map(option => option.width)\n .reduce((acc: number, value) => acc + (value ?? 0), 0);\n }\n }\n\n public openEquipmentEditModal(equipment : T | null, equipmentType : string){\n\n const equipmentModal = this.dialog.open(BuildingEquipmentModalComponent, {\n panelClass: 'app-full-bleed-dialog',\n width: '88.9vw',\n data: {\n equipmentEvents: equipment,\n equipmentType: this.equipmentType,\n chillers: this.chillers,\n boilers: this.boilers,\n },\n maxWidth: '88.9vw',\n minHeight: '600px'\n });\n\n equipmentModal.afterClosed().subscribe(result => {\n if (result === 'reget') {\n this.onRegetRequested.emit(true);\n }\n });\n }\n\n public openEventsModal(equipment: T): void {\n if (this.instanceOfEquipmentEvents(equipment)) {\n equipment.equipment.equipmentType = EquipmentType[this.equipmentType];\n const eventsModal = this.dialog.open(BuildingEventModalComponent, {\n panelClass: 'app-full-bleed-dialog',\n width: '88.9vw',\n data:\n {\n events: equipment.events,\n eventsType: this.gridOptions.getTitle && this.gridOptions.getTitle(equipment),\n equipment: equipment.equipment\n },\n maxWidth: '88.9vw',\n minHeight: '600px'\n });\n\n eventsModal.afterClosed().subscribe(result => {\n if (result === 'reget') {\n this.onRegetRequested.emit(true);\n }\n });\n } \n }\n\n private instanceOfEquipmentEvents(object: any): object is EquipmentEvents<Equipment> {\n return 'events' in object;\n }\n}\n\n","<mat-expansion-panel class=\"card\" [expanded]=\"true\" #panel>\n <mat-expansion-panel-header>\n <mat-panel-title>\n <span>{{ equipmentName }}</span>\n <span class=\"equipment-count-box text-st-semibold\">{{ detailsInfo }}</span>\n <br-svg-icon name=\"plus\" [width]=\"30\" [height]=\"30\" [color]=\"'black'\" class=\"icon-add-equipment\"\n *ngIf=\"isEditMode\"\n (click)=\"openEquipmentEditModal(null, equipmentType);panel.toggle();\"></br-svg-icon>\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div class=\"table-container\">\n \n <table>\n <thead>\n <tr>\n <th *ngFor=\"let option of gridOptions.columnOptions | mapToIterable: 'value'\"\n [style.width]=\"!option.width || !totalWidth ? 'auto' : (option.width / totalWidth * 100) + '%'\">\n {{ option.caption }}\n </th>\n <th style=\"width:auto;\" *ngIf=\"showEventsLink\"></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let equipment of equimpmentsList\">\n <td *ngFor=\"let option of gridOptions.columnOptions\" [class.right]=\"!!option.alignRight\"\n (click) = \"openEquipmentEditModal(equipment, equipmentType)\" class=\"link\">\n {{ option.getter(equipment) }}\n </td>\n <td class=\"link\" *ngIf=\"showEventsLink\" (click)=\"openEventsModal(equipment)\">{{ 'View' | localizeText }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n</mat-expansion-panel>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { publishReplay, share, shareReplay } from 'rxjs/operators';\nimport { environment } from '../../../environments/environment';\nimport { FacilityBenchmarkData } from '../../models/FacilityBenchmarkData';\nimport { UtilityBenchmarkData } from '../../models/UtilityBenchmarkData';\nimport { EndpointConst } from './endpoint-const';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BenchmarksService {\n private readonly REST_API_SERVER = environment.apiUrl;\n private readonly FACILITY_BENCHMARKS = 'facilityBenchmarks';\n private readonly UTILITY_BENCHMARKS = 'utilityBenchmarks';\n\n constructor(private httpClient: HttpClient) { }\n\n public getBuildingFacilityBenchmarks(buildingId: number): Observable<FacilityBenchmarkData> {\n return this.httpClient.get<FacilityBenchmarkData>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.FACILITY_BENCHMARKS}`\n );\n }\n\n public getBuildingUtilityBenchmarks(buildingId: number): Observable<UtilityBenchmarkData> {\n return this.httpClient.get<UtilityBenchmarkData>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.UTILITY_BENCHMARKS}`\n );\n }\n\n public getClientFacilityBenchmarks(clientId: number, campusId: number | undefined): Observable<FacilityBenchmarkData[]> {\n return this.httpClient.get<FacilityBenchmarkData[]>(\n `${this.REST_API_SERVER}/${EndpointConst.DASHBOARD}/${clientId}/${campusId}/${this.FACILITY_BENCHMARKS}`\n );\n }\n}\n","import { DateRange } from '@angular/material/datepicker';\nimport { Observable } from 'rxjs';\nimport { EventsByType, EventSummary } from 'src/app/components/building-events/building-event.model';\n\nexport const EVENT_SNAPSHOT_SERVICE = 'EVENT_SNAPSHOT_SERVICE';\nexport interface IEventSnapshotService {\n\n getEventSummary(clientId: number, campusId: number | undefined, dateRange: DateRange<Date>): Observable<EventSummary>;\n\n getBuildingEventVolumeByType(buildingId: number, dateRange: DateRange<Date>): Observable<EventsByType[]>;\n}\n","import { Injectable } from '@angular/core';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { DatasetData, HorizontalBarChartOptions, MaxValueStrategy } from '../../../shared/components/bar-chart/bar-chart.model';\nimport { NumberFormat } from '../../../shared/models/NumberFormat';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilityBenchmarkModel {\n\n constructor(private localizeText: LocalizeTextPipe) {\n }\n\n public readonly UsageVsCostTitle = this.localizeText.transform('Usage vs. Cost');\n public readonly KwhRateVsBenchmarksTitle = this.localizeText.transform('kWh Rate vs. Benchmarks');\n public readonly MCFRateVsBenchmarksTitle = this.localizeText.transform('MCF Rate vs. Benchmarks');\n\n private readonly currencyFormatWithMaxAllStrategy = {\n format: NumberFormat.defaultCurrencyFormat,\n maxValueStrategy: MaxValueStrategy.maxAll\n };\n\n private readonly percentsFormatWithMaxStrategy = {\n format: NumberFormat.defaultPercentsFormat,\n maxValueStrategy: MaxValueStrategy.percentsMax\n };\n\n private readonly percentOfUsageDataset: DatasetData = {\n key: 'percentOfUsage',\n label: this.localizeText.transform('% of Usage'),\n ...this.percentsFormatWithMaxStrategy,\n barColor: '#CD0402'\n };\n\n private readonly percentOfCostDataset: DatasetData = {\n key: 'percentOfCost',\n label: this.localizeText.transform('% of Cost ($)'),\n ...this.percentsFormatWithMaxStrategy,\n barColor: '#EA9595'\n };\n\n private readonly startDataset: DatasetData = {\n key: 'start',\n label: this.localizeText.transform('Start'),\n ...this.currencyFormatWithMaxAllStrategy,\n barColor: '#3EB049'\n };\n\n private readonly currentDataset: DatasetData = {\n key: 'current',\n label: this.localizeText.transform('Current'),\n ...this.currencyFormatWithMaxAllStrategy,\n barColor: '#193769'\n };\n\n private readonly industryDataset: DatasetData = {\n key: 'industry',\n label: this.localizeText.transform('Industry'),\n ...this.currencyFormatWithMaxAllStrategy,\n barColor: '#FFCF5C'\n };\n\n public usageVsCostElectricityAnalysisOptions: HorizontalBarChartOptions = {\n chartTitle: this.localizeText.transform('Electricity Analysis'),\n showLegendInDataset: true,\n datasets: [this.percentOfUsageDataset, this.percentOfCostDataset]\n };\n\n public usageVsCostGasAnalysisOptions: HorizontalBarChartOptions = {\n chartTitle: this.localizeText.transform('Natural Gas/Heating Analysis'),\n showLegendInDataset: true,\n datasets: [this.percentOfUsageDataset, this.percentOfCostDataset]\n };\n\n public kwhRateVsBenchmarksOptions: HorizontalBarChartOptions = {\n showLegendInDataset: true,\n datasets: [this.startDataset, this.currentDataset, this.industryDataset]\n };\n\n public mcfRateVsBenchmarksOptions: HorizontalBarChartOptions = {\n showLegendInDataset: true,\n datasets: [this.startDataset, this.currentDataset, this.industryDataset]\n };\n}\n","export class Utils {\n public static tryGetNumberFromAny(param: any): number | undefined {\n return !isNaN(+param) ? +param : undefined;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslationItem } from 'src/app/models/AuthModel';\r\n@Pipe({\r\n name: 'translationItemsfilter',\r\n pure: false\r\n})\r\nexport class TranslationItemsFilterPipe implements PipeTransform {\r\n transform(items: TranslationItem[], filterString: string): any {\r\n if (!items || !filterString) {\r\n return items;\r\n }\r\n\r\n return items.filter(\r\n item => item.sourceText.toUpperCase().includes(filterString.toUpperCase()) ||\r\n item.text.toUpperCase().includes(filterString.toUpperCase())\r\n );\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { environment } from '../../environments/environment';\nimport { LanguageInfo } from '../models/AuthModel';\nimport { SaveEquipmentResult } from '../models/EquipmentsEvents';\nimport { EndpointConst } from './real-services/endpoint-const';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdminService {\n\n private REST_API_SERVER = environment.apiUrl;\n private readonly LANGUAGE_INFO = 'language-info';\n\n constructor(private readonly httpClient: HttpClient) {\n }\n\n public getLanguageInfo(code: string): Observable<LanguageInfo> {\n return this.httpClient.get<LanguageInfo>(\n `${this.REST_API_SERVER}/${EndpointConst.ADMIN}/${this.LANGUAGE_INFO}/${code}`\n );\n }\n\n public saveLanguageInfo(languageInfo: LanguageInfo): Observable<SaveEquipmentResult> {\n return this.httpClient.post<SaveEquipmentResult>(\n `${this.REST_API_SERVER}/${EndpointConst.ADMIN}/${this.LANGUAGE_INFO}`,\n languageInfo\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class WithCredentialsInterceptorService implements HttpInterceptor {\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(req.clone({\n withCredentials: true\n }));\n }\n}","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nimport { EnvConfig } from './env-config';\n\nexport const environment: EnvConfig = {\n production: false,\n useStubServices: {\n CLIENT_SUMMARY_SERVICE: false,\n BUILDING_SPREADSHEET_SERVICE: false,\n BUILDING_SUMMARY_SERVICE: false\n },\n //apiUrl: 'https://energy-api-test.azurewebsites.net',\n apiUrl: 'https://energy-api-live.azurewebsites.net',\n //apiUrl: 'https://localhost:44342',\n //qmetDashboardLink: 'http://apps.brogdonenergy.com'\n //qmetDashboardLink: 'http://qmet-app-test.azurewebsites.net/'\n qmetDashboardLink: 'http://qmet-app-live.azurewebsites.net/'\n //qmetDashboardLink: 'http://localhost:58192'\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { Injectable } from '@angular/core';\nimport { DateRange } from '@angular/material/datepicker';\nimport { of } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { CampusData } from 'src/app/models/CampusData';\nimport { BuildingData } from '../../models/BuildingData';\nimport { IBuildingSpreadsheetService } from '../interfaces/building-spreadsheet.interface';\n\n@Injectable()\nexport class BuildingSpreadsheetStubService implements IBuildingSpreadsheetService {\n public getCampusSpredsheetData(clientId: number, dateRange: DateRange<Date>): Observable<CampusData[]> {\n throw new Error('Method not implemented.');\n }\n public getBuildingSpredsheetData(): Observable<BuildingData[]> {\n return of(\n [\n {\n id: 0,\n buildingName: 'Citizens Baptist Medical Center South',\n location: 'Talladega, AL',\n temperature: 55,\n rangeNaturalGasSavings: 3313,\n rangeElectricitySavings: 10382,\n energyEfficiencyScore: 63,\n energyStarScore: 64,\n savings: 18231,\n gasDynamics: 'increased',\n electricityDynamics: 'increased'\n },\n {\n id: 1,\n buildingName: 'Citizens Baptist Medical Center East',\n location: 'Talladega, AL',\n temperature: 55,\n rangeNaturalGasSavings: 3313,\n rangeElectricitySavings: 10382,\n energyEfficiencyScore: 85,\n energyStarScore: 87,\n savings: 18231,\n gasDynamics: 'increased',\n electricityDynamics: 'decreased'\n },\n {\n id: 2,\n buildingName: 'Citizens Baptist Medical Center North',\n location: 'Talladega, AL',\n temperature: 55,\n rangeNaturalGasSavings: 3313,\n rangeElectricitySavings: 10382,\n energyEfficiencyScore: 98,\n energyStarScore: 98,\n savings: 18231,\n gasDynamics: 'increased',\n electricityDynamics: 'unaltered'\n },\n {\n id: 3,\n buildingName: 'Citizens Baptist Medical Center West',\n location: 'Talladega, AL',\n temperature: 55,\n rangeNaturalGasSavings: 3313,\n rangeElectricitySavings: 10382,\n energyEfficiencyScore: 98,\n energyStarScore: 96,\n savings: 18231,\n gasDynamics: 'increased',\n electricityDynamics: 'decreased'\n },\n {\n id: 4,\n buildingName: 'Citizens Baptist Medical Center Central',\n location: 'Talladega, AL',\n temperature: 55,\n rangeNaturalGasSavings: 3313,\n rangeElectricitySavings: 10382,\n energyEfficiencyScore: 78,\n energyStarScore: 84,\n savings: 18231,\n gasDynamics: 'decreased',\n electricityDynamics: 'decreased'\n },\n {\n id: 5,\n buildingName: 'Citizens Baptist Medical Center Beach',\n location: 'Talladega, AL',\n temperature: 55,\n rangeNaturalGasSavings: 3313,\n rangeElectricitySavings: 10382,\n energyEfficiencyScore: 98,\n energyStarScore: 97,\n savings: 18231,\n gasDynamics: 'increased',\n electricityDynamics: 'increased'\n },\n ] as BuildingData[]\n );\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'br-page-not-found',\n templateUrl: './page-not-found.component.html',\n styleUrls: ['./page-not-found.component.scss']\n})\nexport class PageNotFoundComponent {\n}\n","<span class=\"text-h3\">{{ 'Page not found' | localizeText }}!</span>\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { SelectedClientService } from 'src/app/services/selected-client.service';\nimport { NoteItem } from 'src/app/models/EquipmentsEvents';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n selector: 'br-note-manager',\n templateUrl: './note-manager.component.html',\n styleUrls: ['./note-manager.component.scss']\n})\nexport class NoteManagerComponent implements OnChanges {\n\n public currentNote: string = \"\";\n public loginId: string = \"\";\n\n constructor(private changeDetectorRef: ChangeDetectorRef,\n private selectedClientService: SelectedClientService\n ) {\n this.loginId = selectedClientService.loginId;\n }\n\n @Input()\n public noteItems: NoteItem[] = [];\n\n @Output()\n public onSaveNotes = new EventEmitter<NoteItem[]>();\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.noteItems) {\n }\n }\n\n public formatDate(date: Date): string {\n var datePipe = new DatePipe('en-US');\n return datePipe.transform(date, 'MM-dd-yyyy HH:mm');\n }\n\n public editNote(noteItem: NoteItem): void {\n noteItem.isInEditMode = true;\n }\n\n public saveNote(noteItem: NoteItem): void {\n noteItem.isInEditMode = false;\n this.onSaveNotes.emit(this.noteItems);\n }\n\n public addNoteClicked(): void {\n this.noteItems[this.noteItems.length] = <NoteItem>{ creationTime: new Date(), loginId: this.loginId, text: this.currentNote };\n\n this.currentNote = \"\";\n\n this.onSaveNotes.emit(this.noteItems);\n this.changeDetectorRef.detectChanges();\n }\n\n}\n\n\n","<div *ngFor=\"let noteItem of noteItems\">\n <span class=\"note-creation-info-span\"><strong>{{ formatDate(noteItem.creationTime) }} {{ noteItem.loginId }}</strong></span>\n <span *ngIf=\"!noteItem.isInEditMode\">{{ noteItem.text }}</span>\n <br-svg-icon name=\"edit\" [width]=\"22\" [height]=\"22\" [color]=\"'black'\" class=\"edit-note-icon\"\n (click)=editNote(noteItem) *ngIf=\"!noteItem.isInEditMode\"></br-svg-icon>\n <mat-form-field class=\"note-item-text-container\" *ngIf=\"noteItem.isInEditMode\">\n <input matInput [(ngModel)]=\"noteItem.text\" [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n <br-svg-icon name=\"save\" [width]=\"22\" [height]=\"22\" [color]=\"'black'\" class=\"edit-note-icon\"\n (click)=saveNote(noteItem) *ngIf=\"noteItem.isInEditMode\"></br-svg-icon>\n</div>\n<mat-form-field class=\"equipment-form-field current-note\">\n <mat-label>{{ 'Note' | localizeText }}</mat-label>\n <textarea matInput [matTextareaAutosize] [matAutosizeMinRows]=2 [matAutosizeMaxRows]=5 [(ngModel)]=\"currentNote\"\n autocomplete=\"off\"></textarea>\n</mat-form-field>\n<button mat-stroked-button color=\"primary\" class=\"add-note-button\" (click)=addNoteClicked() *ngIf=\"currentNote!==''\">{{ 'Add Note' | localizeText }}</button>","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Client, LocalizationInfo } from '../models/AuthModel';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SelectedClientService {\n private selectedClientId = new BehaviorSubject<number | undefined>(undefined);\n public selectedClientId$ = this.selectedClientId.asObservable().pipe(map(v => v as number)); \n\n public set clientId(value: number) {\n this.selectedClientId.next(value);\n }\n\n public get clientId() {\n return this.selectedClientId.value;\n }\n\n private selectedCampusId = new BehaviorSubject<number | undefined>(undefined);\n public selectedCampusId$ = this.selectedCampusId.asObservable().pipe(map(v => v as number));\n\n public set campusId(value: number) {\n this.selectedCampusId.next(value);\n }\n\n public get campusId() {\n return this.selectedCampusId.value;\n }\n\n private currentIsEditMode = new BehaviorSubject<boolean>(false);\n public currentIsEditMode$ = this.currentIsEditMode.asObservable().pipe(map(v => v as boolean));\n\n public set isEditMode(value: boolean) {\n this.currentIsEditMode.next(value);\n }\n\n public get isEditMode() {\n return this.currentIsEditMode.value;\n }\n\n public toggleIsEditMode() {\n this.currentIsEditMode.next(!this.currentIsEditMode.value);\n }\n\n private currentIsEditor = new BehaviorSubject<boolean>(false);\n public currentIsEditor$ = this.currentIsEditor.asObservable().pipe(map(v => v as boolean));\n\n public set isEditor(value: boolean) {\n this.currentIsEditor.next(value);\n }\n\n public get isEditor() {\n return this.currentIsEditor.value;\n }\n\n private currentIsEngCoAdmin = new BehaviorSubject<boolean>(false);\n public currentIsEngCoAdmin$ = this.currentIsEngCoAdmin.asObservable().pipe(map(v => v as boolean));\n\n public set isEngCoAdmin(value: boolean) {\n this.currentIsEngCoAdmin.next(value);\n }\n\n public get isEngCoAdmin() {\n return this.currentIsEngCoAdmin.value;\n }\n\n private currentLoginId = new BehaviorSubject<string>(\"\");\n public currentLoginId$ = this.currentLoginId.asObservable().pipe(map(v => v as string));\n\n public set loginId(value: string) {\n this.currentLoginId.next(value);\n }\n\n public get loginId() {\n return this.currentLoginId.value;\n }\n\n private currentLocalization = new BehaviorSubject<LocalizationInfo>(null);\n public currentLocalization$ = this.currentLocalization.asObservable().pipe(map(v => v as LocalizationInfo));\n\n public set localization(value: LocalizationInfo) {\n this.currentLocalization.next(value);\n }\n\n public get localization() {\n return this.currentLocalization.value;\n }\n\n\n public availableClients: Client[] = [];\n}\n","import { Component, EventEmitter, OnInit, Output, Input, Inject, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { switchMap } from 'rxjs/operators';\nimport { CLIENT_SUMMARY_SERVICE, IClientSummaryService } from '../../services/interfaces/client-summary.interface';\nimport { BaseComponent } from '../../shared/components/base/base.component';\nimport { ClientSummaryDateService, DateSelectorService } from '../date-selector/date-selector.service';\nimport { ClientSummaryModel, DetailsData } from './client-summary.model';\nimport { ClientSummaryData } from '../../models/ClientSummaryData';\nimport { combineLatest, Observable } from 'rxjs';\nimport { SelectedClientService } from '../../services/selected-client.service';\nimport { GoLiveDateStorage } from '../../services/go-live-date-storage.service';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { ClientSummaryAdditionalData } from 'src/app/models/ClientSummaryAdditionalData';\n\n@Component({\n selector: 'br-client-summary',\n templateUrl: './client-summary.component.html',\n styleUrls: ['./client-summary.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ClientSummaryModel,\n {\n provide: DateSelectorService,\n useExisting: ClientSummaryDateService\n }\n ]\n})\nexport class ClientSummaryComponent extends BaseComponent implements OnInit {\n\n @Output()\n public summaryChanged = new EventEmitter<boolean>();\n\n @Output()\n public alarmChanged = new EventEmitter<boolean>();\n public ROWS_COUNT = 2;\n\n public columnsCount = 5;\n public buildingsGroupName = '';\n public savingsData = this.model.defaultSavingsData;\n public detailsData = this.model.defaultDetailsData;\n public consumptionDetailsData = this.model.defaultConsumptionDetailsData;\n public overviewData = this.model.defaultOverviewData;\n public rangeSavingsTitle = this.model.rangeSavingsTitle;\n public rangeSavingsDescriptions = this.model.rangeSavingsDescriptions;\n public dateRangeChanged$ = this.dateFilterService.dateRangeChanged$;\n public liveDate$ = this.clientGoLiveDateService.clientGoLiveDate$;\n public isSpendView = true;\n\n constructor(private readonly model: ClientSummaryModel,\n private readonly dateFilterService: DateSelectorService,\n private readonly selectedClientService: SelectedClientService,\n @Inject(CLIENT_SUMMARY_SERVICE) private readonly clientSummaryService: IClientSummaryService,\n private readonly clientGoLiveDateService: GoLiveDateStorage,\n private changeDetectorRef: ChangeDetectorRef,\n private localizeText: LocalizeTextPipe) {\n super();\n }\n\n public ngOnInit(): void {\n this.addSubscription(\n combineLatest([\n this.selectedClientService.selectedClientId$,\n this.dateFilterService.dateRangeChanged$,\n ]).pipe(\n switchMap(([clientId, dateRange]) => this.clientSummaryService.getClientSummaryData(clientId, dateRange))\n ).subscribe((data: ClientSummaryData) => {\n this.buildingsGroupName = data.clientName;\n this.setSavingsValues(data);\n this.setDetailsValues(data);\n this.columnsCount = this.getColumsCount();\n this.changeDetectorRef.detectChanges();\n })\n );\n\n this.addSubscription(\n combineLatest([\n this.selectedClientService.selectedClientId$,\n this.dateFilterService.dateRangeChanged$,\n ]).pipe(\n switchMap(([clientId, dateRange]) => this.clientSummaryService.getClientSummaryAdditionalData(clientId, dateRange))\n ).subscribe((data: ClientSummaryAdditionalData) => { \n this.setAdditionalDetailsValues(data); \n this.changeDetectorRef.detectChanges();\n })\n );\n\n this.addSubscription(\n this.dateFilterService.selectedIndexChanged$.subscribe(index => {\n this.savingsData.rangeToDateSavings.title = this.rangeSavingsTitle[index];\n this.savingsData.rangeToDateSavings.description = this.rangeSavingsDescriptions[index];\n })\n );\n}\n\n public isDetailsItemVisible(data: DetailsData): boolean { \n if (data.description === this.localizeText.transform('Total Beds') && data.value === 0){\n return false;\n }\n return !(data.value === undefined && data.hideIfUndefined) && !data.hide;\n }\n\n public onChange(advanced: boolean): void {\n this.summaryChanged.emit(advanced);\n }\n\n public onAlarmViewChange(isAlarmView: boolean): void {\n this.alarmChanged.emit(isAlarmView);\n }\n\n public onSpendViewChange(isSpendView: boolean): void {\n this.isSpendView = isSpendView;\n } \n\n private getColumsCount(): number {\n const itemsCount = this.getDetailsVisibleItemsCount();\n return Math.ceil(itemsCount / this.ROWS_COUNT);\n }\n\n private getDetailsVisibleItemsCount(): number {\n return Object.keys(this.detailsData)\n .map(key => this.detailsData[key])\n .filter(data => this.isDetailsItemVisible(data)).length;\n }\n\n private setSavingsValues(data: ClientSummaryData): void {\n this.savingsData.rangeToDateSavings.value = data.rangeSavings;\n this.savingsData.rangeToDateSavings.additionalValue = Math.round((data.rangeSavings / data.totalEnergySpend * 100) * 100) / 100;\n this.savingsData.totalSavings.value = data.totalSavings;\n }\n\n private setDetailsValues(data: ClientSummaryData): void {\n this.overviewData.buildingCount.value = data.buildingsCount;\n this.detailsData.electricityCost.value = data.electricityCost;\n this.detailsData.electricityCost.hide = !data.hasElectricity;\n this.detailsData.electricitySavings.value = data.rangeElectricitySavings;\n this.detailsData.electricitySavings.hide = !data.hasElectricity;\n this.overviewData.totalBeds.value = data.bedsCount;\n this.overviewData.totalSquareFootage.value = data.totalSqFt;\n this.detailsData.totalEnergySpend.value = data.totalEnergySpend;\n this.detailsData.naturalGasCost.value = data.naturalGasCost;\n this.detailsData.naturalGasCost.hide = !data.hasGas;\n this.detailsData.naturalGasSavings.value = data.rangeNaturalGasSavings; \n this.detailsData.naturalGasSavings.hide = !data.hasGas;\n this.detailsData.co2Emission.value = data.carbonEmission;\n this.detailsData.co2Reduced.value = data.carbonReduced;\n this.detailsData.waterSpend.value = data.waterCost;\n this.detailsData.waterSpend.hide = !data.hasWater;\n this.detailsData.waterUsage.value = data.rangeWaterSpent; \n this.detailsData.waterUsage.hide = !data.hasWater;\n\n this.consumptionDetailsData.electricConsumption.value = data.electricConsumption;\n this.consumptionDetailsData.electricConsumption.hide = !data.hasElectricity;\n this.consumptionDetailsData.electricSavingVolume.value = data.electricSavingVolume;\n this.consumptionDetailsData.electricSavingVolume.hide = !data.hasElectricity;\n this.consumptionDetailsData.naturalGasConsumption.value = data.gasConsumption;\n this.consumptionDetailsData.naturalGasConsumption.unitOfMeasure = data.gasMeasure && data.gasMeasure !='' ? ` (${data.gasMeasure})` : \"\";\n this.consumptionDetailsData.naturalGasConsumption.hide = !data.hasGas;\n this.consumptionDetailsData.naturalGasSavings.value = data.gasSavingsVolume;\n this.consumptionDetailsData.naturalGasSavings.unitOfMeasure = data.gasMeasure && data.gasMeasure !='' ? ` (${data.gasMeasure})` : \"\";\n this.consumptionDetailsData.naturalGasSavings.hide = !data.hasGas;\n this.consumptionDetailsData.co2Emission.value = data.carbonEmission;\n this.consumptionDetailsData.co2Reduced.value = data.carbonReduced;\n this.consumptionDetailsData.waterSpend.hide = !data.hasWater;\n this.consumptionDetailsData.waterUsage.value = data.rangeWaterSpent; \n this.consumptionDetailsData.waterUsage.hide = !data.hasWater;\n }\n\n private setAdditionalDetailsValues(data: ClientSummaryAdditionalData): void {\n if (this.detailsData.eui){\n this.detailsData.eui.value = data.eui;\n } \n }\n}\n","<span class=\"text-h3\">{{ buildingsGroupName }}</span>\n<br-dashboard-btn-group (advancedViewChanged)=\"onChange($event)\" (alarmViewChanged)=\"onAlarmViewChange($event)\" (spendViewChanged)=\"onSpendViewChange($event)\"></br-dashboard-btn-group>\n<div class=\"buttons-container\"> \n <div class=\"text-h3 component-title__text\">{{ 'Overview' | localizeText }}</div>\n <div>\n <div class=\"overview-info\" *ngFor=\"let data of overviewData | mapToIterable: 'value'\">\n <div><span class=\"value text-h3 icon-text-print overview-info-header\">{{ data.value | valueFormat: data.format }}</span></div>\n <span class=\"description text-sm\">{{ data.description }}</span>\n </div>\n </div>\n <br-date-selector [goLiveDate]=\"liveDate$ | async\"></br-date-selector>\n</div>\n<div class=\"cards-container\">\n <!-- <br-card *ngFor=\"let data of savingsData | mapToIterable: 'value'\" class=\"saving-card\"\n [title]=\"data.title\" [description]=\"buildingsGroupName + ' ' + data.description\"> -->\n <br-card *ngFor=\"let data of savingsData | mapToIterable: 'value'\" class=\"saving-card\"\n [title]=\"data.title\" [description]=\"\">\n <div class=\"pie-chart-container\">\n <div *ngIf=\"data.additionalValue == null\" class=\"pie-chart circle circle-box-shadow text-h3\">{{ data.value | valueFormat: data.format }}</div>\n <div *ngIf=\"data.additionalValue != null\">\n <div class=\"pie-chart circle circle-box-shadow text-h3\">\n <span>{{ data.value | valueFormat: data.format }}<br><span style=\"font-size: 18px;\">({{ data.additionalValue }} %)</span></span>\n </div> \n </div>\n </div>\n </br-card>\n <br-card class=\"details-container\" *ngIf=\"isSpendView\">\n <ng-container *ngFor=\"let data of detailsData | mapToIterable: 'value'\">\n <div *ngIf=\"isDetailsItemVisible(data)\" class=\"details-item col-{{columnsCount}}\">\n <div *ngIf=\"data.description !==''\">\n <div class=\"{{data.isGreen ? 'icon-container-green' : 'icon-container-blue'}} icon-container circle circle-box-shadow\">\n <br-svg-icon [name]=\"data.icon\"></br-svg-icon>\n </div>\n <span class=\"value text-h3 icon-text-print\">{{ data.value | valueFormat: data.format }}</span>\n <span class=\"description text-sm\">{{ data.description }}</span>\n </div> \n </div>\n </ng-container>\n </br-card>\n <br-card class=\"details-container\" *ngIf=\"!isSpendView\">\n <ng-container *ngFor=\"let data of consumptionDetailsData | mapToIterable: 'value'\">\n <div *ngIf=\"isDetailsItemVisible(data)\" class=\"details-item col-{{columnsCount}}\">\n <div *ngIf=\"data.description !==''\">\n <div class=\"{{data.isGreen ? 'icon-container-green' : 'icon-container-blue'}} icon-container circle circle-box-shadow\">\n <br-svg-icon [name]=\"data.icon\"></br-svg-icon>\n </div> \n <span class=\"value text-h3 icon-text-print\">{{ data.value | valueFormat: data.format }}</span>\n <span class=\"description text-sm\">{{ data.description }}{{data.unitOfMeasure}}</span>\n </div> \n </div>\n </ng-container>\n </br-card>\n</div>\n<span class=\"text-h4\">{{ 'Launch Date' | localizeText }}: {{ (liveDate$ | async) === undefined ? 'Unspecified' : ((liveDate$ | async) | date: 'MM/dd/yyyy') }}</span>","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TokenProviderService } from '../services/token-provider.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthInterceptor implements HttpInterceptor {\n constructor(private tokenProviderService: TokenProviderService) { }\n\n public intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const token = this.tokenProviderService.getToken();\n if (!!token) {\n request = request.clone({\n url: request.url,\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n }\n return next.handle(request);\n }\n}\n","export class ExcelUtils {\n public static readonly EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8;';\n\n public static downloadExcelFile(data: Blob, fileName: string): void {\n const blob = new Blob([data], { type: ExcelUtils.EXCEL_TYPE });\n if (navigator.msSaveBlob) { // IE 10+\n navigator.msSaveBlob(blob, fileName);\n } else {\n const link = document.createElement('a');\n if (link.download !== undefined) {\n // Browsers that support HTML5 download attribute\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', fileName);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, ViewChild } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { of } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { BoilerEvents, BoilerInfo, ChillerEvents, ChillerInfo, EnergyUsesItem, Equipment, EquipmentEvents, EquipmentInfo, EquipmentType, HyperlinkItem, ImageItem, NoteItem, PdfItem } from 'src/app/models/EquipmentsEvents';\nimport { BuildingAssetListService } from 'src/app/services/real-services/building-asset-list.service';\nimport { ImageService } from 'src/app/services/real-services/image.service';\nimport { SelectedBuildingService } from 'src/app/services/selected-building.service';\nimport { SelectedClientService } from 'src/app/services/selected-client.service';\nimport { BaseComponent } from 'src/app/shared/components/base/base.component';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { EventsByType } from '../building-events/building-event.model';\nimport { BuildingEquipmentModalModel, EventProperty } from './building-equipment-modal.model';\n\nclass ImageSnippet {\n constructor(public src: string, public file: File) { }\n}\n\n@Component({\n selector: 'br-building-equipment-modal',\n templateUrl: './building-equipment-modal.component.html',\n styleUrls: ['./building-equipment-modal.component.scss'],\n providers: [BuildingEquipmentModalModel],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BuildingEquipmentModalComponent extends BaseComponent {\n\n public isEditMode: boolean = false;\n public mainHeader: string;\n public subHeader: string;\n public buttonName: string;\n\n public propMap: Record<string, EventProperty>;\n public keepOriginalOrder = (prop: any) => prop.key;\n\n public selectedFile!: ImageSnippet; \n\n public equipmentName: string;\n\n @ViewChild('imageInput')\n imageInputRef!: ElementRef<HTMLInputElement>;\n\n @ViewChild('pdfInput')\n pdfInputRef!: ElementRef<HTMLInputElement>;\n\n public equipmentEvents: EquipmentEvents<Equipment> | null = null;\n\n public chillers: ChillerEvents[];\n public boilers: BoilerEvents[];\n\n constructor(\n public dialogRef: MatDialogRef<BuildingEquipmentModalComponent>,\n @Inject(MAT_DIALOG_DATA) public data: EquipmentInfo,\n private readonly model: BuildingEquipmentModalModel,\n @Inject(\"IMAGE_SERVICE\") private imageService: ImageService,\n public readonly selectedBuildingService: SelectedBuildingService,\n private changeDetectorRef: ChangeDetectorRef,\n private readonly assetListService: BuildingAssetListService,\n private selectedClientService: SelectedClientService,\n private localizeText: LocalizeTextPipe) {\n super();\n this.isEditMode = selectedClientService.isEditMode; \n this.mainHeader = this.localizeText.transform(`Equipment`);\n this.equipmentName = this.getEquipmentNameByType(data.equipmentType);\n this.subHeader = (this.isEditMode ? (data.equipmentEvents ? this.localizeText.transform('Edit') : this.localizeText.transform('Add')) : this.localizeText.transform('View'));\n this.buttonName = data.equipmentEvents ? this.localizeText.transform('Save') : this.localizeText.transform('Add');\n\n this.propMap = this.model.getPropMapByEquipmentType(data.equipmentType);\n\n if (data.equipmentType === EquipmentType.BuildingEnergyUses || data.equipmentType === EquipmentType.WishList) {\n this.equipmentEvents = { equipment: <Equipment>(!data.equipmentEvents ? this.model.getDefaultEquipmentByEquipmentType(data.equipmentType) : data.equipmentEvents), events: [] };\n }\n else {\n this.equipmentEvents = !data.equipmentEvents ? { equipment: this.model.getDefaultEquipmentByEquipmentType(data.equipmentType), events: [] } : data.equipmentEvents; \n } \n this.equipmentEvents.equipment.equipmentType = data.equipmentType; \n \n this.chillers = data.chillers;\n this.boilers = data.boilers;\n }\n\n private getEquipmentNameByType(equipmentType: EquipmentType): string {\n return equipmentType === EquipmentType.MRI ? this.localizeText.transform(\"Other Asset\") : equipmentType.toString();\n }\n\n public trackByFn(index: number, item: any) {\n return index;\n }\n\n public buttonClicked() { \n this.addSubscription(\n this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap(buildingId => this.assetListService.saveEquipment(buildingId, this.equipmentEvents.equipment || <Equipment>{})),\n ).subscribe(res => {\n this.regetEquipmentAndClosePopup();\n })\n ); \n }\n\n public addHyperlinkClicked() {\n if (this.equipmentEvents.equipment == null){\n return;\n }\n\n this.equipmentEvents.equipment.hyperlinks[this.equipmentEvents.equipment?.hyperlinks?.length || 0] = { url: \"\", name: \"\" };\n\n this.changeDetectorRef.detectChanges();\n }\n\n public deleteHyperlinkClicked(hyperlink: HyperlinkItem) {\n if (this.equipmentEvents.equipment == null){\n return;\n }\n\n this.equipmentEvents.equipment.hyperlinks = this.equipmentEvents.equipment?.hyperlinks.filter(p => p != hyperlink);\n\n this.changeDetectorRef.detectChanges();\n }\n\n public addPdfClicked() {\n this.pdfInputRef.nativeElement.click();\n } \n\n public deletePdfClicked(pdf: PdfItem) {\n if (this.equipmentEvents.equipment == null){\n return;\n }\n\n this.equipmentEvents.equipment.pdfs = this.equipmentEvents.equipment?.pdfs.filter(p => p != pdf);\n\n this.changeDetectorRef.detectChanges();\n }\n\n public addImageClicked() {\n this.imageInputRef.nativeElement.click();\n } \n\n public deleteImageClicked(image: ImageItem) {\n if (this.equipmentEvents.equipment == null){\n return;\n }\n\n this.equipmentEvents.equipment.images = this.equipmentEvents.equipment?.images.filter(p => p != image);\n\n this.changeDetectorRef.detectChanges();\n }\n\n public processFile(imageInput: any) {\n const file: File = imageInput.files[0];\n const reader = new FileReader();\n\n reader.addEventListener('load', (event: any) => {\n\n this.selectedFile = new ImageSnippet(event.target.result, file);\n\n this.addSubscription(\n this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap(buildingId => this.imageService.uploadImage(this.selectedFile.file)),\n ).subscribe(res => {\n this.imageAdded(res.imageUrl);\n })\n );\n });\n\n reader.readAsDataURL(file);\n }\n\n public processPdfFile(pdfInput: any) {\n const file: File = pdfInput.files[0];\n const reader = new FileReader();\n\n reader.addEventListener('load', (event: any) => {\n\n this.selectedFile = new ImageSnippet(event.target.result, file);\n\n this.addSubscription(\n this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap(buildingId => this.imageService.uploadImage(this.selectedFile.file)),\n ).subscribe(res => {\n this.pdfAdded(res.imageUrl);\n })\n );\n });\n\n reader.readAsDataURL(file);\n }\n\n public keys<O extends object>(obj: Equipment | null): Array<keyof O> {\n if (obj == null) {\n return [];\n }\n return Object.keys(obj) as Array<keyof O>;\n }\n\n public getPrimitiveType(obj: any, propertyName: string): string {\n if (propertyName === \"dateInstalled\"){\n return \"date\";\n }\n return typeof obj;\n }\n\n public deleteClicked() {\n if (confirm(this.localizeText.transform(\"Are you sure you want to delete this item?\"))){\n this.addSubscription(\n this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap(buildingId => this.assetListService.deleteEquipment(buildingId, this.equipmentEvents.equipment || <Equipment>{})),\n ).subscribe(res => {\n this.regetEquipmentAndClosePopup();\n })\n ); \n }\n }\n\n public getEquipmentAsEnergyUses(equipment: Equipment): EnergyUsesItem {\n return equipment as EnergyUsesItem;\n }\n\n public saveNotes(noteItems: NoteItem[]): void {\n this.equipmentEvents.equipment.note = noteItems.filter(p => p.text.trim() !== '');\n this.sendNotes();\n }\n\n private sendNotes(): void {\n this.equipmentEvents.equipment.note = this.equipmentEvents.equipment.note.filter(p => p.text.trim() !== '');\n this.changeDetectorRef.detectChanges();\n\n if (this.equipmentEvents.equipment.id === 0) {\n return;\n }\n\n this.addSubscription(\n this.assetListService.saveNotes(this.equipmentEvents.equipment).subscribe(res => {\n //!!todo\n })\n ); \n }\n\n private regetEquipmentAndClosePopup(){\n this.dialogRef.close('reget');\n }\n\n private imageAdded(imageUrl: string) {\n if (this.equipmentEvents.equipment == null){\n return;\n }\n\n this.equipmentEvents.equipment.images[this.equipmentEvents.equipment?.images?.length || 0] = { imageUrl: imageUrl, name: \"\" };\n\n this.changeDetectorRef.detectChanges();\n }\n\n private pdfAdded(imageUrl: string) {\n if (this.equipmentEvents.equipment == null){\n return;\n }\n\n this.equipmentEvents.equipment.pdfs[this.equipmentEvents.equipment?.pdfs?.length || 0] = { url: imageUrl, name: \"\" };\n\n this.changeDetectorRef.detectChanges();\n }\n}\n","<div class=\"title\">\n <span class=\"text-h3\">{{ mainHeader }}</span>\n <button class=\"close-button text-h3\" mat-dialog-close>x</button>\n <span class=\"text-h4 description-block\">{{ subHeader }} {{ equipmentName | localizeText }}</span>\n</div>\n\n\n<table class=\"equipment-view-table\" *ngIf=\"!isEditMode\">\n <tbody>\n <tr *ngFor=\"let item of propMap | keyvalue:keepOriginalOrder; trackBy: trackByFn\">\n <td class=\"equipment-keys-column\">\n <span>{{ propMap[item.key].name }}</span>\n </td>\n <td class=\"equipment-values-column\">\n <span>{{ equipmentEvents.equipment[item.key] }}</span>\n </td>\n </tr>\n </tbody>\n</table>\n\n<br-note-manager class=\"note-item\" *ngIf=\"!isEditMode\"\n [noteItems]=\"equipmentEvents.equipment.note\"\n (onSaveNotes)=\"saveNotes($event)\">\n</br-note-manager>\n\n<table class=\"hyperlinks-view-table\" *ngIf=\"!isEditMode\">\n <tbody>\n <tr *ngFor=\"let hyperlink of equipmentEvents.equipment.hyperlinks\">\n <td>\n <a href=\"{{ hyperlink.url }}\" target=\"_blank\">{{ hyperlink.name }}</a>\n </td>\n </tr>\n </tbody>\n</table>\n\n<table class=\"hyperlinks-view-table\" *ngIf=\"!isEditMode\">\n <tbody>\n <tr *ngFor=\"let pdf of equipmentEvents.equipment.pdfs\">\n <td>\n <a href=\"{{ pdf.url }}\" target=\"_blank\">{{ pdf.name }}</a>\n </td>\n </tr>\n </tbody>\n</table>\n\n<div class=\"images-panel\" *ngIf=\"!isEditMode\">\n <div *ngFor=\"let image of equipmentEvents.equipment.images\" class=\"image-item-info-container\">\n <div class=\"image-item-container\">\n <a href=\"{{ image.imageUrl }}\" target=\"_blank\"><img src=\"{{ image.imageUrl }}\" class=\"image-item\" /></a>\n </div>\n <div class=\"image-name-view\">\n <span>{{ image.name }}</span>\n </div>\n </div>\n</div>\n\n<form class=\"equipment-form\" *ngIf=\"isEditMode\">\n <div *ngFor=\"let item of propMap | keyvalue:keepOriginalOrder; trackBy: trackByFn\">\n <div *ngIf=\"item.key === 'electricEnergySource' || item.key === 'naturalGasSource'\">\n <mat-form-field appearance=\"fill\" *ngIf=\"item.key === 'electricEnergySource' && chillers\">\n <mat-label>{{ 'Select Chiller' | localizeText }}</mat-label>\n <mat-select [(value)]=\"getEquipmentAsEnergyUses(equipmentEvents.equipment).chillerId\">\n <mat-option value=\"\"></mat-option>\n <mat-option *ngFor=\"let chiller of chillers\" [value]=\"chiller.equipment.id\">{{ chiller.equipment.chillerType }}</mat-option> \n </mat-select>\n </mat-form-field> \n <mat-form-field appearance=\"fill\" *ngIf=\"item.key === 'naturalGasSource'\">\n <mat-label>{{ 'Select Boiler' | localizeText }}</mat-label>\n <mat-select [(value)]=\"getEquipmentAsEnergyUses(equipmentEvents.equipment).boilerId\">\n <mat-option value=\"\"></mat-option>\n <mat-option *ngFor=\"let boiler of boilers\" [value]=\"boiler.equipment.id\">{{ boiler.equipment.boilerType }}</mat-option> \n </mat-select>\n </mat-form-field> \n </div>\n <div [ngSwitch]=\"getPrimitiveType(equipmentEvents.equipment[item.key], item.key)\" *ngIf=\"item.key !== 'electricEnergySource' && item.key !== 'naturalGasSource'\">\n <mat-form-field appearance=\"fill\" class=\"example-form-field\" *ngSwitchCase=\"'date'\">\n <input matInput [matDatepicker]=\"picker3\" placeholder=\"{{ propMap[item.key].name }}\" [(ngModel)]=\"equipmentEvents.equipment[item.key]\" [ngModelOptions]=\"{standalone: true}\">\n <mat-datepicker-toggle matSuffix [for]=\"picker3\"></mat-datepicker-toggle>\n <mat-datepicker #picker3></mat-datepicker>\n </mat-form-field>\n <mat-checkbox *ngSwitchCase=\"'boolean'\" [(ngModel)]=\"equipmentEvents.equipment[item.key]\"\n [ngModelOptions]=\"{standalone: true}\">{{ propMap[item.key].name }}</mat-checkbox>\n <mat-form-field class=\"equipment-form-field\" *ngSwitchDefault>\n <mat-label>{{ propMap[item.key].name }}</mat-label>\n <input matInput placeholder=\"\" [(ngModel)]=\"equipmentEvents.equipment[item.key]\"\n [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n </div>\n </div>\n</form>\n<br-note-manager class=\"note-item\" *ngIf=\"isEditMode\"\n [noteItems]=\"equipmentEvents.equipment.note\"\n (onSaveNotes)=\"saveNotes($event)\">\n</br-note-manager>\n\n<div class=\"hyperlink-panel\" *ngIf=\"isEditMode\">\n <div *ngFor=\"let hyperlink of equipmentEvents.equipment.hyperlinks\" class=\"hyperlink-item-info-container\">\n <div class=\"delete-hyperlink-button text-h3\" (click)=deleteHyperlinkClicked(hyperlink)><span\n class=\"delete-hyperlink-button-span\">x</span></div>\n <mat-form-field class=\"hyperlink-item-name-container\">\n <mat-label>{{ 'Name' | localizeText }}</mat-label>\n <input matInput placeholder=\"{{ 'Name' | localizeText }}\" [(ngModel)]=\"hyperlink.name\" [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n <mat-form-field class=\"hyperlink-item-url-container\">\n <mat-label>{{ 'Url' | localizeText }}</mat-label>\n <input matInput placeholder=\"Url\" [(ngModel)]=\"hyperlink.url\" [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n </div>\n <button mat-stroked-button color=\"primary\" (click)=addHyperlinkClicked()>{{ 'Add Hyperlink' | localizeText }}</button>\n</div>\n\n<div class=\"hyperlink-panel\" *ngIf=\"isEditMode\">\n <div *ngFor=\"let pdf of equipmentEvents.equipment.pdfs\" class=\"hyperlink-item-info-container\">\n <div class=\"delete-hyperlink-button text-h3\" (click)=deletePdfClicked(pdf)><span\n class=\"delete-hyperlink-button-span\">x</span></div>\n <mat-form-field class=\"hyperlink-item-name-container\">\n <mat-label>{{ 'Name' | localizeText }}</mat-label>\n <input matInput placeholder=\"{{ 'Name' | localizeText }}\" [(ngModel)]=\"pdf.name\" [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n <mat-form-field class=\"hyperlink-item-url-container\">\n <mat-label>{{ 'Url' | localizeText }}</mat-label>\n <input matInput placeholder=\"Url\" [(ngModel)]=\"pdf.url\" [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n </div>\n <input #pdfInput type=\"file\" accept=\"application/pdf\" (change)=\"processPdfFile(pdfInput)\" class=\"image-input\">\n <button mat-stroked-button color=\"primary\" (click)=addPdfClicked()>{{ 'Add Pdf' | localizeText }}</button>\n</div>\n\n<div class=\"images-panel\" *ngIf=\"isEditMode\">\n <div *ngFor=\"let image of equipmentEvents.equipment.images\" class=\"image-item-info-container\">\n <div class=\"delete-image-button text-h3\" (click)=deleteImageClicked(image)><span\n class=\"delete-image-button-span\">x</span></div>\n <div class=\"image-item-container\">\n <img src=\"{{ image.imageUrl }}\" class=\"image-item\" />\n </div>\n <mat-form-field class=\"image-item-name-container\">\n <mat-label>{{ 'Name' | localizeText }}</mat-label>\n <input matInput placeholder=\"{{ 'Name' | localizeText }}\" [(ngModel)]=\"image.name\" [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n </div>\n <input #imageInput type=\"file\" accept=\"image/*\" (change)=\"processFile(imageInput)\" class=\"image-input\">\n <button mat-stroked-button color=\"primary\" (click)=addImageClicked()>{{ 'Add Image' | localizeText }}</button>\n</div>\n\n<div class=\"main-button-block\" *ngIf=\"isEditMode\">\n <button mat-raised-button color=\"warn\" (click)=deleteClicked() *ngIf=\"buttonName === 'Save'\" class=\"button-delete\">{{ 'Delete' | localizeText }} {{ equipmentName | localizeText }}</button>\n <button mat-raised-button color=\"primary\" (click)=buttonClicked()>{{ buttonName }} {{ equipmentName | localizeText }}</button>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { NumberFormat } from '../../models/NumberFormat';\nimport { InfoBlockData } from './info-block.model';\n\n@Component({\n selector: 'br-info-block',\n templateUrl: './info-block.component.html',\n styleUrls: ['./info-block.component.scss']\n})\nexport class InfoBlockComponent implements OnInit {\n\n @Input()\n public data!: InfoBlockData;\n\n @Input()\n public text?: string;\n\n public format = NumberFormat;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<ng-container *ngIf=\"!!data.icon\">\n<br-svg-icon [name]=\"data.icon.name!\" [width]=\"data.icon.width\" [height]=\"data.icon.height\" [color]=\"data.icon.color\"\n class=\"icon\"></br-svg-icon>\n</ng-container>\n<span>{{ data.value | valueFormat: format.integerCurrencyFormat }}</span>\n<ng-container *ngIf=\"!!text\">{{ text }}</ng-container>\n<ng-container *ngIf=\"!!data.arrow\">\n <br-svg-icon [name]=\"data.arrow.icon\" [width]=\"data.arrow.width\" [height]=\"data.arrow.height\"\n [color]=\"data.arrow.color\" class=\"icon\">\n </br-svg-icon>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { switchMap } from 'rxjs/operators';\nimport { BuildingAssetListService } from 'src/app/services/real-services/building-asset-list.service';\nimport { SelectedBuildingService } from 'src/app/services/selected-building.service';\nimport { SelectedClientService } from 'src/app/services/selected-client.service';\nimport { BaseComponent } from 'src/app/shared/components/base/base.component';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { BuildingEvent, EventsByType, EventsInfo } from '../building-events/building-event.model';\nimport { BuildingEventModalModel } from './building-event-modal.model';\n\n@Component({\n selector: 'br-building-event-modal',\n templateUrl: './building-event-modal.component.html',\n styleUrls: ['./building-event-modal.component.scss'],\n providers: [BuildingEventModalModel],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BuildingEventModalComponent extends BaseComponent implements OnInit {\n\n public mainHeader: string;\n public subHeader: string;\n\n public propMap = this.model.propMap;\n public keepOriginalOrder = (prop: any) => prop.key;\n\n public isEditMode: boolean = false;\n\n constructor(\n public dialogRef: MatDialogRef<BuildingEventModalComponent>,\n @Inject(MAT_DIALOG_DATA) public data: EventsInfo,\n private readonly model: BuildingEventModalModel,\n private selectedClientService: SelectedClientService,\n public readonly selectedBuildingService: SelectedBuildingService,\n private readonly assetListService: BuildingAssetListService,\n private localizeText: LocalizeTextPipe) {\n super();\n this.mainHeader = `${this.localizeText.transform('Event History')} - ${data.events?.length || 0} ${this.localizeText.transform('Events')}`;\n this.subHeader = data.eventsType || '';\n }\n\n public ngOnInit(): void {\n this.selectedClientService.currentIsEditMode$.subscribe(isEditMode => {\n this.isEditMode = isEditMode;\n });\n }\n\n public addEventClicked(): void {\n\n if (!this.data.events) {\n this.data.events = [];\n }\n\n this.data.events.unshift(<BuildingEvent>{\n id: 0, eventType: this.data.equipment ? this.data.equipment.equipmentType : null,\n equipmentId: this.data.equipment ? this.data.equipment.id : null,\n addedBy: \"\", engineer: \"\", addedDate: new Date(), daysImplemented: 0, impact: 0, description: \"\", deleted: false\n });\n }\n\n public deleteEventClicked(event: BuildingEvent): void {\n event.deleted = true;\n }\n\n public saveClicked(): void {\n this.addSubscription(\n this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap(buildingId => this.assetListService.saveEvents(buildingId, this.data.events)),\n ).subscribe(res => {\n this.regetEquipmentAndClosePopup();\n })\n );\n console.log(this.data);\n }\n\n public trackByFn(index: number, item: any) {\n return index;\n }\n\n public toAny(obj: any) {\n return obj as any;\n }\n\n private regetEquipmentAndClosePopup(){\n this.dialogRef.close('reget');\n }\n}\n","<div class=\"title\">\n <span class=\"text-h3\">{{ mainHeader }}</span>\n <button class=\"close-button text-h3\" mat-dialog-close>x</button>\n <span class=\"text-h4 description-block\">{{ subHeader }}</span>\n</div>\n\n<div *ngIf=\"isEditMode\" class=\"edit-buttons-panel\">\n <button mat-stroked-button color=\"primary\" (click)=addEventClicked()>{{ 'Add Event' | localizeText }}</button>\n <button mat-raised-button color=\"primary\" class=\"save-changes-button\" (click)=saveClicked()>{{ 'Save changes' | localizeText }}</button>\n</div>\n\n<table>\n <thead>\n <tr>\n <th *ngIf=\"isEditMode\"> \n </th>\n <th [style.width]=\"propMap[item.key].width\" *ngFor=\"let item of propMap | keyvalue:keepOriginalOrder\">\n {{ propMap[item.key].name }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let event of data.events | eventfilter:1\">\n <td *ngIf=\"isEditMode\">\n <div class=\"delete-event-button text-h3\" (click)=deleteEventClicked(event)>\n <span class=\"delete-event-button-span\">x</span>\n </div>\n </td>\n <td *ngFor=\"let item of propMap | keyvalue:keepOriginalOrder; trackBy: trackByFn\">\n <span *ngIf=\"!isEditMode || !propMap[item.key].isEditable\">{{ propMap[item.key].getter(event[item.key])}}</span>\n <mat-form-field class=\"hyperlink-item-url-container\" *ngIf=\"isEditMode && propMap[item.key].isEditable\"> \n <input matInput [(ngModel)]=\"event[toAny(item.key)]\" [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n </td>\n </tr>\n </tbody>\n</table>\n","export class EndpointConst {\n public static readonly DASHBOARD = 'dashboard';\n public static readonly BUILDING = 'building';\n public static readonly CAMPUS = 'campus';\n public static readonly IMAGE = 'image';\n public static readonly ADMIN = 'admin';\n}\n","import { Observable } from 'rxjs';\nimport { GoLiveDateInfo } from 'src/app/shared/models/GoLiveDateInfo';\n\nexport const GO_LIVE_DATE_SERVICE = 'GO_LIVE_DATE_SERVICE';\nexport interface IGoLiveDateService {\n getGoLiveDate(clientId: number): Observable<Date>;\n getBuildingGoLiveDate(buildingId: number): Observable<GoLiveDateInfo>;\n}\n","import { Injectable } from '@angular/core';\nimport { LocalStorageService } from './local-storage.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenProviderService {\n private readonly TOKEN_KEY = 'token';\n constructor(private localStorageService: LocalStorageService) { }\n\n setToken(value: string): void {\n this.localStorageService.set(this.TOKEN_KEY, value);\n }\n\n public getToken(): string | null {\n return this.localStorageService.get(this.TOKEN_KEY);\n }\n\n public removeToken(): void {\n this.localStorageService.remove(this.TOKEN_KEY);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SelectedBuildingService {\n private selectedBuildingId = new BehaviorSubject<number | undefined>(undefined);\n public selectedBuildingId$ = this.selectedBuildingId.asObservable().pipe(map(v => v as number));\n\n public set buildingId(value: number) {\n this.selectedBuildingId.next(value);\n }\n\n public get buildingId() {\n return this.selectedBuildingId.getValue();\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'br-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss']\n})\nexport class CardComponent {\n @Input()\n public title = '';\n\n @Input()\n public description = '';\n}\n","<span *ngIf=\"!!title\" class=\"title text-st-semibold\">{{ title }}</span>\n<span *ngIf=\"!!description\" class=\"description text-sm\">{{ description }}</span>\n<ng-content></ng-content>\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { LOGIN_ROUTE } from '../../routing-const';\nimport { AuthenticationService } from '../services/authentication.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n constructor(private authService: AuthenticationService, private router: Router) {\n }\n canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n if (this.authService.isUserAuthenticated()) {\n return true;\n }\n this.router.navigate([LOGIN_ROUTE], { queryParams: { returnUrl: state.url }});\n return false;\n }\n}\n\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'br-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n\n ngOnInit(): void {\n }\n}\n\n\n","<div class=\"footer-block\">\n <div class=\"footer-inner-block\">\n <span>TBGenergy, LLC | 1500 Resource Drive, Birmingham, AL 35242 | (205) 278 – 2608 </span>\n <a href=\"mailto:energysupport@brogdonenergy.com\" >energysupport@brogdonenergy.com</a>\n <div class=\"terms-block\">\n <a href=\"https://docs.google.com/document/d/1dHHjS95t4HA9ToMuk5FU7xfarcHMM4u6Sb9gRMJN1-c/edit#heading=h.d7cgos5iofrk\" target=\"_blank\">Terms of Service TBG</a>\n </div>\n <div>\n <a href=\"https://docs.google.com/document/d/1dfIgBot7wvIxL_pbkBJESj6ufvl7rRKAh0vgN0bV-Zg/edit\" target=\"_blank\">TBGEnergy Privacy</a>\n </div> \n </div> \n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { formatNumber } from '@angular/common';\nimport { NumberFormat } from '../models/NumberFormat';\n\n@Pipe({\n name: 'valueFormat'\n})\nexport class ValueFormatPipe implements PipeTransform {\n private readonly shortPostfixes = ['K', 'M', 'B'];\n private readonly maxFractionDigitsInShort = 2;\n private readonly defaultDigitsInfo = '1.0-2';\n private readonly defaultLocale = 'en-US';\n\n public transform(value: any, format: NumberFormat | undefined, defaultValue: string = '-'): string | undefined {\n if (!value) {\n return defaultValue;\n }\n\n if (typeof value !== 'number') {\n return value;\n }\n\n if (format === undefined) {\n return formatNumber(value, this.defaultLocale, this.defaultDigitsInfo);\n }\n\n if (!format.isShort || Math.abs(value) < 1000) {\n const formattedNumber = formatNumber(value, this.defaultLocale, format.digitsInfo);\n return `${format.prefix}${formattedNumber}${format.postfix}`;\n }\n\n return this.getShortFormattedNumber(value, format);\n }\n\n private getShortFormattedNumber(value: number, format: NumberFormat): string {\n const isPositive = value >= 0;\n value = Math.abs(value);\n const digits = Math.floor(Math.log10(value));\n const exp = Math.floor(digits / 3);\n const digitsBeforeDot = digits % 3;\n const shortNumber = value / Math.pow(1000, exp);\n const maxFractionDigits = Math.min(format.maxFractionDigits, Math.max(this.maxFractionDigitsInShort - digitsBeforeDot, 0));\n const formattedNumber = formatNumber(Number(shortNumber), this.defaultLocale, `${format.minIntegerDigits}.${format.minFractionDigits}-${maxFractionDigits}`);\n return `${format.prefix}${isPositive?'':'-'}${formattedNumber}${this.shortPostfixes[exp - 1]}${format.postfix}`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { IClientSummaryService } from '../interfaces/client-summary.interface';\nimport { ClientSummaryData } from '../../models/ClientSummaryData';\nimport { ClientSummaryAdditionalData } from '../../models/ClientSummaryAdditionalData';\nimport { environment } from '../../../environments/environment';\nimport { EndpointConst } from './endpoint-const';\nimport { DateRange } from '@angular/material/datepicker';\nimport { ClientDateRange } from '../../models/ClientDateRange';\nimport { CampusSummaryData } from 'src/app/models/CampusSummaryData';\nimport { CampusDateRange } from 'src/app/models/BuildingDateRange';\nimport { AlertsData } from 'src/app/models/AlertsData';\n\n@Injectable()\nexport class ClientSummaryRealService implements IClientSummaryService {\n private REST_API_SERVER = environment.apiUrl;\n private readonly CLIENT_SUMMARY = 'summary';\n private readonly CAMPUS_SUMMARY = 'campus-summary';\n private readonly ALERTS = 'alerts';\n private readonly CLIENT_SUMMARY_ADDITIONAL = 'summary-additional';\n private readonly CAMPUS_SUMMARY_ADDITIONAL = 'campus-summary-additional';\n\n constructor(private httpClient: HttpClient) { }\n getAlerts(clientId: number, campusId: number, dateRange: DateRange<Date>): Observable<AlertsData> {\n const data = this.httpClient.post<AlertsData>(\n `${this.REST_API_SERVER}/${EndpointConst.DASHBOARD}/${this.ALERTS}`,\n {\n clientId,\n campusId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as CampusDateRange);\n return data;\n }\n\n public getCampusSummaryData(clientId: number, campusId: number, dateRange: DateRange<Date>): Observable<CampusSummaryData> {\n const data = this.httpClient.post<CampusSummaryData>(\n `${this.REST_API_SERVER}/${EndpointConst.DASHBOARD}/${this.CAMPUS_SUMMARY}`,\n {\n clientId,\n campusId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as CampusDateRange);\n return data;\n }\n public getCampusSummaryAdditionalData(campusId: number, dateRange: DateRange<Date>): Observable<ClientSummaryAdditionalData> {\n const data = this.httpClient.post<ClientSummaryAdditionalData>(\n `${this.REST_API_SERVER}/${EndpointConst.DASHBOARD}/${this.CAMPUS_SUMMARY_ADDITIONAL}`,\n {\n campusId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as CampusDateRange);\n return data;\n }\n\n public getClientSummaryData(clientId: number, dateRange: DateRange<Date>): Observable<ClientSummaryData> {\n const data = this.httpClient.post<ClientSummaryData>(\n `${this.REST_API_SERVER}/${EndpointConst.DASHBOARD}/${this.CLIENT_SUMMARY}`,\n {\n clientId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as ClientDateRange);\n return data;\n }\n\n public getClientSummaryAdditionalData(clientId: number, dateRange: DateRange<Date>): Observable<ClientSummaryAdditionalData> {\n const data = this.httpClient.post<ClientSummaryAdditionalData>(\n `${this.REST_API_SERVER}/${EndpointConst.DASHBOARD}/${this.CLIENT_SUMMARY_ADDITIONAL}`,\n {\n clientId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as ClientDateRange);\n return data;\n }\n}\n","import { NoteItem } from \"./EquipmentsEvents\";\n\nexport interface BuildingInfo {\n id: number;\n clientId: number;\n buildingName: string;\n temperature: number;\n rangeElectricitySavings: number;\n rangeNaturalGasSavings: number;\n electricityDynamics: string;\n gasDynamics: string;\n goLiveDate: Date;\n rangeSavings?: number;\n totalSavings?: number;\n eui?: number;\n electricityCostPercent?: number;\n electricityCost?: number;\n totalSquareFootage?: number;\n totalEnergySpend?: number;\n naturalGasCostPercent?: number;\n naturalGasCost?: number;\n tags: string[];\n meterNames: string[];\n bedsCount: number;\n carbonEmission?: number;\n carbonReduced?: number;\n rangeWaterSpent?: number; \n waterCost?: number;\n electricConsumption?: number;\n electricSavingVolume?: number;\n gasConsumption?: number;\n gasSavingsVolume?: number;\n gasMeasure?: string;\n hasElectricity: boolean;\n hasGas: boolean;\n hasWater: boolean;\n}\n\nexport interface BuildingInfoAdditional {\n energyEfficiencyScore: number;\n energyStarScore: number;\n}\n\nexport class BuildingContact {\n id: number;\n buildingId: number;\n name: string;\n title: string;\n email: string;\n officeNumber: string;\n cellPhoneNumber: string;\n notes: NoteItem[]=[];\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SvgIconComponent } from './components/svg-icon/svg-icon.component';\nimport { CardComponent } from './components/card/card.component';\nimport { MapToIterablePipe } from './pipes/map-to-iterable.pipe';\nimport { SvgDefinitionsComponent } from './components/svg-definitions/svg-definitions.component';\nimport { ValueFormatPipe } from './pipes/value-format.pipe';\nimport { BarChartComponent } from './components/bar-chart/bar-chart.component';\nimport { DonutChartComponent } from './components/donut-chart/donut-chart.component';\nimport { InfoBlockComponent } from './components/info-block/info-block.component';\nimport { EventModalComponent } from './components/event-modal/event-modal.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n declarations: [\n SvgIconComponent,\n CardComponent,\n MapToIterablePipe,\n SvgDefinitionsComponent,\n ValueFormatPipe,\n BarChartComponent,\n DonutChartComponent,\n InfoBlockComponent,\n EventModalComponent\n ],\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule\n ],\n exports: [\n SvgIconComponent,\n CardComponent,\n MapToIterablePipe,\n SvgDefinitionsComponent,\n ValueFormatPipe,\n BarChartComponent,\n DonutChartComponent,\n InfoBlockComponent,\n EventModalComponent\n ]\n})\nexport class SharedModule { }\n","import { Directive, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\n@Directive()\n// tslint:disable:directive-class-suffix\nexport abstract class BaseComponent implements OnDestroy {\n\n public subscriptions: Subscription[] = [];\n public subscriptionsMap: Record<string, Subscription> = {};\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n Object.keys(this.subscriptionsMap)\n .map(key => this.subscriptionsMap[key])\n .forEach(subscription => subscription.unsubscribe());\n }\n\n public addSubscription(subscription: Subscription, subscriptionName?: string): void {\n if (!!subscriptionName) {\n this.subscriptionsMap[subscriptionName] = subscription;\n } else {\n this.subscriptions.push(subscription);\n }\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnInit } from '@angular/core';\nimport { combineLatest } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { AlertsData, AlertsItem } from 'src/app/models/AlertsData';\nimport { CLIENT_SUMMARY_SERVICE, IClientSummaryService } from 'src/app/services/interfaces/client-summary.interface';\nimport { SelectedClientService } from '../../services/selected-client.service';\nimport { BaseComponent } from '../../shared/components/base/base.component';\nimport { AlarmDateService, DateSelectorService, EventSnapshotDateService } from '../date-selector/date-selector.service';\n\n@Component({\n selector: 'br-building-alerts',\n templateUrl: './building-alerts.component.html',\n styleUrls: ['./building-alerts.component.scss'],\n providers: [DateSelectorService,\n { provide: DateSelectorService,\n useExisting: AlarmDateService\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BuildingAlertsComponent extends BaseComponent implements OnInit {\n public alertsItems: AlertsItem[] = null;\n public hasCampus: boolean = false;\n\n constructor(\n private readonly selectedClientService: SelectedClientService,\n @Inject(CLIENT_SUMMARY_SERVICE) private readonly clientSummaryService: IClientSummaryService,\n private readonly dateFilterService: DateSelectorService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.addSubscription(\n combineLatest([\n this.selectedClientService.selectedClientId$,\n this.selectedClientService.selectedCampusId$,\n this.dateFilterService.dateRangeChanged$,\n ]).pipe(\n switchMap(([clientId, campusId, dateRange]) => this.clientSummaryService.getAlerts(clientId, campusId, dateRange))\n ).subscribe((data: AlertsData) => {\n this.alertsItems = data.alertsItems;\n this.hasCampus = this.alertsItems.filter(p => p.campusName && p.campusName !== '').length > 0;\n this.changeDetectorRef.detectChanges();\n })\n );\n } \n}\n","<div class=\"component-title\">\n <div class=\"text-h3 component-title__text\">{{ 'Model Alarms' | localizeText }}</div> \n <br-date-selector></br-date-selector>\n</div>\n<div class=\"table-container\" *ngIf=\"alertsItems\"> \n <table>\n <thead>\n <tr>\n <th *ngIf=\"hasCampus\">Campus</th>\n <th>Building</th>\n <th>Model</th>\n <th>Preset Daily Limit</th>\n <th>Actual Daily % Difference / Usage Difference</th>\n <th>Date Implemented</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let alertItem of alertsItems\">\n <td *ngIf=\"hasCampus\">{{ alertItem.campusName }}</td>\n <td>{{ alertItem.buildingName }}</td>\n <td>{{ alertItem.modelName }}</td>\n <td [ngStyle]=\"{'color': alertItem.isRed ? '#FC1B1C' : '#70AD47'}\">{{ alertItem.presetLimit }} {{ alertItem.units }}</td>\n <td [ngStyle]=\"{'color': alertItem.isRed ? '#FC1B1C' : '#70AD47'}\">{{ alertItem.actual }} {{ alertItem.units }} ({{ alertItem.days }} days)</td>\n <td>{{ alertItem.dateImplemented }}</td>\n </tr>\n </tbody>\n </table>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, OnInit, Output, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map, switchMap, takeLast } from 'rxjs/operators';\nimport { FacilityBenchmarkData } from '../../models/FacilityBenchmarkData';\nimport { UtilityBenchmarkData } from '../../models/UtilityBenchmarkData';\nimport { BenchmarksService } from '../../services/real-services/benchmarks.service';\nimport { BaseComponent } from '../../shared/components/base/base.component';\nimport { GO_LIVE_DATE_SERVICE, IGoLiveDateService } from 'src/app/services/interfaces/go-live-date.interface';\nimport { Location } from '@angular/common';\nimport { Utils } from '../../shared/utils';\nimport { SelectedClientService } from '../../services/selected-client.service';\nimport { NOT_FOUND_ROUTE } from '../../routing-const';\nimport { SelectedBuildingService } from '../../services/selected-building.service';\nimport { GoLiveDateStorage } from '../../services/go-live-date-storage.service';\nimport { BuildingEventsComponent } from 'src/app/components/building-events/building-events.component';\nimport { BuildingAssetListComponent } from 'src/app/components/building-asset-list/building-asset-list.component';\nimport { BUILDING_SUMMARY_SERVICE, IBuildingSummaryService } from 'src/app/services/interfaces/building-summary.interface';\nimport { SaveEquipmentResult } from 'src/app/models/EquipmentsEvents';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { DashboardExcelService } from 'src/app/services/dashboard-excel.service';\nimport { DateSelectorService } from 'src/app/components/date-selector/date-selector.service';\n\nexport class TagHolder {\n name: string;\n isConfirmed: boolean = true;\n}\n\n@Component({\n selector: 'br-building-page',\n templateUrl: './building-page.component.html',\n styleUrls: ['./building-page.component.scss'],\n providers: [DateSelectorService],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BuildingPageComponent extends BaseComponent implements OnInit {\n\n @ViewChild(BuildingEventsComponent) buildingEventsComponent: BuildingEventsComponent;\n @ViewChild(BuildingAssetListComponent) buildingAssetListComponent: BuildingAssetListComponent;\n\n public buildingBenchmarksData$ = new Observable<FacilityBenchmarkData[]>();\n public utilityBenchmarksData$ = new Observable<UtilityBenchmarkData[]>();\n public buildingGoLiveDate$ = new Observable<Date>();\n public buildingId!: number;\n\n public tags: TagHolder[] = [];\n\n public isSpendView = true;\n\n @Output()\n public spendViewChanged = new EventEmitter<boolean>();\n\n constructor(\n private readonly router: Router,\n private _location: Location,\n private readonly activateRoute: ActivatedRoute,\n private readonly selectedBuildingService: SelectedBuildingService,\n private readonly benchmarksService: BenchmarksService,\n @Inject(BUILDING_SUMMARY_SERVICE) private readonly buildingSummaryService: IBuildingSummaryService,\n private localizeText: LocalizeTextPipe,\n private readonly selectedClientService: SelectedClientService,\n private changeDetectorRef: ChangeDetectorRef,\n public readonly dashboardExcelService: DashboardExcelService,\n private readonly dateFilterService: DateSelectorService,\n ) {\n super();\n\n this.addSubscription(\n this.activateRoute.params.pipe(\n map(params => Utils.tryGetNumberFromAny(params.buildingId))\n ).subscribe(buildingId => {\n if (buildingId !== undefined) {\n this.selectedBuildingService.buildingId = buildingId;\n this.buildingId = buildingId;\n } else {\n this.backToPageNotFound();\n }\n })\n );\n\n this.getTags();\n }\n\n ngOnInit(): void {\n this.buildingBenchmarksData$ = this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap(buildingId => this.benchmarksService.getBuildingFacilityBenchmarks(buildingId)),\n map(benchmark => [benchmark])\n );\n\n this.utilityBenchmarksData$ = this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap(buildingId => this.benchmarksService.getBuildingUtilityBenchmarks(buildingId)),\n map(benchmark => [benchmark])\n );\n\n this.selectedClientService.currentLocalization$.subscribe(localization => {\n if (localization) {\n this.changeDetectorRef.detectChanges();\n }\n });\n }\n\n public switchSpendView(): void {\n this.isSpendView = !this.isSpendView;\n this.spendViewChanged.emit(this.isSpendView);\n }\n\n public backToPageNotFound(): void {\n //!!todo this.router.navigate([NOT_FOUND_ROUTE]);\n }\n\n public backToOverview(): void {\n this._location.back();\n //this.router.navigate(['../../'], { relativeTo: this.activateRoute });\n }\n\n public regetRequested(): void {\n this.buildingEventsComponent.getEvents();\n }\n\n public regetRequestedForAssets(): void {\n this.buildingAssetListComponent.getEquipmentInfo();\n }\n\n public addTagClicked(): void {\n this.tags[this.tags.length] = { name: \"\", isConfirmed: false };\n }\n\n public deleteTagClicked(tagItem: TagHolder): void {\n if (confirm(this.localizeText.transform(\"Are you sure you want to delete this tag?\"))) {\n this.tags = this.tags.filter(p => p != tagItem);\n this.saveTags();\n }\n }\n\n public confirmTagClicked(tagItem: TagHolder): void {\n tagItem.isConfirmed = true;\n this.saveTags();\n }\n\n public allConfirmed(): boolean {\n return this.tags.filter(p => !p.isConfirmed).length === 0;\n }\n\n public print(): void {\n window.print();\n }\n\n public exportToExcel() {\n const buildingId = this.selectedBuildingService.buildingId;\n const dateRange = this.dateFilterService.getDateRange();\n this.dashboardExcelService.downloadBuildingExcelReport(buildingId, dateRange); \n }\n\n private saveTags(): void {\n this.addSubscription(\n this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap((buildingId: number) => this.buildingSummaryService.saveBuildingTags(buildingId, this.tags.map(p => p.name))\n ))\n .subscribe((data: SaveEquipmentResult) => {\n console.log(\"tags saved\");\n })\n );\n }\n\n private getTags(): void {\n this.addSubscription(\n this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap((buildingId: number) => this.buildingSummaryService.getBuildingTags(buildingId)\n ))\n .subscribe((data: string[]) => {\n this.tags = data.map(p => <TagHolder>{ name: p, isConfirmed: true });\n })\n );\n }\n}\n","<button class=\"button-link text-sm-semibold\" (click)=\"backToOverview()\">\n <br-svg-icon name=\"arrow-left\" [width]=\"11\" [height]=\"11\" class=\"arrow icon\"></br-svg-icon>\n <span>{{ 'Back to Campus' | localizeText }}</span>\n</button>\n<div class=\"text-h3 component-title__text\" style=\"margin-top: 15px;\">{{ 'Building Summary' | localizeText }}</div>\n<div>\n<button mat-button [matMenuTriggerFor]=\"menu\" class=\"custom-btn export-btn text-st-semibold\">{{ 'Export Data' | localizeText }}</button>\n<mat-menu #menu=\"matMenu\" class=\"hide-on-print\">\n <button mat-menu-item (click)=\"print()\">{{ 'Export to PDF' | localizeText }}</button>\n <button mat-menu-item (click)=\"exportToExcel()\">{{ 'Export to Excel' | localizeText }}</button>\n</mat-menu>\n<button class=\"custom-btn btn-hollow text-st-semibold consumption-switcher\" (click)=\"switchSpendView()\">\n {{ (isSpendView ? 'Switch to Consumption View' : 'Switch to Spend View') | localizeText }}\n</button>\n</div>\n<br-building-info [isSpendView]=\"isSpendView\"></br-building-info>\n<br-facility-benchmarks [data]=\"(buildingBenchmarksData$ | async)!\" [buildingId]=\"buildingId\" [isEditIndustryEnabled]=\"true\"></br-facility-benchmarks>\n<!-- <br-utility-benchmarks [data]=\"(utilityBenchmarksData$ | async)!\"></br-utility-benchmarks> -->\n<div>\n <div class=\"text-h3\">{{ 'Building Tags' | localizeText }}</div> \n <div class=\"tags-block\">\n <div class=\"tag-block\" *ngFor=\"let tagItem of tags\">\n \n <div>\n <div class=\"delete-tag-button text-h5\" (click)=deleteTagClicked(tagItem) *ngIf=\"tagItem.isConfirmed\">\n <span class=\"delete-tag-button-span\">x</span>\n </div>\n \n <div class=\"confirmed-tag\" *ngIf=\"tagItem.isConfirmed\">\n <span>{{ tagItem.name }}</span>\n </div> \n </div>\n \n <div>\n <mat-form-field class=\"tag-item-name-container\" *ngIf=\"!tagItem.isConfirmed\">\n <mat-label>{{ 'Tag Name' | localizeText }}</mat-label>\n <input matInput [(ngModel)]=\"tagItem.name\" [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field> \n \n <button class=\"add-tag-button\" mat-stroked-button color=\"primary\" (click)=confirmTagClicked(tagItem) *ngIf=\"!tagItem.isConfirmed && tagItem.name!==''\">{{ 'Save' | localizeText }}</button>\n </div>\n </div> \n <button class=\"add-tag-button\" mat-stroked-button color=\"primary\" (click)=addTagClicked() *ngIf=\"allConfirmed()\">{{ 'Add Tag' | localizeText }}</button>\n </div> \n</div>\n<br-building-events #buildingEvents (onRegetRequested)=\"regetRequestedForAssets()\"></br-building-events>\n<br-building-asset-list #buildingAssetList (onRegetRequested)=\"regetRequested()\"></br-building-asset-list>\n<div class=\"contacts-block\">\n <br-building-contacts [buildingId]=\"buildingId\"></br-building-contacts>\n</div>\n","import { Injectable } from '@angular/core';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { NumberFormat } from '../../shared/models/NumberFormat';\n\nexport class SavingsData {\n title = '';\n description = '';\n value?: number;\n additionalValue?: number;\n format?: NumberFormat;\n}\n\nexport class DetailsData {\n description = '';\n icon = '';\n value?: number;\n hideIfUndefined?: boolean;\n hide?: boolean;\n format?: NumberFormat;\n isGreen?: boolean = false;\n unitOfMeasure? = '';\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CampusSummaryModel {\n\n constructor(private localizeText: LocalizeTextPipe) {\n }\n\n public rangeSavingsTitle = [\n this.localizeText.transform('Yesterday Savings'),\n this.localizeText.transform('Last 7 Day Savings'),\n this.localizeText.transform('Last 30 Day Savings'),\n this.localizeText.transform('Last 90 Day Savings'),\n this.localizeText.transform('Last 365 Day Savings'),\n this.localizeText.transform('\"Year to Date\" Savings'),\n this.localizeText.transform('Custom Range Savings')\n ];\n\n public rangeSavingsDescriptions = [\n this.localizeText.transform('Yesterday Savings'),\n this.localizeText.transform('Savings of This Week'),\n this.localizeText.transform('Savings of This Month'),\n this.localizeText.transform('Savings of This Quarter'),\n this.localizeText.transform('Savings of This Year'),\n this.localizeText.transform('\"Year to Date\" Savings'),\n this.localizeText.transform('Custom Range Savings')\n ];\n public defaultSavingsData: Record<string, SavingsData> = {\n totalSavings: {\n title: this.localizeText.transform('Total Savings'),\n description: this.localizeText.transform('Savings of All Time'),\n format: NumberFormat.integerCurrencyFormat\n },\n rangeToDateSavings: {\n title: ' ' + this.localizeText.transform('Savings'),\n description: this.localizeText.transform('Savings of This Year'),\n format: NumberFormat.integerCurrencyFormat\n }\n };\n\n public defaultOverviewData: Record<string, DetailsData> = {\n buildingCount: {\n icon: 'building',\n description: this.localizeText.transform('Building Count'),\n isGreen: false,\n },\n totalBeds: {\n icon: 'bed',\n description: this.localizeText.transform('Total Beds'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n totalSquareFootage: {\n icon: 'ruler',\n description: this.localizeText.transform('Total sq. ft.'),\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n };\n\n public defaultDetailsData: Record<string, DetailsData> = { \n totalEnergySpend: {\n icon: 'lightbulb',\n description: this.localizeText.transform('Total Energy Spend'),\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n },\n // eui: {\n // icon: 'fire',\n // description: this.localizeText.transform('EUI'),\n // format: NumberFormat.shortNumberFormat\n // },\n electricityCost: {\n icon: 'plug',\n description: this.localizeText.transform('Electricity Spend'),\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n },\n naturalGasCost: {\n icon: 'fire-alt',\n description: this.localizeText.transform('Natural Gas Spend'),\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n },\n co2Emission: {\n icon: 'fire',\n description: this.localizeText.transform('lbs CO2 Emissions'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n waterSpend: {\n icon: 'water',\n description: this.localizeText.transform('Water Spend'),\n hideIfUndefined: true,\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n }, \n emptyBlock: {\n icon: '',\n description: '',\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n }, \n electricitySavings: {\n icon: 'plug',\n description: this.localizeText.transform('Electricity Savings'),\n format: NumberFormat.shortCurrencyFormat,\n isGreen: true,\n }, \n naturalGasSavings: {\n icon: 'fire-alt',\n description: this.localizeText.transform('Natural Gas Savings'),\n format: NumberFormat.shortCurrencyFormat,\n isGreen: true,\n }, \n co2Reduced: {\n icon: 'fire',\n description: this.localizeText.transform('lbs CO2 Reduced'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: true,\n },\n waterUsage: {\n icon: 'water',\n description: this.localizeText.transform('Water Usage CCF'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n },\n };\n\n public defaultConsumptionDetailsData: Record<string, DetailsData> = { \n emptyBlockA: {\n icon: '',\n description: '',\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n },\n electricConsumption: {\n icon: 'plug',\n description: this.localizeText.transform('Electric Consumption'),\n format: NumberFormat.shortNumberFormat,\n unitOfMeasure: ' (kWh)',\n isGreen: false,\n }, \n naturalGasConsumption: {\n icon: 'fire-alt',\n description: this.localizeText.transform('Natural Gas Consumption'),\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n co2Emission: {\n icon: 'fire',\n description: this.localizeText.transform('lbs CO2 Emissions'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n emptyBlockH: {\n icon: '',\n description: '',\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n }, \n waterSpend: {\n icon: '',\n description: '',\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n }, \n electricSavingVolume: {\n icon: 'plug',\n description: this.localizeText.transform('Electric Savings'),\n format: NumberFormat.shortNumberFormat,\n unitOfMeasure: ' (kWh)',\n isGreen: true,\n },\n naturalGasSavings: {\n icon: 'fire-alt',\n description: this.localizeText.transform('Natural Gas Savings'),\n format: NumberFormat.shortNumberFormat,\n isGreen: true,\n }, \n co2Reduced: {\n icon: 'fire',\n description: this.localizeText.transform('lbs CO2 Reduced'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: true,\n },\n waterUsage: {\n icon: 'water',\n description: this.localizeText.transform('Water Usage CCF'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n },\n };\n}\n","export const LOGIN_ROUTE = 'login';\nexport const CLIENT_SELECT_ROUTE = 'client-select';\nexport const DASHBOARD_ROUTE = 'dashboard';\nexport const BUILDING_ROUTE = 'building';\nexport const CAMPUS_ROUTE = 'campus';\nexport const ADMIN_ROUTE = 'admin';\nexport const NOT_FOUND_ROUTE = '404';\n","import { Injectable } from '@angular/core';\nimport { InfoBlockData } from 'src/app/shared/components/info-block/info-block.model';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { NumberFormat } from '../../shared/models/NumberFormat';\n\nexport enum ArrowType {\n Increased = 'arrow-increase',\n Decreased = 'arrow-decrease',\n Unaltered = 'vector'\n}\n\nexport interface ArrowData {\n icon: string;\n width: number;\n height: number;\n color: string;\n}\n\nexport interface FormattedNumber {\n value: number;\n format: NumberFormat;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BuildingsModel {\n\n constructor(private localizeText: LocalizeTextPipe) {\n }\n\n public defaultInfoBlockData: Record<string, InfoBlockData> = {\n electricitySavings: {\n icon: { name: 'plug', width: 13.5, height: 18, color: '#53698F' }\n },\n gasSavings: {\n icon: { name: 'fire-alt', width: 15.75, height: 18, color: '#3EB049' }\n },\n savings: {\n icon: { name: 'usd-circle', width: 16, height: 16, color: '#3EB049' }\n }\n };\n\n public rangeSavingsTitleShort = [\n this.localizeText.transform('Yesterday Savings'),\n this.localizeText.transform('Last 7 Day Savings'),\n this.localizeText.transform('Last 30 Day Savings'),\n this.localizeText.transform('Last 90 Day Savings'),\n this.localizeText.transform('Last 365 Day Savings'),\n this.localizeText.transform('YTD Savings'),\n this.localizeText.transform('Savings')\n ];\n\n public arrowType: Record<string, ArrowData> = {\n increased: {\n icon: ArrowType.Increased,\n width: 8,\n height: 16,\n color: '#3EB049'\n },\n decreased: {\n icon: ArrowType.Decreased,\n width: 8,\n height: 16,\n color: '#CD0402'\n },\n unaltered: {\n icon: ArrowType.Unaltered,\n width: 13,\n height: 15,\n color: '#FFA26B'\n }\n };\n}\n","import { DateRange } from '@angular/material/datepicker';\nimport { Observable } from 'rxjs';\nimport { BuildingData } from '../../models/BuildingData';\nimport { CampusData } from '../../models/CampusData';\n\nexport const BUILDING_SPREADSHEET_SERVICE = 'BUILDING_SPREADSHEET_SERVICE';\nexport interface IBuildingSpreadsheetService {\n getBuildingSpredsheetData(clientId: number, campusId: number, dateRange: DateRange<Date>): Observable<BuildingData[]>;\n getCampusSpredsheetData(clientId: number, dateRange: DateRange<Date>): Observable<CampusData[]>;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'br-app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n}\n","<br-header></br-header>\n<div class=\"paddings\">\n <router-outlet></router-outlet>\n</div>\n<br-svg-definitions></br-svg-definitions>\n<br-footer></br-footer>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map, tap } from 'rxjs/operators';\nimport { SelectedClientService } from 'src/app/services/selected-client.service';\nimport { environment } from '../../../environments/environment';\nimport { AuthResponse, LanguageInfo, UserForAuthentication } from '../../models/AuthModel';\nimport { LOGIN_ROUTE } from '../../routing-const';\nimport { TokenProviderService } from './token-provider.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthenticationService {\n private readonly REST_API_SERVER = environment.apiUrl;\n private readonly LOGIN = 'accounts/login';\n private readonly LOGOUT = 'accounts/logout';\n private readonly AUTH_INFO = 'accounts/auth-info';\n private readonly CHANGE_LANGUAGE = 'accounts/change-language';\n private authChangeSub = new BehaviorSubject<boolean>(this.isUserAuthenticated());\n public authChanged$ = this.authChangeSub.asObservable();\n\n constructor(\n private tokenProvider: TokenProviderService,\n private http: HttpClient,\n private jwtHelper: JwtHelperService,\n private readonly selectedClientService: SelectedClientService,\n private router: Router\n ) { }\n\n public loginUser(body: UserForAuthentication): Observable<AuthResponse> {\n return this.http.post<AuthResponse>(`${this.REST_API_SERVER}/${this.LOGIN}`, body).pipe(\n tap(result => {\n this.initAuthResponse(result);\n })\n );\n }\n\n public logoutUser(): Observable<AuthResponse> {\n return this.http.post<AuthResponse>(`${this.REST_API_SERVER}/${this.LOGOUT}`, \"\");\n }\n\n public getAuthInfo(): Observable<AuthResponse> {\n return this.http.get<AuthResponse>(`${this.REST_API_SERVER}/${this.AUTH_INFO}`).pipe(\n tap(result => {\n this.initAuthResponse(result);\n })\n );\n }\n\n public changeLanguage(language: LanguageInfo): Observable<AuthResponse> { \n return this.http.post<AuthResponse>(`${this.REST_API_SERVER}/${this.CHANGE_LANGUAGE}`, language).pipe(\n tap(result => {\n //this.initAuthResponse(result);\n window.location.reload();\n })\n );\n }\n\n public isUserAuthenticated(): boolean {\n //console.log(this.authChangeSub?.value === true);\n return this.authChangeSub?.value === true;\n // const token = this.tokenProvider.getToken();\n // return !!token; //!!todo && !this.jwtHelper.isTokenExpired(token);\n }\n\n public logout(): void {\n this.tokenProvider.removeToken();\n this.authChangeSub.next(false);\n\n this.logoutUser().subscribe((res)=>{ \n this.selectedClientService.isEditor = false;\n this.selectedClientService.isEngCoAdmin = false;\n });\n\n this.router.navigate([LOGIN_ROUTE]);\n }\n\n private initAuthResponse(result: AuthResponse): void {\n this.authChangeSub.next(result.isAuthSuccessful);\n\n if (!result.isAuthSuccessful) {\n return;\n }\n\n this.tokenProvider.setToken(result.token);\n this.selectedClientService.isEditor = result.isEditor;\n this.selectedClientService.isEngCoAdmin = result.isEngCoAdmin;\n this.selectedClientService.loginId = result.loginId;\n this.selectedClientService.localization = result.localization;\n if (result.clients.length > 1) {\n this.selectedClientService.availableClients = result.clients;\n }\n else {\n let clientId = result.clients[0].id;\n this.selectedClientService.clientId = clientId;\n }\n\n //this.router.navigate([this.router.url])\n }\n}\n","import { EventEmitter, Input } from '@angular/core';\nimport { Output } from '@angular/core';\nimport { Component } from '@angular/core';\nimport { SelectedClientService } from 'src/app/services/selected-client.service';\nimport { DashboardExcelService } from '../../services/dashboard-excel.service';\nimport { DateSelectorService } from '../date-selector/date-selector.service';\n\n@Component({\n selector: 'br-dashboard-btn-group',\n templateUrl: './dashboard-btn-group.component.html',\n styleUrls: ['./dashboard-btn-group.component.scss'],\n\n})\nexport class DashboardBtnGroupComponent {\n public isAdvancedView = false;\n public isAlarmsView = false;\n public isSpendView = true;\n\n @Input()\n public isShowLeftButtons = true;\n\n @Output()\n public advancedViewChanged = new EventEmitter<boolean>();\n\n @Output()\n public alarmViewChanged = new EventEmitter<boolean>();\n\n\n @Output()\n public spendViewChanged = new EventEmitter<boolean>();\n\n constructor(public readonly dashboardExcelService: DashboardExcelService,\n private readonly selectedClientService: SelectedClientService,\n private readonly dateFilterService: DateSelectorService) { }\n\n public switchView(): void {\n this.isAdvancedView = !this.isAdvancedView;\n this.advancedViewChanged.emit(this.isAdvancedView);\n }\n\n public switchAlarmView(): void {\n this.isAlarmsView = !this.isAlarmsView;\n this.alarmViewChanged.emit(this.isAlarmsView);\n }\n\n public switchSpendView(): void {\n this.isSpendView = !this.isSpendView;\n this.spendViewChanged.emit(this.isSpendView);\n }\n\n public print(): void {\n window.print();\n }\n\n public exportToExcel(): void {\n this.dashboardExcelService.downloadExcelReport();\n }\n\n public exportToExcelAlarms(): void {\n this.dashboardExcelService.downloadAlarmsExcelReport(this.selectedClientService.clientId, this.selectedClientService.campusId, this.dateFilterService.getDateRange());\n }\n}\n","<button class=\"custom-btn btn-hollow text-st-semibold\" (click)=\"switchView()\">\n {{ (isAdvancedView ? 'Switch to Simple View' : 'Switch to Advanced View') | localizeText }}\n</button>\n<div *ngIf=\"isShowLeftButtons\">\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"custom-btn export-btn text-st-semibold\">{{ 'Export Data' | localizeText }}</button>\n <mat-menu #menu=\"matMenu\" class=\"hide-on-print\">\n <button mat-menu-item (click)=\"print()\">{{ 'Export to PDF' | localizeText }}</button>\n <button mat-menu-item (click)=\"exportToExcel()\">{{ 'Export to Excel' | localizeText }}</button>\n </mat-menu>\n</div>\n<button class=\"custom-btn btn-hollow text-st-semibold\" (click)=\"switchAlarmView()\">\n {{ (isAlarmsView ? 'Hide Model Alarms' : 'Model Alarms') | localizeText }}\n</button>\n<div>\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"custom-btn export-btn text-st-semibold\">{{ 'Export Data' | localizeText }}</button>\n <mat-menu #menu=\"matMenu\" class=\"hide-on-print\"> \n <button mat-menu-item (click)=\"exportToExcelAlarms()\">{{ 'Export to Excel' | localizeText }}</button>\n </mat-menu>\n</div>\n<button class=\"custom-btn btn-hollow text-st-semibold consumption-switcher\" (click)=\"switchSpendView()\">\n {{ (isSpendView ? 'Switch to Consumption View' : 'Switch to Spend View') | localizeText }}\n</button>\n","import { Pipe, PipeTransform } from '@angular/core';\n\ntype Args = 'keyval' | 'key' | 'value';\n\n@Pipe({\n name: 'mapToIterable',\n pure: false\n})\nexport class MapToIterablePipe implements PipeTransform {\n public transform(obj: any, arg: Args = 'keyval'): any[] | undefined {\n return arg === 'keyval'\n ? Object.keys(obj).map(key => ({key, value: obj[key]}))\n : arg === 'key'\n ? Object.keys(obj)\n : arg === 'value'\n ? Object.keys(obj).map(key => obj[key])\n : undefined;\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { environment } from '../../../environments/environment';\r\nimport { EndpointConst } from './endpoint-const';\r\n\r\nexport class ImageResponse {\r\n imageUrl!: string;\r\n}\r\n\r\n@Injectable()\r\nexport class ImageService {\r\n private REST_API_SERVER = environment.apiUrl;\r\n private UPLOAD_PATH = \"upload\"; \r\n\r\n constructor(private httpClient: HttpClient) {}\r\n \r\n \r\n public uploadImage(image: File): Observable<ImageResponse> {\r\n const formData = new FormData();\r\n \r\n formData.append('image', image);\r\n console.log(image);\r\n\r\n const data = this.httpClient.post<ImageResponse>(\r\n `${this.REST_API_SERVER}/${EndpointConst.IMAGE}/${this.UPLOAD_PATH}`, formData);\r\n return data;\r\n }\r\n }","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { BuildingEvent } from '../building-events/building-event.model';\r\n@Pipe({\r\n name: 'eventfilter',\r\n pure: false\r\n})\r\nexport class EventFilterPipe implements PipeTransform {\r\n transform(items: BuildingEvent[], filter: Object): any {\r\n if (!items || !filter) {\r\n return items;\r\n } \r\n return items.filter(item => item.deleted !== true);\r\n }\r\n}","import { BrowserModule } from '@angular/platform-browser';\nimport { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { AppRoutingModule } from './app-routing.module';\nimport { SharedModule } from './shared/shared.module';\nimport { AppComponent } from './app.component';\nimport { HeaderComponent } from './components/header/header.component';\nimport { ClientSummaryComponent } from './components/client-summary/client-summary.component';\nimport { BuildingSpreadsheetComponent } from './components/building-spreadsheet/building-spreadsheet.component';\nimport { EventSnapshotComponent } from './components/event-snapshot/event-snapshot.component';\nimport { MainDashboardComponent } from './pages/main-dashboard/main-dashboard.component';\nimport { DashboardBtnGroupComponent } from './components/dashboard-btn-group/dashboard-btn-group.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport {MatTabsModule} from '@angular/material/tabs';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Ng2GoogleChartsModule } from 'ng2-google-charts';\nimport { FacilityBenchmarksComponent } from './components/building-benchmarks/facility-benchmarks/facility-benchmarks.component';\nimport { BuildingInfoComponent } from './components/building-info/building-info.component';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { BuildingPageComponent } from './pages/building-page/building-page.component';\nimport { ClientSelectComponent } from './pages/client-select/client-select.component';\nimport { BuildingEventsComponent } from './components/building-events/building-events.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { DateSelectorComponent } from './components/date-selector/date-selector.component';\nimport { ServicesModule } from './services/services.module';\nimport { HttpErrorInterceptor } from './shared/interceptors/http-error.interceptor';\nimport { BuildingAssetListComponent } from './components/building-asset-list/building-asset-list.component';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { BuildingAssetComponent } from './components/building-asset-list/building-asset/building-asset.component';\nimport { BuildingEventModalComponent } from './components/building-event-modal/building-event-modal.component';\nimport { UtilityBenchmarksComponent } from './components/building-benchmarks/utility-benchmarks/utility-benchmarks.component';\nimport { JwtConfig, JwtModule, JwtModuleOptions } from '@auth0/angular-jwt';\nimport { AuthInterceptor } from './shared/interceptors/auth.interceptor';\nimport { PageNotFoundComponent } from './pages/page-not-found/page-not-found.component';\nimport { LoginComponent } from './authentication/login/login.component';\nimport { AlarmDateService, BuildingSpreadsheetDateService, ClientSummaryDateService, EventSnapshotDateService } from './components/date-selector/date-selector.service';\nimport { WithCredentialsInterceptorService } from './shared/services/with-credentials-interceptor.service';\nimport { BuildingEquipmentModalComponent } from './components/building-equipment-modal/building-equipment-modal.component';\nimport { EventFilterPipe } from './components/building-event-modal/building-event-filter';\nimport { AuthenticationService } from './shared/services/authentication.service';\nimport { takeLast } from 'rxjs/operators';\nimport { TagFilterPipe } from './components/building-spreadsheet/building-tag-filter';\nimport { NoteManagerComponent } from './components/note-manager/note-manager.component';\nimport { BuildingContactsComponent } from './components/building-contacts/building-contacts.component';\nimport { BuildingContactModalComponent } from './components/building-contact-modal/building-contact-modal.component';\nimport { LocalizeTextPipe } from './shared/pipes/localize-text.pipe';\nimport { AdminComponent } from './pages/admin/admin.component';\nimport { TranslationItemsFilterPipe } from './pages/admin/translation-items-filter';\nimport { DatePipe } from '@angular/common';\nimport { FooterComponent } from './components/footer/footer.component';\nimport { CampusSpreadsheetComponent } from './components/campus-spreadsheet/campus-spreadsheet.component';\nimport { CampusPageComponent } from './pages/campus-page/campus-page.component';\nimport { CampusSummaryComponent } from './components/campus-summary/campus-summary.component';\nimport { BuildingAlertsComponent } from './components/building-alerts/building-alerts.component';\n\nconst JwtOptions: JwtModuleOptions = {\n config: {\n whitelistedDomains: [],\n blacklistedRoutes: []\n } as JwtConfig\n};\n\nexport const interceptorProviders = [\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: HttpErrorInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: WithCredentialsInterceptorService, multi: true },\n];\n\nexport function configFactory(authenticationService: AuthenticationService) {\n return () => authenticationService.getAuthInfo().toPromise();\n}\n\n@NgModule({\n declarations: [\n AppComponent,\n HeaderComponent,\n FooterComponent,\n ClientSummaryComponent,\n BuildingSpreadsheetComponent,\n CampusSpreadsheetComponent,\n EventSnapshotComponent,\n MainDashboardComponent,\n DashboardBtnGroupComponent,\n BuildingInfoComponent,\n BuildingPageComponent,\n ClientSelectComponent,\n AdminComponent,\n FacilityBenchmarksComponent,\n BuildingEventsComponent,\n UtilityBenchmarksComponent,\n DateSelectorComponent,\n BuildingAssetListComponent,\n BuildingAssetComponent,\n BuildingEventModalComponent,\n BuildingEquipmentModalComponent,\n LoginComponent,\n PageNotFoundComponent,\n EventFilterPipe,\n TagFilterPipe,\n NoteManagerComponent,\n BuildingContactsComponent,\n BuildingContactModalComponent,\n LocalizeTextPipe,\n TranslationItemsFilterPipe,\n CampusPageComponent,\n CampusSummaryComponent,\n BuildingAlertsComponent\n ],\n imports: [\n BrowserModule,\n HttpClientModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n SharedModule,\n MatButtonModule,\n MatDatepickerModule,\n MatMenuModule,\n MatSelectModule,\n MatInputModule,\n MatNativeDateModule,\n MatExpansionModule,\n MatCheckboxModule,\n MatTabsModule,\n FormsModule,\n ReactiveFormsModule,\n MatDialogModule,\n ServicesModule,\n Ng2GoogleChartsModule,\n JwtModule.forRoot(JwtOptions)\n ],\n bootstrap: [AppComponent],\n providers: [...interceptorProviders,\n ClientSummaryDateService,\n BuildingSpreadsheetDateService,\n EventSnapshotDateService,\n AlarmDateService,\n LocalizeTextPipe,\n TranslationItemsFilterPipe,\n DatePipe,\n {\n provide: APP_INITIALIZER,\n useFactory: configFactory,\n deps: [AuthenticationService],\n multi: true\n }\n ]\n})\nexport class AppModule {\n\n // constructor(private authService: AuthenticationService) {\n // this.authService.getAuthInfo()\n // .pipe(takeLast(1))\n // .subscribe(result => {\n // });\n // }\n}\n","export class NumberFormat {\n constructor(public prefix: string = '',\n public postfix: string = '',\n public isShort: boolean = false,\n public minIntegerDigits: number = 1,\n public minFractionDigits: number = 0,\n public maxFractionDigits: number = 0) {\n }\n\n public static get defaultCurrencyFormat(): NumberFormat {\n return new NumberFormat('$', '', false, 1, 0, 2);\n }\n\n public static get defaultPercentsFormat(): NumberFormat {\n return new NumberFormat('', '%', false, 1, 0, 0);\n }\n\n public static get defaultNumberFormat(): NumberFormat {\n return new NumberFormat('', '', false, 1, 0, 2);\n }\n\n public static get integerCurrencyFormat(): NumberFormat {\n return new NumberFormat('$', '', false, 1, 0, 0);\n }\n\n public static get integerNumberFormat(): NumberFormat {\n return new NumberFormat('', '', false, 1, 0, 0);\n }\n\n public static get shortNumberFormat(): NumberFormat {\n return new NumberFormat('', '', true, 1, 0, 1);\n }\n\n public static get shortCurrencyFormat(): NumberFormat {\n return new NumberFormat('$', '', true, 1, 0, 1);\n }\n\n public static get temperatureFormat(): NumberFormat {\n return new NumberFormat('', '° F', false, 1, 0, 0);\n }\n\n public get digitsInfo(): string {\n return `${this.minIntegerDigits}.${this.minFractionDigits}-${this.maxFractionDigits}`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { GoLiveDateInfo } from 'src/app/shared/models/GoLiveDateInfo';\nimport { IGoLiveDateService } from '../interfaces/go-live-date.interface';\n\n@Injectable()\nexport class GoLiveDateStubService implements IGoLiveDateService {\n\n public getBuildingGoLiveDate(buildingId: number): Observable<GoLiveDateInfo> {\n return of({ electricityGoLiveDate: new Date(2020, 12, 30), gasGoLiveDate: new Date(2020, 12, 30)});\n }\n\n public getGoLiveDate(): Observable<Date> {\n return of(new Date(2020, 12, 30));\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DateRange } from '@angular/material/datepicker';\nimport { Observable } from 'rxjs';\nimport { CampusInfo, CampusInfoAdditional } from 'src/app/models/CampusInfo';\nimport { SaveEquipmentResult } from 'src/app/models/EquipmentsEvents';\nimport { PrimaryFunction } from 'src/app/models/FacilityBenchmarkData';\nimport { environment } from '../../../environments/environment';\nimport { BuildingDateRange, CampusDateRange } from '../../models/BuildingDateRange';\nimport { BuildingContact, BuildingInfo, BuildingInfoAdditional } from '../../models/BuildingInfo';\nimport { IBuildingSummaryService } from '../interfaces/building-summary.interface';\nimport { EndpointConst } from './endpoint-const';\n\n@Injectable()\nexport class BuildingSummaryRealService implements IBuildingSummaryService {\n\n private REST_API_SERVER = environment.apiUrl;\n private readonly BUILDING_SUMMARY = 'summary';\n private readonly BUILDING_SUMMARY_ADDITIONAL = 'summary-additional';\n private readonly TAGS = 'tags';\n private readonly PRIMARY_FUNCTION = 'primary-function';\n private readonly PRIMARY_FUNCTIONS = 'primary-functions';\n private readonly BUILDING_CONTACTS = 'building-contacts';\n private readonly BUILDING_CONTACT = 'building-contact';\n private readonly DELETE_BUILDING_CONTACT = 'delete-building-contact';\n\n constructor(private httpClient: HttpClient) { }\n\n public getBuildingSummary(buildingId: number, dateRange: DateRange<Date>): Observable<BuildingInfo> {\n const data = this.httpClient.post<BuildingInfo>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${this.BUILDING_SUMMARY}`,\n {\n buildingId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as BuildingDateRange);\n return data;\n }\n\n public getBuildingSummaryAdditional(buildingId: number, dateRange: DateRange<Date>): Observable<BuildingInfoAdditional> {\n const data = this.httpClient.post<BuildingInfoAdditional>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${this.BUILDING_SUMMARY_ADDITIONAL}`,\n {\n buildingId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as BuildingDateRange);\n return data;\n }\n\n public getCampusSummary(campusId: number, dateRange: DateRange<Date>): Observable<CampusInfo> {\n const data = this.httpClient.post<CampusInfo>(\n `${this.REST_API_SERVER}/${EndpointConst.CAMPUS}/${this.BUILDING_SUMMARY}`,\n {\n campusId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as CampusDateRange);\n return data;\n }\n\n public getCampusSummaryAdditional(campusId: number, dateRange: DateRange<Date>): Observable<CampusInfoAdditional> {\n const data = this.httpClient.post<CampusInfoAdditional>(\n `${this.REST_API_SERVER}/${EndpointConst.CAMPUS}/${this.BUILDING_SUMMARY_ADDITIONAL}`,\n {\n campusId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as CampusDateRange);\n return data;\n }\n\n public getBuildingTags(buildingId: number): Observable<string[]> {\n return this.httpClient.get<string[]>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.TAGS}`\n );\n }\n\n public saveBuildingTags(buildingId: number, tags: string[]): Observable<SaveEquipmentResult> {\n return this.httpClient.post<SaveEquipmentResult>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.TAGS}`, tags\n );\n }\n\n public getPrimaryFunction(buildingId: number): Observable<PrimaryFunction> {\n return this.httpClient.get<PrimaryFunction>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.PRIMARY_FUNCTION}`\n );\n }\n\n public getPrimaryFunctions(): Observable<PrimaryFunction[]> {\n return this.httpClient.get<PrimaryFunction[]>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${this.PRIMARY_FUNCTIONS}`\n );\n }\n\n public savePrimaryFunction(buildingId: number, primaryFunctionId: number): Observable<SaveEquipmentResult> {\n return this.httpClient.post<SaveEquipmentResult>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.PRIMARY_FUNCTION}`, primaryFunctionId\n );\n }\n\n public getBuildingContacts(buildingId: number): Observable<BuildingContact[]> {\n return this.httpClient.get<BuildingContact[]>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.BUILDING_CONTACTS}`\n );\n }\n\n public saveBuildingContact(buildingId: number, buildingContact: BuildingContact): Observable<SaveEquipmentResult> {\n return this.httpClient.post<SaveEquipmentResult>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.BUILDING_CONTACT}`, buildingContact\n );\n }\n\n public deleteBuildingContact(buildingId: number, buildingContact: BuildingContact): Observable<SaveEquipmentResult> {\n return this.httpClient.post<SaveEquipmentResult>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.DELETE_BUILDING_CONTACT}`, buildingContact\n );\n }\n}\n","import { Component, Inject, Input } from '@angular/core';\n\n@Component({\n selector: 'br-event-modal',\n templateUrl: './event-modal.component.html',\n styleUrls: ['./event-modal.component.scss']\n})\nexport class EventModalComponent {\n\n @Input()\n public mainHeader?: string;\n\n @Input()\n public subHeader?: string;\n\n constructor() {\n }\n}\n","<div class=\"title\">\n <span class=\"text-h3\">{{ mainHeader }}</span>\n <button class=\"close-button text-h3\" mat-dialog-close>x</button>\n <span class=\"text-h4 description-block\">{{ subHeader }}</span>\n</div>\n<ng-content></ng-content>\n","import { NumberFormat } from '../../models/NumberFormat';\n\nexport const DEFAULT_COLORS = [\n '#193769',\n '#3EB049',\n '#FFA26B',\n '#FFCF5C',\n '#A9B4C7'\n];\n\nexport enum MaxValueStrategy {\n default = 'default',\n percentsMax = 'percentsMax',\n maxDataset = 'maxDataset',\n maxAll = 'maxAll'\n}\n\nexport class HorizontalBarChartOptions {\n chartTitle?: string = undefined;\n description?: string = undefined;\n showLegendInDataset ? = false;\n datasets!: DatasetData[];\n maxHeight?: number;\n barFunction?: BarFunction;\n}\n\nexport class DatasetData {\n key!: string;\n label!: string;\n format?: NumberFormat;\n maxValueStrategy?: MaxValueStrategy = MaxValueStrategy.default;\n maxValue?: number;\n barColor ?= '';\n}\n\nexport interface BarChartData {\n titles: string[];\n values: Record<string, number[]>;\n bluredBarsCount?: number;\n}\n\nexport interface BarFunction {\n clickableText: string;\n clickFunction: (params: any) => void;\n params?: any;\n}\n\nexport interface BlurOptions {\n barsBlured: number;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SelectedClientService } from 'src/app/services/selected-client.service';\r\n@Pipe({\r\n name: 'localizeText',\r\n pure: false\r\n})\r\nexport class LocalizeTextPipe implements PipeTransform {\r\n\r\n constructor(\r\n private readonly selectedClientService: SelectedClientService\r\n ) { }\r\n\r\n transform(originalText: string): string {\r\n\r\n if (this.selectedClientService?.localization?.currentLanguage == null) {\r\n return originalText;\r\n }\r\n\r\n if (!originalText) {\r\n return originalText;\r\n }\r\n\r\n var translationItems = this.selectedClientService.localization.currentLanguage.translationItems.filter(p => p.sourceText == originalText);\r\n\r\n return translationItems.length > 0 ? translationItems[0].text : originalText;\r\n }\r\n}","import { ChangeDetectionStrategy, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { FacilityBenchmarkData } from '../../models/FacilityBenchmarkData';\nimport { BenchmarksService } from '../../services/real-services/benchmarks.service';\nimport { BaseComponent } from '../../shared/components/base/base.component';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Utils } from '../../shared/utils';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport { SelectedClientService } from '../../services/selected-client.service';\nimport { DASHBOARD_ROUTE, NOT_FOUND_ROUTE } from '../../routing-const';\nimport { Client } from 'src/app/models/AuthModel';\n\n@Component({\n templateUrl: './client-select.component.html',\n styleUrls: ['./client-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ClientSelectComponent extends BaseComponent implements OnInit {\n\n @ViewChild('anchor')\n public anchor: ElementRef | null = null;\n\n public advanced$ = new BehaviorSubject<boolean>(false);\n public facilityBenchmarksData$ = new Observable<FacilityBenchmarkData[]>();\n\n public clients: Client[] = [];\n\n constructor(\n private readonly selectedClientService: SelectedClientService,\n private readonly router: Router\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.clients = this.selectedClientService.availableClients.sort((a, b) => a.clientName > b.clientName ? 1 : -1); \n }\n\n public onChanged(advanced: boolean): void {\n this.advanced$.next(advanced);\n }\n\n public clientSelected(client: Client): void {\n let clientId = client.id;\n this.selectedClientService.clientId = clientId;\n this.router.navigate([`${DASHBOARD_ROUTE}/${clientId}`]);\n }\n}\n","<h4>Select Client</h4>\n<div class=\"table-container\">\n <table>\n <tbody>\n <tr *ngFor=\"let client of clients\">\n <td class=\"link button-link\" (click)=\"clientSelected(client)\"> \n {{ client.clientName }}\n </td>\n </tr>\n </tbody>\n </table>\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnInit } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { NumberFormat } from '../../shared/models/NumberFormat';\nimport { BaseComponent } from '../../shared/components/base/base.component';\nimport { ArrowType, BuildingsModel } from './building-spreadsheet.model';\nimport { BuildingData } from '../../models/BuildingData';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BuildingSpreadsheetDateService, DateSelectorService } from '../date-selector/date-selector.service';\nimport { BUILDING_SPREADSHEET_SERVICE, IBuildingSpreadsheetService } from 'src/app/services/interfaces/building-spreadsheet.interface';\nimport { switchMap } from 'rxjs/operators';\nimport { SelectedClientService } from '../../services/selected-client.service';\nimport { BUILDING_ROUTE, DASHBOARD_ROUTE } from '../../routing-const';\nimport { GoLiveDateStorage } from '../../services/go-live-date-storage.service';\nimport { BUILDING_SUMMARY_SERVICE, IBuildingSummaryService } from 'src/app/services/interfaces/building-summary.interface';\nimport { DateRange } from '@angular/material/datepicker';\nimport { BuildingInfoAdditional } from 'src/app/models/BuildingInfo';\nimport { UsageByDate } from 'src/app/models/CampusData';\n\n@Component({\n selector: 'br-building-spreadsheet',\n templateUrl: './building-spreadsheet.component.html',\n styleUrls: ['./building-spreadsheet.component.scss'],\n providers: [BuildingsModel,\n {\n provide: DateSelectorService,\n useExisting: BuildingSpreadsheetDateService\n }],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BuildingSpreadsheetComponent extends BaseComponent implements OnInit {\n\n public format = NumberFormat;\n\n public tagName: string = \"\";\n\n public buildingsInfo$ = new Observable<BuildingData[]>();\n public buildingsData = [] as BuildingData[];\n public rangeSavingsTitle = this.model.rangeSavingsTitleShort;\n public arrowType = this.model.arrowType;\n public blocks = this.model.defaultInfoBlockData;\n public liveDate$ = this.clientGoLiveDateService.clientGoLiveDate$;\n public savingsTitle = '';\n\n public electricityGraphs: any = [];\n public gasGraphs: any = [];\n public waterGraphs: any = [];\n public isElectricityPresented = false;\n public isGasPresented = false;\n public isWaterPresented = false;\n\n public fixedUsageType: string = null;\n\n currentUsageViewName = \"Water\"; \n\n constructor(private readonly model: BuildingsModel,\n private readonly router: Router,\n private readonly activateRoute: ActivatedRoute,\n private readonly selectedClientService: SelectedClientService,\n private readonly dateFilterService: DateSelectorService,\n private readonly clientGoLiveDateService: GoLiveDateStorage,\n @Inject(BUILDING_SPREADSHEET_SERVICE) private readonly buildingSpreadsheetService: IBuildingSpreadsheetService,\n @Inject(BUILDING_SUMMARY_SERVICE) private readonly buildingSummaryService: IBuildingSummaryService,\n private changeDetectorRef: ChangeDetectorRef,) {\n super();\n\n setInterval(() => {\n this.changeUsageView();\n this.changeDetectorRef.detectChanges();\n }, 5000);\n }\n\n public clickUsageType(usageType: string) {\n if (this.fixedUsageType === usageType) {\n this.fixedUsageType = null;\n return;\n }\n\n this.fixedUsageType = usageType;\n\n this.currentUsageViewName = usageType;\n }\n\n public changeUsageView() {\n if (this.fixedUsageType != null) {\n return;\n }\n\n switch (this.currentUsageViewName) {\n case \"Electricity\":\n if (this.isGasPresented) {\n this.currentUsageViewName = \"Gas\";\n } else if (this.isWaterPresented) {\n this.currentUsageViewName = \"Water\";\n } \n break;\n case \"Gas\":\n if (this.isWaterPresented) {\n this.currentUsageViewName = \"Water\";\n } else if (this.isElectricityPresented) {\n this.currentUsageViewName = \"Electricity\";\n }\n break;\n case \"Water\":\n if (this.isElectricityPresented) {\n this.currentUsageViewName = \"Electricity\";\n } else if (this.isGasPresented) {\n this.currentUsageViewName = \"Gas\";\n }\n break;\n }\n }\n\n private removeTrailingNulls (usagesByDates: UsageByDate[], getValueFunc: (t: UsageByDate) => number): UsageByDate[] {\n const resultArray = [] as UsageByDate[];\n\n let isZeroItems = true;\n [...usagesByDates].reverse().forEach(p => {\n const value = getValueFunc(p);\n\n if (value && value != 0) {\n isZeroItems = false;\n }\n\n if (!isZeroItems) {\n resultArray[resultArray.length] = p;\n }\n });\n\n return resultArray.reverse();\n }\n\n public createGraph(campusData: BuildingData, resourceName: string, getValueFunc: (t: UsageByDate) => number, lineColor: string): any {\n var graph = {\n hasData: false,\n chartType: \"LineChart\",\n dataTable: [] as any,\n options: {\n title: resourceName,\n chartArea: {\n width: \"250\",\n height: \"100\"\n },\n legend: 'none',\n series: {\n 0: { type: 'line', color: lineColor },\n },\n }\n };\n\n graph.dataTable[0] = [\"Date\", resourceName];\n \n const cleanUsagesByDates = this.removeTrailingNulls(campusData.usagesByDates, getValueFunc);\n\n cleanUsagesByDates.forEach(p => {\n const value = getValueFunc(p);\n \n graph.dataTable[graph.dataTable.length] = [(new Date(p.date)).toLocaleDateString(), value];\n\n if (value > 0) {\n graph.hasData = true;\n }\n });\n\n return graph;\n }\n\n public initGraphs(campusDataList: BuildingData[]): void {\n this.electricityGraphs = campusDataList.map(p => this.createGraph(p, \"Electricity\", t => t.electricity, p.rangeElectricitySavings >= 0 ? 'green' : 'red'));\n this.gasGraphs = campusDataList.map(p => this.createGraph(p, \"Gas\", t => t.gas, p.rangeNaturalGasSavings >= 0 ? 'green' : 'red'));\n this.waterGraphs = campusDataList.map(p => this.createGraph(p, \"Water\", t => t.water, 'blue'));\n \n this.isElectricityPresented = campusDataList.filter(p => p.usagesByDates.filter(t => t.electricity > 0).length > 0).length > 0;\n this.isGasPresented = campusDataList.filter(p => p.usagesByDates.filter(t => t.gas > 0).length > 0).length > 0;\n this.isWaterPresented = campusDataList.filter(p => p.usagesByDates.filter(t => t.water > 0).length > 0).length > 0;\n\n this.fixedUsageType = null;\n\n this.changeUsageView();\n }\n\n public ngOnInit(): void {\n this.buildingsInfo$ = combineLatest([\n this.selectedClientService.selectedClientId$,\n this.selectedClientService.selectedCampusId$,\n this.dateFilterService.dateRangeChanged$,\n ]).pipe(\n switchMap(([clientId, campusId, dateRange]) => this.buildingSpreadsheetService.getBuildingSpredsheetData(clientId, campusId, dateRange))\n );\n\n this.addSubscription(\n this.buildingsInfo$.subscribe((buildingData)=>{\n this.buildingsData = buildingData;\n this.initGraphs(this.buildingsData);\n this.changeDetectorRef.detectChanges();\n buildingData.forEach(building => {\n this.addSubscription(\n this.buildingSummaryService.getBuildingSummaryAdditional(building.id, new DateRange(new Date(), new Date())).subscribe((data: BuildingInfoAdditional) => {\n const buildingData = this.buildingsData.filter(p => p.id === building.id)[0];\n buildingData.energyEfficiencyScore=data.energyEfficiencyScore;\n buildingData.energyStarScore=data.energyStarScore;\n this.changeDetectorRef.detectChanges();\n })\n );\n });\n })\n );\n\n this.addSubscription(\n this.dateFilterService.selectedIndexChanged$.subscribe(index => {\n this.savingsTitle = this.rangeSavingsTitle[index];\n })\n );\n }\n\n public cardClick(buildingId: number): void {\n this.router.navigate([`${DASHBOARD_ROUTE}/${this.selectedClientService.clientId}/${BUILDING_ROUTE}/${buildingId}`]);\n }\n\n public get arrow(): typeof ArrowType {\n return ArrowType;\n }\n\n public getBuildingTag(buildingData: BuildingData) {\n return buildingData.tags.filter(p=>p.toUpperCase().includes(this.tagName.toUpperCase()))[0];\n }\n}\n","<div class=\"component-title\">\n <div class=\"text-h3 component-title__text\">{{ 'Building Spreadsheet' | localizeText }}</div>\n <br-date-selector [goLiveDate]=\"liveDate$ | async\"></br-date-selector> \n</div>\n<div>\n <mat-form-field class=\"tag-item-name-container\">\n <mat-label>{{ 'Search by Tag' | localizeText }}</mat-label>\n <input matInput [(ngModel)]=\"tagName\" [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n</div>\n<div>\n <span *ngIf=\"isElectricityPresented\" class=\"link text-st-semibold\" [ngStyle]=\"{'color': fixedUsageType === 'Electricity' ? '#193769' : '#53698F'}\" (click)=\"clickUsageType('Electricity')\">Electricity</span>\n <span *ngIf=\"isGasPresented\" class=\"link text-st-semibold\" [ngStyle]=\"{'color': fixedUsageType === 'Gas' ? '#193769' : '#53698F'}\" (click)=\"clickUsageType('Gas')\">Gas</span>\n <span *ngIf=\"isWaterPresented\" class=\"link text-st-semibold\" [ngStyle]=\"{'color': fixedUsageType === 'Water' ? '#193769' : '#53698F'}\" (click)=\"clickUsageType('Water')\">Water</span>\n</div>\n<div class=\"cards-container\">\n <div class=\"main-block col-adapt card\" *ngFor=\"let data of buildingsData | tagfilter:tagName; index as i\" (click)=\"cardClick(data.id)\"\n [class.card-highlight-red]=\"data.rangeElectricitySavings + data.rangeNaturalGasSavings < 0\"\n [class.card-highlight-green]=\"data.rangeElectricitySavings + data.rangeNaturalGasSavings > 0\"> \n <div style=\"height: 64px;\"> \n <div class=\"header\">\n <div class=\"building-name text-st-semibold\">\n {{ data.buildingName }} \n </div>\n <div class=\"info-block text-sm-semibold temperature-block\">\n <br-svg-icon name=\"thermometer-half\" [width]=\"6\" [height]=\"12\" class=\"icon\"></br-svg-icon>\n {{ data.temperature | valueFormat: format.temperatureFormat }}\n </div>\n </div>\n <div>\n <span class=\"description text-sm\">{{ data.location }}</span>\n </div>\n </div>\n <div *ngIf=\"tagName.length>0\" class=\"tag-block\">\n <span><strong>{{ 'Tag' | localizeText }}: </strong> {{ getBuildingTag(data) }} </span>\n </div>\n <div style=\"height: 200px;\">\n <div *ngIf=\"currentUsageViewName === 'Electricity'\">\n <div *ngIf=\"electricityGraphs[i] && electricityGraphs[i].dataTable && electricityGraphs[i].dataTable.length > 1 && electricityGraphs[i].hasData\" class=\"graph-block\"\n [ngStyle]=\"{'background-color': electricityGraphs[i].options.series[0].color}\">\n <div class=\"graph-block-in\">\n <google-chart [data]=\"electricityGraphs[i]\"></google-chart>\n </div> \n </div>\n <div class=\"no-data-block\" *ngIf=\"!electricityGraphs[i] || !electricityGraphs[i].dataTable || electricityGraphs[i].dataTable.length <= 1 || !electricityGraphs[i].hasData\">\n <span class=\"no-data-span\">No Data/Model</span>\n </div> \n </div>\n <div *ngIf=\"currentUsageViewName === 'Gas'\">\n <div *ngIf=\"gasGraphs[i] && gasGraphs[i].dataTable && gasGraphs[i].dataTable.length > 1 && gasGraphs[i].hasData\" class=\"graph-block\"\n [ngStyle]=\"{'background-color': gasGraphs[i].options.series[0].color}\">\n <div class=\"graph-block-in\">\n <google-chart [data]=\"gasGraphs[i]\"></google-chart>\n </div> \n </div>\n <div class=\"no-data-block\" *ngIf=\"!gasGraphs[i] || !gasGraphs[i].dataTable || gasGraphs[i].dataTable.length <= 1 || !gasGraphs[i].hasData\">\n <span class=\"no-data-span\">No Data/Model</span>\n </div>\n </div>\n <div *ngIf=\"currentUsageViewName === 'Water'\">\n <div *ngIf=\"waterGraphs[i] && waterGraphs[i].dataTable && waterGraphs[i].dataTable.length > 1 && waterGraphs[i].hasData\" class=\"graph-block\"\n [ngStyle]=\"{'background-color': waterGraphs[i].options.series[0].color}\">\n <div class=\"graph-block-in\">\n <google-chart [data]=\"waterGraphs[i]\"></google-chart>\n </div> \n </div>\n <div class=\"no-data-block\" *ngIf=\"!waterGraphs[i] || !waterGraphs[i].dataTable || waterGraphs[i].dataTable.length <= 1 || !waterGraphs[i].hasData\">\n <span class=\"no-data-span\">No Data/Model</span>\n </div>\n </div> \n </div>\n <div class=\"auto-width\">\n <div>\n <div class=\"col-2-circle mgn-r\">\n <div class=\"info-block text-st cost-block\">\n <br-svg-icon name=\"plug\" [width]=\"13.5\" [height]=\"18\" [color]=\"'#53698F'\" class=\"icon\"></br-svg-icon>\n <span>{{ data.rangeElectricitySavings | valueFormat: format.integerCurrencyFormat }}</span>\n <!-- <br-svg-icon [name]=\"arrowType[data.electricityDynamics].icon\"\n [width]=\"arrowType[data.electricityDynamics].width\" [height]=\"arrowType[data.electricityDynamics].height\"\n class=\"icon state-icon\"></br-svg-icon> -->\n </div>\n <!-- <p class=\"text-sm-semibold score\">{{ 'Energy Efficiency Score' | localizeText }}</p> -->\n </div>\n <div class=\"col-2-circle\">\n <div class=\"info-block text-st cost-block\">\n <br-svg-icon name=\"fire-alt\" [width]=\"15.75\" [height]=\"18\" [color]=\"'#3EB049'\" class=\"icon\"></br-svg-icon>\n <span>{{ data.rangeNaturalGasSavings | valueFormat: format.integerCurrencyFormat }}</span>\n <!-- <br-svg-icon [name]=\"arrowType[data.gasDynamics].icon\" [width]=\"arrowType[data.gasDynamics].width\"\n [height]=\"arrowType[data.gasDynamics].height\" class=\"icon state-icon\"></br-svg-icon> -->\n </div>\n <!-- <p class=\"text-sm-semibold score\">{{ 'Energy Star Score' | localizeText }}</p> -->\n </div>\n </div>\n <!-- <div class=\"col-2-circle mgn-r\">\n <div class=\"pie-chart circle circle-box-shadow text-h3 eff-score\">\n {{ data.energyEfficiencyScore | valueFormat: format.integerNumberFormat }}\n </div>\n </div>\n <div class=\"col-2-circle\">\n <div class=\"pie-chart circle circle-box-shadow text-h3 star-score\">\n <br-svg-icon name=\"star\" [width]=\"27.84\" [height]=\"26.67\" class=\"star\"></br-svg-icon>\n {{ data.energyStarScore | valueFormat: format.integerNumberFormat }}\n </div>\n </div> -->\n </div>\n <div class=\"info-block text-st cost-block mtd-savings\">\n <br-svg-icon name=\"usd-circle\" [width]=\"16\" [height]=\"16\" [color]=\"'#3EB049'\" class=\"icon\"></br-svg-icon>\n <span>{{ data.savings | valueFormat: format.integerCurrencyFormat }} {{ savingsTitle }}</span>\n </div>\n </div>\n</div>\n","import { BuildingEvent } from '../components/building-events/building-event.model';\n\nexport interface EquipmentsEvents {\n chillers: ChillerEvents[];\n boilers: BoilerEvents[];\n coolingTowers: CoolingTowersEvents[];\n airHandlers: AirHandlersEvents[];\n hwConverters: HotWaterConvertersEvents[];\n controls: BasControlsEvents[];\n mriItems: MriEvents[];\n wishListItems: WishListItem[];\n buildingEnergyUses: BuildingEnergyUses;\n}\n\nexport interface EquipmentEvents<T extends Equipment> {\n equipment: T;\n events: BuildingEvent[];\n}\n\nexport interface ImageItem {\n imageUrl: string;\n name: string;\n}\n\nexport interface PdfItem {\n url: string;\n name: string;\n}\n\nexport interface HyperlinkItem {\n url: string;\n name: string;\n}\n\nexport class NoteItem {\n creationTime: Date;\n loginId: string;\n text: string;\n isInEditMode: boolean = false;\n}\n\nexport interface Equipment {\n id: number;\n buildingId: number;\n images: ImageItem[];\n hyperlinks: HyperlinkItem[];\n pdfs: PdfItem[];\n note: NoteItem[];\n equipmentType: EquipmentType;\n}\n\nexport enum EquipmentType {\n Chiller = \"Chiller\",\n Boiler = \"Boiler\",\n CoolingTower = \"CoolingTower\",\n AirHandler = \"AirHandler\",\n HWConverter = \"HWConverter\",\n BASControl = \"BASControl\",\n MRI = \"MRI\",\n BuildingEnergyUses = \"BuildingEnergyUses\",\n WishList = \"WishList\"\n}\n\nexport class SaveEquipmentResult {\n isSuccess!: boolean;\n}\n\nexport class EquipmentInfo {\n public equipmentEvents: EquipmentEvents<Equipment> | null = null;\n public equipmentType!: EquipmentType;\n public chillers: ChillerEvents[] = [];\n public boilers: BoilerEvents[] = [];\n}\n\nexport interface ChillerEvents extends EquipmentEvents<ChillerInfo> { }\n\nexport interface ChillerInfo extends Equipment {\n manufacturerName: string;\n controllability: string;\n chillerType: string;\n tonnage: number;\n approxAge: number;\n name: string;\n model: string;\n serial: string;\n dateInstalled: Date;\n}\n\nexport interface BoilerEvents extends EquipmentEvents<BoilerInfo> { }\n\nexport interface BoilerInfo extends Equipment {\n manufacturerName: string;\n controllability: string;\n boilerType: string;\n size: number;\n approxAge: number;\n pmProcedures: string;\n name: string;\n model: string;\n serial: string;\n dateInstalled: Date;\n}\n\nexport interface CoolingTowersEvents extends EquipmentEvents<CoolingTowerInfo> { }\n\nexport interface CoolingTowerInfo extends Equipment {\n manufacturerName: string;\n controllability: string;\n towerType: string;\n approxAge: number;\n basinType: string;\n fanType: string;\n tonnage: number;\n name: string;\n chillers: string;\n model: string;\n serial: string;\n dateInstalled: Date;\n}\n\nexport interface AirHandlersEvents extends EquipmentEvents<AirHandlerInfo> { }\n\nexport interface AirHandlerInfo extends Equipment {\n controllability: string;\n floor: number;\n floorName: string;\n hoursOfOperation: string;\n numberOfAHU: number;\n mainType: string;\n secondaryType: string;\n numberOfExhaustAirExchangerOrRecapture: number;\n any_VAV_PIU_CAV: boolean;\n currentSetBacks?: string;\n preExistingSetBacksInPlace: string;\n preExistingSetBacksSpecific: string;\n name: string;\n areaServed: string;\n chillerServed: string;\n}\n\nexport interface HotWaterConvertersEvents extends EquipmentEvents<HotWaterConverterInfo> { }\n\nexport interface HotWaterConverterInfo extends Equipment {\n loopName: string;\n controllability: string;\n name: string;\n manufacturer: string;\n dateInstalled: Date;\n}\n\nexport interface BasControlsEvents extends EquipmentEvents<BasControlsInfo> { }\nexport interface BasControlsInfo extends Equipment {\n manufacturerName: string;\n remoteAccess: boolean;\n // userName: string;\n // password: string;\n informationModel: string;\n percentBuildingControlled: number;\n numberOfFloorsControlled: number;\n approxAge: number;\n dateInstalled?: Date;\n percentPneumatic?: number;\n percentDdc?: number;\n}\n\nexport interface WishListEvents extends EquipmentEvents<WishListItem> { }\n\nexport interface WishListItem extends Equipment {\n description: string;\n}\n\nexport interface MriEvents extends EquipmentEvents<MriInfo> { }\n\nexport interface MriInfo extends Equipment {\n description: string;\n}\n\nexport interface EnergyUsesItem extends Equipment {\n name: string;\n description: string;\n electricEnergySource: string;\n naturalGasSource: string;\n chillerId: number;\n boilerId: number;\n}\n\nexport interface BuildingEnergyUses {\n description: string;\n items: EnergyUsesItem[];\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { takeLast } from 'rxjs/operators';\nimport { UserForAuthentication } from '../../models/AuthModel';\nimport { AuthenticationService } from '../../shared/services/authentication.service';\nimport { SelectedClientService } from '../../services/selected-client.service';\n\nimport { DASHBOARD_ROUTE, CLIENT_SELECT_ROUTE } from '../../routing-const';\n\n@Component({\n selector: 'br-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent implements OnInit {\n public loginForm = new FormGroup({\n username: new FormControl('', [Validators.required]),\n password: new FormControl('', [Validators.required])\n });\n\n public errorMessage: string | undefined = undefined;\n private returnUrl = '';\n\n constructor(private authService: AuthenticationService,\n private readonly selectedClientService: SelectedClientService,\n private router: Router,\n private route: ActivatedRoute\n ) { }\n\n ngOnInit(): void {\n if (this.authService.isUserAuthenticated()) {\n if (this.selectedClientService.availableClients && this.selectedClientService.availableClients.length > 1) {\n this.router.navigate([`${CLIENT_SELECT_ROUTE}`]); \n }\n else if (this.selectedClientService.clientId) {\n this.router.navigate([`${DASHBOARD_ROUTE}/${this.selectedClientService.clientId}`]); \n }\n }\n this.returnUrl = this.route.snapshot.queryParams.returnUrl || '/';\n }\n\n public validateControl(controlName: string): boolean {\n return this.loginForm.controls[controlName].invalid && this.loginForm.controls[controlName].touched;\n }\n\n public hasError(controlName: string, errorName: string): boolean {\n return this.loginForm.controls[controlName].hasError(errorName);\n }\n\n public loginUser(loginFormValue: any): void {\n this.errorMessage = undefined;\n const loginAndPass = {...loginFormValue };\n const userForAuth: UserForAuthentication = {\n username: loginAndPass.username,\n password: loginAndPass.password\n };\n this.authService.loginUser(userForAuth)\n .pipe(takeLast(1))\n .subscribe(result => {\n this.selectedClientService.isEditor = result.isEditor;\n this.selectedClientService.isEngCoAdmin = result.isEngCoAdmin;\n this.selectedClientService.loginId = result.loginId;\n if (result.clients.length > 1) {\n this.selectedClientService.availableClients = result.clients;\n this.router.navigate([`${CLIENT_SELECT_ROUTE}`]); \n }\n else {\n let clientId = result.clients[0].id;\n this.selectedClientService.clientId = clientId;\n this.router.navigate([`${DASHBOARD_ROUTE}/${clientId}`]); \n } \n },\n error => this.errorMessage = error);\n }\n}\n","<div class=\"login-container\">\n <div class=\"card-title text-h3\">{{ 'Login' | localizeText }}</div>\n <form class=\"login-form\" [formGroup]=\"loginForm\" autocomplete=\"off\" novalidate (ngSubmit)=\"loginUser(loginForm.value)\">\n <div>\n <input type=\"text\" id=\"username\" formControlName=\"username\" placeholder=\"{{ 'Enter Username' | localizeText }}\" class=\"form-control\" />\n <span class=\"field-alert\" *ngIf=\"validateControl('username') && hasError('username', 'required')\">{{ 'Username is required' | localizeText }}</span>\n </div>\n <div>\n <input type=\"password\" id=\"password\" formControlName=\"password\" placeholder=\"{{ 'Enter Password' | localizeText }}\" class=\"form-control\" autocomplete=\"on\"/>\n <span class=\"field-alert\" *ngIf=\"validateControl('password') && hasError('password', 'required')\">{{ 'Password is required' | localizeText }}</span>\n </div>\n <button type=\"submit\" id=\"login\" class=\"submit-button\" [disabled]=\"!loginForm.valid\">{{ 'Login' | localizeText }}</button>\n </form>\n <div *ngIf=\"!!errorMessage\" class=\"alert\" role=\"alert\">\n {{ errorMessage | localizeText }}\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { NumberFormat } from '../../shared/models/NumberFormat';\n\nexport class SavingsData {\n title = '';\n description = '';\n value?: number;\n additionalValue?: number;\n format?: NumberFormat;\n}\n\nexport class DetailsData {\n description = '';\n icon = '';\n value?: number;\n hideIfUndefined?: boolean;\n hide?: boolean;\n format?: NumberFormat;\n isGreen?: boolean = false;\n unitOfMeasure? = '';\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClientSummaryModel {\n\n constructor(private localizeText: LocalizeTextPipe) {\n }\n\n public rangeSavingsTitle = [\n this.localizeText.transform('Yesterday Savings'),\n this.localizeText.transform('Last 7 Day Savings'),\n this.localizeText.transform('Last 30 Day Savings'),\n this.localizeText.transform('Last 90 Day Savings'),\n this.localizeText.transform('Last 365 Day Savings'),\n this.localizeText.transform('\"Year to Date\" Savings'),\n this.localizeText.transform('Custom Range Savings')\n ];\n\n public rangeSavingsDescriptions = [\n this.localizeText.transform('Yesterday Savings'),\n this.localizeText.transform('Savings of This Week'),\n this.localizeText.transform('Savings of This Month'),\n this.localizeText.transform('Savings of This Quarter'),\n this.localizeText.transform('Savings of This Year'),\n this.localizeText.transform('\"Year to Date\" Savings'),\n this.localizeText.transform('Custom Range Savings')\n ];\n public defaultSavingsData: Record<string, SavingsData> = {\n totalSavings: {\n title: this.localizeText.transform('Total Savings'),\n description: this.localizeText.transform('Savings of All Time'),\n format: NumberFormat.integerCurrencyFormat\n },\n rangeToDateSavings: {\n title: ' ' + this.localizeText.transform('Savings'),\n description: this.localizeText.transform('Savings of This Year'),\n format: NumberFormat.integerCurrencyFormat\n }\n };\n\n public defaultOverviewData: Record<string, DetailsData> = {\n buildingCount: {\n icon: 'building',\n description: this.localizeText.transform('Building Count'),\n isGreen: false,\n },\n totalBeds: {\n icon: 'bed',\n description: this.localizeText.transform('Total Beds'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n totalSquareFootage: {\n icon: 'ruler',\n description: this.localizeText.transform('Total sq. ft.'),\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n };\n\n public defaultDetailsData: Record<string, DetailsData> = { \n totalEnergySpend: {\n icon: 'lightbulb',\n description: this.localizeText.transform('Total Energy Spend'),\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n },\n // eui: {\n // icon: 'fire',\n // description: this.localizeText.transform('EUI'),\n // format: NumberFormat.shortNumberFormat\n // },\n electricityCost: {\n icon: 'plug',\n description: this.localizeText.transform('Electricity Spend'),\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n },\n naturalGasCost: {\n icon: 'fire-alt',\n description: this.localizeText.transform('Natural Gas Spend'),\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n },\n co2Emission: {\n icon: 'fire',\n description: this.localizeText.transform('lbs CO2 Emissions'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n waterSpend: {\n icon: 'water',\n description: this.localizeText.transform('Water Spend'),\n hideIfUndefined: true,\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n }, \n emptyBlock: {\n icon: '',\n description: '',\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n }, \n electricitySavings: {\n icon: 'plug',\n description: this.localizeText.transform('Electricity Savings'),\n format: NumberFormat.shortCurrencyFormat,\n isGreen: true,\n }, \n naturalGasSavings: {\n icon: 'fire-alt',\n description: this.localizeText.transform('Natural Gas Savings'),\n format: NumberFormat.shortCurrencyFormat,\n isGreen: true,\n }, \n co2Reduced: {\n icon: 'fire',\n description: this.localizeText.transform('lbs CO2 Reduced'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: true,\n },\n waterUsage: {\n icon: 'water',\n description: this.localizeText.transform('Water Usage CCF'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n },\n };\n\n public defaultConsumptionDetailsData: Record<string, DetailsData> = { \n emptyBlockA: {\n icon: '',\n description: '',\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n },\n electricConsumption: {\n icon: 'plug',\n description: this.localizeText.transform('Electric Consumption'),\n format: NumberFormat.shortNumberFormat,\n unitOfMeasure: ' (kWh)',\n isGreen: false,\n }, \n naturalGasConsumption: {\n icon: 'fire-alt',\n description: this.localizeText.transform('Natural Gas Consumption'),\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n co2Emission: {\n icon: 'fire',\n description: this.localizeText.transform('lbs CO2 Emissions'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n emptyBlockH: {\n icon: '',\n description: '',\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n }, \n waterSpend: {\n icon: '',\n description: '',\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n }, \n electricSavingVolume: {\n icon: 'plug',\n description: this.localizeText.transform('Electric Savings'),\n format: NumberFormat.shortNumberFormat,\n unitOfMeasure: ' (kWh)',\n isGreen: true,\n },\n naturalGasSavings: {\n icon: 'fire-alt',\n description: this.localizeText.transform('Natural Gas Savings'),\n format: NumberFormat.shortNumberFormat,\n isGreen: true,\n }, \n co2Reduced: {\n icon: 'fire',\n description: this.localizeText.transform('lbs CO2 Reduced'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: true,\n },\n waterUsage: {\n icon: 'water',\n description: this.localizeText.transform('Water Usage CCF'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n },\n };\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { SaveEquipmentResult } from 'src/app/models/EquipmentsEvents';\nimport { BUILDING_SUMMARY_SERVICE, IBuildingSummaryService } from 'src/app/services/interfaces/building-summary.interface';\nimport { SelectedClientService } from 'src/app/services/selected-client.service';\nimport { BaseComponent } from 'src/app/shared/components/base/base.component';\nimport { FacilityBenchmarkData, PrimaryFunction } from '../../../models/FacilityBenchmarkData';\nimport { BarChartData } from '../../../shared/components/bar-chart/bar-chart.model';\nimport { FacilityBenchmarkModel } from './facility-benchmarks.model';\n\n@Component({\n selector: 'br-facility-benchmarks',\n templateUrl: './facility-benchmarks.component.html',\n styleUrls: ['./facility-benchmarks.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FacilityBenchmarksComponent extends BaseComponent implements OnChanges, OnInit {\n\n @Input()\n public data: FacilityBenchmarkData[] = [];\n\n @Input()\n public buildingId?: number = null;\n\n @Input()\n public isEditIndustryEnabled: boolean = false;\n\n constructor(\n public readonly model: FacilityBenchmarkModel,\n @Inject(BUILDING_SUMMARY_SERVICE) private readonly buildingSummaryService: IBuildingSummaryService,\n private selectedClientService: SelectedClientService,\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(DOCUMENT) private _document: Document\n ) {\n super();\n }\n\n public euiChartData: BarChartData| null = null;\n public costPerBedChartData: BarChartData | null = null;\n public costPerSqftChartData: BarChartData | null = null;\n\n public isEditMode: boolean = false;\n public primaryFunctions: PrimaryFunction[] = [];\n public industries: string[] = [];\n public selectedIndustry: string = null;\n public primaryFunction: PrimaryFunction = { buildingIndustry: \"\", primaryFunction: \"\", id: 0 };\n\n ngOnInit(): void { \n\n this.selectedClientService.currentIsEditMode$.subscribe(isEditMode => {\n this.isEditMode = isEditMode;\n\n if (this.isEditMode && this.primaryFunctions.length === 0) {\n this.addSubscription(\n this.buildingSummaryService.getPrimaryFunctions()\n .subscribe((data: PrimaryFunction[]) => {\n this.primaryFunctions = data; \n this.industries = this.primaryFunctions.map(p => p.buildingIndustry).filter((thing, i, arr) => arr.findIndex(t => t === thing) === i);\n this.changeDetectorRef.detectChanges();\n })\n );\n }\n\n this.changeDetectorRef.detectChanges();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.data && this.data) {\n this.setChartsData(this.data);\n }\n if (changes.buildingId) {\n this.getBuildingInfo();\n } \n }\n\n public getIndustryPrimaryFunctions(): PrimaryFunction[] {\n return this.primaryFunctions.filter(p => p.buildingIndustry === this.primaryFunction.buildingIndustry);\n }\n\n public saveClicked(): void {\n this.addSubscription(\n this.buildingSummaryService.savePrimaryFunction(this.buildingId, this.primaryFunction.id)\n .subscribe((data: SaveEquipmentResult) => {\n console.log(\"primary function saved\");\n this._document.defaultView.location.reload();\n })\n );\n }\n\n private getBuildingInfo(): void {\n this.addSubscription(\n this.buildingSummaryService.getPrimaryFunction(this.buildingId)\n .subscribe((data: PrimaryFunction) => {\n this.primaryFunction = data;\n })\n );\n }\n\n private setChartsData(data: FacilityBenchmarkData[]): void {\n this.euiChartData = this.createEuiChartData(data);\n this.costPerSqftChartData = this.createCostPerSqFtData(data);\n const costPerBedData = data?.filter(d => !!d.costPerBedData);\n if (!!costPerBedData?.length) {\n this.costPerBedChartData = this.createCostPerBedChartData(costPerBedData);\n }\n }\n\n private createEuiChartData(data: FacilityBenchmarkData[]): BarChartData {\n return data.reduce((barChartData, curr) => {\n barChartData.titles.push(curr.buildingName);\n if (!!curr.euiData) {\n barChartData.values.start.push(curr.euiData.starting);\n barChartData.values.current.push(curr.euiData.current);\n barChartData.values.industry.push(curr.euiData.industry);\n }\n return barChartData;\n }, this.emptyEuiChartData);\n }\n\n private createCostPerBedChartData(data: FacilityBenchmarkData[]): BarChartData {\n return data.reduce((barChartData, curr) => {\n barChartData.titles.push(curr.buildingName);\n if (!!curr.costPerBedData) {\n barChartData.values.start.push(curr.costPerBedData.starting);\n barChartData.values.current.push(curr.costPerBedData.current);\n barChartData.values.national.push(curr.costPerBedData.national);\n barChartData.values.region.push(curr.costPerBedData.region);\n barChartData.values.state.push(curr.costPerBedData.state);\n }\n return barChartData;\n }, this.emptyCostPerBedChartData);\n }\n\n private createCostPerSqFtData(data: FacilityBenchmarkData[]): BarChartData {\n return data.reduce((barChartData, curr) => {\n barChartData.titles.push(curr.buildingName);\n if (!!curr.costPerSqFtData) {\n barChartData.values.start.push(curr.costPerSqFtData.starting);\n barChartData.values.current.push(curr.costPerSqFtData.current);\n barChartData.values.national.push(curr.costPerSqFtData.national);\n barChartData.values.region.push(curr.costPerSqFtData.region);\n barChartData.values.industry.push(curr.costPerSqFtData.industry);\n }\n return barChartData;\n }, this.emptyCostPerSqFtChartData);\n }\n\n private get emptyEuiChartData(): BarChartData {\n return {\n titles: [],\n values: {\n start: [],\n current: [],\n industry: []\n }\n } as BarChartData;\n }\n\n private get emptyCostPerBedChartData(): BarChartData {\n return {\n titles: [],\n values: {\n start: [],\n current: [],\n national: [],\n region: [],\n state: []\n }\n } as BarChartData;\n }\n\n private get emptyCostPerSqFtChartData(): BarChartData {\n return {\n titles: [],\n values: {\n start: [],\n current: [],\n national: [],\n region: [],\n industry: []\n }\n } as BarChartData;\n }\n\n public clickUpgrade(): void {\n console.log('upgrade');\n }\n}\n","<div class=\"text-h3 component-title\">{{ 'Facility Benchmarks' | localizeText }}</div>\n<table class=\"industry-block\" *ngIf=\"primaryFunction.id!==0 && !isEditMode\">\n <tr>\n <td>\n <span><strong>{{ 'Industry' | localizeText }}: </strong></span>\n </td>\n <td>\n <span>{{ primaryFunction.buildingIndustry | localizeText }}</span>\n </td>\n </tr>\n <tr>\n <td>\n <span><strong>{{ 'Primary Function' | localizeText }}: </strong></span>\n </td>\n <td>\n <span>{{ primaryFunction.primaryFunction | localizeText }}</span>\n </td>\n </tr>\n</table>\n<table class=\"industry-block\" *ngIf=\"primaryFunctions.length>0 && isEditMode && isEditIndustryEnabled\">\n <tr>\n <td>\n <span><strong>{{ 'Industry' | localizeText }}: </strong></span>\n </td>\n <td>\n <mat-form-field appearance=\"fill\" class=\"edit-industry-select\">\n <mat-label>{{ 'Select Industry' | localizeText }}</mat-label>\n <mat-select [(value)]=\"primaryFunction.buildingIndustry\">\n <mat-option value=\"\"></mat-option>\n <mat-option *ngFor=\"let industryItem of industries\" [value]=\"industryItem\">{{ industryItem | localizeText }}</mat-option> \n </mat-select>\n </mat-form-field>\n </td>\n </tr>\n <tr>\n <td>\n <span><strong>{{ 'Primary Function' | localizeText }}: </strong></span>\n </td>\n <td>\n <mat-form-field appearance=\"fill\" class=\"edit-industry-select\">\n <mat-label>{{ 'Select Primary Function' | localizeText }}</mat-label>\n <mat-select [(value)]=\"primaryFunction.id\">\n <mat-option value=\"\"></mat-option>\n <mat-option *ngFor=\"let primaryFunctionItem of getIndustryPrimaryFunctions()\" [value]=\"primaryFunctionItem.id\">{{ primaryFunctionItem.primaryFunction | localizeText }}</mat-option> \n </mat-select>\n </mat-form-field>\n </td>\n </tr>\n <tr>\n <button mat-raised-button color=\"primary\" class=\"save-changes-button\" (click)=saveClicked()>{{ 'Save changes' | localizeText }}</button>\n </tr>\n</table>\n<div class=\"cards-container\">\n <div class=\"col-adaptive\">\n <br-card (click)=\"panel.toggle();\">\n <span *ngIf=\"!panel.expanded\"><strong>EUI (Energy Use Intensity = Energy per sq. ft. per Year)</strong></span>\n <mat-expansion-panel class=\"card\" [expanded]=\"true\" #panel>\n <br-bar-chart [options]=\"model.euiChartOptions\" [data]=\"euiChartData\"\n [bluredTitleTemplateRef]=\"bluredTitle\"></br-bar-chart>\n </mat-expansion-panel>\n </br-card>\n <br-card *ngIf=\"!!costPerBedChartData\" (click)=\"panel1.toggle();\">\n <span *ngIf=\"!panel1.expanded\"><strong>Annual Cost per Bed</strong></span>\n <mat-expansion-panel class=\"card\" [expanded]=\"true\" #panel1>\n <br-bar-chart [options]=\"model.costPerBedChartOptions\" [data]=\"costPerBedChartData\"\n [bluredTitleTemplateRef]=\"bluredTitle\">\n </br-bar-chart>\n </mat-expansion-panel> \n </br-card>\n </div>\n <div class=\"col-adaptive\">\n <br-card (click)=\"panel2.toggle();\">\n <span *ngIf=\"!panel2.expanded\"><strong>Annual Cost per Square Foot</strong></span>\n <mat-expansion-panel class=\"card\" [expanded]=\"true\" #panel2>\n <br-bar-chart [options]=\"model.costPerSqftChartOptions\" [data]=\"costPerSqftChartData\"\n [bluredTitleTemplateRef]=\"bluredTitle\"></br-bar-chart>\n </mat-expansion-panel> \n </br-card>\n </div>\n</div>\n\n<ng-template #bluredTitle>\n <span class=\"link text-st-semibold\" (click)=\"clickUpgrade()\">{{ 'Upgrade to Pro' | localizeText }}</span>\n <span class=\"text-st-semibold\"> {{ 'to View Region and State' | localizeText }}</span>\n</ng-template>\n","import { DatePipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { AirHandlerInfo, BasControlsInfo, BoilerInfo, BuildingEnergyUses, ChillerInfo, CoolingTowerInfo, EnergyUsesItem, EquipmentType, HotWaterConverterInfo, MriInfo, WishListItem } from 'src/app/models/EquipmentsEvents';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { ValueFormatPipe } from 'src/app/shared/pipes/value-format.pipe';\n\nexport interface EventProperty {\n name: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BuildingEquipmentModalModel { \n\n constructor(private localizeText: LocalizeTextPipe) {\n }\n\n public propMapChiller: Record<string, EventProperty> = {\n name: { name: this.localizeText.transform('Name') },\n controllability: { name: this.localizeText.transform('Controllability') },\n manufacturerName: { name: this.localizeText.transform('Manufacturer') },\n tonnage: { name: this.localizeText.transform('Tonnage') },\n model: { name: this.localizeText.transform('Model #') },\n serial: { name: this.localizeText.transform('Serial #') },\n chillerType: { name: this.localizeText.transform('Type') }, \n dateInstalled: { name: this.localizeText.transform('Date Installed') }, \n purchasePrice: { name: this.localizeText.transform('Purchase Price') }, \n annualMaintenanceFee: { name: this.localizeText.transform('Annual Maintenance Fee') }, \n vintage: { name: this.localizeText.transform('Vintage') }, \n lifeOfEquipment: { name: this.localizeText.transform('Life of Equipment') }, \n };\n\n public propMapBoiler: Record<string, EventProperty> = {\n name: { name: this.localizeText.transform('Name') },\n controllability: { name: this.localizeText.transform('Controllability') },\n manufacturerName: { name: this.localizeText.transform('Manufacturer') },\n size: { name: this.localizeText.transform('Size (HP)') },\n boilerType: { name: this.localizeText.transform('Type') },\n model: { name: this.localizeText.transform('Model #') },\n serial: { name: this.localizeText.transform('Serial #') },\n dateInstalled: { name: this.localizeText.transform('Date Installed') }, \n purchasePrice: { name: this.localizeText.transform('Purchase Price') }, \n annualMaintenanceFee: { name: this.localizeText.transform('Annual Maintenance Fee') }, \n vintage: { name: this.localizeText.transform('Vintage') }, \n lifeOfEquipment: { name: this.localizeText.transform('Life of Equipment') },\n };\n\n public propMapCoolingTower: Record<string, EventProperty> = {\n name: { name: this.localizeText.transform('Name') },\n chillers: { name: this.localizeText.transform('Chiller(s)') },\n controllability: { name: this.localizeText.transform('Controllability') },\n manufacturerName: { name: this.localizeText.transform('Manufacturer') },\n model: { name: this.localizeText.transform('Model #') },\n serial: { name: this.localizeText.transform('Serial #') },\n dateInstalled: { name: this.localizeText.transform('Date Installed') }, \n purchasePrice: { name: this.localizeText.transform('Purchase Price') }, \n annualMaintenanceFee: { name: this.localizeText.transform('Annual Maintenance Fee') }, \n vintage: { name: this.localizeText.transform('Vintage') }, \n lifeOfEquipment: { name: this.localizeText.transform('Life of Equipment') },\n };\n\n public propMapAirHandler: Record<string, EventProperty> = {\n name: { name: this.localizeText.transform('Name') },\n controllability: { name: this.localizeText.transform('Controllability') },\n areaServed: { name: this.localizeText.transform('Area Served') },\n chillerServed: { name: this.localizeText.transform('Chiller Served') },\n mainType: { name: this.localizeText.transform('Type') },\n purchasePrice: { name: this.localizeText.transform('Purchase Price') }, \n annualMaintenanceFee: { name: this.localizeText.transform('Annual Maintenance Fee') }, \n vintage: { name: this.localizeText.transform('Vintage') }, \n lifeOfEquipment: { name: this.localizeText.transform('Life of Equipment') },\n };\n\n public propMapHWConverter: Record<string, EventProperty> = {\n name: { name: this.localizeText.transform('Name') },\n controllability: { name: this.localizeText.transform('Controllability') },\n manufacturer: { name: this.localizeText.transform('Manufacturer') },\n dateInstalled: { name: this.localizeText.transform('Date Installed') },\n purchasePrice: { name: this.localizeText.transform('Purchase Price') }, \n annualMaintenanceFee: { name: this.localizeText.transform('Annual Maintenance Fee') }, \n vintage: { name: this.localizeText.transform('Vintage') }, \n lifeOfEquipment: { name: this.localizeText.transform('Life of Equipment') },\n };\n\n public propMapBASControl: Record<string, EventProperty> = {\n manufacturerName: { name: this.localizeText.transform('Manufacturer') },\n informationModel: { name: this.localizeText.transform('Model') },\n dateInstalled: { name: this.localizeText.transform('Date Installed') },\n remoteAccess: { name: this.localizeText.transform('Remote Access') },\n percentPneumatic: { name: this.localizeText.transform('% Pneumatic') },\n percentDdc: { name: this.localizeText.transform('% DDC') },\n purchasePrice: { name: this.localizeText.transform('Purchase Price') }, \n annualMaintenanceFee: { name: this.localizeText.transform('Annual Maintenance Fee') }, \n vintage: { name: this.localizeText.transform('Vintage') }, \n lifeOfEquipment: { name: this.localizeText.transform('Life of Equipment') },\n };\n\n public propMapMRI: Record<string, EventProperty> = {\n description: { name: this.localizeText.transform('Description') },\n purchasePrice: { name: this.localizeText.transform('Purchase Price') }, \n annualMaintenanceFee: { name: this.localizeText.transform('Annual Maintenance Fee') }, \n vintage: { name: this.localizeText.transform('Vintage') }, \n lifeOfEquipment: { name: this.localizeText.transform('Life of Equipment') },\n };\n\n public propMapBuildingEnergyUses: Record<string, EventProperty> = {\n name: { name: this.localizeText.transform('Large Equipment/Room') },\n description: { name: this.localizeText.transform('Description') },\n electricEnergySource: { name: this.localizeText.transform('Electric Energy Source') },\n naturalGasSource: { name: this.localizeText.transform('Natural Gas Source') },\n };\n\n public propMapWishList: Record<string, EventProperty> = {\n description: { name: this.localizeText.transform('Item') },\n };\n\n public getPropMapByEquipmentType(equipmentType: EquipmentType): Record<string, EventProperty> {\n switch (equipmentType){\n case EquipmentType.Chiller: return this.propMapChiller; \n case EquipmentType.Boiler: return this.propMapBoiler;\n case EquipmentType.CoolingTower: return this.propMapCoolingTower;\n case EquipmentType.AirHandler: return this.propMapAirHandler;\n case EquipmentType.HWConverter: return this.propMapHWConverter;\n case EquipmentType.BASControl: return this.propMapBASControl; \n case EquipmentType.MRI: return this.propMapMRI;\n case EquipmentType.BuildingEnergyUses: return this.propMapBuildingEnergyUses; \n case EquipmentType.WishList: return this.propMapWishList;\n }\n }\n\n public getDefaultEquipmentByEquipmentType(equipmentType: EquipmentType) {\n switch (equipmentType){\n case EquipmentType.Chiller: return <ChillerInfo>{ manufacturerName: \"\", controllability: \"\", chillerType: \"\", tonnage: 0, approxAge: 0, images: [], pdfs: [], hyperlinks: [], note:[], id: 0, buildingId: 0, equipmentType: equipmentType };\n case EquipmentType.Boiler: return <BoilerInfo>{ manufacturerName: \"\", controllability: \"\", boilerType: \"\", size: 0, approxAge: 0, images: [], pdfs: [], hyperlinks: [], note:[], id: 0, buildingId: 0, pmProcedures: \"\", equipmentType: equipmentType };\n case EquipmentType.CoolingTower: return <CoolingTowerInfo>{ manufacturerName: \"\", controllability: \"\", basinType: \"\", towerType: \"\", fanType: \"\", tonnage: 0, approxAge: 0, images: [], pdfs: [], hyperlinks: [], note:[], id: 0, buildingId: 0, equipmentType: equipmentType };\n case EquipmentType.AirHandler: return <AirHandlerInfo>{ floor: 0, floorName: \"\", hoursOfOperation: \"\", numberOfAHU: 0, mainType: \"\", secondaryType: \"\", \n controllability: \"\", numberOfExhaustAirExchangerOrRecapture: 0, any_VAV_PIU_CAV: false, preExistingSetBacksInPlace: \"\",\n preExistingSetBacksSpecific:\"\", currentSetBacks: \"\", images: [], pdfs: [], hyperlinks: [], note:[], id: 0, buildingId: 0, equipmentType: equipmentType };\n case EquipmentType.HWConverter: return <HotWaterConverterInfo>{ loopName: \"\", controllability: \"\", images: [], pdfs: [], hyperlinks: [], note:[], id: 0, buildingId: 0, equipmentType: equipmentType };\n case EquipmentType.BASControl: return <BasControlsInfo>{ manufacturerName: \"\", remoteAccess: false, userName: \"\", password: \"\", informationModel: \"\", \n percentBuildingControlled: 0, numberOfFloorsControlled: 0, approxAge: 0, images: [], pdfs: [], hyperlinks: [], note:[], id: 0, buildingId: 0, equipmentType: equipmentType }; \n case EquipmentType.MRI: return <MriInfo>{ description: \"\", images: [], pdfs: [], hyperlinks: [], note:[], id: 0, buildingId: 0, equipmentType: equipmentType };\n case EquipmentType.BuildingEnergyUses: return <EnergyUsesItem>{ name: \"\", description: \"\", electricEnergySource: \"\", naturalGasSource: \"\", images: [], pdfs: [], hyperlinks: [], note:[], id: 0, buildingId: 0, equipmentType: equipmentType }; \n \n case EquipmentType.WishList: return <WishListItem>{ description: \"\", images: [], pdfs: [], hyperlinks: [], note:[], id: 0, buildingId: 0, equipmentType: equipmentType };\n } \n }\n}\n\n","import { DatePipe } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DateRange } from '@angular/material/datepicker';\nimport { take } from 'rxjs/operators';\nimport { environment } from '../../environments/environment';\nimport { AlarmDateService, BuildingSpreadsheetDateService, ClientSummaryDateService, EventSnapshotDateService } from '../components/date-selector/date-selector.service';\nimport { AlarmsExcelRequest, BuildingDashboardExcelRequest, DashboardExcelRequest } from '../models/DashboardExcelRequest';\nimport { ExcelUtils } from '../shared/excel-utils';\nimport { LocalizeTextPipe } from '../shared/pipes/localize-text.pipe';\nimport { EndpointConst } from './real-services/endpoint-const';\nimport { SelectedClientService } from './selected-client.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DashboardExcelService {\n\n private REST_API_SERVER = environment.apiUrl;\n private readonly EXCEL = 'excel';\n private readonly ALARMS_EXCEL = 'alerts-excel';\n\n constructor(private readonly httpClient: HttpClient,\n private readonly clientSummaryDateService: ClientSummaryDateService,\n private readonly buildingDateService: BuildingSpreadsheetDateService,\n private readonly eventSnapshotDateService: EventSnapshotDateService,\n private readonly alarmDateService: AlarmDateService,\n private readonly selectedClientService: SelectedClientService,\n private localizeText: LocalizeTextPipe) {\n }\n\n public async downloadExcelReport(): Promise<void> {\n const clientSummaryRange = await this.clientSummaryDateService.dateRangeChanged$.pipe(take(1)).toPromise();\n const buildingSpreadsheetRange = await this.buildingDateService.dateRangeChanged$.pipe(take(1)).toPromise();\n const eventSnapshotRange = await this.eventSnapshotDateService.dateRangeChanged$.pipe(take(1)).toPromise();\n\n const data = await this.httpClient.post(`${this.REST_API_SERVER}/${EndpointConst.DASHBOARD}/${this.EXCEL}`,\n {\n clientId: this.selectedClientService.clientId,\n clientSummaryRange,\n buildingSpreadsheetRange,\n eventSnapshotRange\n } as DashboardExcelRequest,\n {\n responseType: 'blob' as 'json'\n }).toPromise();\n\n const fileName = `${this.localizeText.transform('Dashboard')}-${new DatePipe('en-US').transform(Date.now(), 'M/d/yy')}.xlsx`;\n if (data) {\n ExcelUtils.downloadExcelFile(data as Blob, fileName);\n }\n }\n\n public async downloadBuildingExcelReport(buildingId: number, dateRange: DateRange<Date>): Promise<void> {\n const data = await this.httpClient.post(`${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${this.EXCEL}`,\n {\n buildingId,\n dateRange\n } as BuildingDashboardExcelRequest,\n {\n responseType: 'blob' as 'json'\n }).toPromise();\n\n const fileName = `${this.localizeText.transform('BuildingDashboard')}-${new DatePipe('en-US').transform(Date.now(), 'M/d/yy')}.xlsx`;\n if (data) {\n ExcelUtils.downloadExcelFile(data as Blob, fileName);\n }\n }\n\n public async downloadAlarmsExcelReport(clientId: number, campusId: number, dateRange: DateRange<Date>): Promise<void> {\n dateRange = await this.alarmDateService.dateRangeChanged$.pipe(take(1)).toPromise();\n const data = await this.httpClient.post(`${this.REST_API_SERVER}/${EndpointConst.DASHBOARD}/${this.ALARMS_EXCEL}`,\n {\n clientId,\n campusId,\n dateRange\n } as AlarmsExcelRequest,\n {\n responseType: 'blob' as 'json'\n }).toPromise();\n\n const fileName = `${this.localizeText.transform('Alarms')}-${new DatePipe('en-US').transform(Date.now(), 'M/d/yy')}.xlsx`;\n if (data) {\n ExcelUtils.downloadExcelFile(data as Blob, fileName);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { DatasetData, HorizontalBarChartOptions, MaxValueStrategy } from '../../../shared/components/bar-chart/bar-chart.model';\nimport { NumberFormat } from '../../../shared/models/NumberFormat';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FacilityBenchmarkModel {\n\n constructor(private localizeText: LocalizeTextPipe) {\n }\n\n private readonly startDataset: DatasetData = {\n key: 'start',\n label: this.localizeText.transform('Start'),\n format: NumberFormat.shortCurrencyFormat,\n maxValueStrategy: MaxValueStrategy.maxAll,\n barColor: '#3EB049'\n };\n\n private readonly currentDataset: DatasetData = {\n key: 'current',\n label: this.localizeText.transform('Current'),\n format: NumberFormat.shortCurrencyFormat,\n maxValueStrategy: MaxValueStrategy.maxAll,\n barColor: '#193769'\n };\n\n private readonly industryDataset: DatasetData = {\n key: 'industry',\n label: this.localizeText.transform('Industry'),\n format: NumberFormat.shortCurrencyFormat,\n maxValueStrategy: MaxValueStrategy.maxAll,\n barColor: '#FFCF5C'\n };\n\n private readonly nationalDataset: DatasetData = {\n key: 'national',\n label: this.localizeText.transform('National'),\n format: NumberFormat.shortCurrencyFormat,\n maxValueStrategy: MaxValueStrategy.maxAll,\n barColor: '#A9B4C7'\n };\n\n private readonly regionDataset: DatasetData = {\n key: 'region',\n label: this.localizeText.transform('Region'),\n format: NumberFormat.shortCurrencyFormat,\n maxValueStrategy: MaxValueStrategy.maxAll,\n barColor: '#FFA26B'\n };\n\n private readonly stateDataset: DatasetData = {\n key: 'state',\n label: this.localizeText.transform('State'),\n format: NumberFormat.shortCurrencyFormat,\n maxValueStrategy: MaxValueStrategy.maxAll,\n barColor: '#FFCF5C'\n };\n\n public euiChartOptions: HorizontalBarChartOptions = {\n chartTitle: this.localizeText.transform('EUI (Energy Use Intensity = Energy per sq. ft. per Year)'),\n maxHeight: 650,\n datasets: [\n {\n ...this.startDataset,\n format: NumberFormat.integerNumberFormat\n },\n {\n ...this.currentDataset,\n format: NumberFormat.integerNumberFormat\n },\n {\n ...this.industryDataset,\n format: NumberFormat.integerNumberFormat\n }\n ]\n };\n\n public costPerBedChartOptions: HorizontalBarChartOptions = {\n chartTitle: this.localizeText.transform('Annual Cost per Bed'),\n maxHeight: 930,\n datasets: [\n this.startDataset,\n this.currentDataset,\n this.nationalDataset,\n this.regionDataset,\n this.stateDataset\n ]\n };\n\n public costPerSqftChartOptions: HorizontalBarChartOptions = {\n chartTitle: this.localizeText.transform('Annual Cost per Square Foot'),\n maxHeight: 930,\n datasets: [\n this.startDataset,\n this.currentDataset,\n this.nationalDataset,\n this.regionDataset,\n this.industryDataset\n ]\n };\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalStorageService {\n public set(key: string, value: string): void {\n localStorage.setItem(key, value);\n }\n\n public get(key: string): string | null {\n return localStorage.getItem(key);\n }\n\n public remove(key: string): void {\n localStorage.removeItem(key);\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { UtilityBenchmarkData } from '../../../models/UtilityBenchmarkData';\nimport { BarChartData } from '../../../shared/components/bar-chart/bar-chart.model';\nimport { UtilityBenchmarkModel } from './utility-benchmarks.model';\n\n@Component({\n selector: 'br-utility-benchmarks',\n templateUrl: './utility-benchmarks.component.html',\n styleUrls: ['./utility-benchmarks.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UtilityBenchmarksComponent implements OnChanges {\n\n @Input()\n public data: UtilityBenchmarkData[] = [];\n\n public usageVsCostElectricityData: BarChartData | null = null;\n public kwhRateVsBenchmarksData: BarChartData | null = null;\n public usageVsCostGasData: BarChartData | null = null;\n public mcfRateVsBenchmarksData: BarChartData | null = null;\n\n constructor(public readonly model: UtilityBenchmarkModel) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.data && this.data) {\n this.setChartsData(this.data);\n }\n }\n\n private setChartsData(data: UtilityBenchmarkData[]): void {\n this.usageVsCostElectricityData = this.createUsageVsCostElData(data);\n this.kwhRateVsBenchmarksData = this.createKwhRateVsBenchmarksData(data);\n this.usageVsCostGasData = this.createUsageVsCostNgData(data);\n this.mcfRateVsBenchmarksData = this.createMcfRateVsBenchmarksData(data);\n }\n\n private createUsageVsCostElData(data: UtilityBenchmarkData[]): BarChartData {\n return data.reduce((barChartData: BarChartData, curr: UtilityBenchmarkData) => {\n barChartData.titles.push(this.model.UsageVsCostTitle);\n barChartData.values.percentOfUsage.push(curr.electricityAnalysis.percentOfUsage);\n barChartData.values.percentOfCost.push(curr.electricityAnalysis.percentOfCost);\n return barChartData;\n }, this.emptyUsageVsCostData);\n }\n\n private createUsageVsCostNgData(data: UtilityBenchmarkData[]): BarChartData {\n return data.reduce((barChartData: BarChartData, curr: UtilityBenchmarkData) => {\n barChartData.titles.push(this.model.UsageVsCostTitle);\n barChartData.values.percentOfUsage.push(curr.gasAnalysis.percentOfUsage);\n barChartData.values.percentOfCost.push(curr.gasAnalysis.percentOfCost);\n return barChartData;\n }, this.emptyUsageVsCostData);\n }\n\n private createKwhRateVsBenchmarksData(data: UtilityBenchmarkData[]): BarChartData {\n return data.reduce((barChartData: BarChartData, curr: UtilityBenchmarkData) => {\n barChartData.titles.push(this.model.KwhRateVsBenchmarksTitle);\n barChartData.values.start.push(curr.electricityAnalysis.start);\n barChartData.values.current.push(curr.electricityAnalysis.current);\n barChartData.values.industry.push(curr.electricityAnalysis.industry);\n return barChartData;\n }, this.emptyRateVsBenchmarksData);\n }\n\n private createMcfRateVsBenchmarksData(data: UtilityBenchmarkData[]): BarChartData {\n return data.reduce((barChartData: BarChartData, curr: UtilityBenchmarkData) => {\n barChartData.titles.push(this.model.MCFRateVsBenchmarksTitle);\n barChartData.values.start.push(curr.gasAnalysis.start);\n barChartData.values.current.push(curr.gasAnalysis.current);\n barChartData.values.industry.push(curr.gasAnalysis.industry);\n return barChartData;\n }, this.emptyRateVsBenchmarksData);\n }\n\n private get emptyRateVsBenchmarksData(): BarChartData {\n return {\n titles: [],\n values: {\n start: [],\n current: [],\n industry: []\n }\n };\n }\n\n private get emptyUsageVsCostData(): BarChartData {\n return {\n titles: [],\n values: {\n percentOfUsage: [],\n percentOfCost: []\n }\n };\n }\n}\n","<div class=\"text-h3 component-title\">{{ 'Utility Benchmarks' | localizeText }}</div>\n<div class=\"cards-container\">\n <div class=\"col-adaptive\">\n <br-card>\n <br-bar-chart [options]=\"model.usageVsCostElectricityAnalysisOptions\" [data]=\"usageVsCostElectricityData\"></br-bar-chart>\n <br-bar-chart [options]=\"model.kwhRateVsBenchmarksOptions\" [data]=\"kwhRateVsBenchmarksData\"></br-bar-chart>\n </br-card>\n </div>\n <div class=\"col-adaptive\">\n <br-card>\n <br-bar-chart [options]=\"model.usageVsCostGasAnalysisOptions\" [data]=\"usageVsCostGasData\"></br-bar-chart>\n <br-bar-chart [options]=\"model.mcfRateVsBenchmarksOptions\" [data]=\"mcfRateVsBenchmarksData\"></br-bar-chart>\n </br-card>\n </div>\n</div>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DateRange } from '@angular/material/datepicker';\nimport { Observable, of } from 'rxjs';\nimport { environment } from '../../../environments/environment';\nimport { BuildingData } from '../../models/BuildingData';\nimport { CampusData } from '../../models/CampusData';\nimport { ClientDateRange } from '../../models/ClientDateRange';\nimport { IBuildingSpreadsheetService } from '../interfaces/building-spreadsheet.interface';\nimport { EndpointConst } from './endpoint-const';\n\n@Injectable()\nexport class BuildingSpreadsheetRealService implements IBuildingSpreadsheetService {\n\n private REST_API_SERVER = environment.apiUrl;\n private readonly BUILDING_SPREADSHEET = 'buildingSpreadsheet';\n private readonly CAMPUS_SPREADSHEET = 'campusSpreadsheet';\n\n constructor(private httpClient: HttpClient) { }\n\n public getBuildingSpredsheetData(clientId: number, campusId: number, dateRange: DateRange<Date>): Observable<BuildingData[]> {\n const data = this.httpClient.post<BuildingData[]>(\n `${this.REST_API_SERVER}/${EndpointConst.DASHBOARD}/${this.BUILDING_SPREADSHEET}`,\n { \n clientId,\n campusId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as ClientDateRange);\n return data;\n }\n\n public getCampusSpredsheetData(clientId: number, dateRange: DateRange<Date>): Observable<CampusData[]> {\n const data = this.httpClient.post<CampusData[]>(\n `${this.REST_API_SERVER}/${EndpointConst.DASHBOARD}/${this.CAMPUS_SPREADSHEET}`,\n {\n clientId,\n dateStart: dateRange.start,\n dateEnd: dateRange.end\n } as ClientDateRange);\n return data;\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, retry } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HttpErrorInterceptor implements HttpInterceptor {\n public intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request)\n .pipe(\n catchError((errorResponse: HttpErrorResponse) => {\n let errorMessage = '';\n if (errorResponse.error instanceof ErrorEvent) {\n // client side error\n errorMessage = `${errorResponse.error.message}`;\n } else {\n // server side error\n errorMessage = `${errorResponse.error || errorResponse.message}`;\n }\n return throwError(errorMessage);\n })\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\nimport { BuildingEvent } from 'src/app/components/building-events/building-event.model';\nimport { environment } from '../../../environments/environment';\nimport { Equipment, EquipmentsEvents, NoteItem, SaveEquipmentResult } from '../../models/EquipmentsEvents';\nimport { EndpointConst } from './endpoint-const';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BuildingAssetListService {\n \n private readonly REST_API_SERVER = environment.apiUrl;\n private readonly EQUIPMENTS = 'equipments';\n private readonly EQUIPMENT = 'equipment';\n private readonly DELETE_EQUIPMENT = 'delete-equipment';\n private readonly EQUIPMENT_EVENTS = 'equipment-events';\n private readonly NOTES = 'notes';\n\n constructor(private httpClient: HttpClient) { }\n\n public getEquipmentsEvents(buildingId: number): Observable<EquipmentsEvents> {\n return this.httpClient.get<EquipmentsEvents>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.EQUIPMENTS}`\n );\n }\n\n public saveEquipment(buildingId: number, equipment: Equipment): Observable<SaveEquipmentResult> {\n return this.httpClient.post<SaveEquipmentResult>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.EQUIPMENT}`, equipment\n );\n }\n\n public deleteEquipment(buildingId: number, equipment: Equipment): Observable<SaveEquipmentResult> {\n return this.httpClient.post<SaveEquipmentResult>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.DELETE_EQUIPMENT}`, equipment\n );\n }\n\n public saveEvents(buildingId: number, events: BuildingEvent[]): Observable<SaveEquipmentResult> {\n return this.httpClient.post<SaveEquipmentResult>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${buildingId}/${this.EQUIPMENT_EVENTS}`, events\n );\n }\n\n public saveNotes(equipment: Equipment): Observable<SaveEquipmentResult> {\n return this.httpClient.post<SaveEquipmentResult>(\n `${this.REST_API_SERVER}/${EndpointConst.BUILDING}/${this.NOTES}`, equipment\n );\n }\n}\n","import { Component, EventEmitter, OnInit, Output, Input, Inject, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { switchMap } from 'rxjs/operators';\nimport { CLIENT_SUMMARY_SERVICE, IClientSummaryService } from '../../services/interfaces/client-summary.interface';\nimport { BaseComponent } from '../../shared/components/base/base.component';\nimport { ClientSummaryDateService, DateSelectorService } from '../date-selector/date-selector.service';\nimport { CampusSummaryModel, DetailsData } from './campus-summary.model';\nimport { ClientSummaryData } from '../../models/ClientSummaryData';\nimport { combineLatest, Observable } from 'rxjs';\nimport { SelectedClientService } from '../../services/selected-client.service';\nimport { GoLiveDateStorage } from '../../services/go-live-date-storage.service';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { ClientSummaryAdditionalData } from 'src/app/models/ClientSummaryAdditionalData';\nimport { CampusSummaryData } from 'src/app/models/CampusSummaryData';\n\n@Component({\n selector: 'br-campus-summary',\n templateUrl: './campus-summary.component.html',\n styleUrls: ['./campus-summary.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CampusSummaryModel,\n {\n provide: DateSelectorService,\n useExisting: ClientSummaryDateService\n }\n ]\n})\nexport class CampusSummaryComponent extends BaseComponent implements OnInit {\n\n @Output()\n public summaryChanged = new EventEmitter<boolean>();\n public ROWS_COUNT = 2;\n\n public columnsCount = 5;\n public campusName = '';\n public savingsData = this.model.defaultSavingsData;\n public detailsData = this.model.defaultDetailsData;\n public consumptionDetailsData = this.model.defaultConsumptionDetailsData;\n public overviewData = this.model.defaultOverviewData;\n public rangeSavingsTitle = this.model.rangeSavingsTitle;\n public rangeSavingsDescriptions = this.model.rangeSavingsDescriptions;\n public dateRangeChanged$ = this.dateFilterService.dateRangeChanged$;\n public liveDate$ = this.clientGoLiveDateService.clientGoLiveDate$;\n public isSpendView = true;\n\n constructor(private readonly model: CampusSummaryModel,\n private readonly dateFilterService: DateSelectorService,\n private readonly selectedClientService: SelectedClientService,\n @Inject(CLIENT_SUMMARY_SERVICE) private readonly clientSummaryService: IClientSummaryService,\n private readonly clientGoLiveDateService: GoLiveDateStorage,\n private changeDetectorRef: ChangeDetectorRef,\n private localizeText: LocalizeTextPipe) {\n super();\n }\n\n public ngOnInit(): void {\n this.addSubscription(\n combineLatest([\n this.selectedClientService.selectedClientId$,\n this.selectedClientService.selectedCampusId$,\n this.dateFilterService.dateRangeChanged$,\n ]).pipe(\n switchMap(([clientId, campusId, dateRange]) => this.clientSummaryService.getCampusSummaryData(clientId, campusId, dateRange))\n ).subscribe((data: CampusSummaryData) => {\n this.campusName = data.campusName;\n this.setSavingsValues(data);\n this.setDetailsValues(data);\n this.columnsCount = this.getColumsCount();\n this.changeDetectorRef.detectChanges();\n })\n );\n\n this.addSubscription(\n combineLatest([\n this.selectedClientService.selectedClientId$,\n this.dateFilterService.dateRangeChanged$,\n ]).pipe(\n switchMap(([clientId, dateRange]) => this.clientSummaryService.getClientSummaryAdditionalData(clientId, dateRange))\n ).subscribe((data: ClientSummaryAdditionalData) => { \n this.setAdditionalDetailsValues(data); \n this.changeDetectorRef.detectChanges();\n })\n );\n\n this.addSubscription(\n this.dateFilterService.selectedIndexChanged$.subscribe(index => {\n this.savingsData.rangeToDateSavings.title = this.rangeSavingsTitle[index];\n this.savingsData.rangeToDateSavings.description = this.rangeSavingsDescriptions[index];\n })\n );\n}\n\n public isDetailsItemVisible(data: DetailsData): boolean { \n if (data.description === this.localizeText.transform('Total Beds') && data.value === 0){\n return false;\n }\n return !(data.value === undefined && data.hideIfUndefined) && !data.hide;\n }\n\n public onChange(advanced: boolean): void {\n this.summaryChanged.emit(advanced);\n }\n\n public onSpendViewChange(isSpendView: boolean): void {\n this.isSpendView = isSpendView;\n }\n\n private getColumsCount(): number {\n const itemsCount = this.getDetailsVisibleItemsCount();\n return Math.ceil(itemsCount / this.ROWS_COUNT);\n }\n\n private getDetailsVisibleItemsCount(): number {\n return Object.keys(this.detailsData)\n .map(key => this.detailsData[key])\n .filter(data => this.isDetailsItemVisible(data)).length;\n }\n\n private setSavingsValues(data: CampusSummaryData): void {\n this.savingsData.rangeToDateSavings.value = data.rangeSavings;\n this.savingsData.rangeToDateSavings.additionalValue = Math.round((data.rangeSavings / data.totalEnergySpend * 100) * 100) / 100;\n this.savingsData.totalSavings.value = data.totalSavings;\n }\n\n private setDetailsValues(data: CampusSummaryData): void {\n this.overviewData.buildingCount.value = data.buildingsCount;\n this.detailsData.electricityCost.value = data.electricityCost;\n this.detailsData.electricityCost.hide = !data.hasElectricity;\n this.detailsData.electricitySavings.value = data.rangeElectricitySavings;\n this.detailsData.electricitySavings.hide = !data.hasElectricity;\n this.overviewData.totalBeds.value = data.bedsCount;\n this.overviewData.totalSquareFootage.value = data.totalSqFt;\n this.detailsData.totalEnergySpend.value = data.totalEnergySpend;\n this.detailsData.naturalGasCost.value = data.naturalGasCost;\n this.detailsData.naturalGasCost.hide = !data.hasGas;\n this.detailsData.naturalGasSavings.value = data.rangeNaturalGasSavings;\n this.detailsData.naturalGasSavings.hide = !data.hasGas;\n this.detailsData.co2Emission.value = data.carbonEmission;\n this.detailsData.co2Reduced.value = data.carbonReduced;\n this.detailsData.waterSpend.value = data.waterCost;\n this.detailsData.waterSpend.hide = !data.hasWater;\n this.detailsData.waterUsage.value = data.rangeWaterSpent;\n this.detailsData.waterUsage.hide = !data.hasWater;\n\n this.consumptionDetailsData.electricConsumption.value = data.electricConsumption;\n this.consumptionDetailsData.electricConsumption.hide = !data.hasElectricity;\n this.consumptionDetailsData.electricSavingVolume.value = data.electricSavingVolume;\n this.consumptionDetailsData.electricSavingVolume.hide = !data.hasElectricity;\n this.consumptionDetailsData.naturalGasConsumption.value = data.gasConsumption;\n this.consumptionDetailsData.naturalGasConsumption.unitOfMeasure = data.gasMeasure && data.gasMeasure !='' ? ` (${data.gasMeasure})` : \"\";\n this.consumptionDetailsData.naturalGasConsumption.hide = !data.hasGas;\n this.consumptionDetailsData.naturalGasSavings.value = data.gasSavingsVolume;\n this.consumptionDetailsData.naturalGasSavings.unitOfMeasure = data.gasMeasure && data.gasMeasure !='' ? ` (${data.gasMeasure})` : \"\";\n this.consumptionDetailsData.naturalGasSavings.hide = !data.hasGas;\n this.consumptionDetailsData.co2Emission.value = data.carbonEmission;\n this.consumptionDetailsData.co2Reduced.value = data.carbonReduced;\n this.consumptionDetailsData.waterSpend.hide = !data.hasWater;\n this.consumptionDetailsData.waterUsage.value = data.rangeWaterSpent;\n this.consumptionDetailsData.waterUsage.hide = !data.hasWater;\n }\n\n private setAdditionalDetailsValues(data: ClientSummaryAdditionalData): void {\n if (this.detailsData.eui){\n this.detailsData.eui.value = data.eui;\n } \n }\n}\n","<span class=\"text-h3\">{{ campusName }}</span>\n<br-dashboard-btn-group [isShowLeftButtons]=\"false\" (advancedViewChanged)=\"onChange($event)\" (spendViewChanged)=\"onSpendViewChange($event)\"></br-dashboard-btn-group>\n<div class=\"buttons-container\"> \n <div class=\"text-h3 component-title__text\">{{ 'Overview' | localizeText }}</div>\n <div>\n <div class=\"overview-info\" *ngFor=\"let data of overviewData | mapToIterable: 'value'\">\n <div><span class=\"value text-h3 icon-text-print overview-info-header\">{{ data.value | valueFormat: data.format }}</span></div>\n <span class=\"description text-sm\">{{ data.description }}</span>\n </div>\n </div>\n <br-date-selector [goLiveDate]=\"liveDate$ | async\"></br-date-selector>\n</div>\n<div class=\"cards-container\">\n <!-- <br-card *ngFor=\"let data of savingsData | mapToIterable: 'value'\" class=\"saving-card\"\n [title]=\"data.title\" [description]=\"buildingsGroupName + ' ' + data.description\"> -->\n <br-card *ngFor=\"let data of savingsData | mapToIterable: 'value'\" class=\"saving-card\"\n [title]=\"data.title\" [description]=\"\">\n <div class=\"pie-chart-container\">\n <div *ngIf=\"data.additionalValue == null\" class=\"pie-chart circle circle-box-shadow text-h3\">{{ data.value | valueFormat: data.format }}</div>\n <div *ngIf=\"data.additionalValue != null\">\n <div class=\"pie-chart circle circle-box-shadow text-h3\">\n <span>{{ data.value | valueFormat: data.format }}<br><span style=\"font-size: 18px;\">({{ data.additionalValue }} %)</span></span>\n </div> \n </div>\n </div>\n </br-card>\n <br-card class=\"details-container\" *ngIf=\"isSpendView\">\n <ng-container *ngFor=\"let data of detailsData | mapToIterable: 'value'\">\n <div *ngIf=\"isDetailsItemVisible(data)\" class=\"details-item col-{{columnsCount}}\">\n <div *ngIf=\"data.description !==''\">\n <div class=\"{{data.isGreen ? 'icon-container-green' : 'icon-container-blue'}} icon-container circle circle-box-shadow\">\n <br-svg-icon [name]=\"data.icon\"></br-svg-icon>\n </div>\n <span class=\"value text-h3 icon-text-print\">{{ data.value | valueFormat: data.format }}</span>\n <span class=\"description text-sm\">{{ data.description }}</span>\n </div> \n </div>\n </ng-container>\n </br-card>\n <br-card class=\"details-container\" *ngIf=\"!isSpendView\">\n <ng-container *ngFor=\"let data of consumptionDetailsData | mapToIterable: 'value'\">\n <div *ngIf=\"isDetailsItemVisible(data)\" class=\"details-item col-{{columnsCount}}\">\n <div *ngIf=\"data.description !==''\">\n <div class=\"{{data.isGreen ? 'icon-container-green' : 'icon-container-blue'}} icon-container circle circle-box-shadow\">\n <br-svg-icon [name]=\"data.icon\"></br-svg-icon>\n </div> \n <span class=\"value text-h3 icon-text-print\">{{ data.value | valueFormat: data.format }}</span>\n <span class=\"description text-sm\">{{ data.description }}{{data.unitOfMeasure}}</span>\n </div> \n </div>\n </ng-container>\n </br-card>\n</div>\n","import { DateRange } from '@angular/material/datepicker';\nimport { Observable } from 'rxjs';\nimport { AlertsData } from 'src/app/models/AlertsData';\nimport { CampusSummaryData } from 'src/app/models/CampusSummaryData';\nimport { ClientSummaryAdditionalData } from 'src/app/models/ClientSummaryAdditionalData';\nimport { ClientSummaryData } from '../../models/ClientSummaryData';\n\nexport const CLIENT_SUMMARY_SERVICE = 'CLIENT_SUMMARY_SERVICE';\nexport interface IClientSummaryService {\n getClientSummaryData(clientId: number, dateRange: DateRange<Date>): Observable<ClientSummaryData>;\n getClientSummaryAdditionalData(clientId: number, dateRange: DateRange<Date>): Observable<ClientSummaryAdditionalData>;\n\n getCampusSummaryData(clientId: number, campusId: number, dateRange: DateRange<Date>): Observable<CampusSummaryData>;\n getCampusSummaryAdditionalData(campusId: number, dateRange: DateRange<Date>): Observable<ClientSummaryAdditionalData>;\n\n getAlerts(clientId: number, campusId: number, dateRange: DateRange<Date>): Observable<AlertsData>;\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { FacilityBenchmarkData } from '../../models/FacilityBenchmarkData';\nimport { BenchmarksService } from '../../services/real-services/benchmarks.service';\nimport { BaseComponent } from '../../shared/components/base/base.component';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Utils } from '../../shared/utils';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport { SelectedClientService } from '../../services/selected-client.service';\nimport { NOT_FOUND_ROUTE } from '../../routing-const';\n\n@Component({\n selector: 'br-main-dashboard',\n templateUrl: './main-dashboard.component.html',\n styleUrls: ['./main-dashboard.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MainDashboardComponent extends BaseComponent implements OnInit {\n\n @ViewChild('anchor')\n public anchor: ElementRef | null = null;\n\n public isShowCampus = true;\n\n public advanced$ = new BehaviorSubject<boolean>(false);\n public alarm$ = new BehaviorSubject<boolean>(false);\n public facilityBenchmarksData$ = new Observable<FacilityBenchmarkData[]>();\n constructor(\n private readonly selectedClientService: SelectedClientService,\n private readonly benchmarksService: BenchmarksService,\n private readonly activateRoute: ActivatedRoute,\n private readonly router: Router,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.selectedClientService.campusId = undefined;\n\n this.facilityBenchmarksData$ = this.selectedClientService.selectedClientId$.pipe(\n switchMap(clientId => this.benchmarksService.getClientFacilityBenchmarks(clientId, null))\n );\n\n this.addSubscription(\n this.activateRoute.params.pipe(\n map(params => Utils.tryGetNumberFromAny(params.clientId))\n ).subscribe(clientId => {\n if (clientId !== undefined) {\n this.selectedClientService.clientId = clientId;\n } else {\n //!!todo this.router.navigate([NOT_FOUND_ROUTE]);\n }\n })\n );\n\n this.addSubscription(\n this.advanced$.subscribe((value) => {\n if (value) {\n setTimeout(() => this.scrollToAnchor(), 0);\n }\n })\n );\n\n this.addSubscription(\n this.alarm$.subscribe((value) => {\n if (value) {\n setTimeout(() => this.scrollToAnchor(), 0);\n }\n })\n );\n\n this.selectedClientService.currentLocalization$.subscribe(localization => {\n if (localization) {\n this.changeDetectorRef.detectChanges(); \n }\n });\n }\n\n public onChanged(advanced: boolean): void {\n this.advanced$.next(advanced);\n }\n\n public onAlarmChanged(isAlarmView: boolean): void {\n this.alarm$.next(isAlarmView);\n }\n\n public onShowCampusChanged(isShowCampus: boolean): void {\n this.isShowCampus = isShowCampus;\n }\n\n private scrollToAnchor(): void {\n this.anchor?.nativeElement?.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });\n }\n}\n","<br-client-summary (summaryChanged)=\"onChanged($event)\" (alarmChanged)=\"onAlarmChanged($event)\"></br-client-summary>\n<br-campus-spreadsheet (showCampusChanged)=\"onShowCampusChanged($event)\" *ngIf=\"isShowCampus\"></br-campus-spreadsheet>\n<br-building-spreadsheet *ngIf=\"!isShowCampus\"></br-building-spreadsheet>\n<div #anchor></div>\n<br-building-alerts *ngIf=\"alarm$ | async\"></br-building-alerts>\n<br-event-snapshot *ngIf=\"advanced$ | async\" class=\"avoid-page-breaks-inside\"></br-event-snapshot>\n<br-facility-benchmarks *ngIf=\"advanced$ | async\" [data]=\"(facilityBenchmarksData$ | async)!\" class=\"avoid-page-breaks-inside\"></br-facility-benchmarks>\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { share, shareReplay, switchMap } from 'rxjs/operators';\nimport { GoLiveDateInfo } from '../shared/models/GoLiveDateInfo';\nimport { GO_LIVE_DATE_SERVICE, IGoLiveDateService } from './interfaces/go-live-date.interface';\nimport { SelectedBuildingService } from './selected-building.service';\nimport { SelectedClientService } from './selected-client.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GoLiveDateStorage {\n public clientGoLiveDate$: Observable<Date>;\n public buildingGoLiveDate$: Observable<GoLiveDateInfo>;\n\n constructor(private readonly selectedClientService: SelectedClientService,\n private readonly selectedBuildingService: SelectedBuildingService,\n @Inject(GO_LIVE_DATE_SERVICE) private readonly goLiveDateService: IGoLiveDateService) {\n\n this.clientGoLiveDate$ = this.selectedClientService.selectedClientId$.pipe(\n switchMap(clientId => this.goLiveDateService.getGoLiveDate(clientId)),\n shareReplay()\n );\n\n this.buildingGoLiveDate$ = this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap(buildingId => this.goLiveDateService.getBuildingGoLiveDate(buildingId)),\n shareReplay()\n );\n }\n}\n","import { DateRange } from '@angular/material/datepicker';\nimport { Observable } from 'rxjs';\nimport { SaveEquipmentResult } from 'src/app/models/EquipmentsEvents';\nimport { PrimaryFunction } from 'src/app/models/FacilityBenchmarkData';\nimport { BuildingContact, BuildingInfo, BuildingInfoAdditional } from '../../models/BuildingInfo';\n\nexport const BUILDING_SUMMARY_SERVICE = 'BUILDING_SUMMARY_SERVICE';\nexport interface IBuildingSummaryService {\n getBuildingSummary(buildingId: number, dateRange: DateRange<Date>): Observable<BuildingInfo>;\n getBuildingSummaryAdditional(buildingId: number, dateRange: DateRange<Date>): Observable<BuildingInfoAdditional>;\n getCampusSummaryAdditional(campusId: number, dateRange: DateRange<Date>): Observable<BuildingInfoAdditional>;\n getBuildingTags(buildingId: number): Observable<string[]>;\n saveBuildingTags(buildingId: number, tags: string[]): Observable<SaveEquipmentResult>;\n getPrimaryFunction(buildingId: number): Observable<PrimaryFunction>;\n getPrimaryFunctions(): Observable<PrimaryFunction[]>;\n savePrimaryFunction(buildingId: number, primaryFunctionId: number): Observable<SaveEquipmentResult>;\n getBuildingContacts(buildingId: number): Observable<BuildingContact[]>;\n saveBuildingContact(buildingId: number, buildingContact: BuildingContact): Observable<SaveEquipmentResult>;\n deleteBuildingContact(buildingId: number, buildingContact: BuildingContact): Observable<SaveEquipmentResult>;\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { BaseComponent } from '../../shared/components/base/base.component';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SelectedClientService } from '../../services/selected-client.service';\nimport { LanguageInfo, LocalizationInfo, TranslationItem } from 'src/app/models/AuthModel';\nimport { AdminService } from 'src/app/services/admin.service';\nimport { CLIENT_SELECT_ROUTE } from 'src/app/routing-const';\n\n@Component({\n templateUrl: './admin.component.html',\n styleUrls: ['./admin.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AdminComponent extends BaseComponent implements OnInit {\n\n public localization: LocalizationInfo;\n public currentLanguageCode: string;\n public currentLanguageInfo: LanguageInfo;\n public searchFilter: string;\n public saveProgressMessage: string;\n public isSaveInProgress: boolean = false;\n\n constructor(\n private readonly selectedClientService: SelectedClientService,\n private readonly router: Router,\n private readonly adminService: AdminService,\n private changeDetectorRef: ChangeDetectorRef,\n private readonly activateRoute: ActivatedRoute\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.selectedClientService.currentLocalization$.subscribe(localization => {\n this.localization = localization;\n this.currentLanguageCode = localization.currentLanguage.code;\n this.onLanguageChanged(null);\n });\n }\n\n public onLanguageChanged(ev: any): void {\n var selectedLanguage = this.localization.languages.filter(p => p.code == this.currentLanguageCode)[0];\n\n this.addSubscription(\n this.adminService.getLanguageInfo(selectedLanguage.code)\n .subscribe((res) => {\n this.currentLanguageInfo = res;\n this.changeDetectorRef.detectChanges();\n })\n );\n }\n\n public addClicked() {\n this.currentLanguageInfo.translationItems.unshift(<TranslationItem>{ sourceText: 'new', text: '', isNew: true });\n }\n\n public saveClicked() {\n this.saveProgressMessage = \"Saving in progress. It can take several minutes. Please wait.\"\n this.isSaveInProgress = true;\n this.addSubscription(\n this.adminService.saveLanguageInfo(this.currentLanguageInfo)\n .subscribe((res) => {\n this.onLanguageChanged(null);\n if (res.isSuccess) {\n this.saveProgressMessage = \"Saved successfully.\"\n }\n else {\n this.saveProgressMessage = \"Something went wrong. Please try again later.\"\n }\n this.isSaveInProgress = false;\n setTimeout(() => { this.saveProgressMessage = \"\"; this.changeDetectorRef.detectChanges(); }, 3000);\n })\n );\n }\n\n public backToOverview(): void {\n this.router.navigate([`${CLIENT_SELECT_ROUTE}`]);\n }\n}\n","<button class=\"button-link text-sm-semibold\" (click)=\"backToOverview()\">\n <br-svg-icon name=\"arrow-left\" [width]=\"11\" [height]=\"11\" class=\"arrow icon\"></br-svg-icon>\n <span>Back</span>\n</button>\n<h4>Manage languages</h4>\n<mat-select [(value)]=\"currentLanguageCode\" style=\"width: 230px; margin-left: auto;\" (selectionChange)=\"onLanguageChanged($event)\" *ngIf=\"localization\">\n <mat-option *ngFor=\"let language of localization.languages\" [value]=\"language.code\">{{ language.name === language.nativeName ? language.name : language.name + ' (' + language.nativeName + ')' }}</mat-option> \n</mat-select>\n<mat-form-field class=\"search-block\">\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"\" [(ngModel)]=\"searchFilter\"\n [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n</mat-form-field>\n<div class=\"main-button-block\" *ngIf=\"currentLanguageInfo\">\n <button mat-stroked-button color=\"primary\" (click)=addClicked() class=\"button-add\" *ngIf=\"currentLanguageInfo.code==='en'\">Add value</button> \n <button mat-raised-button color=\"primary\" (click)=saveClicked() [disabled]=\"isSaveInProgress\">Save dictionary</button>\n</div>\n<span style=\"color: lightcoral;\">{{ saveProgressMessage }}</span>\n<div class=\"table-container\" *ngIf=\"currentLanguageInfo\">\n <table>\n <thead>\n <th>Key</th>\n <th>Value</th>\n </thead>\n <tbody>\n <tr *ngFor=\"let translationItem of currentLanguageInfo.translationItems | translationItemsfilter:searchFilter\">\n <td>\n <span *ngIf=\"!translationItem.isNew\">{{ translationItem.sourceText }}</span>\n <mat-form-field class=\"value-block\" *ngIf=\"translationItem.isNew\">\n <mat-label></mat-label>\n <input matInput placeholder=\"\" [(ngModel)]=\"translationItem.sourceText\"\n [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n </td>\n <td> \n <mat-form-field class=\"value-block\">\n <mat-label></mat-label>\n <input matInput placeholder=\"\" [(ngModel)]=\"translationItem.text\"\n [ngModelOptions]=\"{standalone: true}\" autocomplete=\"off\">\n </mat-form-field>\n </td>\n </tr>\n </tbody>\n </table>\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\nimport { HorizontalBarChartOptions, BarChartData, MaxValueStrategy } from '../../shared/components/bar-chart/bar-chart.model';\nimport { NumberFormat } from '../../shared/models/NumberFormat';\nimport { DateSelectorService } from '../date-selector/date-selector.service';\nimport { BaseComponent } from 'src/app/shared/components/base/base.component';\nimport { BuildingEventModalComponent } from '../building-event-modal/building-event-modal.component';\nimport { EVENT_SNAPSHOT_SERVICE, IEventSnapshotService } from 'src/app/services/interfaces/event-snapshot.interface';\nimport { EventsByType } from './building-event.model';\nimport { SelectedBuildingService } from '../../services/selected-building.service';\nimport { GoLiveDateStorage } from '../../services/go-live-date-storage.service';\nimport { SelectedClientService } from 'src/app/services/selected-client.service';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { GoLiveDateInfo } from 'src/app/shared/models/GoLiveDateInfo';\n\n@Component({\n selector: 'br-building-events',\n templateUrl: './building-events.component.html',\n styleUrls: ['./building-events.component.scss'],\n providers: [DateSelectorService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BuildingEventsComponent extends BaseComponent implements OnInit {\n\n @Output() \n public onRegetRequested = new EventEmitter<boolean>();\n\n public buildingEvents: EventsByType[] = [];\n\n public isEditMode: boolean = false;\n\n public eventsByTypeChartOptions: HorizontalBarChartOptions = {\n chartTitle: this.localizeText.transform('Event Volume by Building'),\n datasets: [\n {\n key: 'lb1',\n label: this.localizeText.transform('Events'),\n format: NumberFormat.shortNumberFormat,\n maxValueStrategy: MaxValueStrategy.maxDataset\n }\n ],\n barFunction: {\n clickableText: this.localizeText.transform('View Events'),\n clickFunction: (param) => this.openDetails(param)\n }\n };\n\n public eventsByTypeData!: BarChartData;\n public buildingGoLiveDate: Date;\n\n constructor(\n private readonly selectedBuildingService: SelectedBuildingService,\n private readonly dateFilterService: DateSelectorService,\n @Inject(EVENT_SNAPSHOT_SERVICE) private readonly eventSnapshotService: IEventSnapshotService,\n private readonly goLiveDateStorage: GoLiveDateStorage,\n private dialog: MatDialog,\n private selectedClientService: SelectedClientService,\n private changeDetectorRef: ChangeDetectorRef,\n private localizeText: LocalizeTextPipe\n ) {\n super();\n this.goLiveDateStorage.buildingGoLiveDate$;\n this.goLiveDateStorage.buildingGoLiveDate$.subscribe(p => {\n this.buildingGoLiveDate = p.electricityGoLiveDate;\n });\n }\n\n ngOnInit(): void { \n\n this.getEvents();\n\n this.selectedClientService.currentIsEditMode$.subscribe(isEditMode => {\n this.isEditMode = isEditMode;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n public openDetails(filter: string | null): void { \n const filteredData = filter != null ? this.buildingEvents.find(x => x.eventsType === filter) : { eventsType: '', events: []};\n if (filteredData !== undefined) {\n const eventsModal =this.dialog.open(BuildingEventModalComponent, {\n panelClass: 'app-full-bleed-dialog',\n width: '88.9vw',\n data: filteredData,\n maxWidth: '88.9vw',\n minHeight: '600px'\n });\n\n eventsModal.afterClosed().subscribe(result => {\n if (result === 'reget') {\n this.onRegetRequested.emit(true);\n this.getEvents();\n }\n });\n }\n }\n\n public getEvents(): void {\n this.addSubscription(\n combineLatest([\n this.selectedBuildingService.selectedBuildingId$,\n this.dateFilterService.dateRangeChanged$\n ]).pipe(\n switchMap(([buildingId, dateRange]) => this.eventSnapshotService.getBuildingEventVolumeByType(buildingId, dateRange))\n ).subscribe((data: EventsByType[]) => {\n this.buildingEvents = data;\n this.eventsByTypeData = {\n titles: this.buildingEvents.map(x => x.eventsType),\n values: {\n lb1: this.buildingEvents.map(x => x.events.length)\n }\n };\n\n this.changeDetectorRef.detectChanges();\n })\n );\n }\n}\n","<div class=\"component-title\">\n <div class=\"text-h3\">{{ 'Building Events by Type' | localizeText }}</div>\n <br-date-selector [goLiveDate]=\"buildingGoLiveDate\"></br-date-selector>\n</div>\n<div class=\"cards-container\">\n <br-card class=\"card\">\n <br-bar-chart [options]=\"eventsByTypeChartOptions\" [data]=\"eventsByTypeData\"></br-bar-chart>\n <!-- <a class=\"link\" (click)=\"openDetails(null)\" *ngIf=\"buildingEvents.length===0 && isEditMode\">{{ 'Add Events' | localizeText }}</a> -->\n </br-card> \n</div>\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { LoginComponent } from './authentication/login/login.component';\nimport { BuildingPageComponent } from './pages/building-page/building-page.component';\nimport { MainDashboardComponent } from './pages/main-dashboard/main-dashboard.component';\nimport { ClientSelectComponent } from './pages/client-select/client-select.component';\nimport { PageNotFoundComponent } from './pages/page-not-found/page-not-found.component';\nimport { BUILDING_ROUTE, CAMPUS_ROUTE, DASHBOARD_ROUTE, LOGIN_ROUTE, CLIENT_SELECT_ROUTE, NOT_FOUND_ROUTE, ADMIN_ROUTE } from './routing-const';\nimport { AuthGuard } from './shared/guards/auth.guard';\nimport { AdminComponent } from './pages/admin/admin.component';\nimport { CampusPageComponent } from './pages/campus-page/campus-page.component';\n\nconst routes: Routes = [\n { path: \"\", component: LoginComponent },\n { path: LOGIN_ROUTE, component: LoginComponent },\n { path: ADMIN_ROUTE, component: AdminComponent },\n { path: CLIENT_SELECT_ROUTE, component: ClientSelectComponent },\n {\n path: DASHBOARD_ROUTE,\n canActivate: [AuthGuard],\n children: [\n {\n path: ':clientId',\n children: [\n {\n path: '',\n component: MainDashboardComponent\n },\n {\n path: `${BUILDING_ROUTE}/:buildingId`,\n component: BuildingPageComponent\n },\n {\n path: `${CAMPUS_ROUTE}/:campusId`,\n component: CampusPageComponent\n }\n ]\n }\n ]\n },\n //!!todo { path: NOT_FOUND_ROUTE, component: PageNotFoundComponent },\n //!!todo { path: '**', redirectTo: NOT_FOUND_ROUTE }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { anchorScrolling: 'enabled', scrollPositionRestoration: 'enabled' })],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Injectable } from '@angular/core';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { DonutChartOptions } from '../../shared/components/donut-chart/donut-chart.component';\nimport { NumberFormat } from '../../shared/models/NumberFormat';\n\nexport class SavingsData {\n title = '';\n description = '';\n value?: number;\n additionalValue?: number;\n format?: NumberFormat;\n}\n\nexport class DetailsData {\n description = '';\n icon = '';\n value?: number;\n hideIfUndefined?: boolean;\n hide?: boolean;\n format?: NumberFormat;\n isGreen?: boolean = false;\n unitOfMeasure? = '';\n}\n\nexport interface IconDataAdaptive {\n name?: string;\n width?: string;\n height?: string;\n}\n\nexport interface IconData {\n name?: string;\n width?: number;\n height?: number;\n color?: string;\n}\n\nexport class ScoreData {\n title?: string;\n value?: number;\n chartOptions?: DonutChartOptions;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BuildingModel {\n\n constructor(private localizeText: LocalizeTextPipe) {\n }\n\n public rangeSavingsTitle = [\n this.localizeText.transform('Yesterday Savings'),\n this.localizeText.transform('Last 7 Day Savings'),\n this.localizeText.transform('Last 30 Day Savings'),\n this.localizeText.transform('Last 90 Day Savings'),\n this.localizeText.transform('Last 365 Day Savings'),\n this.localizeText.transform('\"Year to Date\" Savings'),\n this.localizeText.transform('Custom Range Savings')\n ];\n\n public rangeSavingsDescriptions = [\n this.localizeText.transform('Yesterday Savings'),\n this.localizeText.transform('Savings of This Week'),\n this.localizeText.transform('Savings of This Month'),\n this.localizeText.transform('Savings of This Quarter'),\n this.localizeText.transform('Savings of This Year'),\n this.localizeText.transform('\"Year to Date\" Savings'),\n this.localizeText.transform('Custom Range Savings')\n ];\n\n public defaultScoreData: Record<string, ScoreData> = {\n efficiencyScore: {\n title: this.localizeText.transform('Energy Efficiency Score'),\n chartOptions: {\n id: 'efficiencyScore',\n innerRadius: 100,\n outerRadius: 113,\n startAngle: Math.PI / 2,\n relativeSize: '15.7vw',\n cornerRadius: 10,\n arcColor: '#193769',\n innerColor: '#F6F8FD'\n }\n },\n starScore: {\n title: this.localizeText.transform('Energy Star Score'),\n chartOptions: {\n id: 'starScore',\n innerRadius: 100,\n outerRadius: 113,\n startAngle: Math.PI / 2,\n relativeSize: '15.7vw',\n cornerRadius: 10,\n arcColor: '#3EB049',\n innerColor: '#F6FDF9',\n icon: {\n name: 'star',\n width: '2vw',\n height: '2vw'\n }\n }\n }\n };\n\n public defaultSavingsData: Record<string, SavingsData> = {\n totalSavings: {\n title: this.localizeText.transform('Total Savings'),\n description: this.localizeText.transform('Savings of All Time'),\n format: NumberFormat.integerCurrencyFormat\n },\n rangeToDateSavings: {\n title: ' ' + this.localizeText.transform('Savings'),\n description: this.localizeText.transform('Savings of This Year'),\n format: NumberFormat.integerCurrencyFormat\n }\n };\n\n public defaultOverviewData: Record<string, DetailsData> = {\n buildingCount: {\n icon: 'building',\n description: this.localizeText.transform('Building Count'),\n isGreen: false,\n },\n totalBeds: {\n icon: 'bed',\n description: this.localizeText.transform('Total Beds'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat\n }, \n totalSquareFootage: {\n icon: 'ruler',\n description: this.localizeText.transform('Total sq. ft.'),\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n };\n\n public defaultDetailsData: Record<string, DetailsData> = {\n \n totalEnergySpend: {\n icon: 'lightbulb',\n description: this.localizeText.transform('Total Energy Spend'),\n format: NumberFormat.shortCurrencyFormat\n },\n electricityCost: {\n icon: 'plug',\n description: this.localizeText.transform('Electricity Spend'),\n format: NumberFormat.shortCurrencyFormat\n },\n naturalGasCost: {\n icon: 'fire-alt',\n description: this.localizeText.transform('Natural Gas Spend'),\n format: NumberFormat.shortCurrencyFormat\n },\n co2Emission: {\n icon: 'fire',\n description: this.localizeText.transform('lbs CO2 Emissions'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat\n }, \n waterSpend: {\n icon: 'water',\n description: this.localizeText.transform('Water Spend'),\n hideIfUndefined: true,\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n }, \n emptyBlock: {\n icon: '',\n description: '',\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n }, \n electricitySavings: {\n icon: 'plug',\n description: this.localizeText.transform('Electricity Savings'),\n format: NumberFormat.shortCurrencyFormat,\n isGreen: true,\n }, \n naturalGasSavings: {\n icon: 'fire-alt',\n description: this.localizeText.transform('Natural Gas Savings'),\n format: NumberFormat.shortCurrencyFormat,\n isGreen: true,\n }, \n co2Reduced: {\n icon: 'fire',\n description: this.localizeText.transform('lbs CO2 Reduced'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat\n }, \n waterUsage: {\n icon: 'water',\n description: this.localizeText.transform('Water Usage CCF'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n };\n\n public consumptionDefaultDetailsData: Record<string, DetailsData> = { \n emptyBlockA: {\n icon: '',\n description: '',\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n },\n electricConsumption: {\n icon: 'plug',\n description: this.localizeText.transform('Electric Consumption'),\n format: NumberFormat.shortNumberFormat,\n unitOfMeasure: ' (kWh)'\n },\n naturalGasConsumption: {\n icon: 'fire-alt',\n description: this.localizeText.transform('Natural Gas Consumption'),\n format: NumberFormat.shortNumberFormat\n },\n co2Emission: {\n icon: 'fire',\n description: this.localizeText.transform('lbs CO2 Emissions'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat\n }, \n emptyBlockH: {\n icon: '',\n description: '',\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n }, \n waterSpend: {\n icon: '',\n description: '',\n format: NumberFormat.shortCurrencyFormat,\n isGreen: false,\n }, \n electricSavingVolume: {\n icon: 'plug',\n description: this.localizeText.transform('Electric Savings'),\n unitOfMeasure: ' (kWh)',\n format: NumberFormat.shortNumberFormat,\n isGreen: true,\n }, \n naturalGasSavings: {\n icon: 'fire-alt',\n description: this.localizeText.transform('Natural Gas Savings'),\n format: NumberFormat.shortNumberFormat,\n isGreen: true,\n }, \n co2Reduced: {\n icon: 'fire',\n description: this.localizeText.transform('lbs CO2 Reduced'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat\n }, \n waterUsage: {\n icon: 'water',\n description: this.localizeText.transform('Water Usage CCF'),\n hideIfUndefined: true,\n format: NumberFormat.shortNumberFormat,\n isGreen: false,\n }, \n };\n}\n","import { Injectable } from '@angular/core';\nimport { DateRange } from '@angular/material/datepicker';\nimport { Observable, of } from 'rxjs';\nimport { BuildingContact, BuildingInfo, BuildingInfoAdditional } from 'src/app/models/BuildingInfo';\nimport { SaveEquipmentResult } from 'src/app/models/EquipmentsEvents';\nimport { PrimaryFunction } from 'src/app/models/FacilityBenchmarkData';\nimport { IBuildingSummaryService } from '../interfaces/building-summary.interface';\n\n@Injectable()\nexport class BuildingSummaryStubService implements IBuildingSummaryService {\n getCampusSummaryAdditional(campusId: number, dateRange: DateRange<Date>): Observable<BuildingInfoAdditional> {\n throw new Error('Method not implemented.');\n }\n getBuildingContacts(buildingId: number): Observable<BuildingContact[]> {\n throw new Error('Method not implemented.');\n }\n saveBuildingContact(buildingId: number, buildingContact: BuildingContact): Observable<SaveEquipmentResult> {\n throw new Error('Method not implemented.');\n }\n deleteBuildingContact(buildingId: number, buildingContact: BuildingContact): Observable<SaveEquipmentResult> {\n throw new Error('Method not implemented.');\n }\n getPrimaryFunction(buildingId: number): Observable<PrimaryFunction> {\n throw new Error('Method not implemented.');\n }\n getPrimaryFunctions(): Observable<PrimaryFunction[]> {\n throw new Error('Method not implemented.');\n }\n savePrimaryFunction(buildingId: number, primaryFunctionId: number): Observable<SaveEquipmentResult> {\n throw new Error('Method not implemented.');\n }\n getBuildingTags(buildingId: number): Observable<string[]> {\n throw new Error('Method not implemented.');\n }\n saveBuildingTags(buildingId: number, tags: string[]): Observable<SaveEquipmentResult> {\n throw new Error('Method not implemented.');\n }\n\n public getBuildingSummary(): Observable<BuildingInfo> {\n return of({\n buildingName: 'Citizens Baptist Medical Center Central',\n temperature: 55,\n rangeNaturalGasSavings: 3313,\n rangeElectricitySavings: 10382,\n electricityDynamics: 'increased',\n gasDynamics: 'decreased',\n totalSavings: 18231,\n eui: 102,\n electricityCostPercent: 76,\n totalSquareFootage: 232545,\n totalEnergySpend: 43654,\n naturalGasCostPercent: 24,\n goLiveDate: new Date(2020, 12, 12)\n } as BuildingInfo);\n }\n\n public getBuildingSummaryAdditional(): Observable<BuildingInfoAdditional> {\n return of({\n energyEfficiencyScore: 65,\n energyStarScore: 84,\n } as BuildingInfoAdditional);\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { combineLatest, Observable } from 'rxjs';\nimport { BaseComponent } from 'src/app/shared/components/base/base.component';\nimport { NumberFormat } from 'src/app/shared/models/NumberFormat';\nimport { BuildingsModel } from '../building-spreadsheet/building-spreadsheet.model';\nimport { DateSelectorService } from '../date-selector/date-selector.service';\nimport { BuildingModel, DetailsData } from './building-info.model';\nimport { BuildingInfo, BuildingInfoAdditional } from '../../models/BuildingInfo';\nimport { switchMap } from 'rxjs/operators';\nimport { BUILDING_SUMMARY_SERVICE, IBuildingSummaryService } from 'src/app/services/interfaces/building-summary.interface';\nimport { SelectedBuildingService } from '../../services/selected-building.service';\nimport { GoLiveDateStorage } from '../../services/go-live-date-storage.service';\nimport { TokenProviderService } from 'src/app/shared/services/token-provider.service';\nimport { environment } from '../../../environments/environment';\nimport { DateRange } from '@angular/material/datepicker';\nimport { LocalizeTextPipe } from 'src/app/shared/pipes/localize-text.pipe';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n selector: 'br-building-info',\n templateUrl: './building-info.component.html',\n styleUrls: ['./building-info.component.scss', './building-info-secondary.component.scss'],\n providers: [BuildingModel, BuildingsModel, DateSelectorService],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BuildingInfoComponent extends BaseComponent implements OnInit {\n\n @Input()\n public isSpendView = true;\n public ROWS_COUNT = 2;\n\n public columnsCount = 5;\n public qmetDashboardLink = environment.qmetDashboardLink;\n public format = NumberFormat;\n public blocks = this.parentModel.defaultInfoBlockData;\n public scoreData = this.model.defaultScoreData;\n public savingsData = this.model.defaultSavingsData;\n public overviewData = this.model.defaultOverviewData;\n public detailsData = this.model.defaultDetailsData;\n public consumptionDetailsData = this.model.consumptionDefaultDetailsData;\n public rangeSavingsTitle = this.model.rangeSavingsTitle;\n public rangeSavingsDescriptions = this.model.rangeSavingsDescriptions;\n public arrowType = this.parentModel.arrowType;\n public info!: BuildingInfo;\n public savingsTitle = '';\n public temperature = 0;\n public buildingName = '';\n public meterNames = '';\n public buildingGoLiveDate$ = this.goLiveDateStorage.buildingGoLiveDate$;\n public electricityBuildingGoLiveDate: Date;\n public electricityBuildingGoLiveDateString: string;\n public gasBuildingGoLiveDateString: string;\n\n constructor(\n private tokenProvider: TokenProviderService,\n private readonly model: BuildingModel,\n private readonly parentModel: BuildingsModel,\n private readonly selectedBuildingService: SelectedBuildingService, \n private readonly dateFilterService: DateSelectorService,\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(BUILDING_SUMMARY_SERVICE) private readonly buildingSummaryService: IBuildingSummaryService,\n private readonly goLiveDateStorage: GoLiveDateStorage,\n private activateRoute: ActivatedRoute,\n private router: Router,\n private localizeText: LocalizeTextPipe,\n private datePipe: DatePipe) {\n super();\n }\n\n private buildingInfo: BuildingInfo | null = null;\n private dateRange: DateRange<Date> | null = null;\n\n ngOnInit(): void {\n this.addSubscription(\n combineLatest([\n this.selectedBuildingService.selectedBuildingId$,\n this.dateFilterService.dateRangeChanged$\n ]).pipe(\n switchMap(([buildingId, dateRange]) => { this.dateRange = dateRange; return this.buildingSummaryService.getBuildingSummary(buildingId, dateRange);})\n ).subscribe((data: BuildingInfo) => {\n this.buildingInfo = data;\n this.temperature = data.temperature;\n this.buildingName = data.buildingName;\n this.meterNames = `(${data.meterNames.join(', ')})`;\n this.setSavingsValues(data);\n this.setBlockData(data);\n this.setDetailsValues(data);\n this.columnsCount = this.getColumsCount();\n this.changeDetectorRef.detectChanges();\n })\n );\n\n this.addSubscription(\n combineLatest([\n this.selectedBuildingService.selectedBuildingId$,\n this.dateFilterService.dateRangeChanged$\n ]).pipe(\n switchMap(([buildingId, dateRange]) => { this.dateRange = dateRange; return this.buildingSummaryService.getBuildingSummaryAdditional(buildingId, dateRange);})\n ).subscribe((data: BuildingInfoAdditional) => {\n this.setScoreValues(data);\n this.changeDetectorRef.detectChanges();\n })\n );\n\n this.addSubscription(\n this.dateFilterService.selectedIndexChanged$.subscribe(index => {\n this.savingsTitle = this.parentModel.rangeSavingsTitleShort[index];\n this.savingsData.rangeToDateSavings.title = this.rangeSavingsTitle[index];\n this.savingsData.rangeToDateSavings.description = this.rangeSavingsDescriptions[index];\n })\n );\n\n this.buildingGoLiveDate$.subscribe(d=>{\n this.electricityBuildingGoLiveDate=d.electricityGoLiveDate;\n this.electricityBuildingGoLiveDateString=d.electricityGoLiveDate ? this.datePipe.transform(d.electricityGoLiveDate,\"MM/dd/yyyy\") : '';\n this.gasBuildingGoLiveDateString=d.gasGoLiveDate ? this.datePipe.transform(d.gasGoLiveDate,\"MM/dd/yyyy\") : '';\n });\n }\n\n private getColumsCount(): number {\n const itemsCount = this.getDetailsVisibleItemsCount();\n return Math.ceil(itemsCount / this.ROWS_COUNT);\n }\n\n private getDetailsVisibleItemsCount(): number {\n return Object.keys(this.detailsData)\n .map(key => this.detailsData[key])\n .filter(data => this.isDetailsItemVisible(data)).length;\n }\n\n public isDetailsItemVisible(data: DetailsData): boolean { \n if (data.description === this.localizeText.transform('Total Beds') && data.value === 0){\n return false;\n }\n return !(data.value === undefined && data.hideIfUndefined) && !data.hide;\n }\n\n public localize(inText: string): string {\n return this.localizeText.transform(inText);\n }\n\n private setBlockData(data: BuildingInfo): void {\n this.blocks.electricitySavings.value = data.rangeElectricitySavings;\n this.blocks.electricitySavings.arrow = this.arrowType[data.electricityDynamics];\n this.blocks.gasSavings.value = data.rangeNaturalGasSavings;\n this.blocks.gasSavings.arrow = this.arrowType[data.gasDynamics];\n this.blocks.savings.value = data.rangeSavings;\n }\n\n private setSavingsValues(data: BuildingInfo): void {\n this.savingsData.rangeToDateSavings.value = data.rangeSavings;\n this.savingsData.rangeToDateSavings.additionalValue = Math.round((data.rangeSavings / data.totalEnergySpend * 100) * 100) / 100;\n this.savingsData.totalSavings.value = data.totalSavings;\n }\n\n private setScoreValues(data: BuildingInfoAdditional): void {\n this.scoreData.efficiencyScore.value = data.energyEfficiencyScore;\n this.scoreData.starScore.value = data.energyStarScore;\n }\n\n private setDetailsValues(data: BuildingInfo): void {\n //this.detailsData.eui.value = data.eui;\n this.overviewData.buildingCount.value = 1;\n //this.detailsData.savings.value = data.totalSavings;\n this.detailsData.electricityCost.value = data.electricityCost;\n this.detailsData.electricityCost.hide = !data.hasElectricity;\n this.detailsData.electricitySavings.value = data.rangeElectricitySavings;\n this.detailsData.electricitySavings.hide = !data.hasElectricity;\n this.overviewData.totalSquareFootage.value = data.totalSquareFootage;\n this.detailsData.totalEnergySpend.value = data.totalEnergySpend;\n this.detailsData.naturalGasCost.value = data.naturalGasCost;\n this.detailsData.naturalGasCost.hide = !data.hasGas;\n this.detailsData.naturalGasSavings.value = data.rangeNaturalGasSavings;\n this.detailsData.naturalGasSavings.hide = !data.hasGas;\n this.overviewData.totalBeds.value = data.bedsCount;\n this.detailsData.co2Emission.value = data.carbonEmission;\n this.detailsData.co2Reduced.value = data.carbonReduced; \n this.detailsData.waterSpend.value = data.waterCost;\n this.detailsData.waterSpend.hide = !data.hasWater;\n this.detailsData.waterUsage.value = data.rangeWaterSpent;\n this.detailsData.waterUsage.hide = !data.hasWater;\n\n this.consumptionDetailsData.electricConsumption.value = data.electricConsumption;\n this.consumptionDetailsData.electricConsumption.hide = !data.hasElectricity;\n this.consumptionDetailsData.electricSavingVolume.value = data.electricSavingVolume;\n this.consumptionDetailsData.electricSavingVolume.hide = !data.hasElectricity;\n this.consumptionDetailsData.naturalGasConsumption.value = data.gasConsumption;\n this.consumptionDetailsData.naturalGasConsumption.unitOfMeasure = data.gasMeasure && data.gasMeasure !='' ? ` (${data.gasMeasure})` : \"\";\n this.consumptionDetailsData.naturalGasConsumption.hide = !data.hasGas;\n this.consumptionDetailsData.naturalGasSavings.value = data.gasSavingsVolume;\n this.consumptionDetailsData.naturalGasSavings.unitOfMeasure = data.gasMeasure && data.gasMeasure !='' ? ` (${data.gasMeasure})` : \"\";\n this.consumptionDetailsData.naturalGasSavings.hide = !data.hasGas;\n this.consumptionDetailsData.co2Emission.value = data.carbonEmission;\n this.consumptionDetailsData.co2Reduced.value = data.carbonReduced;\n this.consumptionDetailsData.waterSpend.hide = !data.hasWater;\n this.consumptionDetailsData.waterUsage.value = data.rangeWaterSpent;\n this.consumptionDetailsData.waterUsage.hide = !data.hasWater;\n }\n\n public backToOverview(): void {\n this.router.navigate(['../../'], { relativeTo: this.activateRoute });\n }\n\n public openQmet(energyType: number): void {\n // let authCookie = 'auth=' + this.tokenProvider.getToken();\n // document.cookie = authCookie;\n\n let targetLink = this.qmetDashboardLink;\n\n if (this.buildingInfo){\n\n let clientId = this.buildingInfo.clientId;\n let buildingId = this.buildingInfo.id; \n let startDate = this.getDateString(this.dateRange?.start);\n let endDate = this.getDateString(this.dateRange?.end);\n console.log(startDate);\n let payloadLink = \"?clientId=\" + clientId + '&buildingId=' + buildingId + '&energyType=' + energyType + '&start=' + startDate + '&end=' + endDate;\n targetLink += payloadLink;\n }\n\n let authParam = (this.buildingInfo ? '&' : '?') + 'key=' + this.tokenProvider.getToken();\n targetLink += authParam;\n \n window.open(targetLink);\n }\n\n private getDateString(data: Date | null | undefined): string {\n if (!data){\n data = new Date();\n }\n\n let year = data.getFullYear();\n let month = data.getMonth() + 1;\n let day = data.getDate();\n\n return month + \"/\" + day + \"/\" + year;\n }\n}\n","<div class=\"buttons-container\"> \n <div class=\"text-h3 component-title__text\">{{ 'Overview' | localizeText }}</div>\n <div>\n <div class=\"overview-info\" *ngFor=\"let data of overviewData | mapToIterable: 'value'\">\n <div><span class=\"value text-h3 icon-text-print overview-info-header\">{{ data.value | valueFormat: data.format }}</span></div>\n <span class=\"description text-sm\">{{ data.description }}</span>\n </div>\n </div>\n <br-date-selector [goLiveDate]=\"electricityBuildingGoLiveDate\"></br-date-selector>\n</div>\n<br-card class=\"title-block\">\n <div class=\"title-block__top\">\n <div class=\"text-m-semibold building-name\">{{ buildingName }} {{meterNames}}</div> \n <div class=\"info-block text-sm-semibold temperature-block\">\n <br-svg-icon name=\"thermometer-half\" [width]=\"6\" [height]=\"12\" [color]=\"'white'\" class=\"icon\"></br-svg-icon>\n {{ temperature | valueFormat: format.temperatureFormat }}\n </div>\n <button class=\"custom-btn btn-hollow text-st-semibold\" (click)=\"backToOverview()\">{{ 'Back to Overview' | localizeText }}</button> \n </div> \n</br-card>\n<div class=\"cards-container\">\n <br-card *ngFor=\"let data of savingsData | mapToIterable: 'value'\" class=\"saving-card\"\n [title]=\"data.title\" [description]=\"\">\n <div class=\"pie-chart-container\"> \n <div *ngIf=\"data.additionalValue == null\" class=\"pie-chart circle circle-box-shadow text-h3\">{{ data.value | valueFormat: data.format }}</div>\n <div *ngIf=\"data.additionalValue != null\">\n <div class=\"pie-chart circle circle-box-shadow text-h3\">\n <span>{{ data.value | valueFormat: data.format }}<br><span style=\"font-size: 18px;\">({{ data.additionalValue }} %)</span></span>\n </div> \n </div>\n </div>\n </br-card>\n <br-card class=\"details-container\" *ngIf=\"isSpendView\">\n <ng-container *ngFor=\"let data of detailsData | mapToIterable: 'value'\">\n <div *ngIf=\"isDetailsItemVisible(data)\" class=\"details-item col-{{columnsCount}}\">\n <div *ngIf=\"data.description !==''\">\n <div class=\"{{data.isGreen ? 'icon-container-green' : 'icon-container-blue'}} icon-container circle circle-box-shadow\">\n <br-svg-icon [name]=\"data.icon\"></br-svg-icon>\n </div>\n <span class=\"value text-h3 icon-text-print\">{{ data.value | valueFormat: data.format }}</span>\n <span class=\"description text-sm\">{{ data.description }}</span>\n </div>\n </div>\n <!-- <div *ngIf=\"!isDetailsItemVisible(data)\" class=\"details-item col-{{columnsCount}}\"></div> -->\n </ng-container>\n </br-card>\n <br-card class=\"details-container\" *ngIf=\"!isSpendView\">\n <ng-container *ngFor=\"let data of consumptionDetailsData | mapToIterable: 'value'\">\n <div *ngIf=\"isDetailsItemVisible(data)\" class=\"details-item col-{{columnsCount}}\">\n <div *ngIf=\"data.description !==''\">\n <div class=\"{{data.isGreen ? 'icon-container-green' : 'icon-container-blue'}} icon-container circle circle-box-shadow\">\n <br-svg-icon [name]=\"data.icon\"></br-svg-icon>\n </div>\n <span class=\"value text-h3 icon-text-print\">{{ data.value | valueFormat: data.format }}</span>\n <span class=\"description text-sm\">{{ data.description }}{{data.unitOfMeasure}}</span>\n </div>\n </div>\n <!-- <div *ngIf=\"!isDetailsItemVisible(data)\" class=\"details-item col-{{columnsCount}}\"></div> -->\n </ng-container>\n </br-card>\n</div>\n<span class=\"launch-date\">ELECTRIC Launch date: {{ electricityBuildingGoLiveDateString }}</span>\n<span class=\"launch-date\">GAS Launch date: {{ gasBuildingGoLiveDateString }}</span>\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChange, TemplateRef } from '@angular/core';\nimport { Dictionary } from 'lodash';\nimport { LocalizeTextPipe } from '../../pipes/localize-text.pipe';\nimport { BaseComponent } from '../base/base.component';\nimport { HorizontalBarChartOptions, BarChartData, DatasetData, MaxValueStrategy, DEFAULT_COLORS } from './bar-chart.model';\n\n@Component({\n selector: 'br-bar-chart',\n templateUrl: './bar-chart.component.html',\n styleUrls: ['./bar-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BarChartComponent implements OnChanges {\n\n @Input()\n public options!: HorizontalBarChartOptions;\n\n @Input()\n public data: BarChartData | null = null;\n\n @Input()\n public bluredTitleTemplateRef: TemplateRef<any> | undefined = undefined;\n\n public visibleDatasets: DatasetData[] = [];\n public hiddenDatasets: DatasetData[] = [];\n public barRatesByKey: Dictionary<number[]> = {};\n public colorsByKey: Dictionary<string> = {};\n public readonly defaultRateForBluredBars = 0.5;\n\n constructor(private localizeText: LocalizeTextPipe) {\n }\n\n ngOnChanges(changes: { [key: string]: SimpleChange }): void {\n if (changes.data || changes.options) {\n if (!!this.data && !!this.options) {\n this.initChart(this.data as BarChartData, this.options);\n }\n }\n }\n\n public localize(inText: string): string {\n return this.localizeText.transform(inText);\n }\n\n private initChart(data: BarChartData, options: HorizontalBarChartOptions): void {\n const visibleBarsCount = this.getVisibleBarsCount(data);\n this.visibleDatasets = options.datasets.slice(0, visibleBarsCount);\n this.hiddenDatasets = options.datasets.slice(visibleBarsCount);\n this.colorsByKey = this.getColorsDictionary(options.datasets);\n this.barRatesByKey = this.calculateBarsRate(this.visibleDatasets, data);\n }\n\n private getColorsDictionary(datasets: DatasetData[]): Dictionary<string> {\n let defaultColorIndex = 0;\n const colorsByKey: Dictionary<string> = {};\n datasets.forEach((dataset) => {\n if (!!dataset.barColor) {\n colorsByKey[dataset.key] = dataset.barColor;\n return;\n }\n colorsByKey[dataset.key] = DEFAULT_COLORS[defaultColorIndex];\n defaultColorIndex++;\n });\n return colorsByKey;\n }\n\n private calculateBarsRate(datasets: DatasetData[], data: BarChartData): Dictionary<number[]> {\n const rates: Dictionary<number[]> = {};\n const maxValues = new Map(datasets.map(ds => [ds.key, Math.max(...data.values[ds.key])]));\n const maxAllValue = Math.max(...maxValues.values());\n datasets.forEach(dataset => {\n const maxValue = this.getMaxValueDependsOnStrategy(dataset, maxValues, maxAllValue);\n rates[dataset.key] = this.getBarsRate(dataset, data, maxValue);\n });\n return rates;\n }\n\n private getBarsRate(dataset: DatasetData, data: BarChartData, maxValue: number): number[] {\n const values = data.values[dataset.key];\n return values.map(value => !!maxValue ? value / maxValue : 0);\n }\n\n private getVisibleBarsCount(data: BarChartData): number {\n const hiddenBarsCount = this.getHiddenBarsCount(data);\n return this.options.datasets.length - hiddenBarsCount;\n }\n\n private getHiddenBarsCount(data: BarChartData): number {\n return Math.min(this.options.datasets.length, data?.bluredBarsCount ?? 0);\n }\n\n private getMaxValueDependsOnStrategy(dataset: DatasetData, maxValues: Map<string, number>, maxAllValue: number): number {\n switch (dataset.maxValueStrategy) {\n case MaxValueStrategy.percentsMax:\n return 100;\n case MaxValueStrategy.maxDataset:\n return maxValues.get(dataset.key) ?? maxAllValue;\n case MaxValueStrategy.maxAll:\n return maxAllValue;\n default:\n return dataset.maxValue ?? maxValues.get(dataset.key) ?? maxAllValue;\n }\n }\n}\n","<ng-container *ngIf=\"!!options && !!data\">\n <div class=\"chart-header\">\n <span class=\"chart-header__title text-m-semibold\" *ngIf=\"options.chartTitle\">{{ options.chartTitle }}</span>\n <ng-container *ngIf=\"!options.showLegendInDataset\">\n <ng-container *ngTemplateOutlet=\"chartLegend\"></ng-container>\n </ng-container>\n </div>\n <div class=\"chart-description text-st-semibold\" *ngIf=\"options.description\">{{ options.description }}</div>\n <div class=\"chart-body\" [style.max-height.px]=\"options.maxHeight\">\n\t<p class=\"text-st-semibold\" *ngIf=\"data.titles.length === 0\" >{{ localize('No data') }}</p>\n <div *ngFor=\"let title of data.titles; index as i\" class=\"group-container\">\n <div class=\"group-container__title\">\n <span class=\"text-st-semibold\">{{ title }}</span>\n <button *ngIf=\"!!options.barFunction\" class=\"link text-st\"\n (click)=\"options.barFunction.clickFunction(title)\">{{ options.barFunction.clickableText }}</button>\n <ng-container *ngIf=\"options.showLegendInDataset\">\n <ng-container *ngTemplateOutlet=\"chartLegend\"></ng-container>\n </ng-container>\n </div>\n <div class=\"bars-container\">\n <ng-container *ngFor=\"let dataset of visibleDatasets\">\n <ng-container *ngTemplateOutlet=\"barContainer;\n context:{ group: dataset, index: i, color: colorsByKey[dataset.key], rate: barRatesByKey[dataset.key][i] }\">\n </ng-container>\n </ng-container>\n <div class=\"bars-container__blured\" *ngIf=\"!!hiddenDatasets?.length\">\n <div class=\"blured-title\" *ngIf=\"!!bluredTitleTemplateRef\">\n <ng-container *ngTemplateOutlet=\"bluredTitleTemplateRef\"></ng-container>\n </div>\n <ng-container *ngFor=\"let dataset of hiddenDatasets\">\n <ng-container *ngTemplateOutlet=\"barContainer;\n context:{ index: i, color: colorsByKey[dataset.key], blured: true, rate: defaultRateForBluredBars }\">\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <ng-template #barContainer let-group=\"group\" let-index=\"index\" let-color=\"color\" let-blured=\"blured\" let-rate=\"rate\">\n <div class=\"bar-container\">\n <div class=\"bar\"\n [style.width]=\"'calc((100% - 78px) * ' + rate + ')'\"\n [class.compact]=\"options.datasets.length > 1\"\n [style.background]=\"color\"></div>\n <span class=\"bar-value text-st-semibold\">{{ !!blured ? '--' : (data.values[group.key][index] | valueFormat:group.format) }}</span>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #chartLegend>\n <div class=\"legend\">\n <div class=\"legend-item\" *ngFor=\"let dataset of options.datasets; index as i\">\n <div class=\"circle\" [style.background]=\"colorsByKey[dataset.key]\"></div>\n <span class=\"legend-item__label text-st-semibold\">{{ dataset.label }}</span>\n </div>\n </div>\n</ng-template>\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { switchMap } from 'rxjs/operators';\nimport { AirHandlersEvents, BasControlsEvents, BoilerEvents, BuildingEnergyUses, ChillerEvents, CoolingTowersEvents,\n EquipmentType,\n HotWaterConvertersEvents, MriEvents, WishListItem } from '../../models/EquipmentsEvents';\nimport { BuildingAssetListService } from '../../services/real-services/building-asset-list.service';\nimport { SelectedBuildingService } from '../../services/selected-building.service';\nimport { BaseComponent } from '../../shared/components/base/base.component';\nimport { AssetListModel } from './building-asset-list.model';\n\n@Component({\n selector: 'br-building-asset-list',\n templateUrl: './building-asset-list.component.html',\n styleUrls: ['./building-asset-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BuildingAssetListComponent extends BaseComponent implements OnInit {\n\n @Output() \n public onRegetRequested = new EventEmitter<boolean>();\n\n public chillersList: ChillerEvents[] = [];\n public boilersList: BoilerEvents[] = [];\n public coolingTowersList: CoolingTowersEvents[] = [];\n public airHandlersList: AirHandlersEvents[] = [];\n public hwConvertersList: HotWaterConvertersEvents[] = [];\n public basControlsList: BasControlsEvents[] = [];\n public wishListItems: WishListItem[] = [];\n public mriList: MriEvents[] = [];\n public buildingEnergyUses: BuildingEnergyUses | null = null;\n\n public get equipmentType(): typeof EquipmentType {\n return EquipmentType; \n }\n\n constructor(\n public readonly selectedBuildingService: SelectedBuildingService,\n public readonly assetListModel: AssetListModel,\n private readonly assetListService: BuildingAssetListService,\n private readonly changeDetectionRef: ChangeDetectorRef) {\n super();\n }\n\n public ngOnInit(): void {\n this.getEquipmentInfo();\n }\n\n public regetRequested(): void {\n this.getEquipmentInfo();\n this.onRegetRequested.emit(true);\n }\n\n public getEquipmentInfo(): void {\n this.addSubscription(\n this.selectedBuildingService.selectedBuildingId$.pipe(\n switchMap(buildingId => this.assetListService.getEquipmentsEvents(buildingId)),\n ).subscribe(events => {\n this.chillersList = events.chillers;\n this.boilersList = events.boilers;\n this.coolingTowersList = events.coolingTowers;\n this.airHandlersList = events.airHandlers;\n this.hwConvertersList = events.hwConverters;\n this.basControlsList = events.controls;\n this.mriList = events.mriItems;\n this.wishListItems = events.wishListItems;\n this.buildingEnergyUses = events.buildingEnergyUses;\n this.changeDetectionRef.detectChanges();\n })\n );\n }\n}\n","<div class=\"text-h3 component-title\">{{ 'Building Asset List' | localizeText }}</div>\n<br-building-asset equipmentName=\"{{ 'Chillers' | localizeText }}\"\n equipmentType=\"{{equipmentType.Chiller}}\"\n [equimpmentsList]=\"chillersList\"\n [gridOptions]=\"assetListModel.chillersGridOptions\"\n (onRegetRequested)=\"regetRequested()\">\n</br-building-asset>\n<br-building-asset equipmentName=\"{{ 'Boilers' | localizeText }}\"\n equipmentType=\"{{equipmentType.Boiler}}\"\n [equimpmentsList]=\"boilersList\"\n [gridOptions]=\"assetListModel.boilersGridOptions\"\n (onRegetRequested)=\"regetRequested()\">\n</br-building-asset>\n<br-building-asset equipmentName=\"{{ 'Cooling Towers' | localizeText }}\"\n equipmentType=\"{{equipmentType.CoolingTower}}\"\n [equimpmentsList]=\"coolingTowersList\"\n [gridOptions]=\"assetListModel.coolingTowersGridOptions\"\n (onRegetRequested)=\"regetRequested()\">\n</br-building-asset>\n<br-building-asset equipmentName=\"{{ 'Air Handlers' | localizeText }}\"\n equipmentType=\"{{equipmentType.AirHandler}}\"\n [equimpmentsList]=\"airHandlersList\"\n [gridOptions]=\"assetListModel.airHandlersGridOptions\"\n (onRegetRequested)=\"regetRequested()\">\n</br-building-asset>\n<!-- <br-building-asset equipmentName=\"{{ 'Hot Water Converters' | localizeText }}\"\n equipmentType=\"{{equipmentType.HWConverter}}\"\n [equimpmentsList]=\"hwConvertersList\"\n [gridOptions]=\"assetListModel.hwConvertersGridOptions\"\n (onRegetRequested)=\"regetRequested()\">\n</br-building-asset> -->\n<br-building-asset equipmentName=\"{{ 'BAS' | localizeText }}\"\n equipmentType=\"{{equipmentType.BASControl}}\"\n [equimpmentsList]=\"basControlsList\"\n [gridOptions]=\"assetListModel.basControlsGridOptions\"\n (onRegetRequested)=\"regetRequested()\">\n</br-building-asset>\n<br-building-asset equipmentName=\"{{ 'Other Assets' | localizeText }}\"\n equipmentType=\"{{equipmentType.MRI}}\"\n [equimpmentsList]=\"mriList\"\n [gridOptions]=\"assetListModel.mriGridOptions\"\n (onRegetRequested)=\"regetRequested()\">\n</br-building-asset>\n<!-- <br-building-asset equipmentName=\"{{ 'Building Energy Uses' | localizeText }}\"\n equipmentType=\"{{equipmentType.BuildingEnergyUses}}\"\n [equimpmentsList]=\"buildingEnergyUses?.items || []\"\n [assetListInfo]=\"buildingEnergyUses?.description\"\n [gridOptions]=\"assetListModel.energyUsesGridOptions\"\n [chillers]=\"chillersList\"\n [boilers]=\"boilersList\"\n (onRegetRequested)=\"regetRequested()\">\n</br-building-asset> -->\n<br-building-asset equipmentName=\"{{ 'Wish List' | localizeText }}\"\n equipmentType=\"{{equipmentType.WishList}}\"\n [equimpmentsList]=\"wishListItems\"\n [gridOptions]=\"assetListModel.wishListGridOptions\"\n (onRegetRequested)=\"regetRequested()\">\n</br-building-asset>\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"],"sourceRoot":"webpack:///"}