Fix: Dark-Mode Karte + Badge-Farben + --c-bg-secondary
Karte: - Dark-Mode: CartoDB Dark Matter Tiles statt OSM Standard - MutationObserver + matchMedia watchee für Live-Theme-Wechsel - _buildTileLayer() / _applyTileTheme() / _isDarkMode() Badges litters.js: - Hardgekodete dunkle Hintergründe → CSS-Klassen (badge-warning/-success/-muted) - Funktioniert jetzt in Light + Dark Mode korrekt movies.css: - .movie-tag-stirbt/.movie-tag-ueberlebt → CSS-Variablen (danger-/success-subtle) - Kein weißer Hintergrund mehr in Dark Mode --c-bg-secondary: Zoom-Control 30px bleiben aus dem letzten Commit SW by-v1022, APP_VER 1022
This commit is contained in:
parent
161c1e3f73
commit
721e630a34
6 changed files with 63 additions and 24 deletions
|
|
@ -11,9 +11,11 @@ window.Page_map = (() => {
|
|||
let _map = null;
|
||||
let _leafletLoaded = false;
|
||||
let _userPos = null;
|
||||
let _weatherLoaded = false;
|
||||
let _placingMarker = false;
|
||||
let _tempMarker = null;
|
||||
let _weatherLoaded = false;
|
||||
let _placingMarker = false;
|
||||
let _tempMarker = null;
|
||||
let _tileLayer = null;
|
||||
let _themeObserver = null;
|
||||
|
||||
// Standort-Tracking
|
||||
let _locationMarker = null;
|
||||
|
|
@ -528,7 +530,13 @@ window.Page_map = (() => {
|
|||
if (!_userPos) {
|
||||
_frankfurtTimer = setTimeout(() => _map.flyTo(center, 14, { duration: 2.5 }), 1200);
|
||||
}
|
||||
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19 }).addTo(_map);
|
||||
_tileLayer = _buildTileLayer();
|
||||
_tileLayer.addTo(_map);
|
||||
|
||||
// Theme-Wechsel → Tile-Layer tauschen
|
||||
_themeObserver = new MutationObserver(() => _applyTileTheme());
|
||||
_themeObserver.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] });
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', _applyTileTheme);
|
||||
|
||||
setTimeout(() => _map.invalidateSize(), 100);
|
||||
setTimeout(() => _map.invalidateSize(), 600);
|
||||
|
|
@ -614,6 +622,37 @@ window.Page_map = (() => {
|
|||
return _clusterGroups[layerKey];
|
||||
}
|
||||
|
||||
function _isDarkMode() {
|
||||
const t = document.documentElement.getAttribute('data-theme');
|
||||
if (t === 'dark') return true;
|
||||
if (t === 'light') return false;
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
}
|
||||
|
||||
function _buildTileLayer() {
|
||||
if (_isDarkMode()) {
|
||||
return L.tileLayer(
|
||||
'https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png',
|
||||
{ maxZoom: 19, subdomains: 'abcd' }
|
||||
);
|
||||
}
|
||||
return L.tileLayer(
|
||||
'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||
{ maxZoom: 19 }
|
||||
);
|
||||
}
|
||||
|
||||
function _applyTileTheme() {
|
||||
if (!_map || !window.L) return;
|
||||
const dark = _isDarkMode();
|
||||
const url = dark
|
||||
? 'https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png'
|
||||
: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
|
||||
if (_tileLayer) {
|
||||
_tileLayer.setUrl(url);
|
||||
}
|
||||
}
|
||||
|
||||
function _updateZoomDisplay() {
|
||||
if (!_map) return;
|
||||
const z = Math.round(_map.getZoom());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue