Skip to content

Commit

Permalink
issue-237 add energy use and cost calculation on facility page
Browse files Browse the repository at this point in the history
  • Loading branch information
RLiNREL committed Oct 3, 2024
1 parent 0a92f5f commit 0513cf0
Show file tree
Hide file tree
Showing 5 changed files with 172 additions and 45 deletions.
6 changes: 5 additions & 1 deletion src/app/models/facility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ export interface IdbFacility extends IdbEntry {
companyId: string,
userId: string,
unitSettings: UnitSettings,
generalInformation: GeneralInformation
generalInformation: GeneralInformation,
energyUse: number,
cost: number,
}

export function getNewIdbFacility(userId: string, companyId: string): IdbFacility {
Expand All @@ -20,5 +22,7 @@ export function getNewIdbFacility(userId: string, companyId: string): IdbFacilit
companyId: companyId,
unitSettings: defaultSettings,
generalInformation: generalInformation,
energyUse: 0,
cost: 0,
}
}
8 changes: 8 additions & 0 deletions src/app/models/unitSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,37 @@ import { UtilityOptions } from "../shared/constants/utilityTypes";

export interface UnitSettings {
includeElectricity: boolean,
electricityUse: number,
electricityUnit: string,
electricityPrice: number,

includeNaturalGas: boolean,
naturalGasUse: number,
naturalGasUnit: string,
naturalGasPrice: number,

includeSteam: boolean,
steamUse: number,
steamUnit: string,
steamPrice: number,

includeWater: boolean,
waterUse: number,
waterUnit: string,
waterPrice: number,

includeWasteWater: boolean,
wasteWaterUse: number,
wasteWaterUnit: string,
wasteWaterPrice: number,

includeOtherFuels: boolean,
otherFuelsUse: number,
otherFuelsUnit: string,
otherFuelsPrice: number,

includeCompressedAir: boolean,
compressedAirUse: number,
compressedAirUnit: string,
compressedAirPrice: number,
}
Expand All @@ -37,6 +44,7 @@ export function getDefaultUnitSettings(): UnitSettings {
+ utilityType.slice(1); // Lowercase first letter

settings[`include${utilityType}`] = false;
settings[`${camelCaseType}Use`] = 0;
settings[`${camelCaseType}Unit`] = option.energyDefaultUnit.value;
settings[`${camelCaseType}Price`] = 0;
return settings;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,30 +71,37 @@ export class SharedSettingsFormsService {
getUnitsForm(unitSettings: UnitSettings): FormGroup {
let form: FormGroup = this.formBuilder.group({
includeElectricity: [unitSettings.includeElectricity],
electricityUse: [unitSettings.electricityUse, [Validators.min(0)]],
electricityUnit: [unitSettings.electricityUnit],
electricityPrice: [unitSettings.electricityPrice, [Validators.min(0)]],

includeNaturalGas: [unitSettings.includeNaturalGas],
naturalGasUse: [unitSettings.naturalGasUse, [Validators.min(0)]],
naturalGasUnit: [unitSettings.naturalGasUnit],
naturalGasPrice: [unitSettings.naturalGasPrice, [Validators.min(0)]],

includeSteam: [unitSettings.includeSteam],
steamUse: [unitSettings.steamUse, [Validators.min(0)]],
steamUnit: [unitSettings.steamUnit],
steamPrice: [unitSettings.steamPrice, [Validators.min(0)]],

includeOtherFuels: [unitSettings.includeOtherFuels],
otherFuelsUse: [unitSettings.otherFuelsUse, [Validators.min(0)]],
otherFuelsUnit: [unitSettings.otherFuelsUnit],
otherFuelsPrice: [unitSettings.otherFuelsPrice, [Validators.min(0)]],

includeCompressedAir: [unitSettings.includeCompressedAir],
compressedAirUse: [unitSettings.compressedAirUse, [Validators.min(0)]],
compressedAirUnit: [unitSettings.compressedAirUnit],
compressedAirPrice: [unitSettings.compressedAirPrice, [Validators.min(0)]],

includeWater: [unitSettings.includeWater],
waterUse: [unitSettings.waterUse, [Validators.min(0)]],
waterUnit: [unitSettings.waterUnit],
waterPrice: [unitSettings.waterPrice, [Validators.min(0)]],

includeWasteWater: [unitSettings.includeWasteWater],
wasteWaterUse: [unitSettings.wasteWaterUse, [Validators.min(0)]],
wasteWaterUnit: [unitSettings.wasteWaterUnit],
wasteWaterPrice: [unitSettings.wasteWaterPrice, [Validators.min(0)]],
});
Expand All @@ -108,42 +115,64 @@ export class SharedSettingsFormsService {
this.setRequiredValidator(form.controls['waterPrice'], unitSettings.includeWater);
this.setRequiredValidator(form.controls['wasteWaterPrice'], unitSettings.includeWasteWater);

this.setRequiredValidator(form.controls['electricityUse'], unitSettings.includeElectricity);
this.setRequiredValidator(form.controls['naturalGasUse'], unitSettings.includeNaturalGas);
this.setRequiredValidator(form.controls['steamUse'], unitSettings.includeSteam);
this.setRequiredValidator(form.controls['otherFuelsUse'], unitSettings.includeOtherFuels);
this.setRequiredValidator(form.controls['compressedAirUse'], unitSettings.includeCompressedAir);
this.setRequiredValidator(form.controls['waterUse'], unitSettings.includeWater);
this.setRequiredValidator(form.controls['wasteWaterUse'], unitSettings.includeWasteWater);

return form;
}

updateUnitSettingsFromForm(form: FormGroup,unitSettings: UnitSettings): UnitSettings {
unitSettings.includeElectricity = form.controls['includeElectricity'].value;
this.setRequiredValidator(form.controls['electricityPrice'], unitSettings.includeElectricity);
this.setRequiredValidator(form.controls['electricityUse'], unitSettings.includeElectricity);
unitSettings.electricityUse = form.controls['electricityUse'].value;
unitSettings.electricityUnit = form.controls['electricityUnit'].value;
unitSettings.electricityPrice = form.controls['electricityPrice'].value;

unitSettings.includeNaturalGas = form.controls['includeNaturalGas'].value;
this.setRequiredValidator(form.controls['naturalGasPrice'], unitSettings.includeNaturalGas);
this.setRequiredValidator(form.controls['naturalGasUse'], unitSettings.includeNaturalGas);
unitSettings.naturalGasUse = form.controls['naturalGasUse'].value;
unitSettings.naturalGasUnit = form.controls['naturalGasUnit'].value;
unitSettings.naturalGasPrice = form.controls['naturalGasPrice'].value;

unitSettings.includeSteam = form.controls['includeSteam'].value;
this.setRequiredValidator(form.controls['steamPrice'], unitSettings.includeSteam);
this.setRequiredValidator(form.controls['steamUse'], unitSettings.includeSteam);
unitSettings.steamUse = form.controls['steamUse'].value;
unitSettings.steamUnit = form.controls['steamUnit'].value;
unitSettings.steamPrice = form.controls['steamPrice'].value;

unitSettings.includeOtherFuels = form.controls['includeOtherFuels'].value;
this.setRequiredValidator(form.controls['otherFuelsPrice'], unitSettings.includeOtherFuels);
this.setRequiredValidator(form.controls['otherFuelsUse'], unitSettings.includeOtherFuels);
unitSettings.otherFuelsUse = form.controls['otherFuelsUse'].value;
unitSettings.otherFuelsUnit = form.controls['otherFuelsUnit'].value;
unitSettings.otherFuelsPrice = form.controls['otherFuelsPrice'].value;

unitSettings.includeCompressedAir = form.controls['includeCompressedAir'].value;
this.setRequiredValidator(form.controls['compressedAirPrice'], unitSettings.includeCompressedAir);
this.setRequiredValidator(form.controls['compressedAirUse'], unitSettings.includeCompressedAir);
unitSettings.compressedAirUse = form.controls['compressedAirUse'].value;
unitSettings.compressedAirUnit = form.controls['compressedAirUnit'].value;
unitSettings.compressedAirPrice = form.controls['compressedAirPrice'].value;

unitSettings.includeWater = form.controls['includeWater'].value;
this.setRequiredValidator(form.controls['waterPrice'], unitSettings.includeWater);
this.setRequiredValidator(form.controls['waterUse'], unitSettings.includeWater);
unitSettings.waterUse = form.controls['waterUse'].value;
unitSettings.waterUnit = form.controls['waterUnit'].value;
unitSettings.waterPrice = form.controls['waterPrice'].value;

unitSettings.includeWasteWater = form.controls['includeWasteWater'].value;
this.setRequiredValidator(form.controls['wasteWaterPrice'], unitSettings.includeWasteWater);
this.setRequiredValidator(form.controls['wasteWaterUse'], unitSettings.includeWasteWater);
unitSettings.wasteWaterUse = form.controls['wasteWaterUse'].value;
unitSettings.wasteWaterUnit = form.controls['wasteWaterUnit'].value;
unitSettings.wasteWaterPrice = form.controls['wasteWaterPrice'].value;
return unitSettings;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
Include
</div>
<div class="col-4">
<label>Unit</label>
<label>Energy Use</label>
</div>
<div class="col-4">
<label>Price</label>
Expand All @@ -27,12 +27,16 @@
</div>
<ng-container *ngIf="form.controls['includeElectricity'].value">
<div class="col-4">
<select class="form-select" formControlName="electricityUnit" (change)="savePriceChanges()">
<option *ngFor="let energyUnitOption of ('Electricity' | linkedUnitOptions : 'Energy')"
[ngValue]="energyUnitOption.value">
<span [innerHTML]="energyUnitOption.value | unitsDisplay"></span>
</option>
</select>
<div class="input-group">
<input class="form-control" type="number" step="any" min="0" formControlName="electricityUse"
name="electricityUse" (change)="saveChanges()">
<select class="input-group-text" formControlName="electricityUnit" (change)="savePriceChanges()">
<option *ngFor="let energyUnitOption of ('Electricity' | linkedUnitOptions : 'Energy')"
[ngValue]="energyUnitOption.value">
<span [innerHTML]="energyUnitOption.value | unitsDisplay"></span>
</option>
</select>
</div>
</div>
<div class="col-4">
<div class="input-group">
Expand Down Expand Up @@ -64,12 +68,16 @@
</div>
<ng-container *ngIf="form.controls['includeNaturalGas'].value">
<div class="col-4">
<select class="form-select" formControlName="naturalGasUnit" (change)="savePriceChanges()">
<option *ngFor="let energyUnitOption of ('Natural Gas' | linkedUnitOptions : 'Energy')"
[ngValue]="energyUnitOption.value">
<span [innerHTML]="energyUnitOption.value | unitsDisplay"></span>
</option>
</select>
<div class="input-group">
<input class="form-control" type="number" step="any" min="0" formControlName="naturalGasUse"
name="naturalGasUse" (change)="saveChanges()">
<select class="input-group-text" formControlName="naturalGasUnit" (change)="savePriceChanges()">
<option *ngFor="let energyUnitOption of ('Natural Gas' | linkedUnitOptions : 'Energy')"
[ngValue]="energyUnitOption.value">
<span [innerHTML]="energyUnitOption.value | unitsDisplay"></span>
</option>
</select>
</div>
</div>
<div class="col-4">
<div class="input-group">
Expand Down Expand Up @@ -102,12 +110,16 @@
</div>
<ng-container *ngIf="form.controls['includeOtherFuels'].value">
<div class="col-4">
<select class="form-select" formControlName="otherFuelsUnit" (change)="savePriceChanges()">
<option *ngFor="let energyUnitOption of ('Other Fuels' | linkedUnitOptions : 'Energy')"
[ngValue]="energyUnitOption.value">
<span [innerHTML]="energyUnitOption.value | unitsDisplay"></span>
</option>
</select>
<div class="input-group">
<input class="form-control" type="number" step="any" min="0" formControlName="otherFuelsUse"
name="otherFuelsUse" (change)="saveChanges()">
<select class="input-group-text" formControlName="otherFuelsUnit" (change)="savePriceChanges()">
<option *ngFor="let energyUnitOption of ('Other Fuels' | linkedUnitOptions : 'Energy')"
[ngValue]="energyUnitOption.value">
<span [innerHTML]="energyUnitOption.value | unitsDisplay"></span>
</option>
</select>
</div>
</div>
<div class="col-4">
<div class="input-group">
Expand Down Expand Up @@ -138,12 +150,16 @@
</div>
<ng-container *ngIf="form.controls['includeWater'].value">
<div class="col-4">
<select class="form-select" formControlName="waterUnit" (change)="savePriceChanges()">
<option *ngFor="let liquidOption of ('Water' | linkedUnitOptions : 'Energy')"
[ngValue]="liquidOption.value">
<span [innerHTML]="liquidOption.value | unitsDisplay"></span>
</option>
</select>
<div class="input-group">
<input class="form-control" type="number" step="any" min="0" formControlName="waterUse"
name="waterUse" (change)="saveChanges()">
<select class="input-group-text" formControlName="waterUnit" (change)="savePriceChanges()">
<option *ngFor="let liquidOption of ('Water' | linkedUnitOptions : 'Energy')"
[ngValue]="liquidOption.value">
<span [innerHTML]="liquidOption.value | unitsDisplay"></span>
</option>
</select>
</div>
</div>
<div class="col-4">
<div class="input-group">
Expand Down Expand Up @@ -174,12 +190,16 @@
</div>
<ng-container *ngIf="form.controls['includeWasteWater'].value">
<div class="col-4">
<select class="form-select" formControlName="wasteWaterUnit" (change)="savePriceChanges()">
<option *ngFor="let liquidOption of ('Waste Water' | linkedUnitOptions : 'Energy')"
[ngValue]="liquidOption.value">
<span [innerHTML]="liquidOption.value | unitsDisplay"></span>
</option>
</select>
<div class="input-group">
<input class="form-control" type="number" step="any" min="0" formControlName="wasteWaterUse"
name="wasteWaterUse" (change)="saveChanges()">
<select class="input-group-text" formControlName="wasteWaterUnit" (change)="savePriceChanges()">
<option *ngFor="let liquidOption of ('Waste Water' | linkedUnitOptions : 'Energy')"
[ngValue]="liquidOption.value">
<span [innerHTML]="liquidOption.value | unitsDisplay"></span>
</option>
</select>
</div>
</div>
<div class="col-4">
<div class="input-group">
Expand Down Expand Up @@ -211,12 +231,16 @@
</div>
<ng-container *ngIf="form.controls['includeSteam'].value">
<div class="col-4">
<select class="form-select" formControlName="steamUnit" (change)="savePriceChanges()">
<option *ngFor="let massUnitOption of ('Steam' | linkedUnitOptions : 'Energy')"
[ngValue]="massUnitOption.value">
<span [innerHTML]="massUnitOption.value | unitsDisplay"></span>
</option>
</select>
<div class="input-group">
<input class="form-control" type="number" step="any" min="0" formControlName="steamUse"
name="steamUse" (change)="saveChanges()">
<select class="input-group-text" formControlName="steamUnit" (change)="savePriceChanges()">
<option *ngFor="let massUnitOption of ('Steam' | linkedUnitOptions : 'Energy')"
[ngValue]="massUnitOption.value">
<span [innerHTML]="massUnitOption.value | unitsDisplay"></span>
</option>
</select>
</div>
</div>
<div class="col-4">
<div class="input-group">
Expand Down Expand Up @@ -249,12 +273,16 @@
</div>
<ng-container *ngIf="form.controls['includeCompressedAir'].value">
<div class="col-4">
<select class="form-select" formControlName="compressedAirUnit" (change)="savePriceChanges()">
<option *ngFor="let volumeGasOption of ('Compressed Air' | linkedUnitOptions : 'Energy')"
[ngValue]="volumeGasOption.value">
<span [innerHTML]="volumeGasOption.value | unitsDisplay"></span>
</option>
</select>
<div class="input-group">
<input class="form-control" type="number" step="any" min="0" formControlName="compressedAirUse"
name="compressedAirUse" (change)="saveChanges()">
<select class="input-group-text" formControlName="compressedAirUnit" (change)="savePriceChanges()">
<option *ngFor="let volumeGasOption of ('Compressed Air' | linkedUnitOptions : 'Energy')"
[ngValue]="volumeGasOption.value">
<span [innerHTML]="volumeGasOption.value | unitsDisplay"></span>
</option>
</select>
</div>
</div>
<div class="col-4">
<div class="input-group">
Expand All @@ -273,4 +301,25 @@
</div>
</ng-container>
</div>
<div class="row mt-1">
<div class="col-4">
<label>
Total Energy Use
</label>
</div>
<div class="col-4">
{{ facility.energyUse | number: '1.0-2' }}
<span [innerHTML]="companyEnergyUnit | unitsDisplay"></span>
</div>
</div>
<div class="row">
<div class="col-4">
<label>
Annual Cost
</label>
</div>
<div class="col-4">
{{ facility.cost | currency:'USD':'symbol':'1.0-2' }}
</div>
</div>
</form>
Loading

0 comments on commit 0513cf0

Please sign in to comment.