浏览代码

Decouple add base url support (#1635)

* add base url support

* fix tests
Dinh Long Nguyen 9 月之前
父节点
当前提交
98660d8b2b
共有 5 个文件被更改,包括 14 次插入4 次删除
  1. 7 2
      frontend/taipy-gui/base/src/app.ts
  2. 3 0
      frontend/taipy-gui/base/src/utils.ts
  3. 1 1
      taipy/gui/custom/_page.py
  4. 1 1
      taipy/gui/server.py
  5. 2 0
      taipy/gui/state.py

+ 7 - 2
frontend/taipy-gui/base/src/app.ts

@@ -7,6 +7,7 @@ import { DataManager, ModuleData } from "./dataManager";
 import { initSocket } from "./socket";
 import { TaipyWsAdapter, WsAdapter } from "./wsAdapter";
 import { WsMessageType } from "../../src/context/wsUtils";
+import { getBase } from "./utils";
 
 export type OnInitHandler = (taipyApp: TaipyApp) => void;
 export type OnChangeHandler = (taipyApp: TaipyApp, encodedName: string, value: unknown) => void;
@@ -46,9 +47,9 @@ export class TaipyApp {
         onInit: OnInitHandler | undefined = undefined,
         onChange: OnChangeHandler | undefined = undefined,
         path: string | undefined = undefined,
-        socket: Socket | undefined = undefined
+        socket: Socket | undefined = undefined,
     ) {
-        socket = socket || io("/", { autoConnect: false });
+        socket = socket || io("/", { autoConnect: false, path: `${getBase()}socket.io` });
         this.onInit = onInit;
         this.onChange = onChange;
         this.variableData = undefined;
@@ -252,6 +253,10 @@ export class TaipyApp {
     getWsStatus() {
         return this._ackList;
     }
+
+    getBaseUrl() {
+        return getBase();
+    }
 }
 
 export const createApp = (onInit?: OnInitHandler, onChange?: OnChangeHandler, path?: string, socket?: Socket) => {

+ 3 - 0
frontend/taipy-gui/base/src/utils.ts

@@ -0,0 +1,3 @@
+export const getBase = () => {
+    return document.getElementsByTagName("base")[0].getAttribute("href");
+};

+ 1 - 1
taipy/gui/custom/_page.py

@@ -55,7 +55,7 @@ class ResourceHandler(ABC):
         return self.rh_id if self.rh_id != "" else str(id(self))
 
     @abstractmethod
-    def get_resources(self, path: str, taipy_resource_path: str) -> t.Any:
+    def get_resources(self, path: str, taipy_resource_path: str, base_url: str) -> t.Any:
         raise NotImplementedError
 
 

+ 1 - 1
taipy/gui/server.py

@@ -161,7 +161,7 @@ class _Server:
                 if resource_handler is None:
                     return (f"Invalid value for query {_Server._RESOURCE_HANDLER_ARG}", 404)
                 try:
-                    return resource_handler.get_resources(path, static_folder)
+                    return resource_handler.get_resources(path, static_folder, base_url)
                 except Exception as e:
                     raise RuntimeError("Can't get resources from custom resource handler") from e
             if path == "" or path == "index.html" or "." not in path:

+ 2 - 0
taipy/gui/state.py

@@ -117,6 +117,8 @@ class State:
         return filter(lambda n: n not in excluded_attrs, var_list)
 
     def __getattribute__(self, name: str) -> t.Any:
+        if name == "__class__":
+            return State
         if name in State.__methods:
             return super().__getattribute__(name)
         gui: "Gui" = self.get_gui()