Files
FitTrack_ReportGenerator/examples/GarminSync/garminsync/web/static/utils.js
sstent 9e0bd322d3 feat: Initial implementation of FitTrack Report Generator
This commit introduces the initial version of the FitTrack Report Generator, a FastAPI application for analyzing workout files.

Key features include:
- Parsing of FIT, TCX, and GPX workout files.
- Analysis of power, heart rate, speed, and elevation data.
- Generation of summary reports and charts.
- REST API for single and batch workout analysis.

The project structure has been set up with a `src` directory for core logic, an `api` directory for the FastAPI application, and a `tests` directory for unit, integration, and contract tests.

The development workflow is configured to use Docker and modern Python tooling.
2025-10-11 09:54:13 -07:00

57 lines
1.6 KiB
JavaScript

// Utility functions for the GarminSync application
class Utils {
// Format date for display
static formatDate(dateStr) {
if (!dateStr) return '-';
return new Date(dateStr).toLocaleDateString();
}
// Format duration from seconds to HH:MM:SS
static formatDuration(seconds) {
if (!seconds) return '-';
const hours = Math.floor(seconds / 3600);
const minutes = Math.floor((seconds % 3600) / 60);
const secondsLeft = seconds % 60;
return `${hours}:${minutes.toString().padStart(2, '0')}:${secondsLeft.toString().padStart(2, '0')}`;
}
// Format distance from meters to kilometers
static formatDistance(meters) {
if (!meters) return '-';
return `${(meters / 1000).toFixed(1)} km`;
}
// Format power from watts
static formatPower(watts) {
return watts ? `${Math.round(watts)}W` : '-';
}
// Format heart rate (adds 'bpm')
static formatHeartRate(hr) {
return hr ? `${hr} bpm` : '-';
}
// Show error message
static showError(message) {
console.error(message);
// In a real implementation, you might want to show this in the UI
alert(`Error: ${message}`);
}
// Show success message
static showSuccess(message) {
console.log(message);
// In a real implementation, you might want to show this in the UI
}
// Format timestamp for log entries
static formatTimestamp(timestamp) {
if (!timestamp) return '';
return new Date(timestamp).toLocaleString();
}
}
// Make Utils available globally
window.Utils = Utils;