548 lines
27 KiB
Python
548 lines
27 KiB
Python
import flet as ft
|
|
|
|
# vars
|
|
grade1 = "#F44336"
|
|
grade2 = "#FF9800"
|
|
grade3 = "#eebd00"
|
|
grade4 = "#4CAF50"
|
|
grade5 = "#2196F3"
|
|
grade6 = "#9C27B0"
|
|
gradeother = "#5D5D5D"
|
|
|
|
def main(page: ft.Page):
|
|
page.title = "Fuji"
|
|
page.theme = ft.Theme(color_scheme_seed=ft.Colors.RED)
|
|
|
|
def changePage(index):
|
|
pages = [
|
|
# Home page
|
|
ft.Column([
|
|
ft.Text(" Home", size=30, weight="bold"),
|
|
ft.Text("\n", size=30, weight="bold"),
|
|
ft.Row([
|
|
ft.Container( # Timetable Card
|
|
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,
|
|
),
|
|
|
|
ft.Container( # Recent Grades Card
|
|
content=ft.Column([
|
|
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,
|
|
),
|
|
]),
|
|
|
|
]),
|
|
|
|
# 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()
|
|
|
|
# Initial content display container
|
|
main_container = ft.Container(
|
|
content=changePage(0),
|
|
expand=True,
|
|
)
|
|
|
|
# Navigation Rail
|
|
bar = ft.NavigationRail(
|
|
selected_index=0,
|
|
label_type=ft.NavigationRailLabelType.ALL,
|
|
extended=False,
|
|
min_width=50,
|
|
min_extended_width=400,
|
|
group_alignment=0,
|
|
destinations=[
|
|
ft.NavigationRailDestination(
|
|
icon=ft.Icons.HOME_OUTLINED, selected_icon=ft.Icons.HOME, label="Home"
|
|
),
|
|
ft.NavigationRailDestination(
|
|
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=lambda e: update_content(e.control.selected_index),
|
|
)
|
|
|
|
page.add(
|
|
ft.Row(
|
|
[
|
|
bar,
|
|
main_container,
|
|
],
|
|
expand=True,
|
|
)
|
|
)
|
|
|
|
ft.app(main)
|