fix(chase): band/mode/slot needs finally dim — 'worked' is not ''

spotEntityStatus says 'worked' when every grain is in the log; the
unconfirmed check compared its all-ledger verdict against the empty string,
so no band/mode/slot need ever dimmed however many unconfirmed QSOs stood
behind it — only the entity-level NEW, tested by map presence, behaved. The
check now runs for exactly the four needy statuses and asks for 'worked'.
This commit is contained in:
2026-08-30 21:43:47 +02:00
parent bbb485b9cf
commit a9fb428a0a
+14 -7
View File
@@ -20590,13 +20590,20 @@ func (a *App) ClusterSpotStatuses(spots []SpotQuery) []SpotStatus {
// A need judged against the confirmed ledger that the all-QSO ledger
// says was already worked is a missing QSL, and its badge should read
// as one. Judged at the SAME grain as the status itself.
if idx.chaseUnconf && out[i].Status != "" {
if eAll, ok := entities[dxccNum]; ok {
_, bAll := eAll.Bands[out[i].Band]
_, mAll := eAll.Modes[checkMode]
_, sAll := eAll.Slots[out[i].Band][checkMode]
if spotEntityStatus(true, bAll, mAll, sAll, out[i].Mode) == "" {
out[i].UnconfStatus = true
switch out[i].Status {
case "new-band-mode", "new-band", "new-mode", "new-slot":
if idx.chaseUnconf {
if eAll, ok := entities[dxccNum]; ok {
_, bAll := eAll.Bands[out[i].Band]
_, mAll := eAll.Modes[checkMode]
_, sAll := eAll.Slots[out[i].Band][checkMode]
// "worked", not "": that is what the verdict function says
// when every grain is in the log — the first version
// compared against empty and no band/mode/slot need ever
// dimmed, however many unconfirmed QSOs stood behind it.
if spotEntityStatus(true, bAll, mAll, sAll, out[i].Mode) == "worked" {
out[i].UnconfStatus = true
}
}
}
}