0 && i < questions.length)}">
@@ -30,43 +31,39 @@
{{assessmentGroup.name}}
*
-
+
-
-
{{ submission | json }}
-
-
-
+
diff --git a/src/pages/assessments/group/assessments-group.page.ts b/src/pages/assessments/group/assessments-group.page.ts
index 568e4cf2..bc2210f3 100644
--- a/src/pages/assessments/group/assessments-group.page.ts
+++ b/src/pages/assessments/group/assessments-group.page.ts
@@ -1,4 +1,4 @@
-import { Component } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
import { NavParams, NavController, AlertController, LoadingController, Events } from 'ionic-angular';
import { FormBuilder, Validators, FormGroup, FormControl, FormArray } from '@angular/forms';
@@ -6,12 +6,12 @@ import { FormBuilder, Validators, FormGroup, FormControl, FormArray } from '@ang
import { CacheService } from '../../../shared/cache/cache.service';
import { ChoiceBase, QuestionBase, Submission, AssessmentService } from '../../../services/assessment.service';
import * as _ from 'lodash';
-
@Component({
selector: 'assessments-group-page',
templateUrl: './assessments-group.html',
})
-export class AssessmentsGroupPage {
+export class AssessmentsGroupPage implements OnInit {
+
activity: any;
answers: any; // to render & display submitted answers
assessment: any;
@@ -36,7 +36,7 @@ export class AssessmentsGroupPage {
public navParams: NavParams
) {}
- ionViewDidEnter() {
+ ngOnInit() {
// navigate from activity page
this.activity = this.navParams.get('activity') || {};
@@ -45,10 +45,13 @@ export class AssessmentsGroupPage {
if (!_.isEmpty(this.event)) {
this.activity = this.event;
}
+ }
- this.assessment = this.activity.assessment; // required for context_id
- this.cacheKey = `assessment.group.${this.assessment.context_id}`;
+ ionViewDidEnter() {
+ // use assessment object from activity (required for extracting context_id)
+ this.assessment = this.activity.assessment;
+ this.cacheKey = `assessment.group.${this.assessment.context_id}`;
this.assessmentGroup = this.navParams.get('assessmentGroup') || {};
this.submission = this.navParams.get('submission') || {};
@@ -63,6 +66,10 @@ export class AssessmentsGroupPage {
);
}
+ /**
+ * @name updateSubmission
+ * @description trace changes of input for assessment (to avoid extra checking logics)
+ */
updateSubmission() {
this.events.publish('assessment:changes', {
changed: true
@@ -92,24 +99,32 @@ export class AssessmentsGroupPage {
}
_.forEach(submission.review, (review) => {
+
_.forEach(questions, (question, idx) => {
- if (review.assessment_question_id === question.id) {
- // text type
+ if (review.assessment_question_id === question.question_id) {
+ // text type (no merging, text question displayed in plain text)
if (question.type === 'text') {
questions[idx].review_answer = review;
}
// oneof type
+ // combine question, when answered by both reviewer and submitter
if (question.type === 'oneof') {
questions[idx].review_answer = review;
+ let submitterAnswer = question.answer;
+
_.forEach(question.choices, (choice, key) => {
- if (choice.id == review.answer && choice.id == question.answer.answer) {
- questions[idx].choices[key].name = choice.name + ' (you and reviewer)';
- }
- if (choice.id != review.answer && choice.id == question.answer.answer) {
- questions[idx].choices[key].name = choice.name + ' (you)';
- }
- if (choice.id == review.answer && choice.id != question.answer.answer) {
+ if (!_.isEmpty(submitterAnswer)) {
+ if (choice.id == review.answer && choice.id == submitterAnswer.answer) {
+ questions[idx].choices[key].name = choice.name + ' (you and reviewer)';
+ }
+ else if (choice.id != review.answer && choice.id == submitterAnswer.answer) {
+ questions[idx].choices[key].name = choice.name + ' (you)';
+ }
+ else if (choice.id == review.answer && choice.id != submitterAnswer.answer) {
+ questions[idx].choices[key].name = choice.name + ' (reviewer)';
+ }
+ } else if (choice.id == review.answer) { // display reviewer answer
questions[idx].choices[key].name = choice.name + ' (reviewer)';
}
});
@@ -178,7 +193,14 @@ export class AssessmentsGroupPage {
group['choices'] = new FormGroup(choices);
}
- result[question.id] = new FormGroup(group);
+ /**
+ * id and question_id are different id
+ * - id = has no obvious purpose
+ * - question_id must be used as id for submission
+ *
+ * but for case like this just for index id
+ */
+ result[question.question_id] = new FormGroup(group);
});
return result;
@@ -204,22 +226,31 @@ export class AssessmentsGroupPage {
return {
Assessment: {
- id: submission.assessment_id,
- context_id: this.getSubmissionContext()
+ id: submission.assessment_id,
+ context_id: this.getSubmissionContext()
},
AssessmentSubmissionAnswer: answers
};
}
/**
- * @description store assessment answer/progress locally
+ * @name storeProgress
+ * @description store assessment answer/progress locally (offline)
+ * @example format for cached submission
+ * {
+ * Assessment: {
+ * id: 1,
+ * context_id: 2
+ * },
+ * AssessmentSubmissionAnswer: Array