diff --git a/client/src/common/CurrentUserProvider.tsx b/client/src/common/CurrentUserProvider.tsx index 414e26ced..5ef7bf6fa 100644 --- a/client/src/common/CurrentUserProvider.tsx +++ b/client/src/common/CurrentUserProvider.tsx @@ -1,46 +1,8 @@ import { createContext, ReactElement, useContext } from "react"; -import { gql, useQuery } from "@apollo/client"; +import { useQuery } from "@apollo/client"; import RequestWrapper2 from "./RequestWrapper2"; import { Navigate, useLocation } from "react-router-dom"; -import { AccessCheck } from "../queries/userQueries"; - -export const GET_CURRENT_USER = gql` - query GetCurrentUser { - currentUser { - id - ritUsername - firstName - lastName - setupComplete - archived - admin - holds { - removeDate - } - passedModules { - moduleID - moduleName - passedDate - } - accessChecks { - equipmentID - approved - } - cardTagID - trainingHolds { - moduleID - expires - } - manager - staff - trainer - currencyAccount{ - id - balance - } - } - } -`; +import { AccessCheck, GET_CURRENT_USER } from "../queries/userQueries"; export interface PassedModule { moduleID: number; diff --git a/client/src/common/ModuleStatusRow.tsx b/client/src/common/ModuleStatusRow.tsx index 30f0947d8..efd0bb112 100644 --- a/client/src/common/ModuleStatusRow.tsx +++ b/client/src/common/ModuleStatusRow.tsx @@ -8,7 +8,6 @@ import CheckCircleIcon from "@mui/icons-material/CheckCircle"; import CloseIcon from "@mui/icons-material/Close"; import { format } from "date-fns"; import { useQuery } from "@apollo/client"; -import { GET_ACCESS_PROGRESSES } from "../queries/trainingQueries"; import { GET_PASSED_SUBMISSION } from "../queries/getSubmissions"; import { useCurrentUser } from "./CurrentUserProvider.js"; import RadioButtonUncheckedIcon from '@mui/icons-material/RadioButtonUnchecked'; diff --git a/client/src/pages/both/user_page/user_trainings/UserTrainingsPage.tsx b/client/src/pages/both/user_page/user_trainings/UserTrainingsPage.tsx index c0af36fb2..51ee62e46 100644 --- a/client/src/pages/both/user_page/user_trainings/UserTrainingsPage.tsx +++ b/client/src/pages/both/user_page/user_trainings/UserTrainingsPage.tsx @@ -1,6 +1,5 @@ import { Divider, Grid, Stack, Typography } from "@mui/material"; import { useCurrentUser } from "../../../../common/CurrentUserProvider"; -import { GET_ALL_TRAINING_MODULES } from "../../../maker/training/TrainingPage"; import { useQuery } from "@apollo/client"; import { ModuleStatus, @@ -12,6 +11,7 @@ import AccessCheck from "../../../../types/AccessCheck"; import EquipmentCard from "../../../../common/EquipmentCard"; import ModuleStatusRow from "../../../../common/ModuleStatusRow"; import { useIsMobile } from "../../../../common/IsMobileProvider"; +import { GET_ALL_TRAINING_MODULES } from "../../../../queries/trainingQueries"; export default function UserTraingingsPage() { const user = useCurrentUser(); diff --git a/client/src/pages/lab_management/inventory/Ledger.tsx b/client/src/pages/lab_management/inventory/Ledger.tsx index f00132dac..c984d92ed 100644 --- a/client/src/pages/lab_management/inventory/Ledger.tsx +++ b/client/src/pages/lab_management/inventory/Ledger.tsx @@ -22,7 +22,7 @@ export default function Ledger() { const matchingItems = queryResult.data?.Ledgers.filter((i: InventoryLedger) => { - var searchString = i.category + " " + i.initiator?.firstName + " " + i.initiator?.lastName + " " + i.items.toString() + " " + i.purchaser?.firstName + " " + i.purchaser?.lastName + " " + i.totalCost + " "; + const searchString = i.category + " " + i.initiator?.firstName + " " + i.initiator?.lastName + " " + i.items.toString() + " " + i.purchaser?.firstName + " " + i.purchaser?.lastName + " " + i.totalCost + " "; return searchString.toLowerCase().includes(searchText.toLowerCase()) }); diff --git a/client/src/pages/lab_management/inventory/MaterialModalContents.tsx b/client/src/pages/lab_management/inventory/MaterialModalContents.tsx index 318635a79..06c0eccad 100644 --- a/client/src/pages/lab_management/inventory/MaterialModalContents.tsx +++ b/client/src/pages/lab_management/inventory/MaterialModalContents.tsx @@ -1,4 +1,4 @@ -import { ChangeEvent, useEffect, useState } from "react"; +import { ChangeEvent, useState } from "react"; import { Button, FormControl, @@ -7,7 +7,6 @@ import { MenuItem, Select, Stack, - TextareaAutosize, TextField, Typography, } from "@mui/material"; diff --git a/client/src/pages/lab_management/inventory/ToolItemTypeModal.tsx b/client/src/pages/lab_management/inventory/ToolItemTypeModal.tsx index ba0f9e9b3..034605fdc 100644 --- a/client/src/pages/lab_management/inventory/ToolItemTypeModal.tsx +++ b/client/src/pages/lab_management/inventory/ToolItemTypeModal.tsx @@ -4,7 +4,7 @@ import { ToolItemType, ToolItemTypeInput } from "../../../types/ToolItem"; import { useEffect, useState } from "react"; import PrettyModal from "../../../common/PrettyModal"; import { useNavigate, useParams } from "react-router-dom"; -import { Box, Button, Divider, InputLabel, FormControl, MenuItem, Select, Stack, Switch, TextField, Tooltip, Typography, FormControlLabel, TextareaAutosize } from "@mui/material"; +import { Box, Button, Divider, InputLabel, FormControl, MenuItem, Select, Stack, Switch, TextField, Tooltip, Typography, FormControlLabel } from "@mui/material"; import GET_ROOMS from "../../../queries/roomQueries"; import RequestWrapper from "../../../common/RequestWrapper"; import Room from "../../../types/Room"; diff --git a/client/src/pages/lab_management/manage_equipment/InstanceGrid.tsx b/client/src/pages/lab_management/manage_equipment/InstanceGrid.tsx index 308d24088..35ad65524 100644 --- a/client/src/pages/lab_management/manage_equipment/InstanceGrid.tsx +++ b/client/src/pages/lab_management/manage_equipment/InstanceGrid.tsx @@ -1,6 +1,6 @@ import { useQuery } from "@apollo/client"; import { EquipmentInstance, GET_EQUIPMENT_INSTANCES } from "../../../queries/equipmentInstanceQueries"; -import { Alert, Grid, Typography } from "@mui/material"; +import { Alert, Grid } from "@mui/material"; import RequestWrapper2 from "../../../common/RequestWrapper2"; import EquipmentInstanceCard from "./EquipmentInstanceCard"; diff --git a/client/src/pages/lab_management/training_modules/DeleteTrainingModuleButton.tsx b/client/src/pages/lab_management/training_modules/DeleteTrainingModuleButton.tsx index 5b87f09dc..b95801fd2 100644 --- a/client/src/pages/lab_management/training_modules/DeleteTrainingModuleButton.tsx +++ b/client/src/pages/lab_management/training_modules/DeleteTrainingModuleButton.tsx @@ -25,7 +25,7 @@ export default function DeleteTrainingModuleButton(props: DeleteTrainingModuleBu try { await deleteTrainingModule(); } catch (error) { - toast.error("Failed to delete training module"); + toast.error(`Failed to delete training module: ${error}`); return; } } diff --git a/client/src/pages/lab_management/users/UserPage.tsx b/client/src/pages/lab_management/users/UserPage.tsx index 3059f27e8..c7eece215 100644 --- a/client/src/pages/lab_management/users/UserPage.tsx +++ b/client/src/pages/lab_management/users/UserPage.tsx @@ -25,7 +25,6 @@ import BlockIcon from '@mui/icons-material/Block'; import DeleteIcon from '@mui/icons-material/Delete'; import ManageUserArchive from "./ManageUserArchive"; import { AccessCheckExtraInfo, GET_USER, Hold, Restriction } from "../../../queries/userQueries"; -import NavLink from "../../../top_nav/NavLink"; const CREATE_HOLD = gql` diff --git a/client/src/pages/maker/signup/SignupPage.tsx b/client/src/pages/maker/signup/SignupPage.tsx index 51f0cf97f..fe303fee3 100644 --- a/client/src/pages/maker/signup/SignupPage.tsx +++ b/client/src/pages/maker/signup/SignupPage.tsx @@ -9,13 +9,12 @@ import { Typography, } from "@mui/material"; import { - GET_CURRENT_USER, useCurrentUser, } from "../../../common/CurrentUserProvider"; import styled from "styled-components"; import { useMutation } from "@apollo/client"; import { useNavigate } from "react-router-dom"; -import { UPDATE_STUDENT_PROFILE } from "../../../queries/userQueries"; +import { GET_CURRENT_USER, UPDATE_STUDENT_PROFILE } from "../../../queries/userQueries"; const StyledFakeTextField = styled.div` border-radius: 4px; diff --git a/client/src/pages/maker/take_quiz/EquipmentProgessCard.tsx b/client/src/pages/maker/take_quiz/EquipmentProgessCard.tsx index 753cd5a52..2d8d857af 100644 --- a/client/src/pages/maker/take_quiz/EquipmentProgessCard.tsx +++ b/client/src/pages/maker/take_quiz/EquipmentProgessCard.tsx @@ -4,7 +4,6 @@ import { Typography, Stack, CardHeader} from "@mui/material"; -import { useEffect, useState } from "react"; import { useQuery } from "@apollo/client"; import { GET_ACCESS_PROGRESSES } from "../../../queries/trainingQueries"; import RequestWrapper from "../../../common/RequestWrapper"; diff --git a/client/src/pages/maker/take_quiz/QuizPage.tsx b/client/src/pages/maker/take_quiz/QuizPage.tsx index 6b8568e0c..224b8bda9 100644 --- a/client/src/pages/maker/take_quiz/QuizPage.tsx +++ b/client/src/pages/maker/take_quiz/QuizPage.tsx @@ -8,9 +8,6 @@ import { Stack } from "@mui/system"; import { Typography } from "@mui/material"; import { useIsMobile } from "../../../common/IsMobileProvider"; - -// we're going to bring this back soon probably -// eslint-disable-next-line function _shuffle(array: any[] | undefined) { if (array === undefined) return undefined; let currentIndex = array.length; diff --git a/client/src/pages/maker/take_quiz/QuizTaker.tsx b/client/src/pages/maker/take_quiz/QuizTaker.tsx index a1500fcb1..006a9a3f4 100644 --- a/client/src/pages/maker/take_quiz/QuizTaker.tsx +++ b/client/src/pages/maker/take_quiz/QuizTaker.tsx @@ -1,16 +1,16 @@ -import React, { useEffect, useState } from "react"; +import { useState } from "react"; import { Module, QuizItemType } from "../../../types/Quiz"; import { useImmer } from "use-immer"; import { Button, Card, CardContent, Stack, Typography } from "@mui/material"; import Question from "./Question"; import styled, { css } from "styled-components"; import { gql, useMutation } from "@apollo/client"; -import { GET_CURRENT_USER } from "../../../common/CurrentUserProvider"; import { useNavigate } from "react-router-dom"; import { toast } from "react-toastify"; import Markdown from 'react-markdown' import GET_TRAINING_MODULES from "../../../queries/trainingQueries"; import { useIsMobile } from "../../../common/IsMobileProvider"; +import { GET_CURRENT_USER } from "../../../queries/userQueries"; const StyledDiv = styled.div` @@ -103,9 +103,12 @@ export default function QuizTaker({ module }: QuizTakerProps) { (o) => o === optionID ); - optionIndex === -1 - ? draft[itemIndex].optionIDs.push(optionID) - : draft[itemIndex].optionIDs.splice(optionIndex, 1); + if (optionIndex === -1){ + draft[itemIndex].optionIDs.push(optionID) + } else { + draft[itemIndex].optionIDs.splice(optionIndex, 1); + } + }) setQuizProgressed(true); }; diff --git a/client/src/pages/maker/training/Explainer.tsx b/client/src/pages/maker/training/Explainer.tsx index 5b928af81..861ca18e8 100644 --- a/client/src/pages/maker/training/Explainer.tsx +++ b/client/src/pages/maker/training/Explainer.tsx @@ -1,4 +1,3 @@ -import React, { useEffect, useState } from "react"; import { Divider, Paper, Stack } from "@mui/material"; import ArrowForwardIcon from "@mui/icons-material/ArrowForward"; import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'; diff --git a/client/src/pages/maker/training/TrainingPage.tsx b/client/src/pages/maker/training/TrainingPage.tsx index 18aec9191..5eb0f6a06 100644 --- a/client/src/pages/maker/training/TrainingPage.tsx +++ b/client/src/pages/maker/training/TrainingPage.tsx @@ -1,7 +1,7 @@ -import React, { useState } from "react"; +import { useState } from "react"; import Page from "../../Page"; import Explainer from "./Explainer"; -import { gql, useQuery } from "@apollo/client"; +import { useQuery } from "@apollo/client"; import RequestWrapper2 from "../../../common/RequestWrapper2"; import { useCurrentUser } from "../../../common/CurrentUserProvider"; import { @@ -10,16 +10,7 @@ import { } from "../../../common/TrainingModuleUtils"; import TrainingModuleRow from "../../../common/TrainingModuleRow"; import SearchBar, { searchFilter } from "../../../common/SearchBar"; - -export const GET_ALL_TRAINING_MODULES = gql` - query GetAllTrainingModules { - modules { - id - name - archived - } - } -`; +import { GET_ALL_TRAINING_MODULES } from "../../../queries/trainingQueries"; /** * This function returns a page that displays all training modules with their statuses for the current user, along with diff --git a/client/src/pages/makerspace_page/DefaultHoursBlock.tsx b/client/src/pages/makerspace_page/DefaultHoursBlock.tsx index 8ab183ad4..5833ab9e4 100644 --- a/client/src/pages/makerspace_page/DefaultHoursBlock.tsx +++ b/client/src/pages/makerspace_page/DefaultHoursBlock.tsx @@ -3,15 +3,9 @@ import { Button, Checkbox, FormControlLabel, InputAdornment, Stack, TextField, T import { MakerspaceDefaultHours } from "../../types/MakerspaceHours"; import { useState } from "react"; import WatchLaterIcon from '@mui/icons-material/WatchLater'; -import gql from "graphql-tag"; import { useMutation } from "@apollo/client"; import { toast } from "react-toastify"; - -export const UPDATE_DEFAULT_HOURS = gql` - mutation UpdateDefaultHours($hours: DefaultHoursInput!) { - updateDefaultHours(hours: $hours) - } -`; +import { UPDATE_DEFAULT_HOURS } from "../../queries/makerspaceQueries"; interface DefaultHoursBlockProps { hours: MakerspaceDefaultHours; diff --git a/client/src/pages/makerspace_page/ManageRoomTrainings.tsx b/client/src/pages/makerspace_page/ManageRoomTrainings.tsx index e10e84a76..81c22eff3 100644 --- a/client/src/pages/makerspace_page/ManageRoomTrainings.tsx +++ b/client/src/pages/makerspace_page/ManageRoomTrainings.tsx @@ -6,7 +6,7 @@ import { gql, useMutation, useQuery } from "@apollo/client"; import GET_TRAINING_MODULES from "../../queries/trainingQueries"; import RequestWrapper2 from "../../common/RequestWrapper2"; import { useState } from "react"; -import { GET_ROOM } from "./MonitorRoomPage"; +import { GET_ROOM } from "../../queries/roomQueries"; import { useParams } from "react-router-dom"; interface ManageRoomTrainingsProps { diff --git a/client/src/pages/makerspace_page/MonitorRoomPage.tsx b/client/src/pages/makerspace_page/MonitorRoomPage.tsx index 05bd023c9..17efe1423 100644 --- a/client/src/pages/makerspace_page/MonitorRoomPage.tsx +++ b/client/src/pages/makerspace_page/MonitorRoomPage.tsx @@ -1,10 +1,10 @@ import { useState } from "react"; import { Box, Button, Stack, TextField, Typography } from "@mui/material"; -import { gql, useMutation, useQuery } from "@apollo/client"; +import { useMutation, useQuery } from "@apollo/client"; import { useNavigate, useParams } from "react-router-dom"; import RequestWrapper2 from "../../common/RequestWrapper2"; import RoomMakerspaceAssociation from "./RoomMakerspaceAssociation"; -import { ARCHIVE_ROOM, DELETE_ROOM, UNARCHIVE_ROOM, UPDATE_ROOM_NAME } from "../../queries/roomQueries"; +import { ARCHIVE_ROOM, DELETE_ROOM, GET_ROOM, UNARCHIVE_ROOM, UPDATE_ROOM_NAME } from "../../queries/roomQueries"; import ArchiveIcon from "@mui/icons-material/Archive"; import PublishIcon from "@mui/icons-material/Publish"; import DeleteIcon from "@mui/icons-material/Delete"; @@ -17,45 +17,6 @@ import ManageRoomTrainings from "./ManageRoomTrainings"; import { toast } from "react-toastify"; import EquipmentBlockDialog from "./EquipmentBlockDialog"; -export const GET_ROOM = gql` - query GetRoom($id: ID!) { - room(id: $id) { - name - archived - makerspace { - id - name - } - recentSwipes { - id - user { - id - firstName - lastName - } - } - equipment { - id - name - archived - imageUrl - sopUrl - trainingModules { - id - name - } - numAvailable - numInUse - byReservationOnly - } - trainingModules { - id - name - } - } - } -`; - export interface Swipe { id: string; user: { diff --git a/client/src/pages/makerspace_page/SpecialHoursBlock.tsx b/client/src/pages/makerspace_page/SpecialHoursBlock.tsx index b04615b5d..efc284122 100644 --- a/client/src/pages/makerspace_page/SpecialHoursBlock.tsx +++ b/client/src/pages/makerspace_page/SpecialHoursBlock.tsx @@ -1,15 +1,9 @@ import { Checkbox, FormControlLabel, IconButton, InputAdornment, Stack, TextField, Typography } from "@mui/material"; import MakerspaceHours from "../../types/MakerspaceHours"; import WatchLaterIcon from '@mui/icons-material/WatchLater'; -import gql from "graphql-tag"; import { useMutation } from "@apollo/client"; import DeleteIcon from '@mui/icons-material/Delete'; - -export const DELETE_SPECIAL_HOURS = gql` - mutation DeleteSpecialHours($day: DateTime!, $makerspaceID: ID!) { - deleteSpecialHours(day: $day, makerspaceID: $makerspaceID) - } -`; +import { DELETE_SPECIAL_HOURS } from "../../queries/makerspaceQueries"; interface SpecialHoursBlockProps { hours: MakerspaceHours; diff --git a/client/src/pages/makerspace_page/equipment_pages/EquipmentInformation.tsx b/client/src/pages/makerspace_page/equipment_pages/EquipmentInformation.tsx index 5d5a32d13..4aa75d0ff 100644 --- a/client/src/pages/makerspace_page/equipment_pages/EquipmentInformation.tsx +++ b/client/src/pages/makerspace_page/equipment_pages/EquipmentInformation.tsx @@ -1,4 +1,4 @@ -import { Autocomplete, Box, Button, FormControlLabel, Stack, Switch, TextField, ToggleButton, ToggleButtonGroup, Typography } from "@mui/material"; +import { Autocomplete, Box, Button, Stack, TextField, ToggleButton, ToggleButtonGroup, Typography } from "@mui/material"; import { Equipment } from "./EditEquipmentPage"; import { ARCHIVE_EQUIPMENT, PUBLISH_EQUIPMENT, UPDATE_EQUIPMENT } from "../../../queries/equipmentQueries"; import { useMutation, useQuery } from "@apollo/client"; @@ -132,11 +132,6 @@ export default function EquipmentInformation(props: EquipmentInformationProps) { return ( } - /* Autocomplete's value prop wants undefined, not null. - * But if we give it undefined then it thinks it's an - * uncontrolled prop and throws a console error - * when we set the value. This is a MUI problem. - * @ts-ignore */ value={props.equipment.room} options={rooms} isOptionEqualToValue={(option, value) => option.id === value.id} @@ -187,7 +182,7 @@ export default function EquipmentInformation(props: EquipmentInformationProps) { setModuleIds([...moduleIDs, mID]); }} removeModule={(mID) => { - var temp = [...moduleIDs]; + const temp = [...moduleIDs]; temp.splice(temp.indexOf(mID), 1); setModuleIds(temp); }} diff --git a/client/src/pages/makerspace_page/equipment_pages/EquipmentTrainings.tsx b/client/src/pages/makerspace_page/equipment_pages/EquipmentTrainings.tsx index a84649bab..a05bdc2f3 100644 --- a/client/src/pages/makerspace_page/equipment_pages/EquipmentTrainings.tsx +++ b/client/src/pages/makerspace_page/equipment_pages/EquipmentTrainings.tsx @@ -18,7 +18,7 @@ export default function EquipmentTrainings(props: EquipmentTrainingProps) { return ( { - const possibleModules = getModulesResult.data.modules.filter((m: ObjectSummary) => ( + const possibleModules = data.modules.filter((m: ObjectSummary) => ( !props.equipmentModules.some((eMod) => m.id === eMod.id) // TODO: filter to this makerspace's + global trainings )); diff --git a/client/src/pages/makerspace_page/equipment_pages/NewEquipmentPage.tsx b/client/src/pages/makerspace_page/equipment_pages/NewEquipmentPage.tsx index a95a86ef2..68239bcd2 100644 --- a/client/src/pages/makerspace_page/equipment_pages/NewEquipmentPage.tsx +++ b/client/src/pages/makerspace_page/equipment_pages/NewEquipmentPage.tsx @@ -28,7 +28,6 @@ export default function NewEquipmentPage() { }); const [name, setName] = useState(""); - const [imageUrl, setImageUrl] = useState(""); const [sopUrl, setSopUrl] = useState(""); const [notes, setNotes] = useState(""); const [byReservation, setByReservation] = useState(false); @@ -48,7 +47,7 @@ export default function NewEquipmentPage() { name: name, roomID: room.id, moduleIDs: [], - imageUrl: imageUrl, + imageUrl: "", sopUrl: sopUrl, notes: notes, byReservationOnly: byReservation, @@ -93,11 +92,6 @@ export default function NewEquipmentPage() { renderInput={(params: any) => ( )} - /* Autocomplete's value prop wants undefined, not null. - * But if we give it undefined then it thinks it's an - * uncontrolled prop and throws a console error - * when we set the value. This is a MUI problem. - * @ts-ignore */ value={room} options={rooms} isOptionEqualToValue={(option, value) => option.id === value.id} diff --git a/client/src/pages/newreaderpage/NewReaderPage.tsx b/client/src/pages/newreaderpage/NewReaderPage.tsx index 0058fa8ac..5f31d2632 100644 --- a/client/src/pages/newreaderpage/NewReaderPage.tsx +++ b/client/src/pages/newreaderpage/NewReaderPage.tsx @@ -30,7 +30,7 @@ export default function NewReaderPage() { } function applyNetworkToJson(){ - var obj: any = {}; + const obj: any = {}; if (UseWifi){ obj["SSID"] = SSID; obj["Password"] = Password; @@ -45,7 +45,7 @@ export default function NewReaderPage() { setCert("Failed to pair (no certs)"); return; } - var obj: any = {}; + const obj: any = {}; obj["Server"] = resp.data.pairReader.siteName; obj["Key"] = resp.data.pairReader.readerKey; diff --git a/client/src/pages/signage/AnnouncementsDisplay.tsx b/client/src/pages/signage/AnnouncementsDisplay.tsx index e63bd9be5..10d5229a1 100644 --- a/client/src/pages/signage/AnnouncementsDisplay.tsx +++ b/client/src/pages/signage/AnnouncementsDisplay.tsx @@ -12,8 +12,8 @@ const StyledQRCode = styled.img` padding: 10px; `; -var listLength = 0; -var index = 0; +let listLength = 0; +let index = 0; export default function AnnouncementsDisplay() { @@ -32,7 +32,7 @@ export default function AnnouncementsDisplay() { useEffect(() => { const timer = setInterval(() => { setProgress((oldProgress) => { - var newProgress = oldProgress === 100 ? 0 : Math.min(oldProgress + 1, 100); + const newProgress = oldProgress === 100 ? 0 : Math.min(oldProgress + 1, 100); if (newProgress < oldProgress) { handleNextAnnouncement(); diff --git a/client/src/pages/signage/EventsDisplay.tsx b/client/src/pages/signage/EventsDisplay.tsx index 62839bfdd..7f8bf9405 100644 --- a/client/src/pages/signage/EventsDisplay.tsx +++ b/client/src/pages/signage/EventsDisplay.tsx @@ -8,8 +8,8 @@ import { format } from "date-fns"; import QRCode from "react-qr-code"; -var listLength = 0; -var index = 0; +let listLength = 0; +let index = 0; export default function EventsDisplay() { @@ -28,7 +28,7 @@ export default function EventsDisplay() { useEffect(() => { const timer = setInterval(() => { setProgress((oldProgress) => { - var newProgress = oldProgress === 100 ? 0 : Math.min(oldProgress + 1, 100); + const newProgress = oldProgress === 100 ? 0 : Math.min(oldProgress + 1, 100); if (newProgress < oldProgress) { handleNextEvent(); @@ -78,7 +78,7 @@ export default function EventsDisplay() { return ( - 1) || (false && events.length === 1)} appear={false}> + 1) || (events.length === 1)} appear={false}> { eventGraphics.slice(index, index + 1) @@ -90,4 +90,4 @@ export default function EventsDisplay() { ); }} /> ); -}; \ No newline at end of file +} \ No newline at end of file diff --git a/client/src/pages/signage/HoursDisplay.tsx b/client/src/pages/signage/HoursDisplay.tsx index 7aaf2dacf..4e31b9661 100644 --- a/client/src/pages/signage/HoursDisplay.tsx +++ b/client/src/pages/signage/HoursDisplay.tsx @@ -23,7 +23,7 @@ export default function HoursDisplay() { }) useEffect(() => { - var timer = setInterval(() => setDate(new Date()), 1000) + const timer = setInterval(() => setDate(new Date()), 1000) return () => { clearInterval(timer); diff --git a/client/src/pages/site-settings/CreateCustomUrlModal.tsx b/client/src/pages/site-settings/CreateCustomUrlModal.tsx index 8305601c4..268ac8ef9 100644 --- a/client/src/pages/site-settings/CreateCustomUrlModal.tsx +++ b/client/src/pages/site-settings/CreateCustomUrlModal.tsx @@ -1,8 +1,7 @@ -import { Button, Link, Stack, TextField, Typography } from "@mui/material"; +import { Button, Stack, TextField, Typography } from "@mui/material"; import PrettyModal from "../../common/PrettyModal"; import AddIcon from '@mui/icons-material/Add'; import { useMutation } from "@apollo/client"; -import gql from "graphql-tag"; import { useState } from "react"; import { CREATE_CUSTOM_URL } from "../../queries/customUrlQueries"; import { toast } from "react-toastify"; diff --git a/client/src/pages/site-settings/DeleteCustomUrlModal.tsx b/client/src/pages/site-settings/DeleteCustomUrlModal.tsx index 6c6537a2a..ccca18a3f 100644 --- a/client/src/pages/site-settings/DeleteCustomUrlModal.tsx +++ b/client/src/pages/site-settings/DeleteCustomUrlModal.tsx @@ -1,9 +1,7 @@ -import { Button, Card, Stack, TextField, Typography } from "@mui/material"; +import { Button, Stack, Typography } from "@mui/material"; import PrettyModal from "../../common/PrettyModal"; -import { useState } from "react"; import DeleteIcon from '@mui/icons-material/Delete'; import CloseIcon from '@mui/icons-material/Close'; -import gql from "graphql-tag"; import { useMutation } from "@apollo/client"; import { useIsMobile } from "../../common/IsMobileProvider"; import { DELETE_CUSTOM_URL } from "../../queries/customUrlQueries.js"; diff --git a/client/src/pages/site-settings/SiteSettingsPage.tsx b/client/src/pages/site-settings/SiteSettingsPage.tsx index 91acbaf51..849081701 100644 --- a/client/src/pages/site-settings/SiteSettingsPage.tsx +++ b/client/src/pages/site-settings/SiteSettingsPage.tsx @@ -1,6 +1,5 @@ -import { useMutation, useQuery } from "@apollo/client"; +import { useQuery } from "@apollo/client"; import { Button, Card, Grid, Stack, Typography, Link } from "@mui/material"; -import gql from "graphql-tag"; import { GET_MAKERSPACES } from "../../queries/makerspaceQueries"; import RequestWrapper2 from "../../common/RequestWrapper2"; import DeleteIcon from '@mui/icons-material/Delete'; diff --git a/client/src/queries/makerspaceQueries.ts b/client/src/queries/makerspaceQueries.ts index 47a2d8428..1c3b05784 100644 --- a/client/src/queries/makerspaceQueries.ts +++ b/client/src/queries/makerspaceQueries.ts @@ -241,4 +241,16 @@ export const REMOVE_TRAINING_FROM_MAKERSPACE = gql` id } } +`; + +export const UPDATE_DEFAULT_HOURS = gql` + mutation UpdateDefaultHours($hours: DefaultHoursInput!) { + updateDefaultHours(hours: $hours) + } +`; + +export const DELETE_SPECIAL_HOURS = gql` + mutation DeleteSpecialHours($day: DateTime!, $makerspaceID: ID!) { + deleteSpecialHours(day: $day, makerspaceID: $makerspaceID) + } `; \ No newline at end of file diff --git a/client/src/queries/roomQueries.ts b/client/src/queries/roomQueries.ts index e54e53ad9..c332aeb93 100644 --- a/client/src/queries/roomQueries.ts +++ b/client/src/queries/roomQueries.ts @@ -49,4 +49,43 @@ export const UPDATE_ROOM_NAME = gql` } `; +export const GET_ROOM = gql` + query GetRoom($id: ID!) { + room(id: $id) { + name + archived + makerspace { + id + name + } + recentSwipes { + id + user { + id + firstName + lastName + } + } + equipment { + id + name + archived + imageUrl + sopUrl + trainingModules { + id + name + } + numAvailable + numInUse + byReservationOnly + } + trainingModules { + id + name + } + } + } +`; + export default GET_ROOMS; diff --git a/client/src/queries/trainingQueries.ts b/client/src/queries/trainingQueries.ts index fa5f5be51..76e4c3c38 100644 --- a/client/src/queries/trainingQueries.ts +++ b/client/src/queries/trainingQueries.ts @@ -122,4 +122,14 @@ export const GET_ACCESS_PROGRESSES = gql` } `; +export const GET_ALL_TRAINING_MODULES = gql` + query GetAllTrainingModules { + modules { + id + name + archived + } + } +`; + export default GET_TRAINING_MODULES; \ No newline at end of file diff --git a/client/src/queries/userQueries.ts b/client/src/queries/userQueries.ts index 31f9a37b8..b285fa4cf 100644 --- a/client/src/queries/userQueries.ts +++ b/client/src/queries/userQueries.ts @@ -206,4 +206,42 @@ export const UPDATE_STUDENT_PROFILE = gql` `; +export const GET_CURRENT_USER = gql` + query GetCurrentUser { + currentUser { + id + ritUsername + firstName + lastName + setupComplete + archived + admin + holds { + removeDate + } + passedModules { + moduleID + moduleName + passedDate + } + accessChecks { + equipmentID + approved + } + cardTagID + trainingHolds { + moduleID + expires + } + manager + staff + trainer + currencyAccount{ + id + balance + } + } + } +`; + export default GET_USERS;