add data test ID to 2e karakter creator
This commit is contained in:
@@ -59,7 +59,9 @@ function BasicNewLevel(props: {
|
|||||||
value={karakter.szintlepesek[szint-1].HProll || 1}
|
value={karakter.szintlepesek[szint-1].HProll || 1}
|
||||||
min={1}
|
min={1}
|
||||||
max={12}
|
max={12}
|
||||||
onChange={e => changeRolledHP(Number(e.target.value))} />
|
onChange={e => changeRolledHP(Number(e.target.value))}
|
||||||
|
data-testid={`HP-${szint}`}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{ isTBincreased && <div className='row m-2'>
|
{ isTBincreased && <div className='row m-2'>
|
||||||
|
|||||||
@@ -6,7 +6,12 @@ function FajSelector2E(props: { faj: Faj2E, changeFaj: (val: Faj2E) => void }) {
|
|||||||
return <>
|
return <>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Faj</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Faj</label>
|
||||||
<select className='col form-select' value={faj} onChange={e => changeFaj(e.target.value as Faj2E)}>
|
<select
|
||||||
|
className='col form-select'
|
||||||
|
value={faj}
|
||||||
|
onChange={e => changeFaj(e.target.value as Faj2E)}
|
||||||
|
data-testid="faj"
|
||||||
|
>
|
||||||
<option key={Faj2E.Ember} value={Faj2E.Ember}>{FajLabel(Faj2E.Ember)}</option>
|
<option key={Faj2E.Ember} value={Faj2E.Ember}>{FajLabel(Faj2E.Ember)}</option>
|
||||||
<optgroup label='más emberi népek'>
|
<optgroup label='más emberi népek'>
|
||||||
<option key={Faj2E.Amazon} value={Faj2E.Amazon}>{FajLabel(Faj2E.Amazon)}</option>
|
<option key={Faj2E.Amazon} value={Faj2E.Amazon}>{FajLabel(Faj2E.Amazon)}</option>
|
||||||
@@ -29,10 +34,10 @@ function FajSelector2E(props: { faj: Faj2E, changeFaj: (val: Faj2E) => void }) {
|
|||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 form-label'></label>
|
<label className='col-md-2 col-sm-3 form-label'></label>
|
||||||
<div className='col'>
|
<div className='col'>
|
||||||
<p className='row pt-2'>
|
<p className='row pt-2' data-testid="faj-description">
|
||||||
{FajDescription(faj)}
|
{FajDescription(faj)}
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul data-testid="faj-specials">
|
||||||
{FajSpecials(faj).map(((special, i) => (<li key={faj + i}>{special}</li>)))}
|
{FajSpecials(faj).map(((special, i) => (<li key={faj + i}>{special}</li>)))}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -61,13 +61,19 @@ export function FegyverLabel(fegyver: Fegyver): string {
|
|||||||
fegyver.Range > 10 ? ` | táv: ${fegyver.Range}` : ''}`
|
fegyver.Range > 10 ? ` | táv: ${fegyver.Range}` : ''}`
|
||||||
}
|
}
|
||||||
|
|
||||||
function FegyverSelector(props: {fegyverek: Fegyver[], selectedId: string, onChange: (id: string) => void}) {
|
function FegyverSelector(props: {
|
||||||
|
fegyverek: Fegyver[],
|
||||||
const { fegyverek, selectedId, onChange } = props
|
selectedId: string,
|
||||||
|
onChange: (id: string) => void,
|
||||||
|
dataTestId?: string,
|
||||||
|
}) {
|
||||||
|
const { fegyverek, selectedId, onChange, dataTestId } = props
|
||||||
return <>
|
return <>
|
||||||
<select className='col form-select' value={selectedId}
|
<select className='col form-select'
|
||||||
onChange={e => onChange(e.target.value)}>
|
value={selectedId}
|
||||||
|
onChange={e => onChange(e.target.value)}
|
||||||
|
data-testid={dataTestId}
|
||||||
|
>
|
||||||
<optgroup label="Közelharci">
|
<optgroup label="Közelharci">
|
||||||
{fegyverek.filter(f => f.Type === 'kozelharci').map(f => <option
|
{fegyverek.filter(f => f.Type === 'kozelharci').map(f => <option
|
||||||
key={f.Id} value={f.Id}>{FegyverLabel(f)}</option>)}
|
key={f.Id} value={f.Id}>{FegyverLabel(f)}</option>)}
|
||||||
|
|||||||
@@ -25,13 +25,30 @@ function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles
|
|||||||
changeFelszereles({...felszereles, fegyverIDk: arraySetN(felszereles.fegyverIDk, idx, newID)})
|
changeFelszereles({...felszereles, fegyverIDk: arraySetN(felszereles.fegyverIDk, idx, newID)})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const changePancel = (event: React.ChangeEvent<HTMLSelectElement>) => {
|
||||||
|
changeFelszereles({...felszereles, pancelID: event.target.value === 'nincs' ? undefined : event.target.value})
|
||||||
|
}
|
||||||
|
const changePajzs = (event: React.ChangeEvent<HTMLSelectElement>) => {
|
||||||
|
changeFelszereles({...felszereles, pajzsID: event.target.value === 'nincs' ? undefined : event.target.value})
|
||||||
|
}
|
||||||
|
const removeFegyver = (idx: number) => () => changeFelszereles({
|
||||||
|
...felszereles,
|
||||||
|
fegyverIDk: [...felszereles.fegyverIDk.slice(0, idx), ...felszereles.fegyverIDk.slice(idx+1)]
|
||||||
|
})
|
||||||
|
const addFegyver = () => changeFelszereles({...felszereles, fegyverIDk: [...felszereles.fegyverIDk, 'bot']})
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
<div className='row'>
|
<div className='row'>
|
||||||
<h5 className='col align-self-center'>Felszerelés</h5>
|
<h5 className='col align-self-center'>Felszerelés</h5>
|
||||||
</div>
|
</div>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Viselt páncél</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Viselt páncél</label>
|
||||||
<select className='col form-select' value={felszereles.pancelID} onChange={e => changeFelszereles({...felszereles, pancelID: e.target.value === 'nincs' ? undefined : e.target.value})}>
|
<select
|
||||||
|
className='col form-select'
|
||||||
|
value={felszereles.pancelID}
|
||||||
|
onChange={changePancel}
|
||||||
|
data-testid={"pancel"}
|
||||||
|
>
|
||||||
<option key={'nincs'} value={'nincs'}>Nincs</option>
|
<option key={'nincs'} value={'nincs'}>Nincs</option>
|
||||||
{
|
{
|
||||||
<optgroup label={PancelTypeLabel("konnyu")}>
|
<optgroup label={PancelTypeLabel("konnyu")}>
|
||||||
@@ -50,8 +67,12 @@ function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles
|
|||||||
</div>
|
</div>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Hordott pajzs</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Hordott pajzs</label>
|
||||||
<select className='col form-select' value={felszereles.pajzsID}
|
<select
|
||||||
onChange={e => changeFelszereles({...felszereles, pajzsID: e.target.value === 'nincs' ? undefined : e.target.value})}>
|
className='col form-select'
|
||||||
|
value={felszereles.pajzsID}
|
||||||
|
onChange={changePajzs}
|
||||||
|
data-testid={"pajzs"}
|
||||||
|
>
|
||||||
<option key={'nincs'} value={'nincs'}>Nincs</option>
|
<option key={'nincs'} value={'nincs'}>Nincs</option>
|
||||||
{allowedPajzs.map(p => <option key={p.Id} value={p.Id}>{`${p.Name} (+${p.VO} VO) - ${p.Price} at`}</option>)}
|
{allowedPajzs.map(p => <option key={p.Id} value={p.Id}>{`${p.Name} (+${p.VO} VO) - ${p.Price} at`}</option>)}
|
||||||
</select>
|
</select>
|
||||||
@@ -59,14 +80,26 @@ function Felszereles(props: {felszereles: KarakterFelszereles, changeFelszereles
|
|||||||
{valasztottFegyverek.map(({idx, fegyver}) => (
|
{valasztottFegyverek.map(({idx, fegyver}) => (
|
||||||
<div key={`fegyver-${idx}`} className='row m-2'>
|
<div key={`fegyver-${idx}`} className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Fegyver</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Fegyver</label>
|
||||||
<FegyverSelector fegyverek={allowedFegyverek} selectedId={fegyver.Id} onChange={(fegyverId) => changeFegyver(idx, fegyverId)} />
|
<FegyverSelector
|
||||||
<button className='col-md-2 col-sm-3 btn btn-outline-dark btn-lg ms-2' type='button'
|
fegyverek={allowedFegyverek}
|
||||||
onClick={() => changeFelszereles({
|
selectedId={fegyver.Id}
|
||||||
...felszereles,
|
onChange={(fegyverId) => changeFegyver(idx, fegyverId)}
|
||||||
fegyverIDk: [...felszereles.fegyverIDk.slice(0, idx), ...felszereles.fegyverIDk.slice(idx+1)]})}>Elvesz</button>
|
dataTestId={`felszereles-fegyver-${idx}`}
|
||||||
|
/>
|
||||||
|
<button
|
||||||
|
className='col-md-2 col-sm-3 btn btn-outline-dark btn-lg ms-2'
|
||||||
|
type='button'
|
||||||
|
onClick={removeFegyver(idx)}>Elvesz
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
<button className='btn btn-outline-dark btn btn-lg ms-2' type='button' onClick={() => changeFelszereles({...felszereles, fegyverIDk: [...felszereles.fegyverIDk, 'bot']})}>Fegyver hozzáadása</button>
|
<button
|
||||||
|
className='btn btn-outline-dark btn btn-lg ms-2'
|
||||||
|
type='button'
|
||||||
|
onClick={addFegyver}
|
||||||
|
>
|
||||||
|
Fegyver hozzáadása
|
||||||
|
</button>
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,12 @@ function HarcosFegyverSpecializacio(props: {
|
|||||||
return <>
|
return <>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label' >Fegyver specializáció</label>
|
<label className='col-md-2 col-sm-3 col-form-label' >Fegyver specializáció</label>
|
||||||
<FegyverSelector fegyverek={pickableFegyverek} selectedId={specialization} onChange={changeSpecialization} />
|
<FegyverSelector
|
||||||
|
fegyverek={pickableFegyverek}
|
||||||
|
selectedId={specialization}
|
||||||
|
onChange={changeSpecialization}
|
||||||
|
dataTestId={"harcos-specialization-" + szint}
|
||||||
|
/>
|
||||||
{fegyver == null && <span className='form-field-error'>Ismeretlen fegyver: {specialization}</span>}
|
{fegyver == null && <span className='form-field-error'>Ismeretlen fegyver: {specialization}</span>}
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -7,7 +7,12 @@ function JellemSelector(props: {selected: JellemID, changeJellem: (val: JellemID
|
|||||||
return <>
|
return <>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Jellem</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Jellem</label>
|
||||||
<select className='col form-select' value={selected} onChange={e => changeJellem(e.target.value as JellemID)}>
|
<select
|
||||||
|
className='col form-select'
|
||||||
|
value={selected}
|
||||||
|
data-testid="jellem"
|
||||||
|
onChange={e => changeJellem(e.target.value as JellemID)}
|
||||||
|
>
|
||||||
{AllJellemIDs.map((id) => (
|
{AllJellemIDs.map((id) => (
|
||||||
<option key={id} value={id}>{GetJellem(id).Label}</option>
|
<option key={id} value={id}>{GetJellem(id).Label}</option>
|
||||||
))}
|
))}
|
||||||
@@ -16,7 +21,7 @@ function JellemSelector(props: {selected: JellemID, changeJellem: (val: JellemID
|
|||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 form-label'></label>
|
<label className='col-md-2 col-sm-3 form-label'></label>
|
||||||
<div className='col'>
|
<div className='col'>
|
||||||
<p className='row pt-2'>
|
<p className='row pt-2' data-testid="jellem-description">
|
||||||
{jellem.Description}
|
{jellem.Description}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -20,7 +20,12 @@ function KalozKritikus(props: {
|
|||||||
return <>
|
return <>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Kritikus</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Kritikus</label>
|
||||||
<FegyverSelector fegyverek={fegyverek} selectedId={kritFegyverId} onChange={changeKrit} />
|
<FegyverSelector
|
||||||
|
fegyverek={fegyverek}
|
||||||
|
selectedId={kritFegyverId}
|
||||||
|
onChange={changeKrit}
|
||||||
|
dataTestId={`kaloz-krit-${szint}`}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,16 +8,22 @@ import {
|
|||||||
} from "../domain-models/kepzettsegek2E";
|
} from "../domain-models/kepzettsegek2E";
|
||||||
import {arraySetN} from "../../util";
|
import {arraySetN} from "../../util";
|
||||||
|
|
||||||
|
|
||||||
function InternalKepzettsegekSelector(props: {
|
function InternalKepzettsegekSelector(props: {
|
||||||
title: string,
|
title: string,
|
||||||
numberOfKepzettseg: number,
|
numberOfKepzettseg: number,
|
||||||
getKepzettsegListaN: (n: number) => Kepzettseg[],
|
getKepzettsegListaN: (n: number) => Kepzettseg[],
|
||||||
kepzettsegek: KepzettsegId[],
|
kepzettsegek: KepzettsegId[],
|
||||||
changeKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void
|
changeKepzettsegek: (newKepzettsegek: KepzettsegId[]) => void,
|
||||||
|
dataTestId?: string,
|
||||||
}) {
|
}) {
|
||||||
const {title, numberOfKepzettseg, getKepzettsegListaN, kepzettsegek, changeKepzettsegek} = props
|
const {
|
||||||
|
title,
|
||||||
|
numberOfKepzettseg,
|
||||||
|
getKepzettsegListaN,
|
||||||
|
kepzettsegek,
|
||||||
|
changeKepzettsegek,
|
||||||
|
dataTestId,
|
||||||
|
} = props
|
||||||
const klist = Array.from(new Array(numberOfKepzettseg).keys())
|
const klist = Array.from(new Array(numberOfKepzettseg).keys())
|
||||||
|
|
||||||
const preCalculated: {
|
const preCalculated: {
|
||||||
@@ -44,6 +50,7 @@ function InternalKepzettsegekSelector(props: {
|
|||||||
kepzettsegek={preCalculated[idx].kepzettsegek}
|
kepzettsegek={preCalculated[idx].kepzettsegek}
|
||||||
selected={preCalculated[idx].selected}
|
selected={preCalculated[idx].selected}
|
||||||
changeKepzettseg={preCalculated[idx].changeKepzettseg}
|
changeKepzettseg={preCalculated[idx].changeKepzettseg}
|
||||||
|
dataTestId={`${dataTestId}-${idx}`}
|
||||||
/>)
|
/>)
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
@@ -75,14 +82,18 @@ function KarakterKepzettsegek (props: {
|
|||||||
numberOfKepzettseg={numberOfKepzettsegek}
|
numberOfKepzettseg={numberOfKepzettsegek}
|
||||||
getKepzettsegListaN={getKepzettsegListaN}
|
getKepzettsegListaN={getKepzettsegListaN}
|
||||||
changeKepzettsegek={changeKepzettsegek}
|
changeKepzettsegek={changeKepzettsegek}
|
||||||
kepzettsegek={kepzettsegek} />
|
kepzettsegek={kepzettsegek}
|
||||||
|
dataTestId={"kepzettseg"}
|
||||||
|
/>
|
||||||
|
|
||||||
{tolvajKepzettsegek.length > 0 && <InternalKepzettsegekSelector
|
{tolvajKepzettsegek.length > 0 && <InternalKepzettsegekSelector
|
||||||
title="Tolvaj képzettségek"
|
title="Tolvaj képzettségek"
|
||||||
numberOfKepzettseg={4}
|
numberOfKepzettseg={4}
|
||||||
getKepzettsegListaN={getTolvajKepzettsegListaN}
|
getKepzettsegListaN={getTolvajKepzettsegListaN}
|
||||||
changeKepzettsegek={changeTolvajKepzettsegek}
|
changeKepzettsegek={changeTolvajKepzettsegek}
|
||||||
kepzettsegek={tolvajKepzettsegek} />}
|
kepzettsegek={tolvajKepzettsegek}
|
||||||
|
dataTestId={"tolvaj-kepzettseg"}
|
||||||
|
/>}
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,14 +8,21 @@ function kepzettsegOptionText(k: Kepzettseg) {
|
|||||||
return k.Name + ' (' + k.Tulajdonsag.reduce((acc, k) => (acc === '' ? acc : acc + ' / ') + TulajdonsagLabel(k), '') + ')' + (osztalyok == null ? '' : (' - ' + osztalyok));
|
return k.Name + ' (' + k.Tulajdonsag.reduce((acc, k) => (acc === '' ? acc : acc + ' / ') + TulajdonsagLabel(k), '') + ')' + (osztalyok == null ? '' : (' - ' + osztalyok));
|
||||||
}
|
}
|
||||||
|
|
||||||
function KepzettsegSelector (props: {kepzettsegek: Kepzettseg[], changeKepzettseg: (newKepzettseg: KepzettsegId) => void, selected : Kepzettseg}) {
|
function KepzettsegSelector (props: {
|
||||||
|
kepzettsegek: Kepzettseg[],
|
||||||
const { kepzettsegek, changeKepzettseg, selected } = props
|
changeKepzettseg: (newKepzettseg: KepzettsegId) => void,
|
||||||
|
selected : Kepzettseg,
|
||||||
|
dataTestId?: string,
|
||||||
|
}) {
|
||||||
|
const { kepzettsegek, changeKepzettseg, selected, dataTestId } = props
|
||||||
return <>
|
return <>
|
||||||
<div className='row'>
|
<div className='row'>
|
||||||
<select className='form-control'
|
<select
|
||||||
value={selected.Id} onChange={e => changeKepzettseg(e.target.value as KepzettsegId)}>
|
className='form-control'
|
||||||
|
value={selected.Id}
|
||||||
|
onChange={e => changeKepzettseg(e.target.value as KepzettsegId)}
|
||||||
|
data-testid={dataTestId}
|
||||||
|
>
|
||||||
{kepzettsegek.map(k =>(
|
{kepzettsegek.map(k =>(
|
||||||
<option key={k.Id} value={k.Id}>
|
<option key={k.Id} value={k.Id}>
|
||||||
{kepzettsegOptionText(k)}
|
{kepzettsegOptionText(k)}
|
||||||
|
|||||||
@@ -49,12 +49,14 @@ function LevelUp(props: {
|
|||||||
osztaly={osztaly}
|
osztaly={osztaly}
|
||||||
changeOsztaly={changeOsztaly}
|
changeOsztaly={changeOsztaly}
|
||||||
osztalySzint={classLevels[osztaly]}
|
osztalySzint={classLevels[osztaly]}
|
||||||
|
dataTestId={`osztaly-${szint}`}
|
||||||
/>}
|
/>}
|
||||||
{szint % 4 === 0 &&
|
{szint % 4 === 0 &&
|
||||||
<TulajdonsagNoveles
|
<TulajdonsagNoveles
|
||||||
tulajdonsagok={karakter.tulajdonsagok}
|
tulajdonsagok={karakter.tulajdonsagok}
|
||||||
tulajdonsagNoveles={karakter.szintlepesek[szint-1].tulajdonsagNoveles!}
|
tulajdonsagNoveles={karakter.szintlepesek[szint-1].tulajdonsagNoveles!}
|
||||||
changeTulajdonsagNoveles={changeTulajdonsagNoveles}
|
changeTulajdonsagNoveles={changeTulajdonsagNoveles}
|
||||||
|
dataTestId={`tulajdonsag-${szint}`}
|
||||||
/>}
|
/>}
|
||||||
<BasicNewLevel
|
<BasicNewLevel
|
||||||
szint={szint}
|
szint={szint}
|
||||||
|
|||||||
@@ -5,19 +5,22 @@ import React from "react";
|
|||||||
function MultiClassOsztalySelector2E(props: {
|
function MultiClassOsztalySelector2E(props: {
|
||||||
faj: Faj2E,
|
faj: Faj2E,
|
||||||
osztaly: Osztaly2E,
|
osztaly: Osztaly2E,
|
||||||
changeOsztaly: (o: Osztaly2E) => void
|
changeOsztaly: (o: Osztaly2E) => void,
|
||||||
osztalySzint: number
|
osztalySzint: number,
|
||||||
|
dataTestId?: string,
|
||||||
}) {
|
}) {
|
||||||
const {faj, osztaly, changeOsztaly, osztalySzint} = props
|
const {faj, osztaly, changeOsztaly, osztalySzint, dataTestId} = props
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
<div className='row'>
|
<div className='row'>
|
||||||
<div className="col-lg-6">
|
<div className="col-lg-6">
|
||||||
<div className="row m-md-2">
|
<div className="row m-md-2">
|
||||||
<label className='col-8 col-sm-6 col-form-label'>Osztály</label>
|
<label className='col-8 col-sm-6 col-form-label'>Osztály</label>
|
||||||
<div className="col">
|
<div className="col">
|
||||||
<select className="col form-select" value={osztaly}
|
<select className="col form-select"
|
||||||
onChange={(e) => changeOsztaly(e.target.value as Osztaly2E)}>
|
value={osztaly}
|
||||||
|
onChange={(e) => changeOsztaly(e.target.value as Osztaly2E)}
|
||||||
|
data-testid={dataTestId}
|
||||||
|
>
|
||||||
<optgroup label='Harcos'>
|
<optgroup label='Harcos'>
|
||||||
<option value={Osztaly2E.Harcos}>{OsztalyLabel(Osztaly2E.Harcos)}</option>
|
<option value={Osztaly2E.Harcos}>{OsztalyLabel(Osztaly2E.Harcos)}</option>
|
||||||
{SzintKorlatokFajokra(faj)[Osztaly2E.Amazon] > 0 && (
|
{SzintKorlatokFajokra(faj)[Osztaly2E.Amazon] > 0 && (
|
||||||
|
|||||||
@@ -18,8 +18,12 @@ function OsztalySelector2E(props: {
|
|||||||
return <>
|
return <>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Osztály</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Osztály</label>
|
||||||
<select className="col form-select" value={currentOsztaly}
|
<select
|
||||||
onChange={(e) => changeOsztaly(e.target.value as Osztaly2E)}>
|
className="col form-select"
|
||||||
|
value={currentOsztaly}
|
||||||
|
onChange={(e) => changeOsztaly(e.target.value as Osztaly2E)}
|
||||||
|
data-testid="osztaly"
|
||||||
|
>
|
||||||
<optgroup label='Harcos'>
|
<optgroup label='Harcos'>
|
||||||
<option value={Osztaly2E.Harcos}>{OsztalyLabel(Osztaly2E.Harcos)}</option>
|
<option value={Osztaly2E.Harcos}>{OsztalyLabel(Osztaly2E.Harcos)}</option>
|
||||||
{SzintKorlatokFajokra(currentFaj)[Osztaly2E.Amazon] > 0 && (
|
{SzintKorlatokFajokra(currentFaj)[Osztaly2E.Amazon] > 0 && (
|
||||||
@@ -44,13 +48,13 @@ function OsztalySelector2E(props: {
|
|||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 form-label'></label>
|
<label className='col-md-2 col-sm-3 form-label'></label>
|
||||||
<div className='col'>
|
<div className='col'>
|
||||||
<p className='row pt-2'>
|
<p className='row pt-2' data-testid="osztaly-description">
|
||||||
{OsztalyDescription(currentOsztaly)}
|
{OsztalyDescription(currentOsztaly)}
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul data-testid="osztaly-properties">
|
||||||
{OsztalyProperties(currentOsztaly).map(((special, i) => (<li key={currentOsztaly + i}>{special}</li>)))}
|
{OsztalyProperties(currentOsztaly).map(((special, i) => (<li key={currentOsztaly + i}>{special}</li>)))}
|
||||||
</ul>
|
</ul>
|
||||||
<div className='col'>
|
<div className='col' data-testid="osztaly-specials">
|
||||||
{OsztalySpecialSkills(currentOsztaly).map(skill =>
|
{OsztalySpecialSkills(currentOsztaly).map(skill =>
|
||||||
<div key={skill.Id}>
|
<div key={skill.Id}>
|
||||||
<strong className='d-inline'>
|
<strong className='d-inline'>
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ function TulajdonsagInput(props: {
|
|||||||
currentValue: number
|
currentValue: number
|
||||||
tooLowError: string,
|
tooLowError: string,
|
||||||
tooHighError: string
|
tooHighError: string
|
||||||
|
dataTestId?: string
|
||||||
}) {
|
}) {
|
||||||
const {
|
const {
|
||||||
tulajdonsag,
|
tulajdonsag,
|
||||||
@@ -27,11 +28,19 @@ function TulajdonsagInput(props: {
|
|||||||
fajiModosito,
|
fajiModosito,
|
||||||
tooLowError,
|
tooLowError,
|
||||||
tooHighError,
|
tooHighError,
|
||||||
|
dataTestId
|
||||||
} = props;
|
} = props;
|
||||||
return (<div className='row m-2'>
|
return (<div className='row m-2'>
|
||||||
<label className='col-lg-1 col-sm-2 col-form-label'>{tulajdonsag}</label>
|
<label className='col-lg-1 col-sm-2 col-form-label'>{tulajdonsag}</label>
|
||||||
<div className='col-lg-1 col-sm-2 m-2'>
|
<div className='col-lg-1 col-sm-2 m-2'>
|
||||||
<input className='form-control' maxLength={2} type='number' value={currentValue} onChange={e => changeValue(Number(e.target.value))} />
|
<input
|
||||||
|
className='form-control'
|
||||||
|
maxLength={2}
|
||||||
|
type='number'
|
||||||
|
value={currentValue}
|
||||||
|
onChange={e => changeValue(Number(e.target.value))}
|
||||||
|
data-testid={dataTestId}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<span className='col-sm-2 m-2'>
|
<span className='col-sm-2 m-2'>
|
||||||
{fajiModositoText(currentFaj, fajiModosito)}
|
{fajiModositoText(currentFaj, fajiModosito)}
|
||||||
|
|||||||
@@ -8,16 +8,27 @@ import {
|
|||||||
} from "../domain-models/tulajdonsag2E";
|
} from "../domain-models/tulajdonsag2E";
|
||||||
import {SignedNumberToText} from "../../shared/components/Helpers";
|
import {SignedNumberToText} from "../../shared/components/Helpers";
|
||||||
|
|
||||||
function TulajdonsagNoveles(props: {tulajdonsagok: KarakterTulajdonsagok, tulajdonsagNoveles: Tulajdonsag2E, changeTulajdonsagNoveles: (tulajdonsag: Tulajdonsag2E) => void}) {
|
function TulajdonsagNoveles(props: {
|
||||||
const {tulajdonsagok, tulajdonsagNoveles, changeTulajdonsagNoveles} = props
|
tulajdonsagok: KarakterTulajdonsagok,
|
||||||
|
tulajdonsagNoveles: Tulajdonsag2E,
|
||||||
|
changeTulajdonsagNoveles: (tulajdonsag: Tulajdonsag2E) => void,
|
||||||
|
dataTestId?: string
|
||||||
|
}) {
|
||||||
|
const {tulajdonsagok, tulajdonsagNoveles, changeTulajdonsagNoveles, dataTestId} = props
|
||||||
|
const selectableTulajdonsagok = TulajdonsagIDs.filter(t => t === tulajdonsagNoveles || tulajdonsagok[t] < 18)
|
||||||
return <>
|
return <>
|
||||||
<div className='row'>
|
<div className='row'>
|
||||||
<div className='col-lg-6'>
|
<div className='col-lg-6'>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-sm-6 col-8 col-form-label'>Tulajdonság növelés{' '}</label>
|
<label className='col-sm-6 col-8 col-form-label'>Tulajdonság növelés{' '}</label>
|
||||||
<div className='col'>
|
<div className='col'>
|
||||||
<select className='form-select' value={tulajdonsagNoveles} onChange={(e) => changeTulajdonsagNoveles(e.target.value as Tulajdonsag2E)}>
|
<select
|
||||||
{TulajdonsagIDs.filter(t => t === tulajdonsagNoveles || tulajdonsagok[t] < 18).map(t => (
|
className='form-select'
|
||||||
|
value={tulajdonsagNoveles}
|
||||||
|
onChange={(e) => changeTulajdonsagNoveles(e.target.value as Tulajdonsag2E)}
|
||||||
|
data-testid={dataTestId}
|
||||||
|
>
|
||||||
|
{selectableTulajdonsagok.map(t => (
|
||||||
<option value={t} key={t}>{TulajdonsagLabel(t)}</option>
|
<option value={t} key={t}>{TulajdonsagLabel(t)}</option>
|
||||||
))}
|
))}
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ function Tulajdonsagok(props: {
|
|||||||
<div className='row'>
|
<div className='row'>
|
||||||
<h5 className='col-lg-2 col-sm-4 align-self-center'>Tulajdonságok</h5>
|
<h5 className='col-lg-2 col-sm-4 align-self-center'>Tulajdonságok</h5>
|
||||||
<div className='col-sm-2 m-2'>
|
<div className='col-sm-2 m-2'>
|
||||||
<button className='btn btn-dark' type='button'
|
<button className='btn btn-dark' type='button' data-testid="tulajdonsag-dobas"
|
||||||
onClick={() => changeTulajdonsagok(RollAllAbilities())}>Dobás
|
onClick={() => changeTulajdonsagok(RollAllAbilities())}>Dobás
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -30,6 +30,7 @@ function Tulajdonsagok(props: {
|
|||||||
changeValue={(val: number) => changeTulajdonsagok({...tulajdonsagok, t_ero: val})}
|
changeValue={(val: number) => changeTulajdonsagok({...tulajdonsagok, t_ero: val})}
|
||||||
tooLowError='Túl gyenge vagy, nem bírtad felemelni a kezed a jelentkezéshez!'
|
tooLowError='Túl gyenge vagy, nem bírtad felemelni a kezed a jelentkezéshez!'
|
||||||
tooHighError='Szét szakadtak az izmaid!'
|
tooHighError='Szét szakadtak az izmaid!'
|
||||||
|
dataTestId={"t_ero"}
|
||||||
/>
|
/>
|
||||||
<TulajdonsagInput
|
<TulajdonsagInput
|
||||||
tulajdonsag='Ügyesség'
|
tulajdonsag='Ügyesség'
|
||||||
@@ -39,6 +40,7 @@ function Tulajdonsagok(props: {
|
|||||||
changeValue={(val: number) => changeTulajdonsagok({...tulajdonsagok, t_ugy: val})}
|
changeValue={(val: number) => changeTulajdonsagok({...tulajdonsagok, t_ugy: val})}
|
||||||
tooLowError='Orrabuktál jelentkezés helyett!'
|
tooLowError='Orrabuktál jelentkezés helyett!'
|
||||||
tooHighError='Emberfeletti zsonglörködésedre záptojással válaszoltak a helyiek!'
|
tooHighError='Emberfeletti zsonglörködésedre záptojással válaszoltak a helyiek!'
|
||||||
|
dataTestId={"t_ugy"}
|
||||||
/>
|
/>
|
||||||
<TulajdonsagInput
|
<TulajdonsagInput
|
||||||
tulajdonsag='Egészség'
|
tulajdonsag='Egészség'
|
||||||
@@ -48,6 +50,7 @@ function Tulajdonsagok(props: {
|
|||||||
changeValue={(val: number) => changeTulajdonsagok({...tulajdonsagok, t_egs: val})}
|
changeValue={(val: number) => changeTulajdonsagok({...tulajdonsagok, t_egs: val})}
|
||||||
tooLowError='Túl beteg vagy ahhoz, hogy kalandozni menj!'
|
tooLowError='Túl beteg vagy ahhoz, hogy kalandozni menj!'
|
||||||
tooHighError='Kicsattanó egészségedet csak a diambroid állíthatja meg, minő véletlen, hogy pont az arcodba robbant...'
|
tooHighError='Kicsattanó egészségedet csak a diambroid állíthatja meg, minő véletlen, hogy pont az arcodba robbant...'
|
||||||
|
dataTestId={"t_egs"}
|
||||||
/>
|
/>
|
||||||
<TulajdonsagInput
|
<TulajdonsagInput
|
||||||
tulajdonsag='Intelligencia'
|
tulajdonsag='Intelligencia'
|
||||||
@@ -57,6 +60,7 @@ function Tulajdonsagok(props: {
|
|||||||
changeValue={(val: number) => changeTulajdonsagok({...tulajdonsagok, t_int: val})}
|
changeValue={(val: number) => changeTulajdonsagok({...tulajdonsagok, t_int: val})}
|
||||||
tooLowError='Elfelejtetted, hogy mikor is kéne kalandozni indulni!'
|
tooLowError='Elfelejtetted, hogy mikor is kéne kalandozni indulni!'
|
||||||
tooHighError='Ilyen tudás és logika birtokában mi szükséged van új információkra? Mindent le tudsz vezetni a már meglévő ismereteidből, és ezt azonnal beláttad.'
|
tooHighError='Ilyen tudás és logika birtokában mi szükséged van új információkra? Mindent le tudsz vezetni a már meglévő ismereteidből, és ezt azonnal beláttad.'
|
||||||
|
dataTestId={"t_int"}
|
||||||
/>
|
/>
|
||||||
<TulajdonsagInput
|
<TulajdonsagInput
|
||||||
tulajdonsag='Bölcsesség'
|
tulajdonsag='Bölcsesség'
|
||||||
@@ -66,6 +70,7 @@ function Tulajdonsagok(props: {
|
|||||||
changeValue={(val: number) => changeTulajdonsagok({...tulajdonsagok, t_bol: val})}
|
changeValue={(val: number) => changeTulajdonsagok({...tulajdonsagok, t_bol: val})}
|
||||||
tooLowError='Nem bírtál ellenállni a kíváncsiságodnak, hogy közelebbről is megvizsgáld a tőr hegyét. Nagyon közelről.'
|
tooLowError='Nem bírtál ellenállni a kíváncsiságodnak, hogy közelebbről is megvizsgáld a tőr hegyét. Nagyon közelről.'
|
||||||
tooHighError='Hatalmas bölcsességedben beláttad a kalandozás veszélyeit és inkább más tevékenységbe fogtál.'
|
tooHighError='Hatalmas bölcsességedben beláttad a kalandozás veszélyeit és inkább más tevékenységbe fogtál.'
|
||||||
|
dataTestId={"t_bol"}
|
||||||
/>
|
/>
|
||||||
<TulajdonsagInput
|
<TulajdonsagInput
|
||||||
tulajdonsag='Karizma'
|
tulajdonsag='Karizma'
|
||||||
@@ -75,8 +80,8 @@ function Tulajdonsagok(props: {
|
|||||||
changeValue={(val: number) => changeTulajdonsagok({...tulajdonsagok, t_kar: val})}
|
changeValue={(val: number) => changeTulajdonsagok({...tulajdonsagok, t_kar: val})}
|
||||||
tooLowError='Mintha taszítanád az embereket, sose sikerült kalandozó csapatot találnod.'
|
tooLowError='Mintha taszítanád az embereket, sose sikerült kalandozó csapatot találnod.'
|
||||||
tooHighError='Az ellenkező nem tagjai nem engedték, hogy útnak indulj.'
|
tooHighError='Az ellenkező nem tagjai nem engedték, hogy útnak indulj.'
|
||||||
|
dataTestId={"t_kar"}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -122,29 +122,18 @@ function CreateCharacter2E(props: {
|
|||||||
<label className='col-md-2 col-sm-3 col-form-label'>Név</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Név</label>
|
||||||
<input className='col form-control'
|
<input className='col form-control'
|
||||||
value={karakter.nev}
|
value={karakter.nev}
|
||||||
|
data-testid="nev"
|
||||||
onChange={(e) => setKarakter({...karakter, nev: e.target.value})}/>
|
onChange={(e) => setKarakter({...karakter, nev: e.target.value})}/>
|
||||||
{!karakter.nev &&
|
{!karakter.nev &&
|
||||||
<span className='form-field-error'>A karaktered nem mászkálhat névtelenül a világban!</span>}
|
<span className='form-field-error'>A karaktered nem mászkálhat névtelenül a világban!</span>}
|
||||||
</div>
|
</div>
|
||||||
<div className='row m-2'>
|
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Nem</label>
|
|
||||||
<input className='col form-control'
|
|
||||||
value={karakter.nem}
|
|
||||||
onChange={(e) => setKarakter({...karakter, nem: e.target.value})}/>
|
|
||||||
</div>
|
|
||||||
<div className='row m-2'>
|
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Kor</label>
|
|
||||||
<input className='col form-control'
|
|
||||||
value={karakter.kor}
|
|
||||||
type={"number"}
|
|
||||||
onChange={(e) => setKarakter({...karakter, kor: Number(e.target.value)})}/>
|
|
||||||
</div>
|
|
||||||
<JellemSelector selected={karakter.jellem}
|
<JellemSelector selected={karakter.jellem}
|
||||||
changeJellem={(val) => setKarakter({...karakter, jellem: val})}/>
|
changeJellem={(val) => setKarakter({...karakter, jellem: val})}/>
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Választott istenség</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Választott istenség</label>
|
||||||
<input className='col form-control'
|
<input className='col form-control'
|
||||||
value={karakter.isten}
|
value={karakter.isten}
|
||||||
|
data-testid="isten"
|
||||||
onChange={(e) => setKarakter({...karakter, isten: e.target.value})}/>
|
onChange={(e) => setKarakter({...karakter, isten: e.target.value})}/>
|
||||||
</div>
|
</div>
|
||||||
<FajSelector2E
|
<FajSelector2E
|
||||||
@@ -212,8 +201,11 @@ function CreateCharacter2E(props: {
|
|||||||
⇩</button>}
|
⇩</button>}
|
||||||
</div>
|
</div>
|
||||||
<hr/>
|
<hr/>
|
||||||
<Felszereles osztaly={karakter.szintlepesek[0].osztaly} felszereles={karakter.felszereles}
|
<Felszereles
|
||||||
changeFelszereles={changeFelszereles}/>
|
osztaly={karakter.szintlepesek[0].osztaly}
|
||||||
|
felszereles={karakter.felszereles}
|
||||||
|
changeFelszereles={changeFelszereles}
|
||||||
|
/>
|
||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
<div className='row'>
|
<div className='row'>
|
||||||
@@ -223,8 +215,11 @@ function CreateCharacter2E(props: {
|
|||||||
{fetchedUser.email != null &&
|
{fetchedUser.email != null &&
|
||||||
<div className='row m-2'>
|
<div className='row m-2'>
|
||||||
<label className='col-md-2 col-sm-3 col-form-label'>Publikus karakterlap?</label>
|
<label className='col-md-2 col-sm-3 col-form-label'>Publikus karakterlap?</label>
|
||||||
<select className="col form-select" value={isPublic.toString()}
|
<select
|
||||||
onChange={(event) => setIsPublic(event.target.value === "true")}>
|
className="col form-select" value={isPublic.toString()}
|
||||||
|
onChange={(event) => setIsPublic(event.target.value === "true")}
|
||||||
|
data-testid={"karakter-publikus"}
|
||||||
|
>
|
||||||
<option value="true">Igen</option>
|
<option value="true">Igen</option>
|
||||||
<option value="false">Nem</option>
|
<option value="false">Nem</option>
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
Reference in New Issue
Block a user