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> { ...@@ -31,10 +31,16 @@ public class ExtraTimeInfos implements Comparable<ExtraTimeInfos> {
private final Integer extraTimeInSeconds; private final Integer extraTimeInSeconds;
private final Date start; 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.extraTimeInSeconds = extraTimeInSeconds;
this.start = start; this.start = start;
this.completion = completion;
}
public Double getCompletion() {
return completion;
} }
public Integer getExtraTimeInSeconds() { public Integer getExtraTimeInSeconds() {
......
...@@ -254,12 +254,20 @@ public class IQIdentityListCourseNodeController extends IdentityListCourseNodeCo ...@@ -254,12 +254,20 @@ public class IQIdentityListCourseNodeController extends IdentityListCourseNodeCo
@Override @Override
protected void loadModel(UserRequest ureq) { protected void loadModel(UserRequest ureq) {
super.loadModel(ureq); super.loadModel(ureq);
if(((IQTESTCourseNode)courseNode).hasQTI21TimeLimit(getReferencedRepositoryEntry())) { RepositoryEntry testEntry = getReferencedRepositoryEntry();
Map<Long,ExtraTimeInfos> extraTimeInfos = getExtraTimes(); boolean timeLimit = ((IQTESTCourseNode)courseNode).hasQTI21TimeLimit(testEntry);
List<AssessedIdentityElementRow> rows = usersTableModel.getObjects(); Map<Long,ExtraTimeInfos> extraTimeInfos = getExtraTimes();
for(AssessedIdentityElementRow row:rows) { List<AssessedIdentityElementRow> rows = usersTableModel.getObjects();
row.setDetails(extraTimeInfos.get(row.getIdentityKey())); 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 ...@@ -285,12 +293,19 @@ public class IQIdentityListCourseNodeController extends IdentityListCourseNodeCo
for(AssessmentTestSession session:sessions) { for(AssessmentTestSession session:sessions) {
Long identityKey = session.getIdentity().getKey(); Long identityKey = session.getIdentity().getKey();
if(currentIdentityKey == null || !currentIdentityKey.equals(identityKey)) { if(currentIdentityKey == null || !currentIdentityKey.equals(identityKey)) {
if(session.getFinishTime() == null && session.getExtraTime() != null) { Date start = null;
Integer extraTimeInSeconds = session.getExtraTime(); Double completion = null;
Date start = session.getCreationDate(); Integer extraTimeInSeconds = null;
ExtraTimeInfos infos = new ExtraTimeInfos(extraTimeInSeconds, start); if(session.getFinishTime() == null && session.getTerminationTime() == null) {
identityToExtraTime.put(identityKey, infos); 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; 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