feat: ClubLog Most Wanted rank in the entry band matrix
Opt-in (Settings → General). Shows a "MW #rank" pill next to the DXCC entity name in the entry-strip band/slot matrix — ClubLog's Most Wanted ranking (1 = most wanted), personalised to the operator's callsign and refreshed daily. - internal/clublog/mostwanted.go: fetch mostwanted.php?api=1&callsign=<CALL> (rank→DXCC JSON, real User-Agent), invert to dxcc→rank, cache to <dataDir>/clublog_mostwanted.json; NeedsRefresh invalidates on callsign change. - app.go: keyClublogMostWanted setting, a.clublogMW, startup refresh goroutine, activeCallsign() helper, and Get/Set/Download bindings mirroring the cty ones. WorkedBefore now carries MWRank (qso.WorkedBefore.MWRank) when enabled. - BandSlotGrid.tsx: MW pill next to the entity name, colour-tiered by rank. - SettingsModal General: toggle + download button + status, mirroring the ClubLog cty-exceptions block. Also reorganises the changelog: the theme-persistence fix (landed after the v0.20.11 tag) plus this feature go under a new 0.20.12 entry; 0.20.11 keeps only what shipped in its binary.
This commit is contained in:
@@ -1370,6 +1370,10 @@ type WorkedBefore struct {
|
||||
DXCCModes []string `json:"dxcc_modes"`
|
||||
DXCCBandModes []BandMode `json:"dxcc_band_modes"`
|
||||
|
||||
// MWRank is the ClubLog "Most Wanted" rank for this entity (1 = most wanted),
|
||||
// 0 when unknown or the feature is off. Populated by the app layer, not here.
|
||||
MWRank int `json:"mw_rank,omitempty"`
|
||||
|
||||
// Status grid driving the band×class matrix in the UI. One entry per
|
||||
// (band, class) where ANY QSO exists in this DXCC. Only the highest
|
||||
// status for that cell is kept (call_c > call_w > dxcc_c > dxcc_w).
|
||||
|
||||
Reference in New Issue
Block a user