feat(cluster): mark the cell that carries the fact, and add the US county
Colour moves from the text to the CELL. A filled Band cell means new band, a filled Pfx cell means new prefix, a filled County cell means new county. This is not the pills coming back: a pill is a box inside the cell with its own height and padding, so it pushed the text off the row baseline. A background has no geometry - the text does not move a pixel - and it reads from across the room, which a tinted glyph does not. Worked-call stays text-only: it is not a novelty, and filling it would wash most of the rows. The colours still come from the semantic tokens and lib/spotMarkers, so a fact keeps one colour across the grid, the band map and the filter chips - and the per-marker colour setting will drive all of it from one table. US County column. The backend already resolved the county from the offline ULS store to decide NewCounty and then threw it away; it now returns it, which costs nothing. The Locator column is renamed Spotter locator. It always held the SPOTTER's grid - cluster.go says so - so a column labelled Locator next to a DX callsign was reading as the DX's grid and was mostly empty besides. The DX grid is not in the feed at any price worth paying under an RBN firehose. Both display options move out of Preferences into the cluster filter panel, beside Hide worked. They are changed while working a run, not set up once, and a preferences dialog reopened every ten minutes is a filter in the wrong place.
This commit is contained in:
@@ -1347,8 +1347,6 @@ export function SettingsModal({ onClose, onSaved, initialSection, onMainPaneChan
|
||||
const [lookupOnBlur, setLookupOnBlur] = useState(() => localStorage.getItem('opslog.lookupOnBlur') === '1');
|
||||
const [groupDigital, setGroupDigital] = useState(() => localStorage.getItem('opslog.groupDigitalSlots') === '1');
|
||||
const [clusterWorkedSameSlot, setClusterWorkedSameSlot] = useState(() => localStorage.getItem('opslog.clusterWorkedSameSlot') === '1');
|
||||
const [clusterMuteWorked, setClusterMuteWorked] = useState(() => localStorage.getItem('opslog.clusterMuteWorked') === '1');
|
||||
const [clusterSlotHighlight, setClusterSlotHighlight] = useState(() => localStorage.getItem('opslog.clusterSlotHighlight') === '1');
|
||||
const [showQsoRate, setShowQsoRate] = useState(() => localStorage.getItem('opslog.showQsoRate') === '1');
|
||||
const [catModeBeforeFreq, setCatModeBeforeFreq] = useState(() => localStorage.getItem('opslog.catModeBeforeFreq') === '1');
|
||||
// Password-encryption (secret vault) state.
|
||||
@@ -4139,18 +4137,11 @@ export function SettingsModal({ onClose, onSaved, initialSection, onMainPaneChan
|
||||
onCheckedChange={(c) => { const v = !!c; setClusterWorkedSameSlot(v); writeUiPref('opslog.clusterWorkedSameSlot', v ? '1' : '0'); }} />
|
||||
<span>{t('clu.workedSameSlot')} <span className="text-xs text-muted-foreground">{t('clu.workedSameSlotHint')}</span></span>
|
||||
</label>
|
||||
{/* Two ways to cut through a busy cluster, and they compose: mute what
|
||||
is done, light up what is not. */}
|
||||
<label className="flex items-start gap-2 text-sm cursor-pointer">
|
||||
<Checkbox checked={clusterMuteWorked} className="mt-0.5"
|
||||
onCheckedChange={(c) => { const v = !!c; setClusterMuteWorked(v); writeUiPref('opslog.clusterMuteWorked', v ? '1' : '0'); }} />
|
||||
<span>{t('clu.muteWorked')} <span className="text-xs text-muted-foreground">{t('clu.muteWorkedHint')}</span></span>
|
||||
</label>
|
||||
<label className="flex items-start gap-2 text-sm cursor-pointer">
|
||||
<Checkbox checked={clusterSlotHighlight} className="mt-0.5"
|
||||
onCheckedChange={(c) => { const v = !!c; setClusterSlotHighlight(v); writeUiPref('opslog.clusterSlotHighlight', v ? '1' : '0'); }} />
|
||||
<span>{t('clu.slotHighlight')} <span className="text-xs text-muted-foreground">{t('clu.slotHighlightHint')}</span></span>
|
||||
</label>
|
||||
{/* "No colour on worked" and "colour what is unworked here" used to live
|
||||
here. They moved to the Cluster tab's filter panel, next to Hide
|
||||
worked: they are things an operator changes while working a run, not
|
||||
things set up once. A preferences dialog you reopen every ten minutes
|
||||
is a filter in the wrong place. */}
|
||||
|
||||
{/* Self-spot. The interval only shows once it's on — an interval for
|
||||
something switched off is just a question the operator can't act on. */}
|
||||
|
||||
Reference in New Issue
Block a user