Browse Source

docs: Save maneuver dialog progress tracking

Documented current implementation progress for maneuver management dialog:
- Phase 1 (Foundation): Complete
- Phase 2 (Create Maneuver Tab): Complete
- Bug fixes: Segfault, widget types, conditional rendering
- 10 tasks completed, 22 tasks remaining

See docs/planning/maneuver_dialog_progress.md for full details.
main
cinnaboot 5 months ago
parent
commit
03b73095a7
  1. 147
      docs/planning/maneuver_dialog_progress.md

147
docs/planning/maneuver_dialog_progress.md

@ -0,0 +1,147 @@
# Maneuver Dialog Implementation Progress
## Overview
Implementing a comprehensive modal dialog for creating, editing, and managing spacecraft maneuvers with real-time orbital preview and Hohmann transfer calculations. The dialog provides an intuitive interface for planning orbital maneuvers with immediate visual feedback.
## Completed Tasks
### Phase 1: Foundation (Complete)
- [x] Add ManeuverDialogState to ui_renderer.h
- [x] Extend UIState with maneuver_dialog field
- [x] Add maneuver_list_active and maneuver_list_scroll to UIState
- [x] Create render_maneuver_dialog() skeleton
- [x] Add tab bar widget
- [x] Test dialog open/close with "Create Maneuver" button
**Commit:** `9c55c7c` - feat: Implement maneuver dialog Create tab (Phase 2)
- Implemented complete Create tab workflow for maneuver management dialog
- All Phase 1 foundation work included in this commit
- Dialog opens/closes from maneuver list button
### Phase 2: Create Tab (Complete)
- [x] Implement render_maneuver_create_tab() skeleton
- [x] Add all input widgets (spacecraft, name, direction, delta-v, triggers)
- [x] Implement update_orbital_preview() using preview_burn_result()
- [x] Implement render_orbital_preview() to display results
- [x] Add validation logic with validate_burn_parameters()
- [x] Implement create_maneuver_from_dialog() using add_maneuver_to_simulation()
- [x] Test create workflow end-to-end
**Commit:** `9c55c7c` - feat: Implement maneuver dialog Create tab (Phase 2)
- Complete Create tab workflow with all input widgets
- Real-time orbital preview with color-coded validation
- Integration with add_maneuver_to_simulation()
**Supporting Commit:** `5ecd880` - feat: Add maneuver UI control functions
- add_maneuver_to_simulation(): Add maneuvers dynamically
- preview_burn_result(): Preview orbital elements after burn
- validate_burn_parameters(): Validate burn parameters
- calculate_hohmann_transfer(): Calculate optimal two-burn transfer
### Bug Fixes (Complete)
- [x] Fix segfault at ui_renderer.cpp:503
- [x] Fix widget type for input boxes (GuiValueBoxFloat)
- [x] Add conditional rendering for dropdowns
**Commit:** `351f647` - fix: Initialize UIState maneuver_dialog fields properly
- Fixed segfault by proper initialization of all ManeuverDialogState fields
- Dialog now opens and runs without crashing
**Commit:** `2874c5e` - feat: Add auto-generated maneuver names with edit capability
- generate_maneuver_name() creates sensible names automatically
- User can still manually edit names if desired
**Commit:** `f45b111` - fix: Add conditional rendering for GUI dropdowns
- Wrapped GuiDropdownBox calls with validity checks
- Dropdowns only appear when spacecraft is properly selected
## In Progress
None currently
## Pending Tasks
### Phase 3: Hohmann Tab
- [ ] Implement render_maneuver_hohmann_tab() skeleton
- [ ] Add body selector widgets
- [ ] Implement calculate_hohmann_for_dialog() using calculate_hohmann_transfer()
- [ ] Display Hohmann results
- [ ] Implement create_hohmann_burns() to add both maneuvers
- [ ] Test Hohmann workflow
### Phase 4: Edit Tab
- [ ] Implement render_maneuver_edit_tab() skeleton
- [ ] Load existing maneuver data into fields
- [ ] Lock spacecraft field
- [ ] Implement update_maneuver_from_dialog()
- [ ] Add delete confirmation dialog
- [ ] Test edit and delete workflows
### Phase 5: Enhanced Maneuver List
- [ ] Modify render_maneuver_list_ui() for selectable items
- [ ] Add maneuver preview panel to list
- [ ] Add action buttons (Create, Hohmann, Edit, Delete)
- [ ] Connect buttons to dialog
- [ ] Test enhanced list interaction
### Phase 6: Polish
- [ ] Add keyboard shortcuts (Enter to confirm, Escape to cancel)
- [ ] Improve error messages
- [ ] Add tooltips for complex fields
- [ ] Handle all edge cases
- [ ] Test with various configurations
## Commits
### Core Implementation
1. `9c55c7c` - feat: Implement maneuver dialog Create tab (Phase 2)
2. `5ecd880` - feat: Add maneuver UI control functions
### Bug Fixes
3. `351f647` - fix: Initialize UIState maneuver_dialog fields properly
4. `2874c5e` - feat: Add auto-generated maneuver names with edit capability
5. `f45b111` - fix: Add conditional rendering for GUI dropdowns
### Documentation
6. `883695c` - docs: Add maneuver management dialog design
7. `9da7e80` - docs: Add maneuver UI controls implementation plan
## Next Steps
1. **Phase 3: Hohmann Tab** - Implement Hohmann transfer calculation and UI
- Use existing calculate_hohmann_transfer() function
- Add body selector dropdowns
- Display results and create both burns
2. **Phase 4: Edit Tab** - Enable editing and deleting existing maneuvers
- Load maneuver data into form fields
- Implement update/delete logic
- Add confirmation dialogs
3. **Phase 5: Enhanced Maneuver List** - Improve list UI
- Make maneuvers selectable
- Add preview panel below list
- Add edit/delete buttons for selected maneuver
4. **Phase 6: Polish** - User experience improvements
- Keyboard shortcuts
- Better error messages
- Tooltips and help text
- Edge case handling
## Progress Summary
- **Total Tasks:** 35
- **Completed:** 13 (Phase 1: 6, Phase 2: 7)
- **In Progress:** 0
- **Pending:** 22 (Phase 3: 6, Phase 4: 6, Phase 5: 5, Phase 6: 5)
- **Completion:** 37.1%
## Implementation Notes
- Hohmann transfer calculation function already exists (calculate_hohmann_transfer in maneuver.cpp)
- Preview functionality working with preview_burn_result()
- Dialog framework complete with tab system
- Create workflow fully functional with auto-generated names
- Real-time orbital preview implemented and validated
Loading…
Cancel
Save