feat(matrix): the DIG row cycles through your own digital modes
One row per digital mode would be the honest layout, and there is no height for it: the matrix sits in a fixed panel beside a dozen widgets. So the row keeps its place and changes what it answers — DIG, then each digital mode the operator's own list holds, in the order they put them in, then back to DIG. It costs no round trip. The query behind the matrix already grouped by band AND mode; only the collapse to a class threw that away, so the same cell is now published under the raw mode name too. Digital only: PH and CW have nothing to cycle through. On a specific mode the you-are-here mark follows THAT mode, or every FT4 entry would light whichever digital row the rotation happened to rest on. A four-letter mode drops to 9px rather than widen a column sized for three characters and push the whole matrix sideways. Opens 0.27.8.
This commit is contained in:
@@ -71,6 +71,7 @@ interface Props {
|
||||
band: string;
|
||||
mode: string;
|
||||
bands?: string[]; // configured bands for the worked-before matrix columns
|
||||
modes?: string[]; // configured modes, in order — the matrix cycles its digital row through them
|
||||
// The station's satellites, for the SAT_NAME dropdown. Passed in rather than
|
||||
// read here: the list lives in Preferences, and App already reloads it when
|
||||
// Preferences close — a panel reading it once at mount would need a restart.
|
||||
@@ -155,7 +156,7 @@ function Field({ label, span = 1, className, children }: { label: string; span?:
|
||||
);
|
||||
}
|
||||
|
||||
export function DetailsPanel({ callsign, prefix, operatorGrid, remoteGrid, qth, name, country, comment, note, details, onChange, wb, wbBusy, band, mode, bands, satellites = [], slotCall, slotBand, slotMode, slotWb, slotWbBusy, tab, onTab, keyerActive, onEditQso }: Props) {
|
||||
export function DetailsPanel({ callsign, prefix, operatorGrid, remoteGrid, qth, name, country, comment, note, details, onChange, wb, wbBusy, band, mode, bands, modes, satellites = [], slotCall, slotBand, slotMode, slotWb, slotWbBusy, tab, onTab, keyerActive, onEditQso }: Props) {
|
||||
const { t } = useI18n();
|
||||
const [internalOpen, setInternalOpen] = useState<TabName>('stats');
|
||||
const open = tab ?? internalOpen; // controlled when `tab` is provided
|
||||
@@ -294,6 +295,7 @@ export function DetailsPanel({ callsign, prefix, operatorGrid, remoteGrid, qth,
|
||||
currentBand={slotCall ? (slotBand ?? '') : band}
|
||||
currentMode={slotCall ? (slotMode ?? '') : mode}
|
||||
bands={bands}
|
||||
modes={modes}
|
||||
hasCall={slotCall ? true : callsign.trim() !== ''}
|
||||
forCall={slotCall}
|
||||
onEditQso={onEditQso}
|
||||
|
||||
Reference in New Issue
Block a user