Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(ui): auto refresh button #1105

Merged
merged 13 commits into from
Dec 28, 2021
Merged

Conversation

shhdgit
Copy link
Member

@shhdgit shhdgit commented Dec 22, 2021

Related PR: #1099

@ti-chi-bot
Copy link
Member

ti-chi-bot commented Dec 22, 2021

[REVIEW NOTIFICATION]

This pull request has been approved by:

  • baurine

To complete the pull request process, please ask the reviewers in the list to review by filling /cc @reviewer in the comment.
After your PR has acquired the required number of LGTMs, you can assign this pull request to the committer in the list by filling /assign @committer in the comment to help you merge this pull request.

The full list of commands accepted by this bot can be found here.

Reviewer can indicate their review by submitting an approval review.
Reviewer can cancel approval by submitting a request changes review.

@shhdgit
Copy link
Member Author

shhdgit commented Dec 22, 2021

/cc @baurine @breeswish
PTAL, thanks!

@shhdgit shhdgit mentioned this pull request Dec 22, 2021
3 tasks
}, 1000) as unknown as number
)
return () => clearTimeout(timer)
}, [autoRefreshSeconds, isLoading, getRemainingRefreshSeconds()])
Copy link
Member

Choose a reason for hiding this comment

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

The CI is passing without complaining about missing deps.. It doesn't look right. Could you take a look? @baurine

Copy link
Collaborator

Choose a reason for hiding this comment

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

OK, let me check it.

Copy link
Member

@breezewish breezewish left a comment

Choose a reason for hiding this comment

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

I think a correct behavior of your component should be:

  1. When auto refresh is on, a tick starts.
  2. At any time it is set to disabled, the tick paused.
  3. At any time it is set to enabled, the tick continues.
  4. When auto refresh settings is changed, the tick skips if the new refresh interval is set to a value smaller than remaining ticks.
  5. When auto refresh is off, the tick stops.

The loading behavior can be naturally expressed with the disabled property, as you should not allow user to click refresh button again when there is a request on-going. In this case, you will want to set the disabled when using this component. This also applies to the auto refresh: there is no need for the tick to continue if there is a request on-going, since the last request is not finished yet. This means, disabled should be applied to both manual refresh and auto refresh. One property for all, which is great.

@shhdgit shhdgit requested a review from breezewish December 23, 2021 09:16
@shhdgit shhdgit requested a review from YiniXu9506 December 27, 2021 03:53
ui/lib/apps/KeyViz/components/KeyViz.tsx Outdated Show resolved Hide resolved
) {
setRemainingRefreshSeconds(autoRefreshSeconds)
}
}, [autoRefreshSeconds])
Copy link
Member

Choose a reason for hiding this comment

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

the deps check is not working @baurine PTAL~

@codecov-commenter
Copy link

codecov-commenter commented Dec 27, 2021

Codecov Report

❗ No coverage uploaded for pull request base (master@84fb1f0). Click here to learn what that means.
The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff            @@
##             master    #1105   +/-   ##
=========================================
  Coverage          ?   23.12%           
=========================================
  Files             ?      102           
  Lines             ?     9981           
  Branches          ?        0           
=========================================
  Hits              ?     2308           
  Misses            ?     7523           
  Partials          ?      150           
Flag Coverage Δ
be_integration_test_latest 7.05% <0.00%> (?)
be_integration_test_v4.0.1 7.05% <0.00%> (?)
be_unit_test 24.13% <0.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.


Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 84fb1f0...874a57b. Read the comment docs.

const onChangeMetricType = useCallback(
(v: DataTag) => {
setMetricType(v)
resetAutoRefresh()
Copy link
Member

Choose a reason for hiding this comment

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

I believe it is intentional that the there is no need to reset the refresh when metric type is changed, since there will be no data fetching operations during this.

Copy link
Member Author

Choose a reason for hiding this comment

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

It looks better to recover the remaining seconds. And there's data fetching logic caused by metric type at L195-L200. Is this as expected? PTAL.

}
}, 1000)
return () => clearTimeout(timer.current!)
}, [autoRefreshSeconds, disabled, getRemainingRefreshSeconds()])
Copy link
Collaborator

Choose a reason for hiding this comment

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

I feel this kind of way to implement the timer is a little hacky, and not accurate. There is a gap between the effects, maybe use interval is better.

Copy link
Member Author

@shhdgit shhdgit Dec 28, 2021

Choose a reason for hiding this comment

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

Yes, it's not accurate and it's on purpose. This may be necessary if we want to pause or resume timer instantly. Any good ideas?

@shhdgit
Copy link
Member Author

shhdgit commented Dec 28, 2021

/merge

@ti-chi-bot
Copy link
Member

This pull request has been accepted and is ready to merge.

Commit hash: 874a57b

@shhdgit shhdgit merged commit df625e0 into pingcap:master Dec 28, 2021
baurine pushed a commit to baurine/tidb-dashboard that referenced this pull request Dec 30, 2021
* refactor(ui): auto refresh button

* chore: update translation

* fix: remain seconds

* refine: refresh button

* fix: onRefresh

* fix: auto refresh

* fix: continue tick

* chore: add some comments

* tweak: remaining refresh seconds

* chore: clean code

Co-authored-by: Wenxuan <breezewish@pingcap.com>
baurine added a commit that referenced this pull request Dec 30, 2021
* Revert "Release v2021.12.06.1 (#1084)"

This reverts commit bcc43a0.

* Compitable with different TiDB versions for conprof and non-root-login features (#1047)

* make conprof independent

* check feature enable

* add check feature enable middleware

* hide menu if feature is not enabled

* refactor non root login switch by new design

* i18n

* yarn fmt

* renaming

* adjust fe code

* refine

* remove unused log

* build(deps): bump ws from 5.2.2 to 5.2.3 in /ui (#1055)

* CICD: Update the release pipeline for recent PD format policies (#1054)

* fix i18n wording (#1056)

* Refactor: Change util module to util package (#1052)

* Refactor: Fix godot incorrectly add dot suffix to annotations (#1059)

* lint: Add goheader for copyright lints (#1062)

* Refactor: Migrate to use the `rest` package in util/ (#1060)

* fix(*): globally delete/update data by GORM (#1065)

* ui: bump dependencies (#1066)

* refactor: Switch to use ziputil, netutil, reflectutil and fileswap (#1067)

* Fix request header being pinned after pd profiling (#1069)

* Integrate speedscope (#1064)

* fix potential panic when GetPDInstances (#1075)

Signed-off-by: crazycs <chen.two.cs@gmail.com>

* Refactor: a new httpclient (#1073)

* Refactor: Switch to use util/distro in all places (#1078)

* chore: support import relative file URL (#1082)

* Refactor: Move tools into a standalone module (#1079)

* Fix script to embed the ui (#1088)

* Fix script to embed the ui

* Hack write_strings

* Refactor feature flag to support more modules (#1057)

* Drop sysutil dependency (#1093)

* chore: add graph generation (#1085)

* Refactor: Add TopologyProvider (#1098)

* esbuild: i18n + dep (#1101)

* script: Add a script to generate version matrix (#1104)

* distro: support dynamic config (#1094)

* chore: support multiple profiling types (#1095)

* fix(distro): check distro_strings.json fmt by prettier (#1106)

* script: fix generate assets (#1107)

* Add integration test (#1083)

* debug_api: Switch to use the new util (#1103)

* refactor(ui): auto refresh button (#1105)

* refactor(ui): auto refresh button

* chore: update translation

* fix: remain seconds

* refine: refresh button

* fix: onRefresh

* fix: auto refresh

* fix: continue tick

* chore: add some comments

* tweak: remaining refresh seconds

* chore: clean code

Co-authored-by: Wenxuan <breezewish@pingcap.com>

* ui: refine conprof (#1102)

* update wording

* not check prom any more

* replace time range component

* i18n

* support view profile by diffrent ways

* extract ActionsButton

* change download data format

* refine

* comments

* Revert "comments"

This reverts commit 3b03fdb.

* fix view cpu profile fail

* update state

* hide action button if disable

* address feedback

* update release-version

* sync with master

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Wenxuan <breezewish@pingcap.com>
Co-authored-by: Suhaha <jklopsdfw@gmail.com>
Co-authored-by: Yini Xu <34967660+YiniXu9506@users.noreply.github.com>
Co-authored-by: crazycs <crazycs520@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants