- {/*
*/}
-
- {loadingProgress > 0 &&
}
- {!isPlaying && (
+ {!selectedUser && (
<>
- {toggleThreeD &&
}
-
-
+
+ {loadingProgress > 0 &&
}
+ {!isPlaying && (
+ <>
+ {toggleThreeD &&
}
+
+
+ >
+ )}
+
+ {activeModule === "market" &&
}
+ {activeModule !== "market" &&
}
+ {isPlaying && activeModule === "simulation" &&
}
>
)}
- {/*
-
- */}
- {activeModule === "market" &&
}
-
- {activeModule !== "market" &&
}
- {isPlaying && activeModule === "simulation" &&
}
- {/* {
} */}
+
+ createHandleDrop({
+ widgetSubOption,
+ visualizationSocket,
+ selectedZone,
+ setFloatingWidget,
+ event,
+ })
+ }
+ onDragOver={(event) => event.preventDefault()}
+ >
+
+
{selectedUser &&
}
);
diff --git a/app/src/store/visualization/useDroppedObjectsStore.ts b/app/src/store/visualization/useDroppedObjectsStore.ts
index 5c4527b..bbe4cde 100644
--- a/app/src/store/visualization/useDroppedObjectsStore.ts
+++ b/app/src/store/visualization/useDroppedObjectsStore.ts
@@ -1,5 +1,4 @@
import { create } from "zustand";
-import { addingFloatingWidgets } from "../../services/visulization/zone/addFloatingWidgets";
import { useSocketStore } from "../store";
import useChartStore from "./useChartStore";
diff --git a/app/src/styles/base/global.scss b/app/src/styles/base/global.scss
index d90e6fb..f86ba0f 100644
--- a/app/src/styles/base/global.scss
+++ b/app/src/styles/base/global.scss
@@ -1,11 +1,29 @@
@use "../abstracts/variables" as *;
@use "../abstracts/mixins" as *;
-section, .section{
- padding: 4px;
- outline: 1px solid var(--border-color);
- outline-offset: -1px;
- border-radius: #{$border-radius-large};
- background: var(--background-color);
- margin: 4px 0;
+section,
+.section {
+ padding: 4px;
+ outline: 1px solid var(--border-color);
+ outline-offset: -1px;
+ border-radius: #{$border-radius-large};
+ background: var(--background-color);
+ margin: 4px 0;
+}
+
+.scene-container {
+ width: calc(100% - (320px + 270px + 90px));
+ height: calc(100% - (250px));
+ position: absolute;
+ top: 50%;
+ left: calc(270px + 45px);
+ overflow: hidden;
+ z-index: 1;
+ transform: translate(0, -50%);
+ transition: all 0.2s;
+ box-shadow: $box-shadow-medium;
+ canvas {
+ outline: none;
+ border: none;
+ }
}
diff --git a/app/src/styles/base/reset.scss b/app/src/styles/base/reset.scss
index ab77f9a..82d286e 100644
--- a/app/src/styles/base/reset.scss
+++ b/app/src/styles/base/reset.scss
@@ -12,10 +12,3 @@ input[type="password"]::-webkit-clear-button, /* For Chrome/Safari clear button
input[type="password"]::-webkit-inner-spin-button { /* Just in case */
display: none;
}
-
-button{
- border: none;
- outline: none;
- background: none;
- cursor: pointer;
-}
\ No newline at end of file
diff --git a/app/src/styles/components/analysis/ROISummary.scss b/app/src/styles/components/analysis/ROISummary.scss
index 96b4a5d..5e2f78a 100644
--- a/app/src/styles/components/analysis/ROISummary.scss
+++ b/app/src/styles/components/analysis/ROISummary.scss
@@ -1,3 +1,6 @@
+@use "../../abstracts/variables" as *;
+@use "../../abstracts/mixins" as *;
+
.roiSummary-container {
.roiSummary-wrapper {
background-color: var(--background-color);
@@ -64,7 +67,7 @@
width: 100%;
border-radius: 6px;
border: 1px solid #00FF56;
- background: #436D51;
+ background: #17eb5d65;
display: flex;
flex-direction: column;
padding: 4px 6px;
@@ -223,12 +226,11 @@
background: none;
.btn {
- background-color: var(--accent-color);
- color: var(--background-color);
- padding: 4px 6px;
- border-radius: 5px;
+ color: var(--text-button-color);
+ background: var(--background-color-button);
+ padding: 4px 12px;
+ border-radius: #{$border-radius-large};
display: inline-block;
- font-size: 14px;
text-align: center;
}
}
@@ -244,7 +246,6 @@
height: 250px;
border-radius: 50%;
position: relative;
- transition: background 0.5s ease;
}
.progress-cover {
position: absolute;
@@ -252,7 +253,6 @@
height: 75%;
top: 12.5%;
left: 12.5%;
- background: #000000cc;
border-radius: 50%;
}
}
diff --git a/app/src/styles/components/analysis/analysis.scss b/app/src/styles/components/analysis/analysis.scss
index 030a79f..00a9c32 100644
--- a/app/src/styles/components/analysis/analysis.scss
+++ b/app/src/styles/components/analysis/analysis.scss
@@ -1,279 +1,269 @@
.analysis {
- position: fixed;
- top: 0;
- left: 0;
+ position: fixed;
+ top: 0;
+ left: 0;
+ display: flex;
+ justify-content: space-between;
+ align-items: start;
+ width: 100%;
+ height: 100vh;
+ pointer-events: none;
+ padding: 10px;
+ z-index: 2;
+
+ .analysis-wrapper {
display: flex;
- justify-content: space-between;
- align-items: start;
- width: 100%;
- height: 100vh;
- // pointer-events: none;
- z-index: 10000;
-
- .analysis-wrapper {
- display: flex;
- flex-direction: column;
- gap: 12px;
- }
-}
-
-.analysis-card {
+ flex-direction: column;
+ gap: 12px;
+ }
+ .analysis-card {
min-width: 333px;
background: var(--background-color);
border-radius: 20px;
-
padding: 8px;
+ backdrop-filter: blur(10px);
+ outline: 1px solid var(--border-color);
+ outline-offset: -1px;
+ pointer-events: all;
.analysis-card-wrapper {
- width: 100%;
- background: var(--background-color);
- border-radius: 14px;
- padding: 16px;
+ width: 100%;
+ background: var(--background-color);
+ border-radius: 14px;
+ padding: 16px;
+ display: flex;
+ flex-direction: column;
+ gap: 14px;
+ .card-header {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ .main-header {
+ line-height: 20px;
+ font-size: var(--font-size-regular);
+ }
+ }
+
+ .process-container {
display: flex;
flex-direction: column;
- gap: 14px;
- .card-header {
+ .throughput-value {
+ font-size: 1rem;
+
+ .value {
+ font-weight: bold;
+ font-size: 1.5rem;
+ }
+ }
+
+ .progress-bar-wrapper {
+ display: flex;
+ gap: 8px;
+ margin-top: 6px;
+ }
+
+ .progress-bar {
+ position: relative;
+ width: 100%;
+ height: 4px;
+ border-radius: 13px;
+ overflow: hidden;
+ background: #fbebd7;
+
+ .bar-fill {
+ position: absolute;
+ height: 100%;
+ top: 0;
+ left: 0;
+ background: #fc9d2f;
+ border-radius: 13px;
+ }
+
+ .bar-fill.full {
width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
+ }
- .main-header {
- line-height: 20px;
- font-size: var(--font-size-regular);
- }
+ .bar-fill.partial {
+ width: 0; // inline style will override this
+ }
}
+ }
- .process-container {
- display: flex;
- flex-direction: column;
+ .metrics-section {
+ padding-top: 16px;
+ border-top: 1px solid var(--background-color-gray);
- .throughput-value {
- font-size: 1rem;
+ .metric {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 14px;
+ margin-bottom: 8px;
- .value {
- font-weight: bold;
- font-size: 1.5rem;
- }
- }
+ .label {
+ color: var(--text-color);
+ }
- .progress-bar-wrapper {
- display: flex;
- gap: 8px;
- margin-top: 6px;
- }
-
- .progress-bar {
- position: relative;
- // width: 36px;
- width: 100%;
- height: 4px;
- border-radius: 13px;
- overflow: hidden;
- background: #FBEBD7;
-
- .bar-fill {
- position: absolute;
- height: 100%;
- top: 0;
- left: 0;
- background: #FC9D2F;
- border-radius: 13px;
- }
-
- .bar-fill.full {
- width: 100%;
- }
-
- .bar-fill.partial {
- width: 0; // inline style will override this
- }
- }
- }
-
- .metrics-section {
- padding-top: 16px;
- border-top: 1px solid var(--background-color-gray);
-
- .metric {
- display: flex;
- justify-content: space-between;
- align-items: center;
- font-size: 14px;
- margin-bottom: 8px;
-
- .label {
- color: var(--text-color);
- }
-
- .value {
- font-weight: bold;
- }
- }
+ .value {
+ font-weight: bold;
+ }
}
+ }
}
-}
-
-
-.throughoutSummary {
.throughoutSummary-wrapper {
- .process-container {
+ .process-container {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-start;
+ gap: 16px;
+ width: 100%;
+
+ .throughput-value {
+ font-size: var(--font-size-small);
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+
+ .value {
+ color: var(--accent-color);
+ }
+
+ /* Let the text take available space */
+ }
+
+ .lineChart {
+ max-width: 200px;
+ height: 100px;
+ position: relative;
+
+ .assetUsage {
+ text-align: right;
+ position: absolute;
+ right: 0;
+ top: 0;
+ }
+
+ canvas {
+ background: transparent;
+ }
+ }
+ }
+
+ .footer {
+ display: flex;
+ gap: 16px; // Space between cards
+ margin-top: 24px;
+
+ .footer-card {
+ width: 100%;
+ background: var(--background-color-gray);
+ border-radius: 6px;
+ padding: 8px;
+ display: flex;
+ flex-direction: column;
+ gap: 6px;
+
+ &:first-child {
+ width: 85%;
+ }
+
+ .header {
+ font-size: var(--font-size-regular);
+ }
+
+ .value-container {
display: flex;
flex-direction: row;
align-items: center;
+ justify-content: end;
+ gap: 6px;
+ }
+ }
+
+ .shiftUtilization {
+ .value-container {
+ flex-direction: column;
+ align-items: flex-start;
justify-content: flex-start;
- gap: 16px;
- width: 100%;
- .throughput-value {
- font-size: var(--font-size-small);
- flex: 1;
- display: flex;
- flex-direction: column;
-
- .value {
- color: var(--accent-color);
- }
-
- /* Let the text take available space */
+ .value {
+ font-size: var(--font-size-xlarge);
}
- .lineChart {
- max-width: 200px;
- height: 100px;
- position: relative;
+ .progress-wrapper {
+ width: 100%;
+ display: flex;
+ gap: 6px;
- .assetUsage {
- text-align: right;
- position: absolute;
- right: 0;
- top: 0;
- }
-
- canvas {
- background: transparent;
- }
- }
- }
-
- .footer {
- display: flex;
- gap: 16px; // Space between cards
- margin-top: 24px;
-
- .footer-card {
- width: 100%;
- background: var(--background-color-gray);
+ .progress {
border-radius: 6px;
- padding: 8px;
+ height: 5px;
+
+ &:nth-child(1) {
+ background: #f3c64d;
+ }
+
+ &:nth-child(2) {
+ background: #67b3f4;
+ }
+
+ &:nth-child(3) {
+ background: #7981f5;
+ }
+ }
+ }
+
+ .progress-indicator {
+ display: flex;
+ justify-content: space-between;
+ width: 100%;
+ gap: 6px;
+
+ .shift-wrapper {
display: flex;
- flex-direction: column;
- gap: 6px;
+ align-items: center;
+ gap: 5px;
- &:first-child {
- width: 85%;
+ /* Align items vertically */
+ &:nth-child(1) {
+ .indicator {
+ background: #f3c64d;
+ }
}
- .header {
- font-size: var(--font-size-regular);
+ &:nth-child(2) {
+ .indicator {
+ background: #67b3f4;
+ }
}
- .value-container {
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: end;
- gap: 6px;
+ &:nth-child(3) {
+ .indicator {
+ background: #7981f5;
+ }
}
+
+ label {
+ font-size: var(--font-size-small);
+ position: relative;
+ }
+
+ .indicator {
+ display: inline-block;
+ width: 5px;
+ height: 5px;
+ border-radius: 50%;
+ }
+ }
}
-
- .shiftUtilization {
- .value-container {
- flex-direction: column;
- align-items: flex-start;
- justify-content: flex-start;
-
- .value {
- font-size: var(--font-size-xlarge);
- }
-
- .progress-wrapper {
- width: 100%;
- display: flex;
- gap: 6px;
-
- .progress {
- border-radius: 6px;
- height: 5px;
-
- &:nth-child(1) {
- background: #F3C64D;
- }
-
- &:nth-child(2) {
- background: #67B3F4;
- }
-
- &:nth-child(3) {
- background: #7981F5;
- }
- }
- }
-
- .progress-indicator {
- display: flex;
- justify-content: space-between;
- width: 100%;
- gap: 6px;
-
- .shift-wrapper {
- display: flex;
- align-items: center;
- gap: 5px;
-
- /* Align items vertically */
- &:nth-child(1) {
- .indicator {
-
- background: #F3C64D;
- }
- }
-
- &:nth-child(2) {
- .indicator {
-
- background: #67B3F4;
- }
- }
-
- &:nth-child(3) {
- .indicator {
-
- background: #7981F5;
- }
- }
-
- label {
- font-size: var(--font-size-small);
- position: relative;
- }
-
- .indicator {
- display: inline-block;
- width: 5px;
- height: 5px;
- border-radius: 50%;
-
- }
- }
- }
- }
- }
-
+ }
}
-
-
+ }
}
-}
\ No newline at end of file
+ }
+}
diff --git a/app/src/styles/components/button.scss b/app/src/styles/components/button.scss
index e69de29..dad9120 100644
--- a/app/src/styles/components/button.scss
+++ b/app/src/styles/components/button.scss
@@ -0,0 +1,24 @@
+@use "../abstracts/variables" as *;
+@use "../abstracts/mixins" as *;
+
+.labeled-button-container {
+ @include flex-space-between;
+ padding: 6px 12px;
+
+ button {
+ padding: 2px 32px;
+ border: none;
+ border-radius: #{$border-radius-large};
+ color: var(--text-button-color);
+ background: var(--background-color-button);
+ transition: all 0.2s;
+ cursor: pointer;
+ }
+}
+
+button {
+ border: none;
+ outline: none;
+ background: none;
+ cursor: pointer;
+}
diff --git a/app/src/styles/components/input.scss b/app/src/styles/components/input.scss
index e3b9585..d4c6544 100644
--- a/app/src/styles/components/input.scss
+++ b/app/src/styles/components/input.scss
@@ -639,21 +639,6 @@ input[type="number"] {
}
}
-.labeled-button-container {
- @include flex-space-between;
- padding: 6px 12px;
-
- button {
- padding: 2px 32px;
- border: none;
- border-radius: #{$border-radius-large};
- color: var(--text-button-color);
- background: var(--background-color-button);
- transition: all 0.2s;
- cursor: pointer;
- }
-}
-
.value-field-container {
margin-bottom: 6px;
padding: 6px 12px;
diff --git a/app/src/styles/components/tools.scss b/app/src/styles/components/tools.scss
index 0a23871..29d37b4 100644
--- a/app/src/styles/components/tools.scss
+++ b/app/src/styles/components/tools.scss
@@ -15,7 +15,7 @@
transition: width 0.2s;
background: var(--background-color);
backdrop-filter: blur(8px);
- z-index: #{$z-index-default};
+ z-index: 2;
outline: 1px solid var(--border-color);
outline-offset: -1px;
diff --git a/app/src/styles/pages/realTimeViz.scss b/app/src/styles/pages/realTimeViz.scss
index fa1b86c..319a75c 100644
--- a/app/src/styles/pages/realTimeViz.scss
+++ b/app/src/styles/pages/realTimeViz.scss
@@ -3,8 +3,6 @@
// Main Container
.realTime-viz {
- background: #131313;
- box-shadow: $box-shadow-medium;
width: calc(100% - (320px + 270px + 90px));
height: calc(100% - (250px));
position: absolute;
@@ -12,8 +10,8 @@
left: calc(270px + 45px);
transform: translate(0, -50%);
border-radius: #{$border-radius-medium};
- transition: all 0.2s;
- z-index: #{$z-index-default};
+ z-index: 2;
+ pointer-events: none;
.realTime-viz-wrapper {
width: 100%;
@@ -39,10 +37,6 @@
z-index: 1;
}
- .scene-container {
- overflow: hidden;
- }
-
.icon {
display: flex;
align-items: center;
@@ -74,6 +68,8 @@
z-index: 3;
transform: translate(-50%, -10%);
transition: transform 0.5s linear;
+ pointer-events: all;
+
&::-webkit-scrollbar {
display: none;
}
@@ -367,6 +363,7 @@
border-radius: 2px;
transition: transform 0.3s ease;
box-shadow: #{$box-shadow-medium};
+ pointer-events: all;
svg {
stroke: var(--icon-default-color) !important;
@@ -428,8 +425,6 @@
stroke: #f65648;
stroke-width: 1.3;
}
-
-
}
}
@@ -778,17 +773,10 @@
}
}
-
-
-
.panel-content {
background: var(--background-color);
-
}
-
-
-
/* RIGHT */
.panel-content.right-opening {
animation: rightExpand 0.5s ease-in-out forwards;
@@ -913,9 +901,6 @@
}
}
-
-
-
// Add button
.extra-Bs-addopening {
@@ -926,7 +911,6 @@
animation: slideUp 0.3s ease forwards;
}
-
@keyframes slideDown {
from {
opacity: 0;