๐๏ธ 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)
}
๐ 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
๐จ 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.