From fa0c502467f18a0ce23a5e7ba8a54dba75d2392b Mon Sep 17 00:00:00 2001 From: Tiago Ribeiro Date: Mon, 28 Oct 2024 14:40:26 +0000 Subject: [PATCH] Cleared of the stuff the EnCoach team wanted changed --- src/components/Diagnostic.tsx | 2 +- src/components/High/Layout.tsx | 15 +++- src/components/Medium/StatGridItem.tsx | 2 +- src/components/MobileMenu.tsx | 10 --- src/components/Sidebar.tsx | 68 +++++++++---------- src/dashboards/AssignmentView.tsx | 2 +- src/dashboards/Student.tsx | 2 +- src/hooks/useEntityPermissions.tsx | 7 +- src/interfaces/entity.ts | 4 +- src/pages/(admin)/BatchCreateUser.tsx | 2 +- src/pages/(admin)/ExamLoader.tsx | 2 +- src/pages/(admin)/Lists/ExamList.tsx | 36 ++++++++-- src/pages/(admin)/Lists/index.tsx | 34 ++++------ src/pages/(admin)/UserCreator.tsx | 2 +- src/pages/(generation)/LevelGeneration.tsx | 2 +- .../(generation)/ListeningGeneration.tsx | 2 +- src/pages/(generation)/ReadingGeneration.tsx | 2 +- src/pages/(generation)/SpeakingGeneration.tsx | 2 +- src/pages/(generation)/WritingGeneration.tsx | 2 +- src/pages/_app.tsx | 2 +- src/pages/assignments/[id].tsx | 2 +- src/pages/assignments/creator/[id].tsx | 2 +- src/pages/assignments/index.tsx | 2 +- src/pages/classrooms/[id].tsx | 12 ++-- src/pages/classrooms/index.tsx | 2 +- src/pages/dashboard/student.tsx | 2 +- src/pages/dashboard/teacher.tsx | 8 ++- src/pages/entities/[id]/roles/[role].tsx | 9 ++- src/pages/exercises.tsx | 4 +- src/pages/settings.tsx | 2 +- src/pages/training/[id]/index.tsx | 2 +- src/resources/entityPermissions.ts | 17 ++++- src/utils/permissions.ts | 7 ++ src/utils/search.ts | 2 +- 34 files changed, 166 insertions(+), 107 deletions(-) diff --git a/src/components/Diagnostic.tsx b/src/components/Diagnostic.tsx index b38215d6..142436a0 100644 --- a/src/components/Diagnostic.tsx +++ b/src/components/Diagnostic.tsx @@ -43,7 +43,7 @@ export default function Diagnostic({onFinish}: Props) { if (exams.every((x) => !!x)) { setExams(exams.map((x) => x!)); setSelectedModules(exams.map((x) => x!.module)); - router.push("/exercises"); + router.push("/exam"); } }); }; diff --git a/src/components/High/Layout.tsx b/src/components/High/Layout.tsx index b4a3dbc6..fefe4fb6 100644 --- a/src/components/High/Layout.tsx +++ b/src/components/High/Layout.tsx @@ -1,3 +1,4 @@ +import { EntityWithRoles } from "@/interfaces/entity"; import {User} from "@/interfaces/user"; import clsx from "clsx"; import {useRouter} from "next/router"; @@ -7,6 +8,7 @@ import Sidebar from "../Sidebar"; interface Props { user: User; + entities?: EntityWithRoles[] children: React.ReactNode; className?: string; navDisabled?: boolean; @@ -16,7 +18,17 @@ interface Props { onFocusLayerMouseEnter?: () => void; } -export default function Layout({user, children, className, bgColor="bg-white", hideSidebar, navDisabled = false, focusMode = false, onFocusLayerMouseEnter}: Props) { +export default function Layout({ + user, + entities = [], + children, + className, + bgColor="bg-white", + hideSidebar, + navDisabled = false, + focusMode = false, + onFocusLayerMouseEnter +}: Props) { const router = useRouter(); return ( @@ -40,6 +52,7 @@ export default function Layout({user, children, className, bgColor="bg-white", h onFocusLayerMouseEnter={onFocusLayerMouseEnter} className="-md:hidden" user={user} + entities={entities} /> )}
= ({ .sort(sortByModule) .map((x) => x!.module), ); - router.push("/exercises"); + router.push("/exam"); } }); } diff --git a/src/components/MobileMenu.tsx b/src/components/MobileMenu.tsx index df55e6d6..0d3a9ffa 100644 --- a/src/components/MobileMenu.tsx +++ b/src/components/MobileMenu.tsx @@ -105,16 +105,6 @@ export default function MobileMenu({ > Exams - - Exercises - )} void; className?: string; user: User; + entities?: EntityWithRoles[] } interface NavProps { @@ -76,7 +76,15 @@ const Nav = ({ Icon, label, path, keyPath, disabled = false, isMinimized = false ); }; -export default function Sidebar({ path, navDisabled = false, focusMode = false, user, onFocusLayerMouseEnter, className }: Props) { +export default function Sidebar({ + path, + entities = [], + navDisabled = false, + focusMode = false, + user, + onFocusLayerMouseEnter, + className +}: Props) { const router = useRouter(); const [isMinimized, toggleMinimize] = usePreferencesStore((state) => [state.isSidebarMinimized, state.toggleSidebarMinimized]); @@ -84,6 +92,10 @@ export default function Sidebar({ path, navDisabled = false, focusMode = false, const { totalAssignedTickets } = useTicketsListener(user.id); const { permissions } = usePermissions(user.id); + const entitiesAllowGeneration = useAllowedEntitiesSomePermissions(user, entities, [ + "generate_reading", "generate_listening", "generate_writing", "generate_speaking", "generate_level" + ]) + const logout = async () => { axios.post("/api/logout").finally(() => { setTimeout(() => router.reload(), 500); @@ -104,9 +116,6 @@ export default function Sidebar({ path, navDisabled = false, focusMode = false, {checkAccess(user, ["student", "teacher", "developer"], permissions, "viewExams") && (