@@ -4,92 +4,92 @@ import { IncludeRemoveQuestion } from "./IncludeRemoveQuestion";
4
4
import { Exercise } from "./Exercise" ;
5
5
6
6
export interface ExercisePreviewProps {
7
- exercise : ExerciseData ;
8
- selected : boolean ;
9
- onIncludeHandler : ( ) => void ;
10
- onRemoveHandler : ( ) => void ;
11
- onClickDetails : ( ) => void ;
12
- enableOverlay ?: boolean ;
7
+ exercise : ExerciseData ;
8
+ selected : boolean ;
9
+ onIncludeHandler : ( ) => void ;
10
+ onRemoveHandler : ( ) => void ;
11
+ onClickDetails : ( ) => void ;
12
+ enableOverlay ?: boolean ;
13
13
}
14
14
15
- /**
15
+ /**
16
16
* An Exercise version with less interaction with card and grants an Overlay with Include/Remove component
17
- */
17
+ */
18
18
export const ExercisePreview = (
19
- {
20
- exercise,
21
- selected,
22
- onIncludeHandler,
23
- onRemoveHandler,
24
- onClickDetails,
25
- enableOverlay = false ,
26
- } : ExercisePreviewProps ) => {
19
+ {
20
+ exercise,
21
+ selected,
22
+ onIncludeHandler,
23
+ onRemoveHandler,
24
+ onClickDetails,
25
+ enableOverlay = false ,
26
+ } : ExercisePreviewProps ) => {
27
27
28
- const exercisePreviewProps = ( exercise : ExerciseData ) => {
29
- const formatAnswerData = ( questions : ExerciseQuestionData [ ] ) => questions . map ( ( q ) => (
30
- { id : q . id , correct_answer_id : ( q . answers . find ( ( a ) => a . correctness === '1.0' ) ?. id || '' ) } ) ) ;
28
+ const exercisePreviewProps = ( exercise : ExerciseData ) => {
29
+ const formatAnswerData = ( questions : ExerciseQuestionData [ ] ) => questions . map ( ( q ) => (
30
+ { id : q . id , correct_answer_id : ( q . answers . find ( ( a ) => a . correctness === '1.0' ) ?. id || '' ) } ) ) ;
31
31
32
- const questionStateFields = {
33
- available_points : '1.0' ,
34
- is_completed : true ,
35
- answer_id : '1' ,
36
- free_response : '' ,
37
- feedback_html : '' ,
38
- correct_answer_feedback_html : '' ,
39
- attempts_remaining : 0 ,
40
- attempt_number : 1 ,
41
- incorrectAnswerId : 0
42
- }
32
+ const questionStateFields = {
33
+ available_points : '1.0' ,
34
+ is_completed : true ,
35
+ answer_id : '1' ,
36
+ free_response : '' ,
37
+ feedback_html : '' ,
38
+ correct_answer_feedback_html : '' ,
39
+ attempts_remaining : 0 ,
40
+ attempt_number : 1 ,
41
+ incorrectAnswerId : 0
42
+ }
43
43
44
- const questionStates = formatAnswerData ( exercise . questions ) . reduce ( ( acc , answer ) => {
45
- const { id, correct_answer_id } = answer ;
46
- return { ...acc , [ id ] : { ...questionStateFields , correct_answer_id } } ;
47
- } , { } ) ;
44
+ const questionStates = formatAnswerData ( exercise . questions ) . reduce ( ( acc , answer ) => {
45
+ const { id, correct_answer_id } = answer ;
46
+ return { ...acc , [ id ] : { ...questionStateFields , correct_answer_id } } ;
47
+ } , { } ) ;
48
48
49
- const step : StepBase = {
50
- id : 1 ,
51
- uid : exercise . uid ,
52
- available_points : '1.0' ,
53
- } ;
49
+ const step : StepBase = {
50
+ id : 1 ,
51
+ uid : exercise . uid ,
52
+ available_points : '1.0' ,
53
+ } ;
54
54
55
- return {
56
- canAnswer : true ,
57
- needsSaved : true ,
58
- hasMultipleAttempts : false ,
59
- onAnswerChange : ( ) => undefined ,
60
- onAnswerSave : ( ) => undefined ,
61
- onNextStep : ( ) => undefined ,
62
- apiIsPending : false ,
63
- canUpdateCurrentStep : false ,
64
- step : step ,
65
- questionNumber : exercise . number as number ,
66
- numberOfQuestions : exercise . questions . length ,
67
- questionStates : questionStates ,
68
- show_all_feedback : false , // Hide all feedback
69
- } ;
55
+ return {
56
+ canAnswer : true ,
57
+ needsSaved : true ,
58
+ hasMultipleAttempts : false ,
59
+ onAnswerChange : ( ) => undefined ,
60
+ onAnswerSave : ( ) => undefined ,
61
+ onNextStep : ( ) => undefined ,
62
+ apiIsPending : false ,
63
+ canUpdateCurrentStep : false ,
64
+ step : step ,
65
+ questionNumber : exercise . number as number ,
66
+ numberOfQuestions : exercise . questions . length ,
67
+ questionStates : questionStates ,
68
+ show_all_feedback : false , // Hide all feedback
70
69
} ;
70
+ } ;
71
71
72
- const includeRemoveQuestionComponent = React . useMemo ( ( ) =>
73
- < IncludeRemoveQuestion
74
- buttonVariant = { selected ? 'remove' : 'include' }
75
- onIncludeHandler = { onIncludeHandler }
76
- onRemoveHandler = { onRemoveHandler }
77
- onClickDetails = { onClickDetails }
78
- />
79
- , [ selected , onIncludeHandler , onRemoveHandler , onClickDetails ] ) ;
72
+ const includeRemoveQuestionComponent = React . useMemo ( ( ) =>
73
+ < IncludeRemoveQuestion
74
+ buttonVariant = { selected ? 'remove' : 'include' }
75
+ onIncludeHandler = { onIncludeHandler }
76
+ onRemoveHandler = { onRemoveHandler }
77
+ onClickDetails = { onClickDetails }
78
+ />
79
+ , [ selected , onIncludeHandler , onRemoveHandler , onClickDetails ] ) ;
80
80
81
- return (
82
- < Exercise
83
- exercise = { exercise }
84
- className = { selected ? 'preview-card is-selected' : 'preview-card' }
85
- {
86
- ...( enableOverlay
87
- ? {
88
- overlayChildren : includeRemoveQuestionComponent ,
89
- }
90
- : { } )
91
- }
92
- { ...exercisePreviewProps ( exercise ) }
93
- />
94
- ) ;
95
- } ;
81
+ return (
82
+ < Exercise
83
+ exercise = { exercise }
84
+ className = { selected ? 'preview-card is-selected' : 'preview-card' }
85
+ {
86
+ ...( enableOverlay
87
+ ? {
88
+ overlayChildren : includeRemoveQuestionComponent ,
89
+ }
90
+ : { } )
91
+ }
92
+ { ...exercisePreviewProps ( exercise ) }
93
+ />
94
+ ) ;
95
+ } ;
0 commit comments