diff --git a/apps/journal/app/routes/routes.$id.tsx b/apps/journal/app/routes/routes.$id.tsx index 5623e31..821bc1b 100644 --- a/apps/journal/app/routes/routes.$id.tsx +++ b/apps/journal/app/routes/routes.$id.tsx @@ -99,6 +99,11 @@ export default function RouteDetailPage({ loaderData }: Route.ComponentProps) { const [editLoading, setEditLoading] = useState(false); const [highlightedDay, setHighlightedDay] = useState(null); + // A route is "empty" when it has no geometry and no computed distance — + // i.e. nobody has planned any waypoints yet. Surfaced as a dedicated + // empty-state below so the page isn't a dead end. + const isEmpty = !route.geojson && route.distance == null; + const handleEditInPlanner = useCallback(async () => { setEditLoading(true); try { @@ -121,7 +126,7 @@ export default function RouteDetailPage({ loaderData }: Route.ComponentProps) {

{route.description}

)} - {isOwner && ( + {isOwner && !isEmpty && (
+ + {t("routes.empty.uploadGpx")} + +
+ )} + + )} + {versions.length > 0 && (

Version History

diff --git a/packages/i18n/src/locales/de.ts b/packages/i18n/src/locales/de.ts index b4cb12c..87af7f4 100644 --- a/packages/i18n/src/locales/de.ts +++ b/packages/i18n/src/locales/de.ts @@ -179,6 +179,13 @@ export default { noRoutesYet: "Noch keine Routen. Erstelle deine erste Route!", noMapPreview: "Keine Kartenvorschau", saveChanges: "Änderungen speichern", + empty: { + heading: "Diese Route ist leer", + bodyOwner: "Du hast noch keine Wegpunkte geplant. Öffne sie im Planer, um eine Strecke zu skizzieren, oder lade eine GPX-Datei hoch.", + bodyViewer: "Diese Route enthält noch keine Wegpunkte.", + openInPlanner: "Im Planer öffnen", + uploadGpx: "oder eine GPX-Datei hochladen", + }, }, activities: { title: "Aktivitäten", diff --git a/packages/i18n/src/locales/en.ts b/packages/i18n/src/locales/en.ts index f41764d..1560842 100644 --- a/packages/i18n/src/locales/en.ts +++ b/packages/i18n/src/locales/en.ts @@ -179,6 +179,13 @@ export default { noRoutesYet: "No routes yet. Create your first route!", noMapPreview: "No map preview", saveChanges: "Save Changes", + empty: { + heading: "This route is empty", + bodyOwner: "You haven't planned any waypoints yet. Open it in the Planner to sketch a path, or upload a GPX file.", + bodyViewer: "This route doesn't have any waypoints yet.", + openInPlanner: "Open in Planner", + uploadGpx: "or upload a GPX file", + }, }, activities: { title: "Activities",