diff --git a/src/blenderbim/blenderbim/bim/data/webui/sioserver.py b/src/blenderbim/blenderbim/bim/data/webui/sioserver.py index 6d81c03665..c3e9cf67b1 100644 --- a/src/blenderbim/blenderbim/bim/data/webui/sioserver.py +++ b/src/blenderbim/blenderbim/bim/data/webui/sioserver.py @@ -44,6 +44,7 @@ class WebNamespace(socketio.AsyncNamespace): async def on_connect(self, sid, environ): print(f"Web client connected: {sid}") if blender_messages: + await sio.emit("connected_clients", list(blender_messages.keys()), namespace="/web", room=sid) await self.send_cached_messages(sid) async def on_disconnect(self, sid): @@ -108,7 +109,7 @@ class BlenderNamespace(socketio.AsyncNamespace): await sio.emit("gantt_data", {"blenderId": sid, "data": data}, namespace="/web") async def on_drawings_data(self, sid, data): - print(f"Drawings directory from Blender client {sid}") + print(f"Drawings data from Blender client {sid}") print(data) blender_messages[sid]["drwings_data"] = data await sio.emit("drawings_data", {"blenderId": sid, "data": data}, namespace="/web") diff --git a/src/blenderbim/blenderbim/bim/data/webui/static/css/drawings.css b/src/blenderbim/blenderbim/bim/data/webui/static/css/drawings.css index 9dd2437ecf..b5a1b841d3 100644 --- a/src/blenderbim/blenderbim/bim/data/webui/static/css/drawings.css +++ b/src/blenderbim/blenderbim/bim/data/webui/static/css/drawings.css @@ -127,7 +127,7 @@ nav ul li a.active { overflow-y: auto; overflow: hidden; transition: opacity 0.3s ease-out, visibility 0.3s ease-out; - border: 1px solid var(--table-border-color); + border: 1px solid var(--border-color); background-color: var(--nav-bg-color); z-index: 1; opacity: 0; @@ -146,7 +146,7 @@ nav ul li a.active { .client { padding: var(--margin-small); - border-bottom: 1px solid var(--table-border-color); + border-bottom: 1px solid var(--border-color); cursor: pointer; } @@ -166,7 +166,7 @@ nav ul li a.active { } .client-detail { - border-bottom: 1px solid var(--table-border-color); + border-bottom: 1px solid var(--border-color); padding: var(--padding-small); } diff --git a/src/blenderbim/blenderbim/bim/data/webui/static/css/gantt.css b/src/blenderbim/blenderbim/bim/data/webui/static/css/gantt.css index f19ab94c28..5cedbef19e 100644 --- a/src/blenderbim/blenderbim/bim/data/webui/static/css/gantt.css +++ b/src/blenderbim/blenderbim/bim/data/webui/static/css/gantt.css @@ -157,7 +157,7 @@ nav ul li a.active { overflow-y: auto; overflow: hidden; transition: opacity 0.3s ease-out, visibility 0.3s ease-out; - border: 1px solid var(--table-border-color); + border: 1px solid var(--details-border-color); background-color: var(--nav-bg-color); z-index: 1; opacity: 0; @@ -176,7 +176,7 @@ nav ul li a.active { .client { padding: var(--margin-small); - border-bottom: 1px solid var(--table-border-color); + border-bottom: 1px solid var(--details-border-color); cursor: pointer; } @@ -196,7 +196,7 @@ nav ul li a.active { } .client-detail { - border-bottom: 1px solid var(--table-border-color); + border-bottom: 1px solid var(--details-border-color); padding: var(--padding-small); } diff --git a/src/blenderbim/blenderbim/bim/data/webui/static/js/drawings.js b/src/blenderbim/blenderbim/bim/data/webui/static/js/drawings.js index 8a865dcab1..026ac931eb 100644 --- a/src/blenderbim/blenderbim/bim/data/webui/static/js/drawings.js +++ b/src/blenderbim/blenderbim/bim/data/webui/static/js/drawings.js @@ -30,9 +30,9 @@ function connectSocket() { socket.on("blender_connect", handleBlenderConnect); socket.on("blender_disconnect", handleBlenderDisconnect); socket.on("connect", handleWebConnect); + socket.on("connected_clients", handleConnectedClients); socket.on("drawings_data", handleDrawingsData); socket.on("svg_data", handleSvgData); - // socket.on("default_data", handleDefaultData); } // function used to get drawings data from blenderbim @@ -53,8 +53,22 @@ function handleBlenderConnect(blenderId) { connectedClients[blenderId] = { shown: false, ifc_file: "", + has_drawings: false, }; } + + $("#blender-count").text(function (i, text) { + return parseInt(text, 10) + 1; + }); + + const msg = { + blenderId: blenderId, + sourcePage: "drawings", + operator: { + type: "getDrawings", + }, + }; + socket.emit("web_operator", msg); } // Function to handle 'blender_disconnect' event @@ -70,6 +84,18 @@ function handleBlenderDisconnect(blenderId) { }); } +function handleConnectedClients(data) { + $("#blender-count").text(data.length); + console.log(data); + data.forEach(function (id) { + connectedClients[id] = { + shown: false, + ifc_file: "", + has_drawings: false, + }; + }); +} + function handleDrawingsData(data) { const blenderId = data["blenderId"]; @@ -81,6 +107,8 @@ function handleDrawingsData(data) { allDrawings[filename] = { drawings: drawings, sheets: sheets }; + const hasDrawings = drawings.length > 0 || sheets.length > 0; + console.log(connectedClients); if (connectedClients.hasOwnProperty(blenderId)) { @@ -88,6 +116,7 @@ function handleDrawingsData(data) { connectedClients[blenderId] = { shown: true, ifc_file: filename, + has_drawings: hasDrawings, }; addSelectOption(blenderId, filename); } else { @@ -97,6 +126,7 @@ function handleDrawingsData(data) { connectedClients[blenderId] = { shown: true, ifc_file: filename, + has_drawings: hasDrawings, }; addSelectOption(blenderId, filename); } @@ -208,15 +238,18 @@ function toggleClientList() { } clientList.empty(); + var counter = 0; $.each(connectedClients, function (id, client) { - if (!client.shown) return; + counter++; const dropdownIcon = $("") .addClass("fas fa-chevron-down") .css("margin-left", "0.5rem"); - const clientDiv = $("
").addClass("client").text(client.ifc_file); + const clientDiv = $("
") + .addClass("client") + .text(client.ifc_file || "Blender " + counter); clientDiv.append(dropdownIcon); @@ -229,26 +262,19 @@ function toggleClientList() { clientDetailsDiv.append(clientId); } - if (client.headers && client.headers.length) { - const clientHeaders = $("
") + if (!client.has_drawings) { + const clientShown = $("
") .addClass("client-detail") - .text(`Table Headers: ${client.headers.join(", ")}`); - - const scrollButton = $("