Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,48 @@ vireo.controller("SubmissionListController", function (NgTableParams, $controlle

$scope.activeFilters = new NamedSearchFilterGroup();

var getFirstNamedSearchFilterGroupPayload = function (payload) {
if (!payload) {
return null;
}

var keys = Object.keys(payload);
var regex = /^NamedSearchFilterGroup\b/;

for (var i = 0; i < keys.length; i++) {
if (keys[i].match(regex)) {
return payload[keys[i]];
}
}

return null;
};

var loadActiveFilters = function () {
return WsApi.fetch(apiMapping.NamedSearchFilterGroup.instantiate).then(function (response) {
var apiRes = angular.fromJson(response.body);

if (apiRes && apiRes.meta && apiRes.meta.status === 'SUCCESS') {
var activeFilterPayload = getFirstNamedSearchFilterGroupPayload(apiRes.payload);
if (activeFilterPayload) {
angular.extend($scope.activeFilters, activeFilterPayload);
}
}

if (!$scope.activeFilters.namedSearchFilters) {
$scope.activeFilters.namedSearchFilters = [];
}

if (!$scope.activeFilters.sortColumnTitle) {
$scope.activeFilters.sortColumnTitle = null;
}

if (!$scope.activeFilters.sortDirection) {
$scope.activeFilters.sortDirection = null;
}
});
};

$scope.fieldPredicates = FieldPredicateRepo.getAll();

$scope.simplifyTitle = function (str) {
Expand All @@ -37,7 +79,7 @@ vireo.controller("SubmissionListController", function (NgTableParams, $controlle

var rowFilterTitle = "Exclude";

var ready = $q.all([SubmissionListColumnRepo.ready(), ManagerSubmissionListColumnRepo.ready(), EmailTemplateRepo.ready(), FieldPredicateRepo.ready(), userSettings.ready()]);
var ready = $q.all([SubmissionListColumnRepo.ready(), ManagerSubmissionListColumnRepo.ready(), EmailTemplateRepo.ready(), FieldPredicateRepo.ready(), userSettings.ready(), loadActiveFilters()]);

var updateChange = function(change) {
$scope.change = change;
Expand Down Expand Up @@ -201,6 +243,10 @@ vireo.controller("SubmissionListController", function (NgTableParams, $controlle
update(true);

const withoutActiveFilter = function(value) {
if (!$scope.activeFilters || !$scope.activeFilters.namedSearchFilters) {
return true;
}

return $scope.activeFilters.namedSearchFilters.filter((nsf) => nsf.filterValues.indexOf(value) >= 0).length == 0;
};

Expand Down Expand Up @@ -1062,18 +1108,14 @@ vireo.controller("SubmissionListController", function (NgTableParams, $controlle
var apiRes = angular.fromJson(res.body);

if (apiRes.payload && apiRes.payload.FilterAction) {
var keys = Object.keys(apiRes.payload);
var regex = /^NamedSearchFilterGroup\b/;
for (var i = 0; i < keys.length; i++) {
if (keys[i].match(regex)) {
if (apiRes.payload.FilterAction == 'CLEAR' || apiRes.payload.FilterAction == 'SET') {
$scope.resetPagination();
}

angular.extend($scope.activeFilters, apiRes.payload[keys[i]]);
query();
break;
var activeFilterPayload = getFirstNamedSearchFilterGroupPayload(apiRes.payload);
if (activeFilterPayload) {
if (apiRes.payload.FilterAction == 'CLEAR' || apiRes.payload.FilterAction == 'SET') {
$scope.resetPagination();
}

angular.extend($scope.activeFilters, activeFilterPayload);
query();
}
}
}
Expand Down Expand Up @@ -1107,18 +1149,11 @@ vireo.controller("SubmissionListController", function (NgTableParams, $controlle
if (apiRes.payload.FilterAction == 'REMOVE') {
SavedFilterRepo.reset();
} else {
var keys = Object.keys(apiRes.payload);
var regex = /^NamedSearchFilterGroup\b/;
for (var i = 0; i < keys.length; i++) {
if (keys[i].match(regex)) {
if (apiRes.payload.FilterAction == 'SAVE') {
// If the user is the same, then the filter list should already be up to date.
if (apiRes.payload[keys[i]].user !== userSettings.id) {
SavedFilterRepo.reset();
}
}

break;
var activeFilterPayload = getFirstNamedSearchFilterGroupPayload(apiRes.payload);
if (activeFilterPayload && apiRes.payload.FilterAction == 'SAVE') {
// If the user is the same, then the filter list should already be up to date.
if (activeFilterPayload.user !== userSettings.id) {
SavedFilterRepo.reset();
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,15 @@ describe("controller: SubmissionListController", function () {
});

describe("Are the scope methods defined", function () {
it("should safely handle missing active filter collections", function () {
scope.activeFilters.namedSearchFilters = undefined;

expect(function () {
scope.furtherFilterBy.withoutActiveFilter("value");
}).not.toThrow();
expect(scope.furtherFilterBy.withoutActiveFilter("value")).toBe(true);
});

it("addRowFilter should be defined", function () {
expect(scope.addRowFilter).toBeDefined();
expect(typeof scope.addRowFilter).toEqual("function");
Expand Down
Loading