Skip to content

Commit d96bacc

Browse files
committed
Sorting questions in assessment history question score properly
1 parent ef0e757 commit d96bacc

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

src/components/AssessmentHistory.tsx

+24-10
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export default class AssessmentHistory extends React.PureComponent<IBaseProps, A
3535
let courseName = props.match.params.courseName;
3636

3737
if (!courseName) {
38-
return Promise.resolve();
38+
return Promise.resolve({} as Certification);
3939
}
4040

4141
return fetch("/courses/" + courseName, {
@@ -45,11 +45,11 @@ export default class AssessmentHistory extends React.PureComponent<IBaseProps, A
4545
return results.json();
4646
})
4747
.then(data => {
48-
this.setState({certification: data as Certification});
48+
return data as Certification;
4949
});
5050
}
5151

52-
loadSessionCollection (props: IBaseProps){
52+
loadSessionCollection (props: IBaseProps, certification: Certification){
5353
let courseName = props.match.params.courseName;
5454

5555
if (!courseName) {
@@ -63,17 +63,24 @@ export default class AssessmentHistory extends React.PureComponent<IBaseProps, A
6363
return results.json();
6464
})
6565
.then((sessions: Array<AssessmentSession>) => {
66-
this.setState({previousSessions: sessions});
66+
this.setState({
67+
certification: certification,
68+
previousSessions: sessions
69+
});
6770
});
6871
}
6972

70-
componentDidMount(){
71-
this.loadCertification(this.props)
72-
.then(() => {
73-
this.loadSessionCollection(this.props);
73+
loadHandler(props: IBaseProps) {
74+
this.loadCertification(props)
75+
.then(certification => {
76+
this.loadSessionCollection(props, certification);
7477
});
7578
}
7679

80+
componentDidMount(){
81+
this.loadHandler(this.props);
82+
}
83+
7784
reset () {
7885
this.setState(this.getDefaultState());
7986
}
@@ -83,7 +90,7 @@ export default class AssessmentHistory extends React.PureComponent<IBaseProps, A
8390
this.reset();
8491
}
8592

86-
this.loadSessionCollection(props);
93+
this.loadHandler(props);
8794
}
8895

8996
render(){
@@ -97,7 +104,14 @@ export default class AssessmentHistory extends React.PureComponent<IBaseProps, A
97104
sortable.push(item);
98105
}
99106

100-
sortable.sort((a, b) => (a[1] as number) - (b[1] as number));
107+
sortable = sortable.filter(arr => this.state.certification.questions && this.state.certification.questions.some(q => q.id === arr[0]));
108+
sortable = sortable.map(arr => {
109+
let question = this.state.certification.questions.find(q => q.id === arr[0]);
110+
111+
return [question.key, arr[1], question.position]
112+
});
113+
114+
sortable = sortable.sort((a, b) => (a[2] as number) - (b[2] as number));
101115

102116
if (this.props.match.params.courseName) {
103117
content = (

src/controllers/CourseController.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ let retrieveCourse = (courseName: string) => {
6767
for (let i = 0; dbQuestions && i < dbQuestions.length; i++){
6868
let dbQuestion = dbQuestions[i];
6969

70-
let question = new Question({id: dbQuestion.id, key: dbQuestion.key, text: new Text({value: dbQuestion.text}), answers: []});
70+
let question = new Question({id: dbQuestion.id, key: dbQuestion.key, text: new Text({value: dbQuestion.text}), position: dbQuestion.position, answers: []});
7171

7272
questions.push(
7373
pool.query("SELECT * from open_certification_trainer.answer AS answer WHERE answer.question_id = $1 ORDER BY answer.key", [question.id])

0 commit comments

Comments
 (0)