FruitBankHybridApp/docs/CONVENTIONS.md

2.8 KiB

Conventions

For core framework conventions see: CONVENTIONS.md (in AyCode.Core repo) For UI framework conventions see: CONVENTIONS.md (in AyCode.Blazor repo)

Naming

  • fb prefix on database tables: fbPallet, fbShipping, fbShippingItem, etc.
  • Dto suffix for DTOs wrapping nopCommerce entities: OrderDto, OrderItemDto, ProductDto.
  • XxxItemPallet for measurement records: ShippingItemPallet, OrderItemPallet, StockTakingItemPallet.
  • Grid prefix for Blazor grid components: GridPartnerBase, GridShippingBase, etc.
  • GridXxxBase = C# code-behind class inheriting FruitBankGridBase<TDataItem>.
  • GridXxx.razor = Razor markup using <GridXxxBase> with <Columns> and <DetailRowTemplate>.
  • OnGrid prefix for MgGridBase event parameters: OnGridItemDeleting, OnGridEditModelSaving, OnGridFocusedRowChanged, etc. (avoids collision with DxGrid base events).
  • SignalRTags constants use numeric ranges by domain (see FruitBank.Common/SignalRs/).

XML Documentation

<summary> — brief, developer-facing, readable in VS IntelliSense tooltip. NO implementation details, NO wire-format / byte-level / perf specifics — those live in docs/TOPIC/*.md. Add <example> only when usage is non-obvious; otherwise omit.

Patterns

  • MeasuringItemPalletBase as abstract base for all three measurement hierarchies.
  • GenericAttributes for extending nopCommerce entities with custom data (IsMeasurable, Tare, AverageWeight).
  • Composition interfaces for measurement traits: IMeasuringValues = IMeasuringWeights + IMeasuringQuantity.
  • DevExpress DxGrid with AcSignalRDataSource for real-time grid data.
  • MgGridBase — canonical grid base from AyCode.Blazor (see AyCode.Blazor.Components/docs/MGGRID/README.md (in AyCode.Blazor repo)). Provides SignalR CRUD, layout persistence, master-detail, InfoPanel, fullscreen.
  • FruitBankGridBase — project adapter that fixes TId=int, TLoggerClient=LoggerClient, adds per-user layout and master/detail defaults.
  • FruitBankSignalRClient as single hub client for all server communication.
  • DatabaseClient for client-side caching with ConcurrentDictionary tables.

Grid Creation Checklist

  1. Create GridXxxBase.cs inheriting FruitBankGridBase<TEntity>.
  2. Set CRUD tags in constructor: GetAllMessageTag, AddMessageTag, UpdateMessageTag, RemoveMessageTag.
  3. Create GridXxx.razor with <GridXxxBase>, <Columns>, optional <DetailRowTemplate>.
  4. Wrap in <MgGridWithInfoPanel> if InfoPanel is needed.
  5. For detail grids: set ParentDataItem, KeyFieldNameToParentId, ContextIds.

UI (Hungarian Locale)

  • Status labels and UI text are in Hungarian.
  • MeasuringStatus display: "Nincs elkezdve", "Elkezdve", "Kész", "Auditált".
  • Date format follows Hungarian conventions.