import React from "react";
import { Weight, Activity, Layers, Cog } from "lucide-react";
import ParameterItem from "./ui/parameter-item";
import { useUrdf } from "@/hooks/useUrdf";
const RobotParameters: React.FC = () => {
// Get robot data from the UrdfContext
const { currentRobotData } = useUrdf();
// If no data is available, show an error message
if (!currentRobotData) {
return (
Parameters
No robot parameters available
);
}
// Use data from the context
const data = currentRobotData;
// Format the mass with units
const formatMass = (mass?: number) => {
return mass ? `${mass.toFixed(1)}kg` : "Unknown";
};
// Create sub-items for links with masses
const massSubItems =
data?.links
?.filter((link) => link.name && link.mass !== undefined && link.mass > 0)
.map((link) => ({
label: link.name || "Unnamed Link",
value: `${link.mass?.toFixed(1)}kg`,
})) || [];
// Create sub-items for joint types
const jointSubItems = [];
if (data?.joints?.revolute) {
jointSubItems.push({ label: "Revolute", value: data.joints.revolute });
}
if (data?.joints?.prismatic) {
jointSubItems.push({ label: "Prismatic", value: data.joints.prismatic });
}
if (data?.joints?.other) {
jointSubItems.push({ label: "Other", value: data.joints.other });
}
if (data?.joints?.continuous) {
jointSubItems.push({ label: "Continuous", value: data.joints.continuous });
}
if (data?.joints?.fixed) {
jointSubItems.push({ label: "Fixed", value: data.joints.fixed });
}
// Create sub-items for materials
const materialSubItems =
data.materials
?.filter((material) => material.name && material.percentage)
.map((material) => ({
label: material.name || "Unknown Material",
value: `${material.percentage}%`,
})) || [];
return (
Parameters
}
color="bg-sidebar/50 dark:bg-sidebar-accent/30"
subItems={massSubItems.length > 0 ? massSubItems : undefined}
/>
}
color="bg-sidebar/50 dark:bg-sidebar-accent/30"
/>
0
? `${materialSubItems.length} materials`
: "Unknown"
}
icon={}
color="bg-sidebar/50 dark:bg-sidebar-accent/30"
subItems={materialSubItems.length > 0 ? materialSubItems : undefined}
/>
0
? jointSubItems.length + " types"
: "Unknown"
}
icon={}
color="bg-sidebar/50 dark:bg-sidebar-accent/30"
subItems={jointSubItems.length > 0 ? jointSubItems : undefined}
/>
);
};
export default RobotParameters;