diff --git a/dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/MetaData/MetaData.jsx b/dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/MetaData/MetaData.jsx new file mode 100644 index 0000000..73b18e4 --- /dev/null +++ b/dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/MetaData/MetaData.jsx @@ -0,0 +1,77 @@ +import { + CircularProgress, + Stack, TextField, Switch, + Typography +} from "@mui/material"; +import {getRequest} from "@/common/utils/RequestUtil.js"; +import {useContext, useEffect, useState} from "react"; +import {ProjectContext} from "@/states/Dashboard/contexts/Project"; +import {Group, LooksOneRounded, TextFields, ToggleOn} from "@mui/icons-material"; + +export const MetaData = ({metaData, setMetaData}) => { + const {currentProject} = useContext(ProjectContext); + + const [loading, setLoading] = useState(true); + + const [onlineMeta, setOnlineMeta] = useState([]); + + const updateLocal = (name, value) => { + setMetaData({...metaData, [name]: value}); + } + + useEffect(() => { + const fetchGroups = async () => { + try { + const data = await getRequest(`/meta/${currentProject.id}/list`); + + if (!data) return; + + setOnlineMeta(data); + + if (metaData === null || Object.keys(metaData).length === 0) { + setMetaData(data.reduce((acc, meta) => { + acc[meta.name] = meta.defaultValue; + return acc; + }, {})); + } + + setLoading(false); + } catch (e) { + console.error(e); + } + } + + fetchGroups(); + }, []); + + return ( + + {onlineMeta.map((meta, index) => ( + + + {meta.type === "BOOLEAN" && } + {meta.type === "TEXT" && } + {meta.type === "NUMBER" && } + {meta.name} + + + {meta.type === "BOOLEAN" && updateLocal(meta.name, String(e.target.checked))}/>} + + {meta.type === "NUMBER" && updateLocal(meta.name, e.target.value)}/>} + + {meta.type === "TEXT" && updateLocal(meta.name, e.target.value)}/>} + + ))} + + {loading && + + } + + ) +} \ No newline at end of file diff --git a/dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/MetaData/index.js b/dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/MetaData/index.js new file mode 100644 index 0000000..bebf433 --- /dev/null +++ b/dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/MetaData/index.js @@ -0,0 +1 @@ +export {MetaData as default} from "./MetaData.jsx"; \ No newline at end of file