From c8defbb77f28c38f8aec217d142e243443b42fa1 Mon Sep 17 00:00:00 2001 From: Ziad-I <68874104+Ziad-I@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:59:56 +0300 Subject: [PATCH] add connected list to gantt chart page --- .../bim/data/webui/static/css/gantt.css | 78 +++++++++++++++++- .../bim/data/webui/static/css/index.css | 7 +- .../bim/data/webui/static/js/gantt.js | 82 +++++++++++++++++++ .../bim/data/webui/static/js/index.js | 6 +- .../bim/data/webui/templates/gantt.html | 8 ++ 5 files changed, 175 insertions(+), 6 deletions(-) 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 1256b09080..bad0ccad59 100644 --- a/src/blenderbim/blenderbim/bim/data/webui/static/css/gantt.css +++ b/src/blenderbim/blenderbim/bim/data/webui/static/css/gantt.css @@ -1,13 +1,17 @@ :root { --font-family: Arial, sans-serif; + --base-font-size: 16px; + --margin-tiny: 0.125rem; --margin-small: 0.625rem; --margin-medium: 1.25rem; --margin-large: 2.5rem; - --padding-small: 0.125rem; + --padding-tiny: 0.125rem; + --padding-small: 0.625rem; --padding-medium: 1rem; --font-size-small: 1rem; --font-size-large: 1.2rem; --logo-height: 2.5rem; + --nav-height: 2.5rem; --folder-collapse-font-size: 0.75rem; --folder-collapse-font-family: Courier, "Courier New", monospace; --box-shadow: 0 0 0.7rem #5f5f5f66; @@ -31,6 +35,7 @@ --group-item-bg-color: #4b4b4b; --input-bg-color: #3b3b3b; --input-border-color: #000; + --details-border-color: #464444; } :root.light { @@ -42,6 +47,7 @@ --nav-link-color: #000000; --nav-link-hover-color: #38a63d; --warning-color: #FF4500; + --details-border-color: #222; } html { @@ -107,7 +113,7 @@ nav ul li a.active { .warning { color: var(--warning-color); margin-bottom: var(--margin-small); - padding: var(--padding-small); + padding: var(--padding-tiny); display: none; } @@ -141,6 +147,74 @@ nav ul li a.active { outline: none; } +#client-list { + position: absolute; + top: calc(0 + var(--nav-height)); + overflow-y: auto; + overflow: hidden; + transition: opacity 0.3s ease-out, visibility 0.3s ease-out; + border: 1px solid var(--table-border-color); + background-color: var(--nav-bg-color); + z-index: 1; + opacity: 0; + visibility: hidden; + width: auto; +} + +#client-list.show { + opacity: 1; + visibility: visible; +} + +#connected-list-div { + display: inline-block; +} + +.client { + padding: var(--margin-small); + border-bottom: 1px solid var(--table-border-color); + cursor: pointer; +} + +.client-details { + max-height: 0; + overflow: hidden; + padding-left: var(--padding-small); + transition: max-height 0.2s ease-out, padding 0.2s ease-out, opacity 0.1s ease-out; + background-color: var(--nav-bg-color); + margin-top: var(--margin-tiny); + opacity: 0; +} + +.client-details.show { + max-height: none; + padding: var(--padding-small); + opacity: 1; +} + +.client-detail { + border-bottom: 1px solid var(--table-border-color); + padding: var(--padding-small); +} + +#show-connected-button { + width: auto; + background-color: var(--bg-color); + border: none; + font-size: var(--base-font-size); +} + +#show-connected-button:hover, +.scroll-button:hover { + cursor: pointer; +} + +.scroll-button { + font-size: var(--base-font-size); + margin-left: var(--margin-tiny); + margin-top: var(--margin-small); +} + .gantt-info { margin: 0.5rem; font-size: var(--font-size-small); diff --git a/src/blenderbim/blenderbim/bim/data/webui/static/css/index.css b/src/blenderbim/blenderbim/bim/data/webui/static/css/index.css index 63cd80c40c..d8a46fa708 100644 --- a/src/blenderbim/blenderbim/bim/data/webui/static/css/index.css +++ b/src/blenderbim/blenderbim/bim/data/webui/static/css/index.css @@ -1,12 +1,13 @@ :root { --font-family: Arial, sans-serif; - --margin-tiny: 0.125; + --base-font-size: 16px; + --margin-tiny: 0.125rem; --margin-small: 0.625rem; --margin-medium: 1.25rem; --margin-large: 2.5rem; + --padding-tiny: 0.125rem; --padding-small: 0.625rem; --padding-medium: 1rem; - --warning-padding: 0.125rem; --font-size-large: 1.2rem; --logo-height: 2.5rem; --nav-height: 2.5rem; @@ -100,7 +101,7 @@ nav ul li a.active { .warning { color: var(--warning-color); margin-bottom: var(--margin-small); - padding: var(--warning-padding); + padding: var(--padding-tiny); display: none; } diff --git a/src/blenderbim/blenderbim/bim/data/webui/static/js/gantt.js b/src/blenderbim/blenderbim/bim/data/webui/static/js/gantt.js index e822c600d8..926d6cf5ad 100644 --- a/src/blenderbim/blenderbim/bim/data/webui/static/js/gantt.js +++ b/src/blenderbim/blenderbim/bim/data/webui/static/js/gantt.js @@ -60,6 +60,10 @@ function handleBlenderDisconnect(blenderId) { delete connectedClients[blenderId]; removeGanttElement(blenderId); } + + $("#blender-count").text(function (i, text) { + return parseInt(text, 10) - 1; + }); } // Function to handle 'gantt_data' event @@ -77,6 +81,7 @@ function handleGanttData(data) { if (!connectedClients[blenderId].shown) { connectedClients[blenderId] = { shown: true, + ifc_file: filename, ganttTasks: ganttTasks, workSchedule: ganttWorkSched, }; @@ -89,6 +94,7 @@ function handleGanttData(data) { } else { connectedClients[blenderId] = { shown: true, + ifc_file: filename, ganttTasks: ganttTasks, workSchedule: ganttWorkSched, }; @@ -105,6 +111,10 @@ function handleDefaultData(data) { // Function to add a new gantt with data and filename function addGanttElement(blenderId, tasks, workSched, filename) { + $("#blender-count").text(function (i, text) { + return parseInt(text, 10) + 1; + }); + const ganttContainer = $("
") .addClass("gantt-container") .attr("id", "container-" + blenderId); @@ -382,3 +392,75 @@ function toggleTheme() { setTheme("dark"); } } + +function toggleClientList() { + var clientList = $("#client-list"); + + if (clientList.hasClass("show")) { + clientList.removeClass("show"); + return; + } + + clientList.empty(); + + $.each(connectedClients, function (id, client) { + if (!client.shown) return; + + const dropdownIcon = $("") + .addClass("fas fa-chevron-down") + .css("margin-left", "0.5rem"); + + const clientDiv = $("