Classes display correctly, still need to work on lectures:
This commit is contained in:
@ -77,28 +77,22 @@ interface CourseCardProps {
|
||||
export const CourseCard = ({ onCardClick, course, id, isSelected }: CourseCardProps) => {
|
||||
const classes = useStyles();
|
||||
|
||||
const { addChoosenGroup, courses, choosenCourses } = useContext(coursesContext)!;
|
||||
const { addGroup } = useContext(coursesContext)!;
|
||||
|
||||
const choosenCoursesIds = choosenCourses.map(({ id }) => id);
|
||||
|
||||
const choosenCoursesWithGroups = courses.filter(({ id }) => choosenCoursesIds.includes(id));
|
||||
|
||||
const onGroupClick = (group: Group, id: number) => addChoosenGroup(group, id);
|
||||
console.log(`course`);
|
||||
console.log(course);
|
||||
const onGroupClick = (group: Group, id: number) => addGroup(group, id);
|
||||
|
||||
return (
|
||||
<CourseStyled onClick={onCardClick} id={id}>
|
||||
<CourseNameStyled>{course.name}</CourseNameStyled>
|
||||
<Collapse className={classes.expanded} in={isSelected} timeout="auto" unmountOnExit>
|
||||
{choosenCoursesWithGroups.map((course) => (
|
||||
<div key={id}>
|
||||
{course.groups!.map((group, index) => (
|
||||
<ClassGroupStyled key={index} onClick={() => onGroupClick(group, course.id)}>
|
||||
<p>
|
||||
{group.time} {group.room} <br></br> {group.lecturer}
|
||||
</p>
|
||||
</ClassGroupStyled>
|
||||
))}
|
||||
</div>
|
||||
{course.groups.map((group, index) => (
|
||||
<ClassGroupStyled key={index} onClick={() => onGroupClick(group, course.id)}>
|
||||
<p>
|
||||
{group.time} {group.room} <br></br> {group.lecturer}
|
||||
</p>
|
||||
</ClassGroupStyled>
|
||||
))}
|
||||
</Collapse>
|
||||
<div onClick={onCardClick} id={id}>
|
||||
|
@ -50,18 +50,18 @@ export const Dropdown = ({ clearInput, handleClearInput }: DropdownProps) => {
|
||||
//courses - choosenCourses
|
||||
const [filteredCourses, setFilteredCourses] = useState<Array<Course>>([]);
|
||||
|
||||
const { courses, choosenCourses, addToBasket } = useContext(coursesContext)!;
|
||||
const { courses, basket, addToBasket } = useContext(coursesContext)!;
|
||||
|
||||
useEffect(() => {
|
||||
const filterCourses = (input: string) => {
|
||||
const choosenCoursesNames = choosenCourses.map(({ name }) => name.trim());
|
||||
const choosenCoursesNames = basket.map(({ name }) => name.trim());
|
||||
const filteredCourses = courses.filter(
|
||||
({ name }) => name.toLowerCase().includes(input.toLowerCase()) && !choosenCoursesNames.includes(name),
|
||||
);
|
||||
setFilteredCourses(filteredCourses);
|
||||
};
|
||||
filterCourses(input);
|
||||
}, [input, open, choosenCourses]);
|
||||
}, [input, open, basket]);
|
||||
|
||||
useEffect(() => {
|
||||
if (clearInput) {
|
||||
@ -83,7 +83,7 @@ export const Dropdown = ({ clearInput, handleClearInput }: DropdownProps) => {
|
||||
const name = target.textContent;
|
||||
|
||||
//porozmawiać z Filipem, żeby odrobinę przerobił endpoint
|
||||
const course: Basket = { name: name, id: parseInt(id), lecture: null, class: null };
|
||||
const course: Basket = { name: name, id: parseInt(id), lecture: null, classes: null };
|
||||
|
||||
addToBasket(course);
|
||||
setOpen(false);
|
||||
|
@ -33,7 +33,14 @@ const RightbarTextStyled = styled.div`
|
||||
export const Rightbar = () => {
|
||||
const [selectedCardId, setSelectedCardId] = useState<string | null>(null);
|
||||
|
||||
const { choosenCourses } = useContext(coursesContext)!;
|
||||
const { courses, basket } = useContext(coursesContext)!;
|
||||
|
||||
const getBasketGroups = () => {
|
||||
const ids = basket.map(({ id }) => id);
|
||||
return courses.filter(({ id }) => ids.includes(id));
|
||||
};
|
||||
|
||||
const filteredCourses = getBasketGroups();
|
||||
|
||||
//działa clunky
|
||||
const onCardClick = (event: MouseEvent) => {
|
||||
@ -48,7 +55,7 @@ export const Rightbar = () => {
|
||||
Hubert Wrzesiński<br></br>
|
||||
Semestr zimowy 2020/2021
|
||||
</RightbarTextStyled>
|
||||
{choosenCourses.map((course, index) => (
|
||||
{filteredCourses.map((course, index) => (
|
||||
<CourseCard
|
||||
course={course}
|
||||
key={index}
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React, { useContext, useEffect, useState } from 'react';
|
||||
import { SchedulerRow } from './SchedulerRow';
|
||||
import { coursesContext } from '../contexts/CoursesProvider';
|
||||
import { Group } from '../types';
|
||||
import { Group, Basket } from '../types';
|
||||
|
||||
interface SchedulerEventsProps {
|
||||
cellTop: number;
|
||||
@ -9,7 +9,7 @@ interface SchedulerEventsProps {
|
||||
}
|
||||
|
||||
export const SchedulerEvents = ({ cellTop, cellWidth }: SchedulerEventsProps) => {
|
||||
const { choosenGroups } = useContext(coursesContext)!;
|
||||
const { basket } = useContext(coursesContext)!;
|
||||
|
||||
const [choosenGroupsMappedToEvents, setChoosenGroupsMappedToEvents] = useState<any>([]);
|
||||
|
||||
@ -26,8 +26,17 @@ export const SchedulerEvents = ({ cellTop, cellWidth }: SchedulerEventsProps) =>
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
function mapGroupTimeToEventRow(choosenGroups: Array<Group>) {
|
||||
const groupsMapped = choosenGroups.map(({ id, day, lecturer, room, time }) => ({
|
||||
function mapGroupTimeToEventRow(basket: Array<Basket>) {
|
||||
const basketGroups = basket.map(({ classes, lecture }) => ({
|
||||
...classes,
|
||||
...lecture,
|
||||
})) as Array<Group>;
|
||||
|
||||
console.log('passed basket');
|
||||
console.log(basket);
|
||||
console.log(`basketgroups`);
|
||||
console.log(basketGroups);
|
||||
const groupsMapped = basketGroups.map(({ id, day, lecturer, room, time }) => ({
|
||||
id,
|
||||
day,
|
||||
lecturer,
|
||||
@ -36,8 +45,8 @@ export const SchedulerEvents = ({ cellTop, cellWidth }: SchedulerEventsProps) =>
|
||||
}));
|
||||
setChoosenGroupsMappedToEvents(groupsMapped);
|
||||
}
|
||||
mapGroupTimeToEventRow(choosenGroups);
|
||||
}, [choosenGroups]);
|
||||
mapGroupTimeToEventRow(basket);
|
||||
}, [basket]);
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
Reference in New Issue
Block a user