@page "/reports/issues"
@using Microsoft.AspNetCore.Authorization
@using TaskTrackingSystem.Shared
@using TaskTrackingSystem.Shared.Enums
@using TaskTrackingSystem.Shared.Models.Issue
@using TaskTrackingSystem.Shared.Models.Project
@rendermode @(new InteractiveServerRenderMode(prerender: false))
@attribute [Authorize]
@inject ApiClientService ApiClient
@inject IJSRuntime JS
@AppLocalization.PageDescription("issueReport", "Track daily execution, backlog health, and issue-level effort.")
| @AppLocalization.Text("common.issue", "Issue") | @AppLocalization.Text("common.taskProject", "Task / Project") | @AppLocalization.Text("common.assignee", "Assignee") | @AppLocalization.Text("common.status", "Status") | @AppLocalization.Text("common.hours", "Hours") | @AppLocalization.Text("common.dueDate", "Due") | @AppLocalization.Text("common.risk", "Risk") |
|---|---|---|---|---|---|---|
|
@if (expandedIssues.Contains(issue.Id))
{
@(string.IsNullOrWhiteSpace(Content.GetIssueDescription(issue)) ? AppLocalization.Text("common.noDescription", "No description") : Content.GetIssueDescription(issue))
@AppLocalization.Text("report.delay", "Delay"): @(string.IsNullOrWhiteSpace(Content.GetText(issue.DelayReason, issue.DelayReasonMy)) ? AppLocalization.Text("common.noneRecorded", "None recorded") : Content.GetText(issue.DelayReason, issue.DelayReasonMy))
@AppLocalization.Text("report.blockedBy", "Blocked by"): @(string.IsNullOrWhiteSpace(Content.GetText(issue.BlockedBy, issue.BlockedByMy)) ? AppLocalization.Text("common.none", "None") : Content.GetText(issue.BlockedBy, issue.BlockedByMy))
|
@if (expandedTaskDetails.Contains(issue.Id))
{
@Content.GetText(issue.TaskTitle, issue.TaskTitleMy)
@Content.GetText(issue.ProjectName, issue.ProjectNameMy)
|
@(string.IsNullOrWhiteSpace(Content.GetText(issue.AssignedToName, issue.AssignedToNameMy)) ? AppLocalization.Text("common.unassigned", "Unassigned") : Content.GetText(issue.AssignedToName, issue.AssignedToNameMy)) | @GetStatusLabel(issue.StatusId) | @AppLocalization.Number(issue.EstimatedHours ?? 0, "N1") / @AppLocalization.Number(issue.ActualHours ?? 0, "N1") | @DisplayFormats.Date(issue.DueDate) | @RiskBadge(issue) |
{label}
{value}