declare props for classes on pages

This commit is contained in:
David Rodenkirchen 2024-05-29 06:22:03 +02:00
parent 44ff8d5302
commit 92b8ea802a
2 changed files with 15 additions and 10 deletions

View File

@ -10,9 +10,11 @@ from .. import services
class Member(rio.Component): class Member(rio.Component):
database_service: services.DatabaseService
def __init__(self, database_service: services.database_service.DatabaseService) -> None: def __init__(self, database_service: services.database_service.DatabaseService) -> None:
super().__init__() super().__init__()
self._database_service = database_service self.database_service = database_service
@rio.event.on_populate @rio.event.on_populate
async def on_populate(self) -> None: async def on_populate(self) -> None:
@ -20,7 +22,7 @@ class Member(rio.Component):
def build(self) -> rio.Component: def build(self) -> rio.Component:
grid = rio.Grid() grid = rio.Grid()
for i, member in enumerate(self._database_service.get_members()): for i, member in enumerate(self.database_service.get_members()):
grid.add( grid.add(
comps.MemberCard(member), comps.MemberCard(member),
row=i // 2, row=i // 2,

View File

@ -10,19 +10,22 @@ from .. import components as comps, services
class Pics(rio.Component): class Pics(rio.Component):
database_service: services.DatabaseService
active_picture: Optional[rio.URL]
def __init__(self, database_service: services.database_service.DatabaseService) -> None: def __init__(self, database_service: services.database_service.DatabaseService) -> None:
super().__init__() super().__init__()
self._database_service = database_service self.database_service = database_service
self._active_picture: Optional[rio.URL] = None self.active_picture: Optional[rio.URL] = None
@rio.event.on_populate @rio.event.on_populate
async def on_populate(self) -> None: async def on_populate(self) -> None:
await self.session.set_title("EZ GG e.V. - Galerie") await self.session.set_title("EZ GG e.V. - Galerie")
def build(self) -> rio.Component: def build(self) -> rio.Component:
if self._active_picture is None: if self.active_picture is None:
grid = rio.Grid(row_spacing=0.4, column_spacing=0.5, margin_right=1) grid = rio.Grid(row_spacing=0.4, column_spacing=0.5, margin_right=1)
for i, link in enumerate(self._database_service.get_picture_paths()): for i, link in enumerate(self.database_service.get_picture_paths()):
grid.add( grid.add(
rio.Button( rio.Button(
rio.Image( rio.Image(
@ -42,7 +45,7 @@ class Pics(rio.Component):
rio.Column( rio.Column(
rio.Button( rio.Button(
rio.Image( rio.Image(
self._active_picture, self.active_picture,
height="grow", height="grow",
width="grow" width="grow"
), ),
@ -55,10 +58,10 @@ class Pics(rio.Component):
) )
) )
async def on_picture_clicked(self, link_to_picture: str) -> None: async def on_picture_clicked(self, link_to_picture: Optional[rio.URL]) -> None:
self._active_picture = link_to_picture self.active_picture = link_to_picture
await self.force_refresh() await self.force_refresh()
async def exit_overlay(self) -> None: async def exit_overlay(self) -> None:
self._active_picture = None self.active_picture = None
await self.force_refresh() await self.force_refresh()