diff --git a/css/k5bss-style.css b/css/k5bss-style.css index 0744c65..4aa14d6 100644 --- a/css/k5bss-style.css +++ b/css/k5bss-style.css @@ -193,6 +193,19 @@ padding: 2rem; } + .log-error { + background: var(--surface); + border: 1px solid var(--red); + border-radius: 4px; + color: var(--red); + font-family: var(--font-mono); + font-size: 0.85rem; + letter-spacing: 0.1em; + padding: 1rem 1.5rem; + margin-bottom: 1.5rem; + } + .log-error[hidden] { display: none; } + .section { display: none; } .section.active { display: block; } diff --git a/js/k5bss.js b/js/k5bss.js index 6bb8720..4389798 100644 --- a/js/k5bss.js +++ b/js/k5bss.js @@ -1,12 +1,11 @@ // ─── DATA ─────────────────────────────────────────────────── -const RAW_DATA = [{"call":"WE2M","name":"ROBERT A HOGUE","date":"2021-01-24","time":"0553","band":"40M","mode":"FT8","rst_sent":"-20","rst_rcvd":"-10","country":"United States","state":"WA","qth":"E WENATCHEE","lotw":"Y","dist":"2782","grid":"CN97UJ"},{"call":"WD8AXA","name":"CHARLES D AGOSTI","date":"2021-01-24","time":"0555","band":"40M","mode":"FT8","rst_sent":"-07","rst_rcvd":"-11","country":"United States","state":"MI","qth":"PORTAGE","lotw":"N","dist":"1291","grid":"EN72ef"},{"call":"KG4IXS","name":"RICHARD A VAUGHAN","date":"2021-01-24","time":"0558","band":"40M","mode":"FT8","rst_sent":"+00","rst_rcvd":"-13","country":"United States","state":"VA","qth":"CHATHAM","lotw":"Y","dist":"1390","grid":"FM06HU"},{"call":"KE0DC","name":"","date":"2021-01-24","time":"0600","band":"40M","mode":"FT8","rst_sent":"-08","rst_rcvd":"-09","country":"United States","state":"CO","qth":"AURORA","lotw":"Y","dist":"1274","grid":"DM79OQ"},{"call":"KC0HHN","name":"","date":"2021-01-24","time":"0604","band":"40M","mode":"FT8","rst_sent":"-12","rst_rcvd":"-08","country":"United States","state":"IA","qth":"","lotw":"N","dist":"","grid":"EN31"},{"call":"WB0OEW","name":"JAMES D VOGT","date":"2021-01-24","time":"0606","band":"40M","mode":"FT8","rst_sent":"-10","rst_rcvd":"-15","country":"United States","state":"MO","qth":"CAMDENTON","lotw":"Y","dist":"747","grid":"EM37TH"},{"call":"N4JKO","name":"GARY E HORTON","date":"2021-01-24","time":"0608","band":"40M","mode":"FT8","rst_sent":"-12","rst_rcvd":"-15","country":"United States","state":"TN","qth":"","lotw":"N","dist":"","grid":"EM65RT"},{"call":"WW4LL","name":"LESTER P LEEPER","date":"2021-01-24","time":"0610","band":"40M","mode":"FT8","rst_sent":"-14","rst_rcvd":"-13","country":"United States","state":"GA","qth":"BOWDON","lotw":"Y","dist":"575","grid":"EM73DS"},{"call":"K0MBT","name":"MICHAEL B TEDESCO","date":"2021-01-24","time":"0612","band":"40M","mode":"FT8","rst_sent":"-09","rst_rcvd":"-18","country":"United States","state":"MN","qth":"SHAKOPEE","lotw":"Y","dist":"1247","grid":"EN34HE"},{"call":"WB4LHD","name":"ROY A MCDANIEL","date":"2021-01-24","time":"0618","band":"40M","mode":"FT8","rst_sent":"-14","rst_rcvd":"-12","country":"United States","state":"NC","qth":"SANFORD","lotw":"Y","dist":"1118","grid":"FM03HF"},{"call":"N0KJA","name":"FRANK O KORANDA","date":"2021-01-24","time":"0620","band":"40M","mode":"FT8","rst_sent":"-10","rst_rcvd":"-14","country":"United States","state":"KS","qth":"WICHITA","lotw":"Y","dist":"641","grid":"EM17PT"},{"call":"W9JML","name":"JAMES M LAURENDEAU","date":"2021-01-24","time":"0623","band":"40M","mode":"FT8","rst_sent":"-05","rst_rcvd":"-16","country":"United States","state":"IL","qth":"COLLINSVILLE","lotw":"Y","dist":"668","grid":"EM58GI"},{"call":"K9ADV","name":"DWIGHT A VANDERLINDEN","date":"2021-01-24","time":"0625","band":"40M","mode":"FT8","rst_sent":"-11","rst_rcvd":"-13","country":"United States","state":"IN","qth":"INDIANAPOLIS","lotw":"Y","dist":"929","grid":"EM79MF"},{"call":"WB8YYY","name":"ERNEST E MUENZER","date":"2021-01-24","time":"0628","band":"40M","mode":"FT8","rst_sent":"-10","rst_rcvd":"-05","country":"United States","state":"MI","qth":"","lotw":"Y","dist":"","grid":"EN72"},{"call":"KD2UKS","name":"RAYMOND JOSEPH MCDERMOTT","date":"2021-01-24","time":"0641","band":"40M","mode":"FT8","rst_sent":"-12","rst_rcvd":"-15","country":"United States","state":"NY","qth":"MASTIC","lotw":"N","dist":"1561","grid":"FN30HT"},{"call":"KD8IYI","name":"JEFFREY C WHITLEY","date":"2021-01-24","time":"0644","band":"40M","mode":"FT8","rst_sent":"-13","rst_rcvd":"-13","country":"United States","state":"OH","qth":"","lotw":"Y","dist":"","grid":"EM89LG"},{"call":"K9DW","name":"DAN WELBORN","date":"2021-01-24","time":"0647","band":"40M","mode":"FT8","rst_sent":"-09","rst_rcvd":"-06","country":"United States","state":"AL","qth":"DOTHAN","lotw":"Y","dist":"435","grid":"EM64SA"},{"call":"K8DO","name":"DEAN L OSTERMAN","date":"2021-01-24","time":"0649","band":"40M","mode":"FT8","rst_sent":"-11","rst_rcvd":"-10","country":"United States","state":"MI","qth":"ALLENDALE","lotw":"Y","dist":"1298","grid":"EN62OX"},{"call":"K6VMV","name":"VICTOR M VALADEZ","date":"2021-01-24","time":"0651","band":"40M","mode":"FT8","rst_sent":"-08","rst_rcvd":"-12","country":"United States","state":"CA","qth":"MANTECA","lotw":"N","dist":"1954","grid":"CM97KC"},{"call":"W0ULF","name":"MIKE WOLFE","date":"2021-01-24","time":"0653","band":"40M","mode":"FT8","rst_sent":"-11","rst_rcvd":"-13","country":"United States","state":"NE","qth":"OMAHA","lotw":"Y","dist":"1012","grid":"EN21WC"}]; - let ALL_DATA = []; let filteredData = []; let sortKey = 'date'; let sortDir = -1; // -1 = desc let currentPage = 1; const PAGE_SIZE = 50; +let logUnavailable = false; // ─── FULL LOG ──────────────────────────────────────────────── const FULL_LOG_URL = 'data/k5bss-log.json'; @@ -17,19 +16,27 @@ async function loadFullLog() { if (!res.ok) throw new Error(`HTTP ${res.status}`); return await res.json(); } catch (err) { - console.warn('Could not load full log, using sample data:', err); - return []; + console.warn('Could not load full log:', err); + return null; } } async function init() { - const fullLog = await loadFullLog(); - ALL_DATA = fullLog.length ? fullLog : RAW_DATA; + const log = await loadFullLog(); + logUnavailable = !log; + ALL_DATA = log || []; filteredData = [...ALL_DATA]; + if (logUnavailable) { + document.getElementById('log-error').hidden = false; + renderTable(); + return; + } + // Update stats const countries = new Set(ALL_DATA.map(r => r.country).filter(Boolean)); const states = new Set(ALL_DATA.filter(r => r.country === 'United States').map(r => r.state).filter(Boolean)); + document.getElementById('stat-qso').textContent = ALL_DATA.length.toLocaleString(); document.getElementById('stat-dxcc').textContent = countries.size; document.getElementById('stat-states').textContent = states.size; @@ -90,6 +97,7 @@ function buildDashboard() { } function drawActivityChart() { + if (!ALL_DATA.length) return; const canvas = document.getElementById('activityCanvas'); const dpr = window.devicePixelRatio || 1; const W = canvas.parentElement.offsetWidth - 48; @@ -219,7 +227,8 @@ function renderTable() { `${total.toLocaleString()} QSOs · Page ${currentPage} of ${Math.max(1,pages)}`; if (slice.length === 0) { - tbody.innerHTML = 'NO CONTACTS FOUND'; + const msg = logUnavailable ? 'LOG UNAVAILABLE — TRY AGAIN LATER' : 'NO CONTACTS FOUND'; + tbody.innerHTML = `${msg}`; } else { tbody.innerHTML = slice.map(r => { const timeStr = r.time ? r.time.slice(0,2)+':'+r.time.slice(2,4) : ''; diff --git a/k5bss.html b/k5bss.html index c2201b7..8d02e5e 100755 --- a/k5bss.html +++ b/k5bss.html @@ -30,7 +30,7 @@
- 2,112 + — QSOs Logged
@@ -59,6 +59,10 @@
+ +