gmap 0.3.0

Git repository analysis tool for churn and heatmap visualization
Documentation
use std::collections::HashMap;
use crate::heat::FileExtensionStats;

pub struct WeekStats {
    pub week: String,
    pub commits: usize,
    pub lines_added: usize,
    pub lines_deleted: usize,
    pub top_authors: Vec<String>,
    pub file_extensions: HashMap<String, FileExtensionStats>,
    pub top_files: Vec<(String, usize)>,
}

pub struct DetailedWeekStats {
    pub base: WeekStats,
    pub file_types: HashMap<String, usize>,
    pub hourly_distribution: Vec<usize>,
    pub daily_distribution: Vec<usize>,
    pub commit_messages: Vec<String>,
    pub largest_commit: Option<(usize, String)>,
}

pub struct TuiState {
    pub selected: usize,
    pub view_mode: ViewMode,
    pub tab_index: usize,
    pub show_help: bool,
    pub search_query: String,
    pub search_mode: bool,
    pub filtered_indices: Vec<usize>,
}

#[derive(Clone, Copy, PartialEq)]
pub enum ViewMode {
    Heatmap,
    Statistics,
    FileTypes,
    Timeline,
}

impl Default for TuiState {
    fn default() -> Self {
        Self {
            selected: 0,
            view_mode: ViewMode::Heatmap,
            tab_index: 0,
            show_help: false,
            search_query: String::new(),
            search_mode: false,
            filtered_indices: Vec::new(),
        }
    }
}