@page "/reports/projects"
@using Microsoft.AspNetCore.Authorization
@using TaskTrackingSystem.Shared
@using TaskTrackingSystem.Shared.Models.Project
@using TaskTrackingSystem.Shared.Models.Task
@using TaskTrackingSystem.Shared.Models.Report
@using System.Text
@rendermode @(new InteractiveServerRenderMode(prerender: false))
@attribute [Authorize]
@inject ApiClientService ApiClient
@inject IJSRuntime JS
@inject AuthenticationStateProvider AuthStateProvider
@inject MenuAuthorizationService MenuAuthorization
@AppLocalization.Text("report.projectProgressDesc", "View project health using both planning tasks and daily execution issues.")
@AppLocalization.Text("dashboard.activeProjects", "Total Active Projects")
@AppLocalization.Number(totalActiveProjects)
@AppLocalization.Text("report.aheadOfSchedule", "Ahead of Schedule")
@AppLocalization.Number(aheadOfScheduleCount)
@AppLocalization.Text("dashboard.atRisk", "At Risk")
@AppLocalization.Number(atRiskCount)
| @AppLocalization.Text("common.index", "No.") | @AppLocalization.Text("project.projectName", "Project Name") | @AppLocalization.Text("common.startDate", "Start Date") | @AppLocalization.Text("common.endDate", "End Date") | @AppLocalization.Text("report.openIssues", "Open Issues") | @AppLocalization.Text("report.blockedOverdue", "Blocked / Overdue") | @AppLocalization.Text("report.health", "Health") | @AppLocalization.Text("report.lastActivity", "Last Activity") |
|---|---|---|---|---|---|---|---|
| @AppLocalization.Number((currentPage - 1) * pageSize + entry.index + 1) | @Content.GetText(proj.ProjectName, proj.ProjectNameMy) | @DisplayFormats.Date(proj.StartDate) | @DisplayFormats.Date(proj.EndDate) | @AppLocalization.Number(proj.OpenIssues) | @AppLocalization.Number(proj.BlockedIssues) / @AppLocalization.Number(proj.OverdueIssues) | @GetProjectHealthLabel(proj.ProjectHealth) | @DisplayFormats.Date(proj.LastActivity) |
|
@AppLocalization.Text("report.noProjectData", "No project data found matching criteria.") |
|||||||