Skip to content

Latest commit

 

History

History
55 lines (35 loc) · 2.88 KB

File metadata and controls

55 lines (35 loc) · 2.88 KB

CLAUDE.md

OutSystems Data Grid wraps Wijmo FlexGrid to deliver enterprise-grade spreadsheet functionality in OutSystems Reactive Web applications. The repository contains TypeScript (browser-side grid wrapper) and a .NET extension (server-side data preparation).

Foundation Documents

  • ARCHITECTURE.md — five architectural tenets (T1–T5), component boundaries, external integrations table, and build process
  • CONTRIBUTING.md — branch naming (ROU-12345), PR title/label requirements, code standards (naming conventions, member ordering, formatting), and getting help

.NET Extension Context

The DataGridUtils extension converts OutSystems entities/structures to JSON with embedded metadata. Key files live under extension/DataGridUtils/Source/NET/:

  • Interface.cs — public API (IssDataGridUtils.MssConvertData2JSON)
  • DataGridUtils.cs — bundles data + metadata into {"data": ..., "metadata": ...}
  • ObtainMetadata.cs — reflection-based schema extraction
  • temp_ardoJSON.cs — forked JSON serializer with smart ISO 8601 date handling

OutSystems field prefix conventions (stripped in JSON output):

  • ss — simple field, ssEN — entity, ssST — structure
  • Byte[] fields are excluded from both data and metadata
  • DateTime: 1900-01-01 00:00:00 → empty string, date-only → yyyy-MM-dd, full → UTC ISO 8601

Testing: Run console tests from extension/tests/DataGridUtils.Tests.csproj (mock OutSystems types).

See .cursor/rules/project-context.mdc for detailed extension context.

Wijmo Provider Context

When modifying provider layer code (src/Providers/DataGrid/Wijmo/), consult Wijmo FlexGrid docs at https://developer.mescius.com/wijmo/api/classes/Wijmo_Grid.Flexgrid.html. Key Wijmo capabilities used:

  • Virtual rendering (row/column virtualization for large datasets)
  • Multi-panel architecture (data cells, column headers, row headers, footers)
  • itemsSource/collectionView for data binding with editing support
  • Selection API (selection, selectedItems, selectedRows)
  • Editing lifecycle (startEditing, finishEditing, itemValidator)
  • Clipboard events (getClipString, copied, pasted)

Security Boundaries

Input sanitization occurs at two distinct points — see ARCHITECTURE.md T5 for rationale:

  1. Data entry — HTML escaping via OSFramework.DataGrid.Helper.Sanitize
  2. Data exit — CSV injection prevention via Providers.DataGrid.Wijmo.Features.CellDataSanitizer

Runtime toggles: OutSystems.GridAPI.Security.EnableCellDataSanitizer(gridID) / DisableCellDataSanitizer(gridID)

Do Not Modify

  • extension/DataGridUtils/Templates/NET/ — auto-generated by Integration Studio
  • src/@types/wijmo-5.20252.44/ — vendored Wijmo type definitions

ADRs

Architecture Decision Records in docs/adr/. Currently: ADR-0001 (Extension .NET Upgrade).