Skip to content

feat: Add reload button to info panel on long loading time#3184

Merged
mtrezza merged 6 commits intoparse-community:alphafrom
mtrezza:feat/reload-panel
Feb 7, 2026
Merged

feat: Add reload button to info panel on long loading time#3184
mtrezza merged 6 commits intoparse-community:alphafrom
mtrezza:feat/reload-panel

Conversation

@mtrezza
Copy link
Member

@mtrezza mtrezza commented Feb 6, 2026

Pull Request

Feature

Add reload button to info panel on long loading time.

Summary by CodeRabbit

  • New Features

    • Added reload capability to aggregation panels (top-level and nested) so users can refresh data on demand.
    • Reload control appears after 3 seconds of loading and shows an elapsed time counter while loading.
    • Reload actions now invoke the panel refresh flow so external data sources can be re-requested.
  • Style

    • Loading UI updated with fade-in animation, repositioned timer/reload button, and adjusted loader layout.

@parse-github-assistant
Copy link

🚀 Thanks for opening this pull request!

@coderabbitai
Copy link

coderabbitai bot commented Feb 6, 2026

📝 Walkthrough

Walkthrough

Adds a delayed reload UI to AggregationPanel (3s delay before showing a reload button and an elapsed-seconds timer), exposes a public onReload prop, and wires DataBrowser to call a cloud function when the panel requests a reload.

Changes

Cohort / File(s) Summary
AggregationPanel (logic + styles)
src/components/AggregationPanel/AggregationPanel.js, src/components/AggregationPanel/AggregationPanel.scss
Adds public onReload prop; introduces loading UI state (showReloadButton, reloadCount, elapsedSeconds) plus timer refs and effects to show a reload button after 3s and run an elapsed timer; implements handleReload to call onReload or existing fetchNestedData; adds reload button/elapsed timer markup and CSS (.reloadControls, .elapsedTimer, .reloadButton, @keyframes fadeIn).
DataBrowser integration
src/dashboard/Data/Browser/DataBrowser.react.js
Wires onReload into three AggregationPanel instances to call this.props.callCloudFunction(objectIdOrSelectedObjectId, className, appId) so reload triggers a cloud function refresh.

Sequence Diagram

sequenceDiagram
    participant User as User
    participant Panel as AggregationPanel
    participant Timer as ReloadTimer
    participant DB as DataBrowser
    participant Cloud as CloudFunction

    User->>Panel: initiates load
    activate Panel
    Panel->>Timer: start 3s delay & elapsed timer
    activate Timer
    Timer->>Timer: wait 3s
    Timer-->>Panel: show reload button & elapsed seconds
    User->>Panel: click reload
    deactivate Timer
    Panel->>DB: onReload(...)
    activate DB
    DB->>Cloud: callCloudFunction(objectId, className, appId)
    activate Cloud
    Cloud-->>DB: return refreshed data
    deactivate Cloud
    DB-->>Panel: update data / stop loading
    deactivate DB
    Panel->>Panel: reset timers & loading UI
    deactivate Panel
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is incomplete. While it briefly states the feature purpose, it is missing required template sections: Issue/Closes link, detailed Approach section, and Tasks checklist. Complete the description by adding the Issue link (Closes field), a detailed Approach section explaining the implementation, and the Tasks checklist with relevant items checked or deleted.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The PR title clearly and concisely summarizes the main change: adding a reload button to the info panel that appears during long loading times, which aligns with the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@parseplatformorg
Copy link
Contributor

parseplatformorg commented Feb 6, 2026

Snyk checks have passed. No issues have been found so far.

Status Scanner Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@src/components/AggregationPanel/AggregationPanel.scss`:
- Around line 165-170: The .loader rule currently lacks a positioning context so
its absolutely-positioned children (.elapsedTimer and .reloadButton) can escape;
update the .loader CSS rule (the .loader selector in AggregationPanel.scss) to
include position: relative so it becomes the containing block for .elapsedTimer
and .reloadButton, ensuring they are positioned correctly inside nested panels.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@src/components/AggregationPanel/AggregationPanel.scss`:
- Around line 173-199: .elapsedTimer and .reloadButton are both absolutely
positioned inside the .loader (which is a centered flex column) causing them to
overlap when showReloadButton becomes true; remove position: absolute, left,
transform from both .elapsedTimer and .reloadButton so they participate in
normal flex flow (use margin-top for spacing) and rely on .loader's
align-items:center and flex-direction:column to stack them under the spinner;
also replace the hardcoded color `#999` in .elapsedTimer with an SCSS variable
(e.g., $mediumGrey) to match the file's variable usage.

@mtrezza mtrezza merged commit 3712d96 into parse-community:alpha Feb 7, 2026
12 checks passed
@mtrezza mtrezza deleted the feat/reload-panel branch February 7, 2026 01:41
parseplatformorg pushed a commit that referenced this pull request Feb 7, 2026
# [8.5.0-alpha.1](8.4.1-alpha.2...8.5.0-alpha.1) (2026-02-07)

### Features

* Add reload button to info panel on long loading time ([#3184](#3184)) ([3712d96](3712d96))
@parseplatformorg
Copy link
Contributor

🎉 This change has been released in version 8.5.0-alpha.1

@parseplatformorg parseplatformorg added the state:released-alpha Released as alpha version label Feb 7, 2026
parseplatformorg pushed a commit that referenced this pull request Feb 12, 2026
# [8.5.0](8.4.0...8.5.0) (2026-02-12)

### Bug Fixes

* Auto-formatting not applied when Cloud Config parameter value is outdated and re-fetched from server ([#3182](#3182)) ([84eab36](84eab36))
* Clicking reload button in info panel may display fetched data in incorrect panel ([#3189](#3189)) ([b348ef5](b348ef5))
* Role linking in ACL fails with type error ([#3095](#3095)) ([2070d29](2070d29))
* Security migration from csurf to csrf-sync ([#3188](#3188)) ([a95d8a3](a95d8a3))
* View configuration dialog looses focus while typing and lacks syntax highlighting ([#3183](#3183)) ([715fe8d](715fe8d))

### Features

* Add keyboard shortcut to scroll info panels to top ([#3199](#3199)) ([7535626](7535626))
* Add option to reload all or only selected rows after invoking script ([#3200](#3200)) ([173b953](173b953))
* Add reload button to info panel on long loading time ([#3184](#3184)) ([3712d96](3712d96))
* Add support for script execution invoking dashboard form for user input ([#3201](#3201)) ([159f99d](159f99d))
@parseplatformorg
Copy link
Contributor

🎉 This change has been released in version 8.5.0

@parseplatformorg parseplatformorg added the state:released Released as stable version label Feb 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state:released Released as stable version state:released-alpha Released as alpha version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants