Init Repo
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# Shot Table Selection Fix
|
||||
|
||||
## Issue
|
||||
The shot table multi-selection wasn't working properly, while the asset table was working correctly.
|
||||
|
||||
## Root Cause
|
||||
The `selectAllChecked` computed property's setter was directly modifying the `selectedShots` object inline instead of calling a separate function like in AssetBrowser.
|
||||
|
||||
## Fix Applied
|
||||
|
||||
### Before:
|
||||
```typescript
|
||||
const selectAllChecked = computed({
|
||||
get: () => {
|
||||
return filteredShots.value.length > 0 &&
|
||||
filteredShots.value.every(shot => selectedShots.value[shot.id]);
|
||||
},
|
||||
set: (checked: boolean) => {
|
||||
filteredShots.value.forEach(shot => {
|
||||
selectedShots.value[shot.id] = checked;
|
||||
});
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
### After:
|
||||
```typescript
|
||||
// Separate function for toggling all selections
|
||||
const toggleSelectAll = (checked: boolean) => {
|
||||
filteredShots.value.forEach(shot => {
|
||||
selectedShots.value[shot.id] = checked;
|
||||
});
|
||||
};
|
||||
|
||||
// Computed property that calls the function
|
||||
const selectAllChecked = computed({
|
||||
get: () => {
|
||||
return filteredShots.value.length > 0 &&
|
||||
filteredShots.value.every(shot => selectedShots.value[shot.id]);
|
||||
},
|
||||
set: (checked: boolean) => {
|
||||
toggleSelectAll(checked);
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
## Why This Works
|
||||
|
||||
Having a separate `toggleSelectAll` function:
|
||||
1. Makes the code structure match the working AssetBrowser implementation
|
||||
2. Provides better separation of concerns
|
||||
3. Makes the logic more explicit and easier to debug
|
||||
4. Ensures Vue's reactivity system properly tracks the changes
|
||||
|
||||
## Testing
|
||||
|
||||
Test the following scenarios to verify the fix:
|
||||
1. ✅ Click the "Select All" checkbox - all shots should be selected
|
||||
2. ✅ Click it again - all shots should be deselected
|
||||
3. ✅ Select some shots individually, then click "Select All" - all should be selected
|
||||
4. ✅ With all selected, deselect one, then click "Select All" again - all should be selected
|
||||
5. ✅ Verify Ctrl/Cmd+Click multi-selection still works
|
||||
6. ✅ Verify Shift+Click range selection still works
|
||||
|
||||
## Related Files
|
||||
- `frontend/src/components/shot/ShotsTableView.vue` - Fixed component
|
||||
- `frontend/src/components/asset/AssetBrowser.vue` - Reference implementation
|
||||
Reference in New Issue
Block a user