# /modules/plotting.py

"""
Módulo para la generación de todas las visualizaciones (gráficos) de la aplicación.
"""

import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
from .theming import PICTON_BLUE, apply_cabanna_theme

def plot_trend_comparison(
    df_current: pd.DataFrame, 
    df_historical: pd.DataFrame, 
    freq: str, 
    title: str
) -> go.Figure:
    """
    Crea un gráfico de barras comparando el período actual con el anterior.

    Args:
        df_current (pd.DataFrame): Datos del período actual.
        df_historical (pd.DataFrame): Datos históricos de la sucursal.
        freq (str): Frecuencia de análisis ('M', 'W', 'D').
        title (str): Título del gráfico.

    Returns:
        go.Figure: La figura de Plotly lista para mostrar.
    """
    # Lógica interna para preparar los datos de ambos períodos (similar a tu _plot_trend)
    # ... (Esta lógica es compleja, se puede abstraer aún más si es necesario)
    
    # Ejemplo simplificado de cómo se vería la preparación:
    s_curr = df_current.set_index('fecha_ticket').resample(freq)['ingreso'].sum().reset_index()
    s_curr['Periodo'] = 'Actual'
    
    # Aquí iría la lógica para encontrar el período previo
    # Por simplicidad, la omitimos aquí, pero el concepto es separar datos de visualización.
    
    fig = px.bar(
        s_curr, 
        x='fecha_ticket', 
        y='ingreso',
        title=title,
        color_discrete_sequence=PICTON_BLUE[5:]
    )
    
    # Aplicar tema de marca
    return apply_cabanna_theme(fig)