← Retour aux issues

Affichage étrange pour la durée de l'itinéraire

publié le
Avatar Codeberg de GhostGhost

Pour certains itinéraires, l'affichage suivant peut apparaître : "En voiture, le trajet de 459 km vous prendra 4 h et 60 min". Cela semble incorrect (car 60 minutes équivalent à une heure). La cause se trouve dans la fonction daysHoursMinutesFromSeconds - https://github.com/cartesapp/cartes/blob/master/app/RouteR%C3%A9sum%C3%A9.tsx#L107C14-L107C41, qui, si elle est appelée avec un nombre de secondes inférieur à une minute vers une heure (par exemple, 4 heures 59 minutes et 40 secondes), arrondit les "minutes".

Pour les très courts trajets, l'affichage suivant peut apparaître : "À pieds, le trajet de 40 m vous prendra 0 min". Cela semble également incorrect. La cause se trouve dans la même fonction.

Exemples numériques :

Comme la function n'est utilisé qu'à des fins de présentation, je suggère de corriger directement les cas particuliers, comme ci-dessous. D'autres solutions sont bien sûr possibles.

const daysHoursMinutesFromSeconds = (seconds) => {
	/* Cette fonction est utilisée pour afficher des informations approximatif lisible par l'utilisateur. */
	const secondsInDay = 24 * 60 * 60
	const days = Math.floor(seconds / secondsInDay)
	const rest = (seconds % secondsInDay) / (60 * 60)
	const hours = Math.floor(rest)
	var minutes = Math.round((rest - hours) * 60)
	if (days == 0 && hours == 0 && minutes == 0) minutes = 1;
	if (minutes == 60) minutes = 59;
	return [days, hours, minutes]
}

✏️ Participer à la discussion