diff --git a/src/components/Dashboard/ProjectEditor.gql b/src/components/Dashboard/ProjectEditor.gql index 56c0a52..68f3017 100644 --- a/src/components/Dashboard/ProjectEditor.gql +++ b/src/components/Dashboard/ProjectEditor.gql @@ -8,6 +8,7 @@ fragment ProjectEditor on LabsProject { issueUrl repositoryId affinePartnerId + attendanceTracking affinePartner { partnerCode } diff --git a/src/components/Dashboard/ProjectEditor.js b/src/components/Dashboard/ProjectEditor.js index 05160a1..ef7935a 100644 --- a/src/components/Dashboard/ProjectEditor.js +++ b/src/components/Dashboard/ProjectEditor.js @@ -22,6 +22,7 @@ import { useToasts } from '@codeday/topo/utils'; import { useFetcher } from '../../dashboardFetch'; import SelectTrack from './SelectTrack'; import SelectProjectStatus from './SelectProjectStatus'; +import SelectAttendanceTracking from './SelectAttendanceTracking'; import { EditProject, CreateProject } from './ProjectEditor.gql'; import TagPicker from './TagPicker'; @@ -48,6 +49,7 @@ export default function ProjectEditor({ tags, project: originalProject, limited, deliverables: project.deliverables || "", issueUrl: project.issueUrl || null, repositoryId: repositories ? (project.repositoryId || null) : undefined, + attendanceTracking: project.attendanceTracking || 'SLACK_HUDDLE', tags: (project.tags || []).map(({ id }) => id), ...(limited ? {} : { status: project.status, @@ -68,7 +70,7 @@ export default function ProjectEditor({ tags, project: originalProject, limited, return ( + + Attendance Tracking: + setProject(['attendanceTracking', e.target.value])} + /> + + + If your team doesn't meet over Slack, turn attendance tracking off so students aren't + falsely flagged as absent. + + {project.affinePartner?.partnerCode && ( Only For Partner: @@ -186,32 +201,43 @@ export default function ProjectEditor({ tags, project: originalProject, limited, disabled={project.status === 'MATCHED' && limited} /> - {!(project.status === 'MATCHED' && limited) && ( - + + {project.status === 'MATCHED' && limited ? ( + ) : ( + <> + - {limited && ['DRAFT', 'PROPOSED'].includes(project.status) && ( - - - - )} - - )} + {limited && ['DRAFT', 'PROPOSED'].includes(project.status) && ( + + + + )} + + )} + {tagInfo.filter((t) => !!t.trainingLink).length > 0 && ( Onboarding Week diff --git a/src/components/Dashboard/SelectAttendanceTracking.js b/src/components/Dashboard/SelectAttendanceTracking.js new file mode 100644 index 0000000..790a14b --- /dev/null +++ b/src/components/Dashboard/SelectAttendanceTracking.js @@ -0,0 +1,18 @@ +import { Select, Box } from '@codeday/topo/Atom'; + +const options = { + SLACK_HUDDLE: 'Track via Slack Huddles', + NOT_TRACKED: "We don't meet on Slack -- don't track attendance", +}; + +export default function SelectAttendanceTracking({ attendanceTracking, onChange, ...props }) { + return ( + + + + ); +}