Skip to content

Commit

Permalink
adds table with energy opps and nebs for nebs tabs
Browse files Browse the repository at this point in the history
  • Loading branch information
rmroot committed Sep 3, 2024
1 parent b22edba commit 2ffe92d
Show file tree
Hide file tree
Showing 8 changed files with 161 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,14 @@ <h6 class="pt-2 pb-2">
</div>
</h6>
<p class="fw-light small">
Use the "<fa-icon [icon]="faPlus"></fa-icon> Add NEB" dropdown to add Non-Energy Benefits
(<fa-icon [icon]="faWeightHanging"></fa-icon>) that are
<span class="bold">not associated with any specific energy efficiency opportunity</span> to this assessment .
Use the "<fa-icon [icon]="faPlus"></fa-icon> Add NEB" dropdown to add Non-Energy Benefits
(<fa-icon [icon]="faWeightHanging"></fa-icon>) that
<span class="bold">are not associated with any specific energy efficiency opportunity</span> to this assessment.
</p>

<app-neb-forms-accordion [assessment]="assessment"></app-neb-forms-accordion>
<app-neb-forms-accordion [assessment]="assessment"></app-neb-forms-accordion>

<hr>


<app-energy-opportunity-nebs-table [assessment]="assessment"></app-energy-opportunity-nebs-table>
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { EnergyOpportunityNebsListPipe } from './energy-opportunity-nebs-list.pipe';

describe('EnergyOpportunityNebsListPipe', () => {
it('create an instance', () => {
const pipe = new EnergyOpportunityNebsListPipe();
expect(pipe).toBeTruthy();
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { Pipe, PipeTransform } from '@angular/core';
import { IdbEnergyOpportunity } from 'src/app/models/energyOpportunity';
import { IdbNonEnergyBenefit } from 'src/app/models/nonEnergyBenefit';

@Pipe({
name: 'energyOpportunityNebsList'
})
export class EnergyOpportunityNebsListPipe implements PipeTransform {

transform(assessmentId: string, energyOpportunities: Array<IdbEnergyOpportunity>, nonEnergyBenefits: Array<IdbNonEnergyBenefit>): Array<{
energyOpportunity: IdbEnergyOpportunity,
opportunityNebs: Array<IdbNonEnergyBenefit>
}> {
let energyOpportunityNebs: Array<{
energyOpportunity: IdbEnergyOpportunity,
opportunityNebs: Array<IdbNonEnergyBenefit>
}> = new Array();

energyOpportunities.forEach(opportunity => {
if (opportunity.assessmentId == assessmentId) {
let opportunityNebs: Array<IdbNonEnergyBenefit> = nonEnergyBenefits.filter(neb => {
return neb.energyOpportunityId == opportunity.guid
});
if (opportunityNebs.length > 0) {
energyOpportunityNebs.push({
energyOpportunity: opportunity,
opportunityNebs: opportunityNebs
});
}
}
});

return energyOpportunityNebs;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<ng-container *ngIf="(assessment.guid | energyOpportunityNebsList: energyOpportunities: nonEnergyBenefits).length > 0">
<h6>
<div class="mt-auto bold">
Energy Efficiency Opportunity NEBs
</div>
</h6>
<p class="fw-light small">
Below are the Non-Energy Benefits added to "{{assessment.name}}" that <span class="bold">are associated with
specific energy efficiency opportunities</span>.
</p>
<table class="table table-sm table-borderless">
<tbody>
<ng-container
*ngFor="let energyOpportunityNebs of (assessment.guid | energyOpportunityNebsList: energyOpportunities: nonEnergyBenefits)">
<tr>
<td>
<fa-icon class="pe-2" [icon]="faFileLines"></fa-icon>
{{energyOpportunityNebs.energyOpportunity.name}}
</td>
</tr>
<tr *ngFor="let neb of energyOpportunityNebs.opportunityNebs">
<td class="ps-4">
<fa-icon [icon]="faWeightHanging"></fa-icon>
{{neb.name}}
</td>
</tr>
</ng-container>
</tbody>
</table>
</ng-container>
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';

import { EnergyOpportunityNebsTableComponent } from './energy-opportunity-nebs-table.component';

describe('EnergyOpportunityNebsTableComponent', () => {
let component: EnergyOpportunityNebsTableComponent;
let fixture: ComponentFixture<EnergyOpportunityNebsTableComponent>;

beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [EnergyOpportunityNebsTableComponent]
})
.compileComponents();

fixture = TestBed.createComponent(EnergyOpportunityNebsTableComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});

it('should create', () => {
expect(component).toBeTruthy();
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { Component, Input } from '@angular/core';
import { faFileLines, faWeightHanging, IconDefinition } from '@fortawesome/free-solid-svg-icons';
import { Subscription } from 'rxjs';
import { EnergyOpportunityIdbService } from 'src/app/indexed-db/energy-opportunity-idb.service';
import { NonEnergyBenefitsIdbService } from 'src/app/indexed-db/non-energy-benefits-idb.service';
import { IdbAssessment } from 'src/app/models/assessment';
import { IdbEnergyOpportunity } from 'src/app/models/energyOpportunity';
import { IdbNonEnergyBenefit } from 'src/app/models/nonEnergyBenefit';

@Component({
selector: 'app-energy-opportunity-nebs-table',
templateUrl: './energy-opportunity-nebs-table.component.html',
styleUrl: './energy-opportunity-nebs-table.component.css'
})
export class EnergyOpportunityNebsTableComponent {
@Input({required: true})
assessment: IdbAssessment;

faFileLines: IconDefinition = faFileLines;
faWeightHanging: IconDefinition = faWeightHanging;

energyOpportunities: Array<IdbEnergyOpportunity>;
energyOpportunitiesSub: Subscription;

nonEnergyBenefits: Array<IdbNonEnergyBenefit>;
nonEnergyBenefitsSub: Subscription;


constructor(
private nonEnergyBenefitsIdbService: NonEnergyBenefitsIdbService,
private energyOpportunityIdbService: EnergyOpportunityIdbService
){

}

ngOnInit(){
this.nonEnergyBenefitsSub = this.nonEnergyBenefitsIdbService.nonEnergyBenefits.subscribe(_nonEnergyBenefits => {
this.nonEnergyBenefits = _nonEnergyBenefits;
});

this.energyOpportunitiesSub = this.energyOpportunityIdbService.energyOpportunities.subscribe(_energyOpps => {
this.energyOpportunities = _energyOpps;
});
}

ngOnDestroy(){
this.nonEnergyBenefitsSub.unsubscribe();
this.energyOpportunitiesSub.unsubscribe();
}
}
6 changes: 5 additions & 1 deletion src/app/setup-wizard/setup-wizard.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ import { PerformanceMetricsModalComponent } from './data-collection/on-site-asse
import { MetricOptionsModalListPipe } from './data-collection/on-site-assessment/neb-forms-accordion/neb-setup-form/performance-metrics-modal/metric-options-modal-list.pipe';
import { AssociatedMetricIndicatorPipe } from './data-collection/on-site-assessment/neb-forms-accordion/neb-setup-form/performance-metrics-modal/associated-metric-indicator.pipe';
import { KpmImpactsTableComponent } from './pre-visit/company-kpi-details/kpm-impacts-table/kpm-impacts-table.component';
import { EnergyOpportunityNebsTableComponent } from './data-collection/on-site-assessment/assessment-nebs-form/energy-opportunity-nebs-table/energy-opportunity-nebs-table.component';
import { EnergyOpportunityNebsListPipe } from './data-collection/on-site-assessment/assessment-nebs-form/energy-opportunity-nebs-table/energy-opportunity-nebs-list.pipe';

@NgModule({
declarations: [
Expand Down Expand Up @@ -105,7 +107,9 @@ import { KpmImpactsTableComponent } from './pre-visit/company-kpi-details/kpm-im
PerformanceMetricsModalComponent,
MetricOptionsModalListPipe,
AssociatedMetricIndicatorPipe,
KpmImpactsTableComponent
KpmImpactsTableComponent,
EnergyOpportunityNebsTableComponent,
EnergyOpportunityNebsListPipe
],
imports: [
CommonModule,
Expand Down

0 comments on commit 2ffe92d

Please sign in to comment.