mirror of
https://github.com/smittix/intercept.git
synced 2026-07-16 13:28:11 -07:00
Switch app font to JetBrains Mono
This commit is contained in:
@@ -25,7 +25,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
|
font-family: var(--font-sans);
|
||||||
background: var(--bg-dark);
|
background: var(--bg-dark);
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
@@ -94,7 +94,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
letter-spacing: 2px;
|
letter-spacing: 2px;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
|
font-family: var(--font-sans);
|
||||||
background: var(--bg-dark);
|
background: var(--bg-dark);
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
|
font-family: var(--font-sans);
|
||||||
background: var(--bg-dark);
|
background: var(--bg-dark);
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
@@ -97,7 +97,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
letter-spacing: 2px;
|
letter-spacing: 2px;
|
||||||
@@ -438,7 +438,7 @@ body {
|
|||||||
padding: 10px 15px;
|
padding: 10px 15px;
|
||||||
background: rgba(74, 158, 255, 0.05);
|
background: rgba(74, 158, 255, 0.05);
|
||||||
border-bottom: 1px solid rgba(74, 158, 255, 0.1);
|
border-bottom: 1px solid rgba(74, 158, 255, 0.1);
|
||||||
font-family: 'Orbitron', 'Terminus', monospace;
|
font-family: 'Orbitron', 'JetBrains Mono', monospace;
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
letter-spacing: 2px;
|
letter-spacing: 2px;
|
||||||
@@ -510,7 +510,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.vessel-name {
|
.vessel-name {
|
||||||
font-family: 'Orbitron', 'Terminus', monospace;
|
font-family: 'Orbitron', 'JetBrains Mono', monospace;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: var(--accent-cyan);
|
color: var(--accent-cyan);
|
||||||
@@ -604,7 +604,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.vessel-item-name {
|
.vessel-item-name {
|
||||||
font-family: 'Orbitron', 'Terminus', monospace;
|
font-family: 'Orbitron', 'JetBrains Mono', monospace;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: var(--accent-cyan);
|
color: var(--accent-cyan);
|
||||||
@@ -1148,7 +1148,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.dsc-distress-alert .dsc-alert-header {
|
.dsc-distress-alert .dsc-alert-header {
|
||||||
font-family: 'Orbitron', 'Terminus', monospace;
|
font-family: 'Orbitron', 'JetBrains Mono', monospace;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: var(--accent-red);
|
color: var(--accent-red);
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.device-name {
|
.device-name {
|
||||||
font-family: 'Inter', -apple-system, sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: var(--text-primary, #e0e0e0);
|
color: var(--text-primary, #e0e0e0);
|
||||||
@@ -221,7 +221,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.device-range-band .range-label {
|
.device-range-band .range-label {
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: var(--range-color);
|
color: var(--range-color);
|
||||||
@@ -262,7 +262,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.device-manufacturer .mfr-name {
|
.device-manufacturer .mfr-name {
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ============================================
|
/* ============================================
|
||||||
@@ -426,7 +426,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.message-card-title {
|
.message-card-title {
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: var(--text-primary, #e0e0e0);
|
color: var(--text-primary, #e0e0e0);
|
||||||
|
|||||||
@@ -107,7 +107,7 @@
|
|||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
@@ -864,7 +864,7 @@
|
|||||||
.signal-search-input {
|
.signal-search-input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 6px 10px;
|
padding: 6px 10px;
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
background: var(--bg-card);
|
background: var(--bg-card);
|
||||||
|
|||||||
@@ -73,8 +73,8 @@
|
|||||||
/* ============================================
|
/* ============================================
|
||||||
TYPOGRAPHY
|
TYPOGRAPHY
|
||||||
============================================ */
|
============================================ */
|
||||||
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
--font-sans: 'JetBrains Mono', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
||||||
--font-mono: 'Terminus', 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
|
--font-mono: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
|
||||||
|
|
||||||
/* Font sizes */
|
/* Font sizes */
|
||||||
--text-xs: 10px;
|
--text-xs: 10px;
|
||||||
|
|||||||
@@ -65,12 +65,3 @@
|
|||||||
font-display: swap;
|
font-display: swap;
|
||||||
src: url('/static/vendor/fonts/JetBrainsMono-Bold.woff2') format('woff2');
|
src: url('/static/vendor/fonts/JetBrainsMono-Bold.woff2') format('woff2');
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Terminus - Monospace UI font */
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Terminus';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 400;
|
|
||||||
font-display: swap;
|
|
||||||
src: url('/static/vendor/fonts/Terminus.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
color: var(--text-secondary, #b7c1cf);
|
color: var(--text-secondary, #b7c1cf);
|
||||||
font-family: 'Space Grotesk', 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
border: 1px solid var(--border-light, #2b3645);
|
border: 1px solid var(--border-light, #2b3645);
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
color: var(--text-primary, #e7ebf2);
|
color: var(--text-primary, #e7ebf2);
|
||||||
font-family: 'Space Grotesk', 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
color: var(--text-secondary, #b7c1cf);
|
color: var(--text-secondary, #b7c1cf);
|
||||||
font-family: 'Space Grotesk', 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|||||||
+15
-25
@@ -1,13 +1,3 @@
|
|||||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Terminus';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 400;
|
|
||||||
font-display: swap;
|
|
||||||
src: url('/static/vendor/fonts/Terminus.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
* {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@@ -81,7 +71,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
font-family: var(--font-sans);
|
||||||
background: var(--bg-primary);
|
background: var(--bg-primary);
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
@@ -348,7 +338,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.changelog-date {
|
.changelog-date {
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
color: var(--text-dim);
|
color: var(--text-dim);
|
||||||
}
|
}
|
||||||
@@ -360,7 +350,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.changelog-list li {
|
.changelog-list li {
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
color: var(--text-secondary);
|
color: var(--text-secondary);
|
||||||
margin-bottom: 6px;
|
margin-bottom: 6px;
|
||||||
@@ -452,7 +442,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.mode-card .mode-desc {
|
.mode-card .mode-desc {
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 0.65rem;
|
font-size: 0.65rem;
|
||||||
color: var(--text-dim);
|
color: var(--text-dim);
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
@@ -525,7 +515,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.welcome-footer p {
|
.welcome-footer p {
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
color: var(--text-dim);
|
color: var(--text-dim);
|
||||||
letter-spacing: 0.1em;
|
letter-spacing: 0.1em;
|
||||||
@@ -739,7 +729,7 @@ header h1 {
|
|||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
color: var(--text-secondary);
|
color: var(--text-secondary);
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@@ -786,7 +776,7 @@ header h1 {
|
|||||||
border: 1px solid var(--accent-cyan);
|
border: 1px solid var(--accent-cyan);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
color: var(--accent-cyan);
|
color: var(--accent-cyan);
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@@ -822,7 +812,7 @@ header h1 {
|
|||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
color: var(--text-secondary);
|
color: var(--text-secondary);
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@@ -1665,7 +1655,7 @@ header h1 .tagline {
|
|||||||
background: var(--accent-green);
|
background: var(--accent-green);
|
||||||
border: none;
|
border: none;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
@@ -1702,7 +1692,7 @@ header h1 .tagline {
|
|||||||
background: var(--accent-red);
|
background: var(--accent-red);
|
||||||
border: none;
|
border: none;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
@@ -2097,7 +2087,7 @@ header h1 .tagline {
|
|||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
transition: all 0.2s ease;
|
transition: all 0.2s ease;
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
}
|
}
|
||||||
|
|
||||||
.control-btn:hover {
|
.control-btn:hover {
|
||||||
@@ -2512,7 +2502,7 @@ header h1 .tagline {
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
color: var(--text-secondary);
|
color: var(--text-secondary);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
transition: all 0.2s ease;
|
transition: all 0.2s ease;
|
||||||
@@ -4892,7 +4882,7 @@ body::before {
|
|||||||
color: #000;
|
color: #000;
|
||||||
border: none;
|
border: none;
|
||||||
padding: 12px 40px;
|
padding: 12px 40px;
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
letter-spacing: 2px;
|
letter-spacing: 2px;
|
||||||
@@ -6027,7 +6017,7 @@ body::before {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.module-header {
|
.module-header {
|
||||||
font-family: 'Orbitron', 'Terminus', monospace;
|
font-family: 'Orbitron', 'JetBrains Mono', monospace;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: var(--accent-cyan);
|
color: var(--accent-cyan);
|
||||||
@@ -6194,7 +6184,7 @@ body::before {
|
|||||||
/* Listening Mode Selector Buttons */
|
/* Listening Mode Selector Buttons */
|
||||||
.radio-mode-btn {
|
.radio-mode-btn {
|
||||||
padding: 12px 24px;
|
padding: 12px 24px;
|
||||||
font-family: 'Orbitron', 'Terminus', monospace;
|
font-family: 'Orbitron', 'JetBrains Mono', monospace;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
|
|||||||
@@ -3,15 +3,6 @@
|
|||||||
Shared responsive foundation for all pages
|
Shared responsive foundation for all pages
|
||||||
============================================ */
|
============================================ */
|
||||||
|
|
||||||
/* Terminus - bundled monospace */
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Terminus';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 400;
|
|
||||||
font-display: swap;
|
|
||||||
src: url('/static/vendor/fonts/Terminus.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ============== CSS VARIABLES ============== */
|
/* ============== CSS VARIABLES ============== */
|
||||||
:root {
|
:root {
|
||||||
/* Touch targets */
|
/* Touch targets */
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
|
font-family: var(--font-sans);
|
||||||
background: var(--bg-dark);
|
background: var(--bg-dark);
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
@@ -93,7 +93,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
font-family: 'Inter', sans-serif;
|
font-family: var(--font-sans);
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
letter-spacing: 3px;
|
letter-spacing: 3px;
|
||||||
|
|||||||
@@ -373,7 +373,7 @@ function showInfo(text) {
|
|||||||
|
|
||||||
const infoEl = document.createElement('div');
|
const infoEl = document.createElement('div');
|
||||||
infoEl.className = 'info-msg';
|
infoEl.className = 'info-msg';
|
||||||
infoEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #0a0a0a; border: 1px solid #1a1a1a; border-left: 2px solid #00d4ff; font-family: "Terminus", monospace; font-size: 11px; color: #888; word-break: break-all;';
|
infoEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #0a0a0a; border: 1px solid #1a1a1a; border-left: 2px solid #00d4ff; font-family: "JetBrains Mono", monospace; font-size: 11px; color: #888; word-break: break-all;';
|
||||||
infoEl.textContent = text;
|
infoEl.textContent = text;
|
||||||
output.insertBefore(infoEl, output.firstChild);
|
output.insertBefore(infoEl, output.firstChild);
|
||||||
}
|
}
|
||||||
@@ -387,7 +387,7 @@ function showError(text) {
|
|||||||
|
|
||||||
const errorEl = document.createElement('div');
|
const errorEl = document.createElement('div');
|
||||||
errorEl.className = 'error-msg';
|
errorEl.className = 'error-msg';
|
||||||
errorEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #1a0a0a; border: 1px solid #2a1a1a; border-left: 2px solid #ff3366; font-family: "Terminus", monospace; font-size: 11px; color: #ff6688; word-break: break-all;';
|
errorEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #1a0a0a; border: 1px solid #2a1a1a; border-left: 2px solid #ff3366; font-family: "JetBrains Mono", monospace; font-size: 11px; color: #ff6688; word-break: break-all;';
|
||||||
errorEl.textContent = '⚠ ' + text;
|
errorEl.textContent = '⚠ ' + text;
|
||||||
output.insertBefore(errorEl, output.firstChild);
|
output.insertBefore(errorEl, output.firstChild);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -813,11 +813,11 @@ function renderUpdateStatus(data) {
|
|||||||
<div style="display: grid; gap: 8px; font-size: 12px;">
|
<div style="display: grid; gap: 8px; font-size: 12px;">
|
||||||
<div style="display: flex; justify-content: space-between;">
|
<div style="display: flex; justify-content: space-between;">
|
||||||
<span style="color: var(--text-dim);">Current Version</span>
|
<span style="color: var(--text-dim);">Current Version</span>
|
||||||
<span style="font-family: 'Terminus', monospace; color: var(--text-primary);">v${data.current_version}</span>
|
<span style="font-family: 'JetBrains Mono', monospace; color: var(--text-primary);">v${data.current_version}</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex; justify-content: space-between;">
|
<div style="display: flex; justify-content: space-between;">
|
||||||
<span style="color: var(--text-dim);">Latest Version</span>
|
<span style="color: var(--text-dim);">Latest Version</span>
|
||||||
<span style="font-family: 'Terminus', monospace; color: ${data.update_available ? 'var(--accent-green)' : 'var(--text-primary)'};">v${data.latest_version}</span>
|
<span style="font-family: 'JetBrains Mono', monospace; color: ${data.update_available ? 'var(--accent-green)' : 'var(--text-primary)'};">v${data.latest_version}</span>
|
||||||
</div>
|
</div>
|
||||||
${data.last_check ? `
|
${data.last_check ? `
|
||||||
<div style="display: flex; justify-content: space-between;">
|
<div style="display: flex; justify-content: space-between;">
|
||||||
|
|||||||
@@ -1293,7 +1293,7 @@ function drawAudioVisualizer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ctx.fillStyle = 'rgba(255, 255, 255, 0.3)';
|
ctx.fillStyle = 'rgba(255, 255, 255, 0.3)';
|
||||||
ctx.font = '8px Terminus';
|
ctx.font = '8px JetBrains Mono';
|
||||||
ctx.fillText('0', 2, canvas.height - 2);
|
ctx.fillText('0', 2, canvas.height - 2);
|
||||||
ctx.fillText('4kHz', canvas.width / 4, canvas.height - 2);
|
ctx.fillText('4kHz', canvas.width / 4, canvas.height - 2);
|
||||||
ctx.fillText('8kHz', canvas.width / 2, canvas.height - 2);
|
ctx.fillText('8kHz', canvas.width / 2, canvas.height - 2);
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ const SpyStations = (function() {
|
|||||||
modeContainer.innerHTML = modes.map(m => `
|
modeContainer.innerHTML = modes.map(m => `
|
||||||
<label class="inline-checkbox">
|
<label class="inline-checkbox">
|
||||||
<input type="checkbox" data-mode="${m}" checked onchange="SpyStations.applyFilters()">
|
<input type="checkbox" data-mode="${m}" checked onchange="SpyStations.applyFilters()">
|
||||||
<span style="font-family: 'Terminus', monospace; font-size: 10px;">${m}</span>
|
<span style="font-family: 'JetBrains Mono', monospace; font-size: 10px;">${m}</span>
|
||||||
</label>
|
</label>
|
||||||
`).join('');
|
`).join('');
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
@@ -8,7 +8,7 @@
|
|||||||
{% if offline_settings.fonts_source == 'local' %}
|
{% if offline_settings.fonts_source == 'local' %}
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
|
||||||
{% else %}
|
{% else %}
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<!-- Leaflet.js - Conditional CDN/Local loading -->
|
<!-- Leaflet.js - Conditional CDN/Local loading -->
|
||||||
{% if offline_settings.assets_source == 'local' %}
|
{% if offline_settings.assets_source == 'local' %}
|
||||||
@@ -1387,7 +1387,7 @@ ACARS: ${r.statistics.acarsMessages} messages`;
|
|||||||
// Range label
|
// Range label
|
||||||
const rangeNm = Math.round(maxRange * ratio);
|
const rangeNm = Math.round(maxRange * ratio);
|
||||||
ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
|
ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
|
||||||
ctx.font = '10px Terminus';
|
ctx.font = '10px JetBrains Mono';
|
||||||
ctx.fillText(`${rangeNm}`, this.centerX + r + 5, this.centerY + 4);
|
ctx.fillText(`${rangeNm}`, this.centerX + r + 5, this.centerY + 4);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1528,7 +1528,7 @@ ACARS: ${r.statistics.acarsMessages} messages`;
|
|||||||
// Label
|
// Label
|
||||||
if (blip.callsign || blip.selected) {
|
if (blip.callsign || blip.selected) {
|
||||||
ctx.fillStyle = '#00ffff';
|
ctx.fillStyle = '#00ffff';
|
||||||
ctx.font = '9px Terminus';
|
ctx.font = '9px JetBrains Mono';
|
||||||
ctx.textAlign = 'left';
|
ctx.textAlign = 'left';
|
||||||
ctx.fillText(blip.callsign || blip.icao, blip.x + 8, blip.y - 5);
|
ctx.fillText(blip.callsign || blip.icao, blip.x + 8, blip.y - 5);
|
||||||
if (blip.altitude) {
|
if (blip.altitude) {
|
||||||
@@ -1646,7 +1646,7 @@ ACARS: ${r.statistics.acarsMessages} messages`;
|
|||||||
// Range label
|
// Range label
|
||||||
const rangeNm = Math.round(maxRange * ratio);
|
const rangeNm = Math.round(maxRange * ratio);
|
||||||
ctx.fillStyle = 'rgba(0, 255, 255, 0.4)';
|
ctx.fillStyle = 'rgba(0, 255, 255, 0.4)';
|
||||||
ctx.font = '10px Terminus';
|
ctx.font = '10px JetBrains Mono';
|
||||||
ctx.fillText(`${rangeNm}nm`, centerX + r + 5, centerY);
|
ctx.fillText(`${rangeNm}nm`, centerX + r + 5, centerY);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,11 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>ADS-B History // INTERCEPT</title>
|
<title>ADS-B History // INTERCEPT</title>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
{% if offline_settings.fonts_source == 'local' %}
|
||||||
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
|
||||||
|
{% else %}
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||||
|
{% endif %}
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/responsive.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/responsive.css') }}">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/global-nav.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/global-nav.css') }}">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/adsb_history.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/adsb_history.css') }}">
|
||||||
@@ -466,7 +470,7 @@
|
|||||||
|
|
||||||
if (!points.length) {
|
if (!points.length) {
|
||||||
ctx.fillStyle = 'rgba(156, 163, 175, 0.6)';
|
ctx.fillStyle = 'rgba(156, 163, 175, 0.6)';
|
||||||
ctx.font = '12px "Terminus", monospace';
|
ctx.font = '12px "JetBrains Mono", monospace';
|
||||||
ctx.fillText(`No ${label.toLowerCase()} data`, 12, height / 2);
|
ctx.fillText(`No ${label.toLowerCase()} data`, 12, height / 2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -474,7 +478,7 @@
|
|||||||
const series = points.map(p => p[field]).filter(v => v !== null && v !== undefined);
|
const series = points.map(p => p[field]).filter(v => v !== null && v !== undefined);
|
||||||
if (!series.length) {
|
if (!series.length) {
|
||||||
ctx.fillStyle = 'rgba(156, 163, 175, 0.6)';
|
ctx.fillStyle = 'rgba(156, 163, 175, 0.6)';
|
||||||
ctx.font = '12px "Terminus", monospace';
|
ctx.font = '12px "JetBrains Mono", monospace';
|
||||||
ctx.fillText(`No ${label.toLowerCase()} data`, 12, height / 2);
|
ctx.fillText(`No ${label.toLowerCase()} data`, 12, height / 2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -515,7 +519,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
ctx.fillStyle = 'rgba(226, 232, 240, 0.8)';
|
ctx.fillStyle = 'rgba(226, 232, 240, 0.8)';
|
||||||
ctx.font = '11px "Terminus", monospace';
|
ctx.font = '11px "JetBrains Mono", monospace';
|
||||||
ctx.fillText(`${maxVal} ${unit}`, 12, padding);
|
ctx.fillText(`${maxVal} ${unit}`, 12, padding);
|
||||||
ctx.fillText(`${minVal} ${unit}`, 12, height - padding);
|
ctx.fillText(`${minVal} ${unit}`, 12, height - padding);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
{% if offline_settings.fonts_source == 'local' %}
|
{% if offline_settings.fonts_source == 'local' %}
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
|
||||||
{% else %}
|
{% else %}
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&family=Orbitron:wght@400;500;600;700&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Orbitron:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<!-- Leaflet.js - Conditional CDN/Local loading -->
|
<!-- Leaflet.js - Conditional CDN/Local loading -->
|
||||||
{% if offline_settings.assets_source == 'local' %}
|
{% if offline_settings.assets_source == 'local' %}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
{% if offline_settings.fonts_source == 'local' %}
|
{% if offline_settings.fonts_source == 'local' %}
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
|
||||||
{% else %}
|
{% else %}
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<!-- Leaflet.js for APRS map - Conditional CDN/Local loading -->
|
<!-- Leaflet.js for APRS map - Conditional CDN/Local loading -->
|
||||||
{% if offline_settings.assets_source == 'local' %}
|
{% if offline_settings.assets_source == 'local' %}
|
||||||
@@ -4223,7 +4223,7 @@
|
|||||||
|
|
||||||
const infoEl = document.createElement('div');
|
const infoEl = document.createElement('div');
|
||||||
infoEl.className = 'info-msg';
|
infoEl.className = 'info-msg';
|
||||||
infoEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #0a0a0a; border: 1px solid #1a1a1a; border-left: 2px solid #00d4ff; font-family: "Terminus", monospace; font-size: 11px; color: #888; word-break: break-all;';
|
infoEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #0a0a0a; border: 1px solid #1a1a1a; border-left: 2px solid #00d4ff; font-family: "JetBrains Mono", monospace; font-size: 11px; color: #888; word-break: break-all;';
|
||||||
infoEl.textContent = text;
|
infoEl.textContent = text;
|
||||||
output.insertBefore(infoEl, output.firstChild);
|
output.insertBefore(infoEl, output.firstChild);
|
||||||
}
|
}
|
||||||
@@ -4239,7 +4239,7 @@
|
|||||||
|
|
||||||
const errorEl = document.createElement('div');
|
const errorEl = document.createElement('div');
|
||||||
errorEl.className = 'error-msg';
|
errorEl.className = 'error-msg';
|
||||||
errorEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #1a0a0a; border: 1px solid #2a1a1a; border-left: 2px solid #ff3366; font-family: "Terminus", monospace; font-size: 11px; color: #ff6688; word-break: break-all;';
|
errorEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #1a0a0a; border: 1px solid #2a1a1a; border-left: 2px solid #ff3366; font-family: "JetBrains Mono", monospace; font-size: 11px; color: #ff6688; word-break: break-all;';
|
||||||
errorEl.textContent = '⚠ ' + text;
|
errorEl.textContent = '⚠ ' + text;
|
||||||
output.insertBefore(errorEl, output.firstChild);
|
output.insertBefore(errorEl, output.firstChild);
|
||||||
}
|
}
|
||||||
@@ -6855,7 +6855,7 @@
|
|||||||
|
|
||||||
// Draw total in center
|
// Draw total in center
|
||||||
ctx.fillStyle = '#fff';
|
ctx.fillStyle = '#fff';
|
||||||
ctx.font = 'bold 16px Terminus';
|
ctx.font = 'bold 16px JetBrains Mono';
|
||||||
ctx.textAlign = 'center';
|
ctx.textAlign = 'center';
|
||||||
ctx.textBaseline = 'middle';
|
ctx.textBaseline = 'middle';
|
||||||
ctx.fillText(total, cx, cy);
|
ctx.fillText(total, cx, cy);
|
||||||
@@ -8625,7 +8625,7 @@
|
|||||||
// Label
|
// Label
|
||||||
if (el > 0) {
|
if (el > 0) {
|
||||||
ctx.fillStyle = '#444';
|
ctx.fillStyle = '#444';
|
||||||
ctx.font = '10px Terminus';
|
ctx.font = '10px JetBrains Mono';
|
||||||
ctx.textAlign = 'center';
|
ctx.textAlign = 'center';
|
||||||
ctx.fillText(el + '°', cx, cy - r + 12);
|
ctx.fillText(el + '°', cx, cy - r + 12);
|
||||||
}
|
}
|
||||||
@@ -8698,7 +8698,7 @@
|
|||||||
|
|
||||||
// Label
|
// Label
|
||||||
ctx.fillStyle = '#fff';
|
ctx.fillStyle = '#fff';
|
||||||
ctx.font = '11px Terminus';
|
ctx.font = '11px JetBrains Mono';
|
||||||
ctx.fillText(pass.satellite, maxX + 10, maxY - 5);
|
ctx.fillText(pass.satellite, maxX + 10, maxY - 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
{% if offline_settings and offline_settings.fonts_source == 'local' %}
|
{% if offline_settings and offline_settings.fonts_source == 'local' %}
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
|
||||||
{% else %}
|
{% else %}
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{# Core CSS (Design System) #}
|
{# Core CSS (Design System) #}
|
||||||
|
|||||||
@@ -4,7 +4,11 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Network Monitor // INTERCEPT</title>
|
<title>Network Monitor // INTERCEPT</title>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
{% if offline_settings.fonts_source == 'local' %}
|
||||||
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
|
||||||
|
{% else %}
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||||
|
{% endif %}
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/responsive.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/responsive.css') }}">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/agents.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/agents.css') }}">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/global-nav.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/global-nav.css') }}">
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
<div class="settings-row">
|
<div class="settings-row">
|
||||||
<div class="settings-label">
|
<div class="settings-label">
|
||||||
<span class="settings-label-text">Web Fonts</span>
|
<span class="settings-label-text">Web Fonts</span>
|
||||||
<span class="settings-label-desc">Inter, Terminus</span>
|
<span class="settings-label-desc">JetBrains Mono</span>
|
||||||
</div>
|
</div>
|
||||||
<select id="fontsSource" class="settings-select" onchange="Settings.setFontsSource(this.value)">
|
<select id="fontsSource" class="settings-select" onchange="Settings.setFontsSource(this.value)">
|
||||||
<option value="cdn">Google Fonts (Online)</option>
|
<option value="cdn">Google Fonts (Online)</option>
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
<span class="asset-badge checking" id="statusInter">Checking...</span>
|
<span class="asset-badge checking" id="statusInter">Checking...</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="asset-status-row">
|
<div class="asset-status-row">
|
||||||
<span class="asset-name">Terminus</span>
|
<span class="asset-name">JetBrains Mono</span>
|
||||||
<span class="asset-badge checking" id="statusJetbrains">Checking...</span>
|
<span class="asset-badge checking" id="statusJetbrains">Checking...</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -315,4 +315,3 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
{% if offline_settings.fonts_source == 'local' %}
|
{% if offline_settings.fonts_source == 'local' %}
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
|
||||||
{% else %}
|
{% else %}
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<!-- Leaflet.js - Conditional CDN/Local loading -->
|
<!-- Leaflet.js - Conditional CDN/Local loading -->
|
||||||
{% if offline_settings.assets_source == 'local' %}
|
{% if offline_settings.assets_source == 'local' %}
|
||||||
@@ -593,7 +593,7 @@
|
|||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
|
|
||||||
ctx.fillStyle = 'rgba(0, 212, 255, 0.4)';
|
ctx.fillStyle = 'rgba(0, 212, 255, 0.4)';
|
||||||
ctx.font = '10px Terminus';
|
ctx.font = '10px JetBrains Mono';
|
||||||
ctx.fillText(el + '°', cx + 5, cy - r + 12);
|
ctx.fillText(el + '°', cx + 5, cy - r + 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -961,7 +961,7 @@
|
|||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
|
|
||||||
ctx.fillStyle = 'rgba(0, 212, 255, 0.4)';
|
ctx.fillStyle = 'rgba(0, 212, 255, 0.4)';
|
||||||
ctx.font = '10px Terminus';
|
ctx.font = '10px JetBrains Mono';
|
||||||
ctx.fillText(elRing + '°', cx + 5, cy - r + 12);
|
ctx.fillText(elRing + '°', cx + 5, cy - r + 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1028,7 +1028,7 @@
|
|||||||
ctx.textAlign = 'center';
|
ctx.textAlign = 'center';
|
||||||
ctx.fillText(satellites[selectedSatellite]?.name || 'SAT', x, y - 20);
|
ctx.fillText(satellites[selectedSatellite]?.name || 'SAT', x, y - 20);
|
||||||
|
|
||||||
ctx.font = '10px Terminus';
|
ctx.font = '10px JetBrains Mono';
|
||||||
ctx.fillStyle = el > 0 ? '#00ff88' : '#ff4444';
|
ctx.fillStyle = el > 0 ? '#00ff88' : '#ff4444';
|
||||||
ctx.fillText(el.toFixed(1) + '°', x, y + 25);
|
ctx.fillText(el.toFixed(1) + '°', x, y + 25);
|
||||||
} else {
|
} else {
|
||||||
@@ -1077,7 +1077,7 @@
|
|||||||
ctx.textAlign = 'center';
|
ctx.textAlign = 'center';
|
||||||
ctx.fillText(satellites[selectedSatellite]?.name || 'SAT', x, y - 20);
|
ctx.fillText(satellites[selectedSatellite]?.name || 'SAT', x, y - 20);
|
||||||
|
|
||||||
ctx.font = '10px Terminus';
|
ctx.font = '10px JetBrains Mono';
|
||||||
ctx.fillStyle = el > 0 ? '#00ff88' : '#ff4444';
|
ctx.fillStyle = el > 0 ? '#00ff88' : '#ff4444';
|
||||||
ctx.fillText(el.toFixed(1) + '°', x, y + 25);
|
ctx.fillText(el.toFixed(1) + '°', x, y + 25);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user