tolvaj kepzettsegek

TODO: masodlagos ertekek
This commit is contained in:
2023-08-12 13:22:13 +02:00
parent aa28e5456b
commit e8042b9c7d
2 changed files with 99 additions and 37 deletions
+77 -24
View File
@@ -2,10 +2,37 @@ import React from "react";
import KepzettsegSelector from "./KepzettsegSelector";
import {Osztaly} from "../domain-models/osztaly";
import {UseFormRegisterReturn} from "react-hook-form";
import {Kepzettsegek, KepzettsegId, KepzettsegLista} from "../domain-models/kepzettsegek";
import {Kepzettseg, Kepzettsegek, KepzettsegId, KepzettsegLista} from "../domain-models/kepzettsegek";
import {Modifier} from "../domain-models/tulajdonsag";
import {Faj} from "../domain-models/faj";
function InternalKepzettsegekSelector(props: {title: string, numberOfKepzettseg: number, getKepzettsegListaN: (n: number) => Kepzettseg[], register: (n: number) => UseFormRegisterReturn, availableKepzettsegList: Kepzettseg[], getKepzettsegN: (n: number) => Kepzettseg}) {
const {title, numberOfKepzettseg, getKepzettsegListaN, register, availableKepzettsegList, getKepzettsegN} = props
const klist = Array.from(new Array(numberOfKepzettseg).keys())
return <>
<div className='row'>
<div className='col-lg-2 col-md-12'>
<label className='col-form-label text-body-emphasis'>{title}</label>
</div>
<div className='col'>
{klist.map((idx) =>
<KepzettsegSelector
key={idx}
kepzettsegek={getKepzettsegListaN(idx)}
fieldRegistration={register(idx)}
defaultValue={availableKepzettsegList[idx]}
selected={getKepzettsegN(idx)}
/>)
}
</div>
</div>
</>
}
function KarakterKepzettsegek (props: {
faj: Faj
osztaly: Osztaly,
@@ -15,46 +42,72 @@ function KarakterKepzettsegek (props: {
}) {
const { faj, osztaly, t_int, register, watch } = props
const avaialableKepzettsegList = KepzettsegLista.filter(k => k.Osztalyok == null || k.Osztalyok.includes(osztaly))
const availableKepzettsegList = KepzettsegLista.filter(k => k.Osztalyok == null || k.Osztalyok.includes(osztaly))
let numberOfKepzettseg = (osztaly === Osztaly.Tolvaj ? 7 : 4) + Modifier(t_int) + (faj === Faj.Ember ? 1 : 0)
let numberOfKepzettseg = 3 + Modifier(t_int) + (faj === Faj.Ember ? 1 : 0)
console.log('Raw Number of Kepzetsegek = ', numberOfKepzettseg)
if (numberOfKepzettseg < 1) {
numberOfKepzettseg = 1
}
if (numberOfKepzettseg > avaialableKepzettsegList.length){
numberOfKepzettseg = avaialableKepzettsegList.length
if (numberOfKepzettseg > availableKepzettsegList.length){
numberOfKepzettseg = availableKepzettsegList.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 getKepzettsegN = (n: number) => Kepzettsegek[watch('kep_'+n, availableKepzettsegList[n].Id) as KepzettsegId]
const getKepzettsegListaN = (n: number) => {
let response = avaialableKepzettsegList;
for (let i = 0; i < n; i++) {
let response = availableKepzettsegList;
for (let i = 0; i < numberOfKepzettseg; i++) {
if (i === n) {
continue;
}
response = response.filter(x => x.Id !== getKepzettsegN(i).Id)
}
if (osztaly === Osztaly.Tolvaj) {
for (let i = 0; i < 4; i++) {
response = response.filter(x => x.Id !== getTolvajKepzettsegN(i).Id)
}
}
return response
}
const tolvajKepzettsegek = KepzettsegLista.filter(k => k.Osztalyok != null && k.Osztalyok.includes(Osztaly.Tolvaj))
const getTolvajKepzettsegN = (n: number) => Kepzettsegek[watch('tolvaj_kep_'+n, tolvajKepzettsegek[n].Id) as KepzettsegId]
const getTolvajKepzettsegListaN = (n: number) => {
let response = tolvajKepzettsegek;
// filter out selected kepzettsegek
for (let i = 0; i < numberOfKepzettseg; i++) {
response = response.filter(x => x.Id !== getKepzettsegN(i).Id)
}
// filter out selected tolvaj kepzettsegek
for (let i = 0; i < 4; i++) {
if (i === n) {
continue;
}
response = response.filter(x => x.Id !== getTolvajKepzettsegN(i).Id)
}
return response
}
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) =>
<KepzettsegSelector
key={idx}
kepzettsegek={getKepzettsegListaN(idx)}
fieldRegistration={register('kep_'+idx)}
selected={getKepzettsegN(idx)}
/>)
}
</div>
</div>
<InternalKepzettsegekSelector
title="Képzettségek"
numberOfKepzettseg={numberOfKepzettseg}
availableKepzettsegList={availableKepzettsegList}
getKepzettsegListaN={getKepzettsegListaN}
register={(n: number) => register('kep_' + n)}
getKepzettsegN={getKepzettsegN} />
{osztaly === Osztaly.Tolvaj &&
<InternalKepzettsegekSelector
title="Tolvaj Képzettségek"
numberOfKepzettseg={4}
availableKepzettsegList={tolvajKepzettsegek}
getKepzettsegListaN={getTolvajKepzettsegListaN}
register={(n: number) => register('tolvaj_kep_' + n)}
getKepzettsegN={getTolvajKepzettsegN} />}
</>
}