Kaynağa Gözat

move index page creation into page.py

Falko Schindler 2 yıl önce
ebeveyn
işleme
d42eb5a0ca
3 değiştirilmiş dosya ile 14 ekleme ve 11 silme
  1. 2 8
      nicegui/elements/element.py
  2. 11 2
      nicegui/elements/page.py
  3. 1 1
      nicegui/globals.py

+ 2 - 8
nicegui/elements/element.py

@@ -7,7 +7,7 @@ import justpy as jp
 from .. import globals
 from ..binding import BindableProperty, bind_from, bind_to
 from ..task_logger import create_task
-from .page import Page
+from .page import get_current_view
 
 
 def _handle_visibility_change(sender: Element, visible: bool) -> None:
@@ -23,13 +23,7 @@ class Element:
     visible = BindableProperty(on_change=_handle_visibility_change)
 
     def __init__(self, view: jp.HTMLBaseComponent):
-        if not globals.view_stack:
-            main_page = Page('/')
-            main_page.delete_flag = False
-            globals.view_stack.append(main_page.view)
-            jp.Route('/', main_page._route_function)
-
-        self.parent_view = globals.view_stack[-1]
+        self.parent_view = get_current_view()
         self.parent_view.add(view)
         self.view = view
         assert len(self.parent_view.pages) == 1

+ 11 - 2
nicegui/elements/page.py

@@ -121,12 +121,12 @@ class Page(jp.QuasarPage):
 
 
 def add_head_html(self, html: str) -> None:
-    for page in view_stack[-1].pages.values():
+    for page in get_current_view().pages.values():
         page.head_html += html
 
 
 def add_body_html(self, html: str) -> None:
-    for page in view_stack[-1].pages.values():
+    for page in get_current_view().pages.values():
         page.body_html += html
 
 
@@ -143,3 +143,12 @@ def page(self, path: str, *, shared: bool = False, **kwargs):
         page_builders[path] = PageBuilder(decorated, shared)
         return decorated
     return decorator
+
+
+def get_current_view() -> jp.HTMLBaseComponent:
+    if not view_stack:
+        page = Page('/')
+        page.delete_flag = False
+        view_stack.append(page.view)
+        jp.Route('/', page._route_function)
+    return view_stack[-1]

+ 1 - 1
nicegui/globals.py

@@ -9,7 +9,7 @@ if TYPE_CHECKING:
     from starlette.applications import Starlette
 
     from .config import Config
-    from .elements.page import Page, PageBuilder
+    from .elements.page import PageBuilder
 
 app: 'Starlette'
 config: 'Config'