Character sheet improvements

This commit is contained in:
Martin Gasque 2024-04-09 16:15:22 +02:00
parent 9b363d9d93
commit 307b55dbe4
3 changed files with 85 additions and 15 deletions

View File

@ -2,12 +2,18 @@ import { type } from "@testing-library/user-event/dist/type";
const levels = [ const levels = [
{ {
_id: "1", _id: 0,
name: "0",
unlocks: [],
},
{
_id: 1,
name: "1", name: "1",
unlocks: [ unlocks: [
{ {
name: "Archetype", name: "Archetype",
type: "choice", type: "choice",
_id: 105,
options: [ options: [
{ {
folder_id: "xdVnM5YTVFEewTje", folder_id: "xdVnM5YTVFEewTje",
@ -69,7 +75,7 @@ const levels = [
], ],
}, },
{ {
_id: "2", _id: 2,
name: "2", name: "2",
unlocks: [ unlocks: [
{ {
@ -88,36 +94,44 @@ const levels = [
], ],
}, },
{ {
_id: "3", _id: 3,
name: "3", name: "3",
unlocks: [],
}, },
{ {
_id: "4", _id: 4,
name: "4", name: "4",
unlocks: [],
}, },
{ {
_id: "5", _id: 5,
name: "5", name: "5",
unlocks: [],
}, },
{ {
_id: "6", _id: 6,
name: "6", name: "6",
unlocks: [],
}, },
{ {
_id: "7", _id: 7,
name: "7", name: "7",
unlocks: [],
}, },
{ {
_id: "8", _id: 8,
name: "8", name: "8",
unlocks: [],
}, },
{ {
_id: "9", _id: 9,
name: "9", name: "9",
unlocks: [],
}, },
{ {
_id: "10", _id: 10,
name: "10", name: "10",
unlocks: [],
}, },
]; ];

View File

@ -1,8 +1,62 @@
import "./styles.css"; import "./styles.css";
import { useState } from "react";
import allData from "../../data/dataFiltered.js";
import levels from "../../data/levels.js";
const Body = (props) => { const Body = (props) => {
console.log(props); //Object { level: 0 } const [level, setLevel] = useState();
return <div className="body">lvl: {props.level}</div>; const [archetype, setArchetype] = useState();
// setArchetype("");
let unlocks = [];
if (props.level) {
if (levels[props.level].unlocks) {
unlocks.push(levels[props.level].unlocks);
}
}
const changeArchetype = (e) => {
setArchetype(e.target.value);
};
return (
<div>
<h1>Body</h1>
{unlocks.map((unlock) => {
return unlock.map((item) => {
if (item._id === 105) {
return (
<div key={item._id}>
<label htmlFor="archetypes">Level {props.level}</label>
<select name="archetypes" onChange={changeArchetype}>
{item.options.map((option) => {
return (
<option key={option.name} value={option.folder_id}>
{option.name} - {option.folder_id}
</option>
);
})}
</select>
<h2>Compétences d'archétype</h2>
{allData
.filter((comp) => comp.folder === archetype)
.map((comp) => {
if (comp._key.includes("!folders")) {
//Ici recursivement récupérer les compétences d'archetype car certaines sont rangés dans des dossiers, sous-dossiers
}
return (
<div key={comp._id}>
<h3>{comp.name}</h3>
<p>{comp.description}</p>
</div>
);
})}
</div>
);
}
});
})}
</div>
);
}; };
export default Body; export default Body;

View File

@ -9,7 +9,7 @@ import levels from "../../data/levels.js";
const Character = () => { const Character = () => {
const [data, setData] = useState(); const [data, setData] = useState();
var selectedLevel = 0; const [selectedLevel, setSelectedLevel] = useState();
useEffect(() => { useEffect(() => {
const filterDataByFolder = (folderId) => { const filterDataByFolder = (folderId) => {
const filteredData = allData.filter((item) => item.folder === folderId); const filteredData = allData.filter((item) => item.folder === folderId);
@ -33,18 +33,19 @@ const Character = () => {
}); });
setData(filteredData); setData(filteredData);
setSelectedLevel(0);
}, [setData]); }, [setData]);
let levelDom = document.getElementsByClassName("level"); let levelDom = document.getElementsByClassName("level");
for (let i = 0; i < levelDom.length; i++) { for (let i = 0; i < levelDom.length; i++) {
// eslint-disable-next-line no-loop-func
levelDom[i].addEventListener("click", () => { levelDom[i].addEventListener("click", () => {
for (let j = 0; j < levelDom.length; j++) { for (let j = 0; j < levelDom.length; j++) {
levelDom[j].classList.remove("selected"); levelDom[j].classList.remove("selected");
} }
levelDom[i].classList.add("selected"); levelDom[i].classList.add("selected");
selectedLevel = i + 1; setSelectedLevel(i + 1);
Body({ level: selectedLevel });
}); });
} }
@ -111,6 +112,7 @@ const Character = () => {
{renderSubItems(item?.subItems)} {renderSubItems(item?.subItems)}
</div> </div>
))} */} ))} */}
<Body level={selectedLevel} /> <Body level={selectedLevel} />
</Container> </Container>
</div> </div>