@model FloorPlanEditorViewModel @{ ViewData["Title"] = Model.FloorPlan.FloorPlanID == 0 ? "New Floor Plan" : Model.FloorPlan.Name; ViewData["ProjectSection"] = "Floor Plans"; var activeFloor = Model.Floors.OrderBy(x => x.SortOrder).ThenBy(x => x.Name).FirstOrDefault(); var blocksByFloor = Model.Blocks.GroupBy(x => x.FloorPlanFloorID).ToDictionary(x => x.Key, x => x.ToList()); var selectedBlockId = int.TryParse(Context.Request.Query["selectedBlockId"], out var parsedSelectedBlockId) ? parsedSelectedBlockId : Model.Blocks.FirstOrDefault()?.FloorPlanBlockID ?? 0; string BlockClass(string blockType) => $"floor-plan-block floor-plan-block--{blockType.ToLowerInvariant()}"; }

Location floor plan

@Model.FloorPlan.Name

Back to floor plans
@if (TempData["FloorPlanMessage"] is string message) {
@message
} @if (TempData["FloorPlanError"] is string error) {
@error
}
@if (!Model.Floors.Any()) {

No floors yet

Add a floor to start arranging linked locations.

} else {
@foreach (var floor in Model.Floors.OrderBy(x => x.SortOrder).ThenBy(x => x.Name)) { var isActive = floor.FloorPlanFloorID == activeFloor?.FloorPlanFloorID; }
@for (var i = 0; i < Model.Floors.Count; i++) { var floor = Model.Floors[i]; var isActive = floor.FloorPlanFloorID == activeFloor?.FloorPlanFloorID; var floorBlocks = blocksByFloor.GetValueOrDefault(floor.FloorPlanFloorID) ?? [];
@foreach (var block in floorBlocks) { var blockIndex = Model.Blocks.FindIndex(x => x.FloorPlanBlockID == block.FloorPlanBlockID); }
}
@foreach (var floor in Model.Floors) { var placedBlockCount = Model.Blocks.Count(x => x.FloorPlanFloorID == floor.FloorPlanFloorID); } @foreach (var block in Model.Blocks) { } } @section Scripts { }