Skip to content

Redesigned events directory#651

Open
Isoscelestial wants to merge 65 commits intodevelopfrom
feature/redesigned-events-directory
Open

Redesigned events directory#651
Isoscelestial wants to merge 65 commits intodevelopfrom
feature/redesigned-events-directory

Conversation

@Isoscelestial
Copy link
Copy Markdown
Contributor

@Isoscelestial Isoscelestial commented Mar 10, 2026

Implements redesigned events directory design from Figma

Overview

  • Front-end
    • Completely redesigned /events page
    • Created lots of components related to filtering, which will be useful for UTD Trends
    • Adds collapsible panels from Feature/improved-panels #630
    • Add "list" variant to EventCard and tweaked to be more responsive
  • TRPC
    • Completely reworked findByFilter procedure in event router
    • Renamed countByClubId procedure in event router to count, and updated to accept clubId optionally
  • Database
    • Add SQL index on events table (courtesy of @nl32)
  • Utilities
    • src/utils/eventFilter.ts: Updated to match redesigned /events page
    • src/utils/FilterSearchParams.ts: Wrapper class for URLSearchParams to add type safety and side effect callback functions
    • src/utils/floatingActionButtons.ts: Unused utility that can hide injected floating action buttons. I kept it in case someone might find it useful, but it's technically unused so...
    • src/utils/searchParams.ts: Utility functions and classes for safely setting URL search parameters
    • src/utils/useStable.ts: Utility function to stabilize a variable; i.e. ensure a variable's reference doesn't change if an object's or array's values are deeply equivalent. This is computationally expensive and might be redundant in some places now, so I may attempt to remove this later.

Tasks

  • UI
  • Filters
    • Desktop side panel
    • Filter bar
    • URL search params handling
    • Search bar query
    • Sort and pagination
    • Button to clear all filters
  • Event cards
    • Responsive design
    • List view (in addition to current gallery view)
  • Update findByFilters event API procedure
  • Refactor
  • Future PRs:
    • calendar tab
    • subscribing/syncing events calendar to user's personal calendar app
    • add "modality" column to events table, which is typed as the eventLocationFilterEnum enum in eventFilter.ts

Bugs

  • The filter bar has a pre-determined order, i.e. adding new filters does not add them to the end (which is the desired behavior). To fix this, rework how the selectedFilters is calculated (probably turn it into a store or a state) and utilize FilterSearchParams's callback functions for onSet(), onDelete(), etc.
  • When navigating to the /events page, the tab at the top of the page doesn't get set correctly.
  • The exclude button in FilterList should always be visible on touch screens, rather than only on hover
  • I added hotkeys for toggling the sidebar (\) and changing pages (arrow keys). Currently, these are only active when the current target is body, which is quite strict. Modify this so it's only active when an input field is not selected

Preview

URL route for following example: /events?clubs=following&past&dateStart=2026-03-29&dateEnd=2026-05-02&tags=Academic+Interests

screenshot of redesigned events directory page
Old previews URL route for following examples: `/events?hideRegistered&tags=Academic+Interests%2CEducational&dateStart=2026-03-09&dateEnd=2026-03-13&location=on-campus%2Conline&location%21=off-campus

Status update 2

image

Status update 1

image

…unctions, improved disabled tooltip button handling
Copy link
Copy Markdown
Member

@TyHil TyHil left a comment

Choose a reason for hiding this comment

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

You were not lying ab 4,000 lines of code. Did an initial look through. For me, I'll probably do some testing once we get the deployment fixed and another review off that and be good

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