def update_map(data, selected_city):
    df = dados_cidade(selected_city)

    if not df.empty:
        df['Casos'] = df.groupby('BAIRRO')['BAIRRO'].transform('count')
        df = lat_lon_bairros(selected_city, df)
        map = bubble_map_bairros(df)
    else:
        df = pd.read_json(data)
        map = bubble_map(df)

    return map
def update_t_mortalidade(selected_city,data):
    if selected_city == 'Região' or selected_city == None:
        return ['-']

    df = pd.read_json(data)
    df_filtered = df[df['Cidade'] == selected_city]
    pop = df_filtered["pop"].iloc[0]

    df_city = dados_cidade(selected_city)
    if not df_city.empty:
        obitos = len(df_city[df_city["EVOLUCAO DO CASO"]=="ÓBITO"])
    else:
        obitos = df_filtered.groupby("Cidade")["Óbitos Confirmados"].max().sum()
    return [f'{(obitos/pop*1e5):.1f}']
def update_t_letalidade(selected_city,data):
    if selected_city == 'Região' or selected_city == None:
        return ['-']

    df = dados_cidade(selected_city)
    if not df.empty:
        obitos = len(df[df["EVOLUCAO DO CASO"]=="ÓBITO"])
        casos = len(df[df["RESULTADO DO TESTE"]=="Positivo"])
    else:
        df = pd.read_json(data)
        df_filtered = df[df['Cidade'] == selected_city]
        obitos = df_filtered.groupby("Cidade")["Óbitos Confirmados"].max().sum()
        casos = df_filtered.groupby("Cidade")["Casos Confirmados"].max().sum()

    return [f'{obitos/casos*100:.2f}%']
def update_t_incidencia(selected_city,data):
    if selected_city == 'Região' or selected_city == None:
        return ['-']

    df = pd.read_json(data)
    df_filtered = df[df['Cidade'] == selected_city]
    pop = df_filtered["pop"].iloc[0]

    df_city = dados_cidade(selected_city)
    if not df_city.empty:
        casos = len(df_city[df_city["RESULTADO DO TESTE"]=="Positivo"])
    else:
        casos = df_filtered.groupby("Cidade")["Casos Confirmados"].max().sum()

    return [f'{casos/pop*1e5:.1f}']
def update_time_series(selected_city,data,data_isolamento,tab_selected):
    if tab_selected == 'tab_isolamento':
        df = pd.read_json(data_isolamento)
        if selected_city != 'Região':
            df = df[df['city_name'] == selected_city]
        return series_isolamento(df)
    
    df = dados_cidade(selected_city)
    if df.empty:
        return dados_indisponiveis()
    
    if tab_selected == 'tab_acumulados':
        return series_acumulados(df)

    if tab_selected == 'tab_sexo':
        return series_sexo(df)

    if tab_selected == 'tab_sintomas':
        return series_sintomas(df)
def update_time_series(selected_city,data,tab_selected):
    if tab_selected == 'tab_gerais':
        df = pd.read_json(data)
        if selected_city != 'Região':
            df = df[df['Cidade'] == selected_city]
        return series_general(df)
    
    if tab_selected == 'tab_comparacao':
        df = pd.read_json(data)
        return series_comparacao(df)

    df = dados_cidade(selected_city)
    if df.empty:
        return dados_indisponiveis()

    if tab_selected == 'tab_bairros':
        return series_bairros(df)

    if tab_selected == 'tab_faixa_etaria':
        return series_faixa_etaria(df)
def update_n_recuperados(value,data):
    if value != 'Região':
        df = dados_cidade(value)
        if not df.empty:
            u = len(df[df["EVOLUCAO DO CASO"]=="CURA"])
            return [str(u)]

    df = pd.read_json(data)
    selected_city = value
    if selected_city == None:
        return ['-']
    elif selected_city == 'Região':
        df_filtered = df
    else:
        df_filtered = df[df['Cidade'] == selected_city]
    u = int(df_filtered.groupby("Cidade")["Casos Recuperados"].max().sum())
    if u == 0:
        return ['-']
    else:
        return [str(u)]
def update_n_confirmados(value,data):
    if value != 'Região':
        df = dados_cidade(value)
        if not df.empty:
            u = len(df[df["RESULTADO DO TESTE"]=="Positivo"])
            return [str(u)]

    df = pd.read_json(data)
    df['Data'] = df['Data']
    selected_city = value
    if selected_city == None:
        return ['-']
    elif selected_city == 'Região':
        df_filtered = df
    else:
        df_filtered = df[df['Cidade'] == selected_city]
    u = int(df_filtered.groupby("Cidade")["Casos Confirmados"].max().sum())
    if u == 0:
        return ['-']
    else:
        return [str(u)]