Chore/server pagination#565
Merged
dcharles525 merged 8 commits intofeat/EPINIO-523-524__services_catalogfrom Apr 17, 2026
Merged
Chore/server pagination#565dcharles525 merged 8 commits intofeat/EPINIO-523-524__services_catalogfrom
dcharles525 merged 8 commits intofeat/EPINIO-523-524__services_catalogfrom
Conversation
….com:epinio/ui into chore/server_pagination
- Add pagination state (page, meta) to epinio store with setPaginationPage and setPaginationMeta mutations and goToPage action - Inject page/pageSize query params via urlOptions for appcharts, namespaces, configurations, and services; apps intentionally excluded pending backend support for per-namespace pagination - Wire trailhand-table server-side props (server-side, total-items, current-page, loading, page-change) to all list pages - Applications page fetches all apps in one unpaginated call and groups by namespace alphabetically; empty namespace tables hidden - Add findAppsInNamespace action for future per-namespace pagination once backend adds support
Now that the backend supports ?page&pageSize on the namespace applications endpoint, fetch page 1 per namespace silently on mount to seed pagination meta, then drive each namespace table independently on page-change events. Global findAll still seeds instant initial display with no page params.
…inio/ui into chore/server_pagination
29d3741
into
feat/EPINIO-523-524__services_catalog
2 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Checklist
Summary
Fixes #
Adds server-side pagination support across all Epinio list tables (configurations, services, namespaces, app charts) and per-namespace pagination for the applications view. The
trailhand-tablepage-changeevent is now consumed by each list component, which dispatches to a new VuexgoToPageaction that re-fetches the correct page from the API.Occurred changes and/or fixed issues
epinio-store): addedpaginationPageandpaginationMetastate slices,setPaginationPage/setPaginationMetamutations,urlOptionsgetter that injectspage/pageSizequery params into API URLs automatically,paginationMetaandcurrentPaginationPagegetters,goToPageaction, andfindAppsInNamespaceaction for per-namespace fetches that bypass global meta.requestaction: detects paginated API responses (shape{ items, page, pageSize, totalItems, totalPages }), commitssetPaginationMeta, and returns_paginationalongside row data. Callers can opt out via_skipPaginationMeta.configurations,services,namespaces,appcharts): readpaginationMetafrom the store, pass:server-side,:total-items, and:current-pageprops totrailhand-table, and handle@page-changeby callinggoToPage.findAll(no page params) for instant initial render, followed by silent per-namespace background fetches to seed pagination meta. Subsequent@page-changeevents trigger per-namespace refetches without a global loading overlay.Technical notes summary
urlOptionsacts as a transparent middleware: anyurlForcall for a known type (/api/v1/appcharts,/api/v1/namespaces,/api/v1/configurations,/api/v1/services) automatically receives current page params from store state, so no component needs to manually construct paginated URLs.urlOptionsfor its per-namespace calls. It builds the URL directly with the namespace path and_skipPaginationMeta: trueto keep each namespace table's meta isolated from the global pagination state.goToPageis a simple two-step: commit the new page number to state (whichurlOptionswill read), then force afindAllrefetch.trailhand-tablehad nopage-changeevent. The Lit component'sgoToPagemethod was updated upstream todispatchEvent(new CustomEvent('page-change', { detail: { page }, bubbles: true, composed: true })).Areas or cases that should be tested
pageandpageSizeparams.Areas which could experience regressions
urlFor:urlOptionsnow silently appendspage/pageSizefor the four registered paths. If a type shares a URL path prefix with those paths, it could inadvertently get pagination params.requestaction response parsing: the new branch that detectsitemsarray shape changes theres.datastructure for paginated responses. Any code that previously destructuredres.datadirectly (expecting a flat array) from those endpoints may break.findAll: this call intentionally has no page params (returns all apps for namespace grouping). ConfirmurlOptionsdoes not inject params for/api/v1/applications(it is not in thepathToTypemap).startPollingtriggersfindAllin the background. Confirm these background re-fetches respect the currentpaginationPagestate rather than resetting to page 1.Screenshot/Video