Skip to content

Latest commit

 

History

History
147 lines (94 loc) · 5.7 KB

File metadata and controls

147 lines (94 loc) · 5.7 KB

Contributing to OutSystems Data Grid

This repository contains TypeScript code that wraps Wijmo FlexGrid for OutSystems Reactive Web applications, along with a .NET extension for server-side data preparation.

Development Setup

Prerequisites

  • Node.js 12 or higher (see engines in package.json)
  • Visual Studio Code (recommended) with extensions listed in .vscode/extensions.json
  • For .NET extension work: Visual Studio with .NET Framework 4.7.2

Initial Setup

npm run setup

This installs dependencies and starts development mode with browser-sync on port 3000.

Development Workflow

Branch Naming

Create branches from dev using the JIRA ticket identifier:

git checkout dev && git pull
git checkout -b ROU-12345

Branch names follow the pattern <JIRA-ID> (e.g., ROU-12345, RGRIDT-1051).

Commit Format

Include the JIRA ticket ID and a brief description:

ROU-12345: Add new feature for data export

PR Title

Must match the regex ^([A-Z][A-Z0-9]*-\d+(:)?\s\w) -- for example, ROU-12345: Add CSV export support. Release and merge branches are exempt from this check.

PR Labels

At least one required: feature, bug, bugfix, dependencies, dependency, chore.

Must NOT have the do not merge label.

PR Description

Use the template (.github/pull_request_template.md) which asks for:

  • Link to a sample page demonstrating the change
  • What was happening (issue description)
  • What was done (solution description)
  • Test steps and screenshots (animated GIFs preferred)
  • Checklist confirmation (local testing, documentation, ESLint clean)

Approval

Requires approval from a UI Components team member. Code ownership is defined in .github/CODEOWNERS (@OutSystems/rd-ui-components).

CI Checks

PRs targeting dev trigger an automated build (npm install then npm run build). PR title and label validations also run automatically.

Building and Testing

Command Description
npm run setup Install dependencies and start dev mode
npm run build Production build + lintfix + lint
npm run dev Start dev server (browser-sync, port 3000)
npm run lint Check TypeScript code style (ESLint)
npm run lintfix Auto-fix ESLint issues
npm run prettier Format all JS/TS/CSS files
npm run docs Generate TypeDoc documentation

npm run build must pass without errors or warnings before submitting a PR.

.NET Extension

For changes to the DataGridUtils extension (extension/DataGridUtils/Source/NET/):

  1. Open extension/DataGridUtils/Source/NET/DataGridUtils.sln in Visual Studio
  2. Build targeting .NET Framework 4.7.2
  3. Run console tests in extension/tests/DataGridUtils.Tests.csproj

Do not modify files under extension/DataGridUtils/Templates/NET/ -- those are auto-generated by Integration Studio.

Test Automation

Browser-based integration tests live in a separate private repository (WebDriverIO + Cucumber).

Code Standards

TypeScript

Enforced by .eslintrc.json and .prettierrc.json. Run npm run lintfix before committing.

Naming conventions (enforced by @typescript-eslint/naming-convention):

Selector Format Underscore
Exported functions StrictPascalCase --
Classes StrictPascalCase --
Interfaces IStrictPascalCase prefix with I
Private properties _strictCamelCase leading required
Public/protected props strictCamelCase leading forbidden
Private methods _strictCamelCase leading required
Public/protected methods strictCamelCase leading forbidden

Member ordering (enforced by @typescript-eslint/member-ordering):

Classes: signature, private fields, protected fields, public fields, constructor, private methods, protected methods, public methods, abstract methods -- alphabetically within each group.

Formatting (Prettier): tabs (width 4), single quotes, semicolons required, 120-char line width, ES5 trailing commas.

Documentation: Use JSDoc comments on all public APIs. The "Document This" VS Code extension generates stubs when you type /** above a function.

General Guidelines

  • Keep changes scoped to the relevant JIRA ticket
  • Do not modify vendored Wijmo type definitions in src/@types/
  • Do not expose sensitive information (server URLs, credentials)

Getting Help

Useful Resources

License

This repository belongs to OutSystems. All rights reserved. See LICENSE for details.