From bd9843f46ee3ac608b8c99ce5b4e9a05dbd4e659 Mon Sep 17 00:00:00 2001 From: Balint Morasz Date: Sun, 3 Sep 2023 10:58:30 +0200 Subject: [PATCH] add router and try some fixes on the KepzettsegSelector.tsx --- src/App.tsx | 14 ++++++++-- src/components/KarakterKepzettsegek.tsx | 37 +++++++++++++++---------- src/components/KepzettsegSelector.tsx | 31 ++++++++------------- src/pages/CreateCharacter.tsx | 4 +-- 4 files changed, 48 insertions(+), 38 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index d714ccf..982f6d9 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,12 +1,20 @@ import React from 'react'; import './App.css'; import CreateCharacter from "./pages/CreateCharacter"; +import { createBrowserRouter, RouterProvider } from "react-router-dom"; + +const router = createBrowserRouter([ + { + path: "/", + element: , + }, +]); function App() { return ( -
- -
+
+ +
); } diff --git a/src/components/KarakterKepzettsegek.tsx b/src/components/KarakterKepzettsegek.tsx index cbd78a6..5d95b2d 100644 --- a/src/components/KarakterKepzettsegek.tsx +++ b/src/components/KarakterKepzettsegek.tsx @@ -18,6 +18,22 @@ function InternalKepzettsegekSelector(props: {title: string, numberOfKepzettseg: const klist = Array.from(new Array(numberOfKepzettseg).keys()) + const preCalculated: { + kepzettsegek: Kepzettseg[], + registration: UseFormRegisterReturn, + selected: Kepzettseg, + }[] = []; + + for (let i = 0; i < numberOfKepzettseg; i++) { + preCalculated.push({ + kepzettsegek: getKepzettsegListaN(i), + registration: register(i), + selected: getKepzettsegN(i) + }) + } + + console.log(preCalculated) + return <>
@@ -26,11 +42,10 @@ function InternalKepzettsegekSelector(props: {title: string, numberOfKepzettseg:
{klist.map((idx) => ) }
@@ -61,15 +76,12 @@ function KarakterKepzettsegek (props: { } console.log('Adjusted Number of Kepzetsegek = ', numberOfKepzettseg) - const getKepzettsegN = (n: number) => Kepzettsegek[watch('kep_'+n, availableKepzettsegList[n].Id) as KepzettsegId] + const getKepzettsegN = (n: number) => Kepzettsegek[watch('kepzettseg.'+n, availableKepzettsegList[n].Id) as KepzettsegId] const getKepzettsegListaN = (n: number) => { let response = availableKepzettsegList; for (let i = 0; i < numberOfKepzettseg; i++) { - if (i === n) { - continue; - } - response = response.filter(x => x.Id !== getKepzettsegN(i).Id) + response = response.filter(x => i === n || x.Id !== getKepzettsegN(i).Id) } if (osztaly === Osztaly.Tolvaj) { for (let i = 0; i < 4; i++) { @@ -90,10 +102,7 @@ function KarakterKepzettsegek (props: { } // 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) + response = response.filter(x => i === n || x.Id !== getTolvajKepzettsegN(i).Id) } return response } diff --git a/src/components/KepzettsegSelector.tsx b/src/components/KepzettsegSelector.tsx index fc035f1..e71355d 100644 --- a/src/components/KepzettsegSelector.tsx +++ b/src/components/KepzettsegSelector.tsx @@ -9,28 +9,21 @@ function kepzettsegOptionText(k: Kepzettseg) { return k.Name + ' (' + k.Tulajdonsag.reduce((acc, k) => (acc === '' ? acc : acc + ' / ') + TulajdonsagLabel(k), '') + ')' + (osztalyok == null ? '' : (' - ' + osztalyok)); } -// this is required for render optimization, which happens because selected is not a prop of this component so selecting an item doesn't trigger a rendering of this select field. -function KepzettsegSelect(props: {kepzettsegek: Kepzettseg[], fieldRegistration: UseFormRegisterReturn, defaultValue: Kepzettseg}) { - const { kepzettsegek, fieldRegistration, defaultValue} = props - return
- -
+function KepzettsegSelector (props: {kepzettsegek: Kepzettseg[], fieldRegistration: UseFormRegisterReturn, selected : Kepzettseg}) { -} - -function KepzettsegSelector (props: {kepzettsegek: Kepzettseg[], fieldRegistration: UseFormRegisterReturn, defaultValue: Kepzettseg, selected : Kepzettseg}) { - - const { kepzettsegek, fieldRegistration, defaultValue, selected } = props + const { kepzettsegek, fieldRegistration, selected } = props return <> - +
+ +

{selected.Description}

diff --git a/src/pages/CreateCharacter.tsx b/src/pages/CreateCharacter.tsx index 345921a..ee8b1fa 100644 --- a/src/pages/CreateCharacter.tsx +++ b/src/pages/CreateCharacter.tsx @@ -7,7 +7,7 @@ import FajSelector from "../components/FajSelector"; import Tulajdonsagok from "../components/Tulajdonsagok"; import OsztalySelector from "../components/OsztalySelector"; import KarakterKepzettsegek from "../components/KarakterKepzettsegek"; -import {KarakterTulajdonsagok, Tulajdonsag} from "../domain-models/tulajdonsag"; +import {KarakterTulajdonsagok} from "../domain-models/tulajdonsag"; import MasodlagosErtekek from "../components/MasodlagosErtekek"; const FAJ_FIELD_NAME = 'faj' @@ -75,7 +75,7 @@ function CreateCharacterPage() { register(fieldName, {required: true})} watch={watch} />