import React, { useState } from 'react'; import {Meteor} from "meteor/meteor"; import {Roles} from 'meteor/alanning:roles'; import { useTracker } from 'meteor/react-meteor-data'; import {Link} from 'react-router-dom'; import _ from 'lodash'; import Button from "@mui/material/Button"; import TextField from "@mui/material/TextField"; import MenuItem from '@mui/material/MenuItem'; import {InputLabel, List, ListItem, ListItemButton, ListItemText, Paper} from "@mui/material"; import Box from "@mui/material/Box"; import ToggleButton from '@mui/material/ToggleButton'; import ToggleButtonGroup from '@mui/material/ToggleButtonGroup'; import Dialog from '@mui/material/Dialog'; import DialogActions from '@mui/material/DialogActions'; import DialogContent from '@mui/material/DialogContent'; import DialogContentText from '@mui/material/DialogContentText'; import DialogTitle from '@mui/material/DialogTitle'; import {Editor} from 'react-draft-wysiwyg' import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css' import {Students} from "/imports/api/students"; import {Staff} from "/imports/api/staff"; import {conditions} from "/imports/api/assets"; const cssTwoColumnContainer = { display: 'grid', gridTemplateColumns: "1fr 1fr", columnGap: '1rem', rowGap: '0.4rem', } export const Workshops = () => { Meteor.subscribe('students'); Meteor.subscribe('staff'); Meteor.subscribe('workshops'); const user = Meteor.user(); const isAdmin = user && Roles.userIsInRole(user._id, 'admin', 'global'); const [selectedWorkshop, setSelectedWorkshop] = useState("") const {workshops} = useTracker(() => { let workshops = []; workshops = Workshops.find({isComplete: false}).fetch(); for(let workshop of workshops) { for(let user of workshop.signupSheet) { user.data = Students.findOne({_id: user._id}) if(!user.data) user.data = Staff.findOne({_id: user._id}) } } return {workshops} }); const getListItemStyle = (item) => { return { backgroundColor: selectedWorkshop === item ? '#EECFA6' : 'white' } } const newWorkshop = () => { if(isAdmin) { setEditedWorkshop({}) setOpenWorkshopEditor(true) } } const editWorkshop = () => { if(isAdmin && selectedWorkshop) { setEditedWorkshop({...selectedWorkshop}) setOpenWorkshopEditor(true) } } const [openWorkshopEditor, setOpenWorkshopEditor] = useState(false) const [editedWorkshop, setEditedWorkshop] = useState(false) const workshopEditorClosed = (save) => { const completeHandler = (err, result) => { if(err) console.error(err) else { setOpenWorkshopEditor(false) setEditedWorkshop(null) } } if(save) { if(editedWorkshop._id) Meteor.call('workshops.update', editedWorkshop._id, editedWorkshop.name, editedWorkshop.description, editedWorkshop.signupLimit, completeHandler) else Meteor.call('workshops.add', editedWorkshop.name, editedWorkshop.description, editedWorkshop.signupLimit, completeHandler) } else completeHandler() } return ( <> Workshop Editor {editedWorkshop.name = e.target.value; setEditedWorkshop(editedWorkshop)}}/> {selectedWorkshop.description = e.target.value; setEditedWorkshop(editedWorkshop)}}/> {editedWorkshop.signupLimit = e.target.value; setEditedWorkshop(editedWorkshop)}}/> {isAdmin && } {workshops.map((next, i) => { return ( {setSelectedWorkshop(next)}}> ) })} {/* {selectedWorkshop.description = ""}}/>*/} {`${selectedWorkshop.description}`} {selectedWorkshop.signupSheet.map((next, i) => { return ( ) })} ) }