Shot Column Visibility - Unified with Task Page โœ…

โœ… Implementation Complete

The shot page column visibility filter now uses the same UI pattern as the task page, providing a consistent user experience across the application.

๐Ÿ”„ Changes Made

๐ŸŽจ UI Pattern Comparison

โŒ Before (Shot Page)

<Select> <SelectTrigger> <Columns icon /> Columns </SelectTrigger> <SelectContent> <SelectItem> <input type="checkbox" /> Column Name </SelectItem> </SelectContent> </Select>

Issues:

  • Different UI pattern from task page
  • Select component with checkboxes
  • Inconsistent user experience

โœ… After (Unified Pattern)

<Popover> <PopoverTrigger> <Settings2 icon /> View <Badge>{{ hiddenCount }}</Badge> </PopoverTrigger> <PopoverContent> <Command> <CommandInput /> <CommandItem> <Check icon /> Column Name </CommandItem> </Command> </PopoverContent> </Popover>

Benefits:

  • Consistent with task page
  • Popover + Command pattern
  • Search functionality
  • Visual feedback with badge

๐Ÿ—๏ธ Technical Implementation

// Column definitions (same pattern as task page) const allColumns = [ { id: 'thumbnail', label: 'Thumbnail' }, { id: 'name', label: 'Shot Name' }, { id: 'episode', label: 'Episode' }, { id: 'frameRange', label: 'Frame Range' }, { id: 'status', label: 'Status' }, { id: 'description', label: 'Description' }, // Dynamic task type columns ...props.allTaskTypes.map(taskType => ({ id: taskType, label: taskType.charAt(0).toUpperCase() + taskType.slice(1) })) ] // Hidden columns count (same as task page) const hiddenColumnsCount = computed(() => { return allColumns.filter(col => props.columnVisibility[col.id] === false).length }) // Toggle method (same as task page) const toggleColumn = (columnId: string, value: any) => { const newVisibility = { ...props.columnVisibility, [columnId]: value as boolean } emit('update:column-visibility', newVisibility) }

๐ŸŽฏ Features Unified

๐Ÿ“ Files Modified

frontend/src/components/shot/ShotTableToolbar.vue (UPDATED) โ”œโ”€โ”€ Removed ShotColumnVisibilityControl import โ”œโ”€โ”€ Added Settings2 icon import โ”œโ”€โ”€ Added allColumns definition โ”œโ”€โ”€ Added hiddenColumnsCount computed โ”œโ”€โ”€ Added toggleColumn method โ””โ”€โ”€ Replaced column visibility section with Popover pattern frontend/src/components/shot/ShotColumnVisibilityControl.vue (DEPRECATED) โ””โ”€โ”€ No longer used - can be removed in future cleanup

๐Ÿงช Testing Checklist

To verify the unified column visibility works correctly:

๐ŸŽจ UI Consistency Achieved

Both shot page and task page now use the identical pattern:

Task Page: Settings2 icon + "View" + Badge + Popover + Command + Search Shot Page: Settings2 icon + "View" + Badge + Popover + Command + Search

This provides a consistent, familiar experience for users switching between different data tables in the application.

โœ… Status: Complete

The shot page column visibility filter now uses the same view filter component pattern as the task page. Users will experience consistent UI behavior across all data tables in the application.