127 lines
4.6 KiB
Plaintext
127 lines
4.6 KiB
Plaintext
@page "/pcrb/all"
|
|
@using System.Globalization
|
|
@inject IPCRBService pcrbService
|
|
@inject ISnackbar snackbar
|
|
@inject IMemoryCache cache
|
|
@inject NavigationManager navigationManager
|
|
|
|
<PageTitle>PCRB</PageTitle>
|
|
|
|
<MudPaper Class="p-2 m-2">
|
|
<MudText Typo="Typo.h3" Align="Align.Center">PCRB List</MudText>
|
|
</MudPaper>
|
|
|
|
@if (allPCRBs is not null && allPCRBs.Count() > 0) {
|
|
<MudTable Items="@allPCRBs"
|
|
Class="m-2"
|
|
Striped="true"
|
|
Filter="new Func<PCRB,bool>(FilterFuncForTable)"
|
|
SortLabel="Sort By"
|
|
Hover="true">
|
|
<ToolBarContent>
|
|
<MudSpacer />
|
|
<MudTextField @bind-Value="searchString"
|
|
Placeholder="Search"
|
|
Adornment="Adornment.Start"
|
|
AdornmentIcon="@Icons.Material.Filled.Search"
|
|
IconSize="Size.Medium"
|
|
Class="mt-0" />
|
|
</ToolBarContent>
|
|
<HeaderContent>
|
|
<MudTh>
|
|
<MudTableSortLabel InitialDirection="SortDirection.Descending" SortBy="new Func<PCRB,object>(x=>x.PlanNumber)">
|
|
Change#
|
|
</MudTableSortLabel>
|
|
</MudTh>
|
|
<MudTh>
|
|
<MudTableSortLabel SortBy="new Func<PCRB,object>(x=>x.Title)">
|
|
Title
|
|
</MudTableSortLabel>
|
|
</MudTh>
|
|
<MudTh>
|
|
<MudTableSortLabel SortBy="new Func<PCRB,object>(x=>x.OwnerName)">
|
|
Owner
|
|
</MudTableSortLabel>
|
|
</MudTh>
|
|
<MudTh>Stage</MudTh>
|
|
<MudTh>
|
|
<MudTableSortLabel SortBy="new Func<PCRB,object>(x=>x.InsertTimeStamp)">
|
|
Submitted Date
|
|
</MudTableSortLabel>
|
|
</MudTh>
|
|
<MudTh>
|
|
<MudTableSortLabel SortBy="new Func<PCRB,object>(x=>x.LastUpdateDate)">
|
|
Last Updated
|
|
</MudTableSortLabel>
|
|
</MudTh>
|
|
<MudTh>
|
|
<MudTableSortLabel SortBy="new Func<PCRB,object>(x=>x.ClosedDate)">
|
|
Closed Date
|
|
</MudTableSortLabel>
|
|
</MudTh>
|
|
</HeaderContent>
|
|
<RowTemplate>
|
|
<MudTd DataLabel="Plan#">
|
|
<MudLink OnClick="@(() => GoTo($"pcrb/{context.PlanNumber.ToString()}"))">@context.PlanNumber</MudLink>
|
|
</MudTd>
|
|
<MudTd DataLabel="Title">@context.Title</MudTd>
|
|
<MudTd DataLabel="Owner">@context.OwnerName</MudTd>
|
|
<MudTd DataLabel="Stage">@(GetStageName(context.CurrentStep))</MudTd>
|
|
<MudTd DataLabel="Submitted Date">@DateTimeUtilities.GetDateAsStringMinDefault(context.InsertTimeStamp)</MudTd>
|
|
<MudTd DataLabel="Last Updated">@DateTimeUtilities.GetDateAsStringMinDefault(context.LastUpdateDate)</MudTd>
|
|
<MudTd DataLabel="Closed Date">@DateTimeUtilities.GetDateAsStringMaxDefault(context.ClosedDate)</MudTd>
|
|
</RowTemplate>
|
|
<PagerContent>
|
|
<MudTablePager />
|
|
</PagerContent>
|
|
</MudTable>
|
|
}
|
|
|
|
<MudOverlay @bind-Visible=inProcess DarkBackground="true" AutoClose="false">
|
|
<MudProgressCircular Color="Color.Info" Size="Size.Large" Indeterminate="true" />
|
|
</MudOverlay>
|
|
|
|
@code {
|
|
private bool inProcess = false;
|
|
private string searchString = "";
|
|
private IEnumerable<PCRB> allPCRBs = new List<PCRB>();
|
|
|
|
protected override async Task OnParametersSetAsync() {
|
|
inProcess = true;
|
|
try {
|
|
if (pcrbService is null) {
|
|
throw new Exception("PCRB service not injected!");
|
|
} else {
|
|
allPCRBs = await pcrbService.GetAllPCRBs(false);
|
|
}
|
|
} catch (Exception ex) {
|
|
snackbar.Add(ex.Message, Severity.Error);
|
|
}
|
|
inProcess = false;
|
|
}
|
|
|
|
private bool FilterFuncForTable(PCRB pcrb) => FilterFunc(pcrb, searchString);
|
|
|
|
private bool FilterFunc(PCRB pcrb, string searchString) {
|
|
if (string.IsNullOrWhiteSpace(searchString))
|
|
return true;
|
|
if (pcrb.Title.ToLower().Contains(searchString.Trim().ToLower()))
|
|
return true;
|
|
if (pcrb.OwnerName.ToLower().Contains(searchString.Trim().ToLower()))
|
|
return true;
|
|
if (pcrb.PlanNumber.ToString().Contains(searchString.Trim()))
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
private void GoTo(string page) {
|
|
cache.Set("redirectUrl", page);
|
|
navigationManager.NavigateTo(page);
|
|
}
|
|
|
|
private string GetStageName(int step) {
|
|
if (step >= PCRB.Stages.Length || step < 0) return "";
|
|
return PCRB.Stages[step];
|
|
}
|
|
}
|