From f6c30f2ddf1bcddbb92f56290c700f9939a07721 Mon Sep 17 00:00:00 2001 From: Ziad-I <68874104+Ziad-I@users.noreply.github.com> Date: Thu, 20 Jun 2024 20:55:56 +0300 Subject: [PATCH] improved send function logic to make there be 1 function only --- .../blenderbim/bim/data/webui/sioserver.py | 8 +++--- src/blenderbim/blenderbim/bim/handler.py | 2 +- .../blenderbim/bim/module/csv/operator.py | 2 +- src/blenderbim/blenderbim/tool/web.py | 25 +++++++++---------- 4 files changed, 17 insertions(+), 20 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/data/webui/sioserver.py b/src/blenderbim/blenderbim/bim/data/webui/sioserver.py index 83f43a723b..5b7b76f145 100644 --- a/src/blenderbim/blenderbim/bim/data/webui/sioserver.py +++ b/src/blenderbim/blenderbim/bim/data/webui/sioserver.py @@ -36,8 +36,6 @@ class WebNamespace(socketio.AsyncNamespace): print(f"Web client disconnected: {sid}") async def on_web_operator(self, sid, data): - print(f"Web client {sid} operator: {data}") - # TODO: need to add event listeners in blenderbim side for event web_operator await sio.emit("web_operator", data["operator"], namespace="/blender", room=data["blenderId"]) @@ -59,13 +57,13 @@ class BlenderNamespace(socketio.AsyncNamespace): del blender_messages[sid] await sio.emit("blender_disconnect", sid, namespace="/web") - async def on_default_data(self, sid, data): - print(f"Default data from Blender client {sid}: {data}") + async def on_data(self, sid, data): + print(f"Data from Blender client {sid}") # blender_messages[sid]["default_data"] = data # await sio.emit("default_data", {"blenderId": sid, "data": data}, namespace="/web") async def on_csv_data(self, sid, data): - print(f"CSV data from Blender client {sid}:") + print(f"CSV data from Blender client {sid}") # Store the message and forward it to the web client blender_messages[sid]["csv_data"] = data await sio.emit("csv_data", {"blenderId": sid, "data": data}, namespace="/web") diff --git a/src/blenderbim/blenderbim/bim/handler.py b/src/blenderbim/blenderbim/bim/handler.py index 3bff54757e..7fd6e0c183 100644 --- a/src/blenderbim/blenderbim/bim/handler.py +++ b/src/blenderbim/blenderbim/bim/handler.py @@ -192,7 +192,7 @@ def refresh_ui_data(): bpy.context.scene.DocProperties.should_draw_decorations = bpy.context.scene.DocProperties.should_draw_decorations if bpy.context.scene.WebProperties.is_connected: - tool.Web.send_default_webui_data() + tool.Web.send_webui_data() @persistent diff --git a/src/blenderbim/blenderbim/bim/module/csv/operator.py b/src/blenderbim/blenderbim/bim/module/csv/operator.py index 3b4abe5899..859e5f6e2a 100644 --- a/src/blenderbim/blenderbim/bim/module/csv/operator.py +++ b/src/blenderbim/blenderbim/bim/module/csv/operator.py @@ -254,7 +254,7 @@ class ExportIfcCsv(bpy.types.Operator): schedule_creator = scheduler.Scheduler() schedule_creator.schedule(self.filepath, tool.Drawing.get_path_with_ext(self.filepath, "svg")) if props.format == "web": - tool.Web.send_webui_data(ifc_csv.dataframe.to_csv(index=False), event="csv_data") + tool.Web.send_webui_data(extra_data=ifc_csv.dataframe.to_csv(index=False), event="csv_data") self.report({"INFO"}, f"Data is exported to {props.format.upper()}.") return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/tool/web.py b/src/blenderbim/blenderbim/tool/web.py index 01aedbf108..9398e5ad16 100644 --- a/src/blenderbim/blenderbim/tool/web.py +++ b/src/blenderbim/blenderbim/tool/web.py @@ -85,7 +85,7 @@ class Web(blenderbim.core.tool.Web): ws_thread.run_coro(cls.sio_connect(ws_url)) cls.set_is_connected(True) bpy.app.timers.register(cls.check_operator_queue) - cls.send_default_webui_data() + cls.send_webui_data() @classmethod def disconnect_websocket_server(cls): @@ -118,19 +118,18 @@ class Web(blenderbim.core.tool.Web): print("Websocket server terminated successfully") @classmethod - def send_default_webui_data(cls, event="default_data", namespace="/blender"): - if not WebData.is_loaded: - WebData.load() - cls.send_webui_data(WebData.data, event=event, namespace=namespace) - - @classmethod - def send_webui_data(cls, data, event="data", namespace="/blender"): + def send_webui_data(cls, extra_data=None, event="data", namespace="/blender", use_web_data=True): global ws_thread - # TODO: find a better way to include ifc_filename with the csv data - data = { - "IFC_File": bpy.context.scene.BIMProperties.ifc_file, - "data": data, - } + data = {} + + if use_web_data: + if not WebData.is_loaded: + WebData.load() + data = WebData.data + + if extra_data is not None: + data["data"] = extra_data + if ws_thread is not None and bpy.context.scene.WebProperties.is_connected: ws_thread.run_coro(cls.sio_send(data, event, namespace))