File size: 3,311 Bytes
46e7aa4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c252e4b
 
 
46e7aa4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import streamlit as st
import pandas as pd
import os
import ast

## Init
# Página
if "pag" not in st.session_state:
    st.session_state.pag = 0

# Botón
if "buscar" not in st.session_state:
    st.session_state.buscar = False

# Clicked
if "clicked" not in st.session_state:
    st.session_state.clicked = False

## Funciones
# Función para cargar archivos
def load_file(file_path):
    return pd.read_csv(file_path)

def callback():
    st.session_state.buscar = True

# Funciones para editar el session_state


## Aplicación
st.title("Buscador")

# Obtener lista de archivos en la carpeta de datos
cwd = os.getcwd()

st.write(cwd)

data_folder = os.path.join(cwd, 'web', 'pages', 'data')
files = os.listdir(data_folder)
files = [file for file in files if file.endswith(('csv', 'xlsx'))]

# Seleccionar archivo
st.header("Seleccione el archivo")
selected_file = st.selectbox("Archivos disponibles", files)

if selected_file:

    # Carga de datos
    file_path = os.path.join(data_folder, selected_file)
    data = load_file(file_path)
    
    # Buscador por índice o nombre de columna
    search_option = st.radio("Buscar por", ('Índice', 'Nombre de columna'))

    # Índice
    if search_option == 'Índice':
        
        index = st.number_input("Ingrese el índice", min_value=0, max_value=len(data)-1)

        result = st.button("Buscar")
        if result:
            st.session_state.buscar = True
            st.session_state.clicked = True
            st.session_state.pag = 0

        if st.session_state.buscar or st.session_state.clicked:
            if st.session_state.clicked:
                st.session_state.pag = 0
            
            st.write(data.iloc[index])
            
            if 'Images_URL' in data.columns:
                # Lista de imágenes
                img_list = ast.literal_eval(data.loc[index, 'Images_URL'])

                # Añadir flechas para navegar entre las imágenes
                cols = st.columns(7)  # 2 columnas para las flechas
                
                # Flecha izquierda para retroceder
                with cols[2]:
                    if st.button("←", on_click=callback()):
                        if st.session_state.pag > 0:
                            st.session_state.pag -= 1
                        else:
                            st.session_state.pag = len(img_list) - 1
                
                # Flecha derecha para avanzar
                with cols[5]:
                    if st.button("→", on_click=callback()):
                        if st.session_state.pag < len(img_list) - 1:
                            st.session_state.pag += 1
                        else:
                            st.session_state.pag = 0
        

                # Mostrar la imagen actual
                st.image(img_list[st.session_state.pag].strip(), caption="{} de {}".format(st.session_state.pag + 1, len(img_list)))
                
                
      

    # Nombre de columna
    else:
        column = st.selectbox("Seleccione la columna", data.columns)
        query = st.text_input(f"Ingrese el valor para buscar en la columna {column}")
        if st.button("Buscar"):
            st.write(data[data[column].astype(str).str.contains(query, case=False, na=False)])

st.session_state.clicked = False