From f48a351c9938022cf5c5acd0327a09c241b92efb Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Wed, 26 Jul 2023 19:02:46 +0100 Subject: [PATCH] Updating personal progress from popup --- .../TeamProgress/GroupRoadmapItem.tsx | 38 ++++++----- .../TeamProgress/MemberProgressItem.tsx | 22 ++----- .../TeamProgress/MemberProgressModal.tsx | 62 +++++++++++------- src/components/TeamProgress/ProgressHint.tsx | 3 +- .../TeamProgress/TeamProgressPage.tsx | 63 +++++++++++++++---- 5 files changed, 113 insertions(+), 75 deletions(-) diff --git a/src/components/TeamProgress/GroupRoadmapItem.tsx b/src/components/TeamProgress/GroupRoadmapItem.tsx index 5bf208b6d..3e8bcd6b3 100644 --- a/src/components/TeamProgress/GroupRoadmapItem.tsx +++ b/src/components/TeamProgress/GroupRoadmapItem.tsx @@ -1,37 +1,25 @@ import { useState } from 'preact/hooks'; import type { GroupByRoadmap, TeamMember } from './TeamProgressPage'; -import { MemberProgressModal } from './MemberProgressModal'; import { getUrlParams } from '../../lib/browser'; import ExternalLinkIcon from '../../icons/external-link.svg'; import { useAuth } from '../../hooks/use-auth'; type GroupRoadmapItemProps = { roadmap: GroupByRoadmap; + onShowResourceProgress: (member: TeamMember, resourceId: string) => void; }; export function GroupRoadmapItem(props: GroupRoadmapItemProps) { + const { onShowResourceProgress } = props; const { members, resourceTitle, resourceId } = props.roadmap; + const { t: teamId } = getUrlParams(); const user = useAuth(); const [showAll, setShowAll] = useState(false); - const [detailResourceId, setDetailResourceId] = useState(null); - const [selectedMember, setSelectedMember] = useState(null); return ( <> - {detailResourceId && ( - { - setDetailResourceId(null); - setSelectedMember(null); - }} - /> - )}
@@ -59,11 +47,15 @@ export function GroupRoadmapItem(props: GroupRoadmapItemProps) { return ( {' '} - to update your progress below.

) : ( @@ -308,28 +317,29 @@ export function MemberProgressModal(props: ProgressMapProps) { } > You are looking at {member.name}'s progress.{' '} - View your progress - + .

- View your progress  - - on the roadmap page. - + View your progress. +

)} -

+

{progressPercentage}% Done @@ -338,7 +348,11 @@ export function MemberProgressModal(props: ProgressMapProps) { {memberDone} of {memberTotal} done

-
diff --git a/src/components/TeamProgress/ProgressHint.tsx b/src/components/TeamProgress/ProgressHint.tsx index ade88dc57..4128d8748 100644 --- a/src/components/TeamProgress/ProgressHint.tsx +++ b/src/components/TeamProgress/ProgressHint.tsx @@ -15,11 +15,12 @@ export function ProgressHint(props: ProgressHintProps) { useKeydown('Escape', () => { onClose(); }); + return (
diff --git a/src/components/TeamProgress/TeamProgressPage.tsx b/src/components/TeamProgress/TeamProgressPage.tsx index 424fa1d2b..185c41d4f 100644 --- a/src/components/TeamProgress/TeamProgressPage.tsx +++ b/src/components/TeamProgress/TeamProgressPage.tsx @@ -9,6 +9,7 @@ import { $currentTeam } from '../../stores/team'; import { GroupRoadmapItem } from './GroupRoadmapItem'; import { getUrlParams, setUrlParams } from '../../lib/browser'; import { useAuth } from '../../hooks/use-auth'; +import { MemberProgressModal } from './MemberProgressModal'; export type UserProgress = { resourceTitle: string; @@ -56,6 +57,11 @@ export function TeamProgressPage() { const currentTeam = useStore($currentTeam); const user = useAuth(); + const [showMemberProgress, setShowMemberProgress] = useState<{ + resourceId: string; + member: TeamMember; + }>(); + const [teamMembers, setTeamMembers] = useState([]); const [selectedGrouping, setSelectedGrouping] = useState< 'roadmap' | 'member' @@ -88,12 +94,10 @@ export function TeamProgressPage() { return; } - getTeamProgress().then( - () => { - pageProgressMessage.set(''); - setIsLoading(false); - } - ); + getTeamProgress().then(() => { + pageProgressMessage.set(''); + setIsLoading(false); + }); }, [teamId]); if (isLoading) { @@ -143,13 +147,34 @@ export function TeamProgressPage() { return (
+ {showMemberProgress && ( + { + setShowMemberProgress(undefined); + }} + onShowMyProgress={() => { + setShowMemberProgress({ + resourceId: showMemberProgress.resourceId, + member: teamMembers.find( + (member) => member.email === user?.email + )!, + }); + }} + /> + )} +
{groupingTypes.map((grouping) => (