120 lines
4.3 KiB
Plaintext
120 lines
4.3 KiB
Plaintext
@page "/mrb/all"
|
|
@using System.Globalization
|
|
@inject IMRBService mrbService
|
|
@inject ISnackbar snackbar
|
|
@inject IMemoryCache cache
|
|
@inject NavigationManager navigationManager
|
|
|
|
<PageTitle>MRB</PageTitle>
|
|
|
|
<MudPaper Class="p-2 m-2">
|
|
<MudText Typo="Typo.h3" Align="Align.Center">MRB List</MudText>
|
|
</MudPaper>
|
|
|
|
@if (allMrbs is not null && allMrbs.Count() > 0) {
|
|
<MudTable Items="@allMrbs"
|
|
Class="m-2"
|
|
Striped="true"
|
|
Filter="new Func<MRB,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<MRB,object>(x=>x.MRBNumber)">
|
|
MRB#
|
|
</MudTableSortLabel>
|
|
</MudTh>
|
|
<MudTh>
|
|
<MudTableSortLabel SortBy="new Func<MRB,object>(x=>x.Title)">
|
|
Title
|
|
</MudTableSortLabel>
|
|
</MudTh>
|
|
<MudTh>
|
|
<MudTableSortLabel SortBy="new Func<MRB,object>(x=>x.OriginatorName)">
|
|
Originator
|
|
</MudTableSortLabel>
|
|
</MudTh>
|
|
<MudTh>
|
|
<MudTableSortLabel SortBy="new Func<MRB,object>(x=>x.SubmittedDate)">
|
|
Submitted Date
|
|
</MudTableSortLabel>
|
|
</MudTh>
|
|
<MudTh>
|
|
<MudTableSortLabel SortBy="new Func<MRB,object>(x=>x.ApprovalDate)">
|
|
Approval Date
|
|
</MudTableSortLabel>
|
|
</MudTh>
|
|
<MudTh>
|
|
<MudTableSortLabel SortBy="new Func<MRB,object>(x=>x.CloseDate)">
|
|
Closed Date
|
|
</MudTableSortLabel>
|
|
</MudTh>
|
|
</HeaderContent>
|
|
<RowTemplate>
|
|
<MudTd DataLabel="MRB#">
|
|
<MudLink OnClick="@(() => GoTo($"mrb/{context.MRBNumber}"))">@context.MRBNumber</MudLink>
|
|
</MudTd>
|
|
<MudTd DataLabel="Title">@context.Title</MudTd>
|
|
<MudTd DataLabel="Originator">@context.OriginatorName</MudTd>
|
|
<MudTd DataLabel="Submitted Date">@DateTimeUtilities.GetDateAsStringMinDefault(context.SubmittedDate)</MudTd>
|
|
<MudTd DataLabel="Approval Date">@DateTimeUtilities.GetDateAsStringMaxDefault(context.ApprovalDate)</MudTd>
|
|
<MudTd DataLabel="Closed Date">@DateTimeUtilities.GetDateAsStringMaxDefault(context.CloseDate)</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<MRB> allMrbs = new List<MRB>();
|
|
|
|
protected override async Task OnParametersSetAsync() {
|
|
inProcess = true;
|
|
try {
|
|
if (mrbService is null) {
|
|
throw new Exception("MRB service not injected!");
|
|
} else {
|
|
allMrbs = await mrbService.GetAllMRBs(false);
|
|
}
|
|
} catch (Exception ex) {
|
|
snackbar.Add(ex.Message, Severity.Error);
|
|
}
|
|
inProcess = false;
|
|
}
|
|
|
|
private bool FilterFuncForTable(MRB mrb) => FilterFunc(mrb, searchString);
|
|
|
|
private bool FilterFunc(MRB mrb, string searchString) {
|
|
if (string.IsNullOrWhiteSpace(searchString))
|
|
return true;
|
|
if (mrb.Title.ToLower().Contains(searchString.Trim().ToLower()))
|
|
return true;
|
|
if (mrb.OriginatorName.ToLower().Contains(searchString.Trim().ToLower()))
|
|
return true;
|
|
if (mrb.MRBNumber.ToString().Contains(searchString.Trim()))
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
private void GoTo(string page) {
|
|
cache.Set("redirectUrl", page);
|
|
navigationManager.NavigateTo(page);
|
|
}
|
|
}
|