mirror of
https://forge.chapril.org/tykayn/libre-charge-map
synced 2025-10-04 17:04:53 +02:00
add filters merge
This commit is contained in:
commit
756d997e06
15 changed files with 642 additions and 614 deletions
|
@ -4,9 +4,15 @@ const lcm_config = {
|
|||
overrideQuery: true,
|
||||
initialZoom: 12,
|
||||
hide_osmose_markers_if_close_to_existing_charging_stations: true,
|
||||
hide_osmose_markers_if_close_to_existing_charging_stations_distance: 5, // meters
|
||||
hide_osmose_markers_if_close_to_existing_charging_stations_distance: 10, // meters
|
||||
|
||||
max_possible_station_output: 400,
|
||||
filter_max_output: true,
|
||||
filter_max_output_min: 0,
|
||||
filter_max_output_max: 499,
|
||||
filter_max_output_default_value: 1,
|
||||
filter_unknown_output: true,
|
||||
|
||||
max_possible_station_output: 499,
|
||||
// Filtres pour les prises
|
||||
filterCableAttached: false,
|
||||
filterCCS: false,
|
||||
|
@ -20,7 +26,7 @@ const lcm_config = {
|
|||
filterConfigs: {
|
||||
'filterUnknownOutput': true,
|
||||
'filterCableAttached': true,
|
||||
'filterCCS': true,
|
||||
'filterCCS': true,
|
||||
'filterType2': true,
|
||||
'filterQuality': true,
|
||||
'filterDomestic': true,
|
||||
|
|
374
js/lcm_main.js
374
js/lcm_main.js
|
@ -342,6 +342,12 @@ function calculerPourcentage(partie, total, reduc) {
|
|||
return ((partie / total) * 100 * coef_reduction).toFixed(1)
|
||||
}
|
||||
|
||||
// Ajouter une variable globale pour stocker le nombre d'issues Osmose
|
||||
let osmoseIssuesCount = 0;
|
||||
|
||||
// Ajouter une variable globale pour stocker le nombre de stations affichées
|
||||
let displayedStationsCount = 0;
|
||||
|
||||
function displayStatsFromGeoJson(resultAsGeojson, stats) {
|
||||
let count = resultAsGeojson.features.length;
|
||||
let count_station_output = 0;
|
||||
|
@ -361,7 +367,7 @@ function displayStatsFromGeoJson(resultAsGeojson, stats) {
|
|||
Object.keys(lcm_config.filterConfigs).forEach(filterId => {
|
||||
if (!lcm_config.filterConfigs[filterId]) disabledFilters++;
|
||||
});
|
||||
|
||||
|
||||
$('#count_features_fond').html('⚡' + count + ' stations' + (disabledFilters > 0 ? ` (${disabledFilters} filtre${disabledFilters > 1 ? 's' : ''} désactivé${disabledFilters > 1 ? 's' : ''}, ${stats.count_hidden_by_filters} masqué${stats.count_hidden_by_filters > 1 ? 's' : ''})` : ''));
|
||||
|
||||
resultAsGeojson.features.map(feature => {
|
||||
|
@ -464,6 +470,17 @@ function displayStatsFromGeoJson(resultAsGeojson, stats) {
|
|||
|
||||
$('#found_charging_stations').html(stats_content);
|
||||
$('#bars_power').html(bar_powers);
|
||||
|
||||
// Remplacer la ligne existante par un appel à updateCounters
|
||||
updateCounters();
|
||||
|
||||
}
|
||||
|
||||
// Ajouter une fonction pour mettre à jour les compteurs
|
||||
function updateCounters() {
|
||||
const stationsCount = geojsondata ? geojsondata.features.length : 0;
|
||||
const osmoseText = osmoseIssuesCount > 0 ? ` <span class="osmose-counter">(+ ${osmoseIssuesCount} ?)</span>` : '';
|
||||
$('#count_features_fond').html(`⚡${stationsCount}${osmoseText} stations`);
|
||||
}
|
||||
|
||||
// Modifier bindEventsOnJosmRemote pour cibler les boutons dans un contexte (la popup)
|
||||
|
@ -472,10 +489,10 @@ function bindEventsOnJosmRemote(popupElement) {
|
|||
$(popupElement).find('.edit-button.josm').each(function () {
|
||||
// Utiliser .off().on() pour éviter les liaisons multiples si la popup est rouverte
|
||||
$(this).off('click').on('click', (event) => {
|
||||
event.preventDefault(); // Empêcher le comportement par défaut du lien
|
||||
event.preventDefault();
|
||||
let josm_link = $(this).attr('data-href');
|
||||
console.log('Sending command to JOSM:', josm_link);
|
||||
// Utiliser fetch pour la requête GET vers JOSM (plus moderne que $.get)
|
||||
|
||||
fetch(josm_link)
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
|
@ -500,6 +517,10 @@ function displayPointsFromApi(points, convert_to_osm_json) {
|
|||
geojsondata = osmtogeojson(points);
|
||||
}
|
||||
|
||||
// Réinitialiser le compteur avant d'afficher les points
|
||||
displayedStationsCount = 0;
|
||||
|
||||
displayStatsFromGeoJson(geojsondata);
|
||||
let stats = {
|
||||
count_hidden_by_filters: 0
|
||||
};
|
||||
|
@ -526,10 +547,11 @@ function displayPointsFromApi(points, convert_to_osm_json) {
|
|||
supprimerMarqueurs();
|
||||
displayPointsFromApi();
|
||||
},
|
||||
onEachFeature: function(feature, layer) {
|
||||
eachFeature(feature, layer, stats);
|
||||
},
|
||||
onEachFeature: eachFeature,
|
||||
});
|
||||
|
||||
// Mettre à jour le compteur de stations filtrées
|
||||
updateFilteredStationsCount();
|
||||
}
|
||||
|
||||
function makePopupOfFeature(feature) {
|
||||
|
@ -575,13 +597,29 @@ function makePopupOfFeature(feature) {
|
|||
* @param layer
|
||||
*/
|
||||
function eachFeature(feature, layer, stats) {
|
||||
let outPowerGuessed = lcm_utils.guessOutputPowerFromFeature(feature);
|
||||
const maxPowerFilter = parseInt($('#filter_max_output').val()) || lcm_config.filter_max_output_default_value;
|
||||
|
||||
// Filtrage par puissance
|
||||
if (outPowerGuessed === 0 || outPowerGuessed === null) {
|
||||
if (display_unknown_max_power_station === 'hide') {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
// Filtrer les stations dont la puissance dépasse le maximum défini
|
||||
if (outPowerGuessed < maxPowerFilter) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Incrémenter le compteur de stations affichées
|
||||
displayedStationsCount++;
|
||||
|
||||
let link_josm = createJOSMEditLink(feature);
|
||||
|
||||
let popupContent = makePopupOfFeature(feature);
|
||||
layer.bindPopup(popupContent);
|
||||
|
||||
let outPowerGuessed = lcm_utils.guessOutputPowerFromFeature(feature);
|
||||
let color = lcm_color_utils.getColor(feature);
|
||||
let displayOutPowerGuessed = '? kW';
|
||||
|
||||
// Vérifier les filtres activés
|
||||
|
@ -631,7 +669,7 @@ function eachFeature(feature, layer, stats) {
|
|||
|
||||
if (lcm_config.filterQuality) {
|
||||
// Vérifier si les informations minimales de qualité sont présentes
|
||||
let hasQualityInfo = feature.properties.tags['operator'] ||
|
||||
let hasQualityInfo = feature.properties.tags['operator'] ||
|
||||
feature.properties.tags['authentication:none'] ||
|
||||
feature.properties.tags['payment:none'] ||
|
||||
feature.properties.tags['opening_hours'];
|
||||
|
@ -670,7 +708,7 @@ function eachFeature(feature, layer, stats) {
|
|||
<a class="edit-button josm" data-href="${link_josm}" href="#">JOSM</a>
|
||||
<a href="${panoramaxLink}" target="_blank" class="panoramax-link" title="Voir sur Panoramax">
|
||||
<img src="styles/images/panoramax.ico" alt="icone"></a>
|
||||
<span class="color-indication" style="background-color: ${color};">${displayOutPowerGuessed}</span>
|
||||
<span class="color-indication" style="background-color: ${lcm_color_utils.getColor(feature)};">${displayOutPowerGuessed}</span>
|
||||
<button class="edit-button" id="fullDetails" >détails</button>
|
||||
<span class="popup-content">${popupContent}</span>`;
|
||||
|
||||
|
@ -758,8 +796,8 @@ function eachFeature(feature, layer, stats) {
|
|||
* affichage des marqueurs de stations de recharge
|
||||
*/
|
||||
let circle = L.circle(layer._latlng, {
|
||||
color: color,
|
||||
fillColor: color,
|
||||
color: lcm_color_utils.getColor(feature),
|
||||
fillColor: lcm_color_utils.getColor(feature),
|
||||
fillOpacity: opacity,
|
||||
colorOpacity: opacity,
|
||||
radius: radius
|
||||
|
@ -768,7 +806,7 @@ function eachFeature(feature, layer, stats) {
|
|||
if (zoom > 15) {
|
||||
let circle_center = L.circle(layer._latlng, {
|
||||
color: 'black',
|
||||
fillColor: color,
|
||||
fillColor: lcm_color_utils.getColor(feature),
|
||||
fillOpacity: 1,
|
||||
radius: 0.1
|
||||
}).addTo(all_stations_markers);
|
||||
|
@ -820,49 +858,6 @@ function bindFullDetails(feature) {
|
|||
${content}`
|
||||
})
|
||||
}
|
||||
|
||||
function makeCssClassFromTags(tags) {
|
||||
let tagKeys = Object.keys(tags)
|
||||
if (!tags) {
|
||||
return ''
|
||||
}
|
||||
let listOfClasses = []
|
||||
|
||||
tagKeys.forEach((element) => {
|
||||
listOfClasses.push('tag-' + element + '_' + tags[element].replace(':', '--').replace(' ', '-'))
|
||||
})
|
||||
|
||||
return listOfClasses.join(' ')
|
||||
}
|
||||
|
||||
function getIconFromTags(tags) {
|
||||
let iconFileName = ''
|
||||
// let iconFileName = 'icon_restaurant.png';
|
||||
if (tags['man_made']) {
|
||||
iconFileName = 'fountain.png'
|
||||
}
|
||||
return iconFileName
|
||||
}
|
||||
|
||||
function toggleMinPower(showHighPower) {
|
||||
showHighPower = !showHighPower;
|
||||
addFilteredMarkers(showHighPower);
|
||||
this.textContent = showHighPower ? 'Montrer puissance haute' : 'Montrer puissance normale';
|
||||
}
|
||||
|
||||
function addFilteredMarkers(showHighPower) {
|
||||
allMarkers.clearLayers();
|
||||
|
||||
let counter = 0;
|
||||
geojsondata.features.forEach(function (feature) {
|
||||
if (feature.properties.puissance_haute === showHighPower) {
|
||||
counter++;
|
||||
let marker = L.marker(feature.geometry.coordinates).bindPopup(feature.properties.puissance_haute ? 'Puissance haute' : 'Puissance normale');
|
||||
allMarkers.addLayer(marker);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
let isLoading = false
|
||||
|
||||
function loadOverpassQuery() {
|
||||
|
@ -885,7 +880,12 @@ function loadOverpassQuery() {
|
|||
function refreshDisplay(convert_points_to_osm = false) {
|
||||
supprimerMarqueurs();
|
||||
count_hidden_by_filters = 0; // Réinitialiser le compteur
|
||||
displayPointsFromApi(geojsondata, convert_points_to_osm);
|
||||
if (geojsondata) {
|
||||
displayPointsFromApi(geojsondata, convert_points_to_osm);
|
||||
updateCounters();
|
||||
updateFilteredStationsCount();
|
||||
}
|
||||
|
||||
// Mettre à jour le compteur dans la popup
|
||||
let count = geojsondata.features.length;
|
||||
let disabledFilters = 0;
|
||||
|
@ -935,7 +935,7 @@ function onMapMoveEnd() {
|
|||
console.log("Zoom actuel:", map.getZoom());
|
||||
|
||||
if (map.getZoom() >= 12) {
|
||||
console.log("Recherche des issues Osmose...");
|
||||
// console.log("Recherche des issues Osmose...");
|
||||
searchOsmoseIssues(map);
|
||||
} else {
|
||||
console.log("Zoom trop faible pour les issues Osmose");
|
||||
|
@ -1010,6 +1010,7 @@ $('#toggle-stats').on('click', function () {
|
|||
}
|
||||
});
|
||||
|
||||
|
||||
// Ajouter ces variables avec les autres déclarations globales
|
||||
let food_places_markers = L.layerGroup();
|
||||
const foodIcon = L.divIcon({
|
||||
|
@ -1088,7 +1089,6 @@ function searchOsmoseIssues(map) {
|
|||
const bbox = `${bounds.getWest()}%2C${bounds.getSouth()}%2C${bounds.getEast()}%2C${bounds.getNorth()}`;
|
||||
const url = `https://osmose.openstreetmap.fr/api/0.3/issues?zoom=${zoom}&item=8410%2C8411&level=1%2C2%2C3&limit=500&bbox=${bbox}`;
|
||||
|
||||
console.log("Recherche des issues Osmose (liste) avec l'URL :", url);
|
||||
osmose_markers.clearLayers();
|
||||
|
||||
// Modifier la vérification des stations existantes
|
||||
|
@ -1117,10 +1117,13 @@ function searchOsmoseIssues(map) {
|
|||
.then(data => {
|
||||
if (!data || !Array.isArray(data.issues)) {
|
||||
console.warn("Réponse Osmose (liste) inattendue ou pas d'issues:", data);
|
||||
osmoseIssuesCount = 0;
|
||||
updateCounters();
|
||||
return;
|
||||
}
|
||||
const issuesList = data.issues;
|
||||
console.log(`Nombre d'issues Osmose (liste) trouvées: ${issuesList.length}`);
|
||||
osmoseIssuesCount = issuesList.length;
|
||||
console.log(`Nombre d'issues Osmose (liste) trouvées: ${osmoseIssuesCount}`);
|
||||
|
||||
issuesList.forEach(issueInfo => {
|
||||
if (issueInfo.lat == null || issueInfo.lon == null || !issueInfo.id) {
|
||||
|
@ -1138,7 +1141,7 @@ function searchOsmoseIssues(map) {
|
|||
});
|
||||
|
||||
if (tooClose) {
|
||||
// console.log(`Marqueur Osmose ignoré car trop proche d'une station existante: ${lat},${lon}`);
|
||||
// console.log(`Marqueur Osmose ignoré car trop proche d'une station existante: ${lat},${lon}`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1216,9 +1219,13 @@ function searchOsmoseIssues(map) {
|
|||
|
||||
osmose_markers.addLayer(osmoseMarker);
|
||||
});
|
||||
|
||||
updateCounters(); // Mettre à jour l'affichage après le traitement
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Erreur détaillée lors de la recherche de la liste des issues Osmose:', error);
|
||||
osmoseIssuesCount = 0;
|
||||
updateCounters();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1255,133 +1262,130 @@ function handleMarkerClick(marker, map) {
|
|||
|
||||
// Ajouter un écouteur d'événements pour le changement de visibilité des calques
|
||||
function init() {
|
||||
bindEventsOnJosmRemote();
|
||||
onMapMoveEnd();
|
||||
map.on('moveend', onMapMoveEnd);
|
||||
$('#spinning_icon').hide();
|
||||
$(document).ready(function () {
|
||||
bindEventsOnJosmRemote();
|
||||
onMapMoveEnd();
|
||||
map.on('moveend', onMapMoveEnd);
|
||||
$('#spinning_icon').hide();
|
||||
|
||||
/**
|
||||
* boutons de changement de filtres et de rechargement des bornes à l'affichage
|
||||
*/
|
||||
$('#removeMarkers').on('click', function () {
|
||||
supprimerMarqueurs();
|
||||
});
|
||||
$('#load').on('click', function () {
|
||||
loadOverpassQuery();
|
||||
});
|
||||
$('#toggleSidePanel').on('click', function () {
|
||||
$('body').toggleClass('side-panel-open');
|
||||
});
|
||||
$('#chercherButton').on('click', function () {
|
||||
supprimerMarqueurs();
|
||||
loadOverpassQuery();
|
||||
});
|
||||
$('#setRandomView').on('click', function () {
|
||||
setRandomView();
|
||||
loadOverpassQuery();
|
||||
});
|
||||
$('#filterUnkown').on('click', function () {
|
||||
display_unknown_max_power_station = cycleVariableState(display_unknown_max_power_station, '#filterUnkown');
|
||||
showActiveFilter(display_unknown_max_power_station, '#filterUnkown');
|
||||
refreshDisplay();
|
||||
});
|
||||
/**
|
||||
* toggle des alertes de tags décrivant la présence de cable
|
||||
*/
|
||||
$('#cableMissing').on('click', function () {
|
||||
display_alert_cable_missing = !display_alert_cable_missing;
|
||||
showActiveFilter(display_alert_cable_missing, '#cableMissing');
|
||||
refreshDisplay();
|
||||
});
|
||||
showActiveFilter(display_unknown_max_power_station, '#filterUnkown');
|
||||
|
||||
$('#shareUrl').on('click', copyCurrentUrl);
|
||||
|
||||
// Initialisation des états des checkboxes des filtres selon les valeurs de configuration
|
||||
Object.keys(lcm_config.filterConfigs).forEach(filterId => {
|
||||
console.log("checbox ", $(`#${filterId}`) , lcm_config.filterConfigs[filterId] , lcm_config)
|
||||
$(`#${filterId}`).prop('checked', lcm_config.filterConfigs[filterId]);
|
||||
});
|
||||
// Écouteurs pour les filtres
|
||||
Object.keys(lcm_config.filterConfigs).forEach(filterId => {
|
||||
$(`#${filterId}`).on('change', function() {
|
||||
lcm_config[lcm_config.filterConfigs[filterId]] = this.checked;
|
||||
/**
|
||||
* boutons de changement de filtres et de rechargement des bornes à l'affichage
|
||||
*/
|
||||
$('#removeMarkers').on('click', function () {
|
||||
supprimerMarqueurs();
|
||||
});
|
||||
$('#load').on('click', function () {
|
||||
loadOverpassQuery();
|
||||
});
|
||||
$('#toggleSidePanel').on('click', function () {
|
||||
$('body').toggleClass('side-panel-open');
|
||||
});
|
||||
$('#chercherButton').on('click', function () {
|
||||
supprimerMarqueurs();
|
||||
loadOverpassQuery();
|
||||
});
|
||||
$('#setRandomView').on('click', function () {
|
||||
setRandomView();
|
||||
loadOverpassQuery();
|
||||
});
|
||||
$('#filterUnkown').on('click', function () {
|
||||
display_unknown_max_power_station = cycleVariableState(display_unknown_max_power_station, '#filterUnkown');
|
||||
showActiveFilter(display_unknown_max_power_station, '#filterUnkown');
|
||||
refreshDisplay();
|
||||
});
|
||||
});
|
||||
|
||||
food_places_markers.addTo(map);
|
||||
$('#found_charging_stations').hide();
|
||||
/**
|
||||
* toggle des alertes de tags décrivant la présence de cable
|
||||
*/
|
||||
$('#cableMissing').on('click', function () {
|
||||
display_alert_cable_missing = !display_alert_cable_missing;
|
||||
showActiveFilter(display_alert_cable_missing, '#cableMissing');
|
||||
refreshDisplay();
|
||||
});
|
||||
showActiveFilter(display_unknown_max_power_station, '#filterUnkown');
|
||||
|
||||
// Mettre à jour le contrôle des calques
|
||||
const overlayMaps = {
|
||||
"Stations de recharge": all_stations_markers,
|
||||
"Restaurants et cafés": food_places_markers,
|
||||
"Bornes potentielles (Osmose)": osmose_markers
|
||||
};
|
||||
$('#shareUrl').on('click', copyCurrentUrl);
|
||||
|
||||
// Créer deux contrôles de couches séparés
|
||||
// const baseLayerControl = L.control.layers(baseLayers, null, {
|
||||
// collapsed: true,
|
||||
// className: 'leaflet-control-layers base-layers',
|
||||
// id: 'base-layers-control'
|
||||
// }).addTo(map);
|
||||
|
||||
const overlayControl = L.control.layers(null, overlayMaps, {
|
||||
collapsed: true,
|
||||
className: 'leaflet-control-layers overlay-layers',
|
||||
id: 'overlay-layers-control'
|
||||
}).addTo(map);
|
||||
|
||||
$('#sendToJOSM').on('click', () => {
|
||||
sendToJOSM(map, geojsondata)
|
||||
.then(() => {
|
||||
console.log('Données envoyées à JOSM avec succès !');
|
||||
})
|
||||
.catch(() => {
|
||||
alert('Erreur : JOSM doit être ouvert avec l\'option "Contrôle à distance" activée');
|
||||
// Initialisation des états des checkboxes des filtres selon les valeurs de configuration
|
||||
Object.keys(lcm_config.filterConfigs).forEach(filterId => {
|
||||
console.log("checbox ", $(`#${filterId}`) , lcm_config.filterConfigs[filterId] , lcm_config)
|
||||
$(`#${filterId}`).prop('checked', lcm_config.filterConfigs[filterId]);
|
||||
});
|
||||
// Écouteurs pour les filtres
|
||||
Object.keys(lcm_config.filterConfigs).forEach(filterId => {
|
||||
$(`#${filterId}`).on('change', function() {
|
||||
lcm_config[lcm_config.filterConfigs[filterId]] = this.checked;
|
||||
refreshDisplay();
|
||||
});
|
||||
});
|
||||
$('#josmLink').on('click', () => {
|
||||
sendToJOSM(map, geojsondata)
|
||||
.then(() => {
|
||||
console.log('Données envoyées à JOSM avec succès !');
|
||||
})
|
||||
.catch(() => {
|
||||
alert('Erreur : JOSM doit être ouvert avec l\'option de télécommande "Contrôle à distance" activée dans ses paramètres (accédez-y avec F12)');
|
||||
});
|
||||
});
|
||||
|
||||
$('#searchButton').on('click', searchLocation);
|
||||
$('#shareUrl').on('click', copyCurrentUrl);
|
||||
});
|
||||
|
||||
|
||||
$('#searchResults').on('change', function () {
|
||||
const selectedIndex = $(this).val();
|
||||
if (selectedIndex !== null) {
|
||||
const selectedPlace = $(this).find('option:selected').data('place');
|
||||
moveToLocation(selectedPlace);
|
||||
}
|
||||
});
|
||||
food_places_markers.addTo(map);
|
||||
$('#found_charging_stations').hide();
|
||||
|
||||
osmose_markers.addTo(map);
|
||||
// Mettre à jour le contrôle des calques
|
||||
const overlayMaps = {
|
||||
"Stations de recharge": all_stations_markers,
|
||||
"Restaurants et cafés": food_places_markers,
|
||||
"Bornes potentielles (Osmose)": osmose_markers
|
||||
};
|
||||
|
||||
// Ajouter le contrôle de source de recherche
|
||||
const searchControl = `
|
||||
<div class="search-source-control">
|
||||
<label>
|
||||
<input type="checkbox" id="useAddok" checked>
|
||||
Utiliser Addok (France)
|
||||
</label>
|
||||
</div>
|
||||
`;
|
||||
$('#searchLocation').after(searchControl);
|
||||
// const baseLayersControl = L.control.layers(baseLayers, null, {
|
||||
// collapsed: true,
|
||||
// className: 'leaflet-control-layers base-layers',
|
||||
// id: 'base-layers-control'
|
||||
// }).addTo(map);
|
||||
|
||||
// Mettre à jour les marqueurs Osmose quand la visibilité des stations change
|
||||
map.on('overlayremove overlayadd', function (e) {
|
||||
if (e.name === "Stations de recharge" && map.getZoom() > 12) {
|
||||
searchOsmoseIssues(map);
|
||||
}
|
||||
const overlayControl = L.control.layers(null, overlayMaps, {
|
||||
collapsed: true,
|
||||
className: 'leaflet-control-layers overlay-layers',
|
||||
id: 'overlay-layers-control'
|
||||
}).addTo(map);
|
||||
|
||||
$('#sendToJOSM').on('click', () => {
|
||||
sendToJOSM(map, geojsondata)
|
||||
.then(() => {
|
||||
console.log('Données envoyées à JOSM avec succès !');
|
||||
})
|
||||
.catch(() => {
|
||||
alert('Erreur : JOSM doit être ouvert avec l\'option "Contrôle à distance" activée');
|
||||
});
|
||||
});
|
||||
$('#josmLink').on('click', () => {
|
||||
sendToJOSM(map, geojsondata)
|
||||
.then(() => {
|
||||
console.log('Données envoyées à JOSM avec succès !');
|
||||
})
|
||||
.catch(() => {
|
||||
alert('Erreur : JOSM doit être ouvert avec l\'option de télécommande "Contrôle à distance" activée dans ses paramètres (accédez-y avec F12)');
|
||||
});
|
||||
});
|
||||
|
||||
$('#searchButton').on('click', searchLocation);
|
||||
$('#shareUrl').on('click', copyCurrentUrl);
|
||||
$('#filter_max_output').on('input', function () {
|
||||
const value = $(this).val();
|
||||
console.log('filter_max_output', value, $(this));
|
||||
$('#filter_max_output_display').text(value + ' kW');
|
||||
refreshDisplay();
|
||||
});
|
||||
$('#filter_max_output_slider').on('input', function () {
|
||||
const value = $(this).val();
|
||||
|
||||
lcm_config.filter_max_output_default_value = value;
|
||||
$('#filter_max_output_display').text(value + ' kW');
|
||||
refreshDisplay();
|
||||
});
|
||||
|
||||
|
||||
$('#searchResults').on('change', function () {
|
||||
const selectedIndex = $(this).eq(0).val();
|
||||
if (selectedIndex !== null) {
|
||||
const selectedPlace = $(this).find('option:selected').data('place');
|
||||
moveToLocation(selectedPlace);
|
||||
}
|
||||
});
|
||||
|
||||
osmose_markers.addTo(map);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1404,4 +1408,18 @@ init()
|
|||
|
||||
// Créer un nouveau pane pour les marqueurs Osmose avec un zIndex plus élevé
|
||||
map.createPane('osmosePane');
|
||||
map.getPane('osmosePane').style.zIndex = 1000;
|
||||
map.getPane('osmosePane').style.zIndex = 1000;
|
||||
|
||||
// Ajouter une nouvelle fonction pour mettre à jour le compteur de stations filtrées
|
||||
function updateFilteredStationsCount() {
|
||||
const totalStations = geojsondata ? geojsondata.features.length : 0;
|
||||
const filterStats = `<div class="filter-stats">${displayedStationsCount} stations sur ${totalStations} trouvées</div>`;
|
||||
|
||||
// Mettre à jour ou créer l'élément après le slider
|
||||
let existingStats = $('.filter-stats');
|
||||
if (existingStats.length) {
|
||||
existingStats.replaceWith(filterStats);
|
||||
} else {
|
||||
$('#filter_max_output_display').after(filterStats);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue