@inject NavigationManager NavigationManager @using System.Text.Json @using Syncfusion.Blazor.Grids @using Syncfusion.Blazor.Cards @using Syncfusion.Blazor.Data @using FilterType = Syncfusion.Blazor.Grids.FilterType @using Syncfusion.Blazor.Navigations @inherits LayoutComponentBase @inject ScheduleOrderService ScheduleOrderService @inject IJSRuntime JSRuntime

Zamówienia DELFOR

@{ IList? scheduleOrderDetails = (@context as ScheduleOrderDto)?.ScheduleOrderDetails; @{ IList? scheduleOrderDetailsDetails = (@detail as ScheduleOrderDetailDto)?.ScheduleOrderDetailDetails; } } FA Krosno Manager © @(DateTime.Now.Year)
@code { [Parameter] public required IEnumerable GridData { get; set; } [Parameter] public required Func, Task> PassGridRef { get; set; } [Parameter] public required int PageSize { get; set; } private ScheduleOrderDto? ScheduleOrderDto { get; set; } private SfGrid? Grid { get; set; } private IEnumerable _dataSource = []; protected override void OnParametersSet() { _dataSource = GridData; } protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender && Grid != null) { await PassGridRef(Grid); } } private void OnScheduleOrderRowDoubleClick(RecordDoubleClickEventArgs obj) { int scheduleOrderId = obj.RowData.ID; NavigationManager.NavigateTo($"/ScheduleOrder/{scheduleOrderId}"); } private void OnScheduleOrderDetailRowDoubleClick(RecordDoubleClickEventArgs obj) { int? scheduleOrderId = ScheduleOrderDto?.ID; if (scheduleOrderId is not null) { NavigationManager.NavigateTo($"/ScheduleOrder/{scheduleOrderId}"); } } private void OnScheduleOrderDetailDetailRowDoubleClick(RecordDoubleClickEventArgs obj) { int? scheduleOrderId = ScheduleOrderDto?.ID; if (scheduleOrderId is not null) { NavigationManager.NavigateTo($"/ScheduleOrder/{scheduleOrderId}"); } } private async Task OnDetailsExpanding(DetailsExpandingEventArgs obj) { ScheduleOrderDto = obj.Data; if (ScheduleOrderDto != null) { ScheduleOrderDto? scheduleOrder = await ScheduleOrderService.GetScheduleOrderAsync(ScheduleOrderDto.ID); ScheduleOrderDto.ScheduleOrderDetails = scheduleOrder?.ScheduleOrderDetails ?? []; foreach (ScheduleOrderDetailDto scheduleOrderDetailDto in ScheduleOrderDto.ScheduleOrderDetails) { scheduleOrderDetailDto.OrderNumber = scheduleOrder?.PONum; scheduleOrderDetailDto.RecipientCode = scheduleOrder?.RecipientCode; scheduleOrderDetailDto.RecipientName = scheduleOrder?.RecipientName; scheduleOrderDetailDto.PurchaserName = scheduleOrder?.PurchaserCode; } } } private void OnRowDataBound(RowDataBoundEventArgs args) { if (args.Data.QtyType == "83" || args.Data.QtyType == "84") { args.Row.AddClass(["highlight-red"]); } } public async Task RestoreFilterFromLocalStorage() { var filterJson = await JSRuntime.InvokeAsync("localStorage.getItem", "gridFilter"); if (!string.IsNullOrEmpty(filterJson)) { var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; var filters = JsonSerializer.Deserialize>(filterJson, options); await Grid.ClearFilteringAsync(); if (filters != null && filters.Any()) { foreach (var filter in filters.GroupBy(x => x.Field)) { IList values = filter.Select(x => GetValueFromJsonElement((JsonElement)x.value)).ToList(); await Grid.FilterByColumnAsync(filter.Key, filter.First().Operator.ToLower(), values); } await Grid.Refresh(); } } } private object GetValueFromJsonElement(JsonElement element) { switch (element.ValueKind) { case JsonValueKind.String: return element.GetString(); case JsonValueKind.Number: if (element.TryGetInt32(out int intValue)) return intValue; if (element.TryGetDouble(out double doubleValue)) return doubleValue; break; case JsonValueKind.True: return true; case JsonValueKind.False: return false; case JsonValueKind.Null: return null; default: Console.WriteLine($"Nieobsługiwany typ JsonElement: {element.ValueKind}"); return null; } return null; } private async Task SaveFilters() { var filterSettings = Grid.FilterSettings.Columns; if (filterSettings != null && filterSettings.Any()) { string filterJson = JsonSerializer.Serialize(filterSettings); await JSRuntime.InvokeVoidAsync("localStorage.setItem", "gridFilter", filterJson); } } private async Task DeleteFilters() { await JSRuntime.InvokeVoidAsync("localStorage.removeItem", "gridFilter"); await Grid.ClearFilteringAsync(); } }