feat(UI): add pagination for detail views in process instance improves rendering time for large workflows #358
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.
Motivation:
While using this Simple Monitor for some performance tests, I realized that instances with 300+ events
(let it be timers, jobs, incidents etc.) lead to trouble loading the DOM in the browsers. The reason for that is simple:
the process instance view did server-side rendering all information as HTML tables. This led to 5MB+ large HTML files,
which took ca. 10s to load the DOM in Chrome, on my MacBook Pro.
Some more extreme tests with 3000+ events also lead to server-side timeouts.
This PR tries to solve the performance issue by keeping the server-side rendering and introducing pagination
per individual detail view (timers, jobs, audit log, etc.)
This PR covers:
I left the individual commits in, in case someone likes to see the intermediate refactoring steps.
Resulting from the refactorings, the behavior in the UI is now slightly different.
Each subview in the process instance view is now a standalone page. This means not all details are loaded at once anymore,
but the *ViewController makes use of Spring's
Pageable
methodology.The result is significantly faster page loading and rendering.
Here's how the UI looks now... (visually the same, except we have introduced new query parameter)
Any feedback is welcome.