✨ 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:
parent
7c7115dfe9
commit
7839c4c810
3 changed files with 48 additions and 51 deletions
|
@ -56,8 +56,10 @@ fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngin
|
||||||
call.respond(status = HttpStatusCode.Created, message = testMelding)
|
call.respond(status = HttpStatusCode.Created, message = testMelding)
|
||||||
}
|
}
|
||||||
get("/api/hentsok/{sokestreng}"){
|
get("/api/hentsok/{sokestreng}"){
|
||||||
val sokestreng = call.receive<String>()
|
val sokestreng = call.parameters["sokestreng"]
|
||||||
call.respond(status = HttpStatusCode.Created, message = sokestreng)
|
?: return@get call.respond(HttpStatusCode.BadRequest, "Sokestreng må være definert")
|
||||||
|
val sokeresultat = feilmeldingRepository.hentSokteFeilmeldinger(sokestreng)
|
||||||
|
call.respond(status = HttpStatusCode.Created, message = sokeresultat)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,50 +1,21 @@
|
||||||
import FeilCard from "./FeilCard";
|
import FeilCard from "./FeilCard";
|
||||||
import { Feilmelding } from "../interface.ts";
|
import { Feilmelding } from "../interface.ts";
|
||||||
import { useEffect, useState } from "react";
|
|
||||||
|
interface ICardsContainer {
|
||||||
|
feilmeldinger: Feilmelding[]
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Komponent som laster inn feilmeldinger i kort fra database.
|
* Komponent som laster inn feilmeldinger i kort fra database.
|
||||||
* @returns grid med feilmeldinger
|
* @returns grid med feilmeldinger
|
||||||
*/
|
*/
|
||||||
const CardsContainer = () => {
|
const CardsContainer = (props: ICardsContainer) => {
|
||||||
// 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()
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div className="grid grid-cols-2 gap-4">
|
<div className="grid grid-cols-2 gap-4">
|
||||||
{feilMeldinger.map((feilMelding) => (
|
{props.feilmeldinger.map((feilMelding) => (
|
||||||
<FeilCard
|
<FeilCard
|
||||||
key={feilMeldinger.indexOf(feilMelding)}
|
key={props.feilmeldinger.indexOf(feilMelding)}
|
||||||
tittel={feilMelding.tittel}
|
tittel={feilMelding.tittel}
|
||||||
beskrivelse={feilMelding.beskrivelse}
|
beskrivelse={feilMelding.beskrivelse}
|
||||||
dato={new Date()}
|
dato={new Date()}
|
||||||
|
|
|
@ -6,22 +6,46 @@ import { PlusIcon } from "@navikt/aksel-icons";
|
||||||
import Filtermeny from "./components/Filtermeny";
|
import Filtermeny from "./components/Filtermeny";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import { Feilmelding } from "./interface";
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
const navigate = useNavigate()
|
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, {
|
// Sørger for at hentAlleFeil() kun kjører når komponentet laster inn
|
||||||
headers: {
|
useEffect(() => {
|
||||||
'Content-Type': 'application/json'
|
hentAlleFeil();
|
||||||
}
|
}, [])
|
||||||
}).then((response) => {
|
|
||||||
console.log(response.data);
|
/**
|
||||||
}).catch((error) => {
|
* Oppdaterer viste feilmeldinger ved endring i søkefelt.
|
||||||
console.log(error);
|
* 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 (
|
return (
|
||||||
|
@ -35,7 +59,7 @@ export default function Home() {
|
||||||
label="Søkefelt"
|
label="Søkefelt"
|
||||||
description="Søk gjennom innmeldte feil (nøkkelord, tags, status)"
|
description="Søk gjennom innmeldte feil (nøkkelord, tags, status)"
|
||||||
hideLabel={false}
|
hideLabel={false}
|
||||||
onChange={(soeketekst) => handleChange(soeketekst)}
|
onChange={soeketekst => handleSearch(soeketekst)}
|
||||||
/>
|
/>
|
||||||
<Button
|
<Button
|
||||||
className="w-64 h-min"
|
className="w-64 h-min"
|
||||||
|
@ -45,7 +69,7 @@ export default function Home() {
|
||||||
Meld inn feil
|
Meld inn feil
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
<CardsContainer/>
|
<CardsContainer feilmeldinger={feilmeldinger}/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
Reference in a new issue