-
Notifications
You must be signed in to change notification settings - Fork 350
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refine Radio's Rubric and UserInput types #1758
Conversation
And remove one item that isn't needed
npm Snapshot: PublishedGood news!! We've packaged up the latest commit from this PR (277954c) and published it to npm. You Example: yarn add @khanacademy/perseus@PR1758 If you are working in Khan Academy's webapp, you can run: ./dev/tools/bump_perseus_version.sh -t PR1758 |
Size Change: -13 B (0%) Total Size: 866 kB
ℹ️ View Unchanged
|
GeraldRequired Reviewers
Don't want to be involved in this pull request? Comment |
|
||
export type PerseusRadioUserInput = { | ||
/*TODO(LEMS-2541): countChoices seems to be necessary for rendering the | ||
question, not scoring. Maybe move to renderProps?*/ | ||
countChoices?: boolean; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So one way to look at the overall problem of RenderProps vs UserInput vs Rubric: is the thing in question used in the validator? Since countChoices
isn't in the validator (or any of the functionality that the validator uses), it can't be in the Rubric (which is stuff we need from KA to validate the answer) or UserInput (which is stuff we need from the leaner to validate the answer). It's rendering logic, so RenderProps.
Then like numCorrect
is a weird one:
- Is there anything the learner can do to affect
numCorrect
and if so would that affect their score? No, so it's not UserInput. - Is
numCorrect
something KA determines and is it used to score? Yes, so it's part of the Rubric. - Is
numCorrect
something that determines how we render the component? Yes, so it needs to be part of RenderProps.
There's some overlap between all of this, but that's okay. What's important (for this leg of the work) is that we know exactly what shape the Rubric and UserInput is.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Totally makes sense. I wanted to fix the UserInput so countChoices is not included, but that requires some logic refactoring, which is why I created a separate ticket for it. Should I just do the refactoring as part of the type update here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I went through the code to see where removing countChoices
from Radio's user input would require a refactor, but didn't see it. I asked Jeremy to follow-up on this today so you have coverage while I'm gone.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I was getting some weird errors the first time, but I was able to follow through with removing countChoices
from the UserInput
type, so that's been added here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me!
choicesSelected: [false, false, false, false, true], | ||
noneOfTheAboveSelected: true, | ||
noneOfTheAboveIndex: 4, | ||
}; | ||
|
||
const rubric = { | ||
const rubric: PerseusRadioRubric = { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I love all this typing. Thank you!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you
@@ -21,7 +21,7 @@ function radioValidator( | |||
}; | |||
} | |||
|
|||
// TODO: should numCorrect actually be on the rubric | |||
// TODO(LEMS-2541): should numCorrect actually be on the rubric |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for filing this ticket. I think numCorrect
, noneOfTheAboveIndex
, and noneOfTheAboveSelected
are all problematic, but I don't think we have to address it in this PR. It should probably be a fast follow though.
# Conflicts: # packages/perseus/src/validation.types.ts
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @khanacademy/[email protected] ### Patch Changes - [#1799](#1799) [`f3139edfe`](f3139ed) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Change functional components to use default parameters instead of deprecated 'defaultProps' ## @khanacademy/[email protected] ### Patch Changes - [#1766](#1766) [`39e1292a9`](39e1292) Thanks [@Myranae](https://github.com/Myranae)! - Refine iFrame's Rubric type - [#1799](#1799) [`f3139edfe`](f3139ed) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Change functional components to use default parameters instead of deprecated 'defaultProps' - [#1765](#1765) [`5cf8d975b`](5cf8d97) Thanks [@Myranae](https://github.com/Myranae)! - Refine Sorter's Rubric type - [#1758](#1758) [`d6edf18ef`](d6edf18) Thanks [@Myranae](https://github.com/Myranae)! - Refine Radio's Rubric and UserInput types - [#1743](#1743) [`5ea5d5927`](5ea5d59) Thanks [@mark-fitzgerald](https://github.com/mark-fitzgerald)! - BUGFIX - [Numeric Input] - Check for wrong answers when scoring - [#1760](#1760) [`9426509cd`](9426509) Thanks [@Myranae](https://github.com/Myranae)! - Refine Matrix's Rubric and UserInput types - [#1761](#1761) [`dbe17d1ee`](dbe17d1) Thanks [@Myranae](https://github.com/Myranae)! - Refine NumericInput's Rubric type - Updated dependencies \[[`f3139edfe`](f3139ed)]: - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - [#1794](#1794) [`9dd0f8c56`](9dd0f8c) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Remove unused prop, optionRenderer, from dropdown-option component - Updated dependencies \[[`39e1292a9`](39e1292), [`f3139edfe`](f3139ed), [`5cf8d975b`](5cf8d97), [`d6edf18ef`](d6edf18), [`5ea5d5927`](5ea5d59), [`9426509cd`](9426509), [`dbe17d1ee`](dbe17d1)]: - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - Updated dependencies \[[`f3139edfe`](f3139ed)]: - @khanacademy/[email protected] Author: khan-actions-bot Reviewers: benchristel Required Reviewers: Approved By: benchristel Checks: ⏭️ Publish npm snapshot, ✅ Lint, Typecheck, Format, and Test (ubuntu-latest, 20.x), ✅ Check builds for changes in size (ubuntu-latest, 20.x), ✅ Cypress (ubuntu-latest, 20.x), ✅ Check for .changeset entries for all changed files (ubuntu-latest, 20.x), ✅ gerald Pull Request URL: #1800
Summary:
As part of the Server Side Scoring project, this refactors Radio's Rubric type to only contain what is necessary for scoring and UserInput to only contain info about the user's input. Also adds the types to Radio's validator tests.
Issue: LEMS-2471
Test plan: