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 + (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. + +
+ +
    +
  • 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
  • +
+
@@ -53,20 +63,6 @@

Release Notes for v{{versionNum}}

  • Fixed: Performance Profiles chart displaying no data due to AMO-Tools-Suite bug
  • - -
    - -
      -
    • 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
    • -
    - - -
      -
    • Added: Power Factor Calculator to Treasure Hunt
    • -
    • Fixed: Display of "Other Savings" in Opportunity Card
    • -
    -
    • The Auto-update feature is currently unavailable for the Mac and Linux versions