46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import { Address } from "./types";
|
|
|
|
export function formatAddress(address?: Address): string {
|
|
if (!address) {
|
|
return "undefined";
|
|
}
|
|
if (address.number === "" && address.street === "") {
|
|
return "no address provided";
|
|
}
|
|
return `${address.number} ${address.street}, ${address.locality}`;
|
|
}
|
|
export function formatDistance(meters: number | undefined) {
|
|
if (meters === undefined || meters === null) {
|
|
return "unknown";
|
|
}
|
|
if (meters < 1) {
|
|
const mm = Math.round(meters * 1000);
|
|
return `${mm} mm`;
|
|
} else if (meters >= 1000) {
|
|
const km = Math.round(meters / 1000);
|
|
return `${km} km`;
|
|
} else {
|
|
const m = Math.round(meters);
|
|
return `${m} m`;
|
|
}
|
|
}
|
|
export function formatRelativeTime(dateString: string): string {
|
|
if (!dateString) return "";
|
|
|
|
const date = new Date(dateString);
|
|
const now = new Date();
|
|
const diffMs = now.getTime() - date.getTime();
|
|
const diffMins = Math.floor(diffMs / 60000);
|
|
const diffHours = Math.floor(diffMins / 60);
|
|
const diffDays = Math.floor(diffHours / 24);
|
|
|
|
if (diffMins < 1) return "just now";
|
|
if (diffMins < 60) return `${diffMins} min ago`;
|
|
if (diffHours < 24) return `${diffHours} hour${diffHours > 1 ? "s" : ""} ago`;
|
|
return `${diffDays} day${diffDays > 1 ? "s" : ""} ago`;
|
|
}
|
|
|
|
export function shortAddress(a: Address | undefined): string {
|
|
if (!a) return "unknown";
|
|
return `${a.number} ${a.street}, ${a.locality}`;
|
|
}
|