Add break time feature to time entries
- Add breakMinutes field to TimeEntry model and database migration - Users can now add break duration (minutes) to time entries - Break time is subtracted from total tracked duration - Validation ensures break time cannot exceed total entry duration - Statistics and client target balance calculations account for breaks - Frontend UI includes break time input in TimeEntryFormModal - Duration displays show break time deduction (e.g., '7h (−1h break)') - Both project/client statistics and weekly balance calculations updated
This commit is contained in:
@@ -43,7 +43,14 @@ export function formatDurationHoursMinutes(totalSeconds: number): string {
|
||||
return `${hours}h ${minutes}m`;
|
||||
}
|
||||
|
||||
export function calculateDuration(startTime: string, endTime: string): number {
|
||||
export function calculateDuration(startTime: string, endTime: string, breakMinutes: number = 0): number {
|
||||
const start = parseISO(startTime);
|
||||
const end = parseISO(endTime);
|
||||
const totalSeconds = differenceInSeconds(end, start);
|
||||
return totalSeconds - (breakMinutes * 60);
|
||||
}
|
||||
|
||||
export function calculateGrossDuration(startTime: string, endTime: string): number {
|
||||
const start = parseISO(startTime);
|
||||
const end = parseISO(endTime);
|
||||
return differenceInSeconds(end, start);
|
||||
@@ -52,16 +59,18 @@ export function calculateDuration(startTime: string, endTime: string): number {
|
||||
export function formatDurationFromDates(
|
||||
startTime: string,
|
||||
endTime: string,
|
||||
breakMinutes: number = 0,
|
||||
): string {
|
||||
const seconds = calculateDuration(startTime, endTime);
|
||||
const seconds = calculateDuration(startTime, endTime, breakMinutes);
|
||||
return formatDuration(seconds);
|
||||
}
|
||||
|
||||
export function formatDurationFromDatesHoursMinutes(
|
||||
startTime: string,
|
||||
endTime: string,
|
||||
breakMinutes: number = 0,
|
||||
): string {
|
||||
const seconds = calculateDuration(startTime, endTime);
|
||||
const seconds = calculateDuration(startTime, endTime, breakMinutes);
|
||||
return formatDurationHoursMinutes(seconds);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user