diff --git a/src/app/core-components/navbar/navbar.component.html b/src/app/core-components/navbar/navbar.component.html
index 27be34bb..3943af3c 100644
--- a/src/app/core-components/navbar/navbar.component.html
+++ b/src/app/core-components/navbar/navbar.component.html
@@ -39,8 +39,8 @@
diff --git a/src/app/core-components/setup-wizard-modal/setup-wizard-modal.component.html b/src/app/core-components/setup-wizard-modal/setup-wizard-modal.component.html
index 7f20e203..a714fd39 100644
--- a/src/app/core-components/setup-wizard-modal/setup-wizard-modal.component.html
+++ b/src/app/core-components/setup-wizard-modal/setup-wizard-modal.component.html
@@ -75,7 +75,7 @@
\ No newline at end of file
diff --git a/src/app/core-components/welcome/welcome.component.html b/src/app/core-components/welcome/welcome.component.html
index e5560afb..12948101 100644
--- a/src/app/core-components/welcome/welcome.component.html
+++ b/src/app/core-components/welcome/welcome.component.html
@@ -7,7 +7,8 @@
Welcome to JUSTIFI!
- Use this tool to identify, estimate potential and report on non-energy benefits (NEBs) that can be
+ Use this tool to identify, estimate potential and report on non-energy benefits (NEBs) that can
+ be
found while conducting energy assessments.
@@ -123,6 +124,20 @@
Non-Energy Benefits Resources
+
+
+
+ Cocoa Co. Example Data
+
+
+ Click the above link to add an example company to your portfolio. This will allow
+ you to view a completed example visit of a fictional chocolate company's
+ candy bar facility.
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/core-components/welcome/welcome.component.spec.ts b/src/app/core-components/welcome/welcome.component.spec.ts
index 24813322..5fca5972 100644
--- a/src/app/core-components/welcome/welcome.component.spec.ts
+++ b/src/app/core-components/welcome/welcome.component.spec.ts
@@ -11,6 +11,17 @@ import { SharedDataService } from 'src/app/shared/shared-services/shared-data.se
import { OnSiteVisitIdbService } from 'src/app/indexed-db/on-site-visit-idb.service';
import { FacilityIdbService } from 'src/app/indexed-db/facility-idb.service';
import { CompanyIdbService } from 'src/app/indexed-db/company-idb.service';
+import { BackupDataService } from 'src/app/shared/shared-services/backup-data.service';
+import { ToastNotificationsService } from '../toast-notifications/toast-notifications.service';
+import { LoadingService } from '../loading/loading.service';
+import { EnergyOpportunityIdbService } from 'src/app/indexed-db/energy-opportunity-idb.service';
+import { AssessmentIdbService } from 'src/app/indexed-db/assessment-idb.service';
+import { ContactIdbService } from 'src/app/indexed-db/contact-idb.service';
+import { NonEnergyBenefitsIdbService } from 'src/app/indexed-db/non-energy-benefits-idb.service';
+import { KeyPerformanceIndicatorsIdbService } from 'src/app/indexed-db/key-performance-indicators-idb.service';
+import { EnergyEquipmentIdbService } from 'src/app/indexed-db/energy-equipment-idb.service';
+import { ProcessEquipmentIdbService } from 'src/app/indexed-db/process-equipment-idb.service';
+import { KeyPerformanceMetricImpactsIdbService } from 'src/app/indexed-db/key-performance-metric-impacts-idb.service';
describe('WelcomeComponent', () => {
let component: WelcomeComponent;
@@ -40,6 +51,17 @@ describe('WelcomeComponent', () => {
{ provide: OnSiteVisitIdbService, useValue: onSiteVisitIdbService },
{ provide: FacilityIdbService, useValue: facilityIdbService },
{ provide: CompanyIdbService, useValue: companyIdbService },
+ { provide: BackupDataService, useValue: {}},
+ { provide: ToastNotificationsService, useValue: {}},
+ { provide: LoadingService, useValue: {}},
+ { provide: EnergyOpportunityIdbService, useValue: {}},
+ { provide: AssessmentIdbService, useValue: {}},
+ { provide: ContactIdbService, useValue: {}},
+ { provide: NonEnergyBenefitsIdbService, useValue: {}},
+ { provide: KeyPerformanceIndicatorsIdbService, useValue: {}},
+ { provide: EnergyEquipmentIdbService, useValue: {}},
+ { provide: ProcessEquipmentIdbService, useValue: {}},
+ { provide: KeyPerformanceMetricImpactsIdbService, useValue: {}}
]
});
fixture = TestBed.createComponent(WelcomeComponent);
diff --git a/src/app/core-components/welcome/welcome.component.ts b/src/app/core-components/welcome/welcome.component.ts
index ae8856f8..51c90281 100644
--- a/src/app/core-components/welcome/welcome.component.ts
+++ b/src/app/core-components/welcome/welcome.component.ts
@@ -1,5 +1,5 @@
import { Component } from '@angular/core';
-import { IconDefinition, faBookOpen, faBookReader, faBuilding, faChevronRight, faDatabase, faExternalLink, faFolderOpen, faIndustry, faQuestionCircle, faSearchPlus, faStopwatch, faWandMagicSparkles } from '@fortawesome/free-solid-svg-icons';
+import { IconDefinition, faBookOpen, faBookReader, faBuilding, faChevronRight, faDatabase, faExternalLink, faFileCirclePlus, faFolderOpen, faIndustry, faQuestionCircle, faSearchPlus, faStopwatch, faWandMagicSparkles } from '@fortawesome/free-solid-svg-icons';
import { Subscription } from 'rxjs';
import { CompanyIdbService } from 'src/app/indexed-db/company-idb.service';
import { FacilityIdbService } from 'src/app/indexed-db/facility-idb.service';
@@ -11,6 +11,11 @@ import { IdbOnSiteVisit } from 'src/app/models/onSiteVisit';
import { IdbUser } from 'src/app/models/user';
import { SharedDataService } from 'src/app/shared/shared-services/shared-data.service';
import * as _ from 'lodash';
+import { LoadingService } from '../loading/loading.service';
+import { BackupDataService, BackupFile } from 'src/app/shared/shared-services/backup-data.service';
+import { DbChangesService } from 'src/app/indexed-db/db-changes.service';
+import { Router } from '@angular/router';
+import { ToastNotificationsService } from '../toast-notifications/toast-notifications.service';
@Component({
selector: 'app-welcome',
@@ -29,7 +34,8 @@ export class WelcomeComponent {
faBuilding: IconDefinition = faBuilding;
faIndustry: IconDefinition = faIndustry;
faSearchPlus: IconDefinition = faSearchPlus;
- faStopwatch: IconDefinition = faStopwatch
+ faStopwatch: IconDefinition = faStopwatch;
+ faFileCirclePlus: IconDefinition = faFileCirclePlus;
userSub: Subscription
user: IdbUser;
@@ -42,11 +48,18 @@ export class WelcomeComponent {
companies: Array;
companiesSub: Subscription;
+
+ showAddExampleModal: boolean = false;
constructor(private userIdbService: UserIdbService,
private sharedDataService: SharedDataService,
private onSiteVisitIdbService: OnSiteVisitIdbService,
private facilityIdbService: FacilityIdbService,
- private companyIdbService: CompanyIdbService
+ private companyIdbService: CompanyIdbService,
+ private loadingService: LoadingService,
+ private backupDataService: BackupDataService,
+ private dbChangesService: DbChangesService,
+ private toastNotificationService: ToastNotificationsService,
+ private router: Router
) {
}
@@ -56,7 +69,7 @@ export class WelcomeComponent {
this.user = user;
});
this.onSiteVisitSub = this.onSiteVisitIdbService.onSiteVisits.subscribe(visits => {
- this.onSiteVisits = _.orderBy(visits, (visit: IdbOnSiteVisit) => {
+ this.onSiteVisits = _.orderBy(visits, (visit: IdbOnSiteVisit) => {
return new Date(visit.modifiedDate);
}, 'desc').slice(0, 5);
});
@@ -70,7 +83,7 @@ export class WelcomeComponent {
})
}
- ngOnDestroy(){
+ ngOnDestroy() {
this.onSiteVisitSub.unsubscribe();
this.facilitiesSub.unsubscribe();
this.companiesSub.unsubscribe();
@@ -91,4 +104,44 @@ export class WelcomeComponent {
this.onSiteVisitIdbService.setSelectedFromGUID(visit.guid);
this.sharedDataService.createAssessmentModalOpen.next(true);
}
+
+ openAddExampleModal() {
+ this.showAddExampleModal = true;
+ }
+
+ closeAddExampleModal() {
+ this.showAddExampleModal = false;
+ }
+
+ addExample() {
+ this.closeAddExampleModal();
+ this.loadingService.setLoadingMessage('Loading Example Data..');
+ this.loadingService.setLoadingStatus(true);
+ var request = new XMLHttpRequest();
+ request.open('GET', 'assets/example-data/ExampleData.json', true);
+ request.responseType = 'blob';
+ request.onload = () => {
+ var reader = new FileReader();
+ reader.readAsText(request.response);
+ reader.onloadend = async (e) => {
+ try {
+ let fileData: string = reader.result as string;
+ let tmpBackupFile: BackupFile = JSON.parse(fileData);
+ let updatedBackupFile: BackupFile = await this.backupDataService.importUserBackupFile(tmpBackupFile, this.user.guid);
+ await this.dbChangesService.selectUser(this.user, false);
+ this.loadingService.setLoadingStatus(false);
+ let exampleVisit: IdbOnSiteVisit = updatedBackupFile.onSiteVisits[0];
+ this.companyIdbService.setSelectedFromGUID(exampleVisit.companyId);
+ this.facilityIdbService.setSelectedFromGUID(exampleVisit.facilityId);
+ this.onSiteVisitIdbService.setSelectedFromGUID(exampleVisit.guid);
+ this.toastNotificationService.showToast('Cocoa Co. Example Added!', 'Our example company and assessments have been added. You can now explore a completed on-site visit to view the possible impacts of NEBs!', 'bg-success', true, false);
+ this.router.navigateByUrl('/setup-wizard/pre-visit/' + exampleVisit.guid);
+ } catch (err) {
+ console.log(err);
+ this.loadingService.setLoadingMessage('Something has gone horribly wrong with the example data..');
+ }
+ };
+ };
+ request.send();
+ }
}
diff --git a/src/app/shared/shared-services/backup-data.service.ts b/src/app/shared/shared-services/backup-data.service.ts
index 17fb796a..25c10dee 100644
--- a/src/app/shared/shared-services/backup-data.service.ts
+++ b/src/app/shared/shared-services/backup-data.service.ts
@@ -92,7 +92,7 @@ export class BackupDataService {
}
// Add backup file data to the userGuid
- async importUserBackupFile(backupFile: BackupFile, userGuid: string): Promise {
+ async importUserBackupFile(backupFile: BackupFile, userGuid: string): Promise {
// Overwrite backup user guid with input guid
this.loadingService.setLoadingMessage('Adding Backup Data to User: ' + userGuid + '...');
let userGUIDs: { oldId: string, newId: string } = {
@@ -324,7 +324,7 @@ export class BackupDataService {
await firstValueFrom(this.keyPerformanceMetricImpactIdbService.addWithObservable(keyPerformanceMetricImpact));
}
-
+ return backupFile;
}
backupFileVersionCheck(fileVersion: string, appVersion: string): boolean {
diff --git a/src/assets/example-data/ExampleData.json b/src/assets/example-data/ExampleData.json
new file mode 100644
index 00000000..e1569fe3
--- /dev/null
+++ b/src/assets/example-data/ExampleData.json
@@ -0,0 +1 @@
+{"user":{"guid":"8y9p236i9","createdDate":"2024-10-17T16:14:07.857Z","modifiedDate":"2024-10-17T16:31:11.228Z","skipSplashScreen":false,"id":1},"companies":[{"guid":"y4ny68y88","createdDate":"2024-10-08T14:26:45.609Z","modifiedDate":"2024-10-15T20:17:06.125Z","userId":"8y9p236i9","generalInformation":{"name":"Cocoa Co.","country":"US","city":"Columbus","state":"Ohio","zip":"43228","address":"100 Woodruff Avenue","naics1":"31 - 33","naics2":"311","naics3":"31135","notes":""},"displayFacilities":true,"companyEnergyUnit":"MMBtu","id":1}],"facilities":[{"guid":"bm8ai8i78","createdDate":"2024-10-08T14:26:45.640Z","modifiedDate":"2024-10-17T17:14:58.617Z","userId":"8y9p236i9","companyId":"y4ny68y88","unitSettings":{"includeElectricity":true,"electricityUse":10000000,"electricityUnit":"kWh","electricityPrice":0.1,"includeNaturalGas":true,"naturalGasUse":90000,"naturalGasUnit":"MMBtu","naturalGasPrice":4,"includeOtherFuels":false,"otherFuelsUse":0,"otherFuelsUnit":"MMBtu","otherFuelsPrice":0,"includeWater":false,"waterUse":0,"waterUnit":"kgal","waterPrice":0,"includeWasteWater":false,"wasteWaterUse":0,"wasteWaterUnit":"kgal","wasteWaterPrice":0,"includeSteam":false,"steamUse":0,"steamUnit":"klb","steamPrice":0,"includeCompressedAir":false,"compressedAirUse":0,"compressedAirUnit":"kSCF","compressedAirPrice":0,"steamHHV":null,"steamEnergyUnit":null,"compressedAirHHV":null,"compressedAirEnergyUnit":null,"waterHHV":null,"waterEnergyUnit":null,"wasteWaterHHV":null,"wasteWaterEnergyUnit":null},"generalInformation":{"name":"Bar Building","country":"US","city":"Columbus","state":"Ohio","zip":"43228","address":"100 Woodruff Ave","naics1":"31 - 33","naics2":"311","naics3":"31135","notes":""},"energyUse":124121.28220196007,"cost":1360000,"id":1},{"guid":"a8wg0jz27","createdDate":"2024-10-10T14:53:36.638Z","modifiedDate":"2024-10-10T14:55:21.400Z","userId":"8y9p236i9","companyId":"y4ny68y88","unitSettings":{"includeElectricity":true,"electricityUse":0,"electricityUnit":"kWh","electricityPrice":0,"electricityHHV":0,"electricityEnergyUnit":"MMBtu","includeNaturalGas":true,"naturalGasUse":0,"naturalGasUnit":"MMBtu","naturalGasPrice":0,"naturalGasHHV":0,"naturalGasEnergyUnit":"MMBtu","includeOtherFuels":false,"otherFuelsUse":0,"otherFuelsUnit":"MMBtu","otherFuelsPrice":0,"otherFuelsHHV":0,"otherFuelsEnergyUnit":"MMBtu","includeSteam":false,"steamUse":0,"steamUnit":"klb","steamPrice":0,"steamHHV":0,"steamEnergyUnit":"MMBtu","includeCompressedAir":false,"compressedAirUse":0,"compressedAirUnit":"kSCF","compressedAirPrice":0,"compressedAirHHV":0,"compressedAirEnergyUnit":"MMBtu"},"generalInformation":{"name":"Drop Building","country":"","city":"","state":"","zip":"","address":"","naics1":"","naics2":"","naics3":"","notes":""},"energyUse":0,"cost":0,"id":2}],"contacts":[{"guid":"evro2fu9k","createdDate":"2024-10-08T16:00:54.011Z","modifiedDate":"2024-10-14T20:17:08.599Z","firstName":"Mark","lastName":"Manager","userId":"8y9p236i9","companyId":"y4ny68y88","facilityIds":[],"assessmentIds":[],"processEquipmentIds":[null],"nonEnergyBenefitIds":[],"energyEquipmentIds":[],"phone":"","email":"mm@cocoa.com","role":"Facility Manager","team":"Management","notes":null,"kpiIds":["86omf9uwa","kowz699qb","0304r3278","w91t4ico7","tb9ebq4xf","i0qppgwjk"],"id":1},{"guid":"v42jjfvcs","createdDate":"2024-10-08T16:00:59.509Z","modifiedDate":"2024-10-14T20:17:08.616Z","firstName":"Peggy","lastName":"Procurement","userId":"8y9p236i9","companyId":"y4ny68y88","facilityIds":[],"assessmentIds":[],"processEquipmentIds":[],"nonEnergyBenefitIds":[],"energyEquipmentIds":[],"phone":"","email":"peg@cocoa.com","role":"Procurement Lead","team":"Management","notes":null,"kpiIds":["tb9ebq4xf"],"id":2},{"guid":"nvzghjg61","createdDate":"2024-10-08T16:01:07.426Z","modifiedDate":"2024-10-14T20:17:08.617Z","firstName":"Simran","lastName":"Steam","userId":"8y9p236i9","companyId":"y4ny68y88","facilityIds":[],"assessmentIds":["732lxg7b2"],"processEquipmentIds":[null,null],"nonEnergyBenefitIds":[],"energyEquipmentIds":[null],"phone":"","email":"ss@cocoa.com","role":"Utilities Lead","team":"Utilities","notes":null,"kpiIds":[],"id":3},{"guid":"qnqu8t5rc","createdDate":"2024-10-08T16:01:24.508Z","modifiedDate":"2024-10-14T20:17:08.618Z","firstName":"Ben","lastName":"Bar","userId":"8y9p236i9","companyId":"y4ny68y88","facilityIds":[],"assessmentIds":[],"processEquipmentIds":[null,null],"nonEnergyBenefitIds":[],"energyEquipmentIds":[],"phone":"","email":"ben.bar@cocoa.com","role":"Operations Lead","team":"Barring","notes":null,"kpiIds":["kowz699qb","i0qppgwjk"],"id":4},{"guid":"rh3cjx9yb","createdDate":"2024-10-08T16:01:51.290Z","modifiedDate":"2024-10-14T20:17:08.619Z","firstName":"Chandra","lastName":"Safety","userId":"8y9p236i9","companyId":"y4ny68y88","facilityIds":[],"assessmentIds":[],"processEquipmentIds":[],"nonEnergyBenefitIds":[],"energyEquipmentIds":[],"phone":"","email":"safety@cocoa.com","role":"Safety Manager","team":"Management","notes":null,"kpiIds":["w91t4ico7"],"id":5},{"guid":"t3ey69qfj","createdDate":"2024-10-08T16:02:04.671Z","modifiedDate":"2024-10-14T20:17:08.619Z","firstName":"Max","lastName":"Maintenance","userId":"8y9p236i9","companyId":"y4ny68y88","facilityIds":[],"assessmentIds":[],"processEquipmentIds":[],"nonEnergyBenefitIds":[],"energyEquipmentIds":[],"phone":"","email":"maintenance@cocoa.com","role":"Maintenance Lead","team":"Maintenance","notes":null,"kpiIds":["0304r3278"],"id":6},{"guid":"jp5khqnkr","createdDate":"2024-10-14T16:36:21.717Z","modifiedDate":"2024-10-14T20:17:08.620Z","firstName":"Quinn","lastName":"Control","userId":"8y9p236i9","companyId":"y4ny68y88","facilityIds":[],"assessmentIds":[],"processEquipmentIds":[],"nonEnergyBenefitIds":[],"energyEquipmentIds":[],"phone":"","email":"qc@cocoa.com","role":"QC Lead","team":"Management","notes":null,"kpiIds":[],"id":7},{"guid":"5ibc5u5sz","createdDate":"2024-10-14T20:13:06.262Z","modifiedDate":"2024-10-14T20:17:08.621Z","firstName":"Paul","lastName":"Promotions","userId":"8y9p236i9","companyId":"y4ny68y88","facilityIds":[],"assessmentIds":[],"processEquipmentIds":[],"nonEnergyBenefitIds":[],"energyEquipmentIds":[],"phone":"","email":"promotions@cocoa.com","role":null,"team":null,"notes":null,"kpiIds":[],"id":8},{"guid":"my4xe6mvj","createdDate":"2024-10-15T20:17:26.864Z","modifiedDate":"2024-10-17T16:31:42.374Z","firstName":"Sarah","lastName":"Cooney","userId":"8y9p236i9","companyId":"y4ny68y88","facilityIds":[],"assessmentIds":[],"processEquipmentIds":[],"nonEnergyBenefitIds":[],"energyEquipmentIds":[],"phone":"","email":"sarah.cooney@cocoa.com","role":"Plant Manager","team":null,"notes":null,"kpiIds":[],"id":9}],"energyOpportunities":[{"guid":"z3fq8yvlu","createdDate":"2024-10-08T17:18:15.423Z","modifiedDate":"2024-10-17T17:27:07.189Z","name":"Insulate Melted Chocolate Tank","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentId":"rrcwif1gs","implementationCost":50000,"includeSavings":false,"includeNote":true,"utilityTypes":["Natural Gas"],"utilityType":"Natural Gas","energyUnit":"MMBtu","id":1},{"guid":"6oepzakdf","createdDate":"2024-10-08T17:19:16.158Z","modifiedDate":"2024-10-17T17:27:07.192Z","name":"Steam Leaks at HP & LP","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentId":"rrcwif1gs","implementationCost":2500,"includeSavings":false,"includeNote":false,"utilityTypes":["Natural Gas"],"utilityType":"Natural Gas","energyUnit":"MMBtu","id":2},{"guid":"cbmbjwoza","createdDate":"2024-10-08T17:19:46.600Z","modifiedDate":"2024-10-17T17:27:07.194Z","name":"Condensate Recovery","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentId":"rrcwif1gs","implementationCost":50000,"includeSavings":false,"includeNote":false,"utilityTypes":["Natural Gas"],"utilityType":"Natural Gas","energyUnit":"MMBtu","id":3},{"guid":"39xpvmjre","createdDate":"2024-10-08T17:48:26.233Z","modifiedDate":"2024-10-17T17:47:39.940Z","name":"Barring Room Lights","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentId":"00rqctzlq","energySavings":15000,"implementationCost":15000,"opportunityType":"other","costSavings":1500,"includeSavings":true,"includeNote":false,"utilityTypes":["Electricity","Natural Gas"],"utilityType":"Electricity","energyUnit":"kWh","id":4}],"assessments":[{"guid":"rrcwif1gs","createdDate":"2024-10-08T17:14:03.054Z","modifiedDate":"2024-10-17T17:27:07.189Z","name":"Steam Assessment","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentType":"Steam","utilityTypes":["Natural Gas"],"utilityEnergyUses":[{"utilityType":"Electricity","include":false,"energyUse":0,"unit":"kWh"},{"utilityType":"Natural Gas","include":true,"energyUse":87700,"unit":"MMBtu","energyUnit":"MMBtu"},{"utilityType":"Other Fuels","include":false,"energyUse":0,"unit":"MMBtu"},{"utilityType":"Water","include":false,"energyUse":0,"unit":"kgal"},{"utilityType":"Waste Water","include":false,"energyUse":0,"unit":"kgal"},{"utilityType":"Steam","include":false,"energyUse":0,"unit":"klb"},{"utilityType":"Compressed Air","include":false,"energyUse":0,"unit":"kSCF"}],"utilityType":"Natural Gas","unitOptionValue":"MMBtu","energyUse":87700,"cost":350800,"energySavings":11230,"costSavings":44920,"visitDate":"2024-10-08T14:26:45.655Z","implementationCost":0,"id":1},{"guid":"00rqctzlq","createdDate":"2024-10-08T17:42:51.500Z","modifiedDate":"2024-10-16T17:34:12.342Z","name":"TH - Electricity","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentType":"Treasure Hunt","utilityTypes":["Electricity","Natural Gas"],"utilityEnergyUses":[{"utilityType":"Electricity","include":true,"energyUse":100000000,"unit":"kWh","energyUnit":"kWh"},{"utilityType":"Natural Gas","include":true,"energyUse":4500000,"unit":"MMBtu","energyUnit":"MMBtu"},{"utilityType":"Other Fuels","include":false,"energyUse":0,"unit":"MMBtu"},{"utilityType":"Water","include":false,"energyUse":0,"unit":"kgal"},{"utilityType":"Waste Water","include":false,"energyUse":0,"unit":"kgal"},{"utilityType":"Steam","include":false,"energyUse":0,"unit":"klb"},{"utilityType":"Compressed Air","include":false,"energyUse":0,"unit":"kSCF"}],"utilityType":"Electricity","unitOptionValue":"kWh","energyUse":4841212.822019601,"cost":28000000,"visitDate":"2024-10-08T14:26:45.655Z","id":2,"energySavings":0,"costSavings":0,"implementationCost":0}],"keyPerformanceIndicators":[{"guid":"39l35akx7","createdDate":"2024-10-08T16:02:28.656Z","modifiedDate":"2024-10-17T17:21:32.209Z","userId":"8y9p236i9","companyId":"y4ny68y88","primaryKPI":"Sustainability (Environmental Impact)","label":"CO, CO2, NOx, SOx emissions","htmlLabel":"CO, CO2, NOx, SOx emissions","optionValue":"chemicalEmissions","isCustom":false,"performanceMetrics":[{"label":"Scope 1 & Scope 2 Emissions","htmlLabel":"Scope 1 & Scope 2 Emissions","value":"custom","kpiValue":"chemicalEmissions","isQuantitative":true,"baselineValue":4843,"costPerValue":0,"totalUnit":"tonne","baselineCost":0,"isCustom":true,"kpiGuid":"39l35akx7","guid":"43bdyjfbq","calculationMethod":"costPerUnit","goalToIncrease":false,"timePeriod":"yr"}],"id":1},{"guid":"muxh150pz","createdDate":"2024-10-08T16:02:36.863Z","modifiedDate":"2024-10-15T20:33:30.030Z","userId":"8y9p236i9","companyId":"y4ny68y88","primaryKPI":"Operations","label":"Quality","htmlLabel":"Quality","optionValue":"quality","isCustom":false,"performanceMetrics":[{"label":"($) Defective Production","htmlLabel":"($) Defective Production","value":"defectiveProductionDollar","kpiValue":"quality","isQuantitative":true,"totalUnit":"bars","goalToIncrease":false,"timePeriod":"yr","calculationMethod":"costPerUnit","baselineValue":37440,"costPerValue":2.5,"baselineCost":93600,"isCustom":false,"kpiGuid":"muxh150pz","guid":"u3wc8wotw"}],"id":2},{"guid":"4vi47e9j0","createdDate":"2024-10-08T16:02:38.553Z","modifiedDate":"2024-10-17T17:19:45.706Z","userId":"8y9p236i9","companyId":"y4ny68y88","primaryKPI":"Operations","label":"Reduce Expense Cost","htmlLabel":"Reduce Expense Cost","optionValue":"reduceExpenseCost","isCustom":false,"performanceMetrics":[{"label":"Maintenance Cost","htmlLabel":"Maintenance Cost","value":"maintenanceCost","kpiValue":"reduceExpenseCost","isQuantitative":true,"totalUnit":"hr","goalToIncrease":false,"timePeriod":"yr","calculationMethod":"costPerUnit","baselineValue":20000,"costPerValue":40,"baselineCost":800000,"isCustom":false,"kpiGuid":"4vi47e9j0","guid":"ugl2ce0qo"},{"label":"Engineering support (dollars or hours)","htmlLabel":"Engineering support ($ or hours)","value":"engineeringSupport","kpiValue":"reduceExpenseCost","isQuantitative":true,"totalUnit":"hr","goalToIncrease":false,"timePeriod":"yr","calculationMethod":"costPerUnit","baselineValue":2000,"costPerValue":80,"baselineCost":160000,"isCustom":false,"kpiGuid":"4vi47e9j0","guid":"jj7c6isdj"}],"id":3},{"guid":"csha3q0au","createdDate":"2024-10-08T16:02:51.564Z","modifiedDate":"2024-10-17T17:28:07.388Z","userId":"8y9p236i9","companyId":"y4ny68y88","primaryKPI":"Employee and Workplace Environment","label":"Safety","htmlLabel":"Safety","optionValue":"safety","isCustom":false,"performanceMetrics":[{"label":"OSHA Recordable Incidents","htmlLabel":"OSHA Recordable Incidents","value":"oshaRecordableIncidents","kpiValue":"safety","isQuantitative":true,"totalUnit":"incident","goalToIncrease":false,"timePeriod":"yr","calculationMethod":"costPerUnit","baselineValue":15,"costPerValue":10000,"baselineCost":150000,"isCustom":false,"kpiGuid":"csha3q0au","guid":"5iu8fy8a2"}],"id":4},{"guid":"u5tjb478l","createdDate":"2024-10-08T16:02:56.408Z","modifiedDate":"2024-10-17T17:24:06.577Z","userId":"8y9p236i9","companyId":"y4ny68y88","primaryKPI":"Sustainability (Environmental Impact)","label":"Water Consumption","htmlLabel":"Water Consumption","optionValue":"waterConsumption","isCustom":false,"performanceMetrics":[{"label":"Consumption Cost","htmlLabel":"Consumption Cost","value":"consumptionCostWater","kpiValue":"waterConsumption","isQuantitative":true,"totalUnit":"gal","goalToIncrease":false,"timePeriod":"yr","calculationMethod":"costPerUnit","baselineValue":5000000,"costPerValue":0.002,"baselineCost":10000,"isCustom":false,"kpiGuid":"u5tjb478l","guid":"l8c6jawcb"}],"id":5},{"guid":"igls0w96z","createdDate":"2024-10-08T16:05:01.688Z","modifiedDate":"2024-10-17T17:19:23.247Z","userId":"8y9p236i9","companyId":"y4ny68y88","primaryKPI":"Operations","label":"Productivity","htmlLabel":"Productivity","optionValue":"productivity","isCustom":false,"performanceMetrics":[{"label":"Bar Production","htmlLabel":"Bar Production","value":"custom","kpiValue":"productivity","isQuantitative":true,"baselineValue":3744000,"costPerValue":2.75,"totalUnit":"bar","baselineCost":10296000,"isCustom":true,"kpiGuid":"igls0w96z","guid":"jhzyutt5g","calculationMethod":"costPerUnit","goalToIncrease":true,"timePeriod":"yr"}],"id":6},{"guid":"13jx86t3m","createdDate":"2024-10-14T20:15:13.530Z","modifiedDate":"2024-10-17T17:25:02.499Z","userId":"8y9p236i9","companyId":"y4ny68y88","primaryKPI":"Strategic Relationship Impact","label":"Tours","htmlLabel":"Tours","optionValue":"other","isCustom":true,"performanceMetrics":[{"label":"Tours","htmlLabel":"Tours","value":"custom","kpiValue":"other","isQuantitative":true,"baselineValue":1000,"costPerValue":20,"totalUnit":"Tours","baselineCost":20000,"isCustom":true,"kpiGuid":"13jx86t3m","guid":"rmun25o8c","calculationMethod":"costPerUnit","goalToIncrease":true,"timePeriod":"yr"}],"id":7},{"guid":"l3ye44yli","createdDate":"2024-10-14T20:45:44.156Z","modifiedDate":"2024-10-14T20:45:44.156Z","userId":"8y9p236i9","companyId":"y4ny68y88","primaryKPI":"Strategic Relationship Impact","label":"Strategic Relationship Impact","htmlLabel":"Strategic Relationship Impact","optionValue":"strategicRelationshipImpact","isCustom":false,"performanceMetrics":[{"label":"Contribution to company's vision or strategy","htmlLabel":"Contribution to company's vision or strategy","value":"contributeCompanyVision","kpiValue":"strategicRelationshipImpact","isQuantitative":false,"goalToIncrease":true,"timePeriod":"yr","calculationMethod":"directCost","isCustom":false,"kpiGuid":"l3ye44yli","guid":"cssy6epgj"},{"label":"Sales growth ($)","htmlLabel":"Sales growth ($)","value":"salesGrowth","kpiValue":"strategicRelationshipImpact","isQuantitative":true,"goalToIncrease":true,"timePeriod":"yr","totalUnit":"$","calculationMethod":"percentTotal","isCustom":false,"kpiGuid":"l3ye44yli","guid":"n1m4raen6"},{"label":"Customer Satisfaction Ratings","htmlLabel":"Customer Satisfaction Ratings","value":"customerSatisfactionRatings","kpiValue":"strategicRelationshipImpact","isQuantitative":false,"goalToIncrease":true,"timePeriod":"yr","quantitativeUnavailable":true,"isCustom":false,"kpiGuid":"l3ye44yli","calculationMethod":"costPerUnit","guid":"09th5ala9"},{"label":"Lost Customer Sales ($)","htmlLabel":"Lost Customer Sales ($)","value":"lostCustomerSales","kpiValue":"strategicRelationshipImpact","isQuantitative":true,"goalToIncrease":false,"timePeriod":"yr","calculationMethod":"directCost","totalUnit":"$","isCustom":false,"kpiGuid":"l3ye44yli","guid":"9pqi77asf"},{"label":"Customer Churn Rate","htmlLabel":"Customer Churn Rate","value":"customerChurnRate","kpiValue":"strategicRelationshipImpact","isQuantitative":false,"goalToIncrease":true,"timePeriod":"yr","quantitativeUnavailable":true,"isCustom":false,"kpiGuid":"l3ye44yli","calculationMethod":"costPerUnit","guid":"00zn3muk4"},{"label":"Supplier Satisfaction Ratings","htmlLabel":"Supplier Satisfaction Ratings","value":"supplierSatisfactionRatings","kpiValue":"strategicRelationshipImpact","isQuantitative":false,"goalToIncrease":true,"timePeriod":"yr","quantitativeUnavailable":true,"isCustom":false,"kpiGuid":"l3ye44yli","calculationMethod":"costPerUnit","guid":"pza9xj3qf"}],"id":8}],"nonEnergyBenefits":[{"guid":"p5tuvuhw8","createdDate":"2024-10-08T17:23:20.129Z","modifiedDate":"2024-10-08T17:23:28.236Z","name":"Reduced burns","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentId":"rrcwif1gs","energyOpportunityId":"z3fq8yvlu","includeNote":false,"isCustom":true,"costImpact":0,"id":1},{"guid":"xmw368sw9","createdDate":"2024-10-14T15:59:58.208Z","modifiedDate":"2024-10-14T15:59:59.800Z","name":"Reduce Scope 1 & Scope 2 Emissions","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentId":"rrcwif1gs","includeNote":false,"isCustom":true,"costImpact":0,"id":2},{"guid":"3324len4h","createdDate":"2024-10-14T20:22:09.670Z","modifiedDate":"2024-10-14T20:22:09.670Z","name":"Reduce water consumption","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentId":"rrcwif1gs","energyOpportunityId":"cbmbjwoza","includeNote":false,"nebOptionValue":"reduceWaterConsumption","isCustom":false,"costImpact":0,"id":3},{"guid":"5uumrse6q","createdDate":"2024-10-14T20:23:30.364Z","modifiedDate":"2024-10-14T20:23:33.553Z","name":"Tours","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentId":"rrcwif1gs","energyOpportunityId":"z3fq8yvlu","includeNote":false,"isCustom":true,"costImpact":0,"id":4},{"guid":"u4mzfh7ya","createdDate":"2024-10-14T20:25:22.111Z","modifiedDate":"2024-10-14T20:25:22.111Z","name":"Improved product quality - machine source","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentId":"rrcwif1gs","includeNote":false,"nebOptionValue":"improvedProductQualityMachineSource","isCustom":false,"costImpact":0,"id":5}],"onSiteVisits":[{"guid":"nv10i20zd","createdDate":"2024-10-08T14:26:45.655Z","modifiedDate":"2024-10-08T17:42:51.522Z","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentIds":["rrcwif1gs","00rqctzlq"],"visitDate":"2024-10-08T14:26:45.655Z","id":1},{"guid":"85x6ve5d1","createdDate":"2024-10-10T14:53:36.677Z","modifiedDate":"2024-10-10T14:53:36.677Z","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"a8wg0jz27","assessmentIds":[],"visitDate":"2024-10-10T14:53:36.677Z","id":2}],"energyEquipment":[{"guid":"cantiw931","createdDate":"2024-10-08T16:37:18.745Z","modifiedDate":"2024-10-17T17:14:58.627Z","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","equipmentName":"Boiler 1","equipmentType":"Steam","utilityType":"Natural Gas","size":20,"sizeUnit":"MMBtuhr","autoCalculate":false,"fuelConsumption":0,"fuelHHV":0,"fuelVolumeUnit":"gal","fuelEnergyUnit":"kWh","operatingHours":4160,"loadFactor":85,"efficiency":80,"numberOfEquipment":1,"annualEnergyUse":88399.7920241211,"facilityUtilityUnit":"MMBtu","annualEnergyUseByUtility":88399.7920241211,"id":1},{"guid":"12q3laesr","createdDate":"2024-10-08T16:43:34.997Z","modifiedDate":"2024-10-17T17:14:58.635Z","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","equipmentName":"Feedwater pump","equipmentType":"Pump","utilityType":"Electricity","size":150,"sizeUnit":"hp","autoCalculate":false,"fuelConsumption":0,"fuelHHV":0,"fuelVolumeUnit":"gal","fuelEnergyUnit":"kWh","operatingHours":8760,"loadFactor":75,"efficiency":80,"numberOfEquipment":1,"annualEnergyUse":918609.1875,"facilityUtilityUnit":"MMBtu","annualEnergyUseByUtility":918609.1875,"id":2},{"guid":"czdcz9cig","createdDate":"2024-10-08T16:46:19.519Z","modifiedDate":"2024-10-17T17:14:58.638Z","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","equipmentName":"Barring Room Lights","equipmentType":"Lighting","utilityType":"Electricity","size":150,"sizeUnit":"W","autoCalculate":false,"fuelConsumption":0,"fuelHHV":0,"fuelVolumeUnit":"gal","fuelEnergyUnit":"kWh","operatingHours":8760,"loadFactor":100,"efficiency":100,"numberOfEquipment":50,"notes":"all currently florescent lights","annualEnergyUse":65700,"facilityUtilityUnit":"MMBtu","annualEnergyUseByUtility":65700,"id":3}],"processEquipment":[{"guid":"vpetiwj56","createdDate":"2024-10-08T17:27:39.325Z","modifiedDate":"2024-10-08T17:28:07.966Z","equipmentName":"Steam lines","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","notes":"Heat lost down lines via steam leaks","id":1},{"guid":"ppplzc4l2","createdDate":"2024-10-08T17:28:09.593Z","modifiedDate":"2024-10-10T15:32:00.080Z","equipmentName":"Melted Chocolate Tank","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","notes":"Big tank that keeps chocolate warm before barring via steam.\nCurrently uninsulated - causing problems with quality of bars","id":2},{"guid":"r5neryvrg","createdDate":"2024-10-08T17:29:23.587Z","modifiedDate":"2024-10-08T17:30:20.258Z","equipmentName":"Barring line","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","notes":"Machines pour chocolate in molds and wrap the bars\nHumans inspect bars before and after wrapping\nQuality issues often missed before wrapping due to lighting issues","id":3}],"keyPerformanceMetricImpacts":[{"guid":"am45x2pen","createdDate":"2024-10-08T17:24:04.407Z","modifiedDate":"2024-10-17T17:28:07.350Z","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","energyOpportunityId":"z3fq8yvlu","assessmentId":"rrcwif1gs","nebId":"p5tuvuhw8","kpiGuid":"csha3q0au","modificationValue":3,"costAdjustment":30000,"kpmValue":"oshaRecordableIncidents","kpmGuid":"5iu8fy8a2","id":1},{"guid":"svr5zhld8","createdDate":"2024-10-14T16:00:10.617Z","modifiedDate":"2024-10-17T17:32:39.045Z","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentId":"rrcwif1gs","nebId":"xmw368sw9","kpiGuid":"39l35akx7","modificationValue":597,"costAdjustment":0,"kpmValue":"custom","kpmGuid":"43bdyjfbq","id":2},{"guid":"tr0k00p4n","createdDate":"2024-10-14T20:22:09.670Z","modifiedDate":"2024-10-17T17:29:38.854Z","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","energyOpportunityId":"cbmbjwoza","assessmentId":"rrcwif1gs","nebId":"3324len4h","kpiGuid":"u5tjb478l","modificationValue":1890000,"costAdjustment":3780,"kpmValue":"consumptionCostWater","kpmGuid":"l8c6jawcb","id":3},{"guid":"v6gfa19it","createdDate":"2024-10-14T20:23:44.098Z","modifiedDate":"2024-10-17T17:28:26.984Z","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","energyOpportunityId":"z3fq8yvlu","assessmentId":"rrcwif1gs","nebId":"5uumrse6q","kpiGuid":"13jx86t3m","modificationValue":50,"costAdjustment":1000,"kpmValue":"custom","kpmGuid":"rmun25o8c","id":4},{"guid":"3rxjpmjg1","createdDate":"2024-10-14T20:25:22.111Z","modifiedDate":"2024-10-17T17:30:15.558Z","userId":"8y9p236i9","companyId":"y4ny68y88","facilityId":"bm8ai8i78","assessmentId":"rrcwif1gs","nebId":"u4mzfh7ya","kpiGuid":"muxh150pz","modificationValue":18720,"costAdjustment":46800,"kpmValue":"defectiveProductionDollar","kpmGuid":"u3wc8wotw","id":5}],"origin":"JUSTIFI","version":"0.0.1-alpha-45cc455","backupFileType":"User","timeStamp":"2024-10-17T17:49:53.663Z","dataBackupId":"scvf3fi4f"}
\ No newline at end of file