pub struct WorkInterval {
pub start: NaiveDateTime,
pub end: NaiveDateTime,
pub duration: Duration,
pub pause_after: Option<usize>,
}Expand description
Represents a single continuous work interval between breaks.
This structure captures a period of uninterrupted work time, providing the foundation for productivity analysis and reporting. Each interval represents a focused work session bounded by either the workday start/end or pause periods.
ยงInterval Boundaries
Work intervals are defined by:
- Start Time: When focused work began (workday start or end of previous pause)
- End Time: When focused work ended (start of next pause or workday end)
- Duration: Total time spent in focused work during this period
ยงPause Association
Each interval can be associated with the pause that follows it:
- Some(index): Index of the pause that ended this work interval
- None: This interval extends to the end of the workday
This association enables:
- Analysis of work-break patterns
- Identification of interruption causes
- Optimization recommendations for pause timing
ยงUsage Context
Work intervals are used for:
- Productivity calculation and analysis
- Generating detailed work reports
- Identifying optimization opportunities
- Visualizing work patterns in charts and graphs
Fieldsยง
ยงstart: NaiveDateTimeThe timestamp when this work interval began.
This is either the workday start time (for the first interval) or the end time of the previous pause (for subsequent intervals). Represents the moment when focused work activity resumed.
end: NaiveDateTimeThe timestamp when this work interval ended.
This is either the start time of the next pause (for most intervals) or the workday end time (for the final interval). Represents the moment when focused work was interrupted or completed.
duration: DurationThe total duration of focused work during this interval.
Calculated as end - start, this represents the net productive
time during this period. Used for productivity calculations,
efficiency analysis, and time accounting in reports.
pause_after: Option<usize>Optional reference to the pause that follows this interval.
Contains the index of the pause in the original pause collection
that ended this work interval. None indicates this interval
extends to the end of the workday without interruption.
ยงUsage Notes
- Used for analyzing work-break patterns
- Enables identification of frequent interruption points
- Supports optimization recommendations for pause timing
- Links intervals to specific causes of work interruption
Implementationsยง
Sourceยงimpl WorkInterval
impl WorkInterval
Sourcepub fn is_short(&self, min_minutes: u64) -> bool
pub fn is_short(&self, min_minutes: u64) -> bool
Determines if this interval is shorter than the specified minimum duration.
This method is used to identify โshort intervalsโ that may indicate excessive interruptions or poor work habits. Short intervals often represent brief periods of work between frequent breaks, which can significantly impact overall productivity.
ยงUsage in Analysis
Short intervals are identified for:
- Productivity Analysis: Understanding interruption patterns
- Optimization Recommendations: Suggesting pause consolidation
- Work Habit Assessment: Identifying areas for improvement
- Focus Period Analysis: Measuring sustained work capability
ยงThreshold Considerations
Common minimum duration thresholds:
- 15 minutes: Very strict, identifies micro-interruptions
- 30 minutes: Moderate, focuses on meaningful work blocks
- 60 minutes: Lenient, identifies only major fragmentation
ยงArguments
min_minutes- Minimum duration threshold in minutes
ยงReturns
Returns true if the interval duration is less than the threshold.
ยงExamples
use kasl::libs::report::WorkInterval;
use chrono::{Duration, Local};
let start_time = Local::now().naive_local();
let interval = WorkInterval {
start: start_time,
end: start_time + Duration::minutes(20),
duration: Duration::minutes(20),
pause_after: Some(1),
};
assert_eq!(interval.is_short(30), true); // 20 < 30
assert_eq!(interval.is_short(15), false); // 20 >= 15Trait Implementationsยง
Sourceยงimpl Clone for WorkInterval
impl Clone for WorkInterval
Sourceยงfn clone(&self) -> WorkInterval
fn clone(&self) -> WorkInterval
1.0.0 (const: unstable) ยท Sourceยงfn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more