Skip to content

Add sky map visualization and optical parameter tracking#143

Open
tomaszmrugalski wants to merge 3 commits into
masterfrom
claude/sweet-galileo-29e0dc
Open

Add sky map visualization and optical parameter tracking#143
tomaszmrugalski wants to merge 3 commits into
masterfrom
claude/sweet-galileo-29e0dc

Conversation

@tomaszmrugalski

Copy link
Copy Markdown
Collaborator

Summary

This PR adds a new sky map component for visualizing all projects across the sky, and introduces optical parameter tracking (focal length, sensor dimensions, pixel pitch) to projects. These parameters enable precise field-of-view calculations and visualization overlays in both the new sky map and project detail views.

Key Changes

  • New SkyMapComponent: Full-sky visualization using Aladin Lite showing all active projects as FOV polygons or point markers, with per-scope filtering via chips
  • New SkyViewComponent: Reusable sky view widget for displaying a zoomed view of a specific project's field of view with rotation support
  • Optical Parameters: Extended Project model with focal, resx, resy, pixel_x, pixel_y, and rotation fields
  • FOV Calculation: Added computeFovDeg() utility function to derive field-of-view dimensions from sensor geometry (pixels, pixel pitch, focal length)
  • Project Form Enhancement:
    • Added optical parameters section to project creation dialog
    • Auto-populate sensor specs from selected telescope via TelescopeService
    • Display computed FOV as a chip when all parameters are available
  • Project Detail Enhancement: Conditionally render SkyViewComponent when FOV data is complete
  • Navigation: Added "Sky Map" menu item to main layout
  • Routing: Added /sky-map route
  • Dependencies: Added aladin-lite@^3.9.0-beta for sky visualization

Implementation Details

  • Aladin Lite integration runs outside Angular's zone for performance
  • FOV corners are computed in WCS space accounting for declination and camera rotation
  • Scope colors cycle through a predefined palette for visual distinction
  • Graceful fallback: projects without optical parameters show as point markers instead of FOV polygons
  • Comprehensive test coverage for new components and utility functions

https://claude.ai/code/session_01Mn5wvy2To8d95XVLTBcRXE

claude added 3 commits June 21, 2026 00:04
…form

- SkyViewComponent: Aladin Lite overlay for a single project FOV (polygon on DSS imagery)
- SkyMapComponent: full-sky AIT map of all active projects at /sky-map, per-scope color coding, toggleable scope filter chips
- project-detail: embed sky view card when project has optical params
- project-form-dialog: auto-fill focal/resx/resy/pixel_x/pixel_y from telescope sensor on scope selection; fields are editable; live FOV chip (w×h degrees)
- app-routing: add /sky-map route
- layout menu: add Sky Map link
- models/project: add optical param fields to Project, ProjectCreate, ProjectUpdate

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mn5wvy2To8d95XVLTBcRXE
…optical params

- sky-view.component.spec.ts: 5 unit tests for computeFovDeg (correctness, monotonicity, symmetry)
- sky-map.component.spec.ts: 7 tests for SkyMapComponent (loading, scope toggle, error state)
- project-form-dialog.component.spec.ts: add TelescopeService mock, update existing save test to include new null optical param fields, add 3 tests for fovChip and explicit param payload
- sky-view.component.ts: use inject() instead of constructor injection (lint fix)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mn5wvy2To8d95XVLTBcRXE
Required to pass the Angular ESLint prefer-control-flow rule. The
template was already updated in the lint-fix commit but the working
tree still had the old version unstaged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mn5wvy2To8d95XVLTBcRXE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants