diff --git a/Kemkas.Web/Services/Character/CharacterDbModelToDtoService.cs b/Kemkas.Web/Services/Character/CharacterDbModelToDtoService.cs
index 1b37e9a..f9cfe59 100644
--- a/Kemkas.Web/Services/Character/CharacterDbModelToDtoService.cs
+++ b/Kemkas.Web/Services/Character/CharacterDbModelToDtoService.cs
@@ -24,12 +24,12 @@ public class CharacterDbModelToDtoService : ICharacterDbModelToDtoService
Osztaly = entity.Osztaly.Convert(),
Tulajdonsagok = new KarakterTulajdonsagokDto
{
- T_Ero = entity.Ero,
- T_Ugy = entity.Ugyesseg,
- T_Egs = entity.Egeszseg,
- T_Int = entity.Intelligencia,
- T_Bol = entity.Bolcsesseg,
- T_Kar = entity.Karizma,
+ Ero = entity.Ero,
+ Ugy = entity.Ugyesseg,
+ Egs = entity.Egeszseg,
+ Int = entity.Intelligencia,
+ Bol = entity.Bolcsesseg,
+ Kar = entity.Karizma,
},
Kepzettsegek = entity.KarakterKepzettsegek.Where(x => !x.IsTolvajKepzettseg).Select(x => x.Kepzettseg.Convert()).ToList(),
Tolvajkepzettsegek = entity.KarakterKepzettsegek.Where(x => x.IsTolvajKepzettseg).Select(x => x.Kepzettseg.Convert()).ToList(),
diff --git a/Kemkas.Web/Services/Character/CharacterDtoToDbModelService.cs b/Kemkas.Web/Services/Character/CharacterDtoToDbModelService.cs
index 68f7395..4740bcf 100644
--- a/Kemkas.Web/Services/Character/CharacterDtoToDbModelService.cs
+++ b/Kemkas.Web/Services/Character/CharacterDtoToDbModelService.cs
@@ -23,12 +23,12 @@ public class CharacterDtoToDbModelService : ICharacterDtoToDbModelService
Isten = dto.Isten,
Faj = FajExtensions.Convert(dto.Faj),
Osztaly = OsztalyExtensions.Convert(dto.Osztaly),
- Ero = dto.Tulajdonsagok.T_Ero,
- Ugyesseg = dto.Tulajdonsagok.T_Ugy,
- Egeszseg = dto.Tulajdonsagok.T_Egs,
- Intelligencia = dto.Tulajdonsagok.T_Int,
- Bolcsesseg = dto.Tulajdonsagok.T_Bol,
- Karizma = dto.Tulajdonsagok.T_Kar,
+ Ero = dto.Tulajdonsagok.Ero,
+ Ugyesseg = dto.Tulajdonsagok.Ugy,
+ Egeszseg = dto.Tulajdonsagok.Egs,
+ Intelligencia = dto.Tulajdonsagok.Int,
+ Bolcsesseg = dto.Tulajdonsagok.Bol,
+ Karizma = dto.Tulajdonsagok.Kar,
Szint = dto.Szint,
};
karakter.KarakterKepzettsegek = ConvertKepzettsegek(dto, karakter);
diff --git a/Kemkas.Web/ViewModels/KarakterTulajdonsagokDto.cs b/Kemkas.Web/ViewModels/KarakterTulajdonsagokDto.cs
index 60fb48c..ea27e44 100644
--- a/Kemkas.Web/ViewModels/KarakterTulajdonsagokDto.cs
+++ b/Kemkas.Web/ViewModels/KarakterTulajdonsagokDto.cs
@@ -1,11 +1,19 @@
+using System.Text.Json.Serialization;
+
namespace Kemkas.Web.ViewModels;
public struct KarakterTulajdonsagokDto
{
- public byte T_Ero { get; set; }
- public byte T_Ugy { get; set; }
- public byte T_Egs { get; set; }
- public byte T_Int { get; set; }
- public byte T_Bol { get; set; }
- public byte T_Kar { get; set; }
+ [JsonPropertyName("t_ero")]
+ public byte Ero { get; set; }
+ [JsonPropertyName("t_ugy")]
+ public byte Ugy { get; set; }
+ [JsonPropertyName("t_egs")]
+ public byte Egs { get; set; }
+ [JsonPropertyName("t_int")]
+ public byte Int { get; set; }
+ [JsonPropertyName("t_bol")]
+ public byte Bol { get; set; }
+ [JsonPropertyName("t_kar")]
+ public byte Kar { get; set; }
}
\ No newline at end of file
diff --git a/Kemkas.Web/frontend/src/App.tsx b/Kemkas.Web/frontend/src/App.tsx
index 872af57..695d275 100644
--- a/Kemkas.Web/frontend/src/App.tsx
+++ b/Kemkas.Web/frontend/src/App.tsx
@@ -10,6 +10,11 @@ function App(props: {faro?: Faro}) {
path: "/",
element: ,
},
+ {
+ path: "/:id",
+ element: ,
+ loader: args => fetch(`/Character/${args.params.id}`)
+ }
]);
return (
diff --git a/Kemkas.Web/frontend/src/first-edition/components/SaveOverlayTooltip.tsx b/Kemkas.Web/frontend/src/first-edition/components/SaveOverlayTooltip.tsx
new file mode 100644
index 0000000..adb3b66
--- /dev/null
+++ b/Kemkas.Web/frontend/src/first-edition/components/SaveOverlayTooltip.tsx
@@ -0,0 +1,8 @@
+import {Tooltip} from "react-bootstrap";
+import React from "react";
+
+const SaveOverlayTooltip =
+ A mentéssel egyedi URL-en elérhető lesz a karakter bárkinek, azonban módosítani már nem lehet, csak újat menteni.
+
+
+export default SaveOverlayTooltip
diff --git a/Kemkas.Web/frontend/src/first-edition/pages/CreateCharacter.tsx b/Kemkas.Web/frontend/src/first-edition/pages/CreateCharacter.tsx
index d14b2f3..7755886 100644
--- a/Kemkas.Web/frontend/src/first-edition/pages/CreateCharacter.tsx
+++ b/Kemkas.Web/frontend/src/first-edition/pages/CreateCharacter.tsx
@@ -17,23 +17,29 @@ import {
SetDefaultTolvajKepzettsegek,
} from "../domain-models/kepzettsegek";
import {CreatePDF} from "../pdf/character.pdf";
-import {KarakterDefaults} from "../domain-models/karakter";
+import {KarakterDefaults, KarakterInputs} from "../domain-models/karakter";
import {CalculateMasodlagosErtekek} from "../domain-models/masodlagos_ertekek";
import {KarakterInputToPdfView} from "../pdf/karakter_pdf_view";
import JellemSelector from "../components/JellemSelector";
import {CanLevelUp, LevelDown, LevelUp} from "../domain-models/level";
-import {Card} from "react-bootstrap";
+import {Card, OverlayTrigger} from "react-bootstrap";
import LevelUps from "../components/LevelUps";
import HarcosFegyverSpecializacio from "../components/HarcosFegyverSpecializacio";
import Felszereles from '../components/Felszereles';
import { KarakterFelszereles } from '../domain-models/felszereles';
import {Faro} from "@grafana/faro-web-sdk";
import {StoreNewCharacter} from "../api/character.api";
+import {useLoaderData} from "react-router-dom";
+import saveOverlayTooltip from "../components/SaveOverlayTooltip";
-function CreateCharacterPage(props: {faro?: Faro}) {
+function CreateCharacterPage(props: {
+ faro?: Faro,
+}) {
const {faro} = props
- let [karakter, changeKarakter] = useState(KarakterDefaults)
+ const initialKarakterInputs = useLoaderData() as KarakterInputs;
+
+ let [karakter, changeKarakter] = useState(initialKarakterInputs ?? KarakterDefaults)
const tulajdonsagokFajjal = TulajdonsagokFajjal(karakter.tulajdonsagok, karakter.faj)
@@ -50,7 +56,6 @@ function CreateCharacterPage(props: {faro?: Faro}) {
const canLevelUp = CanLevelUp(karakter)
-
return (
@@ -167,19 +172,37 @@ function CreateCharacterPage(props: {faro?: Faro}) {
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Kemkas.Web/frontend/src/setupProxy.js b/Kemkas.Web/frontend/src/setupProxy.js
deleted file mode 100644
index f352d2d..0000000
--- a/Kemkas.Web/frontend/src/setupProxy.js
+++ /dev/null
@@ -1,36 +0,0 @@
-const { createProxyMiddleware } = require('http-proxy-middleware');
-const { env } = require('process');
-
-const target = env.ASPNETCORE_HTTPS_PORT ? `https://localhost:${env.ASPNETCORE_HTTPS_PORT}` :
- env.ASPNETCORE_URLS ? env.ASPNETCORE_URLS.split(';')[0] : 'http://localhost:40870';
-
-const context = [
- "/weatherforecast",
- "/_configuration",
- "/.well-known",
- "/Identity",
- "/connect",
- "/ApplyDatabaseMigrations",
- "/_framework"
-];
-
-const onError = (err, req, resp, target) => {
- console.error(`${err.message}`);
-}
-
-module.exports = function (app) {
- const appProxy = createProxyMiddleware(context, {
- target: target,
- // Handle errors to prevent the proxy middleware from crashing when
- // the ASP NET Core webserver is unavailable
- onError: onError,
- secure: false,
- // Uncomment this line to add support for proxying websockets
- //ws: true,
- headers: {
- Connection: 'Keep-Alive'
- }
- });
-
- app.use(appProxy);
-};
diff --git a/Kemkas.Web/frontend/src/setupTests.ts b/Kemkas.Web/frontend/src/setupTests.ts
deleted file mode 100644
index 5030fa8..0000000
--- a/Kemkas.Web/frontend/src/setupTests.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-// jest-dom adds custom jest matchers for asserting on DOM nodes.
-// allows you to do things like:
-// expect(element).toHaveTextContent(/react/i)
-// learn more: https://github.com/testing-library/jest-dom
-import '@testing-library/jest-dom';
-
-const localStorageMock = {
- getItem: jest.fn(),
- setItem: jest.fn(),
- removeItem: jest.fn(),
- clear: jest.fn(),
- length: 0,
- key: jest.fn()
-};
-global.localStorage = localStorageMock;
-
-// Mock the request issued by the react app to get the client configuration parameters.
-window.fetch = () => {
- return Promise.resolve(
- {
- ok: true,
- json: () => Promise.resolve({
- "authority": "https://localhost:7251",
- "client_id": "Kemkas.Web",
- "redirect_uri": "https://localhost:7251/authentication/login-callback",
- "post_logout_redirect_uri": "https://localhost:7251/authentication/logout-callback",
- "response_type": "id_token token",
- "scope": "Kemkas.WebAPI openid profile"
- })
- });
-};
diff --git a/Kemkas.sln b/Kemkas.sln
index 4925aa5..b2a0f31 100644
--- a/Kemkas.sln
+++ b/Kemkas.sln
@@ -2,6 +2,17 @@
Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kemkas.Web", "Kemkas.Web\Kemkas.Web.csproj", "{ABAEE4DC-1A07-40AE-A2B6-4D3755A6C1E8}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "General", "General", "{5D06CE1E-DD86-41C0-A1BF-53162BD027AA}"
+ ProjectSection(SolutionItems) = preProject
+ README.md = README.md
+ TODO.md = TODO.md
+ .gitignore = .gitignore
+ .dockerignore = .dockerignore
+ .tool-versions = .tool-versions
+ .github\dependabot.yml = .github\dependabot.yml
+ .github\workflows\ci.yml = .github\workflows\ci.yml
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
diff --git a/README.md b/README.md
index 0191e83..012e330 100644
--- a/README.md
+++ b/README.md
@@ -8,5 +8,14 @@ Kard és Mágia karakter alkotó segédlet (https://app.kemkas.hu)
## Coding readmes
+To start development, spin up the docker-compose.yaml file and use the launchSettings.json to start the backend and frontend dev servers.
+
+For the first time setup:
+1. start the DB from the docker compose (required for the backend)
+2. launch the project with the launchSettings file (will generate SSL certs)
+3. spin up the proxy from docker compose (needs the SSL certs)
+
+Later start the docker compose first and the project launch settings after the DB is up and running.
+
[Frontend README](./frontend/README.md)