diff options
Diffstat (limited to 'app/assets/javascripts/packages_and_registries/infrastructure_registry/list/utils.js')
-rw-r--r-- | app/assets/javascripts/packages_and_registries/infrastructure_registry/list/utils.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/app/assets/javascripts/packages_and_registries/infrastructure_registry/list/utils.js b/app/assets/javascripts/packages_and_registries/infrastructure_registry/list/utils.js new file mode 100644 index 00000000000..537b30d2ca4 --- /dev/null +++ b/app/assets/javascripts/packages_and_registries/infrastructure_registry/list/utils.js @@ -0,0 +1,25 @@ +import { LIST_KEY_PROJECT, SORT_FIELDS } from './constants'; + +export const sortableFields = (isGroupPage) => + SORT_FIELDS.filter((f) => f.orderBy !== LIST_KEY_PROJECT || isGroupPage); + +/** + * A small util function that works out if the delete action has deleted the + * last item on the current paginated page and if so, returns the previous + * page. This ensures the user won't end up on an empty paginated page. + * + * @param {number} currentPage The current page the user is on + * @param {number} perPage Number of items to display per page + * @param {number} totalPackages The total number of items + */ +export const getNewPaginationPage = (currentPage, perPage, totalItems) => { + if (totalItems <= perPage) { + return 1; + } + + if (currentPage > 1 && (currentPage - 1) * perPage >= totalItems) { + return currentPage - 1; + } + + return currentPage; +}; |