diff --git a/components/planning/day/DailyPlanMaybeProject.tsx b/components/planning/day/DailyPlanMaybeProject.tsx new file mode 100644 index 000000000..bb2dfa93a --- /dev/null +++ b/components/planning/day/DailyPlanMaybeProject.tsx @@ -0,0 +1,71 @@ +import { Project, useProjectsContext } from "@/api/ContextProjects"; +import { addProjectDayplan } from "@/api/dayplan/add-project-dayplan"; +import { DailyPlan, DailyPlanProject } from "@/api/useDailyPlans"; +import { ButtonPlayPause } from "@/components/ui/button-play-pause"; +import { IconButton } from "@/components/ui/icon-button"; +import { flow, get, identity } from "lodash/fp"; +import { ExternalLink } from "lucide-react"; +import { FC, useEffect, useState } from "react"; + +interface DailyPlanMaybeProjectProps { + dayPlan: DailyPlan; + dailyPlanProject: DailyPlanProject; + mutateProject: (project: DailyPlanProject, refresh: boolean) => void; +} + +const DailyPlanMaybeProject: FC = ({ + dayPlan, + dailyPlanProject, + mutateProject, +}) => { + const { getProjectById } = useProjectsContext(); + const [project, setProject] = useState(); + + useEffect(() => { + flow( + identity, + get("projectId"), + getProjectById, + setProject + )(dailyPlanProject); + }, [dailyPlanProject, getProjectById]); + + const addProject = (maybe: boolean) => + addProjectDayplan({ + data: { + dayPlanId: dayPlan.id, + projectId: dailyPlanProject.projectId, + maybe, + }, + options: { + mutate: (refresh) => + mutateProject({ ...dailyPlanProject, maybe }, refresh), + }, + }); + + return ( + project && ( +
+
{project.project}
+
+ addProject(!dailyPlanProject.maybe)} + /> + + window.open(`/projects/${project.id}`, "_blank")} + > + + +
+
+ ) + ); +}; + +export default DailyPlanMaybeProject; diff --git a/components/today/DailyPlan.tsx b/components/today/DailyPlan.tsx index b525ab56b..7d734ba86 100644 --- a/components/today/DailyPlan.tsx +++ b/components/today/DailyPlan.tsx @@ -9,6 +9,7 @@ import { setProjectList } from "@/helpers/today"; import { FC, useEffect, useState } from "react"; import ShowHideSwitch from "../ui-elements/ShowHideSwitch"; import DayPlanInformation from "./DayPlanInformation"; +import DayPlanMaybeProjects from "./DayPlanMaybeProjects"; import DayPlanProjects from "./DayPlanProjects"; import ShowNoTodos from "./ShowNoTodos"; @@ -74,10 +75,9 @@ const DailyPlanComponent: FC = ({ /> {showMaybe && ( - )} diff --git a/components/today/DayPlanMaybeProjects.tsx b/components/today/DayPlanMaybeProjects.tsx new file mode 100644 index 000000000..d46dc7933 --- /dev/null +++ b/components/today/DayPlanMaybeProjects.tsx @@ -0,0 +1,23 @@ +import { DailyPlan, DailyPlanProject } from "@/api/useDailyPlans"; +import { FC } from "react"; +import DailyPlanMaybeProject from "../planning/day/DailyPlanMaybeProject"; + +interface DayPlanMaybeProjectsProps { + dayPlan: DailyPlan; + dayPlanProjects: DailyPlanProject[] | undefined; + mutateProject: (project: DailyPlanProject, refresh: boolean) => void; +} + +const DayPlanMaybeProjects: FC = ({ + dayPlan, + dayPlanProjects, + mutateProject, +}) => + dayPlanProjects?.map((p) => ( + + )); + +export default DayPlanMaybeProjects; diff --git a/docs/releases/next.md b/docs/releases/next.md index 3e3348be5..d9176051c 100644 --- a/docs/releases/next.md +++ b/docs/releases/next.md @@ -1,12 +1,6 @@ -# Symbole für Aufgaben optimieren (Version :VERSION) +# Pausierte Projekte ausschlanken (Version :VERSION) -- Die Symbole für Projekte in der Tagesaufgabenliste sind nun eindeutiger und mit Beschriftungen unterstützt. -- Die Symbole für Aufgaben in der Tages-, Besprechungs- und Projektaufgabenliste sind nun eindeutiger und mit Beschriftungen unterstützt. -- In Projekten und in Besprechungen können Aufgaben nun auch in der Aufgabenliste direkt abgeschlossen werden. - -## Fehlerbehebungen - -- In Besprechungen werden wieder die vereinbarten Aufgaben angezeigt. +- Pausierte Projekte sind ausgeschlankt, so dass sie in der täglichen Aufgabenliste besser zu unterscheiden sind von den Projekten im Fokus. ## Bekannte Fehler