fix: QSL Manager properly calculating new slot (Digi modes are grouped together)
This commit is contained in:
@@ -7760,9 +7760,24 @@ type ConfirmationItem struct {
|
||||
Country string `json:"country"`
|
||||
NewDXCC bool `json:"new_dxcc"`
|
||||
NewBand bool `json:"new_band"`
|
||||
NewMode bool `json:"new_mode"` // new mode CLASS (Phone/CW/Digital) for the entity
|
||||
NewSlot bool `json:"new_slot"`
|
||||
}
|
||||
|
||||
// GetSlotStats returns the worked/confirmed slot + DXCC tallies for the QSL
|
||||
// Manager. Slots are counted by mode CLASS (Phone/CW/Digital); the raw-mode
|
||||
// granularity (RTTY ≠ FT8) is kept only for the cluster/matrix "new slot" flag.
|
||||
func (a *App) GetSlotStats() qso.SlotStats {
|
||||
if a.qso == nil {
|
||||
return qso.SlotStats{}
|
||||
}
|
||||
st, err := a.qso.GetSlotStats(a.ctx)
|
||||
if err != nil {
|
||||
return qso.SlotStats{}
|
||||
}
|
||||
return st
|
||||
}
|
||||
|
||||
// DownloadConfirmations pulls confirmed QSOs from a service and updates the
|
||||
// matching local QSOs' received status. LoTW only for now (the canonical
|
||||
// confirmation system); runs in the background emitting the same
|
||||
@@ -7887,12 +7902,17 @@ func (a *App) runDownloadConfirmations(svc extsvc.Service, cfg extsvc.ExternalSe
|
||||
Country: q.Country,
|
||||
}
|
||||
if dxccNum != 0 {
|
||||
// Flags use mode CLASS (Phone/CW/Digital), not raw mode: a DIGI
|
||||
// confirmation is "new mode/slot" only if no digital mode was
|
||||
// confirmed there before (RTTY and FT8 are the same class here).
|
||||
it.NewDXCC = !sets.DXCC[dxccNum]
|
||||
it.NewBand = !sets.Band[qso.BandKey(dxccNum, q.Band)]
|
||||
it.NewSlot = !sets.Slot[qso.SlotKey(dxccNum, q.Band, q.Mode)]
|
||||
it.NewMode = !sets.Mode[qso.ModeClassKey(dxccNum, q.Mode)]
|
||||
it.NewSlot = !sets.Slot[qso.SlotClassKey(dxccNum, q.Band, q.Mode)]
|
||||
sets.DXCC[dxccNum] = true
|
||||
sets.Band[qso.BandKey(dxccNum, q.Band)] = true
|
||||
sets.Slot[qso.SlotKey(dxccNum, q.Band, q.Mode)] = true
|
||||
sets.Mode[qso.ModeClassKey(dxccNum, q.Mode)] = true
|
||||
sets.Slot[qso.SlotClassKey(dxccNum, q.Band, q.Mode)] = true
|
||||
}
|
||||
items = append(items, it)
|
||||
return nil
|
||||
@@ -8047,12 +8067,17 @@ func (a *App) runDownloadConfirmations(svc extsvc.Service, cfg extsvc.ExternalSe
|
||||
Band: q.Band, Mode: q.Mode, Country: q.Country,
|
||||
}
|
||||
if dxccNum != 0 {
|
||||
// Flags use mode CLASS (Phone/CW/Digital), not raw mode: a DIGI
|
||||
// confirmation is "new mode/slot" only if no digital mode was
|
||||
// confirmed there before (RTTY and FT8 are the same class here).
|
||||
it.NewDXCC = !sets.DXCC[dxccNum]
|
||||
it.NewBand = !sets.Band[qso.BandKey(dxccNum, q.Band)]
|
||||
it.NewSlot = !sets.Slot[qso.SlotKey(dxccNum, q.Band, q.Mode)]
|
||||
it.NewMode = !sets.Mode[qso.ModeClassKey(dxccNum, q.Mode)]
|
||||
it.NewSlot = !sets.Slot[qso.SlotClassKey(dxccNum, q.Band, q.Mode)]
|
||||
sets.DXCC[dxccNum] = true
|
||||
sets.Band[qso.BandKey(dxccNum, q.Band)] = true
|
||||
sets.Slot[qso.SlotKey(dxccNum, q.Band, q.Mode)] = true
|
||||
sets.Mode[qso.ModeClassKey(dxccNum, q.Mode)] = true
|
||||
sets.Slot[qso.SlotClassKey(dxccNum, q.Band, q.Mode)] = true
|
||||
}
|
||||
items = append(items, it)
|
||||
return nil
|
||||
@@ -8163,12 +8188,17 @@ func (a *App) runDownloadConfirmations(svc extsvc.Service, cfg extsvc.ExternalSe
|
||||
Band: q.Band, Mode: q.Mode, Country: q.Country,
|
||||
}
|
||||
if dxccNum != 0 {
|
||||
// Flags use mode CLASS (Phone/CW/Digital), not raw mode: a DIGI
|
||||
// confirmation is "new mode/slot" only if no digital mode was
|
||||
// confirmed there before (RTTY and FT8 are the same class here).
|
||||
it.NewDXCC = !sets.DXCC[dxccNum]
|
||||
it.NewBand = !sets.Band[qso.BandKey(dxccNum, q.Band)]
|
||||
it.NewSlot = !sets.Slot[qso.SlotKey(dxccNum, q.Band, q.Mode)]
|
||||
it.NewMode = !sets.Mode[qso.ModeClassKey(dxccNum, q.Mode)]
|
||||
it.NewSlot = !sets.Slot[qso.SlotClassKey(dxccNum, q.Band, q.Mode)]
|
||||
sets.DXCC[dxccNum] = true
|
||||
sets.Band[qso.BandKey(dxccNum, q.Band)] = true
|
||||
sets.Slot[qso.SlotKey(dxccNum, q.Band, q.Mode)] = true
|
||||
sets.Mode[qso.ModeClassKey(dxccNum, q.Mode)] = true
|
||||
sets.Slot[qso.SlotClassKey(dxccNum, q.Band, q.Mode)] = true
|
||||
}
|
||||
items = append(items, it)
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user