Skip to content

Commit

Permalink
Lataa paikallisten suoritusten kuvaukset ja laajuudet lomakkeelle
Browse files Browse the repository at this point in the history
  • Loading branch information
ilkkahanninen committed Dec 23, 2024
1 parent 9411323 commit 6201cac
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 17 deletions.
20 changes: 15 additions & 5 deletions web/app/ib/dialogs/UusiPreIB2015OsasuoritusDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import {
} from '../../types/fi/oph/koski/schema/PaikallinenKoodi'
import { PaikallinenLukionKurssi2015 } from '../../types/fi/oph/koski/schema/PaikallinenLukionKurssi2015'
import { PreIBKurssinSuoritus2015 } from '../../types/fi/oph/koski/schema/PreIBKurssinSuoritus2015'
import { koodiviiteId } from '../../util/koodisto'
import { koodiviiteEquals, koodiviiteId } from '../../util/koodisto'
import { DialogSelect } from '../../uusiopiskeluoikeus/components/DialogSelect'
import { PreIB2015OsasuoritusTunniste } from '../oppiaineet/preIBKurssi2015'
import {
Expand Down Expand Up @@ -105,6 +105,7 @@ export const UusiPreIB2015OsasuoritusDialog: AddOppiaineenOsasuoritusDialog<

const onTunniste = useCallback(
(option?: SelectOption<Koodistokoodiviite | PaikallinenKoodi>) => {
const tunniste = option?.value
if (
option?.key === UusiIBKurssiKey ||
option?.key === UusiPaikallinenLukionKurssiKey
Expand All @@ -114,15 +115,24 @@ export const UusiPreIB2015OsasuoritusDialog: AddOppiaineenOsasuoritusDialog<
PaikallinenKoodi({ koodiarvo: '', nimi: localize('') })
)
state.kuvaus.set(localize(''))
} else if (isPaikallinenKoodi(option?.value)) {
state.tunniste.set(option.value)
state.kuvaus.set(localize('todo: kaiva kuvaus tähän'))
} else if (isPaikallinenKoodi(tunniste)) {
const kurssi = [...paikallisetLukionKurssit, ...ibKurssit].find((k) =>
koodiviiteEquals(tunniste)(k.tunniste)
)
state.tunniste.set(tunniste)
state.kuvaus.set(kurssi?.kuvaus)
} else if (option?.value) {
state.uusiTyyppi.set(undefined)
state.tunniste.set(option.value as PreIB2015OsasuoritusTunniste)
}
},
[state.kuvaus, state.tunniste, state.uusiTyyppi]
[
ibKurssit,
paikallisetLukionKurssit,
state.kuvaus,
state.tunniste,
state.uusiTyyppi
]
)

const onPaikallinenKoulutus = useCallback(
Expand Down
29 changes: 22 additions & 7 deletions web/app/ib/dialogs/UusiPreIB2019OsasuoritusDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,16 @@ import {
} from '../../components-v2/opiskeluoikeus/PaikallinenKoulutusFields'
import { localize, t } from '../../i18n/i18n'
import { Koodistokoodiviite } from '../../types/fi/oph/koski/schema/Koodistokoodiviite'
import { LukionPaikallinenOpintojakso2019 } from '../../types/fi/oph/koski/schema/LukionPaikallinenOpintojakso2019'
import {
isLukionPaikallinenOpintojakso2019,
LukionPaikallinenOpintojakso2019
} from '../../types/fi/oph/koski/schema/LukionPaikallinenOpintojakso2019'
import {
isPaikallinenKoodi,
PaikallinenKoodi
} from '../../types/fi/oph/koski/schema/PaikallinenKoodi'
import { PreIBLukionModuulinTaiPaikallisenOpintojaksonSuoritus2019 } from '../../types/fi/oph/koski/schema/PreIBLukionModuulinTaiPaikallisenOpintojaksonSuoritus2019'
import { koodiviiteId } from '../../util/koodisto'
import { koodiviiteEquals, koodiviiteId } from '../../util/koodisto'
import { PreIB2019OsasuoritusTunniste } from '../oppiaineet/preIBModuuli2019'
import { labelWithKoodiarvo } from '../state/options'
import {
Expand Down Expand Up @@ -93,19 +96,24 @@ export const UusiPreIB2019OsasuoritusDialog: AddOppiaineenOsasuoritusDialog<

const onTunniste = useCallback(
(option?: SelectOption<Koodistokoodiviite | PaikallinenKoodi>) => {
const tunniste = option?.value
if (option?.key === UusiPaikallinenLukionKurssiKey) {
state.tunniste.set(
PaikallinenKoodi({ koodiarvo: '', nimi: localize('') })
)
state.kuvaus.set(localize(''))
} else if (isPaikallinenKoodi(option?.value)) {
state.tunniste.set(option.value)
state.kuvaus.set(localize('todo: kaiva kuvaus tähän'))
} else if (isPaikallinenKoodi(tunniste)) {
const opintojakso = paikallisetOpintojaksot.find((jakso) =>
koodiviiteEquals(tunniste)(jakso.tunniste)
)
state.tunniste.set(tunniste)
state.kuvaus.set(opintojakso?.kuvaus)
state.laajuus.set(opintojakso?.laajuus)
} else if (option?.value) {
state.tunniste.set(option.value as PreIB2019OsasuoritusTunniste)
}
},
[state.kuvaus, state.tunniste]
[paikallisetOpintojaksot, state.kuvaus, state.laajuus, state.tunniste]
)

const onPaikallinenKoulutus = useCallback(
Expand All @@ -127,8 +135,15 @@ export const UusiPreIB2019OsasuoritusDialog: AddOppiaineenOsasuoritusDialog<
const kurssi = state.result
if (kurssi) {
onAdd(kurssi)

if (isLukionPaikallinenOpintojakso2019(kurssi.koulutusmoduuli)) {
storePaikallinenOpintojakso(
koodiviiteId(kurssi.koulutusmoduuli.tunniste),
kurssi.koulutusmoduuli
)
}
}
}, [onAdd, state])
}, [onAdd, state.result, storePaikallinenOpintojakso])

const onRemoveTunniste = useCallback(
(option: SelectOption<Koodistokoodiviite | PaikallinenKoodi>) => {
Expand Down
17 changes: 12 additions & 5 deletions web/app/util/koodisto.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import { fromCompare } from 'fp-ts/lib/Ord'
import { Koodistokoodiviite } from '../types/fi/oph/koski/schema/Koodistokoodiviite'
import { KoodiViite } from '../types/fi/oph/koski/schema/KoodiViite'
import {
isKorkeakoulunPaikallinenArvosana,
KorkeakoulunPaikallinenArvosana
} from '../types/fi/oph/koski/schema/KorkeakoulunPaikallinenArvosana'
import {
isLukionOppiaineidenOppimäärätKoodi2019,
LukionOppiaineidenOppimäärätKoodi2019
Expand All @@ -12,11 +17,6 @@ import {
isSynteettinenKoodiviite,
SynteettinenKoodiviite
} from '../types/fi/oph/koski/schema/SynteettinenKoodiviite'
import {
isKorkeakoulunPaikallinenArvosana,
KorkeakoulunPaikallinenArvosana
} from '../types/fi/oph/koski/schema/KorkeakoulunPaikallinenArvosana'
import { nonNull } from './fp/arrays'

export type KoodistoUriOf<T extends Koodistokoodiviite> = T['koodistoUri']
export type KoodiarvotOf<T extends Koodistokoodiviite> = T['koodiarvo']
Expand Down Expand Up @@ -66,3 +66,10 @@ export const asKoodiviite = <U extends string, A extends string = string>(
`Cannot cast Koodistokoodiviite<"${a.koodistoUri}"> to Koodistokoodiviite<"${koodistoUri}">`
)
}

export const koodiviiteEquals =
<T extends KoodiViite>(a: T) =>
(b: T): boolean =>
a.$class === b.$class &&
a.koodiarvo === b.koodiarvo &&
(a as any).koodistoUri === (b as any).koodistoUri

0 comments on commit 6201cac

Please sign in to comment.