recursive filter data
This commit is contained in:
parent
26b614290c
commit
59923864b0
|
|
@ -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);
|
useEffect(() => {
|
||||||
|
const filterDataByFolder = (folderId) => {
|
||||||
|
const filteredData = allData.filter((item) => item.folder === folderId);
|
||||||
|
|
||||||
|
return filteredData.map((item) => {
|
||||||
|
const subItems = filterDataByFolder(item._id);
|
||||||
|
return {
|
||||||
|
...item,
|
||||||
|
subItems,
|
||||||
};
|
};
|
||||||
const makeItComeBack = (id) => {
|
});
|
||||||
arrayToDelete = arrayToDelete.filter((item) => item !== id);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const submitJSON = () => {
|
const mainFolders = allData.filter((item) => item.folder === null);
|
||||||
console.log(arrayToDelete);
|
const filteredData = mainFolders.map((item) => {
|
||||||
console.log(data);
|
const subItems = filterDataByFolder(item._id);
|
||||||
console.log(
|
return {
|
||||||
JSON.stringify(data.filter((item) => !arrayToDelete.includes(item._id)))
|
...item,
|
||||||
);
|
subItems,
|
||||||
};
|
};
|
||||||
//console.log(data.filter((item) => item.folder == null));
|
});
|
||||||
var mainFolders = data.filter((item) => item.folder == null);
|
|
||||||
for (let i = 0; i < mainFolders.length; i++) {
|
setData(filteredData);
|
||||||
console.log(mainFolders[i].name);
|
}, [setData]);
|
||||||
var subFolders = data.filter((item) => item.folder == mainFolders[i]._id);
|
|
||||||
console.log(subFolders);
|
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" : ""
|
||||||
}
|
}
|
||||||
//console.log(data.sort((item) => item.folder));
|
>
|
||||||
|
{subItem?._id} - {subItem?.name} - {subItem?.folder}
|
||||||
|
</h5>
|
||||||
|
) : (
|
||||||
|
<></>
|
||||||
|
)}
|
||||||
|
{renderSubItems(subItem?.subItems)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
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" }}
|
|
||||||
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>
|
||||||
</div>
|
))}
|
||||||
);
|
|
||||||
})}
|
|
||||||
|
|
||||||
<button onClick={submitJSON}>Valider</button>
|
|
||||||
</Container>
|
</Container>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1 +1,5 @@
|
||||||
.character {}
|
.character {}
|
||||||
|
|
||||||
|
.selected {
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user