File size: 2,969 Bytes
45e5a75
 
03c2c4b
 
 
45e5a75
 
 
eba54ac
ea4879e
a1949ef
5b2776b
 
c99eebf
a1949ef
45e5a75
 
 
 
 
 
 
 
 
 
 
 
a1949ef
5b2776b
3652aa7
 
21c7f3c
3652aa7
5a3a6a7
3652aa7
21c7f3c
ee43876
a1949ef
45e5a75
 
423f589
45e5a75
 
1fa4bfa
 
 
 
03c2c4b
45e5a75
 
 
5a3a6a7
45e5a75
a1949ef
 
45e5a75
 
 
a1949ef
45e5a75
423f589
45e5a75
 
 
 
 
 
 
 
a1949ef
 
45e5a75
423f589
45e5a75
 
 
a1949ef
 
45e5a75
 
f3aa1c5
45e5a75
f3aa1c5
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
import streamlit as st
import pandas as pd
import traceback
import sys

from st_aggrid import AgGrid
from st_aggrid.grid_options_builder import GridOptionsBuilder
from st_aggrid.shared import JsCode
from download import download_button
from st_aggrid import GridUpdateMode, DataReturnMode

# Page config is set once with icon title and display style.  Wide mode since we want screen real estate for wide CSV files
st.set_page_config(page_icon="📝", page_title="📝CSV Data Analyzer📊", layout="wide")

# Style
def _max_width_():
    max_width_str = f"max-width: 1800px;"
    st.markdown(
        f"""
    <style>
    .reportview-container .main .block-container{{
        {max_width_str}
    }}
    </style>    
    """,
        unsafe_allow_html=True,
    )
    
# Title Bar with Images and Icons
col1, col2, col3 = st.columns([1,6,1])
with col1:
    st.image("https://cdnb.artstation.com/p/assets/images/images/054/910/875/large/aaron-wacker-cyberpunk-computer-brain-design.jpg?1665656558",width=128,)
with col2:
    st.title("📝 CSV Data Analyzer 📊")
with col3:
    st.image("https://cdna.artstation.com/p/assets/images/images/054/910/878/large/aaron-wacker-cyberpunk-computer-devices-iot.jpg?1665656564",width=128,)
    
# Upload
c29, c30, c31 = st.columns([1, 6, 1])
with c30:
    uploaded_file = st.file_uploader("", key="1", help="To activate 'wide mode', go to the menu > Settings > turn on 'wide mode'",)
    if uploaded_file is not None:
        file_container = st.expander("Check your uploaded .csv")
        #try:
        shows = pd.read_csv(uploaded_file)
        #except:
        #    print(sys.exc_info()[2])
            
        uploaded_file.seek(0)
        file_container.write(shows)
    else:
        st.info(f"""⬆️Upload a 📝.CSV file.  Examples: [Chatbot](https://huggingface.co/datasets/awacke1/Carddata.csv)  [Mindfulness](https://huggingface.co/datasets/awacke1/MindfulStory.csv)  [Wikipedia](https://huggingface.co/datasets/awacke1/WikipediaSearch)""")
        st.stop()

# DisplayGrid
gb = GridOptionsBuilder.from_dataframe(shows)
gb.configure_default_column(enablePivot=True, enableValue=True, enableRowGroup=True)
gb.configure_selection(selection_mode="multiple", use_checkbox=True)
gb.configure_side_bar()
gridOptions = gb.build()
st.success(f"""💡 Tip! Hold shift key when selecting rows to select multiple rows at once.""")
response = AgGrid(
    shows,
    gridOptions=gridOptions,
    enable_enterprise_modules=True,
    update_mode=GridUpdateMode.MODEL_CHANGED,
    data_return_mode=DataReturnMode.FILTERED_AND_SORTED,
    fit_columns_on_grid_load=False,
)

# Filters
df = pd.DataFrame(response["selected_rows"])
st.subheader("Filtered data will appear below 📊 ")
st.text("")
st.table(df)
st.text("")

# Download
c29, c30, c31 = st.columns([1, 1, 2])
with c29:
    CSVButton = download_button(df,"Dataset.csv","Download CSV file",)
with c30:
    CSVButton = download_button(df,"Dataset.txt","Download TXT file",)