From 7acab90068853d89e6d85f7667ff169091a2e814 Mon Sep 17 00:00:00 2001 From: Martin Gasque Date: Mon, 8 Apr 2024 12:29:02 +0200 Subject: [PATCH] add admin page --- src/components/Navbar/index.js | 5 + src/pages/Admin/index.js | 210 +++++++++++++++++++++++++++++++++ src/pages/Admin/styles.css | 10 ++ src/pages/Root/index.js | 2 + 4 files changed, 227 insertions(+) create mode 100644 src/pages/Admin/index.js create mode 100644 src/pages/Admin/styles.css diff --git a/src/components/Navbar/index.js b/src/components/Navbar/index.js index 14fe1d8..fc5b3cc 100644 --- a/src/components/Navbar/index.js +++ b/src/components/Navbar/index.js @@ -21,6 +21,11 @@ const Navbar = ({ className, onClick, handleClose }) => { Hanzo Character Maker +
  • + + Admin + +
  • ); diff --git a/src/pages/Admin/index.js b/src/pages/Admin/index.js new file mode 100644 index 0000000..a07cfad --- /dev/null +++ b/src/pages/Admin/index.js @@ -0,0 +1,210 @@ +import "./styles.css"; + +import parse from "html-react-parser"; +import { render } from "react-dom"; +import { useEffect, useState } from "react"; + +import Container from "../../layouts/Container/index.js"; +import allData from "../../data/dataFiltered.js"; + +const Admin = () => { + const [data, setData] = useState(); + + 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 mainFolders = allData.filter((item) => item.folder === null); + const filteredData = mainFolders.map((item) => { + const subItems = filterDataByFolder(item._id); + return { + ...item, + subItems, + }; + }); + + setData(filteredData); + }, [setData]); + + let trash = []; + const addToTrash = (itemId) => (e) => { + trash.push(itemId); + e.target.parentNode.style.backgroundColor = "green"; + }; + const recoverFromTrash = (itemId) => (e) => { + trash = trash.filter((item) => item._id !== itemId); + e.target.parentNode.style.backgroundColor = "white"; + }; + + const createNewJSON = () => { + const newJSON = allData.filter((item) => !trash.includes(item._id)); + console.log(newJSON); + }; + + const showTrash = () => { + console.log(trash); + }; + + const changeObjectName = (itemId) => (e) => { + console.log(itemId); + console.log(e.target.parentNode.querySelector("input").value); + let newName = e.target.parentNode.querySelector("input").value; + allData.map((item) => { + if (item._id === itemId) { + item.name = newName; + } + }); + console.log(allData.filter((item) => item._id === itemId)); // check if the name has been changed + }; + + const changeObjectDescription = (itemId) => (e) => { + console.log(itemId); + console.log(e.target.parentNode.querySelector("textarea").value); + let newDesc = e.target.parentNode.querySelector("textarea").value; + // allData.map((item) => { + // if (item._id === itemId) { + // item.system.description.value = newDesc; + // } + // }); + // console.log(allData.filter((item) => item._id === itemId)); // check if the name has been changed + }; + + const renderSubItems = (subItems) => { + if (subItems?.length === 0) { + return subItems?.length !== 0 ? ( +
    + noIMG +
    +

    + {subItems?._id} - {subItems?.name} +

    +
    Change name
    + + +
    + + +
    + ) : ( + <> + ); + } else { + return subItems?.map((subItem, subId) => { + return ( +
    + {subItems?.length !== 0 ? ( +
    + noIMG +
    +
    + {subItem?._id} - {subItem?.name} +
    + +
    Change name
    + + +
    +
    + {subItem.system && parse(subItem.system.description.value)} +
    Change description
    + +