@page "/projects" @inject ProjectService ProjectService @inject NavigationManager Navigation Projects

Projects

New Project
@if (loading) {

Loading...

} else if (projects.Count == 0) {
No projects found. Create your first project.
} else { @foreach (var project in projects) { }
Name Material Cutting Tool Last Modified Actions
@project.Name @(project.Material?.DisplayName ?? "-") @(project.CuttingTool?.Name ?? "-") @((project.UpdatedAt ?? project.CreatedAt).ToLocalTime().ToString("g")) Edit Optimize
} @code { private List projects = new(); private bool loading = true; private ConfirmDialog deleteDialog = null!; private Project? projectToDelete; private string deleteMessage = ""; protected override async Task OnInitializedAsync() { projects = await ProjectService.GetAllAsync(); loading = false; } private void ConfirmDelete(Project project) { projectToDelete = project; deleteMessage = $"Are you sure you want to delete \"{project.Name}\"? This will also delete all parts and stock bins."; deleteDialog.Show(); } private async Task DeleteConfirmed() { if (projectToDelete != null) { await ProjectService.DeleteAsync(projectToDelete.Id); projects = await ProjectService.GetAllAsync(); } } private async Task DuplicateProject(Project project) { var duplicate = await ProjectService.DuplicateAsync(project.Id); Navigation.NavigateTo($"projects/{duplicate.Id}"); } }