@page "/"
@attribute [Authorize]
@using RobotNet.Script.Shares.Dashboard
@using RobotNet.WebApp.Clients
@using RobotNet.WebApp.Dashboard.Components
@inject IJSRuntime JSRuntime
@inject NavigationManager Nav
@inject DashboardHubClient DashboardHub
@inject ISnackbar Snackbar
Dashboard
@code {
private bool isFullScreen = false;
private DailyData DailyDataRef = default!;
private PerformancePieChart TodayPerformancePieChartRef = default!;
private PerformancePieChart WeekyPerformancePieChartRef = default!;
private MissionsPerformanceBarChart MissionsPerformanceBarChartRef = default!;
private TaktTimeLineChart TaktTimeLineChartRef = default!;
private string timeUpdate = "";
private async Task ToogleFullScreen()
{
await JSRuntime.InvokeVoidAsync("setFullscreen", isFullScreen ? false : true);
isFullScreen = isFullScreen ? false : true;
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (!firstRender) return;
DashboardHub.DashboardDataUpdated += (async (value) => await DashboardHub_DashboardDataUpdated(value));
await DashboardHub.StartAsync();
await GetDashboardData();
}
private async Task GetDashboardData()
{
var dashboardData = await DashboardHub.GetDashboardData();
if (dashboardData.IsSuccess && dashboardData.Data is not null)
{
timeUpdate = dashboardData.Data.TimeUpdate;
DailyDataRef.UpdateData(dashboardData.Data.DailyMission);
await TodayPerformancePieChartRef.UpdateData(dashboardData.Data.TodayPerformance);
await WeekyPerformancePieChartRef.UpdateData(dashboardData.Data.ThisWeekPerformance);
await MissionsPerformanceBarChartRef.UpdateData(dashboardData.Data.TotalMissionPerformance);
await TaktTimeLineChartRef.UpdateData(dashboardData.Data.TaktTimeMissions);
}
else Snackbar.Add($"{(string.IsNullOrEmpty(dashboardData.Message) ? "Có lỗi xảy ra khi lấy dữ liệu dashboard" : dashboardData.Message)}");
StateHasChanged();
}
private async Task DashboardHub_DashboardDataUpdated(DashboardDto data)
{
timeUpdate = data.TimeUpdate;
DailyDataRef.UpdateData(data.DailyMission);
await TodayPerformancePieChartRef.UpdateData(data.TodayPerformance);
await WeekyPerformancePieChartRef.UpdateData(data.ThisWeekPerformance);
await MissionsPerformanceBarChartRef.UpdateData(data.TotalMissionPerformance);
await TaktTimeLineChartRef.UpdateData(data.TaktTimeMissions);
StateHasChanged();
}
}