diff --git a/gpx/src/gpx.ts b/gpx/src/gpx.ts
index 328a750c..32e373a4 100644
--- a/gpx/src/gpx.ts
+++ b/gpx/src/gpx.ts
@@ -397,6 +397,22 @@ export class TrackPoint {
getCoordinates(): Coordinates {
return this.attributes;
}
+
+ getHeartRate(): number {
+ return this.extensions && this.extensions['gpxtpx:TrackPointExtension'] && this.extensions['gpxtpx:TrackPointExtension']['gpxtpx:hr'] ? this.extensions['gpxtpx:TrackPointExtension']['gpxtpx:hr'] : undefined;
+ }
+
+ getCadence(): number {
+ return this.extensions && this.extensions['gpxtpx:TrackPointExtension'] && this.extensions['gpxtpx:TrackPointExtension']['gpxtpx:cad'] ? this.extensions['gpxtpx:TrackPointExtension']['gpxtpx:cad'] : undefined;
+ }
+
+ getTemperature(): number {
+ return this.extensions && this.extensions['gpxtpx:TrackPointExtension'] && this.extensions['gpxtpx:TrackPointExtension']['gpxtpx:atemp'] ? this.extensions['gpxtpx:TrackPointExtension']['gpxtpx:atemp'] : undefined;
+ }
+
+ getPower(): number {
+ return this.extensions && this.extensions["gpxpx:PowerExtension"] && this.extensions["gpxpx:PowerExtension"]["gpxpx:PowerInWatts"] ? this.extensions["gpxpx:PowerExtension"]["gpxpx:PowerInWatts"] : undefined;
+ }
};
export class Waypoint {
diff --git a/website/package-lock.json b/website/package-lock.json
index d1835620..354865e8 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -9,7 +9,7 @@
"version": "0.0.1",
"dependencies": {
"@mapbox/mapbox-gl-geocoder": "^5.0.2",
- "bits-ui": "^0.21.3",
+ "bits-ui": "^0.21.4",
"chart.js": "^4.4.2",
"clsx": "^2.1.0",
"gpx": "file:../gpx",
@@ -1828,9 +1828,9 @@
}
},
"node_modules/bits-ui": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-0.21.3.tgz",
- "integrity": "sha512-VMQVXwYIjYmDoudIRm2ZlS2guy97lUQk73DwSfTnaS0dhldImbDFMATNxjLSLsTDj8FqJ8Dv78wSctdxcloIbQ==",
+ "version": "0.21.4",
+ "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-0.21.4.tgz",
+ "integrity": "sha512-IL+7s19GW561jwkeYk23dwkTfQ9606I062qqv2AtjCdhhIdoOEJNVBX0kjP5xefSaS6ojL0HGG54att0aRTcAQ==",
"dependencies": {
"@internationalized/date": "^3.5.1",
"@melt-ui/svelte": "0.76.2",
diff --git a/website/package.json b/website/package.json
index 14fd0817..f0b20529 100644
--- a/website/package.json
+++ b/website/package.json
@@ -42,7 +42,7 @@
"type": "module",
"dependencies": {
"@mapbox/mapbox-gl-geocoder": "^5.0.2",
- "bits-ui": "^0.21.3",
+ "bits-ui": "^0.21.4",
"chart.js": "^4.4.2",
"clsx": "^2.1.0",
"gpx": "file:../gpx",
diff --git a/website/src/lib/components/ElevationProfile.svelte b/website/src/lib/components/ElevationProfile.svelte
index 9774b614..725379c8 100644
--- a/website/src/lib/components/ElevationProfile.svelte
+++ b/website/src/lib/components/ElevationProfile.svelte
@@ -1,88 +1,127 @@
-
-
+
+
+
+
+
+
+
+
+
+ Show slope
+
+
+
+
+
+ Show surface
+
+
+
+
+
+
+
+
+ Show speed
+
+
+
+
+
+ Show heart rate
+
+
+
+
+
+ Show cadence
+
+
+
+
+
+ Show temperature
+
+
+
+
+
+ Show power
+
+
+
+
diff --git a/website/src/lib/components/GPXData.svelte b/website/src/lib/components/GPXData.svelte
index 2d1e8ae9..71fbc588 100644
--- a/website/src/lib/components/GPXData.svelte
+++ b/website/src/lib/components/GPXData.svelte
@@ -1,6 +1,6 @@
-
+
diff --git a/website/src/lib/components/ui/toggle-group/index.ts b/website/src/lib/components/ui/toggle-group/index.ts
new file mode 100644
index 00000000..053ebbc4
--- /dev/null
+++ b/website/src/lib/components/ui/toggle-group/index.ts
@@ -0,0 +1,23 @@
+import type { VariantProps } from "tailwind-variants";
+import { getContext, setContext } from "svelte";
+import Root from "./toggle-group.svelte";
+import Item from "./toggle-group-item.svelte";
+import type { toggleVariants } from "$lib/components/ui/toggle/index.js";
+
+export type ToggleVariants = VariantProps
;
+
+export function setToggleGroupCtx(props: ToggleVariants) {
+ setContext("toggleGroup", props);
+}
+
+export function getToggleGroupCtx() {
+ return getContext("toggleGroup");
+}
+
+export {
+ Root,
+ Item,
+ //
+ Root as ToggleGroup,
+ Item as ToggleGroupItem,
+};
diff --git a/website/src/lib/components/ui/toggle-group/toggle-group-item.svelte b/website/src/lib/components/ui/toggle-group/toggle-group-item.svelte
new file mode 100644
index 00000000..1984884e
--- /dev/null
+++ b/website/src/lib/components/ui/toggle-group/toggle-group-item.svelte
@@ -0,0 +1,31 @@
+
+
+
+
+
diff --git a/website/src/lib/components/ui/toggle-group/toggle-group.svelte b/website/src/lib/components/ui/toggle-group/toggle-group.svelte
new file mode 100644
index 00000000..4077c11f
--- /dev/null
+++ b/website/src/lib/components/ui/toggle-group/toggle-group.svelte
@@ -0,0 +1,30 @@
+
+
+
+
+
diff --git a/website/src/lib/components/ui/toggle/index.ts b/website/src/lib/components/ui/toggle/index.ts
new file mode 100644
index 00000000..1ab27ca3
--- /dev/null
+++ b/website/src/lib/components/ui/toggle/index.ts
@@ -0,0 +1,31 @@
+import { type VariantProps, tv } from "tailwind-variants";
+import Root from "./toggle.svelte";
+
+export const toggleVariants = tv({
+ base: "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
+ variants: {
+ variant: {
+ default: "bg-transparent",
+ outline:
+ "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground",
+ },
+ size: {
+ default: "h-10 px-3",
+ sm: "h-9 px-2.5",
+ lg: "h-11 px-5",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "default",
+ },
+});
+
+export type Variant = VariantProps["variant"];
+export type Size = VariantProps["size"];
+
+export {
+ Root,
+ //
+ Root as Toggle,
+};
diff --git a/website/src/lib/components/ui/toggle/toggle.svelte b/website/src/lib/components/ui/toggle/toggle.svelte
new file mode 100644
index 00000000..2f27b43d
--- /dev/null
+++ b/website/src/lib/components/ui/toggle/toggle.svelte
@@ -0,0 +1,26 @@
+
+
+
+
+