feat(decodes): NEW STATE — badge and filter
The WAS gap made visible: a worked-states set joins the cluster status cache (distinct states over the three US entities), the status entries carry a NewState flag wherever the state resolves (log county first, ULS licence second), and the decode panel gains the badge in its status column plus the filter chip alongside NEW/BAND/MODE/GRID. Colour from the shared marker palette, so the cluster can adopt it later without a second hue.
This commit is contained in:
@@ -72,6 +72,7 @@ type StatusEntry = {
|
||||
new_pota?: boolean;
|
||||
new_pfx?: boolean;
|
||||
new_grid?: boolean;
|
||||
new_state?: boolean;
|
||||
// "new" = never worked, "unconf" = worked and awaiting a confirmation.
|
||||
grid_state?: string;
|
||||
state?: string;
|
||||
@@ -113,7 +114,7 @@ interface Props {
|
||||
//
|
||||
// All off means no filtering at all: this is a decode LOG first, and a panel
|
||||
// that starts by hiding most of the band would be lying about what is on it.
|
||||
type NewCat = 'dxcc' | 'band' | 'mode' | 'slot' | 'pfx' | 'grid' | 'pota' | 'cty';
|
||||
type NewCat = 'dxcc' | 'band' | 'mode' | 'slot' | 'pfx' | 'grid' | 'pota' | 'cty' | 'state';
|
||||
|
||||
const NEW_CATS: { key: NewCat; label: string; colour: string }[] = [
|
||||
{ key: 'dxcc', label: 'dec.stNew', colour: 'var(--success)' },
|
||||
@@ -124,6 +125,7 @@ const NEW_CATS: { key: NewCat; label: string; colour: string }[] = [
|
||||
{ key: 'grid', label: 'dec.bgGrid', colour: markerColour('new_grid') },
|
||||
{ key: 'pfx', label: 'dec.bgPfx', colour: markerColour('new_pfx') },
|
||||
{ key: 'cty', label: 'dec.bgCounty', colour: markerColour('new_county') },
|
||||
{ key: 'state', label: 'dec.bgState', colour: markerColour('new_state') },
|
||||
];
|
||||
|
||||
// catsOf lists everything a decode is new for. A station can be several at once
|
||||
@@ -144,6 +146,7 @@ function catsOf(e: StatusEntry | undefined): Set<NewCat> {
|
||||
if (e.new_grid) out.add('grid');
|
||||
if (e.new_pfx) out.add('pfx');
|
||||
if (e.new_county) out.add('cty');
|
||||
if (e.new_state) out.add('state');
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -361,6 +364,7 @@ function entityBadgesFor(status: string): { label: string; cls: string }[] {
|
||||
const EXTRA_BADGES: { key: keyof StatusEntry; marker: SpotMarkerKey; label: string }[] = [
|
||||
{ key: 'new_pota', marker: 'new_pota', label: 'dec.bgPota' },
|
||||
{ key: 'new_grid', marker: 'new_grid', label: 'dec.bgGrid' },
|
||||
{ key: 'new_state', marker: 'new_state', label: 'dec.bgState' },
|
||||
{ key: 'new_pfx', marker: 'new_pfx', label: 'dec.bgPfx' },
|
||||
{ key: 'new_county', marker: 'new_county', label: 'dec.bgCounty' },
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user