"""
Time_Tracker
Generated by Eden via recursive self-improvement
2025-10-28 08:28:43.840083
"""

from datetime import datetime

class Time_Tracker:
    """
    A class to track daily activities and calculate their durations.
    
    Methods:
        __init__: Initializes tracking variables.
        start_activity(activity_name): Starts tracking a new activity.
        stop_activity(): Stops the current activity and records its duration.
        display_summary(): Shows a summary of all tracked activities.
    """

    def __init__(self):
        self.active_activity = None
        self.tracked_activities = []
        self.current_start_time = None
        self.activity_id = 0

    def start_activity(self, activity_name):
        """
        Starts tracking a new activity. If an activity was already in progress,
        it first logs the duration of that previous activity.
        
        Parameters:
            activity_name (str): Name of the activity to start tracking.
        """
        if self.active_activity is not None:
            self.stop_activity()
            
        self.active_activity = activity_name
        self.current_start_time = datetime.now()
        print(f"Started tracking {self.active_activity} at {self.current_start_time}")

    def stop_activity(self):
        """
        Stops the currently tracked activity and records its duration.
        
        Raises:
            ValueError: If no activity is currently being tracked.
        """
        if self.active_activity is None:
            raise ValueError("No active activity to stop")
            
        end_time = datetime.now()
        duration = (end_time - self.current_start_time).total_seconds() / 60
        
        self.tracked_activities.append({
            'id': self.activity_id,
            'activity': self.active_activity,
            'start': self.current_start_time,
            'end': end_time,
            'duration': round(duration, 2)
        })
        
        self.active_activity = None
        self.current_start_time = None
        
        print(f"Stopped tracking {self.tracked_activities[-1]['activity']} after {self.tracked_activities[-1]['duration']} minutes")

    def display_summary(self):
        """
        Displays a summary of all tracked activities with their durations.
        """
        if not self.tracked_activities:
            print("No activities have been tracked yet.")
            return
            
        total_time = 0
        for activity in self.tracked_activities:
            duration = (activity['end'] - activity['start']).total_seconds() / 60
            total_time += duration
            
        print("\nActivity Summary:")
        print(f"{'ID':<4}{'Activity':<20}{'Start Time':<15}{'Duration (min)':<12}")
        for activity in self.tracked_activities:
            duration = round((activity['end'] - activity['start']).total_seconds() / 60, 2)
            print(f"{activity['id']:4}{activity['activity']:<20}{activity['start'].strftime('%H:%M'):<15}{duration:12}")
        print(f"\nTotal time spent: {round(total_time, 2)} minutes")

# Example usage:
if __name__ == "__main__":
    tracker = Time_Tracker()
    
    # Example tracking activities
    tracker.start_activity("Morning Meeting")
    input("Press Enter when the activity stops...")  # Simulate some work time
    tracker.stop_activity()
    
    tracker.start_activity("Lunch Break")
    input("Press Enter when the activity stops...")
    tracker.stop_activity()
    
    tracker.display_summary()