const BAND_COLOR_SCHEMES = { "PSK Reporter": { "2200m": "#ff4500", "600m": "#1e90ff", "160m": "#7cfc00", "80m": "#e550e5", "60m": "#00008b", "40m": "#5959ff", "30m": "#62d962", "20m": "#f2c40c", "17m": "#f2f261", "15m": "#cca166", "12m": "#b22222", "11m": "#00ff00", "10m": "#ff69b4", "6m": "#FF0000", "5m": "#e0e0e0", "4m": "#cc0044", "2m": "#FF1493", "1.25m": "#CCFF00", "70cm": "#999900", "23cm": "#5AB8C7", "2.4GHz": "#FF7F50", "5.8GHz": "#cc0099", "10GHz": "#696969", "24GHz": "#f3edc6", "47GHz": "#ffe786", "76GHz": "#baf9d8" }, "PSK Reporter (Adjusted)": { "2200m": "#ff4500", "600m": "#1e90ff", "160m": "#7cfc00", "80m": "#b33fb3", "60m": "#00008b", "40m": "#5959ff", "30m": "#62d962", "20m": "#f2c40c", "17m": "#f2f261", "15m": "#cca166", "12m": "#b22222", "11m": "#00ff00", "10m": "#ff7eb4", "6m": "#FF0000", "5m": "#e0e0e0", "4m": "#cc0044", "2m": "#FF1493", "1.25m": "#CCFF00", "70cm": "#999900", "23cm": "#5AB8C7", "2.4GHz": "#FF7F50", "5.8GHz": "#cc0099", "10GHz": "#696969", "24GHz": "#f3edc6", "47GHz": "#ffe786", "76GHz": "#baf9d8" }, "RBN": { "2200m": "#000000", "600m": "#aaaaaa", "160m": "#ffe000", "80m": "#093F00", "60m": "#777777", "40m": "#ffa500", "30m": "#ff0000", "20m": "#800080", "17m": "#0000ff", "15m": "#444444", "12m": "#00ffff", "11m": "#000000", "10m": "#ff00ff", "6m": "#ffc0cb", "5m": "#000000", "4m": "#a276ff", "2m": "#92FF7F", "1.25m": "#000000", "70cm": "#000000", "23cm": "#000000", "2.4GHz": "#000000", "5.8GHz": "#000000", "10GHz": "#000000", "24GHz": "#000000", "47GHz": "#000000", "76GHz": "#000000" }, "Ham Rainbow": { "2200m": "#8e4f37", "600m": "#8e4f37", "160m": "#8e3737", "80m": "#da2f93", "60m": "#792fda", "40m": "#2f4bda", "30m": "#2fdad2", "20m": "#68da2f", "17m": "#dad52f", "15m": "#da832f", "12m": "#da5c2f", "11m": "#8e8e8e", "10m": "#da2f2f", "6m": "#8e377a", "5m": "#8e8e8e", "4m": "#42378e", "2m": "#37748e", "1.25m": "#8e8e8e", "70cm": "#378e65", "23cm": "#8e8e37", "2.4GHz": "#8e6037", "5.8GHz": "#8e6037", "10GHz": "#8e6037", "24GHz": "#8e6037", "47GHz": "#8e6037", "76GHz": "#8e6037" }, "Ham Rainbow (Reverse)": { "2200m": "#42378e", "600m": "#42378e", "160m": "#8e377a", "80m": "#da2f2f", "60m": "#da5c2f", "40m": "#da832f", "30m": "#dad52f", "20m": "#68da2f", "17m": "#2fdad2", "15m": "#2f4bda", "12m": "#792fda", "11m": "#8e8e8e", "10m": "#da2f93", "6m": "#8e3737", "5m": "#8e8e8e", "4m": "#8e4f37", "2m": "#8e6037", "1.25m": "#8e8e8e", "70cm": "#8e8e37", "23cm": "#378e65", "2.4GHz": "#37748e", "5.8GHz": "#37748e", "10GHz": "#37748e", "24GHz": "#37748e", "47GHz": "#37748e", "76GHz": "#37748e", }, "Kate Morley": { "2200m": "#817", "600m": "#817", "160m": "#817", "80m": "#a35", "60m": "#c66", "40m": "#e94", "30m": "#ed0", "20m": "#9d5", "17m": "#4d8", "15m": "#2cb", "12m": "#0bc", "11m": "#09c", "10m": "#09c", "6m": "#36b", "5m": "#36b", "4m": "#36b", "2m": "#36b", "1.25m": "#36b", "70cm": "#639", "23cm": "#639", "2.4GHz": "#639", "5.8GHz": "#639", "10GHz": "#639", "24GHz": "#639", "47GHz": "#639", "76GHz": "#639", }, "ColorBrewer": { "2200m": "#54278f", "600m": "#756bb1", "160m": "#9e9ac8", "80m": "#cbc9e2", "60m": "#08519c", "40m": "#3182bd", "30m": "#6baed6", "20m": "#bdd7e7", "17m": "#006d2c", "15m": "#31a354", "12m": "#74c476", "11m": "#bae4b3", "10m": "#a63603", "6m": "#e6550d", "5m": "#fd8d3c", "4m": "#fdbe85", "2m": "#a50f15", "1.25m": "#de2d26", "70cm": "#fb6a4a", "23cm": "#fcae91", "2.4GHz": "#636363", "5.8GHz": "#636363", "10GHz": "#969696", "24GHz": "#969696", "47GHz": "#cccccc", "76GHz": "#cccccc", }, "IWantHue": { "2200m": "#409271", "600m": "#b03ce1", "160m": "#50c640", "80m": "#d545b7", "60m": "#99b936", "40m": "#7260db", "30m": "#60af57", "20m": "#d54788", "17m": "#58c79f", "15m": "#e2462a", "12m": "#49b1d3", "11m": "#df872f", "10m": "#506bb0", "6m": "#c6a639", "5m": "#9554a3", "4m": "#36783c", "2m": "#da405b", "1.25m": "#657527", "70cm": "#8c97e2", "23cm": "#b44f2f", "2.4GHz": "#d386c8", "5.8GHz": "#aaac66", "10GHz": "#9d4760", "24GHz": "#90672c", "47GHz": "#e08086", "76GHz": "#dc9769", }, "IWantHue (Color Blind)": { "2200m": "#bf9e3d", "600m": "#9d2fec", "160m": "#79df39", "80m": "#d445db", "60m": "#5dd175", "40m": "#814dd8", "30m": "#d7ce2f", "20m": "#657af1", "17m": "#8cc34a", "15m": "#d635aa", "12m": "#6cbd80", "11m": "#b860c1", "10m": "#e48721", "6m": "#686ccc", "5m": "#d44e2b", "4m": "#51b3db", "2m": "#d74058", "1.25m": "#56c5ad", "70cm": "#d0478d", "23cm": "#708940", "2.4GHz": "#c380c2", "5.8GHz": "#cab775", "10GHz": "#7a7fc2", "24GHz": "#b87148", "47GHz": "#bd678c", "76GHz": "#c3666b", }, "Mokole": { "2200m": "#8b4513", "600m": "#006400", "160m": "#808000", "80m": "#483d8b", "60m": "#5f9ea0", "40m": "#000080", "30m": "#9acd32", "20m": "#8b008b", "17m": "#ff0000", "15m": "#ff8c00", "12m": "#ffd700", "11m": "#7fff00", "10m": "#8a2be2", "6m": "#00ff7f", "5m": "#dc143c", "4m": "#00bfff", "2m": "#0000ff", "1.25m": "#d8bfd8", "70cm": "#ff00ff", "23cm": "#1e90ff", "2.4GHz": "#db7093", "5.8GHz": "#f0e68c", "10GHz": "#ff1493", "24GHz": "#ffa07a", "47GHz": "#ee82ee", "76GHz": "#7fffd4", } }; let bandColorScheme = "PSK Reporter (Adjusted)"; // Set the band colour scheme. Returns true if successful, false if the requested scheme was not known function setBandColorScheme(scheme) { let ret = BAND_COLOR_SCHEMES[scheme] if (ret) { bandColorScheme = scheme; } return ret; } // Get the list of known bands function getKnownBands() { return Array.from(Object.keys(BAND_COLOR_SCHEMES[bandColorScheme])); } // Get the list of available band colour schemes function getAvailableBandColorSchemes() { return Array.from(Object.keys(BAND_COLOR_SCHEMES)); } // Band name to colour (in the current colour scheme). If the band is unknown, black will be returned. function bandToColor(band) { let col = (band != null) ? BAND_COLOR_SCHEMES[bandColorScheme][band] : null; if (col) { return col; } else { return "black"; } } // Band name to contrast colour (in the current colour scheme). This is either black or white, contrasting as well as // possible with the band colour. If the band is unknown, white will be returned. function bandToContrastColor(band) { let tc = tinycolor(bandToColor(band)); return tc.isLight() ? "black" : "white"; } const MODE_TYPE_COLOR_SCHEMES = { "CW": "green", "PHONE": "red", "DATA": "blue" } // Mode type (CW, PHONE, DATA) to colour. If the mode type is unknown, black will be returned. function modeTypeToColor(modeType) { let col = (modeType != null) ? MODE_TYPE_COLOR_SCHEMES[modeType.toUpperCase()] : null; if (col) { return col; } else { return "black"; } } const SIG_ICONS = { "POTA": "fa-tree", "SOTA": "fa-mountain-sun", "WWFF": "fa-seedling", "GMA": "fa-person-hiking", "WWBOTA": "fa-radiation", "HEMA": "fa-mound", "IOTA": "fa-umbrella-beach", "MOTA": "fa-fan", "ARLHS": "fa-tower-observation", "ILLW": "fa-tower-observation", "SIOTA": "fa-wheat-awn", "WCA": "fa-chess-rook", "ZLOTA": "fa-kiwi-bird", "WOTA": "fa-w", "BOTA": "fa-water", "KRMNPA": "fa-earth-oceania", "WAB": "fa-table-cells-large", "WAI": "fa-table-cells-large", "TOTA": "fa-toilet" } // Get the Font Awesome icon for a given SIG. If the SIG is unknown, the provided default symbol will be returned function sigToIcon(sig, defaultIcon) { let col = (sig != null) ? SIG_ICONS[sig.toUpperCase()] : null; if (col) { return col; } else { return defaultIcon; } } // Get the list of known SIGs function getKnownSIGs() { return Array.from(Object.keys(SIG_ICONS)); }