+ {/* Site row */}
+ {siteNode && (
+
+
+
+ {siteNode.name || "Site"}
+
+
+
+ )}
{buildings.length === 0 ? (
@@ -247,19 +350,91 @@ function SitePhaseView() {
) : (
{buildings.map((building) => (
-
+
+
setBuildingCameraOpen(open ? building.id : null)}
+ >
+
+
+
+ e.stopPropagation()}
+ >
+
+ {building.camera && (
+
+ )}
+
+ {building.camera && (
+
+ )}
+
+
+
+
))}
)}
@@ -280,7 +455,10 @@ function BuildingSelector() {
// Get site node and its building children
const siteNode = rootNodeIds[0] ? nodes[rootNodeIds[0]] : null;
const buildings = (siteNode?.type === 'site' ? siteNode.children : [])
- .map((child) => typeof child === 'string' ? nodes[child] : child)
+ .map((child) => {
+ const id = typeof child === 'string' ? child : child.id;
+ return nodes[id] as BuildingNode | undefined;
+ })
.filter((node): node is BuildingNode => node?.type === "building");
const selectedBuilding = selectedBuildingId