100 lines
4.0 KiB
Go
100 lines
4.0 KiB
Go
package awardref
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"hamlog/internal/dxcc"
|
|
)
|
|
|
|
// BuiltinRefs returns the seed reference list for a built-in award (DXCC
|
|
// entities, CQ zones, continents, US states, French departments). ok=false for
|
|
// awards whose list is downloaded online (POTA/SOTA/WWFF) or fully custom.
|
|
//
|
|
// The reference CODE must equal what award.Compute extracts from the QSO field
|
|
// so worked references map onto the list:
|
|
// - DXCC → entity number ("291")
|
|
// - WAZ → CQ zone number ("1".."40")
|
|
// - WAC → continent code ("EU", "NA", …)
|
|
// - WAS → ADIF STATE code ("AL", …)
|
|
// - DDFM → "D06" (the award pattern captures the leading D)
|
|
func BuiltinRefs(code string) ([]Ref, bool) {
|
|
switch code {
|
|
case "DXCC":
|
|
return dxccEntities(), true
|
|
case "WAZ":
|
|
return cqZones(), true
|
|
case "WAC":
|
|
return continents(), true
|
|
case "WAS":
|
|
return usStates().Refs, true
|
|
case "DDFM":
|
|
return frenchDepartments(), true
|
|
}
|
|
return nil, false
|
|
}
|
|
|
|
func dxccEntities() []Ref {
|
|
ents := dxcc.AllEntities()
|
|
out := make([]Ref, 0, len(ents))
|
|
for _, e := range ents {
|
|
out = append(out, ref(strconv.Itoa(e.Num), e.Name, e.Num))
|
|
}
|
|
return out
|
|
}
|
|
|
|
func cqZones() []Ref {
|
|
out := make([]Ref, 0, 40)
|
|
for z := 1; z <= 40; z++ {
|
|
out = append(out, ref(strconv.Itoa(z), "CQ Zone "+strconv.Itoa(z), 0))
|
|
}
|
|
return out
|
|
}
|
|
|
|
func continents() []Ref {
|
|
pairs := [][2]string{
|
|
{"AF", "Africa"}, {"AN", "Antarctica"}, {"AS", "Asia"},
|
|
{"EU", "Europe"}, {"NA", "North America"}, {"OC", "Oceania"}, {"SA", "South America"},
|
|
}
|
|
out := make([]Ref, 0, len(pairs))
|
|
for _, p := range pairs {
|
|
out = append(out, ref(p[0], p[1], 0))
|
|
}
|
|
return out
|
|
}
|
|
|
|
// frenchDepartments — the 96 metropolitan French departments (DXCC 227).
|
|
func frenchDepartments() []Ref {
|
|
const fr = 227
|
|
deps := [][2]string{
|
|
{"D01", "Ain"}, {"D02", "Aisne"}, {"D03", "Allier"}, {"D04", "Alpes-de-Haute-Provence"},
|
|
{"D05", "Hautes-Alpes"}, {"D06", "Alpes-Maritimes"}, {"D07", "Ardèche"}, {"D08", "Ardennes"},
|
|
{"D09", "Ariège"}, {"D10", "Aube"}, {"D11", "Aude"}, {"D12", "Aveyron"},
|
|
{"D13", "Bouches-du-Rhône"}, {"D14", "Calvados"}, {"D15", "Cantal"}, {"D16", "Charente"},
|
|
{"D17", "Charente-Maritime"}, {"D18", "Cher"}, {"D19", "Corrèze"}, {"D2A", "Corse-du-Sud"},
|
|
{"D2B", "Haute-Corse"}, {"D21", "Côte-d'Or"}, {"D22", "Côtes-d'Armor"}, {"D23", "Creuse"},
|
|
{"D24", "Dordogne"}, {"D25", "Doubs"}, {"D26", "Drôme"}, {"D27", "Eure"},
|
|
{"D28", "Eure-et-Loir"}, {"D29", "Finistère"}, {"D30", "Gard"}, {"D31", "Haute-Garonne"},
|
|
{"D32", "Gers"}, {"D33", "Gironde"}, {"D34", "Hérault"}, {"D35", "Ille-et-Vilaine"},
|
|
{"D36", "Indre"}, {"D37", "Indre-et-Loire"}, {"D38", "Isère"}, {"D39", "Jura"},
|
|
{"D40", "Landes"}, {"D41", "Loir-et-Cher"}, {"D42", "Loire"}, {"D43", "Haute-Loire"},
|
|
{"D44", "Loire-Atlantique"}, {"D45", "Loiret"}, {"D46", "Lot"}, {"D47", "Lot-et-Garonne"},
|
|
{"D48", "Lozère"}, {"D49", "Maine-et-Loire"}, {"D50", "Manche"}, {"D51", "Marne"},
|
|
{"D52", "Haute-Marne"}, {"D53", "Mayenne"}, {"D54", "Meurthe-et-Moselle"}, {"D55", "Meuse"},
|
|
{"D56", "Morbihan"}, {"D57", "Moselle"}, {"D58", "Nièvre"}, {"D59", "Nord"},
|
|
{"D60", "Oise"}, {"D61", "Orne"}, {"D62", "Pas-de-Calais"}, {"D63", "Puy-de-Dôme"},
|
|
{"D64", "Pyrénées-Atlantiques"}, {"D65", "Hautes-Pyrénées"}, {"D66", "Pyrénées-Orientales"}, {"D67", "Bas-Rhin"},
|
|
{"D68", "Haut-Rhin"}, {"D69", "Rhône"}, {"D70", "Haute-Saône"}, {"D71", "Saône-et-Loire"},
|
|
{"D72", "Sarthe"}, {"D73", "Savoie"}, {"D74", "Haute-Savoie"}, {"D75", "Paris"},
|
|
{"D76", "Seine-Maritime"}, {"D77", "Seine-et-Marne"}, {"D78", "Yvelines"}, {"D79", "Deux-Sèvres"},
|
|
{"D80", "Somme"}, {"D81", "Tarn"}, {"D82", "Tarn-et-Garonne"}, {"D83", "Var"},
|
|
{"D84", "Vaucluse"}, {"D85", "Vendée"}, {"D86", "Vienne"}, {"D87", "Haute-Vienne"},
|
|
{"D88", "Vosges"}, {"D89", "Yonne"}, {"D90", "Territoire de Belfort"}, {"D91", "Essonne"},
|
|
{"D92", "Hauts-de-Seine"}, {"D93", "Seine-Saint-Denis"}, {"D94", "Val-de-Marne"}, {"D95", "Val-d'Oise"},
|
|
}
|
|
out := make([]Ref, 0, len(deps))
|
|
for _, d := range deps {
|
|
out = append(out, ref(d[0], d[1], fr))
|
|
}
|
|
return out
|
|
}
|