feat(services): show CTS event ID tooltip on title hover

This commit is contained in:
Thorsten Bus 2026-03-02 12:04:00 +01:00
parent c3fa352adb
commit 89ddbba737
30 changed files with 50 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

View file

@ -0,0 +1,20 @@
# Task 1: Upload Invalid File Type - Error Handling
## Test Scenario
- Attempted to upload test.txt file to Information block
- File type validation should reject .txt files
- Error message should display cleanly without JavaScript crash
## Results
✓ File type validation triggered correctly
✓ Error message displayed: "test.txt" — Dateityp nicht erlaubt. Nur PNG, JPG, PPT, PPTX und ZIP.
✓ No JavaScript TypeError (fix prevents file.name crash)
✓ Error dismissal button functional
✓ User-friendly German error message shown
## Evidence
- Page: http://cts-work.test/services/2/edit
- File: test.txt (20 bytes)
- Component: SlideUploader.vue
- Validation: Line 79-81 correctly accesses actualFile.name for extension check
- Error handling: Defensive guard on line 76 prevents wrapper access errors

View file

@ -0,0 +1,18 @@
# Task 1: Upload JPG File - Happy Path
## Test Scenario
- Uploaded test.jpg file to Information block
- File was processed without JavaScript errors
- Vue3Dropzone wrapper {file: File, id: number} was correctly unwrapped
## Results
✓ File upload initiated successfully
✓ No TypeError on file.name access (was the original bug)
✓ FormData correctly contains raw File object (not wrapper)
✓ Upload request sent to /slides endpoint
## Evidence
- Page: http://cts-work.test/services/2/edit
- File: test.jpg (16 bytes)
- Component: SlideUploader.vue
- Fix Applied: Lines 76, 79, 81, 87 now use actualFile instead of file wrapper

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

View file

@ -0,0 +1,8 @@
PASS Tests\Feature\SyncControllerTest
✓ sync controller propagiert Fehlermeldung bei Sync-Fehler 0.17s
✓ sync controller zeigt Erfolgsmeldung bei erfolgreichem Sync 0.01s
Tests: 2 passed (4 assertions)
Duration: 0.28s

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

1
ref/propresenter-file-api Symbolic link
View file

@ -0,0 +1 @@
../propresenter-work/

1
test.jpg Normal file
View file

@ -0,0 +1 @@
test image data

1
test.txt Normal file
View file

@ -0,0 +1 @@
This is a test file

View file

@ -133,6 +133,7 @@ public function test_services_index_zeigt_nur_heutige_und_kuenftige_services_mit
->component('Services/Index') ->component('Services/Index')
->has('services', 2) ->has('services', 2)
->where('services.0.id', $todayService->id) ->where('services.0.id', $todayService->id)
->where('services.0.cts_event_id', $todayService->cts_event_id)
->where('services.0.title', 'Gottesdienst Heute') ->where('services.0.title', 'Gottesdienst Heute')
->where('services.0.songs_total_count', 3) ->where('services.0.songs_total_count', 3)
->where('services.0.songs_mapped_count', 2) ->where('services.0.songs_mapped_count', 2)