/* ══════════════════════════════════════════════════════════
ilx-marches — extension thématique pour l'article pilier
"Marchés de la province de Luxembourg"
══════════════════════════════════════════════════════════ */
/* Hero magazine */
.ilx-pp .marches-hero {
background: linear-gradient(135deg, #14532d 0%, #166534 45%, #f0a500 100%) !important;
color: #fff;
padding: 38px 36px;
border-radius: 16px;
margin: 0 0 1.8em;
box-shadow: 0 10px 30px rgba(20,83,45,0.18);
position: relative;
overflow: hidden;
}
.ilx-pp .marches-hero::after {
content: "";
position: absolute;
inset: 0;
background: radial-gradient(circle at 85% 20%, rgba(255,255,255,0.18), transparent 55%);
pointer-events: none;
}
.ilx-pp .marches-hero h1 { color: #fff !important; font-size: 1.9em !important; margin: 0 0 12px; line-height: 1.2 !important; font-weight: 800; }
.ilx-pp .marches-hero p { color: #f0fdf4 !important; font-size: 1.1em !important; margin: 0 0 18px; max-width: 720px; }
.ilx-pp .marches-hero .badges { display: flex; flex-wrap: wrap; gap: 10px; }
.ilx-pp .marches-hero .badge {
display: inline-flex;
align-items: center;
gap: 6px;
background: rgba(255,255,255,0.18);
backdrop-filter: blur(6px);
border: 1px solid rgba(255,255,255,0.25);
padding: 7px 14px;
border-radius: 20px;
font-size: 0.88em;
font-weight: 600;
}
/* ────── Carte interactive ────── */
.ilx-pp .ilx-marches-tool {
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 16px;
padding: 24px;
margin: 2em 0;
box-shadow: 0 6px 20px rgba(15,23,42,0.06);
}
.ilx-pp .ilx-marches-tool h3 {
color: #14532d !important;
margin: 0 0 8px;
font-size: 1.25em !important;
border-bottom: none;
}
.ilx-pp .ilx-marches-tool .tool-sub {
color: #475569;
font-size: 0.95em !important;
margin: 0 0 18px !important;
}
/* Filtre par jour */
.ilx-pp .ilx-jours-filter {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin: 0 0 18px;
}
.ilx-pp .ilx-jour-btn {
appearance: none;
border: 2px solid #e2e8f0;
background: #f8fafc;
color: #475569;
padding: 9px 16px;
border-radius: 10px;
font-size: 0.95em;
font-weight: 600;
cursor: pointer;
transition: all 0.18s ease;
font-family: inherit;
}
.ilx-pp .ilx-jour-btn:hover { border-color: #f0a500; color: #1a2744; transform: translateY(-1px); }
.ilx-pp .ilx-jour-btn.is-active {
background: linear-gradient(135deg, #14532d, #166534);
color: #fff !important;
border-color: #14532d;
box-shadow: 0 4px 12px rgba(20,83,45,0.25);
}
.ilx-pp .ilx-jour-btn .count {
display: inline-block;
background: rgba(255,255,255,0.25);
color: inherit;
margin-left: 6px;
padding: 1px 7px;
border-radius: 8px;
font-size: 0.78em;
}
.ilx-pp .ilx-jour-btn:not(.is-active) .count { background: #1a2744; color: #fff; }
/* Conteneur carte Leaflet */
.ilx-pp #ilx-marches-map {
width: 100%;
height: 520px;
border-radius: 12px;
border: 1px solid #cbd5e1;
margin: 0 0 18px;
background: #f1f5f9;
}
.ilx-pp #ilx-marches-map .leaflet-popup-content { font-family: 'Segoe UI', Calibri, Arial, sans-serif; font-size: 13.5px; line-height: 1.55; }
.ilx-pp #ilx-marches-map .leaflet-popup-content strong { color: #14532d; }
/* Légende */
.ilx-pp .ilx-map-legend {
display: flex;
flex-wrap: wrap;
gap: 14px;
padding: 12px 16px;
background: #f8fafc;
border: 1px solid #e2e8f0;
border-radius: 10px;
font-size: 0.88em;
color: #475569;
}
.ilx-pp .ilx-map-legend .legend-dot {
display: inline-block;
width: 14px;
height: 14px;
border-radius: 50%;
margin-right: 6px;
vertical-align: middle;
border: 2px solid #fff;
box-shadow: 0 0 0 1px rgba(0,0,0,0.15);
}
/* Liste filtrée des marchés du jour */
.ilx-pp .ilx-marches-results {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
gap: 14px;
margin: 18px 0 0;
min-height: 60px;
}
.ilx-pp .ilx-marche-card {
background: #f8fafc;
border: 1px solid #e2e8f0;
border-left: 4px solid #14532d;
border-radius: 10px;
padding: 14px 16px;
transition: transform 0.18s, box-shadow 0.18s;
}
.ilx-pp .ilx-marche-card:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(20,83,45,0.10); }
.ilx-pp .ilx-marche-card .nom { font-weight: 700; color: #1a2744; font-size: 1.05em; margin: 0 0 4px; }
.ilx-pp .ilx-marche-card .lieu { font-size: 0.88em; color: #475569; margin: 0 0 6px; }
.ilx-pp .ilx-marche-card .horaire { font-size: 0.95em; color: #14532d; font-weight: 600; }
.ilx-pp .ilx-marche-card .type-pill {
display: inline-block;
font-size: 0.72em;
font-weight: 700;
padding: 2px 9px;
border-radius: 12px;
margin-top: 6px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.ilx-pp .ilx-marche-card .type-hebdo { background: #14532d; color: #fff; }
.ilx-pp .ilx-marche-card .type-mensuel { background: #f0a500; color: #1a2744; }
.ilx-pp .ilx-marche-card .type-terroir { background: #8b5cf6; color: #fff; }
.ilx-pp .ilx-marche-card .type-saisonnier { background: #3b82f6; color: #fff; }
.ilx-pp .ilx-marche-card .type-annuel { background: #ef4444; color: #fff; }
.ilx-pp .ilx-marches-empty { grid-column: 1 / -1; text-align: center; color: #64748b; padding: 30px; font-style: italic; background: #f8fafc; border-radius: 10px; }
/* ────── Cards "marchés vedettes" (descriptions longues) ────── */
.ilx-pp .marche-vedette {
background: linear-gradient(135deg, #fff 0%, #f0fdf4 100%);
border: 1px solid #bbf7d0;
border-left: 6px solid #14532d;
border-radius: 14px;
padding: 26px 30px;
margin: 1.6em 0;
box-shadow: 0 4px 16px rgba(20,83,45,0.08);
}
.ilx-pp .marche-vedette .vedette-head {
display: flex;
align-items: center;
gap: 14px;
flex-wrap: wrap;
margin-bottom: 12px;
}
.ilx-pp .marche-vedette h3 {
color: #14532d !important;
margin: 0 !important;
font-size: 1.35em !important;
flex: 1;
}
.ilx-pp .marche-vedette .vedette-pill {
display: inline-block;
background: #14532d;
color: #fff;
font-size: 0.75em;
font-weight: 700;
padding: 4px 12px;
border-radius: 12px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.ilx-pp .marche-vedette .vedette-meta {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
gap: 10px;
margin: 14px 0;
padding: 12px;
background: #fff;
border-radius: 10px;
border: 1px solid #d1fae5;
}
.ilx-pp .marche-vedette .vm-item { font-size: 0.92em; }
.ilx-pp .marche-vedette .vm-item .vm-label { display: block; font-size: 0.78em; text-transform: uppercase; letter-spacing: 0.6px; color: #14532d; font-weight: 700; margin-bottom: 2px; }
.ilx-pp .marche-vedette .vm-item .vm-value { color: #1a2744; font-weight: 600; }
/* Verifier-commune (badge téléphone) */
.ilx-pp .verifier-commune {
display: inline-block;
background: #fef3c7;
color: #92400e;
border: 1px dashed #f59e0b;
padding: 4px 10px;
border-radius: 8px;
font-size: 0.85em;
font-weight: 600;
margin-left: 6px;
}
.ilx-pp .verifier-commune a { color: #92400e !important; text-decoration: none !important; }
.ilx-pp .verifier-commune a:hover { text-decoration: underline !important; }
/* Sous-régions : couleurs distinctives */
.ilx-pp .sousregion-arlon h2 { border-bottom-color: #f0a500 !important; }
.ilx-pp .sousregion-gaume h2 { border-bottom-color: #16a34a !important; }
.ilx-pp .sousregion-centre h2 { border-bottom-color: #8b5cf6 !important; }
.ilx-pp .sousregion-famenne h2 { border-bottom-color: #3b82f6 !important; }
.ilx-pp .sousregion-haute h2 { border-bottom-color: #ef4444 !important; }
.ilx-pp .sousregion-tag {
display: inline-block;
font-size: 0.78em;
font-weight: 700;
padding: 4px 12px;
border-radius: 12px;
margin-bottom: 10px;
text-transform: uppercase;
letter-spacing: 0.6px;
}
.ilx-pp .sousregion-arlon .sousregion-tag { background: #f0a500; color: #1a2744; }
.ilx-pp .sousregion-gaume .sousregion-tag { background: #16a34a; color: #fff; }
.ilx-pp .sousregion-centre .sousregion-tag { background: #8b5cf6; color: #fff; }
.ilx-pp .sousregion-famenne .sousregion-tag { background: #3b82f6; color: #fff; }
.ilx-pp .sousregion-haute .sousregion-tag { background: #ef4444; color: #fff; }
/* Tableau marchés : version optimisée */
.ilx-pp .table-marches td.col-jour { font-weight: 700; color: #14532d; white-space: nowrap; }
.ilx-pp .table-marches td.col-type { font-size: 0.88em; }
.ilx-pp .table-marches .pill {
display: inline-block;
font-size: 0.72em;
font-weight: 700;
padding: 2px 8px;
border-radius: 10px;
text-transform: uppercase;
letter-spacing: 0.4px;
}
.ilx-pp .table-marches .pill-hebdo { background: #14532d; color: #fff; }
.ilx-pp .table-marches .pill-mensuel { background: #f0a500; color: #1a2744; }
.ilx-pp .table-marches .pill-terroir { background: #8b5cf6; color: #fff; }
.ilx-pp .table-marches .pill-saisonnier { background: #3b82f6; color: #fff; }
.ilx-pp .table-marches .pill-annuel { background: #ef4444; color: #fff; }
/* Stats hero (chiffres clés en haut) */
.ilx-pp .stats-marches {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
gap: 14px;
margin: 1.5em 0;
}
.ilx-pp .stat-card {
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 12px;
padding: 18px;
text-align: center;
box-shadow: 0 2px 8px rgba(15,23,42,0.05);
}
.ilx-pp .stat-card .stat-num { font-size: 2em; font-weight: 800; color: #14532d; line-height: 1; margin-bottom: 4px; }
.ilx-pp .stat-card .stat-label { font-size: 0.88em; color: #475569; text-transform: uppercase; letter-spacing: 0.5px; }
/* Sommaire ancres */
.ilx-pp .sommaire-marches {
background: #f0fdf4;
border: 1px solid #bbf7d0;
border-radius: 12px;
padding: 20px 24px;
margin: 1.8em 0;
}
.ilx-pp .sommaire-marches h3 { color: #14532d !important; margin: 0 0 12px !important; font-size: 1.1em !important; border-bottom: none; }
.ilx-pp .sommaire-marches ul { columns: 2; column-gap: 30px; padding-left: 1.2em; margin: 0; }
.ilx-pp .sommaire-marches li { margin-bottom: 6px; break-inside: avoid; font-size: 0.95em; }
.ilx-pp .sommaire-marches li a { color: #14532d; text-decoration: none; font-weight: 600; }
.ilx-pp .sommaire-marches li a:hover { color: #f0a500; text-decoration: underline; }
/* Responsive */
@media (max-width: 768px) {
.ilx-pp .marches-hero { padding: 24px 22px; }
.ilx-pp .marches-hero h1 { font-size: 1.5em !important; }
.ilx-pp #ilx-marches-map { height: 400px; }
.ilx-pp .ilx-jour-btn { padding: 7px 12px; font-size: 0.88em; }
.ilx-pp .marche-vedette { padding: 20px 18px; }
.ilx-pp .sommaire-marches ul { columns: 1; }
.ilx-pp .table-marches { font-size: 0.78em; }
.ilx-pp .table-marches th, .ilx-pp .table-marches td { padding: 8px 10px; }
}
<!-- ============================================================
SNIPPET WPCODE - Carte interactive marches Province Luxembourg
Type : HTML Snippet
Emplacement : everywhere (footer-like via WPCode v2.x)
Nom : "JS Marches Luxembourg Leaflet"
============================================================
- Leaflet est DEJA charge par le plugin Directories Pro sur info-lux.com
(URL : /wp-content/plugins/directories-pro/assets/vendor/js/leaflet.min.js)
- On retire le + qui etaient strippes par WP Rocket
- On retry tant que `L` ou `#ilx-marches-map` ne sont pas dispo
============================================================ -->
(function () {
var attempts = 0;
var MAX_ATTEMPTS = 60; // 60 * 250ms = 15s max
function init() {
attempts++;
var mapEl = document.getElementById('ilx-marches-map');
// La div carte n'est pas dans le DOM (autre page) -> stop
if (!mapEl && attempts > 4) return;
// Pas encore charge OU Leaflet pas encore disponible
if (!mapEl || typeof L === 'undefined') {
if (attempts < MAX_ATTEMPTS) setTimeout(init, 250);
return;
}
// Eviter double init si le script est inclus deux fois
if (mapEl._ilxInited) return;
mapEl._ilxInited = true;
// ────────────────────────────────────────────────
// Donnees marches (source unique pour la carte + le filtre)
// ────────────────────────────────────────────────
var MARCHES = [
// PAYS D'ARLON
{ nom: "Arlon - centre-ville", commune: "Arlon", lieu: "Place Léopold, Marché-aux-Légumes", lat: 49.6837, lng: 5.8163, jours: ["jeudi"], horaire: "Dès 8h", type: "hebdo", freq: "Tous les jeudis matin" },
{ nom: "Brocante du Vieil Arlon", commune: "Arlon", lieu: "Centre historique", lat: 49.6843, lng: 5.8175, jours: ["dimanche"], horaire: "8h-16h", type: "mensuel", freq: "1er dimanche du mois" },
{ nom: "Aubange - Athus", commune: "Aubange", lieu: "Rue des Jardins / rue du Commerce", lat: 49.5594, lng: 5.8336, jours: ["vendredi"], horaire: "6h-13h30", type: "hebdo", freq: "Tous les vendredis" },
{ nom: "Aubange - Halanzy", commune: "Aubange", lieu: "Place Communale, Halanzy", lat: 49.5556, lng: 5.7861, jours: ["samedi"], horaire: "7h30-13h", type: "hebdo", freq: "Tous les samedis" },
{ nom: "Habay-la-Neuve", commune: "Habay", lieu: "Place Pierre Nothomb", lat: 49.7236, lng: 5.6406, jours: ["mercredi"], horaire: "7h-13h", type: "hebdo", freq: "Tous les mercredis" },
{ nom: "Saveurs Locales (Habay)", commune: "Habay", lieu: "Place Pierre Nothomb / Espace Bologne", lat: 49.7236, lng: 5.6411, jours: ["samedi"], horaire: "9h-12h", type: "terroir", freq: "Tous les samedis" },
{ nom: "Marbehan", commune: "Habay", lieu: "Grand Rue, 6724 Marbehan", lat: 49.7019, lng: 5.5586, jours: ["mardi"], horaire: "Matin", type: "hebdo", freq: "Tous les mardis matin" },
// GAUME
{ nom: "Virton", commune: "Virton", lieu: "Place Nestor Outer", lat: 49.5681, lng: 5.5311, jours: ["vendredi"], horaire: "8h-12h", type: "hebdo", freq: "Tous les vendredis" },
{ nom: "Étalle", commune: "Étalle", lieu: "Rue Saint-Antoine", lat: 49.6739, lng: 5.6014, jours: ["samedi"], horaire: "7h-13h", type: "saisonnier", freq: "Samedis (saison)" },
{ nom: "Florenville (mensuel)", commune: "Florenville", lieu: "Place Albert 1er & Place des Trois Suzanne", lat: 49.6987, lng: 5.3072, jours: ["mercredi"], horaire: "Matin", type: "mensuel", freq: "1er mercredi du mois" },
{ nom: "Florenville (été)", commune: "Florenville", lieu: "Place Albert 1er", lat: 49.6989, lng: 5.3074, jours: ["mercredi"], horaire: "9h-18h", type: "saisonnier", freq: "Mercredis juillet-août" },
{ nom: "Chassepierre", commune: "Florenville", lieu: "Centre village, rue Antoine", lat: 49.7058, lng: 5.2675, jours: ["dimanche"], horaire: "8h-12h", type: "terroir", freq: "Tous les dimanches" },
{ nom: "Jamoigne", commune: "Chiny", lieu: "Place de Jamoigne", lat: 49.7219, lng: 5.3408, jours: ["mardi"], horaire: "15h-18h30", type: "saisonnier", freq: "Mardis (saison)" },
{ nom: "Halle de Han", commune: "Tintigny", lieu: "Halle de Han, Han 36, 6730 Tintigny", lat: 49.6917, lng: 5.5172, jours: ["vendredi"], horaire: "17h-20h", type: "terroir", freq: "Tous les vendredis" },
// CENTRE-ARDENNE
{ nom: "Bastogne - Foire aux camelots", commune: "Bastogne", lieu: "Rue des Récollets", lat: 50.0007, lng: 5.7167, jours: ["samedi"], horaire: "7h-13h", type: "hebdo", freq: "Samedi sur deux" },
{ nom: "Bertrix", commune: "Bertrix", lieu: "Pl. des Trois Fers / Pl. de la Gare", lat: 49.8517, lng: 5.2569, jours: ["jeudi"], horaire: "8h-13h", type: "hebdo", freq: "Tous les jeudis" },
{ nom: "Bertogne", commune: "Bertogne", lieu: "Place du Commerce", lat: 50.0167, lng: 5.6500, jours: ["mardi"], horaire: "14h-17h30", type: "saisonnier", freq: "Mardis (avril-octobre)" },
{ nom: "Marché des 3 communes (Tenneville)", commune: "Tenneville", lieu: "Salle Le Foyer, sous l'église", lat: 50.1000, lng: 5.5333, jours: ["vendredi"], horaire: "17h-20h", type: "terroir", freq: "1er vendredi (sf jan/jui/août)" },
{ nom: "Saint-Hubert", commune: "Saint-Hubert", lieu: "Place de l'Abbaye", lat: 50.0269, lng: 5.3717, jours: ["samedi"], horaire: "Matin", type: "mensuel", freq: "1er samedi du mois (à confirmer)" },
{ nom: "Marché du Terroir Libramont", commune: "Libramont", lieu: "Place Communale", lat: 49.9203, lng: 5.3756, jours: ["vendredi"], horaire: "16h-20h", type: "terroir", freq: "2e & 4e vendredis (mars-oct)" },
{ nom: "Marché du Terroir Neufchâteau", commune: "Neufchâteau", lieu: "Espace 29", lat: 49.8408, lng: 5.4358, jours: ["samedi"], horaire: "15h-19h", type: "terroir", freq: "Samedis (saisonnier)" },
{ nom: "Marché du Terroir de Léglise", commune: "Léglise", lieu: "Place du Marché", lat: 49.8053, lng: 5.5364, jours: ["samedi"], horaire: "15h-19h (bar 20h)", type: "terroir", freq: "1er samedi (avril-octobre)" },
{ nom: "Petits Marchés de Redu", commune: "Libin", lieu: "Place de l'Esro, Village du Livre", lat: 50.0064, lng: 5.1614, jours: ["samedi"], horaire: "13h30-18h30", type: "terroir", freq: "1er samedi (avril-octobre)" },
{ nom: "Marché des Bastions de Bouillon", commune: "Bouillon", lieu: "Boulevard Heynens", lat: 49.7942, lng: 5.0681, jours: ["dimanche"], horaire: "8h-13h", type: "saisonnier", freq: "Dimanches (29 mars - 25 oct)" },
// FAMENNE-ARDENNE
{ nom: "Marche-en-Famenne", commune: "Marche-en-Famenne", lieu: "Place aux Foires + Bd du Midi", lat: 50.2289, lng: 5.3431, jours: ["lundi"], horaire: "Matin", type: "mensuel", freq: "1er & 3e lundis du mois" },
{ nom: "Marché gourmand de Marche", commune: "Marche-en-Famenne", lieu: "Place du Roi Albert", lat: 50.2278, lng: 5.3422, jours: ["vendredi"], horaire: "15h-20h", type: "terroir", freq: "2e vendredi (juin-octobre)" },
{ nom: "Marché 1900", commune: "Marche-en-Famenne", lieu: "Centre-ville", lat: 50.2289, lng: 5.3439, jours: ["jeudi","vendredi","samedi","dimanche","lundi","mardi","mercredi"], horaire: "Toute la journée", type: "annuel", freq: "15 août (annuel)" },
{ nom: "Hotton", commune: "Hotton", lieu: "Rue Haute", lat: 50.2658, lng: 5.4467, jours: ["samedi"], horaire: "7h-13h", type: "hebdo", freq: "Samedi sur deux" },
{ nom: "Barvaux-sur-Ourthe", commune: "Durbuy", lieu: "Place du Marché, Barvaux", lat: 50.3458, lng: 5.5083, jours: ["mercredi"], horaire: "Matin", type: "hebdo", freq: "Tous les mercredis" },
{ nom: "Petite Batte de Bomal", commune: "Durbuy", lieu: "Bomal-sur-Ourthe", lat: 50.3800, lng: 5.5478, jours: ["dimanche"], horaire: "Matin", type: "hebdo", freq: "Tous les dimanches" },
{ nom: "March'Heyd", commune: "Durbuy", lieu: "Rowe di Veule 7, Heyd", lat: 50.3553, lng: 5.5739, jours: ["vendredi"], horaire: "15h30-18h", type: "terroir", freq: "Vendredis (mai-décembre)" },
{ nom: "Mini Marché de Jenneret", commune: "Durbuy", lieu: "Jenneret", lat: 50.3742, lng: 5.4906, jours: ["jeudi"], horaire: "Dès 17h", type: "saisonnier", freq: "Jeudis (belle saison)" },
{ nom: "Marché de Rendeux", commune: "Rendeux", lieu: "Salle Schérès, Rendeux-Haut", lat: 50.2403, lng: 5.5472, jours: ["jeudi"], horaire: "15h30-18h30", type: "terroir", freq: "Jeudis (mi-mars à novembre)" },
{ nom: "Forrières (Nassogne)", commune: "Nassogne", lieu: "Forrières", lat: 50.1264, lng: 5.2842, jours: ["samedi"], horaire: "Matin", type: "mensuel", freq: "2e & 4e samedis du mois" },
// HAUTE-ARDENNE
{ nom: "Petit Marché de Vielsalm", commune: "Vielsalm", lieu: "Place Bruyères-en-Vosges", lat: 50.2806, lng: 5.9117, jours: ["mardi"], horaire: "16h-18h30", type: "terroir", freq: "Tous les mardis" },
{ nom: "Saveurs d'Ardenne (Farnières)", commune: "Vielsalm", lieu: "Domaine de Farnières, Grand-Halleux", lat: 50.3206, lng: 5.9603, jours: ["mardi"], horaire: "17h-21h", type: "saisonnier", freq: "Mardis (27 juin - 29 août)" },
{ nom: "Houffalize", commune: "Houffalize", lieu: "Place Janvier 45", lat: 50.1300, lng: 5.7900, jours: ["samedi"], horaire: "7h30-13h30", type: "hebdo", freq: "Samedi sur deux" },
{ nom: "Marché du Terroir Houffalize", commune: "Houffalize", lieu: "Place Janvier 45", lat: 50.1303, lng: 5.7906, jours: ["jeudi"], horaire: "17h-20h", type: "saisonnier", freq: "Certains jeudis (juin-sept)" },
{ nom: "Gouvy", commune: "Gouvy", lieu: "Centre Gouvy", lat: 50.1903, lng: 5.9519, jours: ["jeudi"], horaire: "7h30-12h", type: "hebdo", freq: "Jeudi sur deux" }
];
var COULEURS_JOUR = {
lundi: '#ef4444', mardi: '#f0a500', mercredi: '#16a34a',
jeudi: '#3b82f6', vendredi: '#8b5cf6', samedi: '#14532d', dimanche: '#ec4899'
};
// ────────────────────────────────────────────────
// Init carte (centree sur la province)
// ────────────────────────────────────────────────
var map = L.map('ilx-marches-map', {
center: [49.95, 5.55],
zoom: 9,
scrollWheelZoom: false
});
map.on('click', function () { map.scrollWheelZoom.enable(); });
map.on('mouseout', function () { map.scrollWheelZoom.disable(); });
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 18,
attribution: '© OpenStreetMap '
}).addTo(map);
function makeIcon(color) {
return L.divIcon({
className: 'ilx-marker',
html: '
',
iconSize: [22, 22], iconAnchor: [11, 22], popupAnchor: [0, -22]
});
}
var markers = [];
MARCHES.forEach(function (m) {
var jourPrincipal = m.jours[0];
var couleur = COULEURS_JOUR[jourPrincipal] || '#64748b';
var marker = L.marker([m.lat, m.lng], { icon: makeIcon(couleur) }).addTo(map);
var popupHtml =
'' +
'' + m.nom + ' ' +
'' + m.lieu + ' ' +
'' + m.freq + ' ' +
'' + m.horaire + ' ' +
'
';
marker.bindPopup(popupHtml);
marker._ilx = m;
markers.push(marker);
});
// Forcer un invalidate apres init pour eviter carte grise
setTimeout(function () { map.invalidateSize(); }, 200);
// ────────────────────────────────────────────────
// Filtre par jour
// ────────────────────────────────────────────────
var btns = document.querySelectorAll('.ilx-jour-btn');
var resultsContainer = document.getElementById('ilx-marches-results');
function renderResults(filtered) {
if (!resultsContainer) return;
if (filtered.length === 0) {
resultsContainer.innerHTML = 'Aucun marché ce jour-là dans la province. Essayez un autre jour.
';
return;
}
resultsContainer.innerHTML = filtered.map(function (m) {
return '' +
'' +
'
' + m.nom + '
' +
'
' + m.lieu + '
' +
'
' + m.freq + ' · ' + m.horaire + '
' +
'
' + m.type + ' ' +
'
';
}).join('');
}
function applyFilter(jour) {
var visible = [];
markers.forEach(function (mk) {
var m = mk._ilx;
var ok = (jour === 'tous') || (m.jours.indexOf(jour) !== -1);
if (ok) { mk.addTo(map); visible.push(m); }
else { map.removeLayer(mk); }
});
renderResults(visible);
}
btns.forEach(function (b) {
b.addEventListener('click', function () {
btns.forEach(function (x) { x.classList.remove('is-active'); });
b.classList.add('is-active');
applyFilter(b.getAttribute('data-jour'));
});
});
applyFilter('tous');
var compteurs = { lundi:0, mardi:0, mercredi:0, jeudi:0, vendredi:0, samedi:0, dimanche:0, tous: MARCHES.length };
MARCHES.forEach(function (m) {
m.jours.forEach(function (j) {
if (compteurs.hasOwnProperty(j)) compteurs[j]++;
});
});
btns.forEach(function (b) {
var j = b.getAttribute('data-jour');
var c = compteurs[j];
var span = b.querySelector('.count');
if (span && typeof c !== 'undefined') span.textContent = c;
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();
3e corrida Jacques Lequeux à Izel Fév 24, 2019 | Mars |
Le vendredi 15 mars 2019, à partir de 19h00, aura lieu la 3ème corrida « Jacques Lequeux » à l’Athénée Royal d’Izel.
Cette année, l’organisation est menée conjointement par « BangalIzel » (voyage solidaire au Bangladesh) et le club de Triathlon « 03 » (club de triathlon pour enfants). Les professeurs d’éducation physique apportent également leur soutien par l’organisation d’un challenge pour les élèves.
Retenez la date et soyez nombreux à participer !
Article structuré et optimisé SEO avec l’aide d’un outil d’intelligence artificielle, sous supervision éditoriale.
Les infos de votre Région Gratuite
Souhaitez-vous recevoir des notifications sur les dernières mises à jour ?
Non
oui
0 Comments