1
0
Fork 0
forked from Fuji/Fuji

Nevermind everything was alright before rewrite

revert Rewrite of the entire codebase
This commit is contained in:
Marceli 2025-01-27 11:00:06 +00:00
parent 56abbe1644
commit c47fa9d46d

612
main.py
View file

@ -1,103 +1,505 @@
import flet as ft import flet as ft
# Grade colors # vars
GRADE_COLORS = { grade1 = "#F44336"
1: "#F44336", grade2 = "#FF9800"
2: "#FF9800", grade3 = "#eebd00"
3: "#eebd00", grade4 = "#4CAF50"
4: "#4CAF50", grade5 = "#2196F3"
5: "#2196F3", grade6 = "#9C27B0"
6: "#9C27B0", gradeother = "#5D5D5D"
"other": "#5D5D5D"
}
SUBJECTS = [
"Matematyka", "Język polski", "Język Angielski",
"Informatyka", "Język Niemiecki", "Chemia"
]
NAV_ITEMS = [
(ft.Icons.HOME, "Home"),
(ft.Icons.LOOKS_6, "Grades"),
(ft.Icons.BACKPACK, "Timetable"),
(ft.Icons.BOOK, "Homework"),
(ft.Icons.CALENDAR_TODAY, "Exams"),
(ft.Icons.EVENT_NOTE, "Attendance"),
(ft.Icons.STICKY_NOTE_2, "Behaviour"),
(ft.Icons.SETTINGS, "Settings")
]
def main(page: ft.Page): def main(page: ft.Page):
page.title = "Fuji" page.title = "Fuji"
page.theme = ft.Theme(color_scheme_seed=ft.Colors.RED) page.theme = ft.Theme(color_scheme_seed=ft.Colors.RED)
def create_grade_container(grade: int): def changePage(index):
return ft.Container( pages = [
content=ft.Text(str(grade)), # Home page
margin=0, ft.Column([
padding=0,
alignment=ft.alignment.center,
bgcolor=GRADE_COLORS.get(grade, GRADE_COLORS["other"]),
width=20,
height=20,
border_radius=5,
)
def create_subject_row(subject: str):
return ft.Row([
ft.Text(subject, size=16, weight="normal"),
*[create_grade_container(grade) for grade in range(6, 0, -1)]
])
def create_card(title: str, icon, content):
return ft.Container(
content=ft.Column([
ft.Row([
ft.Icon(icon, size=32, color="#FFFFFF"),
ft.Text(title, size=24, font_family="Roboto", weight="bold")
]),
ft.ListView(
controls=[content],
expand=True,
spacing=10,
padding=10,
auto_scroll=False
)
]),
margin=20,
padding=10,
alignment=ft.alignment.top_left,
bgcolor='#271D1C',
width=420,
height=270,
border_radius=10,
)
def change_page(index):
if index == 0: # Home Page
timetable_content = ft.Text("1. Lorem ipsum\n"*10, size=16, weight="normal")
grades_content = ft.Column([create_subject_row(subject) for subject in SUBJECTS])
return ft.Column([
ft.Text(" Home", size=30, weight="bold"), ft.Text(" Home", size=30, weight="bold"),
ft.Text("\n", size=30, weight="bold"), ft.Text("\n", size=30, weight="bold"),
ft.Row([ ft.Row([
create_card("Timetable", ft.Icons.BACKPACK_OUTLINED, timetable_content), ft.Container( # Timetable Card
create_card("Recent Grades", ft.Icons.LOOKS_6_OUTLINED, grades_content) content=ft.Column([
]) ft.Row([
]) ft.Icon(ft.Icons.BACKPACK_OUTLINED, size=32, color="#FFFFFF"),
ft.Text("Timetable", size=24, font_family="Roboto", weight="bold")
]),
ft.ListView(
controls=[
ft.Text("1. Lorem ipsum\n2. Lorem ipsum\n3. Lorem ipsum\n4. Im curious what happens if i ran out of space\n5. It just creates a new line\n6. No idea why i tested that\n7. I also want to test what happens if there is too much lines\n8. Lorem ipsum\n9. Yay now you can scroll\n10. Looks like dogshit but it works\n11. Simi simi jej simi jaj", size=16, weight="normal")
],
expand=True,
spacing=10,
padding=10,
auto_scroll=False
)
]),
margin=20,
padding=10,
alignment=ft.alignment.top_left,
bgcolor='#271D1C',
width=420,
height=270,
border_radius=10,
),
# Other pages ft.Container( # Recent Grades Card
return ft.Column([ content=ft.Column([
ft.Text(f" {NAV_ITEMS[index][1]}", size=30, weight="bold"), ft.Row([
]) ft.Icon(ft.Icons.LOOKS_6_OUTLINED, size=32, color="#FFFFFF"),
ft.Text("Recent Grades", size=24, font_family="Roboto", weight="bold")
]),
ft.ListView(
controls=[
ft.Row([
ft.Text("Matematyka", size=16, weight="normal"),
ft.Container(
content=ft.Text("6"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade6,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("5"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade5,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("4"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade4,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("3"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade3,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("2"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade2,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("1"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade1,
width=20,
height=20,
border_radius=5,
),
]),
ft.Row([
ft.Text("Język polski", size=16, weight="normal"),
ft.Container(
content=ft.Text("6"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade6,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("5"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade5,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("4"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade4,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("3"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade3,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("2"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade2,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("1"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade1,
width=20,
height=20,
border_radius=5,
),
]),
ft.Row([
ft.Text("Język Angielski", size=16, weight="normal"),
ft.Container(
content=ft.Text("6"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade6,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("5"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade5,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("4"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade4,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("3"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade3,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("2"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade2,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("1"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade1,
width=20,
height=20,
border_radius=5,
),
]),
ft.Row([
ft.Text("Informatyka", size=16, weight="normal"),
ft.Container(
content=ft.Text("6"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade6,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("5"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade5,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("4"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade4,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("3"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade3,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("2"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade2,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("1"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade1,
width=20,
height=20,
border_radius=5,
),
]),
ft.Row([
ft.Text("Język Niemiecki", size=16, weight="normal"),
ft.Container(
content=ft.Text("6"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade6,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("5"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade5,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("4"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade4,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("3"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade3,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("2"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade2,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("1"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade1,
width=20,
height=20,
border_radius=5,
),
]),
ft.Row([
ft.Text("Chemia", size=16, weight="normal"),
ft.Container(
content=ft.Text("6"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade6,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("5"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade5,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("4"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade4,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("3"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade3,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("2"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade2,
width=20,
height=20,
border_radius=5,
),
ft.Container(
content=ft.Text("1"),
margin=0,
padding=0,
alignment=ft.alignment.center,
bgcolor=grade1,
width=20,
height=20,
border_radius=5,
),
]),
],
expand=False,
spacing=10,
padding=10,
auto_scroll=False
)
]),
margin=20,
padding=10,
alignment=ft.alignment.top_left,
bgcolor='#271D1C',
width=420,
height=270,
border_radius=10,
),
]),
def update_content(e): ]),
main_container.content = change_page(e.control.selected_index)
# Grades page
ft.Column([
ft.Text(" Grades", size=30, weight="bold"),
]),
# Timetable page
ft.Column([
ft.Text(" Timetable", size=30, weight="bold"),
]),
# Homework page
ft.Column([
ft.Text(" Homework", size=30, weight="bold"),
]),
# Exams page
ft.Column([
ft.Text(" Exams", size=30, weight="bold"),
]),
# Attendance page
ft.Column([
ft.Text(" Attendance", size=30, weight="bold"),
]),
# Behaviour page
ft.Column([
ft.Text(" Behaviour Notes", size=30, weight="bold"),
]),
# Settings page
ft.Column([
ft.Text(" Settings", size=30, weight="bold"),
]),
]
return pages[index]
# Function to switch content
def update_content(index):
main_container.content = changePage(index)
page.update() page.update()
# Initial content display container
main_container = ft.Container(
content=changePage(0),
expand=True,
)
# Navigation Rail # Navigation Rail
nav_rail = ft.NavigationRail( bar = ft.NavigationRail(
selected_index=0, selected_index=0,
label_type=ft.NavigationRailLabelType.ALL, label_type=ft.NavigationRailLabelType.ALL,
extended=False, extended=False,
@ -106,15 +508,41 @@ def main(page: ft.Page):
group_alignment=0, group_alignment=0,
destinations=[ destinations=[
ft.NavigationRailDestination( ft.NavigationRailDestination(
icon=item[0]+"_OUTLINED", icon=ft.Icons.HOME_OUTLINED, selected_icon=ft.Icons.HOME, label="Home"
selected_icon=item[0], ),
label=item[1] ft.NavigationRailDestination(
) for item in NAV_ITEMS icon=ft.Icons.LOOKS_6_OUTLINED, selected_icon=ft.Icons.LOOKS_6, label="Grades"
),
ft.NavigationRailDestination(
icon=ft.Icons.BACKPACK_OUTLINED, selected_icon=ft.Icons.BACKPACK, label="Timetable"
),
ft.NavigationRailDestination(
icon=ft.Icons.BOOK_OUTLINED, selected_icon=ft.Icons.BOOK, label="Homework"
),
ft.NavigationRailDestination(
icon=ft.Icons.CALENDAR_TODAY_OUTLINED, selected_icon=ft.Icons.CALENDAR_TODAY, label="Exams"
),
ft.NavigationRailDestination(
icon=ft.Icons.EVENT_NOTE_OUTLINED, selected_icon=ft.Icons.EVENT_NOTE, label="Attendance"
),
ft.NavigationRailDestination(
icon=ft.Icons.STICKY_NOTE_2_OUTLINED, selected_icon=ft.Icons.STICKY_NOTE_2, label="Behaviour"
),
ft.NavigationRailDestination(
icon=ft.Icons.SETTINGS_OUTLINED, selected_icon=ft.Icons.SETTINGS_ROUNDED, label="Settings"
),
], ],
on_change=update_content on_change=lambda e: update_content(e.control.selected_index),
) )
main_container = ft.Container(content=change_page(0), expand=True) page.add(
page.add(ft.Row([nav_rail, main_container], expand=True)) ft.Row(
[
bar,
main_container,
],
expand=True,
)
)
ft.app(main) ft.app(main)