fix(watchlist): judge generic DATA spots at digital-class grain; tidy the toolbar wrap
7.0589 falls in the band plan's generic [7.04-7.1] DATA segment — an F/H DXpedition off the standard dials — and 'DATA' is in nobody's log, so the spot read NEW MODE / Needed while the FT8 contact sat right there. A generic mode cannot be matched exactly; it is now judged at digital-class grain — worked if ANY digital mode of that call is logged on that band — against a second class-folded slot set built beside the exact one (shared when the grouping option already folds them). DXHunter answers this with a finer frequency table, which fails on exactly these off-dial expeditions; the class rule cannot. The toolbar also wraps as a whole with tighter gaps instead of dropping its last filter chip onto a lone second line.
This commit is contained in:
@@ -19717,10 +19717,11 @@ type SpotStatus struct {
|
||||
// that already holds the pointer keeps reading valid (stale-by-one-log) data
|
||||
// while a newer snapshot is being built. See clusterStatusMaps.
|
||||
type clusterStatusCache struct {
|
||||
entities map[int]*qso.EntitySlot
|
||||
workedCalls map[string]struct{}
|
||||
workedCallSlots map[string]struct{} // nil unless the "same slot" option is on
|
||||
workedCounties map[string]struct{}
|
||||
entities map[int]*qso.EntitySlot
|
||||
workedCalls map[string]struct{}
|
||||
workedCallSlots map[string]struct{}
|
||||
workedCallSlotsDig map[string]struct{} // same set, digital modes folded to DIG // nil unless the "same slot" option is on
|
||||
workedCounties map[string]struct{}
|
||||
// callCounties holds callsign → "STATE,County" for stations already logged
|
||||
// with a county, so a spot shows the county the entry panel showed rather
|
||||
// than the one derived from the licence ZIP. See qso.CallCounties.
|
||||
@@ -19807,6 +19808,15 @@ func (a *App) clusterStatusMaps() *clusterStatusCache {
|
||||
// needs this set whatever the cluster's own display options say, and the
|
||||
// scan already runs at cache-rebuild cadence, not per batch.
|
||||
c.workedCallSlots, _ = a.qso.WorkedCallSlotKeys(a.ctx, c.normMode)
|
||||
// And once more at digital-CLASS grain, for the spots whose mode the band
|
||||
// plan can only call "DATA": a generic mode cannot be matched exactly, so it
|
||||
// is judged against "any digital mode of this call on this band". When the
|
||||
// grouping option is on, workedCallSlots is already at that grain.
|
||||
if c.normMode != nil {
|
||||
c.workedCallSlotsDig = c.workedCallSlots
|
||||
} else {
|
||||
c.workedCallSlotsDig, _ = a.qso.WorkedCallSlotKeys(a.ctx, qso.GroupDigitalMode)
|
||||
}
|
||||
// Orthogonal dimensions: worked US counties (for the ULS callsign→county
|
||||
// lookup) and worked POTA parks.
|
||||
c.workedCounties, _ = a.qso.WorkedCountyKeys(a.ctx, award.USCountyKey)
|
||||
|
||||
Reference in New Issue
Block a user