Skip to content
Snippets Groups Projects

Fix "clear filter" button appearing

Files

@@ -15,9 +15,7 @@
@@ -15,9 +15,7 @@
*/
*/
package nl.tudelft.ewi.queue.service;
package nl.tudelft.ewi.queue.service;
import java.util.List;
import java.util.*;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.stream.Stream;
@@ -38,6 +36,7 @@ import org.springframework.util.LinkedMultiValueMap;
@@ -38,6 +36,7 @@ import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.MultiValueMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Lists;
 
import com.google.common.collect.Sets;
import com.querydsl.core.types.Predicate;
import com.querydsl.core.types.Predicate;
import com.querydsl.core.types.dsl.BooleanExpression;
import com.querydsl.core.types.dsl.BooleanExpression;
@@ -59,6 +58,9 @@ import com.querydsl.core.types.dsl.BooleanExpression;
@@ -59,6 +58,9 @@ import com.querydsl.core.types.dsl.BooleanExpression;
public class RequestTableService {
public class RequestTableService {
private static final String PREDICATE_POSTFIX = "_filter_predicate";
private static final String PREDICATE_POSTFIX = "_filter_predicate";
private static final String PARAMETERS_POSTFIX = "_filter_parameters";
private static final String PARAMETERS_POSTFIX = "_filter_parameters";
 
private static final Set<String> FILTERS = Sets.newHashSet(
 
"lab.course", "lab", "assignment", "room", "assistant", "status", "requestType"
 
);
@Autowired
@Autowired
private RoomRepository roomRepository;
private RoomRepository roomRepository;
@@ -71,8 +73,8 @@ public class RequestTableService {
@@ -71,8 +73,8 @@ public class RequestTableService {
/**
/**
* Analyses the given parameters and performs an action based on it. If the parameters contain a 'clear'
* Analyses the given parameters and performs an action based on it. If the parameters contain a 'clear'
* attribute, the filters stored in the current session are removed. Otherwise, the given parameters and
* attribute, the filters stored in the current session are removed. If the parameters do not contain a filtering
* predicate are stored in the current session.
* attribute, nothing is submitted. Otherwise, the given parameters and predicate are stored in the current session.
*
*
* @param request The HttpServletRequest used to get the session.
* @param request The HttpServletRequest used to get the session.
* @param parameters The parameters to store.
* @param parameters The parameters to store.
@@ -81,15 +83,14 @@ public class RequestTableService {
@@ -81,15 +83,14 @@ public class RequestTableService {
public void submitFilters(HttpServletRequest request,
public void submitFilters(HttpServletRequest request,
MultiValueMap<String, String> parameters,
MultiValueMap<String, String> parameters,
Predicate predicate) {
Predicate predicate) {
if (parameters == null) {
return;
}
String key = pathFromRequest(request);
if (containsFilterParams(parameters)) {
if (parameters.containsKey("clear")) {
String key = pathFromRequest(request);
clearFilters(request, key);
if (parameters.containsKey("clear")) {
} else {
clearFilters(request, key);
storeFilters(request, key, parameters, predicate);
} else {
 
storeFilters(request, key, parameters, predicate);
 
}
}
}
}
}
@@ -267,6 +268,15 @@ public class RequestTableService {
@@ -267,6 +268,15 @@ public class RequestTableService {
.orElse(new LinkedMultiValueMap<>());
.orElse(new LinkedMultiValueMap<>());
}
}
 
/**
 
* Checks whether the query parameters include filters.
 
* @param parameters the query parameters of the request
 
* @return true if there is at least one filtering query parameter
 
*/
 
private boolean containsFilterParams(MultiValueMap<String, String> parameters) {
 
return parameters != null && !(Sets.intersection(FILTERS, parameters.keySet())).isEmpty();
 
}
 
/**
/**
* Flatmaps a list of courses to a list of labs.
* Flatmaps a list of courses to a list of labs.
*
*
Loading