GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — feat: Add zoom, scroll and hover values to the monitoring charts by patelchaitany · Pull Request #7090 · feast-dev/feast

Conversation

@patelchaitany

@patelchaitany patelchaitany commented Oct 29, 2026

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

The data quality monitoring charts on the feature detail page are hand-drawn SVG with no interaction. You cannot read exact values, zoom into a crowded range, or look at small bars. The time series also draws every row the API returns as one line, so different window lengths (daily, weekly, monthly, quarterly) and the baseline are joined together. That creates spikes and drops that are not in the data.

This PR is UI only. The API and the stored metrics are unchanged.

Time series

  • Plots one window length at a time: the one picked in View, or daily when View is the baseline. The baseline row (all data, dated today) is no longer drawn as the newest point.
  • Hover shows the date and exact values, with a guide line across all charts.
  • Drag across a chart to zoom in. Zoom in/out/reset buttons; double-click resets.
  • When zoomed in, scroll sideways (trackpad, Shift+wheel or the scrollbar) to move through the rest of the data. The axes stay fixed, all charts on the panel move together, and scrolling stops at the first and last day.
  • Point markers are hidden when more than 45 points are on screen, so long ranges are not crowded.

Distribution (numeric histogram)

  • Hover shows the bin range and its count, plus the baseline count when a baseline is drawn.
  • Drag to zoom into a range of bars (snapped to whole bars); the height re-fits to the bars in view, so small tail bars become readable. Same buttons and sideways scrolling as the time series.
  • Leaves room above the plot so the top axis label is no longer cut off.
  • Axis labels sit on bar edges.

The zoom, scroll, hover and tooltip code is shared in ui/src/pages/monitoring/components/chartZoom.tsx.

Screenshots

Demo data: one feature view, hourly data for 20 drivers from 2026-07-01 to 2026-10-29, with daily, weekly and monthly metrics plus the baseline. conv_rate drifts upward and has a null spike on Oct 4–9.

Time series, All time

Before After
before after
Weekly, monthly and quarterly rows mixed into the daily line (spikes near 07-28), and the baseline drawn as the last point (drop at the right edge). Daily windows only.

Time series, Last 30 days

Before After
before after
A 9% null-rate blip on Oct 1 comes from the monthly row for October (daily is 0%). The drop at the end is the baseline row. Only real daily values.

Time series: zoom, hover and scroll

Drag-zoomed to Sep 30 – Oct 13, hovering Oct 4 Scrolled sideways to Sep 20 – Oct 7
zoom and hover scroll

Distribution

Before After: hover
before hover
Top axis label cut off; no way to read a bar's count. Bin range and exact count on hover.
After: zoomed into the left tail After: expanded view
zoomed tail expanded
Height re-fits, so a bar with 9 rows is readable. Top label (7,533) fully visible.

Which issue(s) this PR fixes:

Part of #7054: fixes case 3 (the time series mixes window lengths) and keeps the baseline off the time-series line. Cases 1, 2 and 4 are not changed here. #7056 and #7057 also edit FeatureMetricsDetail.tsx, so whichever merges second will need a small rebase.

Checks

  • I've made sure the tests are passing.
  • My commits are signed off (git commit -s)
  • My PR title follows conventional commits format

Testing Strategy

  • Unit tests
  • Integration tests
  • Manual tests
  • Testing is not required for this change

Unit test: ui/src/pages/monitoring/FeatureMetricsDetail.test.tsx checks that only the selected window length is plotted, drag-to-zoom, sideways scrolling, double-click reset, and the hover values on the time series and the distribution. All 21 UI tests, tsc, ESLint and Prettier pass.

Manual: built the UI and ran feast ui on the demo repo above; checked every time range, the View dropdown, numeric and categorical features, the expanded histogram, and the feature Monitoring tab.

Misc

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@patelchaitany
patelchaitany requested a review from a team as a code owner October 29, 2026 18:51
@codecov-commenter

codecov-commenter commented Oct 29, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 51.88%. Comparing base (5bf4b4c) to head (601748f).
⚠️ Report is 5 commits behind head on master.
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #7090      +/-   ##
==========================================
+ Coverage   51.82%   51.88%   +0.06%     
==========================================
  Files         458      458              
  Lines       57749    57757       +8     
  Branches     8488     8490       +2     
==========================================
+ Hits        29930    29970      +40     
+ Misses      25792    25755      -37     
- Partials     2027     2032       +5     
Flag Coverage Δ
go-feature-server 30.58% <ø> (ø)
python-unit 53.39% <ø> (+0.06%) ⬆️
see 3 files with indirect coverage changes

Continue to review full report in Codecov by Harness.

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

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@patelchaitany
patelchaitany force-pushed the feat/dqm-chart-zoom branch from ee797ac to ed6b3fd Compare November 2, 2026 07:50
shuchu
shuchu approved these changes Nov 4, 2026
View reviewed changes

@shuchu shuchu left a comment

Copy link
Copy Markdown
Collaborator

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

lgtm

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@shuchu

shuchu commented Nov 4, 2026

Copy link
Copy Markdown
Collaborator

@patelchaitany please update the PR since it is out-of-date.

patelchaitany reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@patelchaitany
patelchaitany force-pushed the feat/dqm-chart-zoom branch 4 times, most recently from 1fca127 to c27f52b Compare November 9, 2026 05:13
@ntkathole

ntkathole commented Nov 11, 2026

Copy link
Copy Markdown
Member

@patelchaitany need to resolve conflicts

patelchaitany reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@patelchaitany
patelchaitany force-pushed the feat/dqm-chart-zoom branch from c27f52b to 4e1d48b Compare November 11, 2026 04:26
@ntkathole ntkathole added the ok-to-test label Nov 11, 2026
@patelchaitany
patelchaitany force-pushed the feat/dqm-chart-zoom branch from 4e1d48b to a5d20bf Compare November 11, 2026 05:34
@ntkathole
ntkathole force-pushed the feat/dqm-chart-zoom branch from a5d20bf to bf2819b Compare November 11, 2026 14:41
@patelchaitany
patelchaitany force-pushed the feat/dqm-chart-zoom branch from bf2819b to d674dd5 Compare November 11, 2026 15:24
@patelchaitany @ntkathole
feat: Add zoom, scroll and hover values to the monitoring charts
ad94f18
The DQM time series and distribution charts were static SVG with no way
to read exact values, and the time series joined every window length
into one line.

- Time series: plot one window length at a time (the one picked in
  View, or daily when View is the baseline) and keep the baseline row
  off the line.
- Time series and distribution: hover shows exact values, drag to zoom,
  zoom in/out/reset buttons, and sideways scrolling through all the data
  while zoomed in.
- Distribution: leave room above the plot so the top axis label is not
  cut off.

Signed-off-by: Chaitany Patel <[email protected]>
@ntkathole
ntkathole force-pushed the feat/dqm-chart-zoom branch from d674dd5 to ad94f18 Compare November 12, 2026 03:36
@patelchaitany
Merge branch 'master' into feat/dqm-chart-zoom
601748f
ntkathole
ntkathole approved these changes Nov 12, 2026
View reviewed changes
@ntkathole
ntkathole merged commit 82d263c into feast-dev:master Nov 12, 2026
24 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@patelchaitany patelchaitany mentioned this pull request Nov 12, 2026
chore: Sync upstream feast-dev/feast master opendatahub-io/feast#295
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@shuchu shuchu shuchu approved these changes
@ntkathole ntkathole ntkathole approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

ok-to-test

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

4 participants

@patelchaitany @codecov-commenter @shuchu @ntkathole
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.