Test Pinned via API
This commit is contained in:
		| @ -1,71 +0,0 @@ | ||||
| @page "/" | ||||
| @page "/AwaitingDisposition" | ||||
|  | ||||
| @using Microsoft.AspNetCore.Components.Web | ||||
| @using MudBlazor | ||||
|  | ||||
| @namespace OI.Metrology.ClientHub.Pages | ||||
|  | ||||
| <PageTitle>Awaiting Disposition</PageTitle> | ||||
| <h4>Awaiting Disposition</h4> | ||||
|  | ||||
| <div style="height: 450px;"> | ||||
|     <table id="grid"></table> | ||||
| </div> | ||||
|  | ||||
| <div class="row" style="margin-top: 10px; margin-bottom: 20px;"> | ||||
|     <div class="col-xs-1"> | ||||
|         <MudButton Variant="Variant.Filled" Color="Color.Info" id="OpenButton">Open</MudButton> | ||||
|     </div> | ||||
|     <div class="col-xs-1"> | ||||
|         <MudButton Variant="Variant.Filled" Color="Color.Primary" id="RefreshButton" OnClick=RefreshClick>Refresh</MudButton> | ||||
|     </div> | ||||
|     <div class="col-xs-1"> | ||||
|         <MudButton Variant="Variant.Filled" Color="Color.Default" OnClick=LoadClickAsync>View</MudButton> | ||||
|     </div> | ||||
| </div> | ||||
|  | ||||
| @if (_Records == null) | ||||
| { | ||||
|     <MudProgressCircular Color="Color.Default" Indeterminate="true" /> | ||||
| } | ||||
| else if (_Records.Any()) | ||||
| { | ||||
|     <MudTable Items="_Records" FixedHeader="true" SortLabel="Sort By" Elevation="0" Dense="true" Hover="true" Bordered="true" Striped="true" Height="400px" Filter="new Func<Metrology.Shared.DataModels.AwaitingDisposition, bool>(FilterRecords)"> | ||||
|         <ToolBarContent> | ||||
|             <MudTextField @bind-Value="@_ToolTypeFilter" Placeholder="Tool Type" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Search" IconSize="Size.Medium" Class="mt-0"></MudTextField> | ||||
|             <MudTextField @bind-Value="@_ToolFilter" Placeholder="Tool" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Search" IconSize="Size.Medium" Class="mt-0"></MudTextField> | ||||
|             <MudTextField @bind-Value="@_ReactorFilter" Placeholder="Reactor" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Search" IconSize="Size.Medium" Class="mt-0"></MudTextField> | ||||
|             <MudTextField @bind-Value="@_RdsFilter" Placeholder="RDS" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Search" IconSize="Size.Medium" Class="mt-0"></MudTextField> | ||||
|             <MudTextField @bind-Value="@_PSNFilter" Placeholder="PSN" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Search" IconSize="Size.Medium" Class="mt-0"></MudTextField> | ||||
|             <MudTextField @bind-Value="@_LayerFilter" Placeholder="Layer" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Search" IconSize="Size.Medium" Class="mt-0"></MudTextField> | ||||
|             <MudTextField @bind-Value="@_ZoneFilter" Placeholder="Zone" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Search" IconSize="Size.Medium" Class="mt-0"></MudTextField> | ||||
|         </ToolBarContent> | ||||
|         <HeaderContent> | ||||
|             <MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.ToolType)">ToolType</MudTableSortLabel></MudTh> | ||||
|             <MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.Tool)">Tool</MudTableSortLabel></MudTh> | ||||
|             <MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.Reactor)">Reactor</MudTableSortLabel></MudTh> | ||||
|             <MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.RDS)">RDS</MudTableSortLabel></MudTh> | ||||
|             <MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.PSN)">PSN</MudTableSortLabel></MudTh> | ||||
|             <MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.Layer)">Layer</MudTableSortLabel></MudTh> | ||||
|             <MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, string?>(x=>x.Zone)">Zone</MudTableSortLabel></MudTh> | ||||
|             <MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, object>(x=>x.InsertDate)">InsertDate</MudTableSortLabel></MudTh> | ||||
|             <MudTh><MudTableSortLabel SortBy="new Func<OI.Metrology.Shared.DataModels.AwaitingDisposition, object>(x=>x.Expiration)">Expiration</MudTableSortLabel></MudTh> | ||||
|         </HeaderContent> | ||||
|         <RowTemplate> | ||||
|             <MudTd DataLabel="ToolType">@context.ToolType</MudTd> | ||||
|             <MudTd DataLabel="Tool">@context.Tool</MudTd> | ||||
|             <MudTd DataLabel="Reactor">@context.Reactor</MudTd> | ||||
|             <MudTd DataLabel="RDS">@context.RDS</MudTd> | ||||
|             <MudTd DataLabel="PSN">@context.PSN</MudTd> | ||||
|             <MudTd DataLabel="Layer">@context.Layer</MudTd> | ||||
|             <MudTd DataLabel="Zone">@context.Zone</MudTd> | ||||
|             <MudTd DataLabel="InsertDate">@context.InsertDate</MudTd> | ||||
|             <MudTd DataLabel="Expiration">@context.Expiration</MudTd> | ||||
|         </RowTemplate> | ||||
|     </MudTable> | ||||
| } | ||||
|  | ||||
| <script suppress-error="BL9992"> | ||||
|     setInterval(function () { $("#RefreshButton").click(); }, 60000); | ||||
| </script> | ||||
| @ -1,82 +0,0 @@ | ||||
| using Microsoft.AspNetCore.Components; | ||||
| using Microsoft.JSInterop; | ||||
| using OI.Metrology.ClientHub.Models; | ||||
| using OI.Metrology.Shared.Models.Stateless; | ||||
|  | ||||
| namespace OI.Metrology.ClientHub.Pages; | ||||
|  | ||||
| public partial class AwaitingDisposition | ||||
| { | ||||
|  | ||||
|     [Inject] protected IJSRuntime? JSRuntime { get; set; } | ||||
|     [Inject] protected HttpClient? HttpClient { get; set; } | ||||
|     [Inject] protected AppSettings? AppSettings { get; set; } | ||||
|     [Inject] protected ILogger<AwaitingDisposition>? Logger { get; set; } | ||||
|  | ||||
|     private string? _ToolTypeFilter; | ||||
|     private string? _ToolFilter; | ||||
|     private string? _ReactorFilter; | ||||
|     private string? _RdsFilter; | ||||
|     private string? _PSNFilter; | ||||
|     private string? _LayerFilter; | ||||
|     private string? _ZoneFilter; | ||||
|     private readonly List<Metrology.Shared.DataModels.AwaitingDisposition> _Records; | ||||
|  | ||||
|     public AwaitingDisposition() => _Records = new(); | ||||
|  | ||||
|     protected override Task OnAfterRenderAsync(bool firstRender) | ||||
|     { | ||||
|         if (firstRender) | ||||
|         { | ||||
|             if (JSRuntime is null) | ||||
|                 throw new NullReferenceException(nameof(JSRuntime)); | ||||
|             if (AppSettings is null) | ||||
|                 throw new NullReferenceException(nameof(AppSettings)); | ||||
|             return JSRuntime.InvokeVoidAsync("initAwaitingDisposition", AppSettings.ApiUrl).AsTask(); | ||||
|         } | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
|     private bool FilterRecords(Metrology.Shared.DataModels.AwaitingDisposition? record) | ||||
|     { | ||||
|         bool? result = _ToolTypeFilter is not null ? record?.ToolType?.Contains(_ToolTypeFilter, StringComparison.CurrentCultureIgnoreCase) : null; | ||||
|         if (result is null || result.Value) | ||||
|             result = _ToolFilter is not null ? record?.Tool?.Contains(_ToolFilter, StringComparison.CurrentCultureIgnoreCase) : null; | ||||
|         if (result is null || result.Value) | ||||
|             result = _ReactorFilter is not null ? record?.Reactor?.Contains(_ReactorFilter, StringComparison.CurrentCultureIgnoreCase) : null; | ||||
|         if (result is null || result.Value) | ||||
|             result = _RdsFilter is not null ? record?.RDS?.Contains(_RdsFilter, StringComparison.CurrentCultureIgnoreCase) : null; | ||||
|         if (result is null || result.Value) | ||||
|             result = _PSNFilter is not null ? record?.PSN?.Contains(_PSNFilter, StringComparison.CurrentCultureIgnoreCase) : null; | ||||
|         if (result is null || result.Value) | ||||
|             result = _LayerFilter is not null ? record?.Layer?.Contains(_LayerFilter, StringComparison.CurrentCultureIgnoreCase) : null; | ||||
|         if (result is null || result.Value) | ||||
|             result = _ZoneFilter is not null ? record?.Zone?.Contains(_ZoneFilter, StringComparison.CurrentCultureIgnoreCase) : null; | ||||
|         result ??= true; | ||||
|         return result.Value; | ||||
|     } | ||||
|  | ||||
|     private void RefreshClick() => _Records.Clear(); | ||||
|  | ||||
|     private async Task LoadClickAsync() | ||||
|     { | ||||
|         if (Logger is null) | ||||
|             throw new NullReferenceException(nameof(Logger)); | ||||
|         if (HttpClient is null) | ||||
|             throw new NullReferenceException(nameof(HttpClient)); | ||||
|         _Records.Clear(); | ||||
|         string controllerName = IAwaitingDispoController<object>.GetRouteName(); | ||||
|         try | ||||
|         { | ||||
|             Metrology.Shared.DataModels.AwaitingDisposition[]? collection = await HttpClient.GetFromJsonAsync<Metrology.Shared.DataModels.AwaitingDisposition[]>($"api/{controllerName}"); | ||||
|             if (collection is not null) | ||||
|                 _Records.AddRange(collection); | ||||
|         } | ||||
|         catch (Exception) | ||||
|         { | ||||
|             string json = await HttpClient.GetStringAsync($"api/{controllerName}"); | ||||
|             Logger.LogInformation(message: json); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
| @ -1 +0,0 @@ | ||||
|  | ||||
| @ -1 +0,0 @@ | ||||
|  | ||||
| @ -1,13 +0,0 @@ | ||||
| @page "/counter" | ||||
|  | ||||
| @using Microsoft.AspNetCore.Components.Web | ||||
|  | ||||
| @namespace OI.Metrology.ClientHub.Pages | ||||
|  | ||||
| <PageTitle>Counter</PageTitle> | ||||
|  | ||||
| <h1>Counter - Bye</h1> | ||||
|  | ||||
| <p role="status">Current count: @_CurrentCount</p> | ||||
|  | ||||
| <button class="btn btn-primary" @onclick="IncrementCount">Click me</button> | ||||
| @ -1,20 +0,0 @@ | ||||
| using Microsoft.AspNetCore.Components; | ||||
|  | ||||
| namespace OI.Metrology.ClientHub.Pages; | ||||
|  | ||||
| public partial class Counter | ||||
| { | ||||
|  | ||||
|     [Inject] protected ILogger<Counter>? Logger { get; set; } | ||||
|  | ||||
|     private int _CurrentCount = 0; | ||||
|  | ||||
|     private void IncrementCount() | ||||
|     { | ||||
|         if (Logger is null) | ||||
|             throw new NullReferenceException(nameof(Logger)); | ||||
|         Logger.LogWarning("Someone has clicked me!"); | ||||
|         _CurrentCount++; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @ -1,4 +1,4 @@ | ||||
| @page | ||||
| @page | ||||
| @model OI.Metrology.ClientHub.Pages.ErrorModel | ||||
|  | ||||
| <!DOCTYPE html> | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using Microsoft.AspNetCore.Mvc.RazorPages; | ||||
| using System.Diagnostics; | ||||
|  | ||||
|  | ||||
| @ -1,42 +0,0 @@ | ||||
| @page "/Export" | ||||
|  | ||||
| @using Microsoft.AspNetCore.Components.Web | ||||
| @using MudBlazor | ||||
| @using OI.Metrology.Shared.DataModels | ||||
|  | ||||
| @namespace OI.Metrology.ClientHub.Pages | ||||
|  | ||||
| <PageTitle>Export Data</PageTitle> | ||||
|  | ||||
| <h3>Export Data</h3> | ||||
|  | ||||
| <hr /> | ||||
|  | ||||
| @if (_TimeSpan is null || _DateRange is null || _ToolTypeNameId is null || _ToolTypeNameIdCollection is null) | ||||
| { | ||||
|     <p><em>Loading...</em></p> | ||||
| } | ||||
| else | ||||
| { | ||||
|     <table id="ExportData"> | ||||
|         <tr> | ||||
|             <td> | ||||
|                 <MudSelect @bind-Value="_ToolTypeNameId" ToStringFunc="@_ConvertFunc" Label="Tool Type" Placeholder="Please Select" AdornmentColor="Color.Primary"> | ||||
|                     @foreach (ToolTypeNameId toolTypeNameId in _ToolTypeNameIdCollection) | ||||
|                     { | ||||
|                         <MudSelectItem Value="@toolTypeNameId" /> | ||||
|                     } | ||||
|                 </MudSelect> | ||||
|             </td> | ||||
|             <td> | ||||
|                 <MudDateRangePicker Label="Date Range" @bind-DateRange="_DateRange" /> | ||||
|             </td> | ||||
|             <td> | ||||
|                 <MudTimePicker Label="Start and End Time" AmPm="true" @bind-Time="_TimeSpan" /> | ||||
|             </td> | ||||
|             <td> | ||||
|                 <MudButton Variant="Variant.Filled" Color="Color.Info" OnClick="DownloadAsync">Download</MudButton> | ||||
|             </td> | ||||
|         </tr> | ||||
|     </table> | ||||
| } | ||||
| @ -1,77 +0,0 @@ | ||||
| using Microsoft.AspNetCore.Components; | ||||
| using Microsoft.JSInterop; | ||||
| using MudBlazor; | ||||
| using OI.Metrology.Shared.DataModels; | ||||
| using OI.Metrology.Shared.Models.Stateless; | ||||
| using System.Net; | ||||
|  | ||||
| namespace OI.Metrology.ClientHub.Pages; | ||||
|  | ||||
| public partial class Export | ||||
| { | ||||
|  | ||||
|     protected TimeSpan? _TimeSpan; | ||||
|     protected DateRange? _DateRange; | ||||
|     protected ToolTypeNameId? _ToolTypeNameId; | ||||
|     protected ToolTypeNameId[]? _ToolTypeNameIdCollection; | ||||
|  | ||||
|     [Inject] protected HttpClient? HttpClient { get; set; } | ||||
|     [Inject] protected IJSRuntime? JSRuntime { get; set; } | ||||
|     [Inject] protected Models.AppSettings? AppSettings { get; set; } | ||||
|     [Inject] protected ILogger<AwaitingDisposition>? Logger { get; set; } | ||||
|  | ||||
|     protected Func<ToolTypeNameId, string> _ConvertFunc = toolTypeNameId => string.Concat(toolTypeNameId?.ToolTypeName); | ||||
|  | ||||
|     protected override Task OnAfterRenderAsync(bool firstRender) | ||||
|     { | ||||
|         if (firstRender) | ||||
|         { | ||||
|             if (JSRuntime is null) | ||||
|                 throw new NullReferenceException(nameof(JSRuntime)); | ||||
|             if (AppSettings is null) | ||||
|                 throw new NullReferenceException(nameof(AppSettings)); | ||||
|             return JSRuntime.InvokeVoidAsync("initExport", AppSettings.ApiUrl, DateTime.Now.AddMonths(-1), DateTime.Now).AsTask(); | ||||
|         } | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         _ToolTypeNameId ??= new(); | ||||
|         _TimeSpan ??= new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, 00); | ||||
|         _DateRange ??= new DateRange(DateTime.Now.AddMonths(-1).Date, DateTime.Now.Date); | ||||
|         if (Logger is null) | ||||
|             throw new NullReferenceException(nameof(Logger)); | ||||
|         if (HttpClient is null) | ||||
|             throw new NullReferenceException(nameof(HttpClient)); | ||||
|         string controllerName = IToolTypesController<object>.GetRouteName(); | ||||
|         try | ||||
|         { | ||||
|             Result<ToolTypeNameId[]>? result = await HttpClient.GetFromJsonAsync<Result<ToolTypeNameId[]>>($"api/{controllerName}"); | ||||
|             if (result is not null) | ||||
|                 _ToolTypeNameIdCollection = result.Results; | ||||
|         } | ||||
|         catch (Exception) | ||||
|         { | ||||
|             string json = await HttpClient.GetStringAsync($"api/{controllerName}"); | ||||
|             Logger.LogInformation(message: json); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     protected async Task DownloadAsync() | ||||
|     { | ||||
|         if (JSRuntime is null) | ||||
|             throw new NullReferenceException(nameof(JSRuntime)); | ||||
|         if (HttpClient is null) | ||||
|             throw new NullReferenceException(nameof(HttpClient)); | ||||
|         if (_TimeSpan is null || _DateRange is null || _ToolTypeNameId is null || _ToolTypeNameIdCollection is null || _ToolTypeNameId.ToolTypeName is null || _DateRange.Start is null || _DateRange.End is null) | ||||
|             return; | ||||
|         string controllerName = IToolTypesController<object>.GetRouteName(); | ||||
|         string endTime = _DateRange.End.Value.AddTicks(_TimeSpan.Value.Ticks).ToString(); | ||||
|         string startTime = _DateRange.Start.Value.AddTicks(_TimeSpan.Value.Ticks).ToString(); | ||||
|         string fileName = $"Export_{_ToolTypeNameId.ToolTypeName}_{startTime:yyyyMMddHHmm}_to_{endTime:yyyyMMddHHmm}.csv"; | ||||
|         string query = $"datebegin={startTime:MM/dd/yyyy hh:mm tt}&dateend={endTime:MM/dd/yyyy hh:mm tt}&filename={WebUtility.UrlEncode(fileName)}"; | ||||
|         await JSRuntime.InvokeVoidAsync("triggerFileDownload", fileName, $"{HttpClient.BaseAddress}api/{controllerName}/{_ToolTypeNameId.ID}/csv?{query}"); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @ -1,4 +0,0 @@ | ||||
| td { | ||||
|   padding-bottom: 2em; | ||||
|   padding-right: 1em; | ||||
| } | ||||
| @ -1 +0,0 @@ | ||||
|  | ||||
| @ -1,41 +0,0 @@ | ||||
| @page "/fetchdata" | ||||
|  | ||||
| @using OI.Metrology.ClientHub.Data | ||||
| @using Microsoft.AspNetCore.Components.Web | ||||
|  | ||||
| @namespace OI.Metrology.ClientHub.Pages | ||||
|  | ||||
| <PageTitle>Weather forecast</PageTitle> | ||||
|  | ||||
| <h1>Weather forecast</h1> | ||||
|  | ||||
| <p>This component demonstrates fetching data from a service.</p> | ||||
|  | ||||
| @if (_WeatherForecasts is null) | ||||
| { | ||||
|     <p><em>Loading...</em></p> | ||||
| } | ||||
| else | ||||
| { | ||||
|     <table class="table"> | ||||
|         <thead> | ||||
|             <tr> | ||||
|                 <th>Date</th> | ||||
|                 <th>Temp. (C)</th> | ||||
|                 <th>Temp. (F)</th> | ||||
|                 <th>Summary</th> | ||||
|             </tr> | ||||
|         </thead> | ||||
|         <tbody> | ||||
|             @foreach (WeatherForecast weatherForecast in _WeatherForecasts) | ||||
|             { | ||||
|                 <tr> | ||||
|                     <td>@weatherForecast.Date.ToShortDateString()</td> | ||||
|                     <td>@weatherForecast.TemperatureC</td> | ||||
|                     <td>@weatherForecast.TemperatureF</td> | ||||
|                     <td>@weatherForecast.Summary</td> | ||||
|                 </tr> | ||||
|             } | ||||
|         </tbody> | ||||
|     </table> | ||||
| } | ||||
| @ -1,17 +0,0 @@ | ||||
| using Microsoft.AspNetCore.Components; | ||||
| using OI.Metrology.ClientHub.Data; | ||||
|  | ||||
| namespace OI.Metrology.ClientHub.Pages; | ||||
|  | ||||
| public partial class FetchData | ||||
| { | ||||
|     private WeatherForecast[]? _WeatherForecasts; | ||||
|     [Inject] protected WeatherForecastService? ForecastService { get; set; } | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         if (ForecastService is null) | ||||
|             throw new NullReferenceException(nameof(ForecastService)); | ||||
|         _WeatherForecasts = await ForecastService.GetForecastAsync(DateOnly.FromDateTime(DateTime.Now)); | ||||
|     } | ||||
| } | ||||
| @ -1,7 +0,0 @@ | ||||
| @page "/fetchServiceShoporders" | ||||
|  | ||||
| @using Microsoft.AspNetCore.Components.Web | ||||
|  | ||||
| @namespace OI.Metrology.ClientHub.Pages | ||||
|  | ||||
| <PageTitle>Service-Shop Orders</PageTitle> | ||||
| @ -1,4 +0,0 @@ | ||||
| namespace OI.Metrology.ClientHub.Pages; | ||||
|  | ||||
| public partial class FetchServiceShopOrders | ||||
| { } | ||||
| @ -1,7 +0,0 @@ | ||||
| @page "/Index" | ||||
|  | ||||
| @using Microsoft.AspNetCore.Components.Web | ||||
|  | ||||
| @namespace OI.Metrology.ClientHub.Pages | ||||
|  | ||||
| <PageTitle>Index</PageTitle> | ||||
| @ -1,4 +0,0 @@ | ||||
| namespace OI.Metrology.ClientHub.Pages; | ||||
|  | ||||
| public partial class Index | ||||
| { } | ||||
| @ -1,41 +0,0 @@ | ||||
| @page "/RunHeaders" | ||||
|  | ||||
| @using Microsoft.AspNetCore.Components.Web | ||||
| @using MudBlazor | ||||
|  | ||||
| @namespace OI.Metrology.ClientHub.Pages | ||||
|  | ||||
| <PageTitle>Run Headers</PageTitle> | ||||
|  | ||||
| <h4>Run Headers</h4> | ||||
|  | ||||
| <table> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <label for="ToolType">Tool Type:</label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <div id="ToolType"></div> | ||||
|         </td> | ||||
|     </tr> | ||||
| </table> | ||||
|  | ||||
| <table width="100%" height="80%" style="min-height:480px;"> | ||||
|     <tr> | ||||
|         <td width="50%"> | ||||
|             <table id="HeaderGrid"></table> | ||||
|         </td> | ||||
|         <td width="50%"> | ||||
|             <table id="FieldsGrid"></table> | ||||
|         </td> | ||||
|     </tr> | ||||
| </table> | ||||
|  | ||||
| <div class="row" style="margin-top: 10px; margin-bottom: 20px;"> | ||||
|     <div class="col-xs-1"> | ||||
|         <MudButton Variant="Variant.Filled" Color="Color.Info" id="OpenButton">Open</MudButton> | ||||
|     </div> | ||||
|     <div class="col-xs-1"> | ||||
|         <MudButton Variant="Variant.Filled" Color="Color.Primary" id="RefreshButton">Refresh</MudButton> | ||||
|     </div> | ||||
| </div> | ||||
| @ -1,25 +0,0 @@ | ||||
| using Microsoft.AspNetCore.Components; | ||||
| using Microsoft.JSInterop; | ||||
|  | ||||
| namespace OI.Metrology.ClientHub.Pages; | ||||
|  | ||||
| public partial class RunHeaders | ||||
| { | ||||
|  | ||||
|     [Inject] protected IJSRuntime? JSRuntime { get; set; } | ||||
|     [Inject] protected Models.AppSettings? AppSettings { get; set; } | ||||
|  | ||||
|     protected override Task OnAfterRenderAsync(bool firstRender) | ||||
|     { | ||||
|         if (firstRender) | ||||
|         { | ||||
|             if (JSRuntime is null) | ||||
|                 throw new NullReferenceException(nameof(JSRuntime)); | ||||
|             if (AppSettings is null) | ||||
|                 throw new NullReferenceException(nameof(AppSettings)); | ||||
|             return JSRuntime.InvokeVoidAsync("initRunHeaders", AppSettings.ApiUrl).AsTask(); | ||||
|         } | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @ -1,17 +0,0 @@ | ||||
| html, | ||||
| body { | ||||
|   height: 100%; | ||||
| } | ||||
|  | ||||
| div.container-fluid { | ||||
|   height: 90%; | ||||
| } | ||||
|  | ||||
| #HeaderGrid, | ||||
| #FieldsGrid { | ||||
|   font-size: 12px; | ||||
| } | ||||
|  | ||||
| .FieldTitle { | ||||
|   font-weight: bold; | ||||
| } | ||||
| @ -1 +0,0 @@ | ||||
|  | ||||
| @ -1,70 +0,0 @@ | ||||
| @page "/RunInfo/{ToolTypeId:int?}/{HeaderId:int?}" | ||||
|  | ||||
| @using Microsoft.AspNetCore.Components.Web | ||||
| @using MudBlazor | ||||
|  | ||||
| @namespace OI.Metrology.ClientHub.Pages | ||||
|  | ||||
| <PageTitle>Run Info</PageTitle> | ||||
|  | ||||
| <h4>Run Information</h4> | ||||
|  | ||||
| <form class="form-inline mb-4"> | ||||
|     <div class="form-group"> | ||||
|         <label for="ToolType">Tool Type</label> | ||||
|         <div class="form-control" id="ToolType"></div> | ||||
|     </div> | ||||
|     <div class="form-group"> | ||||
|         <label for="StartDate">Start Time</label> | ||||
|         <div class="form-control mb-2 mr-sm-2" id="StartDate"></div> | ||||
|         <div class="form-control mb-2 mr-sm-2" id="StartTime"></div> | ||||
|     </div> | ||||
|     <div class="form-group"> | ||||
|         <label for="EndDate">End Time</label> | ||||
|         <div class="form-control mb-2 mr-sm-2" id="EndDate"></div> | ||||
|         <div class="form-control mb-2 mr-sm-2" id="EndTime"></div> | ||||
|     </div>   | ||||
|     <div class="form-group"> | ||||
|         <MudButton Variant="Variant.Filled" Color="Color.Info" id="LoadHeadersButton">Load Headers</MudButton> | ||||
|     </div>   | ||||
|     <div class="form-group"> | ||||
|         <label class="form-check-label" for="chkAutoRefresh"> | ||||
|             Auto-Refresh | ||||
|         </label> | ||||
|         <input class="form-check-input" type="checkbox" id="chkAutoRefresh"> | ||||
|     </div> | ||||
| </form> | ||||
|  | ||||
| <div style="height: 300px;" id="HeaderGridDiv"> | ||||
|     <span id="ToolTypeID" hidden></span> | ||||
|     <table id="HeaderGrid"></table> | ||||
| </div> | ||||
|  | ||||
| <div class="row" style="margin-top: 10px; margin-bottom: 20px;"> | ||||
|     <div class="col-xs-1"> | ||||
|         <MudButton Variant="Variant.Filled" Color="Color.Info" id="GetDataButton" Disabled="true">Get Data</MudButton> | ||||
|     </div> | ||||
|     <div class="col-xs-1"> | ||||
|         <MudButton Variant="Variant.Filled" Color="Color.Secondary" id="ReviewButton" Disabled="true">Review</MudButton> | ||||
|     </div> | ||||
| </div> | ||||
|  | ||||
| <div id="DetailsDiv" hidden> | ||||
|  | ||||
|     <span id="HeaderId" hidden></span> | ||||
|     <span id="HeaderAttachmentId" hidden></span> | ||||
|     <div style="padding-bottom: 20px;" id="DetailsGridDiv"> | ||||
|         <table id="DetailsGrid"></table> | ||||
|     </div> | ||||
|  | ||||
|     <div id="ExportDiv" style="margin-top: 10px;" hidden> | ||||
|         <MudButton Variant="Variant.Filled" Color="Color.Warning" id="OIExportButton">Send to OpenInsight</MudButton> | ||||
|         <span id="OIExportResult" style="margin-left: 10px; font-weight: bold; color: #366b02;"></span> | ||||
|     </div> | ||||
|  | ||||
|     <p style="text-align: center; margin-top: 20px;"> | ||||
|         <iframe id="DataAttachmentFrame" style="height:900px; border-width:thin; margin-right: 10px;" hidden></iframe> | ||||
|         <iframe id="HeaderAttachmentFrame" style="height:900px; border-width:thin;" hidden></iframe> | ||||
|     </p> | ||||
|  | ||||
| </div> | ||||
| @ -1,32 +0,0 @@ | ||||
| using Microsoft.AspNetCore.Components; | ||||
| using Microsoft.JSInterop; | ||||
|  | ||||
| namespace OI.Metrology.ClientHub.Pages; | ||||
|  | ||||
| public partial class RunInfo | ||||
| { | ||||
|  | ||||
|     [Parameter] public int? HeaderId { get; set; } | ||||
|     [Parameter] public int? ToolTypeId { get; set; } | ||||
|  | ||||
|     [Inject] protected IJSRuntime? JSRuntime { get; set; } | ||||
|     [Inject] protected Models.AppSettings? AppSettings { get; set; } | ||||
|  | ||||
|     protected override Task OnAfterRenderAsync(bool firstRender) | ||||
|     { | ||||
|         if (firstRender) | ||||
|         { | ||||
|             if (JSRuntime is null) | ||||
|                 throw new NullReferenceException(nameof(JSRuntime)); | ||||
|             if (AppSettings is null) | ||||
|                 throw new NullReferenceException(nameof(AppSettings)); | ||||
|             Metrology.Shared.ViewModels.RunInfo? model = null; | ||||
|             int initialHeaderId = model is not null ? model.HeaderID : HeaderId is not null ? HeaderId.Value : 0; | ||||
|             string initialHeaderAttachmentId = model is not null ? model.HeaderAttachmentID.ToString() : string.Empty; | ||||
|             int initialToolTypeID = model is not null ? model.ToolTypeID : ToolTypeId is not null ? ToolTypeId.Value : 1; | ||||
|             return JSRuntime.InvokeVoidAsync("initRunInfo", AppSettings.ApiUrl, initialToolTypeID, initialHeaderId, initialHeaderAttachmentId).AsTask(); | ||||
|         } | ||||
|         return Task.CompletedTask; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @ -1,8 +0,0 @@ | ||||
| #HeaderGridDiv, | ||||
| #DetailsGridDiv { | ||||
|   font-size: 12px; | ||||
| } | ||||
| p {  | ||||
|   color: red; | ||||
|   background-color: aqua; | ||||
| } | ||||
| @ -1 +0,0 @@ | ||||
|  | ||||
| @ -25,6 +25,7 @@ | ||||
|     <link rel="apple-touch-icon" sizes="512x512" href="icon-512.png" /> | ||||
|     <link rel="apple-touch-icon" sizes="192x192" href="icon-192.png" /> | ||||
|     <link href="_content/MudBlazor/MudBlazor.min.css" rel="stylesheet" /> | ||||
|     <link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" /> | ||||
|  | ||||
|     <component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" /> | ||||
|  | ||||
| @ -47,7 +48,7 @@ | ||||
| </head> | ||||
|  | ||||
| <body> | ||||
|     <component type="typeof(App)" render-mode="ServerPrerendered" /> | ||||
|     <component type="typeof(View.App)" render-mode="ServerPrerendered" /> | ||||
|  | ||||
|     <div id="blazor-error-ui"> | ||||
|         <environment include="Staging,Production"> | ||||
| @ -62,6 +63,7 @@ | ||||
|  | ||||
|     <script src="_framework/blazor.server.js"></script> | ||||
|     <script src="_content/MudBlazor/MudBlazor.min.js"></script> | ||||
|     <script src="_content/IgniteUI.Blazor/app.bundle.js"></script> | ||||
|     <script src="js/bootstrap.min.js" type="text/javascript" asp-append-version="true"></script> | ||||
|     <script src="js/respond.min.js" type="text/javascript" asp-append-version="true"></script> | ||||
| </body> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user