Conversation
There was a problem hiding this comment.
Pull request overview
This PR completes feature parity for the Analyses UI by wiring up “Run/Create Analysis” actions to the existing run modal, adding a new “HVAC Metrics” analysis configuration, and aligning UI behavior/appearance (role-based visibility and status styling) with the legacy AngularJS implementation.
Changes:
- Wire “Create Analysis” / “Run Analysis” actions to open
AnalysisRunModalComponentwith the current org + view context. - Add the new “HVAC Metrics” analysis type, including a dedicated config component and service description.
- Update viewer-role UI visibility, status styling, and i18n strings.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| src/app/modules/inventory/actions/analysis-run-modal.component.ts | Adds HVAC config component support and registers new service type option. |
| src/app/modules/inventory/actions/analysis-run-modal.component.html | Renames “Group Name” label and renders HVAC config UI when selected. |
| src/app/modules/inventory/actions/analysis-config/index.ts | Exports the new HVAC config component. |
| src/app/modules/inventory/actions/analysis-config/hvac-config.component.ts | New config form to select a floor area column for HVAC Metrics. |
| src/app/modules/inventory/actions/analysis-config/hvac-config.component.html | New HVAC Metrics config UI (floor area column selector). |
| src/app/modules/inventory-detail/detail/header.component.ts | Enables “Run Analysis” action and opens the run modal from the detail header. |
| src/app/modules/inventory-detail/analyses/analyses.component.ts | Wires “Create Analysis” button to run modal and hides it for viewers. |
| src/app/modules/inventory-detail/analyses/analyses.component.html | Hides the page action/button for viewer role. |
| src/app/modules/analyses/analysis/analysis.component.ts | Updates status cell styling for Completed/Failed. |
| src/@seed/components/analyses/analyses-grid.component.ts | Updates status styling and hides action icons for viewer role. |
| src/@seed/api/analysis/analysis.types.ts | Extends AnalysisServiceType to include “HVAC Metrics”. |
| src/@seed/api/analysis/analysis.service.ts | Adds description text for the new HVAC Metrics analysis type. |
| public/i18n/fr_CA.json | Adds new translation keys and updates existing strings. |
| public/i18n/es.json | Adds new translation keys and updates existing strings. |
| public/i18n/en_US.json | Adds new translation keys and updates existing strings. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 15 out of 15 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| // Defer to avoid ExpressionChangedAfterItHasBeenCheckedError in LoadingBarComponent | ||
| setTimeout(() => { | ||
| this.watchAnalyses() | ||
| }) | ||
| }), |
There was a problem hiding this comment.
This setTimeout can schedule watchAnalyses() to run after ngOnDestroy. Because _unsubscribeAll$ is a plain Subject, any takeUntil(this._unsubscribeAll$) created after destroy will not see the earlier .next() emission and won’t auto-unsubscribe, which can leave a live subscription behind. Avoid deferring subscription setup with setTimeout, or switch _unsubscribeAll$ to a ReplaySubject(1) / takeUntilDestroyed, and/or store and clear the timeout in ngOnDestroy.
There was a problem hiding this comment.
@copilot apply changes based on this feedback
There was a problem hiding this comment.
Fixed in commit d04391a. Changed _unsubscribeAll$ from Subject<void> to ReplaySubject<void>(1). Now if the setTimeout fires after ngOnDestroy, the ReplaySubject replays the stored .next() emission to any late takeUntil subscriber (including those created inside watchAnalyses()), causing them to complete immediately instead of leaking.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…es.component.ts Agent-Logs-Url: https://github.com/SEED-platform/seed-angular/sessions/58ed9bda-03a0-42bd-893f-7380bc268cee Co-authored-by: kflemin <2205659+kflemin@users.noreply.github.com>
…ut subscriptions Agent-Logs-Url: https://github.com/SEED-platform/seed-angular/sessions/d0093f52-622c-4515-a220-3164a6cf5983 Co-authored-by: kflemin <2205659+kflemin@users.noreply.github.com>
Complete Analyses Feature Parity
Closes the remaining gaps between the original AngularJS analyses UI and the Angular v20 port.
Create Analysis — Wired Up
property view ID. Previously was a console.log stub.
the same modal.
HVAC Metrics — New Analysis Type
Role-Based Visibility
UI Polish