2023-07-19 15:22:53 +02:00
import "@navikt/ds-css" ;
import { ArrowLeftIcon , BugIcon } from "@navikt/aksel-icons" ;
2023-08-03 12:37:22 +02:00
import { Alert , Button , Chips , Heading , Switch , 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-08-02 18:50:48 +02:00
import Skillelinje from "../components/Skillelinje" ;
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-08-03 08:48:16 +02:00
const [ haster , setHaster ] = useState ( false )
2023-08-03 12:37:22 +02:00
const [ valgteTags , setValgteTags ] = useState ( [ ] as string [ ] ) ;
const [ aktørId , setAktørId ] = useState ( "" ) ;
2023-07-19 15:22:53 +02:00
2023-08-03 15:00:38 +02:00
console . log ( aktørId ) ;
2023-07-19 15:22:53 +02:00
const handleSubmit = ( ) = > {
2023-07-24 15:13:04 +02:00
const payload = {
2023-08-01 15:50:48 +02:00
id : null ,
2023-07-24 15:13:04 +02:00
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 ,
2023-08-03 08:48:16 +02:00
haster : haster ,
kommentar : null
2023-08-03 12:37:22 +02:00
//kategorier: valgteTags
//aktørId: aktørId
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
2023-08-03 12:37:22 +02:00
const tags = [
"Utbetaling" ,
"Inntekt" ,
"Speil" ,
"Annet"
] ;
2023-07-19 15:22:53 +02:00
return (
< main className = "flex flex-col h-screen" >
< Header / >
2023-08-03 12:37:22 +02:00
< div className = "flex items" >
< div className = " bg-bg-subtle grow" > < / div >
< div className = "w-3/5 flex flex-col justify-center gap-8 px-16 py-8" >
2023-07-19 15:22:53 +02:00
< 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 ) }
/ >
2023-08-03 12:37:22 +02:00
2023-07-19 15:22:53 +02:00
< Textarea
label = "Beskrivelse"
description = "Detaljert beskrivelse av problemet"
onChange = { e = > setBeskrivelse ( e . target . value ) }
/ >
2023-08-02 18:50:48 +02:00
< Skillelinje / >
2023-07-19 15:22:53 +02:00
< BildeOpplastning / >
2023-08-03 12:37:22 +02:00
2023-08-03 10:39:47 +02:00
< Skillelinje / >
< Heading size = "xsmall" >
Haster det å fikse feilen ?
< / Heading >
2023-08-03 08:48:16 +02:00
< Switch
onClick = { ( ) = > setHaster ( ! haster ) }
>
Saken Haster
< / Switch >
2023-08-03 12:37:22 +02:00
< Skillelinje / >
< TextField
label = "Aktør-ID (valgfritt)"
description = "Legg ved Aktør-ID om det er relevant"
onChange = { e = > setAktørId ( e . target . value ) }
/ >
2023-08-03 08:48:16 +02:00
2023-08-03 12:37:22 +02:00
< Skillelinje / >
< Heading size = "xsmall" >
2023-08-03 15:00:38 +02:00
Velg kategorier som passer
2023-08-03 12:37:22 +02:00
< / Heading >
< Chips >
{ tags . map ( ( c ) = > (
< Chips.Toggle
selected = { valgteTags . includes ( c ) }
key = { c }
onClick = { ( ) = >
setValgteTags (
valgteTags . includes ( c )
? valgteTags . filter ( ( x ) = > x !== c )
: [ . . . valgteTags , c ]
)
}
>
{ c }
< / Chips.Toggle >
) ) }
< / Chips >
< / div >
< div className = "w-1/2 flex flex-col gap-2 justify-center mt-8" >
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 >
2023-08-03 12:37:22 +02:00
< div className = " bg-bg-subtle grow" > < / div >
2023-07-19 15:22:53 +02:00
< / div >
< / main >
)
}