improvements, fixes, etc...

This commit is contained in:
Loretta 2025-11-04 15:31:42 +01:00
parent 4c5b31f123
commit 955d7ec963
14 changed files with 262 additions and 97 deletions

View File

@ -35,8 +35,6 @@ public static class FruitBankConstClient
public const string ShippingDocumentDbTableName = "fbShippingDocument";
public const string ShippingDocumentToFilesDbTableName = "fbShippingDocumentToFiles";
//public static Guid[] DevAdminIds = new Guid[2] { Guid.Parse("dcf451d2-cc4c-4ac2-8c1f-da00041be1fd"), Guid.Parse("4cbaed43-2465-4d99-84f1-c8bc6b7025f7") };
//public static Guid[] SysAdmins = new Guid[3]
//{

View File

@ -27,6 +27,7 @@ public interface IFruitBankDataControllerCommon
#region ShippingItem
public Task<List<ShippingItem>?> GetShippingItems();
public Task<ShippingItem?> GetShippingItemById(int id);
public Task<ShippingItem?> AddShippingItem(ShippingItem shippingItem);
public Task<ShippingItem?> UpdateShippingItem(ShippingItem shippingItem);
public Task<ShippingItem?> UpdateMeasuredShippingItem(ShippingItem shippingItem);
#endregion ShippingItem
@ -41,6 +42,7 @@ public interface IFruitBankDataControllerCommon
#region ShippingDocument
public Task<List<ShippingDocument>?> GetShippingDocuments();
public Task<ShippingDocument?> GetShippingDocumentById(int id);
public Task<ShippingDocument?> AddShippingDocument(ShippingDocument shippingDocument);
public Task<ShippingDocument?> UpdateShippingDocument(ShippingDocument shippingDocument);
#endregion ShippingDocument
@ -57,4 +59,5 @@ public interface IFruitBankDataControllerCommon
#endregion Product
Task<MgLoginModelResponse?> LoginMeasuringUser(MgLoginModelRequest loginModelRequest);
Task<List<Partner>?> ProcessAndSaveFullShippingJson(string fullShippingJson, int customerId);
}

View File

@ -20,6 +20,7 @@ public class SignalRTags : AcSignalRTags
public const int GetShippingById = 42;
public const int AddShipping = 45;
public const int UpdateShipping = 46;
public const int ProcessAndSaveFullShippingJson = 48;
public const int GetShippingItems = 50;
public const int GetShippingItemById = 51;

View File

@ -14,13 +14,13 @@
<DxGridDataColumn FieldName="OrderTotal" />
<DxGridDataColumn FieldName="OrderStatus" />
<DxGridDataColumn FieldName="IsMeasured" />
<DxGridDataColumn FieldName="IsMeasurable" />
<DxGridDataColumn FieldName="IsMeasured" ReadOnly="true" />
<DxGridDataColumn FieldName="IsMeasurable" ReadOnly="true" />
<DxGridDataColumn FieldName="RevisorId" />
<DxGridDataColumn FieldName="MeasurementOwnerId" />
<DxGridDataColumn FieldName="RevisorId" ReadOnly="true" />
<DxGridDataColumn FieldName="MeasurementOwnerId" ReadOnly="true" />
<DxGridDataColumn FieldName="DateOfReceipt" />
<DxGridDataColumn FieldName="CreatedOnUtc" />
<DxGridDataColumn FieldName="CreatedOnUtc" ReadOnly="true" />
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
</Columns>
<DetailRowTemplate>

View File

@ -20,6 +20,9 @@
<DxComboBoxSettings Data="ProductDtos"
ValueFieldName="Id"
TextFieldName="Name"
DropDownBodyCssClass="dd-body-class"
ListRenderMode="ListRenderMode.Entire"
SearchMode="ListSearchMode.AutoSearch"
SearchFilterCondition="ListSearchFilterCondition.Contains"
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" />
</EditSettings>
@ -32,9 +35,9 @@
<DxGridDataColumn FieldName="Quantity" />
<DxGridDataColumn FieldName="NetWeight" />
<DxGridDataColumn FieldName="IsMeasurable" />
<DxGridDataColumn FieldName="IsMeasured" />
<DxGridDataColumn FieldName="IsAudited" />
<DxGridDataColumn FieldName="IsMeasurable" ReadOnly="true" />
<DxGridDataColumn FieldName="IsMeasured" ReadOnly="true" />
<DxGridDataColumn FieldName="IsAudited" ReadOnly="true" />
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
</Columns>
<DetailRowTemplate>

View File

@ -23,8 +23,8 @@
<DxGridDataColumn FieldName="GrossWeight" />
<DxGridDataColumn FieldName="NetWeight" />
<DxGridDataColumn FieldName="IsMeasured" />
<DxGridDataColumn FieldName="IsAudited" />
<DxGridDataColumn FieldName="IsMeasured" ReadOnly="true" />
<DxGridDataColumn FieldName="IsAudited" ReadOnly="true" />
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
</Columns>
<GroupSummary>

View File

@ -6,19 +6,15 @@
@inject FruitBankSignalRClient FruitBankSignalRClient
<GridProductDto Data="ProductDtos" IsMasterGrid="IsMasterGrid"
PageSize="@(IsMasterGrid ? 15 : 50)" ShowFilterRow="IsMasterGrid" ShowGroupPanel="IsMasterGrid"
ColumnResizeMode="GridColumnResizeMode.NextColumn" TextWrapEnabled="false"
FilterMenuButtonDisplayMode="@(IsMasterGrid ? GridFilterMenuButtonDisplayMode.Never : GridFilterMenuButtonDisplayMode.Always)"
FocusedRowChanged="OnFocusedRowChanged" FocusedRowEnabled="true">
<GridProductDto Data="ProductDtos" IsMasterGrid="IsMasterGrid" FocusedRowChanged="OnFocusedRowChanged">
<Columns>
<DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Ascending" />
<DxGridDataColumn FieldName="Name" />
<DxGridDataColumn FieldName="Price" />
<DxGridDataColumn FieldName="AvailableQuantity" />
<DxGridDataColumn FieldName="AvailableQuantity" ReadOnly="true" />
<DxGridDataColumn FieldName="StockQuantity" />
<DxGridDataColumn FieldName="IncomingQuantity" />
<DxGridDataColumn FieldName="NetWeight" />
<DxGridDataColumn FieldName="IncomingQuantity" ReadOnly="true" />
<DxGridDataColumn FieldName="NetWeight" ReadOnly="true" />
<DxGridDataColumn FieldName="IsMeasurable" />
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
</Columns>

View File

@ -4,7 +4,7 @@
@inject FruitBankSignalRClient FruitBankSignalRClient
<MgGridBase @ref="Grid" Data="Shippings" IsMasterGrid="IsMasterGrid"
<MgGridBase @ref="Grid" Data="Shippings" IsMasterGrid="IsMasterGrid"
EditOnKeyPress="true"
ValidationEnabled="false"
EditModelSaving="Grid_EditModelSaving">
@ -14,9 +14,9 @@
<DxGridDataColumn FieldName="ShippingDate" />
<DxGridDataColumn FieldName="LicencePlate" />
<DxGridDataColumn FieldName="IsAllMeasured" />
<DxGridDataColumn FieldName="Created" />
<DxGridDataColumn FieldName="Modified" />
<DxGridDataColumn FieldName="IsAllMeasured" ReadOnly="true" />
<DxGridDataColumn FieldName="Created" ReadOnly="true" />
<DxGridDataColumn FieldName="Modified" ReadOnly="true" />
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
</Columns>
<DetailRowTemplate>

View File

@ -5,20 +5,24 @@
@using FruitBankHybrid.Shared.Services.SignalRs
@using System.Text
@using AyCode.Core.Extensions
@using FruitBank.Common.Models
@inject FruitBankSignalRClient FruitBankSignalRClient
<MgGridBase @ref="Grid" Data="ShippingDocuments" IsMasterGrid="IsMasterGrid"
EditOnKeyPress="true"
ValidationEnabled="false"
EditModelSaving="Grid_EditModelSaving">
<MgGridBase @ref="Grid" CssClass="@GridCss" Data="@ShippingDocuments" IsMasterGrid="@IsMasterGrid"
ValidationEnabled="false" EditMode="GridEditMode.EditRow"
EditModelSaving="Grid_EditModelSaving"
FocusedRowChanged="Grid_FocusedRowChanged">
<Columns>
<DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Descending" />
<DxGridDataColumn FieldName="PartnerId" Caption="Partner">
<EditSettings>
<DxComboBoxSettings Data="ProductDtos"
<DxComboBoxSettings Data="Partners"
ValueFieldName="Id"
TextFieldName="Name"
DropDownBodyCssClass="dd-body-class"
ListRenderMode="ListRenderMode.Entire"
SearchMode="ListSearchMode.AutoSearch"
SearchFilterCondition="ListSearchFilterCondition.Contains"
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" />
</EditSettings>
@ -28,6 +32,9 @@
<DxComboBoxSettings Data="Shippings"
ValueFieldName="Id"
TextFieldName="ShippingDate"
DropDownBodyCssClass="dd-body-class"
ListRenderMode="ListRenderMode.Entire"
SearchMode="ListSearchMode.AutoSearch"
SearchFilterCondition="ListSearchFilterCondition.Contains"
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" />
</EditSettings>
@ -38,10 +45,10 @@
<DxGridDataColumn FieldName="Country" />
<DxGridDataColumn FieldName="TotalPallets" />
<DxGridDataColumn FieldName="IsAllMeasured" />
<DxGridDataColumn FieldName="IsAllMeasured" ReadOnly="true"/>
<DxGridDataColumn FieldName="Comment" />
<DxGridDataColumn FieldName="Created" />
<DxGridDataColumn FieldName="Modified" />
<DxGridDataColumn FieldName="Created"ReadOnly="true" />
<DxGridDataColumn FieldName="Modified" ReadOnly="true"/>
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
</Columns>
<DetailRowTemplate>
@ -64,39 +71,42 @@
}
</DetailRowTemplate>
<ToolbarTemplate>
<DxToolbar ItemRenderStyleMode="ToolbarRenderStyleMode.Plain">
<DxToolbarItem Text="New" Click="NewItem_Click" IconCssClass="grid-toolbar-new" />
<DxToolbarItem Text="Edit" Click="EditItem_Click" IconCssClass="grid-toolbar-edit" Enabled="EditItemsEnabled" />
<DxToolbarItem Text="Delete" Click="DeleteItem_Click" IconCssClass="grid-toolbar-delete" Enabled="EditItemsEnabled" />
<DxToolbarItem Text="Column Chooser" BeginGroup="true" Click="ColumnChooserItem_Click" IconCssClass="grid-toolbar-column-chooser" />
<DxToolbarItem Text="Export" IconCssClass="grid-toolbar-export">
<Items>
<DxToolbarItem Text="To CSV" Click="ExportCsvItem_Click" />
<DxToolbarItem Text="To XLSX" Click="ExportXlsxItem_Click" />
<DxToolbarItem Text="To XLS" Click="ExportXlsItem_Click" />
<DxToolbarItem Text="To PDF" Click="ExportPdfItem_Click" />
</Items>
</DxToolbarItem>
<DxToolbarItem BeginGroup="true">
<Template Context="ctxToolbarItemFileUpload">
@* <DxUpload Name="myFile"
@if (IsMasterGrid)
{
<DxToolbar ItemRenderStyleMode="ToolbarRenderStyleMode.Plain">
<DxToolbarItem Text="New" Click="NewItem_Click" IconCssClass="grid-toolbar-new" />
<DxToolbarItem Text="Edit" Click="EditItem_Click" IconCssClass="grid-toolbar-edit" Enabled="EditItemsEnabled" />
<DxToolbarItem Text="Delete" Click="DeleteItem_Click" IconCssClass="grid-toolbar-delete" Enabled="EditItemsEnabled" />
<DxToolbarItem Text="Column Chooser" BeginGroup="true" Click="ColumnChooserItem_Click" IconCssClass="grid-toolbar-column-chooser" />
<DxToolbarItem Text="Export" IconCssClass="grid-toolbar-export">
<Items>
<DxToolbarItem Text="To CSV" Click="ExportCsvItem_Click" />
<DxToolbarItem Text="To XLSX" Click="ExportXlsxItem_Click" />
<DxToolbarItem Text="To XLS" Click="ExportXlsItem_Click" />
<DxToolbarItem Text="To PDF" Click="ExportPdfItem_Click" />
</Items>
</DxToolbarItem>
<DxToolbarItem BeginGroup="true">
<Template Context="ctxToolbarItemFileUpload">
@* <DxUpload Name="myFile"
UploadMode="@UploadMode.Instant"
AllowMultiFileUpload="false"
ShowSelectButton="true"
MaxFileSize="15000000">
</DxUpload> *@
<FileUpload OnFileUploaded="OnFileUploaded"></FileUpload>
</Template>
</DxToolbarItem>
@* <DxToolbarItem BeginGroup="true">
<FileUpload OnFileUploaded="OnFileUploaded"></FileUpload>
</Template>
</DxToolbarItem>
@* <DxToolbarItem BeginGroup="true">
<Template Context="toolbar_item_context">
<DxSearchBox @bind-Text="GridSearchText"
BindValueMode="BindValueMode.OnInput"
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto"
aria-label="Search" />
</Template>
</DxToolbarItem>
*@ </DxToolbar>
</DxToolbarItem>*@
</DxToolbar>
}
</ToolbarTemplate>
<GroupSummary>
<DxGridSummaryItem SummaryType="GridSummaryItemType.Sum"
@ -113,16 +123,21 @@
@code {
[Inject] public required DatabaseClient Database { get; set; }
[Inject] public required LoggedInModel LoggedInModel { get; set; }
[Parameter] public bool IsMasterGrid { get; set; } = false;
[Parameter] public List<Shipping>? Shippings { get; set; }
[Parameter] public IEnumerable<ProductDto>? ProductDtos { get; set; }
[Parameter] public IEnumerable<Partner>? Partners { get; set; }
[Parameter] public List<ShippingDocument>? ShippingDocuments { get; set; }
[Parameter] public Func<List<Partner>?, Task>? OnUploadedFileParsed { get; set; }
string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty;
const string ExportFileName = "ExportResult";
string _localStorageKey = "GridShippingDocument_";
string GridSearchText = "";
bool EditItemsEnabled { get; set; } = true;
int FocusedRowVisibleIndex { get; set; }
@ -131,8 +146,10 @@
private int _activeTabIndex;
protected override async Task OnInitializedAsync()
{
ProductDtos ??= await Database.ProductDtoTable.LoadDataAsync(true);
_localStorageKey += LoggedInModel.CustomerDto!.Id;
//ProductDtos ??= await Database.ProductDtoTable.LoadDataAsync(true);
Partners ??= await FruitBankSignalRClient.GetPartners() ?? [];
Shippings ??= await FruitBankSignalRClient.GetShippings() ?? [];
//ProductDtos ??= await FruitBankSignalRClient.GetProductDtos() ?? [];
ShippingDocuments ??= await FruitBankSignalRClient.GetShippingDocuments() ?? [];
@ -142,28 +159,33 @@
private async Task OnFileUploaded(byte[] arg)
{
string utfString = Encoding.UTF8.GetString(arg, 0, arg.Length);
var utfString = Encoding.UTF8.GetString(arg, 0, arg.Length);
var result = await FruitBankSignalRClient.ProcessAndSaveFullShippingJson(utfString, LoggedInModel.CustomerDto!.Id);
var partners = utfString.JsonTo<List<Partner>>();
if (partners != null)
if (result != null)
{
var id = ShippingDocuments.Max(x => x.Id);
foreach (var shippingDocument in partners.SelectMany(partner => partner.ShippingDocuments ?? []))
foreach (var shippingDocument in result.SelectMany(partner => partner.ShippingDocuments ?? []))
{
shippingDocument.Id = ++id;
ShippingDocuments.Add(shippingDocument);
ShippingDocuments!.Add(shippingDocument);
}
}
Grid.Reload();
if (OnUploadedFileParsed != null)
await OnUploadedFileParsed(partners);
await OnUploadedFileParsed(result);
//await InvokeAsync(StateHasChanged);
}
async Task Grid_FocusedRowChanged(GridFocusedRowChangedEventArgs args)
{
if (Grid != null && Grid.IsEditing() && !Grid.IsEditingNewRow())
await Grid.SaveChangesAsync();
FocusedRowVisibleIndex = args.VisibleIndex;
EditItemsEnabled = true;
}
async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e)
{
// await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
@ -173,6 +195,21 @@
}
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
{
ShippingDocument? resultShippingDocument = null;
if (!e.IsNew)
{
resultShippingDocument = await FruitBankSignalRClient.UpdateShippingDocument((ShippingDocument)e.EditModel);
}
else
{
resultShippingDocument = await FruitBankSignalRClient.AddShippingDocument((ShippingDocument)e.EditModel);
EditItemsEnabled = true;
}
if (resultShippingDocument != null)
ShippingDocuments!.UpdateCollection(resultShippingDocument, false);
// if(e.IsNew) {
// await NwindDataService.InsertEmployeeAsync((EditableEmployee)e.EditModel);
// } else
@ -237,5 +274,4 @@
// break;
// }
}
}
}

View File

@ -1,4 +1,5 @@
@using FruitBank.Common.Dtos
@using AyCode.Core.Extensions
@using FruitBank.Common.Dtos
@using FruitBank.Common.Entities
@using FruitBankHybrid.Shared.Databases
@using FruitBankHybrid.Shared.Services.SignalRs
@ -9,31 +10,36 @@
Contact Phone: @OrderDto.Email
</div> *@
<MgGridBase Data="ShippingItems" IsMasterGrid="IsMasterGrid"
PageSize="@(IsMasterGrid ? 15 : 50)" ShowFilterRow="IsMasterGrid" ShowGroupPanel="IsMasterGrid"
AutoExpandAllGroupRows="false"
ColumnResizeMode="GridColumnResizeMode.NextColumn"
FilterMenuButtonDisplayMode="@(IsMasterGrid ? GridFilterMenuButtonDisplayMode.Never : GridFilterMenuButtonDisplayMode.Always)">
<MgGridBase @ref="Grid" Data="ShippingItems" IsMasterGrid="IsMasterGrid" CssClass="@GridCss"
ValidationEnabled="false" EditMode="GridEditMode.EditRow"
EditModelSaving="Grid_EditModelSaving"
FocusedRowChanged="Grid_FocusedRowChanged">
<Columns>
<DxGridDataColumn FieldName="Id" Caption="oiId" Width="125" />
<DxGridDataColumn FieldName="ShippingDocumentId" Caption="ShippingDocument">
<EditSettings>
<DxComboBoxSettings Data="ShippingDocuments"
ValueFieldName="Id"
ValueFieldName="Id"
TextFieldName="DocumentIdNumber"
SearchFilterCondition="ListSearchFilterCondition.Contains"
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" />
DropDownBodyCssClass="dd-body-class"
ListRenderMode="ListRenderMode.Entire"
SearchMode="ListSearchMode.AutoSearch"
SearchFilterCondition="ListSearchFilterCondition.Contains"
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" />
</EditSettings>
</DxGridDataColumn>
@* <DxGridDataColumn FieldName="PalletId" Caption="pId" Width="125" /> *@
<DxGridDataColumn FieldName="ProductId" Caption="Product">
<EditSettings>
<DxComboBoxSettings Data="ProductDtos"
ValueFieldName="Id"
TextFieldName="Name"
SearchFilterCondition="ListSearchFilterCondition.Contains"
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" />
ValueFieldName="Id"
TextFieldName="Name"
DropDownBodyCssClass="dd-body-class"
ListRenderMode="ListRenderMode.Entire"
SearchMode="ListSearchMode.AutoSearch"
SearchFilterCondition="ListSearchFilterCondition.Contains"
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" />
</EditSettings>
</DxGridDataColumn>
@ -42,17 +48,17 @@
<DxGridDataColumn FieldName="QuantityOnDocument" Caption="Mennyiség(OnDoc)" />
<DxGridDataColumn FieldName="NetWeightOnDocument" Caption="Net.súly(OnDoc)" />
<DxGridDataColumn FieldName="GrossWeightOnDocument" Caption="Br.súly(OnDoc)" />
<DxGridDataColumn FieldName="MeasuringCount" Caption="Mérések száma" />
<DxGridDataColumn FieldName="MeasuredQuantity" Caption="Mért mennyiség" />
<DxGridDataColumn FieldName="MeasuredNetWeight" Caption="Mért net.súly(kg)" />
<DxGridDataColumn FieldName="MeasuredGrossWeight" Caption="Mért br.súly(kg)" />
<DxGridDataColumn FieldName="IsMeasurable" />
<DxGridDataColumn FieldName="IsMeasured" />
<DxGridDataColumn FieldName="MeasuredQuantity" Caption="Mért mennyiség" ReadOnly="true" />
<DxGridDataColumn FieldName="MeasuredNetWeight" Caption="Mért net.súly(kg)" ReadOnly="true" />
<DxGridDataColumn FieldName="MeasuredGrossWeight" Caption="Mért br.súly(kg)" ReadOnly="true" />
<DxGridDataColumn FieldName="Created" />
<DxGridDataColumn FieldName="Modified" />
<DxGridDataColumn FieldName="IsMeasurable" ReadOnly="true" />
<DxGridDataColumn FieldName="IsMeasured" ReadOnly="true"/>
<DxGridDataColumn FieldName="Created" ReadOnly="true" />
<DxGridDataColumn FieldName="Modified" ReadOnly="true" />
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
</Columns>
<DetailRowTemplate>
@ -61,6 +67,33 @@
<GridShippingItemPallets ShippingItemPallets="shippingItemPallets" IsMasterGrid="false"></GridShippingItemPallets>
}
</DetailRowTemplate>
<ToolbarTemplate>
@if (IsMasterGrid)
{
<DxToolbar ItemRenderStyleMode="ToolbarRenderStyleMode.Plain">
<DxToolbarItem Text="New" Click="NewItem_Click" IconCssClass="grid-toolbar-new" />
<DxToolbarItem Text="Edit" Click="EditItem_Click" IconCssClass="grid-toolbar-edit" Enabled="EditItemsEnabled" />
<DxToolbarItem Text="Delete" Click="DeleteItem_Click" IconCssClass="grid-toolbar-delete" Enabled="EditItemsEnabled" />
<DxToolbarItem Text="Column Chooser" BeginGroup="true" Click="ColumnChooserItem_Click" IconCssClass="grid-toolbar-column-chooser" />
<DxToolbarItem Text="Export" IconCssClass="grid-toolbar-export">
<Items>
<DxToolbarItem Text="To CSV" Click="ExportCsvItem_Click" />
<DxToolbarItem Text="To XLSX" Click="ExportXlsxItem_Click" />
<DxToolbarItem Text="To XLS" Click="ExportXlsItem_Click" />
<DxToolbarItem Text="To PDF" Click="ExportPdfItem_Click" />
</Items>
</DxToolbarItem>
@* <DxToolbarItem BeginGroup="true">
<Template Context="toolbar_item_context">
<DxSearchBox @bind-Text="GridSearchText"
BindValueMode="BindValueMode.OnInput"
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto"
aria-label="Search" />
</Template>
</DxToolbarItem>*@
</DxToolbar>
}
</ToolbarTemplate>
<GroupSummary>
<DxGridSummaryItem SummaryType="GridSummaryItemType.Sum"
FieldName="MeasuredQuantity"
@ -78,11 +111,21 @@
[Inject] public required DatabaseClient Database { get; set; }
[Parameter] public bool IsMasterGrid { get; set; } = false;
[Parameter] public IEnumerable<ProductDto>? ProductDtos { get; set; }
[Parameter] public IEnumerable<ShippingItem>? ShippingItems { get; set; }
[Parameter] public List<ShippingItem>? ShippingItems { get; set; }
[Parameter] public IEnumerable<ShippingDocument>? ShippingDocuments { get; set; }
string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty;
const string ExportFileName = "ExportResult";
string _localStorageKey = "GridShippingDocument_";
string GridSearchText = "";
bool EditItemsEnabled { get; set; } = true;
int FocusedRowVisibleIndex { get; set; }
IGrid Grid { get; set; }
protected override async Task OnInitializedAsync()
{
ProductDtos ??= await Database.ProductDtoTable.LoadDataAsync(true);
@ -92,4 +135,73 @@
ShippingDocuments ??= await FruitBankSignalRClient.GetShippingDocuments() ?? [];
}
async Task Grid_FocusedRowChanged(GridFocusedRowChangedEventArgs args)
{
if (Grid != null && Grid.IsEditing() && !Grid.IsEditingNewRow())
await Grid.SaveChangesAsync();
FocusedRowVisibleIndex = args.VisibleIndex;
EditItemsEnabled = true;
}
async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e)
{
}
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
{
ShippingItem? resultShippingItem = null;
if (!e.IsNew)
{
resultShippingItem = await FruitBankSignalRClient.UpdateShippingItem((ShippingItem)e.EditModel);
}
else
{
resultShippingItem = await FruitBankSignalRClient.AddShippingItem((ShippingItem)e.EditModel);
EditItemsEnabled = true;
}
if (resultShippingItem != null)
ShippingItems!.UpdateCollection(resultShippingItem, false);
EditItemsEnabled = true;
}
async Task NewItem_Click()
{
EditItemsEnabled = false;
await Grid.StartEditNewRowAsync();
}
async Task EditItem_Click()
{
EditItemsEnabled = false;
await Grid.StartEditRowAsync(FocusedRowVisibleIndex);
}
void DeleteItem_Click()
{
EditItemsEnabled = false;
Grid.ShowRowDeleteConfirmation(FocusedRowVisibleIndex);
}
void ColumnChooserItem_Click(ToolbarItemClickEventArgs e)
{
Grid.ShowColumnChooser();
}
async Task ExportXlsxItem_Click()
{
await Grid.ExportToXlsxAsync(ExportFileName);
}
async Task ExportXlsItem_Click()
{
await Grid.ExportToXlsAsync(ExportFileName);
}
async Task ExportCsvItem_Click()
{
await Grid.ExportToCsvAsync(ExportFileName);
}
async Task ExportPdfItem_Click()
{
await Grid.ExportToPdfAsync(ExportFileName);
}
}

View File

@ -23,7 +23,7 @@
<DxGridDataColumn FieldName="GrossWeight" />
<DxGridDataColumn FieldName="NetWeight" />
<DxGridDataColumn FieldName="IsMeasured" />
<DxGridDataColumn FieldName="IsMeasured" ReadOnly="true" />
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
</Columns>
<GroupSummary>

View File

@ -62,6 +62,7 @@ public class MgGridBase : DxGrid
{
if (!_isFirstInitializeParameters)
{
SizeMode = DevExpress.Blazor.SizeMode.Small;
ShowGroupPanel = IsMasterGrid;
ShowSearchBox = IsMasterGrid;
ShowFilterRow = IsMasterGrid;
@ -78,15 +79,15 @@ public class MgGridBase : DxGrid
AutoExpandAllGroupRows = false;
PagerVisible = IsMasterGrid;
PageSize = IsMasterGrid ? 15 : 50;
PageSize = IsMasterGrid ? (SizeMode == DevExpress.Blazor.SizeMode.Small ? 23 : 15) : 50;
AllowColumnReorder = true;
AllowGroup = IsMasterGrid;
AllowSort = true;
EditMode = GridEditMode.EditRow;
FocusedRowEnabled = true;
ColumnResizeMode = GridColumnResizeMode.ColumnsContainer;
EditMode = GridEditMode.EditRow;
//VirtualScrollingEnabled = IsMasterGrid;
PageSizeSelectorVisible = true;

View File

@ -77,6 +77,9 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
public Task<Shipping?> UpdateShipping(Shipping shipping)
=> PostDataAsync(SignalRTags.UpdateShipping, shipping);
public Task<List<Partner>?> ProcessAndSaveFullShippingJson(string fullShippingJson, int customerId)
=> GetAllAsync<List<Partner>>(SignalRTags.ProcessAndSaveFullShippingJson, [fullShippingJson, customerId]);
#endregion Shipping
#region ShippingItem
@ -87,6 +90,9 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
public Task<ShippingItem?> GetShippingItemById(int id)
=> GetByIdAsync<ShippingItem?>(SignalRTags.GetShippingItemById, id);
public Task<ShippingItem?> AddShippingItem(ShippingItem shippingItem)
=> PostDataAsync(SignalRTags.AddShippingItem, shippingItem);
public Task<ShippingItem?> UpdateShippingItem(ShippingItem shippingItem)
=> PostDataAsync(SignalRTags.UpdateShippingItem, shippingItem);
@ -118,6 +124,9 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
public Task<ShippingDocument?> GetShippingDocumentById(int id)
=> GetByIdAsync<ShippingDocument?>(SignalRTags.GetShippingDocumentById, id);
public Task<ShippingDocument?> AddShippingDocument(ShippingDocument shippingDocument)
=> PostDataAsync(SignalRTags.AddShippingDocument, shippingDocument);
public Task<ShippingDocument?> UpdateShippingDocument(ShippingDocument shippingDocument)
=> PostDataAsync(SignalRTags.UpdateShippingDocument, shippingDocument);
#endregion ShippingDocument
@ -212,7 +221,6 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
public Task<List<OrderItemPallet>?> GetAllOrderItemPalletByProductId(int productId)
=> GetAllAsync<List<OrderItemPallet>>(SignalRTags.GetAllOrderItemPalletByProductId, [productId]);
#endregion Orders
}
}

View File

@ -81,12 +81,18 @@ h1:focus {
}
/*region: DSGrids*/
/*.dxbl-grid {
height: 522px;
}
*/
.hide-toolbar .dxbl-grid-toolbar-container {
display: none;
}
.hideDetailButton .dxbl-grid-expand-button-cell .dxbl-grid-expand-button {
visibility: hidden;
visibility: hidden;
}
.header-bold span {
@ -103,6 +109,7 @@ h1:focus {
/*.alt-item {
--dxbl-grid-row-bg: var(--DS-color-surface-neutral-subdued-rest);
}*/
/*endregion: DSGrids*/