2023-08-11 09:53:09 +02:00
import { FloppydiskIcon , TrashIcon , XMarkIcon } from "@navikt/aksel-icons"
2023-08-02 18:57:45 +02:00
import { TextField , Textarea , RadioGroup , Radio , Button , Switch , Heading } from "@navikt/ds-react"
2023-08-02 11:47:28 +02:00
import { useState } from "react"
2023-08-02 12:05:08 +02:00
import { FeilmeldingsInnholdInterface } from "../interface"
2023-08-02 11:47:28 +02:00
import axios from "axios"
2023-08-02 18:50:48 +02:00
import Skillelinje from "./Skillelinje"
2023-08-02 11:47:28 +02:00
2023-08-02 15:31:49 +02:00
interface redigeringsInterface extends FeilmeldingsInnholdInterface {
reset : ( ) = > void
}
2023-08-02 11:47:28 +02:00
2023-08-07 12:35:55 +02:00
/ * *
* Redigeringsverktøy er et skjema som lar brukeren redigere en innmeldt feil .
* Statusflagg som arbeidsstatus og haster flagg kan endres .
* Tittel og beskrivelse kan også endres
* /
2023-08-02 15:31:49 +02:00
const RedigeringsVerktoy = ( props : redigeringsInterface ) = > {
2023-08-02 11:47:28 +02:00
const [ tittel , setTittel ] = useState ( props . tittel )
const [ beskrivelse , setBeskrivelse ] = useState ( props . beskrivelse )
const [ arbeidsstatus , setArbeidsstatus ] = useState ( props . arbeidsstatus )
const [ haster , setHaster ] = useState ( props . haster )
2023-08-07 12:35:55 +02:00
2023-08-02 15:31:49 +02:00
const lagreEndringer = async ( ) = > {
2023-08-02 12:05:08 +02:00
props . setVisModal ( false )
2023-08-02 11:47:28 +02:00
props . setRedigeringsmodus ( false )
const payload = {
id : props.id ,
tittel : tittel ,
beskrivelse : beskrivelse ,
dato : props.dato.toISOString ( ) . replace ( 'Z' , '' ) ,
arbeidsstatus : arbeidsstatus ,
2023-08-03 12:43:41 +02:00
haster : haster ,
2023-08-07 12:00:28 +02:00
kommentar : props.kommentar ,
aktorid : props.aktorId
2023-08-02 11:47:28 +02:00
}
2023-08-03 15:32:27 +02:00
await axios . put ( ` /api/oppdaterfeil ` , payload , {
2023-08-02 11:47:28 +02:00
headers : {
'Content-Type' : 'application/json'
}
} ) . then ( ( response ) = > {
console . log ( response ) ;
} ) . catch ( ( error ) = > {
console . log ( error ) ;
} )
2023-08-02 15:31:49 +02:00
props . reset ( )
2023-08-02 11:47:28 +02:00
}
return (
2023-08-03 10:51:04 +02:00
< div className = "flex flex-col gap-12 items-center px-12" >
< div className = "flex flex-col gap-6 w-full" >
2023-08-07 12:35:55 +02:00
< Heading className = "" size = "large" >
Rediger feil
< / Heading >
2023-08-02 11:47:28 +02:00
< TextField
label = "Tittel"
value = { tittel }
onChange = { e = > setTittel ( e . target . value ) }
/ >
< Textarea
label = "Beskrivelse"
value = { beskrivelse }
onChange = { e = > setBeskrivelse ( e . target . value ) }
/ >
2023-08-02 18:50:48 +02:00
< Skillelinje / >
2023-08-02 11:47:28 +02:00
< RadioGroup
legend = "Velg arbeidsstatus for feil"
onChange = { ( arbeidsstatus : number ) = > { setArbeidsstatus ( arbeidsstatus ) } }
value = { arbeidsstatus }
>
< Radio value = { 0 } > Ikke påbegynt < / Radio >
< Radio value = { 1 } > Feilen jobbes med < / Radio >
< Radio value = { 2 } > Feilen er fikset < / Radio >
< / RadioGroup >
2023-08-02 18:50:48 +02:00
< Skillelinje / >
2023-08-03 10:51:04 +02:00
< div >
< Heading size = "xsmall" >
Haster det å fikse feilen ?
< / Heading >
< Switch checked = { haster } onClick = { ( ) = > setHaster ( ! haster ) } >
Feilen haster
< / Switch >
< / div >
2023-08-02 11:47:28 +02:00
< / div >
2023-08-03 10:51:04 +02:00
< div className = "flex gap-4 items-start w-full" >
2023-08-02 11:47:28 +02:00
< Button
variant = "primary"
icon = { < FloppydiskIcon / > }
onClick = { ( ) = > lagreEndringer ( ) }
>
Lagre
< / Button >
< Button
variant = "danger"
icon = { < XMarkIcon / > }
onClick = { ( ) = > {
props . setRedigeringsmodus ( false )
} }
>
Avbryt
< / Button >
2023-08-11 09:53:09 +02:00
< SlettFeilKnapp setVisModal = { props . setVisModal } reset = { props . reset } id = { props . id } / >
2023-08-02 11:47:28 +02:00
< / div >
< / div >
)
}
2023-08-02 18:50:48 +02:00
export default RedigeringsVerktoy ;
2023-08-11 09:53:09 +02:00
const SlettFeilKnapp = ( props : {
id : number
reset : ( ) = > void
setVisModal : ( visModal : boolean ) = > void
} ) = > {
const SlettFeil = async ( ) = > {
await axios . delete ( ` /api/slettfeilmelding/ ${ props . id } ` )
props . reset ( )
props . setVisModal ( false )
}
return (
< Button
variant = "danger"
icon = { < TrashIcon / > }
onClick = { SlettFeil }
>
Slett feil
< / Button >
)
}