Closed angadgarg25 closed 5 years ago
i would recommend creating a data
folder, which would hold a .js
file that exports a javascript object (dictionary) or list. then in the interview component, you would import that file
The data file, possibly named like interviewData.js
export default [
{
round: "1",
type: "mass_interview",
categories: [
{
title: "Overall Score",
minScore: 0,
maxScore: 5,
description: <p style={{color: "grey"}}>description here which would show up as grey. Note that you could make this an actual react component here</p>
}
]
]
An example we use for our website is here https://github.com/hack4impact/uiuc.hack4impact.org/blob/user/tiko/revamp-next/data/projectData.js and we use it here https://github.com/hack4impact/uiuc.hack4impact.org/blob/user/tiko/revamp-next/components/projects/semesterProjectList.js
As an interviewer, for the mass interview rounds, we have 4 minutes per candidate, interviewing 5 candidates in the span of 20 minutes and having 5 minutes to submit their scores. What should the interview screen look like? Should it show all the candidates in that specific interview time slot and input forms for each candidate to score them? Should there be a general text form for interviewers to take down notes (possibly a text form for each candidate)? Other ideas? maybe Links to each candidate page? Maybe show the time of that interview, just in case the interviewer is in the wrong interview page? Each interviewer, during the mass interview round, has a specific question to ask -> the interview form should allow the interviewer to put that in.
Specific implementation details:
Sections
, which represent sections in the rubric (ex: Time Commitment (7 points)
or Technical Challenge (5 points)
. look into /interview
to see sections. Each section has questions (currently all of them only have one question), which are usually just asking what score you would want to give them for that specific section. Remember if you want to change this model, there are places that depend on how this works (the state/input form in /pages/interview.js
, finding average scores, etc) type
attribute to the interview model. Interviews
looks like, it will affect how viewing interviews look like https://github.com/hack4impact-uiuc/h4i-recruitment/blob/master/frontend/src/components/candidates/candidateInterviewsModal.js Add Interview
, we add the candidate name and id to redux store, and the /interview
page will take that redux state and set the dropdown to be the candidate in that redux store as well as the page component's state (through mapPropsToState) Whenever the dropdown changes, the redux state candidateId
and candidateName
also reflects the change. https://github.com/hack4impact-uiuc/h4i-recruitment/blob/ce1243b1b9e29c4a9c731649812e13f03294c58d/frontend/src/pages/interview.js#L45-L53you might want to look into react form libraries to help with this https://codebrahma.com/form-libraries-in-react/ and look into #118
Our interview process changes every semester. Maybe we'll find a consistent format to stick to in the future, but as of now we're constantly adapting. Rather than changing the tool to fit our format every semester, lets make interview format configurable. Basically an interview configuration would contain things like which round number it is, how scoring is performed (Facemash's elo scoring, rubric scoring, etc.). Configuration would probably be some json.
Admin actions would include importing a new configuration, and changing interview rounds. There's some scoping to be done here (what kinds of things make sense to configure, what functionality should change between rounds, how do we keep track of multiple rounds of score, etc).
(Eventually we would make configuration in UI too preferably, but to reduce scope to our limited time frame, lets start with this)