recursive filter data

This commit is contained in:
Krosmez 2024-04-07 14:15:11 -04:00
parent 26b614290c
commit 59923864b0
2 changed files with 71 additions and 59 deletions

View File

@ -1,72 +1,80 @@
import "./styles.css"; import "./styles.css";
import { useEffect, useState } from "react";
import Container from "../../layouts/Container/index.js"; import Container from "../../layouts/Container/index.js";
import data from "../../data/data.js"; import allData from "../../data/data.js";
const Character = () => { const Character = () => {
var arrayToDelete = []; const [data, setData] = useState();
const setToDelete = (id) => {
arrayToDelete.push(id);
};
const makeItComeBack = (id) => {
arrayToDelete = arrayToDelete.filter((item) => item !== id);
};
const submitJSON = () => { useEffect(() => {
console.log(arrayToDelete); const filterDataByFolder = (folderId) => {
console.log(data); const filteredData = allData.filter((item) => item.folder === folderId);
console.log(
JSON.stringify(data.filter((item) => !arrayToDelete.includes(item._id))) return filteredData.map((item) => {
); const subItems = filterDataByFolder(item._id);
return {
...item,
subItems,
};
});
};
const mainFolders = allData.filter((item) => item.folder === null);
const filteredData = mainFolders.map((item) => {
const subItems = filterDataByFolder(item._id);
return {
...item,
subItems,
};
});
setData(filteredData);
}, [setData]);
const renderSubItems = (subItems) => {
if (subItems?.length === 0) {
return subItems?.length !== 0 ? (
<h4>
{subItems?._id} - {subItems?.name}
</h4>
) : (
<></>
);
} else {
return subItems?.map((subItem, subId) => {
return (
<div key={`subItem-${subId}`} style={{ color: "green" }}>
{subItems?.length !== 0 ? (
<h5
className={
subItem?._key === `!folders!${subItem?._id}` ? "selected" : ""
}
>
{subItem?._id} - {subItem?.name} - {subItem?.folder}
</h5>
) : (
<></>
)}
{renderSubItems(subItem?.subItems)}
</div>
);
});
}
}; };
//console.log(data.filter((item) => item.folder == null));
var mainFolders = data.filter((item) => item.folder == null);
for (let i = 0; i < mainFolders.length; i++) {
console.log(mainFolders[i].name);
var subFolders = data.filter((item) => item.folder == mainFolders[i]._id);
console.log(subFolders);
}
//console.log(data.sort((item) => item.folder));
return ( return (
<div className="character"> <div className="character">
<Container> <Container>
{data {data?.map((item, id) => (
.sort((item) => item.folder) <div key={`top-${id}`}>
// .filter((item) => item.folder == "VsGby7ZZXOXbXFGN") -- TS globales <h3>
.map((item, id) => { {item?._id} - {item?.name}
return ( </h3>
<div {renderSubItems(item?.subItems)}
style={{ display: "flex", justifyContent: "space-between" }} </div>
key={id + 1} ))}
>
<img src={item.img} alt={item.name} />
<h4>{item.name}</h4>
<div>
<button
onClick={(e) => {
e.target.parentNode.parentNode.style.backgroundColor =
"white";
makeItComeBack(item._id);
}}
>
Give it Back
</button>
<button
onClick={(e) => {
e.target.parentNode.parentNode.style.backgroundColor =
"green";
setToDelete(item._id);
}}
>
X
</button>
</div>
</div>
);
})}
<button onClick={submitJSON}>Valider</button>
</Container> </Container>
</div> </div>
); );

View File

@ -1 +1,5 @@
.character {} .character {}
.selected {
color: blue;
}