From 83cdc99d9d04a9a19ffe319f28c354f492798ea1 Mon Sep 17 00:00:00 2001
From: rmroot
Date: Wed, 22 Jan 2025 12:05:20 -0600
Subject: [PATCH 1/5] fix 7273
---
src/app/tools-suite-api/compressed-air-suite-api.service.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/app/tools-suite-api/compressed-air-suite-api.service.ts b/src/app/tools-suite-api/compressed-air-suite-api.service.ts
index c6c35f61eb..b85e09e13c 100644
--- a/src/app/tools-suite-api/compressed-air-suite-api.service.ts
+++ b/src/app/tools-suite-api/compressed-air-suite-api.service.ts
@@ -212,7 +212,7 @@ export class CompressedAirSuiteApiService {
compressorsCalcVariableDisplacement(input: CompressorsCalcInput) {
let powerAtFullLoad = this.suiteApiHelperService.convertNullInputValueForObjectConstructor(input.powerAtFullLoad)
- let capacityAtFullLoad = this.suiteApiHelperService.convertNullInputValueForObjectConstructor(input.capacityAtUnload)
+ let capacityAtFullLoad = this.suiteApiHelperService.convertNullInputValueForObjectConstructor(input.capacityAtFullLoad)
let receiverVolume = this.suiteApiHelperService.convertNullInputValueForObjectConstructor(input.receiverVolume)
let powerMax = this.suiteApiHelperService.convertNullInputValueForObjectConstructor(input.powerMax)
let powerAtNoLoad = this.suiteApiHelperService.convertNullInputValueForObjectConstructor(input.powerAtNoLoad)
From 9a23274b873d059b7115b1efa13ebf8e7c39589c Mon Sep 17 00:00:00 2001
From: nblondheim
Date: Wed, 22 Jan 2025 13:10:40 -0600
Subject: [PATCH 2/5] Fix setFlowReallocationSummaries should use systemBasics
electricityCost, not settings
---
.../explore-opportunities/explore-opportunities.component.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/app/compressed-air-assessment/explore-opportunities/explore-opportunities.component.ts b/src/app/compressed-air-assessment/explore-opportunities/explore-opportunities.component.ts
index 0085e7f5b2..acb3adddcf 100644
--- a/src/app/compressed-air-assessment/explore-opportunities/explore-opportunities.component.ts
+++ b/src/app/compressed-air-assessment/explore-opportunities/explore-opportunities.component.ts
@@ -136,7 +136,7 @@ export class ExploreOpportunitiesComponent implements OnInit {
this.compressedAirAssessment.systemInformation.atmosphericPressure,
this.compressedAirAssessment.systemProfile.systemProfileSetup.dataInterval,
this.compressedAirAssessment.systemInformation.totalAirStorage,
- this.settings.electricityCost,
+ this.compressedAirAssessment.systemBasics.electricityCost,
this.compressedAirAssessment.systemInformation
);
}
From 01e37394c6bd65395ca423b3394b047779be404f Mon Sep 17 00:00:00 2001
From: nblondheim
Date: Wed, 22 Jan 2025 14:05:30 -0600
Subject: [PATCH 3/5] Fixed: check for missing trimSelection compressorId's,
defense conditions on results, set setupDone on import
---
...mpressed-air-assessment-results.service.ts | 4 +-
.../compressed-air-assessment.service.ts | 37 ++++++++++---------
...ompressed-air-assessment-card.component.ts | 3 ++
3 files changed, 25 insertions(+), 19 deletions(-)
diff --git a/src/app/compressed-air-assessment/compressed-air-assessment-results.service.ts b/src/app/compressed-air-assessment/compressed-air-assessment-results.service.ts
index 83da86f02a..6392a39bd8 100644
--- a/src/app/compressed-air-assessment/compressed-air-assessment-results.service.ts
+++ b/src/app/compressed-air-assessment/compressed-air-assessment-results.service.ts
@@ -798,7 +798,9 @@ export class CompressedAirAssessmentResultsService {
if (systemInformation.multiCompressorSystemControls == 'baseTrim') {
//set base trim ordering
let trimSelection: { dayTypeId: string, compressorId: string } = systemInformation.trimSelections.find(selection => { return selection.dayTypeId == dayType.dayTypeId });
- intervalData = this.setBaseTrimOrdering(intervalData, adjustedCompressors, neededAirFlow, trimSelection.compressorId, dayType, reduceRuntime);
+ if (trimSelection.compressorId) {
+ intervalData = this.setBaseTrimOrdering(intervalData, adjustedCompressors, neededAirFlow, trimSelection.compressorId, dayType, reduceRuntime);
+ }
} else if (systemInformation.multiCompressorSystemControls == 'loadSharing') {
//share load..
return this.shareLoad(intervalData, adjustedProfileSummary, adjustedCompressors, neededAirFlow, settings, additionalRecieverVolume, atmosphericPressure, totalAirStorage, reduceRuntime, dayType);
diff --git a/src/app/compressed-air-assessment/compressed-air-assessment.service.ts b/src/app/compressed-air-assessment/compressed-air-assessment.service.ts
index 3b5fb08309..916db61ebf 100644
--- a/src/app/compressed-air-assessment/compressed-air-assessment.service.ts
+++ b/src/app/compressed-air-assessment/compressed-air-assessment.service.ts
@@ -57,17 +57,21 @@ export class CompressedAirAssessmentService {
updateCompressedAir(compressedAirAssessment: CompressedAirAssessment, isBaselineChange: boolean) {
if (isBaselineChange) {
- let settings: Settings = this.settings.getValue();
- let hasValidSystemInformation = this.systemInformationFormService.getFormFromObj(compressedAirAssessment.systemInformation, settings).valid;
- let hasValidCompressors = this.inventoryService.hasValidCompressors(compressedAirAssessment);
- let hasValidDayTypes = this.dayTypeService.hasValidDayTypes(compressedAirAssessment.compressedAirDayTypes);
- let profileSummaryValid = this.hasValidProfileSummaryData(compressedAirAssessment);
- compressedAirAssessment.setupDone = (hasValidSystemInformation && hasValidCompressors && hasValidDayTypes && profileSummaryValid.isValid);
+ this.setIsSetupDone(compressedAirAssessment)
}
//TODO? set modifications valid?
this.compressedAirAssessment.next(compressedAirAssessment);
}
+ setIsSetupDone(compressedAirAssessment: CompressedAirAssessment) {
+ let settings: Settings = this.settings.getValue();
+ let hasValidSystemInformation = this.systemInformationFormService.getFormFromObj(compressedAirAssessment.systemInformation, settings).valid;
+ let hasValidCompressors = this.inventoryService.hasValidCompressors(compressedAirAssessment);
+ let hasValidDayTypes = this.dayTypeService.hasValidDayTypes(compressedAirAssessment.compressedAirDayTypes);
+ let profileSummaryValid = this.hasValidProfileSummaryData(compressedAirAssessment);
+ compressedAirAssessment.setupDone = (hasValidSystemInformation && hasValidCompressors && hasValidDayTypes && profileSummaryValid.isValid);
+ }
+
getDefaultProfileSummaryValid(): ProfileSummaryValid {
return {
powerError: undefined,
@@ -105,7 +109,7 @@ export class CompressedAirAssessmentService {
};
if (summary.dayTypeId == selectedDayTypeId) {
- let currentCompressor: CompressorInventoryItem = this.compressedAirAssessment.getValue().compressorInventoryItems.find(compressor => compressor.itemId === summary.compressorId);
+ let currentCompressor: CompressorInventoryItem = compressedAirAssessment.compressorInventoryItems.find(compressor => compressor.itemId === summary.compressorId);
summary.profileSummaryData.forEach((data, index) => {
if (data.order != 0) {
let isValidProfileData: boolean = true;
@@ -332,18 +336,15 @@ export class CompressedAirAssessmentService {
}
getHasMissingTrimSelection(compressedAirAssessment: CompressedAirAssessment): boolean {
- let dayTypesInUse: CompressedAirDayType[] = compressedAirAssessment.compressedAirDayTypes;
- let hasMissingTrimSelection: boolean = true;
- dayTypesInUse.forEach(dayType => {
- hasMissingTrimSelection = !compressedAirAssessment.systemInformation.trimSelections.some(selection => {
- if (selection.dayTypeId == dayType.dayTypeId && selection.compressorId) {
- return true;
- } else {
- return false;
- }
- });
-
+ let hasMissingTrimSelection: boolean = compressedAirAssessment.systemInformation.trimSelections.some(selection => {
+ let dayTypeInUse = compressedAirAssessment.compressedAirDayTypes.some(dayType => dayType.dayTypeId === selection.dayTypeId);
+ if (dayTypeInUse && selection.compressorId) {
+ return false;
+ } else {
+ return true;
+ }
});
+
return hasMissingTrimSelection;
}
diff --git a/src/app/dashboard/directory-dashboard/directory-items/assessment-item/compressed-air-assessment-card/compressed-air-assessment-card.component.ts b/src/app/dashboard/directory-dashboard/directory-items/assessment-item/compressed-air-assessment-card/compressed-air-assessment-card.component.ts
index 2bdd1c1a3c..a76172dc53 100644
--- a/src/app/dashboard/directory-dashboard/directory-items/assessment-item/compressed-air-assessment-card/compressed-air-assessment-card.component.ts
+++ b/src/app/dashboard/directory-dashboard/directory-items/assessment-item/compressed-air-assessment-card/compressed-air-assessment-card.component.ts
@@ -7,6 +7,7 @@ import { Assessment } from '../../../../../shared/models/assessment';
import { CompressedAirDayType, ProfileSummary, ProfileSummaryTotal } from '../../../../../shared/models/compressed-air-assessment';
import { Settings } from '../../../../../shared/models/settings';
import { AssessmentService } from '../../../../assessment.service';
+import { CompressedAirAssessmentService } from '../../../../../compressed-air-assessment/compressed-air-assessment.service';
@Component({
selector: 'app-compressed-air-assessment-card',
@@ -29,9 +30,11 @@ export class CompressedAirAssessmentCardComponent implements OnInit {
constructor(private assessmentService: AssessmentService, private settingsDbService: SettingsDbService,
private compressedAirAssessmentResultsService: CompressedAirAssessmentResultsService,
+ private compressedAirAssessmentService: CompressedAirAssessmentService,
private exploreOpportunitiesValidationService: ExploreOpportunitiesValidationService) { }
ngOnInit(): void {
+ this.compressedAirAssessmentService.setIsSetupDone(this.assessment.compressedAirAssessment);
this.setupDone = this.assessment.compressedAirAssessment.setupDone;
if (this.setupDone) {
this.settings = this.settingsDbService.getByAssessmentId(this.assessment);
From 740b9488530a7ce3a852eb36f4fff714540fa965 Mon Sep 17 00:00:00 2001
From: nblondheim
Date: Thu, 23 Jan 2025 08:21:49 -0600
Subject: [PATCH 4/5] Show Base/Trim instead of order in ordering table and
summary table
---
.../profile-summary-table.component.html | 21 ++++++++++++-------
.../profile-summary-table.component.ts | 17 +++++----------
.../compressor-ordering-table.component.html | 5 ++++-
3 files changed, 22 insertions(+), 21 deletions(-)
diff --git a/src/app/compressed-air-assessment/profile-summary-table/profile-summary-table.component.html b/src/app/compressed-air-assessment/profile-summary-table/profile-summary-table.component.html
index 37f4ea15e6..8c21db4e64 100644
--- a/src/app/compressed-air-assessment/profile-summary-table/profile-summary-table.component.html
+++ b/src/app/compressed-air-assessment/profile-summary-table/profile-summary-table.component.html
@@ -15,10 +15,9 @@
{{(summary.compressorId | compressorName: inventoryItems)}}
-
+
(Trim)
-
@@ -80,12 +79,18 @@
Order
-
- {{data.order}}
-
-
- —
-
+ @if (systemInformation.multiCompressorSystemControls == 'baseTrim') {
+ Trim
+ Base
+ —
+ } @else {
+
+ {{data.order}}
+
+
+ —
+
+ }
diff --git a/src/app/compressed-air-assessment/profile-summary-table/profile-summary-table.component.ts b/src/app/compressed-air-assessment/profile-summary-table/profile-summary-table.component.ts
index 665be0620d..c24587cd87 100644
--- a/src/app/compressed-air-assessment/profile-summary-table/profile-summary-table.component.ts
+++ b/src/app/compressed-air-assessment/profile-summary-table/profile-summary-table.component.ts
@@ -24,32 +24,25 @@ export class ProfileSummaryTableComponent implements OnInit {
systemProfileSetup: SystemProfileSetup;
@Input()
systemInformation: SystemInformation;
-
-
+ selectedTrimCompressorId: string;
@ViewChild('profileTable', { static: false }) profileTable: ElementRef;
allTablesString: string;
constructor() { }
ngOnInit(): void {
+ if (this.systemInformation.trimSelections && this.systemProfileSetup.dayTypeId) {
+ let selection = this.systemInformation.trimSelections.find(selection => selection.dayTypeId == this.systemProfileSetup.dayTypeId);
+ this.selectedTrimCompressorId = selection? selection.compressorId : undefined;
+ }
}
updateTableString() {
this.allTablesString = this.profileTable.nativeElement.innerText;
}
-
checkShowAuxiliary() {
let auxTotal: ProfileSummaryTotal = this.totals.find(totalData => { return totalData.auxiliaryPower != 0 });
return auxTotal != undefined;
}
-
- checkIsTrim(compressorId: string): boolean {
- if (this.systemInformation.multiCompressorSystemControls == 'baseTrim' && this.systemInformation.trimSelections && this.systemProfileSetup.dayTypeId) {
- let selection = this.systemInformation.trimSelections.find(selection => { return selection.dayTypeId == this.systemProfileSetup.dayTypeId && selection.compressorId == compressorId });
- return selection != undefined;
- } else {
- return false;
- }
- }
}
diff --git a/src/app/compressed-air-assessment/system-profile/system-profile-setup/compressor-ordering-table/compressor-ordering-table.component.html b/src/app/compressed-air-assessment/system-profile/system-profile-setup/compressor-ordering-table/compressor-ordering-table.component.html
index 44e24bb916..3336a2bb38 100644
--- a/src/app/compressed-air-assessment/system-profile/system-profile-setup/compressor-ordering-table/compressor-ordering-table.component.html
+++ b/src/app/compressed-air-assessment/system-profile/system-profile-setup/compressor-ordering-table/compressor-ordering-table.component.html
@@ -137,7 +137,10 @@
class="btn btn-sm" *ngIf="summaryData.order == 0" (click)="toggleOn(summary, orderIndex)">Off
{{summaryData.order}}
+ (click)="toggleOn(summary, orderIndex)">
+ Trim
+ Base
+
From 9a6e226b9e66704af458098888f973fbbba9ae6a Mon Sep 17 00:00:00 2001
From: nblondheim
Date: Fri, 24 Jan 2025 11:27:44 -0600
Subject: [PATCH 5/5] Update version to 1.5.9
---
package-lock.json | 4 +--
package.json | 2 +-
.../version-modal.component.html | 26 ++++++++-----------
3 files changed, 14 insertions(+), 18 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 1faebf8826..3535d6d600 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "amo-tools-desktop",
- "version": "1.5.6",
+ "version": "1.5.9",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "amo-tools-desktop",
- "version": "1.5.6",
+ "version": "1.5.9",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
diff --git a/package.json b/package.json
index 7e48f5826e..95d6d258dc 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "amo-tools-desktop",
- "version": "1.5.8",
+ "version": "1.5.9",
"main": "main.js",
"license": "MIT",
"description": "MEASUR",
diff --git a/src/app/dashboard/sidebar/version-modal/version-modal.component.html b/src/app/dashboard/sidebar/version-modal/version-modal.component.html
index 9c21b45741..f24eba2c3f 100644
--- a/src/app/dashboard/sidebar/version-modal/version-modal.component.html
+++ b/src/app/dashboard/sidebar/version-modal/version-modal.component.html
@@ -17,7 +17,7 @@ Release Notes for v{{versionNum}}
Energy Performance certified. Based on older Department of Energy (DOE) tools, the Advanced Manufacturing
Office (AMO) has undertaken this effort to refactor the legacy tools into a modern environment.
The suite includes 7 energy system assessment modules, a Data Exploration Module, extensive help text,
- comprehensive reports, data visualization, and 79 calculators!
+ comprehensive reports, data visualization, and 80 calculators!
MEASUR is a supported application, updates are expected and may impact previously created assessments.
@@ -34,6 +34,16 @@
Release Notes for v{{versionNum}}
not be available.
+ Here are the details of what's new in version 1.5.9:
+
+ Compressed Air
+
+ Enhanced: In Compressor Ordering and Profile Summary tables, trim compressors are now marked 'Base' or 'Trim'
+ Fixed: Explore Opportunities results are now calculated with user-entered electricity cost
+ Fixed: Trim compressor validation
+ Fixed: Calculation method for compressors with variable displacement
+
+
Here are the details of what's new in version 1.5.8:
Compressed Air
@@ -53,20 +63,6 @@ Release Notes for v{{versionNum}}
Fixed: Performance Profiles chart displaying no data due to AMO-Tools-Suite bug
- Here are the details of what's new in version 1.5.6:
-
- Calculators
-
- Enhanced: Motor Perforance Calc - increased decimal places and decreased data interval to 0.5%, updated help text
- Enhanced: Pump Achieveable Efficiency - updated help and messaging pertaining to the two lines, updated help text
-
-
- Treasure Hunt
-
- Added: Power Factor Calculator to Treasure Hunt
- Fixed: Display of "Other Savings" in Opportunity Card
-
-
Known Issues
The Auto-update feature is currently unavailable for the Mac and Linux versions