Replaces the hand-rolled sort/search/pagination on /contacts with LiveTable.LiveResource. Sortable columns for station1/2, grid1/2, band, mode, distance_km, qso_timestamp, and inserted_at; searchable across both stations, both grids, and mode. Custom renderers preserve the enrichment summary badge (with per-status tooltip), the invalid flag column, and the qso/inserted_at formatters. The reciprocal-grouping block has been dropped per the brainstorming decision — every QSO now shows as its own row, which avoids fighting live_table's one-row-per-record model. A "View" action links to the detail page instead of the previous row-click handler (live_table's stream dom_ids are random UUIDs so row-click by record id is no longer practical without forking the library). Test updates: - sort test switched to ?sort_params[station1]=asc (live_table URL format; the old ?sort_by/?sort_order params are gone) - pair-search test removed since live_table does a single ILIKE across searchable fields and no longer supports the two-callsign intersection that Radio.list_contacts/1 used to do; single-term search is exercised instead - pagination test asserts the presence of "Page" (live_table's pagination text is "Page N" without the total count) Also converts the stray cond-with-single-clause in UserManagementLive.Index's delete handler to if/else (credo fix). |
||
|---|---|---|
| .. | ||
| components | ||
| controllers | ||
| live | ||
| plugs | ||
| endpoint.ex | ||
| gettext.ex | ||
| router.ex | ||
| telemetry.ex | ||
| user_auth.ex | ||