File size: 1,957 Bytes
995a61e
cc146e8
 
d7c3acb
a8a7773
 
6e00079
a8a7773
 
 
995a61e
 
 
cc146e8
995a61e
 
cc146e8
995a61e
 
cc146e8
a8a7773
 
 
cc146e8
a8a7773
 
 
cc146e8
 
 
 
 
6e00079
 
995a61e
6e00079
7aaf509
6e00079
995a61e
6e00079
cc146e8
995a61e
6e00079
 
a8a7773
6e00079
7aaf509
 
 
d7c3acb
6e00079
995a61e
d7c3acb
 
 
6e00079
cc146e8
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
import streamlit as st
from streamlit_local_storage import LocalStorage
from database import init_supabase
from utils import apply_filters, apply_sort
from locales import load_locale, lang_codes
from data_loader import load_data, get_unique_mood, get_unique_tags
from ui_components import render_sidebar, render_main_content, load_css

DEFAULT_LANG = "en"


# Настройки страницы
st.set_page_config(layout="wide", page_icon="🧙", page_title="Fantasy Characters Explorer")
localS = LocalStorage()

# Загрузка данных
database = init_supabase()
df = load_data()

st.session_state.lang = localS.getItem("lang")
all_langs = lang_codes()
if st.session_state.lang not in all_langs:
    st.session_state.lang = (st.context.locale.split("-", 1)[0] if st.context.locale else DEFAULT_LANG)
    localS.setItem("lang", st.session_state.lang)

locale = load_locale(st.session_state.lang)

if 'rated' not in st.session_state:
    st.session_state.rated = localS.getItem("rated")
    if st.session_state.rated is None:
        st.session_state.rated = []

# Загрузка стилей
st.markdown(f"<style>{load_css()}</style>", unsafe_allow_html=True)

# Получение уникальных значений для фильтров
moods = [locale['filter_all']] + get_unique_mood(df)
all_tags = get_unique_tags(df)

# Рендеринг сайдбара с фильтрами
selected_filters = render_sidebar(localS, locale, all_langs, moods, all_tags)

# Применение фильтров
filtered_df = apply_filters(
    locale,
    df=df,
    search_query=selected_filters['search_query'],
    absurdity_range=selected_filters['absurdity_range'],
    selected_mood=selected_filters['selected_mood'],
    selected_tags=selected_filters['selected_tags']
)

sorted_df = apply_sort(locale, filtered_df, selected_filters['sort_option'])


# Основной контент
render_main_content(locale, database, localS, sorted_df)