Преглед изворни кода

ui.open(..) behind "reverse proxy with subpath"

Rodja Trappe пре 2 година
родитељ
комит
c4b5814288

+ 1 - 2
examples/nginx_subpath/app/main.py

@@ -4,8 +4,7 @@ from nicegui import ui
 @ui.page('/subpage')
 @ui.page('/subpage')
 def subpage():
 def subpage():
     ui.label('This is a subpage').classes('text-h5 mx-auto mt-12')
     ui.label('This is a subpage').classes('text-h5 mx-auto mt-12')
-    # TODO: this is not working properly yet
-    # ui.button('back', on_click=lambda: ui.open('/')).classes('mx-auto')
+    ui.button('back', on_click=lambda: ui.open('/')).classes('mx-auto')
 
 
 
 
 @ui.page('/')
 @ui.page('/')

+ 5 - 1
examples/nginx_subpath/docker-compose.yml

@@ -1,7 +1,11 @@
 version: "3.9"
 version: "3.9"
 services:
 services:
   app:
   app:
-    image: zauberzeug/nicegui:latest
+    # TODO replace build with image once the image is published
+    #image: zauberzeug/nicegui:1.2.?
+    build:
+      context: ./../../
+      dockerfile: fly.dockerfile
     volumes:
     volumes:
       - ./app:/app # mount local app directory
       - ./app:/app # mount local app directory
   proxy:
   proxy:

+ 1 - 1
nicegui/templates/index.html

@@ -139,7 +139,7 @@
           window.socket.on("update", (msg) => Object.entries(msg).forEach(([id, el]) => this.elements[el.id] = el));
           window.socket.on("update", (msg) => Object.entries(msg).forEach(([id, el]) => this.elements[el.id] = el));
           window.socket.on("run_method", (msg) => getElement(msg.id)?.[msg.name](...msg.args));
           window.socket.on("run_method", (msg) => getElement(msg.id)?.[msg.name](...msg.args));
           window.socket.on("run_javascript", (msg) => runJavascript(msg['code'], msg['request_id']));
           window.socket.on("run_javascript", (msg) => runJavascript(msg['code'], msg['request_id']));
-          window.socket.on("open", (msg) => (location.href = msg));
+          window.socket.on("open", (msg) => (location.href = msg.startsWith('/') ? "{{ prefix | safe }}" + msg : msg));
           window.socket.on("notify", (msg) => Quasar.Notify.create(msg));
           window.socket.on("notify", (msg) => Quasar.Notify.create(msg));
         },
         },
       }).use(Quasar, {
       }).use(Quasar, {