Implementasjon av søking, filtrering og sortering på ThreatActor page #82
+952
−156
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Beskrivelse
Tidligere støttet katalogen uthenting og paginering av Threat Actors, og filteralternativene var allerede koblet til databasen. Denne implementasjonen gjør det mulig å bruke disse alternativene til å søke og filtrere i hele datagrunnlaget.
Løsningen er utviklet med fokus på skalerbarhet, separasjon av ansvar og inputvalidering
Backend
Search, Filtrering og Sortering
Target oppførsel: Man kan søke, sortere og filtrere samtidig.
Målet er å gjøre getAllThreatActorsGrid() til en fleksibel funksjon som kan håndetere ulike kombinasjoner av parametre, dette tok jeg inspirasjon fra en annen gruppe i medstudenvurderingen. Utvidet getAllThreatActorsGrid() i ThreatActorRepository med conditions til å støtte:
Inputvalidering
Frontend-input skal ikke automatisk antas å være gyldig. Ved å validere argumentene før de når databasen, kan vi begrense unødvendig ressurskrevende queries. Flyten blir:
GraphQL → Resolver → Validation → Repository → Drizzle → MySQL
Dokumentasjon
KI ble brukt til å gå over ThreatActor backend og dokumentere den litt for å få mer presise og forståelige docs til ulike funksjoner.
Frontend
Managment
Jeg har endret ThreatActorFilter.tsx slik at komponenten mottar filterverdiene gjennom props, mens ThreatActors.tsx har ansvaret for å håndtere søk, filtrering og paginering.
Og jeg har delt mellom 2 typer states:
Grunnen til dette er at brukeren skal kunne velge flere filtre uten at det sendes en ny forespørsel til databasen for hvert valg.
Filtrene tas først i bruk når man trykker Apply Filters, og søkeordet aktiveres når man trykker Search eller Enter.
Search
Jeg har oppdatert ThreatActorSearch.tsx slik at søkefeltet nå fungerer sammen med den nye søkelogikken. Bruker props til å kommunisere med ThreatActor og kunne bruke onChange og onSearch. Jeg har også brukt event.preventDefault() for å unngå at hele siden lastes på nytt ved søk
Filter
Problemet var at samspillet mellom sortering search og filtrering var ikke så intuitiv som jeg hadde håpet det skulle være.
Derfor opprettet jeg "Brikker" som viser hvilke søke/filter/sortering operasjoner som er i bruk akkurat nå
I tillegg har jeg opprettet en egen reset knapp som resetter både aktive filtre( clear) og filtre som bare står i filterboxen og som ikke har blitt applied enda (snurre knapp)
KI deklarasjon
KI har blitt brukt som faglig sparringspartner under utviklingen, blant annet til diskusjon av arkitektur, state management, inputvalidering, Drizzle-spørringer og forslag til implementasjon.
Arbeidet har vært gjennomført iterativt, der forslag har blitt diskutert, vurdert og tilpasset prosjektets eksisterende struktur. KI har også bistått med:
Formålet med KI-bruken har vært å støtte problemløsning og forståelse av tekniske valg, ikke bare å generere ferdig kode.
Closes #77