Skip to content

Commit

Permalink
Merge pull request #285 from TexasDigitalLibrary/4.0.x-sprint17-vir-3…
Browse files Browse the repository at this point in the history
…30-search-box

Search bob all column search filter
  • Loading branch information
jeremythuff authored Oct 14, 2016
2 parents 299513a + c39ff04 commit 03db5f5
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
@Controller
@ApiMapping("/submission-list")
public class SubmissionListController {

private final static String SEARCH_BOX_TITLE = "Search Box";

@Autowired
private SubmissionListColumnRepo submissionListColumnRepo;
Expand Down Expand Up @@ -110,12 +112,10 @@ public ApiResponse resetUserSubmissionViewColumns(@ApiCredentials Credentials cr
@Transactional
@ApiMapping("/update-user-filter-columns")
@Auth(role = "STUDENT")
public ApiResponse updateUserFilterColumns(@ApiCredentials Credentials credentials,
@ApiModel List<SubmissionListColumn> filterColumns) {
public ApiResponse updateUserFilterColumns(@ApiCredentials Credentials credentials, @ApiModel List<SubmissionListColumn> filterColumns) {
User user = userRepo.findByEmail(credentials.getEmail());
user.setFilterColumns(filterColumns);
user = userRepo.save(user);

return new ApiResponse(SUCCESS, user.getFilterColumns());
}

Expand Down Expand Up @@ -149,8 +149,7 @@ public ApiResponse setActiveFilter(@ApiCredentials Credentials credentials, @Api

user = userRepo.save(user);

simpMessagingTemplate.convertAndSend("/channel/active-filters/" + user.getActiveFilter().getId(),
new ApiResponse(SUCCESS, user.getActiveFilter()));
simpMessagingTemplate.convertAndSend("/channel/active-filters/" + user.getActiveFilter().getId(), new ApiResponse(SUCCESS, user.getActiveFilter()));

return new ApiResponse(SUCCESS);

Expand All @@ -159,32 +158,24 @@ public ApiResponse setActiveFilter(@ApiCredentials Credentials credentials, @Api
@ApiMapping("/active-filters")
@Auth(role = "MANAGER")
public ApiResponse getActiveFilters(@ApiCredentials Credentials credentials) {

User user = userRepo.findByEmail(credentials.getEmail());

return new ApiResponse(SUCCESS, user.getActiveFilter());

}

@ApiMapping("/saved-filters")
@Auth(role = "MANAGER")
public ApiResponse getSavedFilters(@ApiCredentials Credentials credentials) {

User user = userRepo.findByEmail(credentials.getEmail());

return new ApiResponse(SUCCESS, user.getActiveFilter());

}

@ApiMapping("/remove-saved-filter")
@Auth(role = "MANAGER")
public ApiResponse removeSavedFilter(@ApiCredentials Credentials credentials,
@ApiModel NamedSearchFilter savedFilter) {
public ApiResponse removeSavedFilter(@ApiCredentials Credentials credentials, @ApiModel NamedSearchFilter savedFilter) {
User user = userRepo.findByEmail(credentials.getEmail());
user.getSavedFilters().remove(savedFilter);
userRepo.save(user);
namedSearchFilterGroupRepo.delete(savedFilter.getId());

return getSavedFilters(credentials);
}

Expand All @@ -196,9 +187,12 @@ public ApiResponse addFilterCriterion(@ApiCredentials Credentials credentials, @
String filterValue = data.get("filterValue").asText();

JsonNode filterGlossNode = data.get("filterGloss");

String filterGloss = null;
if (filterGlossNode != null)

if (filterGlossNode != null) {
filterGloss = filterGlossNode.asText();
}

User user = userRepo.findByEmail(credentials.getEmail());

Expand All @@ -213,25 +207,26 @@ public ApiResponse addFilterCriterion(@ApiCredentials Credentials credentials, @
}
}

if (namedSearchFilter == null)
if (namedSearchFilter == null) {
namedSearchFilter = filterCriterionRepo.create(submissionListColumnRepo.findByTitle(criterionName));
}

namedSearchFilter.addFilter(filterValue, filterGloss);

namedSearchFilter.setAllColumnSearch(criterionName.equals(SEARCH_BOX_TITLE) ? true : false);

user.getActiveFilter().addFilterCriterion(namedSearchFilter);

user = userRepo.save(user);

simpMessagingTemplate.convertAndSend("/channel/active-filters/" + user.getActiveFilter().getId(),
new ApiResponse(SUCCESS, user.getActiveFilter()));
simpMessagingTemplate.convertAndSend("/channel/active-filters/" + user.getActiveFilter().getId(), new ApiResponse(SUCCESS, user.getActiveFilter()));

return new ApiResponse(SUCCESS);
}

@ApiMapping("/remove-filter-criterion/{namedSearchFilterName}")
@Auth(role = "MANAGER")
public ApiResponse removeFilterCriterion(@ApiCredentials Credentials credentials,
@ApiVariable String namedSearchFilterName, @ApiModel FilterCriterion filterCriterion) {
public ApiResponse removeFilterCriterion(@ApiCredentials Credentials credentials, @ApiVariable String namedSearchFilterName, @ApiModel FilterCriterion filterCriterion) {

User user = userRepo.findByEmail(credentials.getEmail());

Expand Down Expand Up @@ -275,8 +270,7 @@ public ApiResponse clearFilterCriteria(@ApiCredentials Credentials credentials)
filterCriterionRepo.delete(namedSearchFilter);
});

simpMessagingTemplate.convertAndSend("/channel/active-filters/" + user.getActiveFilter().getId(),
new ApiResponse(SUCCESS, user.getActiveFilter()));
simpMessagingTemplate.convertAndSend("/channel/active-filters/" + user.getActiveFilter().getId(), new ApiResponse(SUCCESS, user.getActiveFilter()));

return new ApiResponse(SUCCESS);
}
Expand All @@ -303,8 +297,7 @@ public ApiResponse saveFilterCriteria(@ApiCredentials Credentials credentials, @

User user = userRepo.findByEmail(credentials.getEmail());

NamedSearchFilterGroup existingFilter = namedSearchFilterGroupRepo
.findByNameAndPublicFlagTrue(namedSearchFilterGroup.getName());
NamedSearchFilterGroup existingFilter = namedSearchFilterGroupRepo.findByNameAndPublicFlagTrue(namedSearchFilterGroup.getName());

if (existingFilter != null) {
existingFilter = namedSearchFilterGroupRepo.clone(existingFilter, namedSearchFilterGroup);
Expand Down
52 changes: 39 additions & 13 deletions src/main/java/org/tdl/vireo/model/repo/impl/SubmissionRepoImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,8 @@ public SubmissionRepoImpl(DataSource dataSource) {

@Override
public Submission create(User submitter, Organization organization, SubmissionState startingState) {

Submission submission = new Submission(submitter, organization, startingState);

submission.setSubmissionWorkflowSteps(submissionWorkflowStepRepo.cloneWorkflow(organization));

return submissionRepo.save(submission);
}

Expand Down Expand Up @@ -153,23 +150,21 @@ public int compare(SubmissionListColumn svc1, SubmissionListColumn svc2) {

for (SubmissionListColumn submissionListColumn : allSubmissionListColumns) {

if (submissionListColumn.getSortOrder() > 0 || submissionListColumn.getFilters().size() > 0 || submissionListColumn.getVisible()) {

if (submissionListColumn.getSortOrder() > 0 || submissionListColumn.getFilters().size() > 0 || allColumnSearchFilters.size() > 0 || submissionListColumn.getVisible()) {

String pathString = String.join(".", submissionListColumn.getValuePath());

System.out.println("\n\n\n"+pathString+"\n\n\n");

switch(pathString) {
case "fieldValues.value":

Long predicateId = fieldPredicateRepo.findByValue(submissionListColumn.getPredicate()).getId();

sqlJoinsBuilder.append("\nLEFT JOIN")
.append("\n (SELECT sfv").append(n).append(".submission_id, fv").append(n).append(".*")
.append("\n FROM submission_field_values sfv").append(n)
.append("\n LEFT JOIN field_value fv").append(n).append(" ON fv").append(n).append(".id=sfv").append(n).append(".field_values_id ")
.append("\n WHERE fv").append(n).append(".field_predicate_id=").append(predicateId).append(") pfv").append(n).append("\n ON pfv").append(n).append(".submission_id=s.id");
sqlJoinsBuilder
.append("\nLEFT JOIN")
.append("\n (SELECT sfv").append(n).append(".submission_id, fv").append(n).append(".*")
.append("\n FROM submission_field_values sfv").append(n)
.append("\n LEFT JOIN field_value fv").append(n).append(" ON fv").append(n).append(".id=sfv").append(n).append(".field_values_id ")
.append("\n WHERE fv").append(n).append(".field_predicate_id=").append(predicateId).append(") pfv").append(n).append("\n ON pfv").append(n).append(".submission_id=s.id");

if (submissionListColumn.getSortOrder() > 0) {
setColumnOrdering(submissionListColumn.getSort(), sqlSelectBuilder, sqlOrderBysBuilder, " pfv" + n + ".value");
Expand All @@ -195,6 +190,11 @@ public int compare(SubmissionListColumn svc1, SubmissionListColumn svc2) {
}

}

// all column search filter
for (String filterString : allColumnSearchFilters) {
sqlWheresBuilder.append(" LOWER(pfv").append(n).append(".value) LIKE '%").append(filterString.toLowerCase()).append("%' OR");
}

n++;

Expand Down Expand Up @@ -223,6 +223,11 @@ public int compare(SubmissionListColumn svc1, SubmissionListColumn svc2) {
for (String filterString : submissionListColumn.getFilters()) {
sqlWheresBuilder.append(" LOWER(ss").append(".name) LIKE '%").append(filterString.toLowerCase()).append("%' OR");
}

// all column search filter
for (String filterString : allColumnSearchFilters) {
sqlWheresBuilder.append(" LOWER(ss").append(".name) LIKE '%").append(filterString.toLowerCase()).append("%' OR");
}

break;

Expand All @@ -238,14 +243,20 @@ public int compare(SubmissionListColumn svc1, SubmissionListColumn svc2) {
for (String filterString : submissionListColumn.getFilters()) {
sqlWheresBuilder.append(" LOWER(o").append(".name) LIKE '%").append(filterString.toLowerCase()).append("%' OR");
}

// all column search filter
for (String filterString : allColumnSearchFilters) {
sqlWheresBuilder.append(" LOWER(o").append(".name) LIKE '%").append(filterString.toLowerCase()).append("%' OR");
}

break;

case "organization.category.name":


if(sqlJoinsBuilder.indexOf("LEFT JOIN organization o ON o.id=s.organization_id") == -1)
if(sqlJoinsBuilder.indexOf("LEFT JOIN organization o ON o.id=s.organization_id") == -1) {
sqlJoinsBuilder.append("\nLEFT JOIN organization o ON o.id=s.organization_id");
}
sqlJoinsBuilder.append("\nLEFT JOIN organization_category oc ON oc.id=o.category_id");

if (submissionListColumn.getSortOrder() > 0) {
Expand All @@ -255,6 +266,11 @@ public int compare(SubmissionListColumn svc1, SubmissionListColumn svc2) {
for (String filterString : submissionListColumn.getFilters()) {
sqlWheresBuilder.append(" LOWER(oc").append(".name) LIKE '%").append(filterString.toLowerCase()).append("%' OR");
}

// all column search filter
for (String filterString : allColumnSearchFilters) {
sqlWheresBuilder.append(" LOWER(oc").append(".name) LIKE '%").append(filterString.toLowerCase()).append("%' OR");
}

break;

Expand All @@ -269,6 +285,11 @@ public int compare(SubmissionListColumn svc1, SubmissionListColumn svc2) {
for (String filterString : submissionListColumn.getFilters()) {
sqlWheresBuilder.append(" LOWER(a").append(".email) LIKE '%").append(filterString.toLowerCase()).append("%' OR");
}

// all column search filter
for (String filterString : allColumnSearchFilters) {
sqlWheresBuilder.append(" LOWER(a").append(".email) LIKE '%").append(filterString.toLowerCase()).append("%' OR");
}

break;

Expand All @@ -289,6 +310,11 @@ public int compare(SubmissionListColumn svc1, SubmissionListColumn svc2) {
for (String filterString : submissionListColumn.getFilters()) {
sqlWheresBuilder.append(" LOWER(embs").append(".name) LIKE '%").append(filterString.toLowerCase()).append("%' OR");
}

// all column search filter
for (String filterString : allColumnSearchFilters) {
sqlWheresBuilder.append(" LOWER(embs").append(".name) LIKE '%").append(filterString.toLowerCase()).append("%' OR");
}

break;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
[
{
"title": "ID",
"sort": "ASC",
Expand Down Expand Up @@ -196,5 +196,14 @@
"inputType": {
"name": "INPUT_TEXT"
}
},
{
"title": "Search Box",
"sort": "NONE",
"valuePath": [],
"status": null,
"inputType": {
"name": "INPUT_TEXT"
}
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ vireo.controller("SubmissionListController", function (uibDateParser, $controlle

SubmissionStateRepo.ready().then(function() {
$scope.advancedfeaturesBox.newStatus = submissionStates[0];
console.log(submissionStates);
});

var documentTypes = DocumentTypeRepo.getAll();
Expand All @@ -28,9 +27,6 @@ vireo.controller("SubmissionListController", function (uibDateParser, $controlle
var organizationCategories = OrganizationCategoryRepo.getAll();
var submissionStates = SubmissionStateRepo.getAll();

console.log(embargos);


var findFirstAssignable = function() {
var firstAssignable;
for(var i in allUsers) {
Expand Down Expand Up @@ -250,10 +246,17 @@ vireo.controller("SubmissionListController", function (uibDateParser, $controlle
$scope.pageSize = angular.fromJson(data.body).payload.Integer;

$scope.userColumns = ManagerSubmissionListColumnRepo.getAll();

$scope.columns = $filter('exclude')(SubmissionListColumnRepo.getAll(), $scope.userColumns, 'title');

$scope.excludedColumns = [];

angular.copy($scope.userColumns, $scope.excludedColumns);

$scope.excludedColumns.push(SubmissionListColumnRepo.findByTitle('Search Box'));

$scope.columns = $filter('exclude')(SubmissionListColumnRepo.getAll(), $scope.excludedColumns, 'title');

$scope.filterColumns.userFilterColumns = ManagerFilterColumnRepo.getAll();

$scope.filterColumns.inactiveFilterColumns = $filter('exclude')(SubmissionListColumnRepo.getAll(), $scope.filterColumns.userFilterColumns, 'title');

query();
Expand Down
5 changes: 0 additions & 5 deletions src/main/webapp/WEB-INF/app/model/namedSearchFilter.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,13 @@ vireo.model("NamedSearchFilter", function NamedSearchFilter(WsApi) {

namedSearchFilter.removeFilter = function(criterionName, filterValue) {

console.log(criterionName);
console.log(filterValue);

angular.extend(apiMapping.NamedSearchFilter.removeFilter, {
"data": {
"criterionName":criterionName,
"filterValue":filterValue
}
});

console.log(apiMapping.NamedSearchFilter.removeFilter);

var promise = WsApi.fetch(namedSearchFilter.getMapping().removeFilter);

return promise;
Expand Down
5 changes: 0 additions & 5 deletions src/main/webapp/WEB-INF/app/model/namedSearchFilterGroup.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,11 @@ vireo.model("NamedSearchFilterGroup", function (WsApi) {

namedSearchFilterGroup.removeFilter = function(namedSearchFilterName, filterCriterion) {

console.log(namedSearchFilterName);
console.log(filterCriterion);

angular.extend(apiMapping.NamedSearchFilterGroup.removeFilter, {
'method': 'remove-filter-criterion/'+namedSearchFilterName,
"data": filterCriterion
});

console.log(apiMapping.NamedSearchFilterGroup.removeFilter);

var promise = WsApi.fetch(namedSearchFilterGroup.getMapping().removeFilter);

return promise;
Expand Down
9 changes: 9 additions & 0 deletions src/main/webapp/WEB-INF/app/repo/submissionListColumnRepo.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@ vireo.repo("SubmissionListColumnRepo", function SubmissionListColumnRepo() {

// additional repo methods and variables

this.findByTitle = function(title) {
for(var i in this.getAll()) {
var slc = this.getAll()[i];
if(slc.title == title) {
return slc;
}
}
}

return this;

});

0 comments on commit 03db5f5

Please sign in to comment.