Modal za podrobnosti razpisa se ne zapre pri pritisku na ESC
#1 geöffnet am 29.10.2025
Repository-Metriken
- Stars
- (0 Sterne)
- PR-Merge-Metriken
- (PR-Metriken ausstehend)
Beschreibung
Atributi napake (IEEE 1044-2009)
| Atribut | Vrednost |
|---|---|
| ID | SS-UI-002 |
| Status | Nov |
| Naslov | Modal za Podrobnosti Razpisa se ne Zapre pri Pritisku ESC Tipke |
| Projekt | SmartSearch v10.0 |
| Datum odkritja | 29. 10. 2025 |
| Opazovalec | Kyuhisan |
| Dodeljeno | Kyuhisan |
| Tip | Napaka (Error) |
| Resnost | Nizka (Low) |
| Prioriteta | Srednja (Medium) |
| Ponovljivost | Vedno |
| Lokacija | ListingDetailsModal.jsx:[85-110], useEffect hook |
| Faza odkritja | Testiranje |
Opis napake
Simptom (Failure): Uporabnik ne more zapreti modala za podrobnosti razpisa s pritiskom na ESC tipko. Modal ostane odprt tudi po večkratnem pritisku ESC.
Defekt (Fault): V React komponenti "ListingDetailsModal.jsx" manjka funkcionalnost, ki odstrani eventListener za tipko ESC. Ta se doda a se kasneje ne odstrani, kar povzroči, da tipka ne deluje pravilno.
Programska napaka (Error): Hook "useEffect" brez funkcionalnosti, ki odstrani pretekle eventListenerje te samo podvaja, namesto, da bi z cleanup funkcijo te počistil sproti.
Okolje
- Aplikacija: SmartSearch v10.0
- Platforma: Windows 11
- Brskalnik: Chrome 120.0.6099.129
- Frontend: React 18.2.0, TypeScript 5.0.4
- Komponenta: ListingDetailsModal.jsx [useEffect hook]
Koraki za reprodukcijo
- Odpri frontend aplikacije SmartSearch v brskalniku
- Na seznamu razpisov klikni na poljuben razpis
- Modal z podrobnostmi razpisa se odpre
- Pritisni tipko ESC na tipkovnici
- Razpis se zapre a v ozadju ne odstrani eventListenerja
- Na seznamu razpisov klikni na poljuben razpis
- Pritisni tipko ESC na tipkovnici
- Opazuj, da modal zdaj ostane odprt
Dejanski rezultat: Modal ostane odprt, ESC tipka ne deluje.
Pričakovan rezultat: Modal bi se moral zapreti ob pritisku na ESC tipko.
Analiza
Klasifikacija
- Tip anomalije: Napaka v uporabniškem vmesniku (UI Error)
- Vir napake: Implementacijska napaka - manjkajoča cleanup funkcija za useEffect hook
- Faza vnosa napake: Med razvojem frontenda (Frontend Development)
Resnost: Nizka (Low)
- Utemeljitev:
- Funkcionalnost ni kritična - uporabnik lahko zapre modal s klikom na gumb "X" ali klikom izven modala
- Workaround je enostaven in intuitiven
- Ne vpliva na podatke ali stabilnost sistema
- Slaba uporabniška izkušnja, vendar ne blokira dela
Prioriteta: Srednja (Medium)
- ESC tipka je standardna metoda za zapiranje modalov
- Enostaven popravek
- Ne blokira drugih funkcionalnosti
Vpliv
- Funkcionalnost: Nizek (saj obstaja workaround)
- Uporabniška izkušnja: Srednji (slabša UX za naprednejše uporabnike)
- Poslovna vrednost: Nizek (funkcionalnost ni ključno za delovanje)
Vzročna analiza
Lokacija napake
- Datoteka:
src/components/ListingDetailsModal.jsx - Funkcija:
useEffecthook za ESC tipko - Vrstice: 85-110
Trenutna (problematična) implementacija
useEffect(() => {
const handleEscKey = (event) => {
if (event.key === 'Escape') {
onClose();
}
};
document.addEventListener('keydown', handleEscKey);
// NAPAKA: Manjka cleanup funkcija za odstranitev event listener-ja
}, [onClose]);
Osnovni vzrok
- Manjkajoča cleanup funkcija v
useEffecthooku - Event listener se ne odstrani po uporabi komponente
- Povzroča memory leak in nedelovanje ESC tipke
Predlagana rešitev
Popravljena koda
useEffect(() => {
const handleEscKey = (event) => {
if (event.key === 'Escape') {
onClose();
}
};
document.addEventListener('keydown', handleEscKey);
// Cleanup funkcija za odstranitev event listener-ja
return () => {
document.removeEventListener('keydown', handleEscKey);
};
}, [onClose]);
Ocena napora
- Implementacija: 5 minut
- Testiranje: 20 minut
- Code review: 5 minut
- Skupaj: 30 minut
Merila uspešnosti
- ESC tipka zapre modal pri prvem pritisku
- Event listener se pravilno odstrani pri zaprtju komponente
- Ne pride do memory leakov
- Unit testi pokrivajo ESC funkcionalnost
- Manualno testiranje potrdi delovanje
- Code review potrjen
Povezava s testnim scenarijem
Ta napaka je bila odkrita med izvajanjem testnega scenarija: SmartSearch-Ogled-Podrobnosti-Razpisa (TestScenarios.txt, korak 11) Korak 11 testnega scenarija: "Preveri delovanje tipke ESC za zaprtje modala" - FAILED