Skip to content
Snippets Groups Projects
Commit 437f5a98 authored by srosse's avatar srosse
Browse files

OO-5132: backport loading of completion data on load in assessment tool

parent 9b064132
No related branches found
No related tags found
No related merge requests found
......@@ -31,10 +31,16 @@ public class ExtraTimeInfos implements Comparable<ExtraTimeInfos> {
private final Integer extraTimeInSeconds;
private final Date start;
private final Double completion;
public ExtraTimeInfos(Integer extraTimeInSeconds, Date start) {
public ExtraTimeInfos(Integer extraTimeInSeconds, Date start, Double completion) {
this.extraTimeInSeconds = extraTimeInSeconds;
this.start = start;
this.completion = completion;
}
public Double getCompletion() {
return completion;
}
public Integer getExtraTimeInSeconds() {
......
......@@ -254,12 +254,20 @@ public class IQIdentityListCourseNodeController extends IdentityListCourseNodeCo
@Override
protected void loadModel(UserRequest ureq) {
super.loadModel(ureq);
if(((IQTESTCourseNode)courseNode).hasQTI21TimeLimit(getReferencedRepositoryEntry())) {
Map<Long,ExtraTimeInfos> extraTimeInfos = getExtraTimes();
List<AssessedIdentityElementRow> rows = usersTableModel.getObjects();
for(AssessedIdentityElementRow row:rows) {
row.setDetails(extraTimeInfos.get(row.getIdentityKey()));
RepositoryEntry testEntry = getReferencedRepositoryEntry();
boolean timeLimit = ((IQTESTCourseNode)courseNode).hasQTI21TimeLimit(testEntry);
Map<Long,ExtraTimeInfos> extraTimeInfos = getExtraTimes();
List<AssessedIdentityElementRow> rows = usersTableModel.getObjects();
for(AssessedIdentityElementRow row:rows) {
ExtraTimeInfos infos = extraTimeInfos.get(row.getIdentityKey());
if(infos != null) {
if(timeLimit) {
row.setDetails(infos);
}
if(infos.getCompletion() != null) {
row.getCurrentCompletion().setCompletion(infos.getCompletion());
}
}
}
......@@ -285,12 +293,19 @@ public class IQIdentityListCourseNodeController extends IdentityListCourseNodeCo
for(AssessmentTestSession session:sessions) {
Long identityKey = session.getIdentity().getKey();
if(currentIdentityKey == null || !currentIdentityKey.equals(identityKey)) {
if(session.getFinishTime() == null && session.getExtraTime() != null) {
Integer extraTimeInSeconds = session.getExtraTime();
Date start = session.getCreationDate();
ExtraTimeInfos infos = new ExtraTimeInfos(extraTimeInSeconds, start);
identityToExtraTime.put(identityKey, infos);
Date start = null;
Double completion = null;
Integer extraTimeInSeconds = null;
if(session.getFinishTime() == null && session.getTerminationTime() == null) {
start = session.getCreationDate();
extraTimeInSeconds = session.getExtraTime();
if(session.getNumOfQuestions() != null && session.getNumOfQuestions().intValue() > 0 && session.getNumOfAnsweredQuestions() != null) {
completion = session.getNumOfAnsweredQuestions().doubleValue() / session.getNumOfQuestions().doubleValue();
}
}
ExtraTimeInfos infos = new ExtraTimeInfos(extraTimeInSeconds, start, completion);
identityToExtraTime.put(identityKey, infos);
currentIdentityKey = identityKey;
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment