Merge branch 'realTimeVisulization' into simulation

This commit is contained in:
2025-04-15 18:35:25 +05:30
14 changed files with 74 additions and 12 deletions

View File

@@ -21,14 +21,17 @@ const BarChartInput = (props: Props) => {
const iotApiUrl = process.env.REACT_APP_IOT_SOCKET_SERVER_URL;
const email = localStorage.getItem("email") || "";
const organization = email?.split("@")[1]?.split(".")[0]
const [isLoading, setLoading] = useState<boolean>(true);
useEffect(() => {
const fetchZoneData = async () => {
try {
setLoading(true)
const response = await axios.get(`http://${iotApiUrl}/floatinput`);
if (response.status === 200) {
// console.log("dropdown data:", response.data);
setDropDownData(response.data);
setLoading(false);
} else {
console.log("Unexpected response:", response);
}
@@ -148,6 +151,7 @@ const BarChartInput = (props: Props) => {
onSelect={(selectedData) => handleSelect(inputKey, selectedData)}
onUnselect={() => handleSelect(inputKey, null)}
selectedValue={selections[inputKey]} // Load from Zustand
isLoading={isLoading}
/>
<div className="icon">
<AddIcon />

View File

@@ -21,14 +21,17 @@ const FleetEfficiencyInputComponent = (props: Props) => {
const iotApiUrl = process.env.REACT_APP_IOT_SOCKET_SERVER_URL;
const email = localStorage.getItem("email") || "";
const organization = email?.split("@")[1]?.split(".")[0]
const [isLoading, setLoading] = useState<boolean>(true);
useEffect(() => {
const fetchZoneData = async () => {
try {
const response = await axios.get(`http://${iotApiUrl}/floatinput`);
setLoading(true)
if (response.status === 200) {
// console.log("dropdown data:", response.data);
setDropDownData(response.data);
setLoading(false)
} else {
console.log("Unexpected response:", response);
}
@@ -149,6 +152,7 @@ const FleetEfficiencyInputComponent = (props: Props) => {
onSelect={(selectedData) => handleSelect(inputKey, selectedData)}
onUnselect={() => handleSelect(inputKey, null)}
selectedValue={selections[inputKey]} // Load from Zustand
isLoading={isLoading}
/>
<div className="icon">
<AddIcon />

View File

@@ -21,14 +21,17 @@ const FlotingWidgetInput = (props: Props) => {
const iotApiUrl = process.env.REACT_APP_IOT_SOCKET_SERVER_URL;
const email = localStorage.getItem("email") || "";
const organization = email?.split("@")[1]?.split(".")[0]
const [isLoading, setLoading] = useState<boolean>(true);
useEffect(() => {
const fetchZoneData = async () => {
try {
setLoading(true)
const response = await axios.get(`http://${iotApiUrl}/floatinput`);
if (response.status === 200) {
// console.log("dropdown data:", response.data);
setDropDownData(response.data);
setLoading(false);
} else {
console.log("Unexpected response:", response);
}
@@ -149,6 +152,7 @@ const FlotingWidgetInput = (props: Props) => {
onSelect={(selectedData) => handleSelect(inputKey, selectedData)}
onUnselect={() => handleSelect(inputKey, null)}
selectedValue={selections[inputKey]} // Load from Zustand
isLoading={isLoading}
/>
<div className="icon">
<AddIcon />

View File

@@ -140,14 +140,17 @@ const LineGrapInput = (props: Props) => {
const iotApiUrl = process.env.REACT_APP_IOT_SOCKET_SERVER_URL;
const email = localStorage.getItem("email") || "";
const organization = email?.split("@")[1]?.split(".")[0]
const [isLoading, setLoading] = useState<boolean>(true);
useEffect(() => {
const fetchZoneData = async () => {
try {
setLoading(true)
const response = await axios.get(`http://${iotApiUrl}/floatinput`);
if (response.status === 200) {
// console.log("dropdown data:", response.data);
setDropDownData(response.data);
setLoading(false)
} else {
console.log("Unexpected response:", response);
}
@@ -267,6 +270,7 @@ const LineGrapInput = (props: Props) => {
onSelect={(selectedData) => handleSelect(inputKey, selectedData)}
onUnselect={() => handleSelect(inputKey, null)}
selectedValue={selections[inputKey]} // Load from Zustand
isLoading={isLoading}
/>
<div className="icon">
<AddIcon />

View File

@@ -21,14 +21,17 @@ const PieChartInput = (props: Props) => {
const iotApiUrl = process.env.REACT_APP_IOT_SOCKET_SERVER_URL;
const email = localStorage.getItem("email") || "";
const organization = email?.split("@")[1]?.split(".")[0]
const [isLoading, setLoading] = useState<boolean>(true);
useEffect(() => {
const fetchZoneData = async () => {
try {
setLoading(true)
const response = await axios.get(`http://${iotApiUrl}/floatinput`);
if (response.status === 200) {
// console.log("dropdown data:", response.data);
setDropDownData(response.data);
setLoading(false)
} else {
console.log("Unexpected response:", response);
}
@@ -148,6 +151,7 @@ const PieChartInput = (props: Props) => {
onSelect={(selectedData) => handleSelect(inputKey, selectedData)}
onUnselect={() => handleSelect(inputKey, null)}
selectedValue={selections[inputKey]} // Load from Zustand
isLoading={isLoading}
/>
<div className="icon">
<AddIcon />

View File

@@ -21,14 +21,17 @@ const Progress1Input = (props: Props) => {
const iotApiUrl = process.env.REACT_APP_IOT_SOCKET_SERVER_URL;
const email = localStorage.getItem("email") || "";
const organization = email?.split("@")[1]?.split(".")[0]
const [isLoading, setLoading] = useState<boolean>(true);
useEffect(() => {
const fetchZoneData = async () => {
try {
setLoading(true)
const response = await axios.get(`http://${iotApiUrl}/floatinput`);
if (response.status === 200) {
// console.log("dropdown data:", response.data);
setDropDownData(response.data);
setLoading(false)
} else {
console.log("Unexpected response:", response);
}
@@ -142,6 +145,7 @@ const Progress1Input = (props: Props) => {
onSelect={(selectedData) => handleSelect(inputKey, selectedData)}
onUnselect={() => handleSelect(inputKey, null)}
selectedValue={selections[inputKey]} // Load from Zustand
isLoading={isLoading}
/>
<div className="icon">
<AddIcon />

View File

@@ -21,14 +21,17 @@ const Progress2Input = (props: Props) => {
const iotApiUrl = process.env.REACT_APP_IOT_SOCKET_SERVER_URL;
const email = localStorage.getItem("email") || "";
const organization = email?.split("@")[1]?.split(".")[0]
const [isLoading, setLoading] = useState<boolean>(true);
useEffect(() => {
const fetchZoneData = async () => {
try {
setLoading(true)
const response = await axios.get(`http://${iotApiUrl}/floatinput`);
if (response.status === 200) {
// console.log("dropdown data:", response.data);
setDropDownData(response.data);
setLoading(false)
} else {
console.log("Unexpected response:", response);
}
@@ -142,6 +145,7 @@ const Progress2Input = (props: Props) => {
onSelect={(selectedData) => handleSelect(inputKey, selectedData)}
onUnselect={() => handleSelect(inputKey, null)}
selectedValue={selections[inputKey]} // Load from Zustand
isLoading={isLoading}
/>
<div className="icon">
<AddIcon />

View File

@@ -21,14 +21,17 @@ const WarehouseThroughputInputComponent = (props: Props) => {
const iotApiUrl = process.env.REACT_APP_IOT_SOCKET_SERVER_URL;
const email = localStorage.getItem("email") || "";
const organization = email?.split("@")[1]?.split(".")[0]
const [isLoading, setLoading] = useState<boolean>(true);
useEffect(() => {
const fetchZoneData = async () => {
try {
setLoading(true)
const response = await axios.get(`http://${iotApiUrl}/floatinput`);
if (response.status === 200) {
// console.log("dropdown data:", response.data);
setDropDownData(response.data);
setLoading(false)
} else {
console.log("Unexpected response:", response);
}
@@ -149,6 +152,7 @@ const WarehouseThroughputInputComponent = (props: Props) => {
onSelect={(selectedData) => handleSelect(inputKey, selectedData)}
onUnselect={() => handleSelect(inputKey, null)}
selectedValue={selections[inputKey]} // Load from Zustand
isLoading={isLoading}
/>
<div className="icon">
<AddIcon />

View File

@@ -21,14 +21,17 @@ const Widget2InputCard3D = (props: Props) => {
const iotApiUrl = process.env.REACT_APP_IOT_SOCKET_SERVER_URL;
const email = localStorage.getItem("email") || "";
const organization = email?.split("@")[1]?.split(".")[0]
const [isLoading, setLoading] = useState<boolean>(true);
useEffect(() => {
const fetchZoneData = async () => {
try {
setLoading(true)
const response = await axios.get(`http://${iotApiUrl}/floatinput`);
if (response.status === 200) {
// console.log("dropdown data:", response.data);
setDropDownData(response.data);
setLoading(false)
} else {
console.log("Unexpected response:", response);
}
@@ -147,6 +150,7 @@ const Widget2InputCard3D = (props: Props) => {
onSelect={(selectedData) => handleSelect(inputKey, selectedData)}
onUnselect={() => handleSelect(inputKey, null)}
selectedValue={selections[inputKey]} // Load from Zustand
isLoading={isLoading}
/>
<div className="icon">
<AddIcon />

View File

@@ -19,14 +19,17 @@ const Widget3InputCard3D = () => {
const iotApiUrl = process.env.REACT_APP_IOT_SOCKET_SERVER_URL;
const email = localStorage.getItem("email") || "";
const organization = email?.split("@")[1]?.split(".")[0]
const [isLoading, setLoading] = useState<boolean>(true);
useEffect(() => {
const fetchZoneData = async () => {
try {
setLoading(true)
const response = await axios.get(`http://${iotApiUrl}/getinput`);
if (response.status === 200) {
// console.log("dropdown data:", response.data);
setDropDownData(response.data);
setLoading(false)
} else {
console.log("Unexpected response:", response);
}
@@ -140,6 +143,7 @@ const Widget3InputCard3D = () => {
onSelect={(selectedData) => handleSelect(inputKey, selectedData)}
onUnselect={() => handleSelect(inputKey, null)}
selectedValue={selections[inputKey]} // Load from Zustand
isLoading={isLoading}
/>
<div className="icon">
<AddIcon />

View File

@@ -21,14 +21,17 @@ const Widget4InputCard3D = (props: Props) => {
const iotApiUrl = process.env.REACT_APP_IOT_SOCKET_SERVER_URL;
const email = localStorage.getItem("email") || "";
const organization = email?.split("@")[1]?.split(".")[0]
const [isLoading, setLoading] = useState<boolean>(true);
useEffect(() => {
const fetchZoneData = async () => {
try {
setLoading(true)
const response = await axios.get(`http://${iotApiUrl}/floatinput`);
if (response.status === 200) {
// console.log("dropdown data:", response.data);
setDropDownData(response.data);
setLoading(false)
} else {
console.log("Unexpected response:", response);
}
@@ -147,6 +150,7 @@ const Widget4InputCard3D = (props: Props) => {
onSelect={(selectedData) => handleSelect(inputKey, selectedData)}
onUnselect={() => handleSelect(inputKey, null)}
selectedValue={selections[inputKey]} // Load from Zustand
isLoading={isLoading}
/>
<div className="icon">
<AddIcon />

View File

@@ -203,6 +203,7 @@ interface MultiLevelDropdownProps {
onSelect: (selectedData: { name: string; fields: string }) => void;
onUnselect: () => void;
selectedValue?: { name: string; fields: string };
isLoading?: boolean;
}
// Main Multi-Level Dropdown Component
@@ -211,6 +212,7 @@ const MultiLevelDropdown = ({
onSelect,
onUnselect,
selectedValue,
isLoading = false,
}: MultiLevelDropdownProps) => {
const [open, setOpen] = useState(false);
const dropdownRef = useRef<HTMLDivElement>(null);
@@ -261,19 +263,22 @@ const MultiLevelDropdown = ({
<div className="dropdown-content ">
{/* loading list */}
{/* <div className="loading" /> */}
{/* Unselect Option */}
<DropdownItem label="Unselect" onClick={handleItemUnselect} />
{/* Nested Dropdown Items */}
{Object.entries(data).map(([key, value]) => (
<NestedDropdown
key={key}
label={key}
fields={Object.keys(value)}
onSelect={handleItemSelect}
/>
))}
{
isLoading ? <div className="loading" /> :
Object.entries(data).map(([key, value]) => (
<NestedDropdown
key={key}
label={key}
fields={Object.keys(value)}
onSelect={handleItemSelect}
/>
))
}
</div>
</div>
)}