From 126884d72abe935bcc3bc53236d2c7a31f588441 Mon Sep 17 00:00:00 2001 From: Timofey Obraztsov <35554964+TimTimich6@users.noreply.github.com> Date: Sat, 9 Dec 2023 05:40:10 -0500 Subject: [PATCH] Change anchor popup to button for AP prereqs (#386) * change popup to button for ap prereqs --------- Co-authored-by: Timofey Obraztsov --- site/src/component/PrereqTree/PrereqTree.tsx | 134 +++++++++---------- 1 file changed, 63 insertions(+), 71 deletions(-) diff --git a/site/src/component/PrereqTree/PrereqTree.tsx b/site/src/component/PrereqTree/PrereqTree.tsx index 68df7650..5832263f 100644 --- a/site/src/component/PrereqTree/PrereqTree.tsx +++ b/site/src/component/PrereqTree/PrereqTree.tsx @@ -1,8 +1,8 @@ -import React, { FC } from 'react'; -import './PrereqTree.scss'; -import { Grid, Popup } from 'semantic-ui-react'; +import React, { FC } from "react"; +import "./PrereqTree.scss"; +import { Grid, Popup } from "semantic-ui-react"; -import { PrerequisiteJSONNode, PrerequisiteJSON, CourseGQLData, CourseLookup } from '../../types/types'; +import { PrerequisiteJSONNode, PrerequisiteJSON, CourseGQLData, CourseLookup } from "../../types/types"; interface NodeProps { node: string; @@ -13,17 +13,25 @@ interface NodeProps { const Node: FC = (props) => { return ( -
+
- {props.label} - + !props.label.startsWith("AP ") ? ( + + {props.label} + + ) : ( + + ) } - content={props.content} basic position='top center' wide='very' /> + content={props.content} + basic + position="top center" + wide="very" + />
); -} +}; interface TreeProps { prerequisiteNames: CourseLookup; @@ -34,94 +42,83 @@ interface TreeProps { const Tree: FC = (props) => { let prerequisite = props.prerequisiteJSON; - let isValueNode = typeof prerequisite === 'string'; + let isValueNode = typeof prerequisite === "string"; // if value is a string, render leaf node if (isValueNode) { - let id = (prerequisite as string).replace(/\s+/g, ''); + let id = (prerequisite as string).replace(/\s+/g, ""); let content = prerequisite; if (props.prerequisiteNames.hasOwnProperty(id)) { content = props.prerequisiteNames[id].title; } return ( -
  • - +
  • +
  • - ) + ); } // if value is an object, render the rest of the sub tree else { return ( -
    -
    - -
    - {prerequisite.hasOwnProperty('OR') ? 'one of' : 'all of'} -
    +
    +
    + +
    {prerequisite.hasOwnProperty("OR") ? "one of" : "all of"}
    -
    -
      - {(prerequisite as PrerequisiteJSON)[Object.keys(prerequisite)[0]].map( - (child, index) => ( - - ) - )} +
      +
        + {(prerequisite as PrerequisiteJSON)[Object.keys(prerequisite)[0]].map((child, index) => ( + + ))}
    - ) + ); } -} +}; -interface PrereqProps extends CourseGQLData { -} +interface PrereqProps extends CourseGQLData {} const PrereqTree: FC = (props) => { - let hasPrereqs = props.prerequisite_tree !== ''; + let hasPrereqs = props.prerequisite_tree !== ""; let hasDependencies = Object.keys(props.prerequisite_for).length !== 0; if (props.id === undefined) return <>; else if (!hasPrereqs && !hasDependencies) return ( -
    -

    - No Dependencies or Prerequisites! -

    +
    +

    No Dependencies or Prerequisites!

    ); return (
    - +
    {/* Display dependencies */} {hasDependencies && ( <> -
      -
      - {Object.values(props.prerequisite_for).map( - (dependency, index) => ( -
    • - -
    • - ) - )} +
        +
        + {Object.values(props.prerequisite_for).map((dependency, index) => ( +
      • + +
      • + ))}
      -
      - -
      - needs -
      +
      + +
      needs
      @@ -134,16 +131,12 @@ const PrereqTree: FC = (props) => {
      } */} {/* Display the class id */} - + {/* Spawns the root of the prerequisite tree */} {hasPrereqs && ( -
      - - +
      +
      )} @@ -152,14 +145,13 @@ const PrereqTree: FC = (props) => { No Prerequisites!

      } */} -
      - {props.prerequisite_text !== '' && ( + {props.prerequisite_text !== "" && (

      @@ -171,6 +163,6 @@ const PrereqTree: FC = (props) => {

      ); -} +}; -export default PrereqTree; \ No newline at end of file +export default PrereqTree;