improve KarakterKepzettsegek a bit

TODO: tolvaj kepzettsegek, testing?
This commit is contained in:
2023-08-10 09:22:18 +02:00
parent e3b81b8a6c
commit aa28e5456b
2 changed files with 44 additions and 28 deletions
+32 -11
View File
@@ -2,7 +2,7 @@ import React from "react";
import KepzettsegSelector from "./KepzettsegSelector"; import KepzettsegSelector from "./KepzettsegSelector";
import {Osztaly} from "../domain-models/osztaly"; import {Osztaly} from "../domain-models/osztaly";
import {UseFormRegisterReturn} from "react-hook-form"; import {UseFormRegisterReturn} from "react-hook-form";
import {Kepzettsegek, KepzettsegId} from "../domain-models/kepzettsegek"; import {Kepzettsegek, KepzettsegId, KepzettsegLista} from "../domain-models/kepzettsegek";
import {Modifier} from "../domain-models/tulajdonsag"; import {Modifier} from "../domain-models/tulajdonsag";
import {Faj} from "../domain-models/faj"; import {Faj} from "../domain-models/faj";
@@ -13,27 +13,48 @@ function KarakterKepzettsegek (props: {
register: (fieldName: string) => UseFormRegisterReturn, register: (fieldName: string) => UseFormRegisterReturn,
watch: (fieldName: string, defaultValue: KepzettsegId) => string watch: (fieldName: string, defaultValue: KepzettsegId) => string
}) { }) {
const { faj, osztaly, t_int, register, watch } = props const { faj, osztaly, t_int, register, watch } = props
const numberOfKepzettseg = 3 + Modifier(t_int) + (faj === Faj.Ember ? 1 : 0) const avaialableKepzettsegList = KepzettsegLista.filter(k => k.Osztalyok == null || k.Osztalyok.includes(osztaly))
console.log('Number of Kepzetsegek = ', numberOfKepzettseg)
let klist = [] let numberOfKepzettseg = (osztaly === Osztaly.Tolvaj ? 7 : 4) + Modifier(t_int) + (faj === Faj.Ember ? 1 : 0)
for (let i = 0; i < numberOfKepzettseg; i++) { console.log('Raw Number of Kepzetsegek = ', numberOfKepzettseg)
klist.push(i)
if (numberOfKepzettseg < 1) {
numberOfKepzettseg = 1
}
if (numberOfKepzettseg > avaialableKepzettsegList.length){
numberOfKepzettseg = avaialableKepzettsegList.length
}
console.log('Adjusted Number of Kepzetsegek = ', numberOfKepzettseg)
const klist = Array.from(new Array(numberOfKepzettseg).keys())
const getKepzettsegN = (n: number) => Kepzettsegek[watch('kep_'+n, avaialableKepzettsegList[n].Id) as KepzettsegId]
const getKepzettsegListaN = (n: number) => {
let response = avaialableKepzettsegList;
for (let i = 0; i < n; i++) {
response = response.filter(x => x.Id !== getKepzettsegN(i).Id)
}
return response
} }
console.log(klist)
return <> return <>
<div className='row'>
<div className='col-lg-2 col-md-12'>
<label className='col-form-label text-body-emphasis'> Képzettségek </label>
</div>
<div className='col'>
{klist.map((idx) => {klist.map((idx) =>
<KepzettsegSelector <KepzettsegSelector
key={idx} key={idx}
osztaly={osztaly} kepzettsegek={getKepzettsegListaN(idx)}
fieldRegistration={register('tul_'+idx)} fieldRegistration={register('kep_'+idx)}
selected={Kepzettsegek[watch('tul_'+idx, 'k_ugras') as KepzettsegId]} selected={getKepzettsegN(idx)}
/>) />)
} }
</div>
</div>
</> </>
} }
+7 -12
View File
@@ -1,33 +1,28 @@
import React from "react"; import React from "react";
import {Kepzettseg, KepzettsegLista} from "../domain-models/kepzettsegek"; import {Kepzettseg} from "../domain-models/kepzettsegek";
import {TulajdonsagLabel} from "../domain-models/tulajdonsag"; import {TulajdonsagLabel} from "../domain-models/tulajdonsag";
import {Osztaly} from "../domain-models/osztaly";
import {UseFormRegisterReturn} from "react-hook-form"; import {UseFormRegisterReturn} from "react-hook-form";
function kepzettsegOptionText(k: Kepzettseg) { function kepzettsegOptionText(k: Kepzettseg) {
return k.Name + ' (' + k.Tulajdonsag.reduce((acc, k) => (acc === '' ? acc : acc + ' / ') + TulajdonsagLabel(k), '') + ')'; return k.Name + ' (' + k.Tulajdonsag.reduce((acc, k) => (acc === '' ? acc : acc + ' / ') + TulajdonsagLabel(k), '') + ')';
} }
function KepzettsegSelector (props: {osztaly: Osztaly, fieldRegistration: UseFormRegisterReturn, selected : Kepzettseg}) { function KepzettsegSelector (props: {kepzettsegek: Kepzettseg[], fieldRegistration: UseFormRegisterReturn, selected : Kepzettseg}) {
const { osztaly, fieldRegistration, selected } = props const { kepzettsegek, fieldRegistration, selected } = props
return <> return <>
<div className='row m-2'> <div className='row'>
<label className='col-md-2 col-sm-3 col-form-label' >Képzettségek</label>
<div className='col'>
<select className='form-control' <select className='form-control'
defaultValue={selected.Id} {...fieldRegistration}> defaultValue={selected.Id} {...fieldRegistration}>
{KepzettsegLista.filter(k => k.Osztalyok == null || k.Osztalyok.includes(osztaly)).map(k =>( {kepzettsegek.map(k =>(
<option key={k.Id} value={k.Id} className='text-body-emphasis'> <option key={k.Id} value={k.Id}>
{kepzettsegOptionText(k)} {kepzettsegOptionText(k)}
</option> </option>
))} ))}
</select> </select>
</div> </div>
</div> <div className='row pt-2'>
<div className='row m-2 pt-2'>
<label className='col-md-2 col-sm-3 col-form-label' />
<p className='col'>{selected.Description}</p> <p className='col'>{selected.Description}</p>
</div> </div>
</> </>