diff --git a/src/app/core-components/about/about.component.html b/src/app/core-components/about/about.component.html index 7ff412d3..1c3adf9e 100644 --- a/src/app/core-components/about/about.component.html +++ b/src/app/core-components/about/about.component.html @@ -14,5 +14,31 @@

DE-AC05-00OR22725.

+
+ +

+ + User Data +

+

+ You are running the Software in a web browser on your device. + All application data is saved locally within this browser to your device and/or browser. + NREL, ORNL, and the DOE do not have access to data you input into the Software and/or outputs + based on your data provided by the Software. + Should the Software, your browser, and/or your device crash, fail, or otherwise have an error, + data you entered into the Software and the outputs based on that data may be lost. + It is encouraged that you download backup files of your data frequently. + Backups can be imported back into the Software if needed to restore lost or corrupted data. +

+

+ You may voluntarily provide a backup file of your data to NREL and ORNL for use in improving the Software. + By providing such data you are agreeing that NREL and ORNL may use such data without restriction and without + compensation or obligation to you. + To the extent any license would be required to utilize such data, you automatically grant NREL and ORNL, + when submitting such data, a worldwide, royalty-free, perpetual, irrevocable, non-exclusive, + transferrable, and sublicensable license under any rights necessary for such use or implementation. + +

+
\ No newline at end of file diff --git a/src/app/core-components/feedback-page/feedback-page.component.html b/src/app/core-components/feedback-page/feedback-page.component.html index 3cf0c381..6479665a 100644 --- a/src/app/core-components/feedback-page/feedback-page.component.html +++ b/src/app/core-components/feedback-page/feedback-page.component.html @@ -7,13 +7,20 @@

We'd love to hear from you! The JUSTIFI application is in active development and your feedback - is invaluable in shaping the user experience, new features and general content within the tool. - To provide feedback, please email Kristina - Armstrong (armstrongko@ornl.gov) with the subject line - “JUSTIFI Feedback - A Summary”. + is invaluable in shaping the user experience, new features and general content within the tool. + To provide feedback, please email Kristina + Armstrong (armstrongko@ornl.gov) with the subject line + “JUSTIFI Feedback - A Summary”. This will allow the team to follow up with any clarification questions in a timely manner and update you on progress towards implementing your ideas!

+

+ If you would prefer to provide feedback via a survey, we have provided one: Alpha Feedback Survey. This survey + will be available during the alpha phase of JUSTIFI so that test users can provide their input on + initial impressions of JUSTIFI and give guidance as it is developed into a well thought out and easy to + use tool! +


Bug Reporting @@ -24,10 +31,10 @@

Armstrong (armstrongko@ornl.gov) as well using the subject “JUSTIFI Bug Reporting - A Summary”. Kristina will work with you to resolve the issue and - make sure the bug is fixed to prevent future occurrences. + make sure the bug is fixed to prevent future occurrences.

- To help us address the bug efficiently, + To help us address the bug efficiently, some suggested details to include in the bug report are:

+ + + diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/company-details-summary/company-details-summary.component.html b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/company-details-summary/company-details-summary.component.html index 72d4d598..67c8d284 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/company-details-summary/company-details-summary.component.html +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/company-details-summary/company-details-summary.component.html @@ -2,15 +2,20 @@

{{company.generalInformation.name}}
- +
diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/company-kpis-summary/company-kpis-summary.component.html b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/company-kpis-summary/company-kpis-summary.component.html index d495a060..95b25313 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/company-kpis-summary/company-kpis-summary.component.html +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/company-kpis-summary/company-kpis-summary.component.html @@ -1,29 +1,81 @@
Key Performance Indicators
-
-
-
-
- - -
-
-
Address - - — + @let address = company.generalInformation | addressDisplay; + + {{address}} + + + — +
- - - - - - -
- KPI Category - - -
+ + + + + + + + + + + + + + + + + + - - - - \ No newline at end of file + + + + + + + + + + + +
+ + + Units + + Cost
Per Unit +
+ Baseline
Amount +
+ Baseline Cost
($/yr) +
+ +
+ + + + + + + — + + + + + + + — + + + + + + + — + + + + + Qualitative Metric +
\ No newline at end of file diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/company-kpis-summary/company-kpis-summary.component.ts b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/company-kpis-summary/company-kpis-summary.component.ts index e6c30279..0cdba268 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/company-kpis-summary/company-kpis-summary.component.ts +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/company-kpis-summary/company-kpis-summary.component.ts @@ -28,7 +28,9 @@ export class CompanyKpisSummaryComponent { ngOnInit(){ this.company = this.companyIdbService.selectedCompany.getValue(); - this.keyPerformanceIndicators = this.keyPerformanceIndicatorIdbService.keyPerformanceIndicators.getValue(); + this.keyPerformanceIndicators = this.keyPerformanceIndicatorIdbService.keyPerformanceIndicators.getValue().filter(kpi => { + return kpi.companyId == this.company.guid; + }); this.contacts = this.contactsIdbService.contacts.getValue(); } } diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/facility-details-summary/facility-details-summary.component.html b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/facility-details-summary/facility-details-summary.component.html index 339f1727..7c781325 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/facility-details-summary/facility-details-summary.component.html +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/facility-details-summary/facility-details-summary.component.html @@ -2,15 +2,20 @@
{{facility.generalInformation.name}}
- +
diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/pre-assessment-summary/pre-assessment-summary.component.html b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/pre-assessment-summary/pre-assessment-summary.component.html index 6d041e88..9381aa4b 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/pre-assessment-summary/pre-assessment-summary.component.html +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/pre-assessment-summary/pre-assessment-summary.component.html @@ -1,71 +1,76 @@
Pre-Assessments for {{onSiteVisit.visitDate| date}}
-
-
-
-
- - {{assessment.name}} -
-
-
Address - - — + @let address = facility.generalInformation | addressDisplay; + + {{address}} + + + — +
- - - - - - - - - - - - - - - -
- Annual Energy Use - - -
- Annual Costs - - -
- Contacts - - -
-
- - - {{contact | contactNameDisplay}} - -
-
-
- - — - -
- - +@let preAssessments = (onSiteVisit.assessmentIds | assessmentListOnSite: assessments); + + + + + + + + + + + + + + + + + + + + + + +
+ Name + + Type + + Utility Types + + Baseline
+ Energy Use
+ ({{companyEnergyUnit}}/yr) +
+ Baseline
+ Energy Cost
+ + ($/yr) + +
+ Stakeholders +
+ {{assessment.name}} + + + + + + {{utilityType.utilityType}}
+
+
+
+ + + + + @let associatedContacts = assessment.guid | associatedContacts:'assessment': contacts; + + + {{contact | contactNameDisplay}}
+
+
+ + — + +
+
+ +
+ No pre-assessments added for this visit.
- \ No newline at end of file +
\ No newline at end of file diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/pre-assessment-summary/pre-assessment-summary.component.spec.ts b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/pre-assessment-summary/pre-assessment-summary.component.spec.ts index a76bcec6..b8390882 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/pre-assessment-summary/pre-assessment-summary.component.spec.ts +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/pre-assessment-summary/pre-assessment-summary.component.spec.ts @@ -4,45 +4,17 @@ import { PreAssessmentSummaryComponent } from './pre-assessment-summary.componen import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; import { HelperPipesModule } from 'src/app/shared/helper-pipes/_helper-pipes.module'; import { TableEntriesModule } from 'src/app/shared/table-entries/table-entries.module'; -import { FacilityIdbService } from 'src/app/indexed-db/facility-idb.service'; -import { IdbFacility, getNewIdbFacility } from 'src/app/models/facility'; -import { BehaviorSubject } from 'rxjs'; -import { AssessmentIdbService } from 'src/app/indexed-db/assessment-idb.service'; -import { IdbAssessment } from 'src/app/models/assessment'; -import { OnSiteVisitIdbService } from 'src/app/indexed-db/on-site-visit-idb.service'; -import { IdbOnSiteVisit, getNewIdbOnSiteVisit } from 'src/app/models/onSiteVisit'; -import { ContactIdbService } from 'src/app/indexed-db/contact-idb.service'; -import { IdbContact } from 'src/app/models/contact'; +import { stubServiceProviders } from 'src/app/spec-helpers/spec-test-service-stub'; describe('PreAssessmentSummaryComponent', () => { let component: PreAssessmentSummaryComponent; let fixture: ComponentFixture; - - let facilityIdbService: Partial = { - facilities: new BehaviorSubject>([]), - selectedFacility: new BehaviorSubject(getNewIdbFacility('', '')) - }; - let assessmentIdbService: Partial = { - assessments: new BehaviorSubject>([]) - }; - let onSiteVisitIdbService: Partial = { - selectedVisit: new BehaviorSubject(getNewIdbOnSiteVisit('', '', '')) - }; - let contactIdbService: Partial = { - contacts: new BehaviorSubject>([]) - }; beforeEach(async () => { await TestBed.configureTestingModule({ imports: [ FontAwesomeModule, HelperPipesModule, TableEntriesModule], declarations: [PreAssessmentSummaryComponent], - providers: [ - { provide: FacilityIdbService, useValue: facilityIdbService }, - { provide: AssessmentIdbService, useValue: assessmentIdbService }, - { provide: OnSiteVisitIdbService, useValue: onSiteVisitIdbService }, - { provide: ContactIdbService, useValue: contactIdbService } - - ] + providers: stubServiceProviders }) .compileComponents(); diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/pre-assessment-summary/pre-assessment-summary.component.ts b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/pre-assessment-summary/pre-assessment-summary.component.ts index 58583276..5d83554c 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/pre-assessment-summary/pre-assessment-summary.component.ts +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/pre-assessment-summary/pre-assessment-summary.component.ts @@ -1,13 +1,13 @@ import { Component } from '@angular/core'; import { IconDefinition, faScrewdriverWrench, faToolbox, faUser } from '@fortawesome/free-solid-svg-icons'; import { AssessmentIdbService } from 'src/app/indexed-db/assessment-idb.service'; +import { CompanyIdbService } from 'src/app/indexed-db/company-idb.service'; import { ContactIdbService } from 'src/app/indexed-db/contact-idb.service'; -import { FacilityIdbService } from 'src/app/indexed-db/facility-idb.service'; import { OnSiteVisitIdbService } from 'src/app/indexed-db/on-site-visit-idb.service'; import { IdbAssessment } from 'src/app/models/assessment'; +import { IdbCompany } from 'src/app/models/company'; import { IdbContact } from 'src/app/models/contact'; import { IdbOnSiteVisit } from 'src/app/models/onSiteVisit'; -// import { ProcessEquipment } from 'src/app/shared/constants/processEquipment'; @Component({ selector: 'app-pre-assessment-summary', @@ -20,19 +20,20 @@ export class PreAssessmentSummaryComponent { assessments: Array; faToolbox: IconDefinition = faToolbox; faScrewdriverWrench: IconDefinition = faScrewdriverWrench; - // processEquipment: Array; contacts: Array; faUser: IconDefinition = faUser; onSiteVisit: IdbOnSiteVisit; - constructor(private facilityIdbService: FacilityIdbService, private contactIdbService: ContactIdbService, + companyEnergyUnit: string; + constructor(private companyIdbService: CompanyIdbService, private contactIdbService: ContactIdbService, private assessmentIdbService: AssessmentIdbService, private onSiteVisitIdbService: OnSiteVisitIdbService ) { } ngOnInit() { + let company: IdbCompany = this.companyIdbService.selectedCompany.getValue(); + this.companyEnergyUnit = company.companyEnergyUnit; this.onSiteVisit = this.onSiteVisitIdbService.selectedVisit.getValue(); this.assessments = this.assessmentIdbService.assessments.getValue(); - // this.processEquipment = this.facilityIdbService.selectedFacility.getValue().processEquipment; this.contacts = this.contactIdbService.contacts.getValue(); } } diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component.html b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component.html index e6e28aac..21d0b4fd 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component.html +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component.html @@ -1,89 +1,45 @@ -
Process Equipment
-
-
-
-
- - {{equipment.equipmentName}} -
-
- - - - - - - - - - - - -
- Notes - - -
- Contacts - - -
-
- - - {{contact | contactNameDisplay}} - -
-
-
- - — - -
-
-
+
End Use Inventory
+ + + + + + + + + + + + + + + + +
+ Name + + Notes + + Stakeholders +
+ {{processEquipment.equipmentName}} + + + + @let associatedContacts = processEquipment.guid | associatedContacts:'processEquipment': contacts; + + + {{contact | contactNameDisplay}}
+
+
+ + — + +
+
+ + +
+ No end use inventory items added to this facility.
-
\ No newline at end of file + \ No newline at end of file diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component.spec.ts b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component.spec.ts index f09916c6..95732340 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component.spec.ts +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component.spec.ts @@ -3,31 +3,17 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ProcessEquipmentSummaryComponent } from './process-equipment-summary.component'; import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; import { HelperPipesModule } from 'src/app/shared/helper-pipes/_helper-pipes.module'; -import { FacilityIdbService } from 'src/app/indexed-db/facility-idb.service'; -import { BehaviorSubject } from 'rxjs'; -import { ContactIdbService } from 'src/app/indexed-db/contact-idb.service'; -import { IdbContact } from 'src/app/models/contact'; -import { ProcessEquipmentIdbService } from 'src/app/indexed-db/process-equipment-idb.service'; -import { IdbProcessEquipment } from 'src/app/models/processEquipment'; +import { stubServiceProviders } from 'src/app/spec-helpers/spec-test-service-stub'; +import { TableEntriesModule } from 'src/app/shared/table-entries/table-entries.module'; describe('ProcessEquipmentSummaryComponent', () => { let component: ProcessEquipmentSummaryComponent; let fixture: ComponentFixture; - - let contactIdbService: Partial = { - contacts: new BehaviorSubject>([]) - }; - let processEquipmentIdbService: Partial = { - processEquipments: new BehaviorSubject>([]) - } beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [FontAwesomeModule, HelperPipesModule], + imports: [FontAwesomeModule, HelperPipesModule, TableEntriesModule], declarations: [ProcessEquipmentSummaryComponent], - providers: [ - { provide: ContactIdbService, useValue: contactIdbService }, - { provide: ProcessEquipmentIdbService, useValue: processEquipmentIdbService } - ] + providers: stubServiceProviders }) .compileComponents(); diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component.ts b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component.ts index 9ca7c2ac..ca002566 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component.ts +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component.ts @@ -1,8 +1,10 @@ import { Component } from '@angular/core'; import { IconDefinition, faDiagramProject, faUser } from '@fortawesome/free-solid-svg-icons'; import { ContactIdbService } from 'src/app/indexed-db/contact-idb.service'; +import { FacilityIdbService } from 'src/app/indexed-db/facility-idb.service'; import { ProcessEquipmentIdbService } from 'src/app/indexed-db/process-equipment-idb.service'; import { IdbContact } from 'src/app/models/contact'; +import { IdbFacility } from 'src/app/models/facility'; import { IdbProcessEquipment } from 'src/app/models/processEquipment'; @Component({ @@ -13,15 +15,18 @@ import { IdbProcessEquipment } from 'src/app/models/processEquipment'; export class ProcessEquipmentSummaryComponent { faDiagramProject: IconDefinition = faDiagramProject; - processEquipment: Array; + processEquipments: Array; contacts: Array; faUser: IconDefinition = faUser; - constructor(private processEquipmentIdbService: ProcessEquipmentIdbService, private contactIdbService: ContactIdbService){ + constructor(private processEquipmentIdbService: ProcessEquipmentIdbService, private contactIdbService: ContactIdbService, + private facilityIdbService: FacilityIdbService + ) { } - ngOnInit(){ - this.processEquipment = this.processEquipmentIdbService.processEquipments.getValue(); + ngOnInit() { + let facility: IdbFacility = this.facilityIdbService.selectedFacility.getValue(); + this.processEquipments = this.processEquipmentIdbService.getFacilityProcessEquipment(facility.guid); this.contacts = this.contactIdbService.contacts.getValue(); } } diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/review-pre-visit-setup.component.html b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/review-pre-visit-setup.component.html index 0f8757d9..6ae25909 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/review-pre-visit-setup.component.html +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/review-pre-visit-setup.component.html @@ -15,6 +15,8 @@


+ +

diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/review-pre-visit-setup.component.spec.ts b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/review-pre-visit-setup.component.spec.ts index 7fcf35d6..9bb0df44 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/review-pre-visit-setup.component.spec.ts +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/review-pre-visit-setup.component.spec.ts @@ -2,15 +2,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ReviewPreVisitSetupComponent } from './review-pre-visit-setup.component'; import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; -import { BehaviorSubject } from 'rxjs'; -import { IdbCompany, getNewIdbCompany } from 'src/app/models/company'; -import { IdbFacility, getNewIdbFacility } from 'src/app/models/facility'; -import { CompanyIdbService } from 'src/app/indexed-db/company-idb.service'; -import { FacilityIdbService } from 'src/app/indexed-db/facility-idb.service'; -import { ContactIdbService } from 'src/app/indexed-db/contact-idb.service'; -import { AssessmentIdbService } from 'src/app/indexed-db/assessment-idb.service'; import { HelperPipesModule } from 'src/app/shared/helper-pipes/_helper-pipes.module'; -import { SetupWizardService } from 'src/app/setup-wizard/setup-wizard.service'; import { TeamDetailsSummaryComponent } from './team-details-summary/team-details-summary.component'; import { ProcessEquipmentSummaryComponent } from './process-equipment-summary/process-equipment-summary.component'; import { PreAssessmentSummaryComponent } from './pre-assessment-summary/pre-assessment-summary.component'; @@ -18,60 +10,18 @@ import { FacilityDetailsSummaryComponent } from './facility-details-summary/faci import { CompanyKpisSummaryComponent } from './company-kpis-summary/company-kpis-summary.component'; import { CompanyDetailsSummaryComponent } from './company-details-summary/company-details-summary.component'; import { TableEntriesModule } from 'src/app/shared/table-entries/table-entries.module'; -import { OnSiteVisitIdbService } from 'src/app/indexed-db/on-site-visit-idb.service'; -import { IdbOnSiteVisit, getNewIdbOnSiteVisit } from 'src/app/models/onSiteVisit'; -import { IdbContact } from 'src/app/models/contact'; -import { IdbAssessment } from 'src/app/models/assessment'; -import { KeyPerformanceIndicatorsIdbService } from 'src/app/indexed-db/key-performance-indicators-idb.service'; -import { IdbKeyPerformanceIndicator } from 'src/app/models/keyPerformanceIndicator'; -import { ProcessEquipmentIdbService } from 'src/app/indexed-db/process-equipment-idb.service'; -import { IdbProcessEquipment } from 'src/app/models/processEquipment'; +import { SystemInventorySummaryComponent } from './system-inventory-summary/system-inventory-summary.component'; +import { stubServiceProviders } from 'src/app/spec-helpers/spec-test-service-stub'; describe('ReviewPreVisitSetupComponent', () => { let component: ReviewPreVisitSetupComponent; let fixture: ComponentFixture; - let setupWizardService: Partial = { - sidebarOpen: new BehaviorSubject(false), - }; - let companyIdbService: Partial = { - companies: new BehaviorSubject>([]), - selectedCompany: new BehaviorSubject(getNewIdbCompany('')) - }; - let facilityIdbService: Partial = { - facilities: new BehaviorSubject>([]), - selectedFacility: new BehaviorSubject(getNewIdbFacility('', '')) - }; - let onSiteVisitIdbService: Partial = { - selectedVisit: new BehaviorSubject(getNewIdbOnSiteVisit('', '', '')) - }; - - let contactIdbService: Partial = { - contacts: new BehaviorSubject>([]) - }; - let assessmentIdbService: Partial = { - assessments: new BehaviorSubject>([]) - }; - let keyPerformanceIndicatorIdbService: Partial = { - keyPerformanceIndicators: new BehaviorSubject>([]) - }; - let processEquipmentIdbService: Partial = { - processEquipments: new BehaviorSubject>([]) - } beforeEach(async () => { await TestBed.configureTestingModule({ imports: [FontAwesomeModule, HelperPipesModule, TableEntriesModule], - declarations: [ReviewPreVisitSetupComponent, TeamDetailsSummaryComponent, ProcessEquipmentSummaryComponent, PreAssessmentSummaryComponent, FacilityDetailsSummaryComponent, CompanyKpisSummaryComponent, CompanyDetailsSummaryComponent], - providers: [ - { provide: SetupWizardService, useValue: setupWizardService }, - { provide: CompanyIdbService, useValue: companyIdbService }, - { provide: FacilityIdbService, useValue: facilityIdbService }, - { provide: ContactIdbService, useValue: contactIdbService }, - { provide: AssessmentIdbService, useValue: assessmentIdbService }, - { provide: OnSiteVisitIdbService, useValue: onSiteVisitIdbService }, - { provide: KeyPerformanceIndicatorsIdbService, useValue: keyPerformanceIndicatorIdbService }, - { provide: ProcessEquipmentIdbService, useValue: processEquipmentIdbService } - ] + declarations: [ReviewPreVisitSetupComponent, TeamDetailsSummaryComponent, ProcessEquipmentSummaryComponent, PreAssessmentSummaryComponent, FacilityDetailsSummaryComponent, CompanyKpisSummaryComponent, CompanyDetailsSummaryComponent, SystemInventorySummaryComponent], + providers: stubServiceProviders }) .compileComponents(); diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/system-inventory-summary/system-inventory-summary.component.css b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/system-inventory-summary/system-inventory-summary.component.css new file mode 100644 index 00000000..e69de29b diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/system-inventory-summary/system-inventory-summary.component.html b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/system-inventory-summary/system-inventory-summary.component.html new file mode 100644 index 00000000..55a1e0f9 --- /dev/null +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/system-inventory-summary/system-inventory-summary.component.html @@ -0,0 +1,61 @@ +
Industrial System Inventory
+ + + + + + + + + + + + + + + + + + + + +
+ Name + + Industrial
System +
+ Utility
Type +
+ Energy Use
+ + (/yr) + +
+ Stakeholders +
+ {{energyEquipment.equipmentName}} + + + + + + + + @let associatedContacts = energyEquipment.guid | associatedContacts:'energyEquipment': contacts; + + + {{contact | contactNameDisplay}}
+
+
+ + — + +
+
+ + +
+ No system inventory equipment added to this facility. +
+
\ No newline at end of file diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/system-inventory-summary/system-inventory-summary.component.spec.ts b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/system-inventory-summary/system-inventory-summary.component.spec.ts new file mode 100644 index 00000000..33188c1f --- /dev/null +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/system-inventory-summary/system-inventory-summary.component.spec.ts @@ -0,0 +1,29 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SystemInventorySummaryComponent } from './system-inventory-summary.component'; +import { stubServiceProviders } from 'src/app/spec-helpers/spec-test-service-stub'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; +import { TableEntriesModule } from 'src/app/shared/table-entries/table-entries.module'; +import { HelperPipesModule } from 'src/app/shared/helper-pipes/_helper-pipes.module'; + +describe('SystemInventorySummaryComponent', () => { + let component: SystemInventorySummaryComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [FontAwesomeModule, HelperPipesModule, TableEntriesModule], + declarations: [SystemInventorySummaryComponent], + providers: stubServiceProviders + }) + .compileComponents(); + + fixture = TestBed.createComponent(SystemInventorySummaryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/system-inventory-summary/system-inventory-summary.component.ts b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/system-inventory-summary/system-inventory-summary.component.ts new file mode 100644 index 00000000..f1988034 --- /dev/null +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/system-inventory-summary/system-inventory-summary.component.ts @@ -0,0 +1,40 @@ +import { Component } from '@angular/core'; +import { faList, IconDefinition } from '@fortawesome/free-solid-svg-icons'; +import { CompanyIdbService } from 'src/app/indexed-db/company-idb.service'; +import { ContactIdbService } from 'src/app/indexed-db/contact-idb.service'; +import { EnergyEquipmentIdbService } from 'src/app/indexed-db/energy-equipment-idb.service'; +import { FacilityIdbService } from 'src/app/indexed-db/facility-idb.service'; +import { IdbCompany } from 'src/app/models/company'; +import { IdbContact } from 'src/app/models/contact'; +import { IdbEnergyEquipment } from 'src/app/models/energyEquipment'; +import { IdbFacility } from 'src/app/models/facility'; + +@Component({ + selector: 'app-system-inventory-summary', + templateUrl: './system-inventory-summary.component.html', + styleUrl: './system-inventory-summary.component.css' +}) +export class SystemInventorySummaryComponent { + + faList: IconDefinition = faList; + + facility: IdbFacility; + energyEquipments: Array; + + companyEnergyUnit: string; + + contacts: Array; + constructor(private facilityIdbService: FacilityIdbService, + private energyEquipmentIdbService: EnergyEquipmentIdbService, + private companyIdbService: CompanyIdbService, + private contactIdbService: ContactIdbService + ) { } + + ngOnInit() { + let company: IdbCompany = this.companyIdbService.selectedCompany.getValue(); + this.companyEnergyUnit = company.companyEnergyUnit; + this.facility = this.facilityIdbService.selectedFacility.getValue(); + this.energyEquipments = this.energyEquipmentIdbService.getByOtherGuid(this.facility.guid, 'facility'); + this.contacts = this.contactIdbService.contacts.getValue(); + } +} diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component.css b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component.css deleted file mode 100644 index d4b8e8c6..00000000 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component.css +++ /dev/null @@ -1,3 +0,0 @@ -.card-header{ - background-color: white; -} \ No newline at end of file diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component.html b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component.html deleted file mode 100644 index 421747d8..00000000 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component.html +++ /dev/null @@ -1,107 +0,0 @@ -
-
- {{contact | contactNameDisplay}} -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Phone - - -
- Email - - -
- Title - - -
- Team - - -
- Notes - - -
- KPIs - - -
-
- -
-
-
- - — - -
- End Use - - -
-
- {{processEquipmentId - | processEquipmentDisplay: processEquipment}} -
-
-
- - — - -
- Assessments - - -
-
- {{assessmentId | - assessmentNameDisplay: assessments}} -
-
-
- - — - -
-
-
\ No newline at end of file diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component.spec.ts b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component.spec.ts deleted file mode 100644 index f8a45108..00000000 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component.spec.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { ContactSummaryCardComponent } from './contact-summary-card.component'; -import { getNewIdbContact } from 'src/app/models/contact'; -import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; -import { HelperPipesModule } from 'src/app/shared/helper-pipes/_helper-pipes.module'; -import { TableEntriesModule } from 'src/app/shared/table-entries/table-entries.module'; -import { BehaviorSubject } from 'rxjs'; -import { FacilityIdbService } from 'src/app/indexed-db/facility-idb.service'; -import { IdbFacility, getNewIdbFacility } from 'src/app/models/facility'; -import { AssessmentIdbService } from 'src/app/indexed-db/assessment-idb.service'; -import { IdbAssessment } from 'src/app/models/assessment'; -import { ProcessEquipmentIdbService } from 'src/app/indexed-db/process-equipment-idb.service'; -import { IdbProcessEquipment } from 'src/app/models/processEquipment'; - -describe('ContactSummaryCardComponent', () => { - let component: ContactSummaryCardComponent; - let fixture: ComponentFixture; - - let facilityIdbService: Partial = { - facilities: new BehaviorSubject>([]), - selectedFacility: new BehaviorSubject(getNewIdbFacility('', '')) - }; - let assessmentIdbService: Partial = { - assessments: new BehaviorSubject>([]) - }; - let processEquipmentIdbService: Partial = { - processEquipments: new BehaviorSubject>([]) - }; - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [FontAwesomeModule, HelperPipesModule, TableEntriesModule], - declarations: [ContactSummaryCardComponent], - providers: [ - { provide: AssessmentIdbService, useValue: assessmentIdbService }, - { provide: FacilityIdbService, useValue: facilityIdbService }, - { provide: ProcessEquipmentIdbService, useValue: processEquipmentIdbService } - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ContactSummaryCardComponent); - component = fixture.componentInstance; - component.contact = getNewIdbContact('', ''); - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component.ts b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component.ts deleted file mode 100644 index 71858f7e..00000000 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Component, Input } from '@angular/core'; -import { IconDefinition, faUser } from '@fortawesome/free-solid-svg-icons'; -import { AssessmentIdbService } from 'src/app/indexed-db/assessment-idb.service'; -import { ProcessEquipmentIdbService } from 'src/app/indexed-db/process-equipment-idb.service'; -import { IdbAssessment } from 'src/app/models/assessment'; -import { IdbContact } from 'src/app/models/contact'; -import { IdbProcessEquipment } from 'src/app/models/processEquipment'; - -@Component({ - selector: 'app-contact-summary-card', - templateUrl: './contact-summary-card.component.html', - styleUrl: './contact-summary-card.component.css' -}) -export class ContactSummaryCardComponent { - @Input() - contact: IdbContact; - - assessments: Array; - processEquipment: Array; - faUser: IconDefinition = faUser; - constructor(private assessmentIdbService: AssessmentIdbService, - private processEquipmentIdbService: ProcessEquipmentIdbService - ) { - } - - ngOnInit() { - this.assessments = this.assessmentIdbService.assessments.getValue(); - this.processEquipment = this.processEquipmentIdbService.processEquipments.getValue(); - } -} diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/team-details-summary.component.html b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/team-details-summary.component.html index 61742a64..0de9a0ac 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/team-details-summary.component.html +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/team-details-summary.component.html @@ -1,7 +1,43 @@ -
Stakeholders Details
-
-
- + + + + + + + + + + + + + + + + + + +
+ Name + + Title + + Team + + Notes +
+ {{contact | contactNameDisplay}} + + + + + + +
+
+ + +
+ No stakeholders added to this company.
-
\ No newline at end of file + \ No newline at end of file diff --git a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/team-details-summary.component.spec.ts b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/team-details-summary.component.spec.ts index f98ce771..c738d883 100644 --- a/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/team-details-summary.component.spec.ts +++ b/src/app/setup-wizard/pre-visit/review-pre-visit-setup/team-details-summary/team-details-summary.component.spec.ts @@ -1,7 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { TeamDetailsSummaryComponent } from './team-details-summary.component'; -import { ContactSummaryCardComponent } from './contact-summary-card/contact-summary-card.component'; import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; import { HelperPipesModule } from 'src/app/shared/helper-pipes/_helper-pipes.module'; import { ContactIdbService } from 'src/app/indexed-db/contact-idb.service'; @@ -24,7 +23,7 @@ describe('TeamDetailsSummaryComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ imports: [ FontAwesomeModule, HelperPipesModule], - declarations: [TeamDetailsSummaryComponent, ContactSummaryCardComponent], + declarations: [TeamDetailsSummaryComponent], providers: [ { provide: ContactIdbService, useValue: contactIdbService }, { provide: OnSiteVisitIdbService, useValue: onSiteVisitIdbService } diff --git a/src/app/setup-wizard/setup-wizard-help-panel/assessment-nebs-help/assessment-nebs-help.component.html b/src/app/setup-wizard/setup-wizard-help-panel/assessment-nebs-help/assessment-nebs-help.component.html index 1cc9e136..c46f157e 100644 --- a/src/app/setup-wizard/setup-wizard-help-panel/assessment-nebs-help/assessment-nebs-help.component.html +++ b/src/app/setup-wizard/setup-wizard-help-panel/assessment-nebs-help/assessment-nebs-help.component.html @@ -1,4 +1,4 @@ -

+

If NEBs are found that cannot be associated with a specific energy efficiency opportunity, then they should be added here. @@ -9,7 +9,7 @@ equipment or meet a secondary goal.


-

+

Non-Energy Benefits can be added to assessment with the " Add NEB" button.

@@ -27,13 +27,13 @@


-

+

Once a NEB is entered, "Key Performance Metric Impacts" can be added. These are impacts that the NEB has on performance metrics the company is tracking.

-

+

The " Search Key Performance Metrics" button will open a modal with a list of all performance metrics in the tool. If a metric is known to be typically associated with the NEB, it will be diff --git a/src/app/setup-wizard/setup-wizard-help-panel/company-contacts-help/company-contacts-help.component.html b/src/app/setup-wizard/setup-wizard-help-panel/company-contacts-help/company-contacts-help.component.html index c058ddc8..7727fa85 100644 --- a/src/app/setup-wizard/setup-wizard-help-panel/company-contacts-help/company-contacts-help.component.html +++ b/src/app/setup-wizard/setup-wizard-help-panel/company-contacts-help/company-contacts-help.component.html @@ -1,4 +1,18 @@

Enter stakeholder details of people that will be invested in the companies quest to find Non-Energy Benefits!

+
+

+ + These are people who could help gather data regarding Key Performance Indicators and Metrics (KPIs and KPMs), energy + use, or would be interested in results. +

+
+

+ This information can be used to help get in contact with these individuals later on in the process. +

+
+

+ Stakeholders can be attached to KPIs, NEBs, Industrial Systems, and End Uses. +


\ No newline at end of file diff --git a/src/app/setup-wizard/setup-wizard-help-panel/company-kpi-detail-help/company-kpi-detail-help.component.html b/src/app/setup-wizard/setup-wizard-help-panel/company-kpi-detail-help/company-kpi-detail-help.component.html index aa8d5d13..8c291fed 100644 --- a/src/app/setup-wizard/setup-wizard-help-panel/company-kpi-detail-help/company-kpi-detail-help.component.html +++ b/src/app/setup-wizard/setup-wizard-help-panel/company-kpi-detail-help/company-kpi-detail-help.component.html @@ -1,13 +1,13 @@ -

+

Key Performance Indicators (KPI) and Key Performance Metrics (KPMs)

-

+

Key Performance Indicators (KPI) are the critical (key) quantifiable indicators of progress toward an intended result and are used to track progress towards business objectives.

-

+

Key Performance Metrics (KPMs) refers to quantifiable measurements an organization uses to track performance.

diff --git a/src/app/setup-wizard/setup-wizard-help-panel/company-kpi-select-help/company-kpi-select-help.component.html b/src/app/setup-wizard/setup-wizard-help-panel/company-kpi-select-help/company-kpi-select-help.component.html index 6e786804..7f8b8694 100644 --- a/src/app/setup-wizard/setup-wizard-help-panel/company-kpi-select-help/company-kpi-select-help.component.html +++ b/src/app/setup-wizard/setup-wizard-help-panel/company-kpi-select-help/company-kpi-select-help.component.html @@ -1,13 +1,13 @@ -

+

Key Performance Indicators (KPI) and Key Performance Metrics (KPMs)

-

+

Key Performance Indicators (KPI) are the critical (key) quantifiable indicators of progress toward an intended result and are used to track progress towards business objectives.

-

+

Key Performance Metrics (KPMs) refers to quantifiable measurements an organization uses to track performance.

diff --git a/src/app/setup-wizard/setup-wizard-help-panel/company-setup-help/company-setup-help.component.html b/src/app/setup-wizard/setup-wizard-help-panel/company-setup-help/company-setup-help.component.html index ab8c95a0..e814e1a6 100644 --- a/src/app/setup-wizard/setup-wizard-help-panel/company-setup-help/company-setup-help.component.html +++ b/src/app/setup-wizard/setup-wizard-help-panel/company-setup-help/company-setup-help.component.html @@ -1,4 +1,13 @@

- Provide details about the company + Provide details about the company. +

+
+

+ Company Name is the only required field, all others are optional. +

+
+

+ Energy Results Unit sets the roll up unit for combining energy results from different utilities. It defaults to + MMBtu.


\ No newline at end of file diff --git a/src/app/setup-wizard/setup-wizard-help-panel/end-uses-help/end-uses-help.component.html b/src/app/setup-wizard/setup-wizard-help-panel/end-uses-help/end-uses-help.component.html index c995827e..f2565863 100644 --- a/src/app/setup-wizard/setup-wizard-help-panel/end-uses-help/end-uses-help.component.html +++ b/src/app/setup-wizard/setup-wizard-help-panel/end-uses-help/end-uses-help.component.html @@ -1,4 +1,12 @@

Add end uses to the inventory for the selected facility.

+
+

+ Name and make notes about end uses of outputs of the Industrial Systems. +

+
+

+ Click the Stakeholders button to connect stakeholders to the equipment. +


\ No newline at end of file diff --git a/src/app/setup-wizard/setup-wizard-help-panel/energy-equipment-help/energy-equipment-help.component.html b/src/app/setup-wizard/setup-wizard-help-panel/energy-equipment-help/energy-equipment-help.component.html index d381c7d7..40b37c90 100644 --- a/src/app/setup-wizard/setup-wizard-help-panel/energy-equipment-help/energy-equipment-help.component.html +++ b/src/app/setup-wizard/setup-wizard-help-panel/energy-equipment-help/energy-equipment-help.component.html @@ -1,4 +1,48 @@

- Add equipment to the "Industrial System Inventory" for the selected facility. + Add equipment to the "Industrial System Inventory" for the selected facility.

+
+

+ This inventory focuses on equipment related to assessments that are being conducted: larger motor driven systems + (pumps, fans, compressors), process heating equipment, steam equipment. Systems like lighting equipment, HVAC + systems, and mobile equipment can also be tracked. +

+
+

+ Setting the "Industrial System" sets the energy-related fields in the form. +

+
+

+ Utility Type sets the units available for Total + Size. +

+
+

+ Enter nameplate data for Total Size to begin estimating the energy used by the system. +

+
+

+ Operating Hours refers to the hours the equipment (not the entire facility) is operating. +

+
+

+ Load Factor refers to the fraction of the nameplate size power that is being used. +

+
+

+ Efficiency refers to the energy efficiency of the equipment. +

+
+

+ Number of Equipment can be utilized if multiple equipment is about the same size. +

+
+

+ Notes can be used to help start to take notes about the equipment and how it connects to + end users and potential + NEBs. +

+
+

+ Click the Stakeholders button to connect stakeholders to the equipment.


\ No newline at end of file diff --git a/src/app/setup-wizard/setup-wizard-help-panel/facility-setup-help/facility-setup-help.component.html b/src/app/setup-wizard/setup-wizard-help-panel/facility-setup-help/facility-setup-help.component.html index 95a8bfbf..a26ba0da 100644 --- a/src/app/setup-wizard/setup-wizard-help-panel/facility-setup-help/facility-setup-help.component.html +++ b/src/app/setup-wizard/setup-wizard-help-panel/facility-setup-help/facility-setup-help.component.html @@ -1,4 +1,23 @@

- Provide details about the facility + Provide details about the facility. +

+
+

+ Facility Name is the only required field, all others are optional. Tracked Utilities is highly recommended. +

+
+

+ Tracked Utilities is the place to enter annual data regarding different utilities (electricity, natural gas, water, + etc.) +

+
+

+ Focus on utilities connected to the system being assessed (electricity for pumps, fans, motors, etc.; natural gas + for heating, steam, etc.). +

+
+

+ The "Compressed Air" and "Steam" utilities are used when compressed air and steam cross the facility fence and are + not produced on-site.


\ No newline at end of file diff --git a/src/app/setup-wizard/setup-wizard-help-panel/pre-assessment-help/pre-assessment-help.component.html b/src/app/setup-wizard/setup-wizard-help-panel/pre-assessment-help/pre-assessment-help.component.html index be5a490b..2293e38a 100644 --- a/src/app/setup-wizard/setup-wizard-help-panel/pre-assessment-help/pre-assessment-help.component.html +++ b/src/app/setup-wizard/setup-wizard-help-panel/pre-assessment-help/pre-assessment-help.component.html @@ -8,6 +8,14 @@


- Details about the results of the assessment can be entered during the data collection phase. + Details about the results of the assessment can also be entered during the data collection phase. In the + pre-assessment, this is a high level estimate of the annual energy used by the system being assessed. It will be + used to estimate the relative change in utility use caused by implementing the opportunities found in the assessment + (percent savings). +

+
+

+ If the assessment is a Treasure Hunt, please put in the facility-level annual use for any utility where savings may + be found. Units can be set independently.


\ No newline at end of file diff --git a/src/app/setup-wizard/setup-wizard-help-panel/rollup-report-help/rollup-report-help.component.html b/src/app/setup-wizard/setup-wizard-help-panel/rollup-report-help/rollup-report-help.component.html index e08d0a4e..53b68d0d 100644 --- a/src/app/setup-wizard/setup-wizard-help-panel/rollup-report-help/rollup-report-help.component.html +++ b/src/app/setup-wizard/setup-wizard-help-panel/rollup-report-help/rollup-report-help.component.html @@ -1,4 +1,5 @@

- This page is coming soon. It will provide a rollup summary of all the assessments in the visit. + A rollup report of the assessments is provided. This report includes details about the impacts on individual KPMs + and simple payback periods for the assessments.


\ No newline at end of file diff --git a/src/app/setup-wizard/setup-wizard-help-panel/setup-wizard-help-panel.component.css b/src/app/setup-wizard/setup-wizard-help-panel/setup-wizard-help-panel.component.css index 3112486f..d6b687b9 100644 --- a/src/app/setup-wizard/setup-wizard-help-panel/setup-wizard-help-panel.component.css +++ b/src/app/setup-wizard/setup-wizard-help-panel/setup-wizard-help-panel.component.css @@ -29,7 +29,7 @@ .panel-label{ - display: inline-block; + display: inline-block !important; line-height: normal; overflow: hidden; text-overflow: ellipsis; diff --git a/src/app/setup-wizard/setup-wizard-help-panel/setup-wizard-help-panel.component.html b/src/app/setup-wizard/setup-wizard-help-panel/setup-wizard-help-panel.component.html index 25166124..5a2548eb 100644 --- a/src/app/setup-wizard/setup-wizard-help-panel/setup-wizard-help-panel.component.html +++ b/src/app/setup-wizard/setup-wizard-help-panel/setup-wizard-help-panel.component.html @@ -1,7 +1,7 @@
-
+
diff --git a/src/app/setup-wizard/setup-wizard.module.ts b/src/app/setup-wizard/setup-wizard.module.ts index 94fe9e08..f7aade1b 100644 --- a/src/app/setup-wizard/setup-wizard.module.ts +++ b/src/app/setup-wizard/setup-wizard.module.ts @@ -17,7 +17,6 @@ import { ContactModalModule } from '../shared/contact-modal/contact-modal.module import { ReviewOnSiteComponent } from './data-collection/review-on-site/review-on-site.component'; import { CompanyDetailsSummaryComponent } from './pre-visit/review-pre-visit-setup/company-details-summary/company-details-summary.component'; import { TeamDetailsSummaryComponent } from './pre-visit/review-pre-visit-setup/team-details-summary/team-details-summary.component'; -import { ContactSummaryCardComponent } from './pre-visit/review-pre-visit-setup/team-details-summary/contact-summary-card/contact-summary-card.component'; import { CompanyKpisSummaryComponent } from './pre-visit/review-pre-visit-setup/company-kpis-summary/company-kpis-summary.component'; import { FacilityDetailsSummaryComponent } from './pre-visit/review-pre-visit-setup/facility-details-summary/facility-details-summary.component'; import { ProcessEquipmentSummaryComponent } from './pre-visit/review-pre-visit-setup/process-equipment-summary/process-equipment-summary.component'; @@ -46,6 +45,7 @@ import { SharedCompanyFormsModule } from "../shared/shared-company-forms/shared- import { SharedFacilityFormsModule } from '../shared/shared-facility-forms/shared-facility-forms.module'; import { AssessmentEnergyOpportunitiesFormComponent } from './data-collection/on-site-assessment/assessment-energy-opportunities-form/assessment-energy-opportunities-form.component'; import { CompanyContactsSetupFormComponent } from './pre-visit/company-contacts-setup/company-contacts-setup-form/company-contacts-setup-form.component'; +import { SystemInventorySummaryComponent } from './pre-visit/review-pre-visit-setup/system-inventory-summary/system-inventory-summary.component'; @NgModule({ declarations: [ @@ -60,7 +60,6 @@ import { CompanyContactsSetupFormComponent } from './pre-visit/company-contacts- ReviewOnSiteComponent, CompanyDetailsSummaryComponent, TeamDetailsSummaryComponent, - ContactSummaryCardComponent, CompanyKpisSummaryComponent, FacilityDetailsSummaryComponent, ProcessEquipmentSummaryComponent, @@ -79,7 +78,8 @@ import { CompanyContactsSetupFormComponent } from './pre-visit/company-contacts- OnSiteAssessmentResultsComponent, FacilityEnergyEquipmentSetupComponent, AssessmentEnergyOpportunitiesFormComponent, - CompanyContactsSetupFormComponent + CompanyContactsSetupFormComponent, + SystemInventorySummaryComponent ], imports: [ CommonModule, diff --git a/src/app/shared/constants/keyPerformanceIndicatorOptions.ts b/src/app/shared/constants/keyPerformanceIndicatorOptions.ts index 78d0a4f5..97f52a7f 100644 --- a/src/app/shared/constants/keyPerformanceIndicatorOptions.ts +++ b/src/app/shared/constants/keyPerformanceIndicatorOptions.ts @@ -18,9 +18,11 @@ export type KeyPerformanceIndicatorValue = 'reduceExpenseCost' | 'improveSpaceUtilization' | 'employeeEngagementWorkforceDevelopment' | - 'employeeEngagementWorkingEnvironment' | + 'employeeEngagementWorkingEnvironment' | 'maintenanceExpense' | - 'other'; + 'other' | + 'airPollutantEmissions' | + 'waterPollutantEmissions'; export interface KeyPerformanceIndicatorOption { primaryKPI: PrimaryKPI, @@ -110,10 +112,22 @@ export const KeyPerformanceIndicatorOptions: Array2, NOx, SOx emissions', + label: 'GHG Emissions', + htmlLabel: 'GHG Emissions', optionValue: 'chemicalEmissions' }, + { + primaryKPI: 'Sustainability (Environmental Impact)', + label: 'Air Pollutant Emissions', + htmlLabel: 'Air Pollutant Emissions', + optionValue: 'airPollutantEmissions' + }, + { + primaryKPI: 'Sustainability (Environmental Impact)', + label: 'Water Pollutant Emissions', + htmlLabel: 'Water Pollutant Emissions', + optionValue: 'waterPollutantEmissions' + }, { primaryKPI: 'Sustainability (Environmental Impact)', label: 'Reduce Refrigerant Gas Emissions', diff --git a/src/app/shared/constants/keyPerformanceMetrics.ts b/src/app/shared/constants/keyPerformanceMetrics.ts index 9e902a59..d6bac027 100644 --- a/src/app/shared/constants/keyPerformanceMetrics.ts +++ b/src/app/shared/constants/keyPerformanceMetrics.ts @@ -83,7 +83,6 @@ export type KeyPerformanceMetricValue = 'percentTotalOrCost' | 'consumptionCostWater' | 'consumptionCostSewage' | - 'percentOrTotalChemicalEmissions' | 'percentOrTotalRefrigerantEmissions' | 'TRIR' | 'oshaRecordableIncidents' | @@ -104,7 +103,15 @@ export type KeyPerformanceMetricValue = 'treatmentChemicals' | 'rawMaterials' | 'intermediateGoods' | - 'custom'; + 'custom' | + 'scope1Emissions' | + 'scope2Emissions' | + 'scope3Emissions' | + 'percentTestsMeetingStandardsAirPollutants' | + 'noxSoxCoEmissions' | + 'particulateEmissions' | + 'percentTestsMeetingStandardsWaterPollutants' | + 'sewageCosts'; export type KpmCalculationMethod = 'costPerUnit' | 'percentTotal' | 'directCost'; @@ -534,10 +541,73 @@ export const KeyPerformanceMetricOptions: Array = [ calculationMethod: 'percentTotal' }, { - label: "Quantity", - htmlLabel: "Quantity", - value: "percentOrTotalChemicalEmissions", + label: "Scope 1 Emissions", + htmlLabel: "Scope 1 Emissions", + value: "scope1Emissions", + kpiValue: "chemicalEmissions", + isQuantitative: true, + goalToIncrease: false, + totalUnit: 'tonne CO2e', + timePeriod: 'yr', + calculationMethod: 'costPerUnit' + }, + { + label: "Scope 2 Emissions", + htmlLabel: "Scope 2 Emissions", + value: "scope2Emissions", + kpiValue: "chemicalEmissions", + totalUnit: 'tonne CO2e', + isQuantitative: true, + goalToIncrease: false, + timePeriod: 'yr', + calculationMethod: 'costPerUnit' + }, + { + label: "Scope 3 Emissions", + htmlLabel: "Scope 3 Emissions", + value: "scope3Emissions", kpiValue: "chemicalEmissions", + totalUnit: 'tonne CO2e', + isQuantitative: true, + goalToIncrease: false, + timePeriod: 'yr', + calculationMethod: 'costPerUnit' + }, + { + label: "Particulate Emissions", + htmlLabel: "Particulate Emissions", + value: "particulateEmissions", + kpiValue: "airPollutantEmissions", + isQuantitative: true, + goalToIncrease: false, + timePeriod: 'yr', + calculationMethod: 'percentTotal' + }, + { + label: "NOx, SOx, CO Emissions", + htmlLabel: "NOx, SOx, CO Emissions", + value: "noxSoxCoEmissions", + kpiValue: "airPollutantEmissions", + isQuantitative: true, + goalToIncrease: false, + timePeriod: 'yr', + calculationMethod: 'percentTotal' + }, + { + label: "Percent of tests that meet regulatory standards", + htmlLabel: "Percent of tests that meet regulatory standards", + value: "percentTestsMeetingStandardsAirPollutants", + kpiValue: "airPollutantEmissions", + isQuantitative: true, + goalToIncrease: false, + timePeriod: 'yr', + calculationMethod: 'percentTotal' + }, + { + label: "Percent of tests that meet regulatory standards", + htmlLabel: "Percent of tests that meet regulatory standards", + value: "percentTestsMeetingStandardsWaterPollutants", + kpiValue: "waterPollutantEmissions", isQuantitative: true, goalToIncrease: false, timePeriod: 'yr', @@ -753,5 +823,16 @@ export const KeyPerformanceMetricOptions: Array = [ goalToIncrease: false, timePeriod: 'yr', calculationMethod: 'directCost' + },, + { + label: "Sewage Costs", + htmlLabel: "Sewage Costs", + value: "sewageCosts", + kpiValue: "waterConsumption", + isQuantitative: true, + totalUnit: '', + goalToIncrease: false, + timePeriod: 'yr', + calculationMethod: 'directCost' }, ] \ No newline at end of file diff --git a/src/app/shared/constants/nonEnergyBenefitOptions.ts b/src/app/shared/constants/nonEnergyBenefitOptions.ts index 17c32e99..81dbcbdc 100644 --- a/src/app/shared/constants/nonEnergyBenefitOptions.ts +++ b/src/app/shared/constants/nonEnergyBenefitOptions.ts @@ -4,9 +4,6 @@ export interface NebOption { label: string, htmlLabel: string, optionValue: NebOptionValue, - // riskReduction: boolean, - // valuePropositionIncrease: boolean, - // decreaseCosts: boolean, isQualitative: boolean, howToCalculate: string, KPM: Array, @@ -22,11 +19,11 @@ export type NebOptionValue = 'improvedImageOrReputation' | 'increasedCustomerLoyalty' | 'improvedSupplyChainRelationships' | 'increasedProductivity' | - 'lessTimeToMakeGoods' | - 'equipmentRunningWithoutNonconformingProduct' | - 'reduceMalfunctionOrBreakdownIndustrialTrucks' | + 'shorterCycleTime' | + 'increaseEquipmentUptime' | + 'reduceIndustrialTrucksDowntime' | 'delayReplacementEquipment' | - 'fasterTimeMoreFlexibilityMoreProducts' | + 'increaseProdScheduleFlexibility' | 'improvedProductQualityMachineSource' | 'improvedProductQualityOperatorSource' | 'improvedProductQualityDebrisContamination' | @@ -50,11 +47,25 @@ export type NebOptionValue = 'improvedImageOrReputation' | 'improveAmbientAirQuality' | 'improvedThermalComfort' | 'improvedVisualComfort' | - 'improvedWorkingEnvironment' | + 'increaseEmployeeEngagement' | 'changeAddQualityJobs' | - 'justice40Initiatives' | - 'improvedStaffSatisfactionLoyalty' | - 'reduceStaffTurnover' + 'improveCommunityConditions' | + 'improvedStaffSatisfaction' | + 'increaseUsefulEquipmentLife' | + 'increaseAverageYearsEmployed' | + 'reduceStaffTurnover' | + 'reducePPE' | + 'increaseUsefulEquipmentLife' | + 'reduceUnscheduledBreaks' | + 'reduceWorkplaceIncidentsRelatedToHeat' | + 'increaseWorkplaceSecurity' | + 'increaseEnergyResiliency' | + 'reduceNeedOshaHearingProgram' | + 'reduceUnsafeOperatorActs' | + 'reduceLikelinessOfOccupationalDangers' | + 'reduceCostsForLabor' | + 'reduceRegulatoryCosts' | + 'improvedWaterQuality'; export const NebOptions: Array = [ @@ -62,9 +73,6 @@ export const NebOptions: Array = [ label: "Improved image or reputation", htmlLabel: "Improved image or reputation", optionValue: "improvedImageOrReputation", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "salesGrowth", "customerSatisfactionRatings", "lostCustomerSales", "customerChurnRate", "supplierSatisfactionRatings"], @@ -74,21 +82,15 @@ export const NebOptions: Array = [ label: "Improved stakeholder relationship", htmlLabel: "Improved stakeholder relationship", optionValue: "improvedStakeholderRelationship", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "salesGrowth", "customerSatisfactionRatings", "lostCustomerSales", "customerChurnRate", "supplierSatisfactionRatings"], selectedKPM: [] }, { - label: "New customers", - htmlLabel: "New customers", + label: "Gain new customers", + htmlLabel: "Gain new customers", optionValue: "newCustomers", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "salesGrowth", "lostCustomerSales", "customerChurnRate"], @@ -98,21 +100,15 @@ export const NebOptions: Array = [ label: "Increased customer satisfaction", htmlLabel: "Increased customer satisfaction", optionValue: "increasedCustomerSatisfaction", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "salesGrowth", "customerSatisfactionRatings", "lostCustomerSales", "customerChurnRate"], selectedKPM: [] }, { - label: "Reduce customer loss through better performance: quality, cost and delivery", - htmlLabel: "Reduce customer loss through better performance: quality, cost and delivery", + label: "Improve customer retention through improved performance", + htmlLabel: "Improve customer retention through improved performance", optionValue: "reduceCustomerLossThroughBetterPerformance", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "salesGrowth", "customerSatisfactionRatings", "lostCustomerSales", "customerChurnRate"], @@ -122,9 +118,6 @@ export const NebOptions: Array = [ label: "Increased customer loyalty", htmlLabel: "Increased customer loyalty", optionValue: "increasedCustomerLoyalty", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "salesGrowth", "customerSatisfactionRatings", "lostCustomerSales", "customerChurnRate"], @@ -134,9 +127,6 @@ export const NebOptions: Array = [ label: "Improved supply chain relationships", htmlLabel: "Improved supply chain relationships", optionValue: "improvedSupplyChainRelationships", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "supplierSatisfactionRatings"], @@ -146,105 +136,87 @@ export const NebOptions: Array = [ label: "Increased Productivity", htmlLabel: "Increased Productivity", optionValue: "increasedProductivity", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "salesGrowth", "productivityRateThroughput", "productionCosts", "cycleTimeToMakeGoods", "percentOnTimeToDueDate", "revenuePerEmployee", "perUnitProductCost", "percentCapacityUtilization", "overallEquipmentEffectiveness", "timeToIntroduceNewProducts"], selectedKPM: [] }, { - label: "Less time to make goods", - htmlLabel: "Less time to make goods", - optionValue: "lessTimeToMakeGoods", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, + label: "Shorter cycle (make) time", + htmlLabel: "Shorter cycle (make) time", + optionValue: "shorterCycleTime", isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "salesGrowth", "productivityRateThroughput", "productionCosts", "cycleTimeToMakeGoods", "percentOnTimeToDueDate", "revenuePerEmployee", "perUnitProductCost", "percentCapacityUtilization", "overallEquipmentEffectiveness", "timeToIntroduceNewProducts", "workInProcess"], selectedKPM: [] }, { - label: "More productive time equipment is running without nonconforming product", - htmlLabel: "More productive time equipment is running without nonconforming product", - optionValue: "equipmentRunningWithoutNonconformingProduct", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, + label: "Increase equipment uptime", + htmlLabel: "Increase equipment uptime", + optionValue: "increaseEquipmentUptime", isQualitative: true, howToCalculate: "N/A", KPM: ["numberEquipmentCausedDefects", "equipmentDowntime", "percentCapacityUtilization", "overallEquipmentEffectiveness", "percentProductionYield", "percentShrinkage", "hazardousDisposalCosts", "nonHazardousDisposalCosts", "percentTotalOrCost", "employeeEngagementSatisfaction"], selectedKPM: [] }, { - label: "Reduced malfunction or breakdown industrial trucks, improve service for production/warehouse/shipping", - htmlLabel: "Reduced malfunction or breakdown industrial trucks, improve service for production/warehouse/shipping", - optionValue: "reduceMalfunctionOrBreakdownIndustrialTrucks", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, + label: "Reduce industrial trucks downtime", + htmlLabel: "Reduce industrial trucks downtime", + optionValue: "reduceIndustrialTrucksDowntime", isQualitative: true, howToCalculate: "N/A", KPM: ["equipmentDowntime", "percentCapacityUtilization", "overallEquipmentEffectiveness", "forkTruckBreakdownTime", "maintenanceCost", "employeeEngagementSatisfaction", "laborCosts", "equipmentDowntime"], selectedKPM: [] }, { - label: "Delay cost replacement equipment, longer equipment life", - htmlLabel: "Delay cost replacement equipment, longer equipment life", + label: "Increase useful equipment life", + htmlLabel: "Increase useful equipment life", + optionValue: "increaseUsefulEquipmentLife", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["contributeCompanyVision", "usefulEquipmentLifeExtended", "maintenanceCost", "laborCosts", "equipmentDowntime", "serviceParts"], + selectedKPM: [] + }, + { + label: "Delay cost to replace equipment", + htmlLabel: "Delay cost to replace equipment", optionValue: "delayReplacementEquipment", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "usefulEquipmentLifeExtended", "maintenanceCost", "laborCosts", "equipmentDowntime", "serviceParts"], selectedKPM: [] }, { - label: "Faster time, more flexibility, more products", - htmlLabel: "Faster time, more flexibility, more products", - optionValue: "fasterTimeMoreFlexibilityMoreProducts", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, + label: "Increase production schedule flexibility", + htmlLabel: "Increase production schedule flexibility", + optionValue: "increaseProdScheduleFlexibility", isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "percentCapacityUtilization", "overallEquipmentEffectiveness", "usefulEquipmentLifeExtended"], selectedKPM: [] }, { - label: "Improved product quality - machine source", - htmlLabel: "Improved product quality - machine source", + label: "Improved product quality by improving machine source", + htmlLabel: "Improved product quality by improving machine source", optionValue: "improvedProductQualityMachineSource", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["productivityRateThroughput", "productionCosts", "cycleTimeToMakeGoods", "percentOnTimeToDueDate", "revenuePerEmployee", "perUnitProductCost", "numberEquipmentCausedDefects", "equipmentDowntime", "percentCapacityUtilization", "overallEquipmentEffectiveness", "defectiveProductionDollar", "defectRatePPMorDPM", "qualityCustomerComplaints", "qualityCustomerReturns", "percentProductionYield", "percentShrinkage", "maintenanceCost", "engineeringSupport", "laborCosts"], selectedKPM: [] }, { - label: "Improved product quality - operator source", - htmlLabel: "Improved product quality - operator source", + label: "Improved product quality by reducing operator error", + htmlLabel: "Improved product quality by reducing operator error", optionValue: "improvedProductQualityOperatorSource", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["productivityRateThroughput", "productionCosts", "cycleTimeToMakeGoods", "percentOnTimeToDueDate", "revenuePerEmployee", "perUnitProductCost", "defectiveProductionDollar", "defectRatePPMorDPM", "qualityCustomerComplaints", "qualityCustomerReturns", "percentProductionYield", "percentShrinkage", "maintenanceCost", "engineeringSupport", "employeeEngagementSatisfaction"], selectedKPM: [] }, { - label: "Improved product quality - debris contamination", - htmlLabel: "Improved product quality - debris contamination", + label: "Improved product quality by reducing debris contamination", + htmlLabel: "Improved product quality by reducing debris contamination", optionValue: "improvedProductQualityDebrisContamination", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["perUnitProductCost", "percentCapacityUtilization", "defectiveProductionDollar", "defectRatePPMorDPM", "qualityCustomerComplaints", "qualityCustomerReturns"], @@ -254,9 +226,6 @@ export const NebOptions: Array = [ label: "Reduce production loss - labor and material", htmlLabel: "Reduce production loss - labor and material", optionValue: "reduceProductionLossLaborMaterial", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["productivityRateThroughput", "productionCosts", "percentOnTimeToDueDate", "revenuePerEmployee", "perUnitProductCost", "defectiveProductionDollar", "defectRatePPMorDPM", "percentProductionYield", "percentShrinkage"], @@ -266,33 +235,24 @@ export const NebOptions: Array = [ label: "Reduced raw material loss", htmlLabel: "Reduced raw material loss", optionValue: "reducedRawMaterialLoss", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["productionCosts", "revenuePerEmployee", "perUnitProductCost", "defectiveProductionDollar", "defectRatePPMorDPM", "percentProductionYield", "percentShrinkage", "hazardousDisposalCosts", "nonHazardousDisposalCosts", "rawMaterials"], selectedKPM: [] }, { - label: "Reduce consumables", - htmlLabel: "Reduce consumables", + label: "Reduce cost from using less consumables", + htmlLabel: "Reduce cost from using less consumables", optionValue: "reducedConsumables", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["perUnitProductCost", "dollarConsumables", "intermediateGoods", "rawMaterials", "serviceParts", "treatmentChemicals"], selectedKPM: [] }, { - label: "Additional space from layout/process changes", - htmlLabel: "Additional space from layout/process changes", + label: "Better space utilization", + htmlLabel: "Better space utilization", optionValue: "additionalSpaceFromLayoutChanges", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["productivityRateThroughput", "percentOptimizedSpace", "employeeEngagementSatisfaction"], @@ -302,9 +262,24 @@ export const NebOptions: Array = [ label: "Reduced wear and tear, reduced replacement and repair parts", htmlLabel: "Reduced wear and tear, reduced replacement and repair parts", optionValue: "reducedWearAndTear", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, + isQualitative: true, + howToCalculate: "N/A", + KPM: ["productivityRateThroughput", "equipmentDowntime", "percentCapacityUtilization", "overallEquipmentEffectiveness", "forkTruckBreakdownTime", "usefulEquipmentLifeExtended", "maintenanceCost", "laborCosts", "serviceParts"], + selectedKPM: [] + }, + { + label: "Reduce cost from maintenance replacement/repair parts", + htmlLabel: "Reduce cost from maintenance replacement/repair parts", + optionValue: "reducedWearAndTear", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["productivityRateThroughput", "equipmentDowntime", "percentCapacityUtilization", "overallEquipmentEffectiveness", "forkTruckBreakdownTime", "usefulEquipmentLifeExtended", "maintenanceCost", "laborCosts", "serviceParts"], + selectedKPM: [] + }, + { + label: "Reduced costs for labor", + htmlLabel: "Reduced costs for labor", + optionValue: "reduceCostsForLabor", isQualitative: true, howToCalculate: "N/A", KPM: ["productivityRateThroughput", "equipmentDowntime", "percentCapacityUtilization", "overallEquipmentEffectiveness", "forkTruckBreakdownTime", "usefulEquipmentLifeExtended", "maintenanceCost", "laborCosts", "serviceParts"], @@ -314,9 +289,6 @@ export const NebOptions: Array = [ label: "Reduced labor costs for problem solving and repair", htmlLabel: "Reduced labor costs for problem solving and repair", optionValue: "reducedLaborCostsForProblemSolvingAndRepair", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["productivityRateThroughput", "maintenanceCost", "engineeringSupport", "laborCosts"], @@ -326,9 +298,6 @@ export const NebOptions: Array = [ label: "Reduce hazardous waste", htmlLabel: "Reduce hazardous waste", optionValue: "reduceHazardousWaste", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "defectiveProductionDollar", "percentProductionYield", "percentShrinkage", "hazardousDisposalCosts", "percentTotalOrCost"], @@ -338,9 +307,6 @@ export const NebOptions: Array = [ label: "Reduce nonhazardous waste", htmlLabel: "Reduce nonhazardous waste", optionValue: "reduceNonhazardousWaste", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "defectiveProductionDollar", "percentProductionYield", "percentShrinkage", "nonHazardousDisposalCosts", "percentTotalOrCost"], @@ -350,9 +316,6 @@ export const NebOptions: Array = [ label: "Reduce product waste", htmlLabel: "Reduce product waste", optionValue: "reduceProductWaste", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "defectiveProductionDollar", "defectRatePPMorDPM", "percentShrinkage", "percentTotalOrCost"], @@ -362,164 +325,195 @@ export const NebOptions: Array = [ label: "Reduce water consumption", htmlLabel: "Reduce water consumption", optionValue: "reduceWaterConsumption", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", - KPM: ["contributeCompanyVision", "consumptionCostWater"], + KPM: ["contributeCompanyVision", "consumptionCostWater", "sewageCosts"], selectedKPM: [] }, { label: "Reduce sewage volume", htmlLabel: "Reduce sewage volume", optionValue: "reduceSewageVolume", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", - KPM: ["contributeCompanyVision", "consumptionCostSewage"], + KPM: ["contributeCompanyVision", "consumptionCostSewage", "sewageCosts"], selectedKPM: [] }, { label: "Reduce dust emission", htmlLabel: "Reduce dust emissions", optionValue: "reduceDustEmissions", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", - KPM: ["contributeCompanyVision", "totalLbsDust"], + KPM: ["contributeCompanyVision", "totalLbsDust", "particulateEmissions"], selectedKPM: [] }, - // { - // label: "Reduce CO, CO2, NOx, SOx emissions", - // htmlLabel: "Reduce CO, CO2, NOx, SOx emissions", - // optionValue: "reduceChemicalEmissions", - // // riskReduction: true, - // // valuePropositionIncrease: true, - // // decreaseCosts: true, - // isQualitative: true, - // howToCalculate: "N/A", - // KPM: ["contributeCompanyVision", "percentOrTotalChemicalEmissions"], - // }, { label: "Reduce refrigerant gas emissions", htmlLabel: "Reduce refrigerant gas emissions", optionValue: "reduceRefrigerantGasEmissions", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "percentOrTotalRefrigerantEmissions"], selectedKPM: [] }, { - label: "Reduced risk of accident and occupational disease, reduce unsafe acts, improve processes, better instructions, better PM, reduce associated costs", - htmlLabel: "Reduced risk of accident and occupational disease, reduce unsafe acts, improve processes, better instructions, better PM, reduce associated costs", + label: "Reduce accidents or occupational disease", + htmlLabel: "Reduce accidents or occupational disease", optionValue: "reduceOccupationalDangers", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "productivityRateThroughput", "TRIR", "oshaRecordableIncidents", "oshaNonRecordables", "daysAwayFromWork", "lostTimeInjuryRate", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate", "rawMaterials", "intermediateGoods", "serviceParts", "treatmentChemicals"], selectedKPM: [] }, { - label: "Reduced noise, exposure & cost of hearing conservation program, Reduced need for protective equipment", - htmlLabel: "Reduced noise, exposure & cost of hearing conservation program, Reduced need for protective equipment", + label: "Reduce unsafe operator acts", + htmlLabel: "Reduce unsafe operator acts", + optionValue: "reduceUnsafeOperatorActs", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["contributeCompanyVision", "productivityRateThroughput", "TRIR", "oshaRecordableIncidents", "oshaNonRecordables", "daysAwayFromWork", "lostTimeInjuryRate", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate", "rawMaterials", "intermediateGoods", "serviceParts", "treatmentChemicals"], + selectedKPM: [] + }, + { + label: "Reduce likeliness of accidents or occupational disease", + htmlLabel: "Reduce likeliness of accidents or occupational disease", + optionValue: "reduceLikelinessOfOccupationalDangers", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["contributeCompanyVision", "productivityRateThroughput", "TRIR", "oshaRecordableIncidents", "oshaNonRecordables", "daysAwayFromWork", "lostTimeInjuryRate", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate", "rawMaterials", "intermediateGoods", "serviceParts", "treatmentChemicals"], + selectedKPM: [] + }, + { + label: "Reduce nuisance noise", + htmlLabel: "Reduce nuisance noise", optionValue: "reducedNoiseExposure", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["dollarConsumables", "engineeringSupport", "TRIR", "oshaNonRecordables", "oshaRecordableIncidents", "daysAwayFromWork", "lostTimeInjuryRate", "hearingConservationProgram", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], selectedKPM: [] }, { - label: "Air quality improvement of ambient air, Reduced need for protective equipment", - htmlLabel: "Air quality improvement of ambient air, Reduced need for protective equipment", + label: "Reduce scope or need of OSHA Hearing Conservation Program", + htmlLabel: "Reduce scope or need of OSHA Hearing Conservation Program", + optionValue: "reduceNeedOshaHearingProgram", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["dollarConsumables", "engineeringSupport", "TRIR", "oshaNonRecordables", "oshaRecordableIncidents", "daysAwayFromWork", "lostTimeInjuryRate", "hearingConservationProgram", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], + selectedKPM: [] + }, + { + label: "Improved air quality", + htmlLabel: "Improved air quality", optionValue: "improveAmbientAirQuality", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, + isQualitative: true, + howToCalculate: "N/A", + KPM: ["defectiveProductionDollar", "defectRatePPMorDPM", "totalLbsDust", "numberOfParticles", "particulateEmissions", "noxSoxCoEmissions", "percentTestsMeetingStandardsAirPollutants"], + selectedKPM: [] + }, + { + label: "Reduced need for personal protective equipment (PPE)", + htmlLabel: "Reduced need for personal protective equipment (PPE)", + optionValue: "reducePPE", isQualitative: true, howToCalculate: "N/A", KPM: ["defectiveProductionDollar", "defectRatePPMorDPM", "totalLbsDust", "numberOfParticles"], selectedKPM: [] }, { - label: "Improved thermal comfort, reduce unscheduled breaks, heat related illness or absents, reduce security risk due to open doors", - htmlLabel: "Improved thermal comfort, reduce unscheduled breaks, heat related illness or absents, reduce security risk due to open doors", + label: "Improve workplace temperature comfort", + htmlLabel: "Improve workplace temperature comfort", optionValue: "improvedThermalComfort", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["productivityRateThroughput", "energyCostPerUnit", "workspaceOrFactoryFloorComfort", "absenteeism", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], selectedKPM: [] }, { - label: "Improved visual comfort", - htmlLabel: "Improved visual comfort", + label: "Reduce unscheduled breaks", + htmlLabel: "Reduce unscheduled breaks", + optionValue: "reduceUnscheduledBreaks", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["productivityRateThroughput", "energyCostPerUnit", "workspaceOrFactoryFloorComfort", "absenteeism", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], + selectedKPM: [] + }, + { + label: "Reduce workplace safety incidents related to heat", + htmlLabel: "Reduce workplace safety incidents related to heat", + optionValue: "reduceWorkplaceIncidentsRelatedToHeat", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["productivityRateThroughput", "energyCostPerUnit", "workspaceOrFactoryFloorComfort", "absenteeism", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], + selectedKPM: [] + }, + { + label: "Increase workplace security", + htmlLabel: "Increase workplace security", + optionValue: "increaseWorkplaceSecurity", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["productivityRateThroughput", "energyCostPerUnit", "workspaceOrFactoryFloorComfort", "absenteeism", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], + selectedKPM: [] + }, + { + label: "Improved workplace visual comfort", + htmlLabel: "Improved workplace visual comfort", optionValue: "improvedVisualComfort", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["productivityRateThroughput", "cycleTimeToMakeGoods", "defectiveProductionDollar", "defectRatePPMorDPM", "qualityCustomerComplaints", "qualityCustomerReturns", "workspaceOrFactoryFloorComfort", "absenteeism", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], selectedKPM: [] }, { - label: "Improved working environment, job engagement or satisfaction", - htmlLabel: "Improved working environment, job engagement or satisfaction", - optionValue: "improvedWorkingEnvironment", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, + label: "Increase employee engagement", + htmlLabel: "Increase employee engagement", + optionValue: "increaseEmployeeEngagement", isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "productivityRateThroughput", "productionCosts", "cycleTimeToMakeGoods", "percentOnTimeToDueDate", "revenuePerEmployee", "perUnitProductCost", "workInProcess", "defectiveProductionDollar", "defectRatePPMorDPM", "qualityCustomerComplaints", "qualityCustomerReturns", "percentProductionYield", "percentShrinkage", "dollarConsumables", "TRIR", "oshaNonRecordables", "oshaRecordableIncidents", "workspaceOrFactoryFloorComfort", "absenteeism", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], selectedKPM: [] }, { - label: "Change/add quality jobs", - htmlLabel: "Change/add quality jobs", + label: "Change or add jobs", + htmlLabel: "Change or add jobs", optionValue: "changeAddQualityJobs", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "salesGrowth", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], selectedKPM: [] }, { - label: "Justice40 Initiatives-decrease burden, exposure; Increase parity, resiliency", - htmlLabel: "Justice40 Initiatives-decrease burden, exposure; Increase parity, resiliency", - optionValue: "justice40Initiatives", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, + label: "Increase energy resiliency", + htmlLabel: "Increase energy resiliency", + optionValue: "increaseEnergyResiliency", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["contributeCompanyVision", "customerSatisfactionRatings", "supplierSatisfactionRatings", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], + selectedKPM: [] + }, + { + label: "Improve social, economic, health burden conditions for surrounding community", + htmlLabel: "Improve social, economic, health burden conditions for surrounding community", + optionValue: "improveCommunityConditions", isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "customerSatisfactionRatings", "supplierSatisfactionRatings", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], selectedKPM: [] }, { - label: "Improved staff satisfaction and loyalty, average years employed", - htmlLabel: "Improved staff satisfaction and loyalty, average years employed", - optionValue: "improvedStaffSatisfactionLoyalty", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, + label: "Improved staff satisfaction", + htmlLabel: "Improved staff satisfaction", + optionValue: "improvedStaffSatisfaction", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["contributeCompanyVision", "productivityRateThroughput", "productionCosts", "cycleTimeToMakeGoods", "percentOnTimeToDueDate", "revenuePerEmployee", "perUnitProductCost", "equipmentDowntime", "percentCapacityUtilization", "overallEquipmentEffectiveness", "forkTruckBreakdownTime", "defectiveProductionDollar", "defectRatePPMorDPM", "qualityCustomerComplaints", "qualityCustomerReturns", "percentProductionYield", "percentShrinkage", "dollarConsumables", "TRIR", "oshaNonRecordables", "oshaRecordableIncidents", "absenteeism", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], + selectedKPM: [] + }, + { + label: "Increase average years employed", + htmlLabel: "Increase average years employed", + optionValue: "increaseAverageYearsEmployed", isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "productivityRateThroughput", "productionCosts", "cycleTimeToMakeGoods", "percentOnTimeToDueDate", "revenuePerEmployee", "perUnitProductCost", "equipmentDowntime", "percentCapacityUtilization", "overallEquipmentEffectiveness", "forkTruckBreakdownTime", "defectiveProductionDollar", "defectRatePPMorDPM", "qualityCustomerComplaints", "qualityCustomerReturns", "percentProductionYield", "percentShrinkage", "dollarConsumables", "TRIR", "oshaNonRecordables", "oshaRecordableIncidents", "absenteeism", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], @@ -529,12 +523,36 @@ export const NebOptions: Array = [ label: "Reduce staff turnover", htmlLabel: "Reduce staff turnover", optionValue: "reduceStaffTurnover", - // riskReduction: true, - // valuePropositionIncrease: true, - // decreaseCosts: true, isQualitative: true, howToCalculate: "N/A", KPM: ["contributeCompanyVision", "productivityRateThroughput", "productionCosts", "cycleTimeToMakeGoods", "percentOnTimeToDueDate", "revenuePerEmployee", "perUnitProductCost", "equipmentDowntime", "percentCapacityUtilization", "overallEquipmentEffectiveness", "forkTruckBreakdownTime", "defectiveProductionDollar", "defectRatePPMorDPM", "qualityCustomerComplaints", "qualityCustomerReturns", "percentProductionYield", "percentShrinkage", "dollarConsumables", "TRIR", "oshaNonRecordables", "oshaRecordableIncidents", "absenteeism", "employeeEngagementSatisfaction", "employeeRetentionRate", "talentTurnoverRate"], selectedKPM: [] + }, + { + label: "Reduce GHG emissions", + htmlLabel: "Reduce GHG emissions", + optionValue: "reduceChemicalEmissions", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["scope1Emissions", "scope2Emissions", "scope3Emissions"], + selectedKPM: [] + }, + { + label: "Reduce regulatory costs", + htmlLabel: "Reduce regulatory costs", + optionValue: "reduceRegulatoryCosts", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["scope1Emissions", "scope2Emissions", "scope3Emissions", "particulateEmissions", "noxSoxCoEmissions", "percentTestsMeetingStandardsAirPollutants", "percentTestsMeetingStandardsWaterPollutants"], + selectedKPM: [] + }, + { + label: "Improved water quality", + htmlLabel: "Improved water quality", + optionValue: "improvedWaterQuality", + isQualitative: true, + howToCalculate: "N/A", + KPM: ["percentTestsMeetingStandardsWaterPollutants"], + selectedKPM: [] } ] diff --git a/src/app/shared/reports/calculations/keyPerformanceIndicatorReport.ts b/src/app/shared/reports/calculations/keyPerformanceIndicatorReport.ts index 095c3303..4e90c1e7 100644 --- a/src/app/shared/reports/calculations/keyPerformanceIndicatorReport.ts +++ b/src/app/shared/reports/calculations/keyPerformanceIndicatorReport.ts @@ -27,16 +27,26 @@ export function getKeyPerfomanceIndicatorReport(nebReports: Array): K } if (kpiReportItems[itemExistIndex].keyPerformanceMetric.baselineCost) { kpiReportItems[itemExistIndex].performanceMetricImpact.percentSavings = (kpiReportItems[itemExistIndex].performanceMetricImpact.costAdjustment / kpiReportItems[itemExistIndex].keyPerformanceMetric.baselineCost) * 100; + } else if (kpiReportItems[itemExistIndex].keyPerformanceMetric.baselineValue && kpiReportItems[itemExistIndex].performanceMetricImpact.modificationValue) { + kpiReportItems[itemExistIndex].performanceMetricImpact.percentSavings = (kpiReportItems[itemExistIndex].performanceMetricImpact.modificationValue / kpiReportItems[itemExistIndex].keyPerformanceMetric.baselineValue) * 100; } } else { if (performanceMetric.keyPerformanceMetric.isCustom) { } + let percentSavings: number = 0; + + if (performanceMetric.keyPerformanceMetric.baselineCost) { + percentSavings = (performanceMetric.performanceMetricImpact.costAdjustment / performanceMetric.keyPerformanceMetric.baselineCost) * 100; + } else if (performanceMetric.keyPerformanceMetric.baselineValue && performanceMetric.performanceMetricImpact.modificationValue) { + percentSavings = (performanceMetric.performanceMetricImpact.modificationValue / performanceMetric.keyPerformanceMetric.baselineValue) * 100; + } + kpiReportItems.push({ keyPerformanceMetric: performanceMetric.keyPerformanceMetric, performanceMetricImpact: { ...performanceMetric.performanceMetricImpact, - percentSavings: (performanceMetric.performanceMetricImpact.costAdjustment / performanceMetric.keyPerformanceMetric.baselineCost) * 100, + percentSavings: percentSavings, modifiedCost: (performanceMetric.keyPerformanceMetric.baselineCost - performanceMetric.performanceMetricImpact.costAdjustment) }, // nebsImpacts: [{ diff --git a/src/app/shared/reports/performance-metrics-table/performance-metrics-table.component.html b/src/app/shared/reports/performance-metrics-table/performance-metrics-table.component.html index 4f1dd734..93ab2c98 100644 --- a/src/app/shared/reports/performance-metrics-table/performance-metrics-table.component.html +++ b/src/app/shared/reports/performance-metrics-table/performance-metrics-table.component.html @@ -65,7 +65,7 @@ - Totals + Cost Totals = { processEquipments: new BehaviorSubject>([stubProcessEquipment]), - getByGuid: () => { return stubProcessEquipment } + getByGuid: () => { return stubProcessEquipment }, + getFacilityProcessEquipment: () => { return [stubProcessEquipment] } } let stubKpiImpact: IdbKeyPerformanceMetricImpact = getNewIdbKeyPerformanceMetricImpact('123', '123', '123', '123', '123', 'TRIR', '123', '123', '123'); diff --git a/src/assets/styles/helpText.css b/src/assets/styles/helpText.css index c71bcca0..12f7d9e5 100644 --- a/src/assets/styles/helpText.css +++ b/src/assets/styles/helpText.css @@ -9,6 +9,15 @@ font-size: .875rem; } +.help-text p{ + margin-bottom: 0px; +} + .help-text .panel-label h5{ font-weight: 300; +} + +.help-text hr{ + margin-top: .5rem; + margin-bottom: .5rem; } \ No newline at end of file