@using TaskTracker.Api.Pages @using TaskTracker.Core.Enums @model TaskTracker.Core.Entities.WorkTask @{ var statusColors = new Dictionary { [WorkTaskStatus.Pending] = ("#64748b", "Pending"), [WorkTaskStatus.Active] = ("#3b82f6", "Active"), [WorkTaskStatus.Paused] = ("#eab308", "Paused"), [WorkTaskStatus.Completed] = ("#22c55e", "Completed"), [WorkTaskStatus.Abandoned] = ("#ef4444", "Abandoned"), }; var (statusColor, statusLabel) = statusColors[Model.Status]; var catColor = BoardModel.GetCategoryColor(Model.Category); var elapsed = BoardModel.FormatElapsed(Model.StartedAt, Model.CompletedAt); double? progressPercent = null; if (Model.EstimatedMinutes.HasValue && Model.StartedAt.HasValue) { var start = Model.StartedAt.Value; var end = Model.CompletedAt ?? DateTime.UtcNow; var elapsedMins = (end - start).TotalMinutes; progressPercent = Math.Min(100, (elapsedMins / Model.EstimatedMinutes.Value) * 100); } var isTerminal = Model.Status is WorkTaskStatus.Completed or WorkTaskStatus.Abandoned; }

@Model.Title

@statusLabel
@if (!string.IsNullOrEmpty(Model.Category)) { @Model.Category } else { + category }
@if (!string.IsNullOrEmpty(Model.Description)) {
@Model.Description
} else {
Click to add description...
}
Elapsed @elapsed
Estimate
@(Model.EstimatedMinutes.HasValue ? $"{Model.EstimatedMinutes}m" : "--")
@if (progressPercent.HasValue) { var isOver = progressPercent.Value >= 100;
}
@if (!isTerminal) {
@switch (Model.Status) { case WorkTaskStatus.Pending: break; case WorkTaskStatus.Active: break; case WorkTaskStatus.Paused: break; }
}