File size: 3,776 Bytes
94b0868
9de570c
c86fd67
8441f78
cfefe11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94b0868
8441f78
c86fd67
94b0868
c86fd67
8441f78
9e2e456
d8ae2ac
 
 
8441f78
94b0868
cfefe11
8441f78
cfefe11
9de570c
8441f78
06489f3
 
 
8441f78
06489f3
b219ee9
f2f5850
8441f78
d8ae2ac
 
 
9e2e456
8441f78
44cddda
 
 
 
 
 
 
 
 
f2f5850
 
b219ee9
 
 
44cddda
 
 
 
 
 
b5c4b4f
8441f78
44cddda
 
482d631
 
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
import streamlit as st
import pandas as pd
import requests

# Define array of file paths for each book
book_files = {
    "Maliks_Muwataa": [
        "maliks_muwataa_ahadith.utf8.csv",
        "maliks_muwataa_ahadith_mushakkala_mufassala.utf8.csv"
    ],
    "Musnad_Ahmad_Ibn-Hanbal": [
        "musnad_ahmad_ibn-hanbal_ahadith.utf8.csv",
        "musnad_ahmad_ibn-hanbal_ahadith_mushakkala.utf8.csv"
    ],
    "Sahih_Al-Bukhari": [
        "sahih_al-bukhari_ahadith.utf8.csv",
        "sahih_al-bukhari_ahadith_mushakkala_mufassala.utf8.csv"
    ],
    "Sahih_Muslim": [
        "sahih_muslim_ahadith.utf8.csv",
        "sahih_muslim_ahadith_mushakkala_mufassala.utf8.csv"
    ],
    "Sunan_Abu-Dawud": [
        "sunan_abu-dawud_ahadith.utf8.csv",
        "sunan_abu-dawud_ahadith_mushakkala_mufassala.utf8.csv"
    ],
    "Sunan_Al-Darimi": [
        "sunan_al-darimi_ahadith.utf8.csv",
        "sunan_al-darimi_ahadith_mushakkala_mufassala.utf8.csv"
    ],
    "Sunan_Al-Nasai": [
        "sunan_al-nasai_ahadith.utf8.csv",
        "sunan_al-nasai_ahadith_mushakkala_mufassala.utf8.csv"
    ],
    "Sunan_Al-Tirmidhi": [
        "sunan_al-tirmidhi_ahadith.utf8.csv",
        "sunan_al-tirmidhi_ahadith_mushakkala_mufassala.utf8.csv"
    ],
    "Sunan_Ibn-Maja": [
        "sunan_ibn-maja_ahadith.utf8.csv",
        "sunan_ibn-maja_ahadith_mushakkala_mufassala.utf8.csv"
    ]
}

# Main Streamlit app
def main():
    st.title("Hadith Viewer")

    st.sidebar.title("Navigation")
    st.sidebar.subheader("Actions")
    if st.sidebar.button("Home"):
        display_home()

    st.sidebar.title("Books")
    selected_book = st.sidebar.selectbox("Select a Book", list(book_files.keys()))

    selected_files = book_files[selected_book]
    selected_file = st.sidebar.selectbox("Select a File", selected_files)

    # Load CSV file immediately when selected from the list
    file_url = f"https://raw.githubusercontent.com/halimbahae/Hadith/main/{selected_book}/{selected_file}"
    csv_df = pd.read_csv(file_url, header=None)  # Assuming no header in CSV files

    if csv_df is not None:
        # Display dataframe with search
        display_table(csv_df)

def display_home():
    st.title("Hadith Viewer")
    st.image("https://raw.githubusercontent.com/halimbahae/Hadith/main/Hadith_Books.jpg", caption="Hadith Books", use_column_width=True)
    st.write("Welcome to the Hadith Viewer! This is a viewer for the Hadith collections. You can select a book from the dropdown menu on the left to view its contents.")

# def display_table(csv_df):
#     font_size = st.slider("Adjust Font Size", min_value=10, max_value=30, value=20)
#     st.write("### Table View")
#     search_query = st.sidebar.text_input("Search", "")
#     filtered_df = csv_df[csv_df.apply(lambda row: row.astype(str).str.contains(search_query, case=False).any(), axis=1)]
#     styled_df = filtered_df.style.set_properties(**{'font-size': f'{font_size}px'})
#     styled_df = styled_df.set_table_styles([{'selector': 'tr', 'props': [('line-height', '30px')]}])
#     st.dataframe(styled_df)

def display_table(csv_df):
    font_size = st.slider("Adjust Font Size", min_value=10, max_value=30, value=20)
    st.write("### Table View")
    search_query = st.sidebar.text_input("Search", "")
    filtered_df = csv_df[csv_df.apply(lambda row: row.astype(str).str.contains(search_query, case=False).any(), axis=1)]
    styled_df = (
        filtered_df.style
        .set_properties(**{'font-size': f'{font_size}px'})
        .set_table_styles([{'selector': 'th', 'props': [('font-size', f'{font_size}px')]},
                           {'selector': 'td', 'props': [('font-size', f'{font_size}px'), ('line-height', '1.5')]}])
    )
    st.dataframe(styled_df)

    

if __name__ == "__main__":
    main()