Skip to content

fix: show callsign in zone member picker and DMR ID in RGL member picker #182

Description

@pskillen

Problem

Member pickers on Zone edit and RX group list edit show too little identifying information. Operators cannot reliably tell which channel or talk group they are adding or reordering — especially when names are similar, export qualifiers differ, or multiple repeaters share a town name.

Zone edit — missing callsign

Route: /zones/:id/edit · Component: ZoneMemberPicker.tsx

Both Available and In zone lists render checkboxes with channel.name only:

<Checkbox label={ch.name}  />

Filters also search name only (placeholder="Search by name…").

Callsign (channel.callsign) is the primary on-air identifier for repeaters and is shown elsewhere (channel list callsign column, map popups via channelDisplayLabel). It must appear in the zone member picker.

Expected

  • Each row shows callsign and name — e.g. GB7GL — Glasgow or callsign as primary with name dimmed secondary (match existing list/map conventions).
  • Filter matches callsign or name.
  • Empty callsign: fall back to name only (no stray separators).

Related (optional same PR)

Zone detail member table (zones/detail.tsx) also omits callsign — consider aligning for consistency.

RX group list edit — missing DMR ID and type in list column

Route: /rx-group-lists/:id/edit · Component: RxGroupListMemberPicker.tsx

MemberOption carries name only. Rows show the display name; Available adds a Talk group / Private badge, but neither column shows the DMR ID (TalkGroup.number / Contact.identifier).

The In list column is worse: name + timeslot select only — no type badge, no DMR ID.

Operators need the numeric ID to distinguish e.g. multiple regional talk groups with similar names, or a private contact vs group call with the same label.

Expected

  • Available and In list rows show:
    • Name (existing)
    • DMR IDTalkGroup.number or Contact.identifier (label e.g. "ID" or inline 2355)
    • Kind — talk group vs private call (badge or short label; reuse existing badge styling)
  • Filter matches name or DMR ID.
  • Unresolved / empty ID: show .

Reference

Detail/report table RxGroupListMembersTable.tsx already shows Type and Timeslot — extend that pattern with an ID column there too if trivial, so edit and detail stay aligned.

Acceptance criteria

  • Zone member picker shows callsign + name on both sides; filter searches both.
  • RGL member picker shows DMR ID and kind on both Available and In list.
  • RGL filter searches name and DMR ID.
  • No vendor/radio assumptions — display-only change.
  • Component tests or snapshot updates if existing picker tests cover labels.

Relates to

  • #12 — zone CRUD
  • #13 — TG/RGL/contact CRUD

Workflow note

Small UI fix — one PR, conventional commit(s). Branch from origin/main.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions