feat(cluster): LoTW badge and filter, spotter-continent filter
The L badge is a single letter, not a word: the call column is 120 px and holds a callsign. It keeps the muted blue of a confirmation and never a status colour, because whether a station uploads to LoTW says nothing about whether the spot is worth chasing - those are different questions and must not share a palette. The spotter's continent is not the DX's. It asks whether anyone near you is hearing the band at all, which is why it earns its own control rather than reusing the existing Continent column. The spotter callsign now travels with the status query so the backend can resolve it against the one DXCC prefix table, instead of a second continent rule appearing in the frontend. Both AND with the status chips rather than joining their OR: "a new band, and from Europe" is the question being asked. An unresolved spot is never dropped by them - the status arrives a moment after the row, and filtering meanwhile made the list flicker. New counties only is the SAME state as the NEW COUNTY chip, reached a second way, not a second filter. County chasing is a mode you switch into, and hunting for one chip among eight is not how you switch into it.
This commit is contained in:
@@ -64,6 +64,11 @@ export type SpotStatusEntry = {
|
||||
new_pota?: boolean;
|
||||
new_pfx?: boolean;
|
||||
pfx?: string;
|
||||
// lotw: the DX uploads to LoTW, per ARRL user list. Inert until downloaded.
|
||||
lotw?: boolean;
|
||||
spotter_continent?: string;
|
||||
grid?: string;
|
||||
new_grid?: boolean;
|
||||
};
|
||||
|
||||
type Props = {
|
||||
@@ -220,7 +225,21 @@ const makeColCatalog = (t: TFn): ColEntry[] => [
|
||||
cellRenderer: (p: any) => {
|
||||
const s = statusFor(p);
|
||||
const color = s?.status === 'new' ? null : s?.worked_call ? WKD : null;
|
||||
return <span style={{ color: color ?? undefined, fontWeight: 700 }}>{p.value ?? ''}</span>;
|
||||
return (
|
||||
<span style={{ color: color ?? undefined, fontWeight: 700 }}>
|
||||
{p.value ?? ''}
|
||||
{/* A single letter rather than a word: the column is 120 px and holds a
|
||||
callsign. It stays the muted-blue of a confirmation, never a status
|
||||
colour — whether a station uploads to LoTW says nothing about
|
||||
whether the spot is worth chasing. */}
|
||||
{s?.lotw ? (
|
||||
<span title={t('clu.lotwBadge')} style={{
|
||||
marginLeft: 4, padding: '0 3px', borderRadius: 3, fontSize: 9, verticalAlign: 'middle',
|
||||
background: 'color-mix(in srgb, var(--info) 22%, transparent)', color: 'var(--info)',
|
||||
}}>L</span>
|
||||
) : null}
|
||||
</span>
|
||||
);
|
||||
},
|
||||
tooltipValueGetter: (p: any) => {
|
||||
const s = statusFor(p);
|
||||
|
||||
Reference in New Issue
Block a user