33from functools import partial
44from dataclasses import dataclass
55
6- async def expand_left_drawer (left_drawer : LeftDrawer ):
7- if 'mini' in left_drawer ._props :
8- left_drawer .props (remove = 'mini' )
9-
10- async def collapse_left_drawer (left_drawer : LeftDrawer ):
11- if 'mini' not in left_drawer ._props :
12- left_drawer .props ('mini' )
13-
146@dataclass (slots = True )
157class NavigationElement :
168 text : str
179 icon : str
1810 link : str
1911
20-
21- def create_nav_element (element : NavigationElement ):
22- with ui .item (on_click = lambda : ui .navigate .to (element .link )):
23- with ui .item_section ().props ('avatar' ):
24- ui .icon (element .icon , color = 'black' )
25- with ui .item_section ():
26- ui .item_label (element .text )
27-
28- nav_element_list = [
12+ navigation_element_list = [
2913 NavigationElement ('Home' , 'sym_r_home' , '/home' ),
3014 NavigationElement ('Experiments' , 'sym_r_experiment' , '/experiments' ),
31- NavigationElement ('Planner ' , 'query_stats ' , '/planner' ),
15+ NavigationElement ('Power Analysis ' , 'sym_r_calculate ' , '/planner' ),
3216 NavigationElement ('Data and Metrics' , 'sym_r_database' , '/data' ),
3317 NavigationElement ('Jobs' , 'sym_r_developer_board' , '/jobs' ),
3418 NavigationElement ('Documentation' , 'sym_r_article' , '/documents' ),
3519 NavigationElement ('Settings' , 'sym_r_settings' , '/settings' ),
3620]
3721
38- def create_navigation_list ():
39- with ui .list ().classes ('q-px-none' ):
22+ def expand_left_drawer (left_drawer : LeftDrawer ):
23+ if 'mini' in left_drawer ._props :
24+ left_drawer .props (remove = 'mini' )
25+
26+ def collapse_left_drawer (left_drawer : LeftDrawer ):
27+ if 'mini' not in left_drawer ._props :
28+ left_drawer .props ('mini' )
29+
30+ def create_navigation_list (nav_element_list : list [NavigationElement ]):
31+ with ui .list ().classes ('q-pa-none' ):
4032 for element in nav_element_list :
41- create_nav_element (element )
33+ with ui .item (on_click = partial (ui .navigate .to , element .link )).classes ('q-pa-none' ) as item :
34+ #todo: create if active -> item.props('active active-class=bg-grey-3')
35+ with ui .item_section ().props ('avatar' ).classes ('content-center q-pr-none' ):
36+ ui .icon (element .icon , color = 'black' ).classes ('q-pa-none' )
37+ with ui .item_section ():
38+ ui .item_label (element .text )
4239
4340def create_left_drawer () -> LeftDrawer :
4441 left_drawer = (
45- ui .left_drawer (value = False , top_corner = False , bordered = True )
42+ ui .left_drawer (value = True , top_corner = False , bordered = True )
4643 .props ('show-if-above mini mini-to-overlay width=200' )
47- .classes ('q-pa-none' )
44+ .classes ('q-pa-none' ) #shadow-[8px_0_8px_-12px_rgba(0,0,0,0.25)]
4845 )
4946 left_drawer .classes .remove ('nicegui-drawer' )
5047
5148 left_drawer .on ('mouseenter' , partial (expand_left_drawer , left_drawer ))
5249 left_drawer .on ('mouseleave' , partial (collapse_left_drawer , left_drawer ))
5350
5451 with left_drawer :
55- create_navigation_list ()
52+ create_navigation_list (navigation_element_list )
5653
5754 return left_drawer
0 commit comments