{"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:///"}