adds new trail page

This commit is contained in:
Christian Beutel
2024-01-29 00:41:54 +01:00
parent b302ccded0
commit 2d4c673060
28 changed files with 783 additions and 115 deletions

View File

@@ -2,23 +2,56 @@ import type { Category } from "./category";
import type { SummitLog } from "./summit_log";
import type { Waypoint } from "./waypoint";
interface Trail {
id: string;
class Trail {
id?: string;
name: string;
location: string;
distance: number;
elevation_gain: number;
duration: number;
thumbnail: string;
location?: string;
distance?: number;
elevation_gain?: number;
duration?: number;
thumbnail?: string;
photos: string[];
gpx: string;
gpx?: string;
expand: {
category: Category;
category?: Category;
waypoints: Waypoint[]
summit_logs: SummitLog[]
}
tags?: string[];
description: string;
description?: string;
constructor(name: string,
id?: string,
location?: string,
distance?: number,
elevation_gain?: number,
duration?: number,
thumbnail?: string,
photos?: string[],
gpx?: string,
category?: Category,
waypoints?: Waypoint[],
summit_logs?: SummitLog[],
tags?: string[],
description?: string
) {
this.id = id;
this.name = name;
this.location = location;
this.distance = distance;
this.elevation_gain = elevation_gain;
this.duration = duration;
this.thumbnail = thumbnail;
this.photos = photos ?? [];
this.gpx = gpx;
this.expand = {
category: category,
waypoints: waypoints ?? [],
summit_logs: summit_logs ?? []
}
this.tags = tags ?? []
this.description = description ?? "";
}
}
export type { Trail }
export { Trail };

View File

@@ -1,10 +1,33 @@
interface Waypoint {
id: string;
name: string;
description: string;
import type { Marker } from "leaflet";
import { date, number, object, string } from "yup";
class Waypoint {
id?: string;
name?: string;
description?: string;
lat: number;
lon: number;
icon: string;
icon?: string;
marker?: Marker;
constructor(lat: number, lon: number, params?: {id?: string, name?: string, description?: string, icon?: string, marker?: Marker}) {
this.id = params?.id;
this.name = params?.name ?? "";
this.description = params?.description ?? "";
this.lat = lat;
this.lon = lon;
this.icon = params?.icon ?? "circle";
this.marker = params?.marker;
}
}
export type { Waypoint }
const waypointSchema = object<Waypoint>({
id: string().optional(),
name: string().optional(),
description: string().optional(),
lat: number().min(0).required('Required').typeError('Invalid latitude'),
lon: number().min(0).required('Required').typeError('Invalid longitude'),
icon: string().optional()
});
export { Waypoint, waypointSchema }