Søk av feil implementert

Co-authored-by: Markus A. R. Johansen <markus.aleksander.rakil.johansen@nav.no>
Co-authored-by: Amalie Erdal Mansåker <amalie.erdal.mansaker@nav.no>
This commit is contained in:
Sindre Kjelsrud 2023-07-26 15:06:47 +02:00
parent 7c7115dfe9
commit 7839c4c810
3 changed files with 48 additions and 51 deletions

View file

@ -56,8 +56,10 @@ fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngin
call.respond(status = HttpStatusCode.Created, message = testMelding)
}
get("/api/hentsok/{sokestreng}"){
val sokestreng = call.receive<String>()
call.respond(status = HttpStatusCode.Created, message = sokestreng)
val sokestreng = call.parameters["sokestreng"]
?: return@get call.respond(HttpStatusCode.BadRequest, "Sokestreng må være definert")
val sokeresultat = feilmeldingRepository.hentSokteFeilmeldinger(sokestreng)
call.respond(status = HttpStatusCode.Created, message = sokeresultat)
}
}
}

View file

@ -1,50 +1,21 @@
import FeilCard from "./FeilCard";
import { Feilmelding } from "../interface.ts";
import { useEffect, useState } from "react";
interface ICardsContainer {
feilmeldinger: Feilmelding[]
}
/**
* Komponent som laster inn feilmeldinger i kort fra database.
* @returns grid med feilmeldinger
*/
const CardsContainer = () => {
// Array med feilmeldinger
const [feilMeldinger, setFeilmeldinger] = useState<Feilmelding[]>([]);
/**
* Fetcher feilmeldinger fra backend.
* Bruker endepunktet /api/hentallefeil.
* @returns response
*/
async function fetchAlleFeil() {
const response = await fetch("/api/hentallefeil", {
method: "GET",
headers: {
"Content-Type": "application/json",
},
})
.then((data) => data.json())
.then((feil) => {
setFeilmeldinger(
feil.map((jsonFeilmelding: any) => new Feilmelding(jsonFeilmelding))
);
})
.catch((error) => {
console.log(error);
});
return response;
}
// Sørger for at fetchAlleFeil() kun kjører når komponentet laster inn
useEffect(() => {
fetchAlleFeil()
}, [])
const CardsContainer = (props: ICardsContainer) => {
return (
<div>
<div className="grid grid-cols-2 gap-4">
{feilMeldinger.map((feilMelding) => (
{props.feilmeldinger.map((feilMelding) => (
<FeilCard
key={feilMeldinger.indexOf(feilMelding)}
key={props.feilmeldinger.indexOf(feilMelding)}
tittel={feilMelding.tittel}
beskrivelse={feilMelding.beskrivelse}
dato={new Date()}

View file

@ -6,22 +6,46 @@ import { PlusIcon } from "@navikt/aksel-icons";
import Filtermeny from "./components/Filtermeny";
import { useNavigate } from "react-router-dom";
import axios from "axios";
import { useEffect, useState } from "react";
import { Feilmelding } from "./interface";
export default function Home() {
const navigate = useNavigate()
const [feilmeldinger, setFeilmeldinger] = useState<Feilmelding[]>([]);
const handleChange = (soeketekst: string) => {
console.log("search changed")
/**
* Henter alle feilmeldinger fra backend.
* Bruker endepunktet /api/hentallefeil.
*/
const hentAlleFeil = async () => {
await axios.get("/api/hentallefeil")
.then(data => data.data)
.then(feil => {
setFeilmeldinger(
feil.map((jsonFeilmelding: any) => new Feilmelding(jsonFeilmelding))
);
})
}
axios.post("/api/hentsok", soeketekst, {
headers: {
'Content-Type': 'application/json'
}
}).then((response) => {
console.log(response.data);
}).catch((error) => {
console.log(error);
})
// Sørger for at hentAlleFeil() kun kjører når komponentet laster inn
useEffect(() => {
hentAlleFeil();
}, [])
/**
* Oppdaterer viste feilmeldinger ved endring i søkefelt.
* Kontakter endepunktet /api/hentsok/.
* @param soketekst
*/
const handleSearch = async (soketekst: string) => {
// Ved tomt søkefelt hentes alle feilmeldinger
if (soketekst === "") {
hentAlleFeil()
return
}
const { data } = await axios.get(`/api/hentsok/${soketekst}`)
setFeilmeldinger(data)
}
return (
@ -35,7 +59,7 @@ export default function Home() {
label="Søkefelt"
description="Søk gjennom innmeldte feil (nøkkelord, tags, status)"
hideLabel={false}
onChange={(soeketekst) => handleChange(soeketekst)}
onChange={soeketekst => handleSearch(soeketekst)}
/>
<Button
className="w-64 h-min"
@ -45,7 +69,7 @@ export default function Home() {
Meld inn feil
</Button>
</div>
<CardsContainer/>
<CardsContainer feilmeldinger={feilmeldinger}/>
</div>
</div>
</main>