2023-07-19 15:22:53 +02:00
import "@navikt/ds-css" ;
import { ArrowLeftIcon , BugIcon } from "@navikt/aksel-icons" ;
2023-07-25 13:15:36 +02:00
import { Alert , Button , Heading , TextField , Textarea } from "@navikt/ds-react" ;
2023-07-19 15:22:53 +02:00
import axios from "axios" ;
import { useState } from "react" ;
import BildeOpplastning from "../components/BildeOpplastning" ;
import Header from "../components/Header" ;
2023-07-19 17:10:21 +02:00
import { useNavigate } from "react-router-dom" ;
2023-07-19 15:22:53 +02:00
export default function Feil() {
const [ tittel , setTittel ] = useState ( "" ) ;
const [ beskrivelse , setBeskrivelse ] = useState ( "" ) ;
2023-07-25 13:15:36 +02:00
const [ status , setStatus ] = useState ( 0 )
2023-07-19 15:22:53 +02:00
const handleSubmit = ( ) = > {
2023-07-24 15:13:04 +02:00
const payload = {
tittel : tittel ,
beskrivelse : beskrivelse ,
2023-08-01 10:32:15 +02:00
dato : new Date ( ) . toISOString ( ) . replace ( 'Z' , '' ) , // Litt wack fix, burde endres
arbeidsstatus : 0 ,
haster : false
2023-07-24 15:13:04 +02:00
}
2023-07-26 13:03:30 +02:00
axios . post ( "/api/nyfeil" , payload , {
2023-07-19 15:22:53 +02:00
headers : {
'Content-Type' : 'application/json'
}
} ) . then ( ( response ) = > {
2023-07-25 13:15:36 +02:00
setStatus ( response . status )
2023-07-19 15:22:53 +02:00
} ) . catch ( ( error ) = > {
console . log ( error ) ;
} )
}
2023-07-25 13:15:36 +02:00
const handleAlerts = ( ) = > {
if ( status === 201 ) {
console . log ( "Feil lagt til i database" ) ;
2023-07-25 13:27:49 +02:00
setTimeout ( ( ) = >
{
navigate ( "/" ) ;
} ,
5000 ) ;
return < Alert variant = "success" > Feil er meldt inn ! Du vil nå sendes tilbake til hovedmenyen om fem sekunder . < / Alert >
2023-07-25 13:15:36 +02:00
} else {
console . log ( "Noe gikk galt, feil ikke lagt til i database!" ) ;
return < Alert variant = "error" > Noe gikk galt ! Prøv igjen om noen minutter . < / Alert >
}
}
2023-07-19 15:22:53 +02:00
// TODO: clear data fra felter
2023-07-25 13:15:36 +02:00
2023-07-19 17:10:21 +02:00
const navigate = useNavigate ( )
2023-07-19 15:22:53 +02:00
return (
< main className = "flex flex-col h-screen" >
< Header / >
< div className = "flex grow" >
< div className = "w-1/4 bg-bg-subtle" > < / div >
< div className = "flex flex-col justify-center gap-16 p-8 px-16 grow" >
< div className = " flex flex-col gap-2 justify-center" >
< BugIcon
title = "Insekts ikon"
fontSize = "3rem"
/ >
< Heading
level = "1"
size = "xlarge"
>
Innmelding av feil i speil
< / Heading >
< / div >
< div className = "w-1/2 flex flex-col gap-4 justify-center" >
< TextField
label = "Tittel"
onChange = { e = > setTittel ( e . target . value ) }
/ >
< Textarea
label = "Beskrivelse"
description = "Detaljert beskrivelse av problemet"
onChange = { e = > setBeskrivelse ( e . target . value ) }
/ >
< BildeOpplastning / >
< / div >
< div className = "w-1/2 flex flex-col gap-2 justify-center" >
2023-07-25 13:15:36 +02:00
{ status != 0 ? handleAlerts ( ) : < > < / > }
2023-07-19 15:22:53 +02:00
< Button
onClick = { handleSubmit }
variant = "primary"
>
Meld inn feil
< / Button >
< Button
variant = "tertiary"
icon = { < ArrowLeftIcon / > }
2023-07-19 17:10:21 +02:00
onClick = { ( ) = > navigate ( "/" ) }
2023-07-19 15:22:53 +02:00
>
Gå tilbake til hovedmenyen
< / Button >
< / div >
< / div >
< div className = "w-1/4 bg-bg-subtle" > < / div >
< / div >
< / main >
)
}