diff --git a/my-app/src/presenters/PrerequisitePresenter.jsx b/my-app/src/presenters/PrerequisitePresenter.jsx index 427abc4..be515f0 100644 --- a/my-app/src/presenters/PrerequisitePresenter.jsx +++ b/my-app/src/presenters/PrerequisitePresenter.jsx @@ -489,7 +489,6 @@ export const PrerequisitePresenter = observer((props) => { courses_taken.push(local[i]?.id) } } - //console.log(local); let eligible = generateTree(courses_taken, copy); if (eligible) { root["style"]["backgroundColor"] = "lightgreen"; diff --git a/my-app/src/views/Components/CoursePagePopup.jsx b/my-app/src/views/Components/CoursePagePopup.jsx index 8ec390c..0619866 100644 --- a/my-app/src/views/Components/CoursePagePopup.jsx +++ b/my-app/src/views/Components/CoursePagePopup.jsx @@ -2,6 +2,9 @@ import React, { useEffect, useRef, useState } from 'react'; import RatingComponent from "./RatingComponent.jsx"; import { model } from "../../model.js"; +/** + * Handles the popup for a specific course page. + */ function CoursePagePopup({ favouriteCourses, diff --git a/my-app/src/views/Components/FavouriteDropdown.jsx b/my-app/src/views/Components/FavouriteDropdown.jsx index d594546..805f5e0 100644 --- a/my-app/src/views/Components/FavouriteDropdown.jsx +++ b/my-app/src/views/Components/FavouriteDropdown.jsx @@ -1,6 +1,9 @@ import React, { useState } from 'react'; import { observer } from "mobx-react-lite"; +/** + * Shows the dropdown menu to see the favourite flagged courses. + */ const FavouritesDropdown = observer((props) => { const [copied, setCopied] = useState(false); diff --git a/my-app/src/views/Components/RatingComponent.jsx b/my-app/src/views/Components/RatingComponent.jsx index c3c093c..2340561 100644 --- a/my-app/src/views/Components/RatingComponent.jsx +++ b/my-app/src/views/Components/RatingComponent.jsx @@ -1,6 +1,8 @@ import React from 'react'; import StarComponent from "./StarComponent.jsx"; - +/** + * Component that handles reviews in the form of stars. StarComponent is used for the actual stars. + */ const RatingComponent = ({ value = 0, onChange, readOnly = false, className = "" }) => { const handleRating = (starIndex, isLeftHalf) => { if (readOnly) return; diff --git a/my-app/src/views/Components/SideBarComponents/ButtonGroupField.jsx b/my-app/src/views/Components/SideBarComponents/ButtonGroupField.jsx index b1fb75a..9be97c9 100644 --- a/my-app/src/views/Components/SideBarComponents/ButtonGroupField.jsx +++ b/my-app/src/views/Components/SideBarComponents/ButtonGroupField.jsx @@ -1,6 +1,12 @@ import { useEffect, useState } from "react"; import ToolTip from './ToolTip'; +/** + * The ButtonGroupField is used as a selector for the period. + * Used by the SidebarView. + * @param {*} props + * @returns + */ export default function ButtonGroupField(props) { const [activeIndex, setActiveIndex] = useState(0); diff --git a/my-app/src/views/Components/SideBarComponents/CollapsibleCheckboxes.jsx b/my-app/src/views/Components/SideBarComponents/CollapsibleCheckboxes.jsx index 674453c..2cc7aee 100644 --- a/my-app/src/views/Components/SideBarComponents/CollapsibleCheckboxes.jsx +++ b/my-app/src/views/Components/SideBarComponents/CollapsibleCheckboxes.jsx @@ -2,6 +2,11 @@ import React, { useState, useRef } from "react"; import FilterEnableCheckbox from "./FilterEnableCheckbox"; import Tooltip from "./ToolTip"; +/** + * Used by the SidebarView for filtering things with checkboxes. + * @param {*} props + * @returns + */ const CollapsibleCheckboxes = (props) => { const [expanded, setExpanded] = useState([]); const [filterEnabled, setFilterEnabled] = useState(props.filterEnable); diff --git a/my-app/src/views/Components/SideBarComponents/CourseTranscriptList.jsx b/my-app/src/views/Components/SideBarComponents/CourseTranscriptList.jsx index b86bea3..0fa1549 100644 --- a/my-app/src/views/Components/SideBarComponents/CourseTranscriptList.jsx +++ b/my-app/src/views/Components/SideBarComponents/CourseTranscriptList.jsx @@ -1,5 +1,8 @@ import { useState, forwardRef } from "react"; - +/** + * Shows a list of taken courses after uploading a transcript of records. + * Used by the SidebarView. + */ const CourseTranscriptList = forwardRef((props,ref) => { let local = []; if (localStorage.getItem("completedCourses")) diff --git a/my-app/src/views/Components/SideBarComponents/DropDownField.jsx b/my-app/src/views/Components/SideBarComponents/DropDownField.jsx index 883d8f8..f5484e4 100644 --- a/my-app/src/views/Components/SideBarComponents/DropDownField.jsx +++ b/my-app/src/views/Components/SideBarComponents/DropDownField.jsx @@ -3,6 +3,12 @@ import { useRef, useEffect } from "react"; import FilterEnableCheckbox from "./FilterEnableCheckbox"; import Tooltip from "./ToolTip"; +/** + * Used for selecting the level of a course. + * See SidebarView for more. + * @param {*} props + * @returns + */ export default function DropDownField(props) { diff --git a/my-app/src/views/Components/SideBarComponents/FilterEnableCheckbox.jsx b/my-app/src/views/Components/SideBarComponents/FilterEnableCheckbox.jsx index d211298..015208a 100644 --- a/my-app/src/views/Components/SideBarComponents/FilterEnableCheckbox.jsx +++ b/my-app/src/views/Components/SideBarComponents/FilterEnableCheckbox.jsx @@ -1,5 +1,9 @@ import React, { forwardRef } from "react"; +/** + * A basic checkbox to enable the filters. + * Used in the SidebarView. + */ const FilterEnableCheckbox = forwardRef(({ initialValue, onToggle }, ref) => { return (
diff --git a/my-app/src/views/Components/SideBarComponents/MultipleChoiceButtons.jsx b/my-app/src/views/Components/SideBarComponents/MultipleChoiceButtons.jsx index 1d2d992..dae8f75 100644 --- a/my-app/src/views/Components/SideBarComponents/MultipleChoiceButtons.jsx +++ b/my-app/src/views/Components/SideBarComponents/MultipleChoiceButtons.jsx @@ -3,6 +3,11 @@ import { useRef, useEffect } from "react"; import FilterEnableCheckbox from "./FilterEnableCheckbox"; import Tooltip from "./ToolTip"; +/** + * A multiple choice selector used to select the period in the SidebarView. + * @param {} props + * @returns + */ export default function MultipleChoiceButtons(props) { const [filterEnabled, setFilterEnabled] = useState(props.filterEnable); const [selectedItems, setSelectedItems] = useState(props.initialValues || []); diff --git a/my-app/src/views/Components/SideBarComponents/SliderField.jsx b/my-app/src/views/Components/SideBarComponents/SliderField.jsx index d2a0965..82ccd65 100644 --- a/my-app/src/views/Components/SideBarComponents/SliderField.jsx +++ b/my-app/src/views/Components/SideBarComponents/SliderField.jsx @@ -2,6 +2,12 @@ import React, { useState, useRef, useEffect, useMemo } from "react"; import FilterEnableCheckbox from "./FilterEnableCheckbox"; import Tooltip from "./ToolTip"; + +/** + * A slider component used to select the credits in the SidebarView. + * @param {} props + * @returns + */ export default function UploadField(props) { let paramFieldType = "slider"; diff --git a/my-app/src/views/Components/SideBarComponents/ToggleField.jsx b/my-app/src/views/Components/SideBarComponents/ToggleField.jsx index e9e4f0d..78709a0 100644 --- a/my-app/src/views/Components/SideBarComponents/ToggleField.jsx +++ b/my-app/src/views/Components/SideBarComponents/ToggleField.jsx @@ -2,6 +2,11 @@ import React, { useState, useRef } from "react"; import FilterEnableCheckbox from "./FilterEnableCheckbox"; import Tooltip from "./ToolTip"; +/** + * Basic Toggle field used in the SidebarView to select courses in English or Swedish. + * @param {} props + * @returns + */ export default function ToggleField(props) { let paramFieldType = "toggle"; diff --git a/my-app/src/views/Components/SideBarComponents/UploadField.jsx b/my-app/src/views/Components/SideBarComponents/UploadField.jsx index 0fd0634..ee91630 100644 --- a/my-app/src/views/Components/SideBarComponents/UploadField.jsx +++ b/my-app/src/views/Components/SideBarComponents/UploadField.jsx @@ -6,6 +6,11 @@ import ButtonGroupField from './ButtonGroupField'; import ToolTip from './ToolTip'; import UploadGif from "../../../assets/upload.gif"; + +/** + * Shows a field to upload a file with. Used in SearchbarView. + * @param {*} props + */ export default function UploadField(props) { const [isDragging, setIsDragging] = useState(false); diff --git a/my-app/src/views/Components/StarComponent.jsx b/my-app/src/views/Components/StarComponent.jsx index bf4b591..33fb0ab 100644 --- a/my-app/src/views/Components/StarComponent.jsx +++ b/my-app/src/views/Components/StarComponent.jsx @@ -1,5 +1,8 @@ import React from 'react'; +/** + * Allows to rate things from 0 to 5 stars. + */ const StarComponent = ({ index, rating, onRatingChange, onHover, readOnly = false }) => { const handleLeftClick = () => { if (!readOnly) onRatingChange(index, true); diff --git a/my-app/src/views/ListView.jsx b/my-app/src/views/ListView.jsx index 46ee524..33a1868 100644 --- a/my-app/src/views/ListView.jsx +++ b/my-app/src/views/ListView.jsx @@ -3,7 +3,6 @@ import { DotPulse, Quantum } from 'ldrs/react'; import 'ldrs/react/Quantum.css'; import InfiniteScroll from 'react-infinite-scroll-component'; -// Add this helper function at the top of your component const highlightText = (text, query) => { if (!query || !text) return text; @@ -14,6 +13,11 @@ const highlightText = (text, query) => { return text.replace(regex, '$1'); }; +/** + * The view displays the courses that match a certain query, filtering etc. + * @param {*} props + * @returns + */ function ListView(props) { const [displayedCourses, setDisplayedCourses] = useState([]); const [hasMore, setHasMore] = useState(true); diff --git a/my-app/src/views/PrerequisiteTreeView.jsx b/my-app/src/views/PrerequisiteTreeView.jsx index cd6f626..4428773 100644 --- a/my-app/src/views/PrerequisiteTreeView.jsx +++ b/my-app/src/views/PrerequisiteTreeView.jsx @@ -2,6 +2,10 @@ import React from "react"; import ReactFlow, { MiniMap, Controls, Background } from "reactflow"; import "reactflow/dist/style.css"; +/** + * Displays a ReactFlow window, that is used in the context of a prerequisite tree. + * @param {} props + */ // redundent file functionality exist in PrerequisitePresenter.jsx diff --git a/my-app/src/views/ReviewView.jsx b/my-app/src/views/ReviewView.jsx index 45539d4..2e5585b 100644 --- a/my-app/src/views/ReviewView.jsx +++ b/my-app/src/views/ReviewView.jsx @@ -1,6 +1,11 @@ import React, { useState, useRef, useEffect } from "react"; import RatingComponent from "../views/Components/RatingComponent.jsx"; +/** + * Displays the user an interface to give a review for a specified course. Invoked by the ReviewPresenter. + * @param {*} props + * @returns + */ export function ReviewView(props) { const grades = ["A", "B", "C", "D", "E", "F"]; const difficulties = ["Very Easy", "Easy", "Medium", "Hard", "Very Hard"]; diff --git a/my-app/src/views/SearchbarView.jsx b/my-app/src/views/SearchbarView.jsx index 84e11f7..adeb5f4 100644 --- a/my-app/src/views/SearchbarView.jsx +++ b/my-app/src/views/SearchbarView.jsx @@ -3,6 +3,10 @@ import { getAuth, signInWithPopup, signOut, GoogleAuthProvider } from "firebase/ import project_logo from "../assets/project_icon.png"; import FavouritesDropdown from "./Components/FavouriteDropdown.jsx"; +/** + * Displays a searchbar, which accepts user input, e.g. a course id. + * @param {*} props + */ export function SearchbarView(props) { // const [searchQuery, setSearchQuery] = useState(""); const [user, setUser] = useState(null); diff --git a/my-app/src/views/SidebarView.jsx b/my-app/src/views/SidebarView.jsx index d453887..39a85ee 100644 --- a/my-app/src/views/SidebarView.jsx +++ b/my-app/src/views/SidebarView.jsx @@ -11,8 +11,7 @@ import MultipleChoiceButtons from './Components/SideBarComponents/MultipleChoice /** * Represents the sidebar and consists of an upload field, dropdown field, toggle fields, sliders, etc. * It shows the filters and settings for the search. The view is invoked by the SidebarPresenter. - * @param {*} props - * @returns + * @param {*} props */ function SidebarView(props) { return (