Skip to main content
The Risksheet Traffic Lights Module is a real-time visual completion status indicator that displays three traffic lights showing FMEA assessment progress within the Risksheet interface. It provides at-a-glance feedback on pre-mitigation assessment completeness, post-mitigation assessment completeness, and remaining high-priority risks — enabling teams to track remaining work and unacceptable residual risk without manual counting.

Overview

The Traffic Lights Module is a self-contained JavaScript module (risksheet-traffic-lights.js) that overlays a three-light status panel in the top-right corner of the Risksheet grid. The module:
  • Monitors live data in the Risksheet grid via Wijmo CollectionView events
  • Groups rows by work item to count unique failure modes (not sub-rows for causes/effects/tasks)
  • Applies configurable field sets to determine completeness criteria
  • Detects high-risk items using either enum matching or numeric thresholds
  • Updates in real-time as users edit data — no save or refresh required
  • Displays fractional progress (e.g., “7/12 items complete”) and high-risk counts
The module is production-ready for AIAG-VDA FMEA workflows and can be customized for ISO 26262, MIL-STD-882, or other methodologies.

Core Architecture

diagram

Configuration Properties

The module exposes configuration via the window.risksheetTrafficLightsConfig object, set before the script loads:
PropertyTypeDefaultDescription
tourIdstring"traffic-lights"Unique key for localStorage tracking of help tooltip state
preFieldsstring[]["sev", "occ", "det"]Array of column IDs that must have values for pre-mitigation assessment to be marked complete (AIAG-VDA: Severity, Occurrence, Detection)
postFieldsstring[]["occNew", "detNew"]Array of column IDs required for post-mitigation assessment (revised Occurrence and Detection after risk controls applied)
highRiskColumnstring"premitigationAP"Column ID to evaluate for high-risk detection; typically the Action Priority (AP) field or RPN calculation
highRiskCriteriastring"H"High-risk detection criterion: enum value (e.g., "H") or numeric threshold comparison (e.g., ">100" for RPN-based detection)
highRiskModestring"enum"Detection mode: "enum" for string value matching, "numeric" for threshold-based detection (e.g., RPN > 100)
groupBystring"auto"Row grouping strategy: "auto" (tries systemItemId then "ID"), or explicit column ID for custom grouping
tooltipTextobject(see below)Customizable help text for each traffic light; auto-localized per standard
enabledbooleantrueToggle traffic lights on/off (useful for conditional deployment)

Default Tooltip Text (AIAG-VDA FMEA)

tooltipText: {
  pre: "Pre-mitigation assessment complete: all failure modes have Severity, Occurrence, and Detection rated",
  post: "Post-mitigation assessment complete: all failure modes have revised Occurrence and Detection after risk controls applied",
  high: "Remaining high-priority risks: failure modes with Action Priority = High requiring additional mitigation"
}

ISO 26262 Customization Example

window.risksheetTrafficLightsConfig = {
  preFields: ["severity", "exposure", "controllability"],
  postFields: ["postmitigationSeverity", "postmitigationExposure"],
  highRiskCriteria: ">=C",  // ASIL C or D remains unacceptable
  highRiskMode: "enum",
  tooltipText: {
    pre: "HARA assessment complete: all hazards classified by Severity, Exposure, Controllability",
    post: "Post-mitigation review complete: residual ASIL confirmed for all hazards",
    high: "Unacceptable ASIL: hazards remaining at ASIL C or D after risk controls"
  }
};

Traffic Light States and Colors

Each of the three lights displays one of three states based on row count evaluation:

Pre-Mitigation Light ( Pre)

StateColorConditionMeaning
CompleteGreen (#58FF59)All unique items have values in ALL preFieldsPre-mitigation risk assessment is complete for all failure modes
PartialYellow (#FFD700)Some (but not all) unique items have complete preFieldsSome failure modes still need severity/occurrence/detection ratings
IncompleteRed (#FF0000)Zero items have complete preFields OR no items existNo failure modes have been rated yet; FMEA assessment not started

Post-Mitigation Light ( Post)

StateColorConditionMeaning
CompleteGreen (#58FF59)All unique items have values in ALL postFieldsPost-mitigation re-assessment complete; all risk controls have been evaluated
PartialYellow (#FFD700)Some unique items have complete postFieldsSome failure modes need revised occurrence/detection after mitigation
IncompleteRed (#FF0000)Zero items have complete postFields OR no items existRisk controls not yet evaluated; residual risk not assessed

High-Risk Light ( High)

StateColorConditionMeaning
SafeGreen (#58FF59)No items match highRiskCriteria (e.g., no AP=‘H’ items, or all RPN ≤ threshold)All risks mitigated to acceptable levels; no unacceptable residual risk
WarningYellow (#FFD700)Some items match highRiskCriteria but count is monitoredElevated risk present; verify risk controls effectiveness
CriticalRed (#FF0000)One or more items match highRiskCriteria (e.g., AP=‘H’ exists)Unacceptable residual risk; additional mitigation required before release

Progress Display Format

Each light shows a fractional count representing unique work items:
LightDisplay FormatExampleInterpretation
Pre{complete}/{total}7/127 of 12 failure modes have pre-mitigation assessment complete
Post{complete}/{total}5/125 of 12 failure modes have post-mitigation assessment complete
HighCount or status text2 remaining or None2 failure modes remain at high-risk priority; green + “None” = all mitigated
The counts represent unique work items (failure modes), not spreadsheet rows. If a failure mode has sub-rows (causes, effects, or tasks), those are grouped under the parent work item and counted once. This prevents artificial inflation of completion percentages and gives an accurate view of FMEA assessment progress per failure mode.

Real-Time Synchronization

The module listens to two Wijmo CollectionView events and recalculates light states automatically:
EventWhen TriggeredResult
collectionChangedUser edits a cell in the grid, adds/deletes a row, or changes a valueLights update immediately (no delay)
sourceCollectionChangedRisksheet applies a filter, reorder, or view changeLights recalculate based on visible (filtered) rows
Traffic lights update live as users work. Changes are reflected in real-time without requiring a save to Polarion or a page refresh. This enables immediate feedback on remaining work and helps teams prioritize mitigation efforts during collaborative FMEA sessions.

Row Grouping and Unique Item Detection

The module automatically groups spreadsheet rows by unique work item ID to prevent double-counting:

Auto-Grouping Logic

  1. Check if “systemItemId” column exists in grid metadata → YES: Use systemItemId (for linked items like Failure Mode sub-rows) → NO: Fall back to “ID” column (for standalone items)
  2. Iterate rows and group by selected groupBy field value Example: Row 1: ID=FM-001, sev=8, occ=3 ← Unique item Row 2: ID=FM-001-CAUSE-1, … ← Sub-row (same parent FM-001) Row 3: ID=FM-002, sev=7, occ=2 ← Different unique item Result: 2 unique items (FM-001, FM-002), not 3 rows
  3. Evaluate completeness PER UNIQUE ITEM Item FM-001: Check if ALL rows with this ID have preFields filled Item FM-002: Check independently

Custom Grouping

Override the auto-detection by setting groupBy to an explicit column ID:
window.risksheetTrafficLightsConfig = {
  groupBy: "customElementId"  // Use this column for grouping instead of auto-detect
};

High-Risk Detection Modes

The module supports two detection strategies, configured via highRiskMode:

Mode 1: Enum Matching (Default)

Used for categorical risk indicators like Action Priority (AP):
window.risksheetTrafficLightsConfig = {
  highRiskColumn: "premitigationAP",
  highRiskCriteria: "H",
  highRiskMode: "enum"
};
Logic: An item is high-risk if the value in highRiskColumn exactly matches highRiskCriteria. Example: Any failure mode with AP=‘H’ (High) is flagged as high-risk. Use cases:
  • AIAG-VDA FMEA: AP=‘H’ (High Action Priority)
  • ISO 26262: ASIL >= ‘C’ (unsafe to leave unmitigated)
  • MIL-STD-882: Risk Level=‘Critical’ or ‘Catastrophic’

Mode 2: Numeric Threshold

Used for calculated risk indicators like RPN (Risk Priority Number):
window.risksheetTrafficLightsConfig = {
  highRiskColumn: "premitigationRPN",
  highRiskCriteria: ">100",
  highRiskMode: "numeric"
};
Logic: An item is high-risk if the numeric value in highRiskColumn satisfies the threshold in highRiskCriteria. Supported operators: >, >=, <, <=, =, !=. Use cases:
  • AIAG-VDA FMEA: RPN > 100 (residual risk threshold)
  • Custom scoring: Risk Score >= threshold
  • Performance indicators: Failure rate > 1e-7 per hour (automotive safety target)

Help Tooltip

The module includes an optional interactive help button that displays explanatory text without requiring the Driver.js tour library:
ElementInteractionBehavior
? Help ButtonClickToggles visibility of tooltip explaining all three lights and their color meanings
TooltipDisplayShows configuration-specific text (customizable via tooltipText property)
TooltipClick outsideAuto-closes; can be reopened by clicking help button again
The help feature is entirely optional — if no help button exists on the page, traffic lights function normally without it. The tooltip is pure CSS with no external dependencies.
If you add a custom help button, use the selector #traffic-lights-help (or update the module code to match your button ID). The module will automatically bind to it if present.

Integration with Risksheet Configuration

Traffic lights complement the Risksheet column configuration (risksheet.json). They do NOT require special column setup but work best when:
  1. Pre-mitigation columns are visible in the default view (Severity, Occurrence, Detection)
  2. Post-mitigation columns are in a separate view (e.g., “Post-Mitigation Assessment”) to support progressive workflow
  3. Action Priority is calculated or manually entered in the grid (used for high-risk detection)

Example: AIAG-VDA FMEA Risksheet with Traffic Lights

{
  "config": {
    "trafficLights": {
      "enabled": true,
      "preFields": ["sev", "occ", "det"],
      "postFields": ["occNew", "detNew"],
      "highRiskColumn": "premitigationAP",
      "highRiskCriteria": "H",
      "highRiskMode": "enum"
    }
  },
  "views": [
    {
      "id": "initial-risk-assessment",
      "label": "Initial Risk Assessment",
      "description": "Pre-mitigation: Severity, Occurrence, Detection",
      "columns": ["id", "failureMode", "sev", "occ", "det", "rpn"]
    },
    {
      "id": "post-mitigation-assessment",
      "label": "Post-Mitigation Assessment",
      "description": "Revised risk after controls: new Occurrence, new Detection, residual RPN",
      "columns": ["id", "failureMode", "occNew", "detNew", "rpnNew", "premitigationAP"]
    }
  ]
}

Browser Compatibility

BrowserMinimum VersionNotes
Chrome / Chromium90+Recommended; FlexGrid rendering highly optimized
Firefox88+Supported; slight performance overhead
Safari14+Supported; test on macOS and iOS
Edge90+Chromium-based; same as Chrome support
IE 11Not supportedUse modern browser for Risksheet compatibility

Performance Considerations

The module is optimized for FMEA documents with up to 500 unique work items. For larger documents (> 500 FMs), consider:
  • Filtering: Use Risksheet view filters to focus on specific system elements or risk areas — traffic lights recalculate for filtered data only
  • Pagination: Break large FMEAs into multiple smaller documents (per system element)
  • Debouncing: Module automatically debounces updates to prevent excessive recalculation during rapid user edits
For additional context on FMEA workflow and status tracking: