# Asset Detail Panel Refactor ## Overview Refactored the AssetDetailPanel to match the TaskDetailPanel layout with tabs at the top and a cleaner information structure. Also updated the interaction model to use double-click to launch the panel with slide-in/slide-out animations. ## Changes Made ### 0. Interaction Model - **Double-Click to Open**: Asset detail panel now opens on double-click instead of single click - In grid view: Double-click on asset card - In list view: Double-click on table row - **Single Click Selection**: Single click now only selects/deselects the asset - **Slide Animations**: Panel slides in from the right when opening and slides out when closing - Enter animation: 300ms ease-out transition - Leave animation: 300ms ease-in transition - Uses Vue's Transition component with transform classes ### 1. Layout Structure - **Header**: Simplified to show only asset name, status badge, and close button - **Tabs**: Moved to top of panel (below header) with 3 tabs: Infos, Notes, References - **Content**: Each tab has scrollable content area ### 2. Tab Structure #### Infos Tab (Default) Contains all asset information in a clean, organized layout: - **Asset Name**: Large, prominent display - **Category & Status**: Side-by-side badges - **Description**: Full description text - **Task Progress**: Progress bar showing completion percentage - **Tasks List**: All tasks with their status and assignee - Click on any task to view task details - Shows task type, assignee name, and status badge - **Timestamps**: Created and updated dates #### Notes Tab Shows all notes from all tasks associated with this asset: - **Aggregated Notes**: Combines notes from all asset tasks - **Task Context**: Each note shows which task it belongs to - **Task Type Badge**: Visual indicator of the task type - **Sorted by Date**: Newest notes first - **Author & Timestamp**: Shows who created the note and when - **Empty State**: Friendly message when no notes exist #### References Tab Shows all reference files (attachments) from all asset tasks: - **Aggregated References**: Combines attachments from all asset tasks - **Grid Layout**: 2-column responsive grid - **Image Preview**: Shows thumbnail for image files - **File Icon**: Generic icon for non-image files - **Task Context**: Each reference shows which task it belongs to - **Task Type Badge**: Visual indicator of the task type - **Download Button**: Quick download action - **File Info**: Name, task, and upload date - **Empty State**: Friendly message when no references exist ### 3. New Components Created #### AssetNotes.vue - Displays aggregated notes from all asset tasks - Shows task context (task name and type) for each note - Sorted by date (newest first) - Matches TaskNotes.vue layout style #### AssetReferences.vue - Displays aggregated reference files from all asset tasks - Grid layout with image previews - Shows task context for each reference - Download functionality - Matches TaskAttachments.vue layout style ### 4. Data Loading - **Tasks**: Loaded when asset details are fetched - **Notes**: Loaded after tasks are available, aggregated from all tasks - **References**: Loaded after tasks are available, aggregated from all tasks - **Watchers**: Automatically reload notes and references when tasks change ### 5. Removed Features - Removed "Versions" tab (not implemented in backend) - Removed separate "Add Task" button (tasks shown in Infos tab) - Removed inline task creation UI - Simplified header to match TaskDetailPanel ## Benefits 1. **Consistent UX**: Matches TaskDetailPanel layout for familiar user experience 2. **Better Organization**: Information is logically grouped in tabs 3. **Cleaner Header**: Less cluttered, more focused 4. **Aggregated Data**: Notes and references from all tasks in one place 5. **Task Context**: Easy to see which task each note/reference belongs to 6. **Responsive**: Works well on different screen sizes 7. **Scrollable Content**: Each tab has independent scrolling ## Technical Details ### Props - `projectId: number` - The project ID - `assetId: number` - The asset ID to display ### Emits - `close` - Close the detail panel - `select-task` - Navigate to task detail (when clicking a task) ### Data Structure ```typescript interface Note { id: number content: string author_name: string created_at: string task_name: string // Added for context task_type: string // Added for context } interface Reference { id: number file_name: string file_path: string created_at: string task_name: string // Added for context task_type: string // Added for context } ``` ## Animation Details ### Slide-In Animation - **Duration**: 300ms - **Easing**: ease-out - **Transform**: Slides from right (translate-x-full) to position (translate-x-0) - **Trigger**: Double-click on asset card or table row ### Slide-Out Animation - **Duration**: 300ms - **Easing**: ease-in - **Transform**: Slides from position (translate-x-0) to right (translate-x-full) - **Trigger**: Click close button in panel header ### Implementation ```vue
``` ## User Interaction Changes ### Before - Single click on asset card/row → Opens detail panel - No animations ### After - Single click on asset card/row → Selects/deselects asset - Double-click on asset card/row → Opens detail panel with slide-in animation - Close button → Closes panel with slide-out animation - Supports multi-select with Ctrl/Cmd + click - Supports range select with Shift + click ## Future Enhancements 1. **Asset-Level Notes**: Add ability to create notes directly on the asset (not just task notes) 2. **Asset-Level References**: Add ability to upload references directly to the asset 3. **Filtering**: Add filters for notes and references by task type 4. **Search**: Add search functionality for notes content 5. **Versions Tab**: Implement version tracking when backend support is added 6. **Edit Asset**: Add inline editing capabilities 7. **Task Creation**: Add quick task creation from the Infos tab 8. **Keyboard Shortcuts**: Add Enter key to open detail panel for selected asset 9. **Animation Preferences**: Allow users to disable animations in settings