Skip to content

Feature/query store timeslicer v1.1#151

Merged
erikdarlingdata merged 5 commits intoerikdarlingdata:devfrom
rferraton:feature/query-store-timeslicer-v1.1
Mar 28, 2026
Merged

Feature/query store timeslicer v1.1#151
erikdarlingdata merged 5 commits intoerikdarlingdata:devfrom
rferraton:feature/query-store-timeslicer-v1.1

Conversation

@rferraton
Copy link
Copy Markdown
Contributor

@rferraton rferraton commented Mar 27, 2026

What does this PR do?

  • Add quick filter for predefined period : 3h,24h,48h,7d,30d
  • Add a button "custom" that allow to define period manually with dual calendars
  • Change font for interval label : fixed font
  • Add a find max value in selected period feature
  • Just select top 1 plan instead of all by default in the grid
image

Which component(s) does this affect?

  • Desktop App (PlanViewer.App)
  • Core Library (PlanViewer.Core)
  • CLI Tool (PlanViewer.Cli)
  • SSMS Extension (PlanViewer.Ssms)
  • Tests
  • Documentation

How was this tested?

2026-03-28_00h34_36

Describe the testing you've done. Include:

  • Plan files tested Query Store
  • Platforms tested : Windows only

Checklist

  • I have read the contributing guide
  • My code builds with zero warnings (dotnet build -c Debug)
  • All tests pass (dotnet test)
  • I have not introduced any hardcoded credentials or server names

Copy link
Copy Markdown
Owner

@erikdarlingdata erikdarlingdata left a comment

Choose a reason for hiding this comment

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

Hey Romain, nice work on this — the quick filters and custom popup are solid additions. A few things I noticed:

Issues

1. Missing 48h quick filter
The PR description mentions "3h, 24h, 48h, 7d, 30d" but the AXAML only has buttons for 3h, 24h, 7d, 30d — looks like 48h got lost along the way.

2. Highlight behavior on manual drag/wheel
After any pointer drag or wheel zoom, _activeFilterTag resets to "0" which highlights the "Custom" button — even though the user didn't use the custom popup. It might be cleaner to have a "no highlight" state for manual range adjustments, so the Custom button only lights up when someone actually uses the popup.

3. MinNormInterval reduced to 1 bucket
The old code enforced a 3-hour minimum selection. The new code allows a 1-hour (single bucket) minimum. Is that intentional? Users could end up with a very narrow window that returns almost no data.

4. _activeFilterTag = "24" default vs. short data ranges
If the data has less than 24 hours, the 24h button still gets highlighted even though the actual selected range is smaller. The range calculation handles it correctly, but the visual indicator could be misleading.

5. Expand/collapse toggle removed
The old toggle to collapse the slicer is gone entirely. Some users may want to hide it to reclaim vertical space. Was that a deliberate decision?

6. Custom popup silently adjusts invalid ranges
If start > end, it quietly sets end = start + 1h with no feedback. A small validation message would be friendlier.

Nits

  • The quick filter button lines in the AXAML are ~300 characters each — breaking attributes across multiple lines would help readability.
  • "periode""period" in the commit message (minor typo).
  • AutoSelectTopN = 1 changes the default from all-selected to top-1-selected — just want to confirm that's the intended UX change for all users.

Overall this is a great addition. I'd want the 48h button added and the highlight-on-drag behavior cleaned up before merging. The rest is minor. 👍

@rferraton
Copy link
Copy Markdown
Contributor Author

  1. 48h lost in translation :-) agree, i will make it comes back.
  2. for the custom button highlight when moving/changings the time windows I though it was coherent and not misleading : it is a custom selection after all
  3. I change for 1h limit instead of 3h because users sometimes complaint about a problem on a small period of time... so ok... drive by users demands
  4. hum...edge case
  5. i a next PR : i think to allow collapsing but keeping microcharts maybe...
  6. No idea on how to feedback that nicely so....

Second i would say that i test the app with real users that i let manipulate it and observe how they use it, blockers, questions ...and learn this way how to improve the app.

I saw that the app is usefull. It help to find queries with high impact on the database performance using the query store and dig to plan

This PR and features have been build after one session with a client of mine.

I will work on it today and come back quickly

@erikdarlingdata
Copy link
Copy Markdown
Owner

@rferraton if you just want to put the 48hr in and skip the rest, that's fine with me. The rest is not much to worry about. It sounds like you have some market research that I do not have, ha ha ha.

@rferraton
Copy link
Copy Markdown
Contributor Author

@erikdarlingdata : 48h button is back.

@erikdarlingdata erikdarlingdata merged commit 27e03be into erikdarlingdata:dev Mar 28, 2026
2 checks passed
@rferraton rferraton deleted the feature/query-store-timeslicer-v1.1 branch March 28, 2026 17:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants