diff --git a/packages/app-degree-pages/src/core/services/degree-data-manager-service.js b/packages/app-degree-pages/src/core/services/degree-data-manager-service.js index ba16affa1f..9fb83442f3 100644 --- a/packages/app-degree-pages/src/core/services/degree-data-manager-service.js +++ b/packages/app-degree-pages/src/core/services/degree-data-manager-service.js @@ -46,10 +46,28 @@ function filterData({ !isAccelConcValid(acceleratedConcurrent) || row[acceleratedConcurrent.value]?.length > 0; - const filterByKeyword = (resolver, searchTerm) => { + const filterByKeywordTitle = (resolver, searchTerm) => { if (!searchTerm) return true; const regex = new RegExp(searchTerm, "i"); - return regex.test(resolver.getFullDescription()); + const title = regex.test(resolver.getMajorDesc()); + if (title){ + return true; + } + else { + return false; + } + }; + + const filterByKeywordDescription = (resolver, searchTerm) => { + if (!searchTerm) return true; + const regex = new RegExp(searchTerm, "i"); + const description = regex.test(resolver.getFullDescription()); + if (description){ + return true; + } + else { + return false; + } }; const filterByBlacklist = resolver => @@ -81,13 +99,33 @@ function filterData({ filterByDepartmentCode(resolver) && filterByCampus(resolver) && filterByAcceleratedConcurrent(row) && - filterByKeyword(resolver, keyword) && filterByBlacklist(resolver) && filterGraduateCerts(resolver) ); }; - return programs.filter(applyFilters); + let filteredByTitle = []; + let filteredByDescription = []; + + let newPrograms = programs.filter(degree => { + const resolver = degreeDataPropResolverService(degree); + + if(filterByKeywordTitle(resolver, keyword)) { + if (applyFilters(degree)) { + filteredByTitle.push(degree); + } + return false; + } + + if(filterByKeywordDescription(resolver, keyword)) { + if (applyFilters(degree)) { + filteredByDescription.push(degree); + } + return false; + } + }); + + return filteredByTitle.concat(filteredByDescription); } /** diff --git a/packages/unity-react-core/src/components/Pagination/Pagination.jsx b/packages/unity-react-core/src/components/Pagination/Pagination.jsx index ee2e3f3184..c272b110b4 100644 --- a/packages/unity-react-core/src/components/Pagination/Pagination.jsx +++ b/packages/unity-react-core/src/components/Pagination/Pagination.jsx @@ -62,15 +62,16 @@ export const Pagination = ({ const renderPages = () => { // Set the ranges to be shown in the pagination + const displayMinimumPages = 2; const lowerRangeLimit = iff( selectedPage === totalPages - 1, - 2, - selectedPage === totalPages ? 3 : 1 + 1, + selectedPage === totalPages ? 2 : 1 ); const upperRangeLimit = iff( selectedPage === 1, - 3, - selectedPage === 2 ? 2 : 1 + 2, + selectedPage === 2 ? 1 : 1 ); const lowerRange = createRange( selectedPage - lowerRangeLimit, @@ -96,6 +97,16 @@ export const Pagination = ({ 1 )} + {selectedPage > (totalPages - displayMinimumPages ) && ( + handleChangePage(e, 2)} + > + 2 + + )} {renderedPages[0] > 2 && ...} {renderedPages.map(page => ( ... )} + {selectedPage < displayMinimumPages + 1 && ( + handleChangePage(e, totalPages - 1)} + > + {totalPages - 1} + + )} {renderedPages[renderedPages.length - 1] !== totalPages && (