Skip to content

Patch/4 live search filter - #1062

Open
Emissaryx wants to merge 70 commits into
dalen:mainfrom
Emissaryx:patch/4-live-search-filter
Open

Patch/4 live search filter#1062
Emissaryx wants to merge 70 commits into
dalen:mainfrom
Emissaryx:patch/4-live-search-filter

Conversation

@Emissaryx

Copy link
Copy Markdown

No description provided.

… stats

Share view links now bake in an absolute start/end timestamp instead of a relative range, so a copied link keeps showing the same window. Standouts and roster-preview column order now matches the full Scenario detail page. Expanded match rows in Scenario Breakdown show the score. Dropped the invented Overall contribution stat - Standouts now sort by real stats directly, and Top contributor is now Top killer with a tooltip. Added tooltips for Balance thresholds. Filter selects use Bulma's select component.
Averaging or taking the median over 1-2 scenarios lets a single lucky match dominate the ranking regardless of which stat is selected. Reproduced live: Destruction Standouts ranked by Kill damage, Average view, put a 1-scenario player at the top. Default the minimum-scenarios filter to 10+ whenever View is Average or Median; Totals keeps the old 1+ default. An explicit lbMin in the URL always overrides this.
Reworked from one flat sortable table into two team sections grouped by role (Tank/Melee DPS/Ranged DPS/Healer) with a team totals row, matching the roster preview pattern and the maartenson.net reference. Every stat cell also shows the player's share of their team total for that stat, e.g. Kill dmg 27K (11%), so healer/dps/tank contribution can be compared honestly without a combined score. Sorting still works, applied within each role group.
Emissaryx and others added 29 commits August 3, 2026 20:43
Removed unused imports and navigation links for clarity.
Added styles for filter grid and summary bar to unify appearance across pages.
Replaced card layout with a filter grid for search functionality.
Updated the layout of the Items page by changing the container class and modifying the search and filter elements for better organization.
Refactor career filter layout to use a grid format and improve accessibility.
Refactor creature title functions and improve readability.
Refactor VendorItems component to load all vendor items in one go instead of paginating with server-side queries. Update search functionality and adjust item display logic.
Add a scrollable card for vendor items to keep the list in view.
Added error handling for malformed vendor items.
Instead of discarding an entire 50-item page when a single row
references deleted data (which nulls the whole array under GraphQL's
non-null propagation rules), binary-split the failing range and retry
each half until the bad row(s) are isolated. Recovers all valid items
in a page and only drops the specific malformed rows.
…ta-loss bugs

- SearchBox now filters/searches as you type (debounced ~300ms), matching
  the pattern used on the creature vendor-items filter, instead of
  requiring Enter/submit. Affects Creatures, Items, Quests, Instances,
  and both dedicated search pages.
- Fixed a real bug: SearchBox unconditionally navigated to
  /search/guild/:query on submit regardless of context, so pressing
  Enter in the Creatures/Items/Quests/Instances search box redirected
  users to Guild Search instead of filtering the current page. Only the
  two pages that actually own a /search route now navigate
  (navigateOnSubmit), and it replaces history instead of pushing so
  live typing doesn't spam back-button history.
- ScenarioList's full-window loader and CharacterScenarioConnections'
  deathblow loader had the same 'one malformed row nulls the whole
  page/request' vulnerability fixed earlier in VendorItems. Applied the
  same errorPolicy + range-splitting recovery to ScenarioList, and
  added a missing catch block to CharacterScenarioConnections so a
  request failure there no longer silently discards already-loaded
  data.
- Home.tsx's two homepage search boxes (player and guild leaderboard
  tabs) were completely broken: they never had an onSubmit handler,
  they relied entirely on SearchBox's old always-navigate default. Once
  navigation became opt-in (navigateOnSubmit) to fix the wrong-page bug,
  these two lost their only way to do anything at all. Added
  navigateOnSubmit to both.
- Fixed a feedback-loop bug in SearchBox: syncing local input state from
  initialQuery on every change meant each debounced commit's resulting
  URL update fed straight back into the input, which could clobber a
  keystroke (most visibly backspace) typed in the gap before that round
  trip resolved -- typing into the guild/player search boxes felt stuck.
  Now the sync only fires when initialQuery changes for a reason other
  than our own last commit (e.g. actual browser back/forward).
The if (loading) return <progress/> pattern unmounted the entire page
(including the SearchBox) on every debounced refetch, kicking focus
out of the input mid-word. SearchBox now stays mounted outside the
loading/error gate on Creatures, Items, Quests, Instances, Search,
and SearchGuild; only the results area conditionally shows the
spinner/error/empty state.
…d' in it

Clearing the box while navigateOnSubmit is set built `/search/guild/`
(empty trailing segment) and navigated there. React Router has no route
for that exact shape, but bare /search/guild does match the player route
/search/:query with query="guild" - so it landed back on a search box,
just the player one, pre-filled with the literal text "guild" instead of
going back to the guilds/players home page.

Now an empty value navigates straight to '/' (player) or '/guilds' (guild)
instead of building a URL with a dangling empty segment.
…tion

navigateOnSubmit boxes (Home's player/guild tabs, the Search and
SearchGuild pages) can jump between pages mid-search: a debounced commit
navigates from e.g. /guilds to /search/guild/:query, which is a different
route element - React unmounts the old input and mounts a brand-new one,
taking focus with it. The user had to click back into the box to keep
typing past whatever they'd typed when the debounce fired.

Focus (and restore the cursor to the end of the value) on mount for
navigateOnSubmit boxes. This only fires once per page visit: staying on
the same search results page for further keystrokes just updates the URL
param, it doesn't remount.
@netlify

netlify Bot commented Aug 4, 2026

Copy link
Copy Markdown

Deploy Preview for curious-caramel-c7f0d8 ready!

Name Link
🔨 Latest commit c359873
🔍 Latest deploy log https://app.netlify.com/projects/curious-caramel-c7f0d8/deploys/6a713767c3c7e0000800955f
😎 Deploy Preview https://deploy-preview-1062--curious-caramel-c7f0d8.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

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.

1 participant