SEBSERV-298

This commit is contained in:
anhefti 2023-02-09 15:04:35 +01:00
parent a761ade1aa
commit 57657feffd
7 changed files with 51 additions and 1 deletions

View file

@ -61,6 +61,7 @@ public final class Exam implements GrantEntity {
public static final String FILTER_ATTR_TYPE = "type";
public static final String FILTER_ATTR_STATUS = "status";
public static final String FILTER_CACHED_QUIZZES = "cached-quizzes";
public static final String FILTER_ATTR_HIDE_MISSING = "show-missing";
public static final String ATTR_ADDITIONAL_ATTRIBUTES = "additionalAttributes";

View file

@ -297,6 +297,17 @@ public enum ActionDefinition {
PageStateDefinitionImpl.EXAM_VIEW,
ActionCategory.FORM),
EXAM_LIST_HIDE_MISSING(
new LocTextKey("sebserver.exam.action.list.hide.missing"),
ImageIcon.TOGGLE_OFF,
PageStateDefinitionImpl.EXAM_LIST,
ActionCategory.EXAM_LIST),
EXAM_LIST_SHOW_MISSING(
new LocTextKey("sebserver.exam.action.list.show.missing"),
ImageIcon.TOGGLE_ON,
PageStateDefinitionImpl.EXAM_LIST,
ActionCategory.EXAM_LIST),
EXAM_MODIFY_SEB_RESTRICTION_DETAILS(
new LocTextKey("sebserver.exam.action.sebrestriction.details"),
ImageIcon.RESTRICTION,
@ -956,6 +967,7 @@ public enum ActionDefinition {
ImageIcon.TOGGLE_ON,
PageStateDefinitionImpl.MONITORING_RUNNING_EXAM,
ActionCategory.STATE_FILTER),
MONITOR_EXAM_HIDE_CLOSED_CONNECTION(
new LocTextKey("sebserver.monitoring.exam.connection.action.hide.closed"),
ImageIcon.TOGGLE_OFF,

View file

@ -243,6 +243,29 @@ public class ExamList implements TemplateComposer {
EMPTY_SELECTION_TEXT_KEY)
.publishIf(() -> userGrant.im(), false);
actionBuilder
.newAction(ActionDefinition.EXAM_LIST_HIDE_MISSING)
.withExec(action -> hideMissingExams(action, table))
.noEventPropagation()
.withSwitchAction(
actionBuilder.newAction(ActionDefinition.EXAM_LIST_SHOW_MISSING)
.withExec(action -> showMissingExams(action, table))
.noEventPropagation()
.create())
.publish();
}
private PageAction showMissingExams(final PageAction action, final EntityTable<Exam> table) {
table.setStaticFilter(Exam.FILTER_ATTR_HIDE_MISSING, Constants.FALSE_STRING);
table.applyFilter();
return action;
}
private PageAction hideMissingExams(final PageAction action, final EntityTable<Exam> table) {
table.setStaticFilter(Exam.FILTER_ATTR_HIDE_MISSING, Constants.TRUE_STRING);
table.applyFilter();
return action;
}
static PageAction modifyExam(final PageAction action, final EntityTable<Exam> table) {

View file

@ -254,6 +254,10 @@ public class EntityTable<ROW extends ModelIdAware> {
return this.sortOrder;
}
public void setStaticFilter(final String name, final String value) {
this.staticQueryParams.set(name, value);
}
public EntityType getEntityType() {
if (this.pageSupplier != null) {
return this.pageSupplier.getEntityType();

View file

@ -183,6 +183,13 @@ public class ExamRecordDAO {
ExamRecordDynamicSqlSupport.type,
isEqualToWhenPresent(filterMap.getExamType()));
// SEBSERV-298
if (filterMap.getBoolean(Exam.FILTER_ATTR_HIDE_MISSING)) {
whereClause = whereClause.and(
ExamRecordDynamicSqlSupport.lmsAvailable,
SqlBuilder.isGreaterThan(0));
}
final String examStatus = filterMap.getExamStatus();
if (StringUtils.isNotBlank(examStatus)) {
whereClause = whereClause

View file

@ -265,7 +265,8 @@ public class ExamSessionServiceImpl implements ExamSessionService {
filterMap
.putIfAbsent(Exam.FILTER_ATTR_ACTIVE, Constants.TRUE_STRING)
.putIfAbsent(Exam.FILTER_ATTR_STATUS, ExamStatus.RUNNING.name());
.putIfAbsent(Exam.FILTER_ATTR_STATUS, ExamStatus.RUNNING.name())
.putIfAbsent(Exam.FILTER_ATTR_HIDE_MISSING, Constants.TRUE_STRING);
return this.examDAO.allMatching(filterMap, predicate)
.map(col -> col.stream()

View file

@ -528,6 +528,8 @@ sebserver.exam.autogen.error.config.text=There was an unexpected error while set
sebserver.exam.action.list=Exam
sebserver.exam.action.list.view=View Exam
sebserver.exam.action.list.modify=Edit Exam
sebserver.exam.action.list.hide.missing=Hide Missing Exams
sebserver.exam.action.list.show.missing=Show Missing Exams
sebserver.exam.action.modify=Edit Exam
sebserver.exam.action.import=Import From Quizzes
sebserver.exam.action.save=Save Exam