import {Flex, Separator, Text, Table, IconButton, NativeSelect, Button} from "@chakra-ui/react"; import { useMemo } from "react"; import { useForm, useFieldArray } from "react-hook-form"; import { Check, X, PenLine } from 'lucide-react'; import VdapApi from "../../hooks/useVdapApi.js"; import useBuildUrl from "../../hooks/useBuildUrl.js"; export default function WebAdmin() { // TODO: add below api endpoint // const {data: users, isLoading, error} = VdapApi('/api/v2/vdap_web_users'); const users = useMemo(() => [ { "username": "vkuchenik", "firstName": "Venessa", "lastName": "Kuchenik", "permissions": { "ivans": 2, // 2 => requested permission "rs": 0, // 0 => no permissions and not requested }, "team": "Computer Science", "group": "Super User", }, { "username": "amack", "firstName": "Adeiline", "lastName": "Mack", "permissions": { "ivans": 2, // 0 => no permissions and not requested "rs": 2, // 1 => has permission }, "team": "Remote Sensing", "group": "Member", } ], []); const { register, handleSubmit, control, errors, formState: { isDirty } } = useForm({ defaultValues: {users: users} }); const { fields, append, remove } = useFieldArray({ control, name: "users" // Matches the key in defaultValues }) const grant = (user, category) => { // 1. post data via api // 2. fetch the new data via api again to force re-render console.log(user.username, "was granted", category, "permission"); } const deny = (user, category) => { console.log(user.username, "was denied", category, "permission"); } const users_req_ivans = useMemo(() => { return users.filter(user => user.permissions.ivans === 2); }, [users]); const users_req_rs = useMemo(() => { return users.filter(user => user.permissions.rs === 2); }, [users]); const onSubmit = (data, event) => { event.preventDefault(); console.log(data); } return (
{/* CONTENT */} {/* Header */} Web Admin Panel {/* Permission Requests */} Incoming Permission Requests {/* ivans requests table */} IVANS User Permission {users_req_ivans.map((user) => ( {user.lastName}, {user.firstName} grant(user, "ivans")}> deny(user, "ivans")}> ))} {/* rs requests table */} Remote Sensing User Permission {users_req_rs.map((user) => ( {user.lastName}, {user.firstName} grant(user, "rs")}> deny(user, "rs")}> ))} {/* Group Assignment */} Groups User Group {users.map((user, index) => ( {user.lastName}, {user.firstName} ))} {/* Team Assignment */} Teams User Team {users.map((user, index) => { console.log("user in team: ", user.team); return( {user.lastName}, {user.firstName} )})}
) }