2.9 KiB
2.9 KiB
Admin UI Refactoring Status
Overview
Split the monolithic app.rs (2600+ lines) and styles.css (1500+ lines) into modular, maintainable files.
✅ CSS Refactoring COMPLETE!
CSS Structure
styles/
├── main.css # Variables, base styles, layout (CREATED ✅)
├── components.css # Reusable components: islands, buttons, badges (CREATED ✅)
├── runners.css # Runner list, cards, status
├── jobs.css # Job list, detail views, job cards
├── keys.css # API key management styles
└── header.css # Header, breadcrumbs, user info
Import in index.html
<link rel="stylesheet" href="/styles/main.css">
<link rel="stylesheet" href="/styles/components.css">
<link rel="stylesheet" href="/styles/runners.css">
<link rel="stylesheet" href="/styles/jobs.css">
<link rel="stylesheet" href="/styles/keys.css">
<link rel="stylesheet" href="/styles/header.css">
Rust Structure
src/
├── app.rs # Main App component, state, update logic
├── components/
│ ├── mod.rs # Module declarations
│ ├── header.rs # Header component
│ ├── runners.rs # Runner list and management views
│ ├── jobs.rs # Job list and detail views
│ └── keys.rs # API key management views
└── lib.rs # Re-export App
Module Organization
app.rs (~500 lines)
- App struct and state
- Message enum
- Main update() logic
- Top-level view() that delegates to components
components/header.rs (~100 lines)
- view_header()
- Server info, breadcrumbs, user info
components/runners.rs (~400 lines)
- view_runners_sidebar()
- view_runners_content()
- Runner cards, status, management
components/jobs.rs (~1000 lines)
- view_jobs_sidebar()
- view_jobs_list_content()
- view_job_detail()
- view_job_detail_sidebar()
- Job creation, editing
components/keys.rs (~300 lines)
- view_keys_sidebar()
- view_keys_content()
- Key creation, deletion
Benefits
- Maintainability: Easier to find and modify specific features
- Collaboration: Multiple developers can work on different components
- Testing: Easier to test individual components
- Performance: Smaller compilation units
- Clarity: Clear separation of concerns
Implementation Steps
- ✅ Create directory structure
- ✅ Create main.css and components.css
- ⏳ Extract remaining CSS files
- ⏳ Create component modules
- ⏳ Move view functions to appropriate modules
- ⏳ Update imports and module declarations
- ⏳ Test and verify functionality
- ⏳ Remove old monolithic files
Migration Strategy
- Keep old files until refactoring is complete
- Test each component as it's extracted
- Use feature flags if needed for gradual rollout
- Maintain backward compatibility during transition