Skip to content

Commit ed48908

Browse files
authored
Merge pull request #65 from coder13/copilot/fmc-showing-like-mbld
fix: FMC attempt activities appear on personal schedule for registered competitors
2 parents a475d4c + b46049c commit ed48908

3 files changed

Lines changed: 71 additions & 12 deletions

File tree

src/containers/PersonalSchedule/Assignments.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@ import { useTranslation } from 'react-i18next';
44
import { useCollapse } from '@/hooks/UseCollapse';
55
import { useNow } from '@/hooks/useNow/useNow';
66
import { parseActivityCodeFlexible } from '@/lib/activityCodes';
7+
import { isOfficialEventId } from '@/lib/events';
78
import { isActivityWithRoomOrParent } from '@/lib/typeguards';
89
import { byDate, roundTime } from '@/lib/utils';
910
import { getRoomData, hasMultipleScheduleLocations } from '../../lib/activities';
1011
import { ExtraAssignment } from './PersonalExtraAssignment';
1112
import { PersonalNormalAssignment } from './PersonalNormalAssignment';
12-
import { getGroupedAssignmentsByDate } from './utils';
13+
import { formatBriefActivityName, getGroupedAssignmentsByDate } from './utils';
1314

1415
export interface AssignmentsProps {
1516
wcif: Competition;
@@ -126,12 +127,17 @@ export function Assignments({ wcif, person, showStationNumber }: AssignmentsProp
126127
? activity.parent?.room
127128
: undefined;
128129
if (assignment.type === 'extra') {
130+
const parsed = parseActivityCodeFlexible(activity.activityCode);
131+
const activityName = isOfficialEventId(parsed.eventId)
132+
? formatBriefActivityName(activity)
133+
: undefined;
129134
return (
130135
<ExtraAssignment
131136
key={`${date}-${roundedStartTime.toLocaleString()}-${
132137
assignment.assignmentCode
133138
}`}
134139
assignment={assignment}
140+
activityName={activityName}
135141
isOver={isOver}
136142
isCurrent={isCurrent}
137143
startTime={roundedStartTime}

src/containers/PersonalSchedule/PersonalExtraAssignment.tsx

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1+
import { AssignmentCode } from '@wca/helpers';
12
import classNames from 'classnames';
3+
import { AssignmentLabel } from '@/components';
24
import { BaseAssignmentPill } from '@/components/Pill';
35
import { worldsAssignmentMap } from './constants';
46

57
export interface ExtraAssignmentProps {
68
assignment: {
79
assignmentCode: string;
810
};
11+
activityName?: string;
912
isOver: boolean;
1013
isCurrent: boolean;
1114
startTime: Date;
@@ -19,6 +22,7 @@ export interface ExtraAssignmentProps {
1922

2023
export const ExtraAssignment = ({
2124
assignment,
25+
activityName,
2226
isOver,
2327
isCurrent,
2428
startTime,
@@ -46,11 +50,22 @@ export const ExtraAssignment = ({
4650
'bg-op': isCurrent,
4751
},
4852
)}>
49-
<td colSpan={2} className="py-2 text-center">
50-
{formattedStartTime} - {formattedEndTime}
51-
</td>
53+
{activityName ? (
54+
<>
55+
<td className="py-2 text-center">{activityName}</td>
56+
<td className="py-2 text-center min-w-[5em]">{formattedStartTime}</td>
57+
</>
58+
) : (
59+
<td colSpan={2} className="py-2 text-center">
60+
{formattedStartTime} - {formattedEndTime}
61+
</td>
62+
)}
5263
<td colSpan={1} className="py-2 text-center">
53-
{worldsAssignmentMap[assignment.assignmentCode] || assignment.assignmentCode}
64+
{worldsAssignmentMap[assignment.assignmentCode] ? (
65+
worldsAssignmentMap[assignment.assignmentCode]
66+
) : (
67+
<AssignmentLabel assignmentCode={assignment.assignmentCode as AssignmentCode} />
68+
)}
5469
</td>
5570
<td></td>
5671
{room ? (

src/containers/PersonalSchedule/utils.ts

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,21 @@ export const getNormalAssignments = (wcif: Competition, person: Person) => {
1717
...assignment,
1818
activity: allActivities.find(({ id }) => id === assignment.activityId),
1919
}))
20-
.filter(
21-
(assignment) =>
22-
!(
23-
assignment.activity?.activityCode === 'other-multi' &&
24-
assignment.assignmentCode === 'competitor'
25-
),
26-
)
20+
.filter((assignment) => {
21+
if (
22+
assignment.activity?.activityCode === 'other-multi' &&
23+
assignment.assignmentCode === 'competitor'
24+
) {
25+
return false;
26+
}
27+
if (assignment.assignmentCode === 'competitor') {
28+
const parsed = parseActivityCodeFlexible(assignment.activity?.activityCode || '');
29+
if (parsed.eventId === '333fm' && parsed.attemptNumber !== null) {
30+
return false;
31+
}
32+
}
33+
return true;
34+
})
2735
.sort((a, b) => byDate(a.activity, b.activity))
2836
: [];
2937

@@ -85,15 +93,45 @@ const getCubeSubmissionAssignments = (wcif: Competition, person: Person) => {
8593
);
8694
};
8795

96+
const getFmcAttemptAssignments = (wcif: Competition, person: Person) => {
97+
const allActivities = getAllActivities(wcif);
98+
99+
if (!person.registration?.eventIds.includes('333fm')) {
100+
return [];
101+
}
102+
103+
const fmcAttemptActivities = allActivities.filter((activity) => {
104+
const parsed = parseActivityCodeFlexible(activity.activityCode);
105+
return parsed.eventId === '333fm' && parsed.attemptNumber !== null;
106+
});
107+
108+
return fmcAttemptActivities.map(
109+
(
110+
activity,
111+
): Assignment & {
112+
type: 'extra';
113+
activity: Activity;
114+
} => ({
115+
type: 'extra',
116+
assignmentCode: 'competitor',
117+
activityId: activity.id,
118+
stationNumber: null,
119+
activity,
120+
}),
121+
);
122+
};
123+
88124
export const getAllAssignments = (wcif: Competition, person: Person) => {
89125
const normalAssignments = getNormalAssignments(wcif, person);
90126
const extraAssignments = getExtraAssignments(person);
91127
const mbldCubeSubmissionAssignments = getCubeSubmissionAssignments(wcif, person);
128+
const fmcAttemptAssignments = getFmcAttemptAssignments(wcif, person);
92129

93130
const allAssignments = [
94131
...normalAssignments,
95132
...extraAssignments,
96133
...mbldCubeSubmissionAssignments,
134+
...fmcAttemptAssignments,
97135
].sort((a, b) => byDate(a.activity, b.activity));
98136

99137
return allAssignments;

0 commit comments

Comments
 (0)