Skip to content

Commit

Permalink
EY-4718 Fikse nedtrekk lesevisning + endre på design etter nye skisser (
Browse files Browse the repository at this point in the history
#6284)

* Dropdown/lesevisning aktivitetsgrad

* Dropdown/lesevisning unntak + endring i design

* Nitpick + info om revurdering v/ <50% aktivitet
  • Loading branch information
oyvindsh authored Nov 11, 2024
1 parent 89955cf commit 291becc
Show file tree
Hide file tree
Showing 8 changed files with 327 additions and 207 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { useAktivitetspliktOppgaveVurdering } from '~components/aktivitetsplikt/OppgaveVurderingRoute'
import React from 'react'
import { erOppgaveRedigerbar } from '~shared/types/oppgave'
import { Heading } from '@navikt/ds-react'
import { BodyShort, Box, Heading, VStack } from '@navikt/ds-react'

import { AktivitetsgradIOppgave } from '~components/aktivitetsplikt/vurdering/aktivitetsgrad/AktivitetsgradIOppgave'
import { LeggTilUnntak } from '~components/aktivitetsplikt/vurdering/unntak/LeggTilUnntak'
import { LeggTilNyVurdering } from '~components/aktivitetsplikt/vurdering/aktivitetsgrad/LeggTilNyVurdering'
import { UnntakIOppgave } from '~components/aktivitetsplikt/vurdering/unntak/UnntakIOppgave'

Expand All @@ -14,12 +13,17 @@ export function Vurderinger(props: { doedsdato: Date }) {
const oppgaveErRedigerbar = erOppgaveRedigerbar(oppgave.status)

return (
<>
<Heading size="small">Vurderinger i oppgave</Heading>
<AktivitetsgradIOppgave doedsdato={doedsdato} />
{oppgaveErRedigerbar && <LeggTilNyVurdering doedsdato={doedsdato} />}
<UnntakIOppgave />
{oppgaveErRedigerbar && <LeggTilUnntak />}
</>
<Box paddingBlock="4 0" borderWidth="1 0 0 0" borderColor="border-subtle">
<VStack gap="6">
<VStack gap="2">
<Heading size="medium">Vurdering av aktivitetsplikt</Heading>
<BodyShort>Følgende vurderinger av aktiviteten er registrert.</BodyShort>
</VStack>
<AktivitetsgradIOppgave doedsdato={doedsdato} />
<UnntakIOppgave />

{oppgaveErRedigerbar && <LeggTilNyVurdering doedsdato={doedsdato} />}
</VStack>
</Box>
)
}
Original file line number Diff line number Diff line change
@@ -1,73 +1,16 @@
import {
IAktivitetspliktAktivitetsgrad,
IAktivitetspliktVurderingNy,
tekstAktivitetspliktVurderingType,
} from '~shared/types/Aktivitetsplikt'
import { BodyShort, Box, Button, Detail, Heading, HStack, ReadMore, Table, VStack } from '@navikt/ds-react'
import { ClockDashedIcon, PencilIcon, TrashIcon } from '@navikt/aksel-icons'
import { tekstAktivitetspliktVurderingType } from '~shared/types/Aktivitetsplikt'
import { BodyShort, Box, Detail, ReadMore, Table, VStack } from '@navikt/ds-react'
import { formaterDato, formaterDatoMedFallback } from '~utils/formatering/dato'
import React, { useState } from 'react'
import { VurderingAktivitetsgradForm } from './VurderingAktivitetsgradForm'
import { useApiCall } from '~shared/hooks/useApiCall'
import { slettAktivitetspliktVurdering } from '~shared/api/aktivitetsplikt'
import React from 'react'
import { useAktivitetspliktOppgaveVurdering } from '~components/aktivitetsplikt/OppgaveVurderingRoute'
import { isFailure, isPending } from '~shared/api/apiUtils'
import { ApiErrorAlert } from '~ErrorBoundary'
import { erOppgaveRedigerbar } from '~shared/types/oppgave'
import { useDispatch } from 'react-redux'
import { setAktivitetspliktVurdering } from '~store/reducers/Aktivitetsplikt12mnd'
import { VisAktivitetsgrad } from '~components/aktivitetsplikt/vurdering/aktivitetsgrad/VisAktivitetsgrad'

export function AktivitetsgradIOppgave(props: { doedsdato?: Date }) {
const { oppgave, vurdering } = useAktivitetspliktOppgaveVurdering()

const [slettStatus, slettSpesifikkAktivitet] = useApiCall(slettAktivitetspliktVurdering)
const [aktivitetForRedigering, setAktivitetForRedigering] = useState<IAktivitetspliktAktivitetsgrad | undefined>()

const dispatch = useDispatch()
const erRedigerbar = erOppgaveRedigerbar(oppgave.status)
const { vurdering } = useAktivitetspliktOppgaveVurdering()
const aktiviteter = vurdering.aktivitet

function oppdaterTilstandLagretVurdering(data: IAktivitetspliktVurderingNy) {
dispatch(setAktivitetspliktVurdering(data))
setAktivitetForRedigering(undefined)
}

function slettAktivitetsgradIOppgave(aktivitet: IAktivitetspliktAktivitetsgrad) {
slettSpesifikkAktivitet(
{
sakId: aktivitet.sakId,
oppgaveId: oppgave.id,
vurderingId: aktivitet.id,
},
(data) => {
dispatch(setAktivitetspliktVurdering(data))
setAktivitetForRedigering(undefined)
}
)
}

return (
<VStack gap="4">
<HStack gap="4" align="center">
<ClockDashedIcon fontSize="1.5rem" aria-hidden />
<Heading size="small">Aktivitetsgrad</Heading>
</HStack>

<Box maxWidth="42.5rem">
<ReadMore header="Dette menes med aktivitetsgrad">
I oversikten over aktivitetsgrad kan du se hvilken aktivitetsgrad brukeren har hatt. For å motta
omstillingsstønad stilles det ingen krav til aktivitet de første seks månedene etter dødsfall. Etter seks
måneder forventes det at du er i minst 50 % aktivitet, og etter ett år og fremover forventes det 100 %
aktivitet. Vær oppmerksom på at det finnes unntak.
</ReadMore>
</Box>

{isFailure(slettStatus) && (
<ApiErrorAlert>
Kunne ikke slette aktivitetsvurderingen, på grunn av feil: {slettStatus.error.detail}
</ApiErrorAlert>
)}

<Table size="small">
<Table.Header>
<Table.Row>
Expand All @@ -76,7 +19,6 @@ export function AktivitetsgradIOppgave(props: { doedsdato?: Date }) {
<Table.HeaderCell scope="col">Fra og med</Table.HeaderCell>
<Table.HeaderCell scope="col">Til og med</Table.HeaderCell>
<Table.HeaderCell scope="col">Kilde</Table.HeaderCell>
<Table.HeaderCell />
</Table.Row>
</Table.Header>
<Table.Body>
Expand All @@ -85,15 +27,7 @@ export function AktivitetsgradIOppgave(props: { doedsdato?: Date }) {
{aktiviteter.map((aktivitet) => (
<Table.ExpandableRow
key={aktivitet.id}
open={aktivitetForRedigering?.id === aktivitet.id}
content={
<VurderingAktivitetsgradForm
aktivitet={aktivitet}
doedsdato={props.doedsdato}
onAvbryt={() => setAktivitetForRedigering(undefined)}
onSuccess={oppdaterTilstandLagretVurdering}
/>
}
content={<VisAktivitetsgrad aktivitet={aktivitet} doedsdato={props.doedsdato} />}
>
<Table.DataCell>{tekstAktivitetspliktVurderingType[aktivitet.aktivitetsgrad]}</Table.DataCell>
<Table.DataCell>{formaterDatoMedFallback(aktivitet.fom, '-')}</Table.DataCell>
Expand All @@ -102,39 +36,25 @@ export function AktivitetsgradIOppgave(props: { doedsdato?: Date }) {
<BodyShort>{aktivitet.endret.ident}</BodyShort>
<Detail>Saksbehandler: {formaterDato(aktivitet.endret.tidspunkt)}</Detail>
</Table.DataCell>
<Table.DataCell>
{erRedigerbar && (
<HStack gap="4">
<Button
size="xsmall"
variant="secondary"
onClick={() => setAktivitetForRedigering(aktivitet)}
icon={<PencilIcon />}
>
Rediger
</Button>
<Button
size="xsmall"
variant="secondary"
icon={<TrashIcon />}
loading={isPending(slettStatus)}
onClick={() => slettAktivitetsgradIOppgave(aktivitet)}
>
Slett
</Button>
</HStack>
)}
</Table.DataCell>
</Table.ExpandableRow>
))}
</>
) : (
<Table.Row>
<Table.DataCell colSpan={6}>Ingen aktivitetsgrad</Table.DataCell>
<Table.DataCell colSpan={5}>Ingen aktivitetsgrad</Table.DataCell>
</Table.Row>
)}
</Table.Body>
</Table>

<Box maxWidth="42.5rem">
<ReadMore header="Dette menes med aktivitetsgrad">
I oversikten over aktivitetsgrad kan du se hvilken aktivitetsgrad brukeren har hatt. For å motta
omstillingsstønad stilles det ingen krav til aktivitet de første seks månedene etter dødsfall. Etter seks
måneder forventes det at du er i minst 50 % aktivitet, og etter ett år og fremover forventes det 100 %
aktivitet. Vær oppmerksom på at det finnes unntak.
</ReadMore>
</Box>
</VStack>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,15 @@ export function LeggTilNyVurdering(props: { doedsdato?: Date }) {
}

return (
<VStack gap="4">
<Heading size="small">Ny vurdering av aktivitetsplikt</Heading>
<VurderingAktivitetsgradForm
doedsdato={props.doedsdato}
onSuccess={oppdaterStateVedLagring}
onAvbryt={() => setLeggerTilVurdering(false)}
/>
</VStack>
<Box paddingBlock="4 0" borderWidth="1 0 0 0" borderColor="border-subtle">
<VStack gap="6">
<Heading size="medium">Vurdering av brukers aktivitet ved 12 måneder</Heading>
<VurderingAktivitetsgradForm
doedsdato={props.doedsdato}
onSuccess={oppdaterStateVedLagring}
onAvbryt={() => setLeggerTilVurdering(false)}
/>
</VStack>
</Box>
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
import {
IAktivitetspliktAktivitetsgrad,
IAktivitetspliktVurderingNy,
teksterAktivitetspliktSkjoennsmessigVurdering,
} from '~shared/types/Aktivitetsplikt'
import { useAktivitetspliktOppgaveVurdering } from '~components/aktivitetsplikt/OppgaveVurderingRoute'
import { useApiCall } from '~shared/hooks/useApiCall'
import { slettAktivitetspliktVurdering } from '~shared/api/aktivitetsplikt'
import React, { useState } from 'react'
import { useDispatch } from 'react-redux'
import { erOppgaveRedigerbar } from '~shared/types/oppgave'
import { setAktivitetspliktVurdering } from '~store/reducers/Aktivitetsplikt12mnd'
import { VurderingAktivitetsgradForm } from '~components/aktivitetsplikt/vurdering/aktivitetsgrad/VurderingAktivitetsgradForm'
import { BodyShort, Button, Heading, HStack, Label, VStack } from '@navikt/ds-react'
import { PencilIcon, TrashIcon } from '@navikt/aksel-icons'
import { isFailure, isPending } from '~shared/api/apiUtils'
import { ApiErrorAlert } from '~ErrorBoundary'

export function VisAktivitetsgrad(props: { doedsdato?: Date; aktivitet: IAktivitetspliktAktivitetsgrad }) {
const { doedsdato, aktivitet } = props
const { oppgave } = useAktivitetspliktOppgaveVurdering()

const [slettStatus, slettSpesifikkAktivitet] = useApiCall(slettAktivitetspliktVurdering)
const [redigerer, setRedigerer] = useState<boolean>(false)

const dispatch = useDispatch()
const erRedigerbar = erOppgaveRedigerbar(oppgave.status)

function oppdaterTilstandLagretVurdering(data: IAktivitetspliktVurderingNy) {
setRedigerer(false)
dispatch(setAktivitetspliktVurdering(data))
}

function slettAktivitetsgradIOppgave(aktivitet: IAktivitetspliktAktivitetsgrad) {
slettSpesifikkAktivitet(
{
sakId: aktivitet.sakId,
oppgaveId: oppgave.id,
vurderingId: aktivitet.id,
},
(data) => {
dispatch(setAktivitetspliktVurdering(data))
setRedigerer(false)
}
)
}
if (redigerer) {
return (
<VurderingAktivitetsgradForm
onSuccess={oppdaterTilstandLagretVurdering}
onAvbryt={() => setRedigerer(false)}
aktivitet={aktivitet}
doedsdato={doedsdato}
/>
)
}

return (
<VStack gap="6" maxWidth="50rem">
<Heading size="small">
Vurdering gjort for aktiviteten fra {aktivitet.vurdertFra12Mnd ? '12 måneder' : '6 måneder'}
</Heading>
<VStack gap="2">
<Label>Beskrivelse</Label>
<BodyShort>{aktivitet.beskrivelse}</BodyShort>
</VStack>

{aktivitet.skjoennsmessigVurdering && (
<VStack gap="4">
<Label>Trenger bruker ekstra oppfølging?</Label>
<BodyShort>{teksterAktivitetspliktSkjoennsmessigVurdering[aktivitet.skjoennsmessigVurdering]}</BodyShort>
</VStack>
)}

{erRedigerbar && (
<HStack gap="4">
<Button size="xsmall" variant="secondary" onClick={() => setRedigerer(true)} icon={<PencilIcon />}>
Rediger
</Button>
<Button
size="xsmall"
variant="secondary"
icon={<TrashIcon />}
loading={isPending(slettStatus)}
onClick={() => slettAktivitetsgradIOppgave(aktivitet)}
>
Slett
</Button>
</HStack>
)}

{isFailure(slettStatus) && (
<ApiErrorAlert>
Kunne ikke slette aktivitetsvurderingen, på grunn av feil: {slettStatus.error.detail}
</ApiErrorAlert>
)}
</VStack>
)
}
Loading

0 comments on commit 291becc

Please sign in to comment.