add warning to web ui on changes and is_dirty in web module data

This commit is contained in:
Ziad-I
2024-07-18 22:50:37 +03:00
committed by Dion Moult
parent 4912e86e6e
commit f50bbf9704
7 changed files with 65 additions and 4 deletions
@@ -85,7 +85,7 @@ class BlenderNamespace(socketio.AsyncNamespace):
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")
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}")
@@ -59,6 +59,13 @@ nav ul li a.active {
color: #3fb449;
}
.warning {
color: #ff4c4c;
margin-bottom: 10px;
padding: 2px;
display: none;
/* Initially hidden */
}
.table-description {
margin-bottom: 1rem;
@@ -65,4 +65,12 @@ nav ul li a {
nav ul li a:hover,
nav ul li a.active {
color: #3fb449;
}
.warning {
color: #ff4c4c;
margin-bottom: 10px;
padding: 2px;
display: none;
/* Initially hidden */
}
@@ -32,6 +32,7 @@ function connectSocket() {
socket.on("blender_connect", handleBlenderConnect);
socket.on("blender_disconnect", handleBlenderDisconnect);
socket.on("gantt_data", handleGanttData);
socket.on("default_data", handleDefaultData);
}
// Function to handle 'blender_connect' event
@@ -89,6 +90,13 @@ function handleGanttData(data) {
}
}
function handleDefaultData(data) {
const blenderId = data["blenderId"];
const isDirty = data["data"]["is_dirty"];
showWarning(blenderId, isDirty);
console.log(data);
}
// Function to add a new gantt with data and filename
function addGanttElement(blenderId, tasks, workSched, filename) {
const ganttContainer = $("<div></div>")
@@ -101,6 +109,13 @@ function addGanttElement(blenderId, tasks, workSched, filename) {
.addClass("no-print")
.css("margin-bottom", "10px");
const warning = $("<div></div>")
.attr("id", "warning-" + blenderId)
.html(
"&#9888; Warning: This Gantt Chart may contain outdated data due to recent changes in Blender."
)
.addClass("warning no-print");
const workSchedDiv = $("<div></div>").attr("id", "workSched" + blenderId);
const scheduleTable = $("<table></table>")
@@ -148,6 +163,7 @@ function addGanttElement(blenderId, tasks, workSched, filename) {
workSchedDiv.append(scheduleTable);
ganttContainer.append(ganttTitle);
ganttContainer.append(warning);
ganttContainer.append(workSchedDiv);
ganttContainer.append(ganttInfoDiv);
ganttContainer.append(ganttDiv);
@@ -279,6 +295,7 @@ function updateGanttElement(blenderId, tasks, workSched, filename) {
g.Draw();
$("#title-" + blenderId).text(filename);
$("#warning-" + blenderId).css("display", "none");
}
// Function to remove gantt element
@@ -286,6 +303,10 @@ function removeGanttElement(blenderId) {
$("#container-" + blenderId).remove();
}
function showWarning(blenderId, isDirty) {
$("#warning-" + blenderId).css("display", "block");
}
// Utility function to create a tooltip for the gantt chars
function generateTooltip(task) {
var dataObject = task.getDataObject();
@@ -18,6 +18,7 @@ function connectSocket() {
socket.on("blender_connect", handleBlenderConnect);
socket.on("blender_disconnect", handleBlenderDisconnect);
socket.on("csv_data", handleCsvData);
socket.on("default_data", handleDefaultData);
}
// Function to handle 'blender_connect' event
@@ -65,6 +66,13 @@ function handleCsvData(data) {
}
}
function handleDefaultData(data) {
const blenderId = data["blenderId"];
const isDirty = data["data"]["is_dirty"];
showWarning(blenderId, isDirty);
console.log(data);
}
// Function to add a new table with data and filename
function addTableElement(blenderId, csvData, filename) {
// store headers of the csv data
@@ -82,11 +90,19 @@ function addTableElement(blenderId, csvData, filename) {
.text(filename)
.css("margin-bottom", "10px");
const warning = $("<div></div>")
.attr("id", "warning-" + blenderId)
.html(
"&#9888; Warning: This table may contain outdated data due to recent changes in Blender."
)
.addClass("warning");
const tableDiv = $("<div></div>")
.addClass("csv-table")
.attr("id", "table-" + blenderId);
tableContainer.append(tableTitle);
tableContainer.append(warning);
tableContainer.append(tableDiv);
$("#container").append(tableContainer);
@@ -199,6 +215,7 @@ function updateTableElement(blenderId, csvData, filename) {
connectedClients[blenderId].headers = newHeaders;
}
$("#title-" + blenderId).text(filename);
$("#warning-" + blenderId).css("display", "none");
}
}
@@ -207,6 +224,10 @@ function removeTableElement(blenderId) {
$("#container-" + blenderId).remove();
}
function showWarning(blenderId, isDirty) {
$("#warning-" + blenderId).css("display", "block");
}
// Utility function to compare two csv header
function compareHeaders(headers1, headers2) {
if (headers1.length !== headers2.length) {
@@ -32,11 +32,16 @@ class WebData:
@classmethod
def load(cls):
cls.data = {
"ifc_file": cls.ifc_file_name(),
"ifc_file": cls.get_ifc_file_name(),
"is_dirty": cls.get_is_dirty(),
}
cls.is_loaded = True
@classmethod
def ifc_file_name(cls):
def get_ifc_file_name(cls):
filename = os.path.basename(bpy.context.scene.BIMProperties.ifc_file)
return filename
@classmethod
def get_is_dirty(cls):
return bpy.context.scene.BIMProperties.is_dirty
-1
View File
@@ -105,7 +105,6 @@ 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_webui_data()
@classmethod
def disconnect_websocket_server(cls):