Skip to main content

How Interactions Work

When two properties co-occur frequently in the source code, they likely depend on each other. A configuration change to one may affect the behavior controlled by the other. The interaction data below is extracted from static analysis of 1,396 property co-occurrence pairs across the RISKSHEET codebase.
Interaction Complexity by Section:

  pdfExport   ████████████████████████████████████████████  98/100
  styles      ███████████████████████████████████████████   89/100
  columns[]   ██████████████████████████████████████████    88/100
  dataTypes   ████████████████████████████████████         74/100
  formulas    ████████████████████████████████             64/100
  headers     ██████████████████████████████               55/100
  cellDecor.  ████████████████████████                     48/100
  queryFact.  ████████████████████                         40/100
  global      ███████████████████                          38/100
  reviews     ███████████████████                          38/100
  levels      █████████████████                            33/100
The complexity score (0-100) combines property count, nesting depth, number of interactions, validation rules, and type diversity. Higher scores mean more configuration care is needed.

High-Impact Interactions

These are the property pairs that interact most frequently — changing one almost always requires reviewing the other.

dataTypes.risk + dataTypes.task.type

Co-occurrence: 299 times across 62 files These two properties define the fundamental data model. Changing the risk type requires reviewing all column bindings, level configurations, and downstream task types.
When you change…Also review…
dataTypes.risk.typeAll columns[].bindings that reference risk fields
dataTypes.task.typedataTypes.task.role, dataTypes.task.name
Either typelevels[].controlColumn references

dataTypes.task.name + dataTypes.task.type

Co-occurrence: 252 times across 52 files The task display name appears in toolbar buttons, context menus, and dialog labels. It must match the conceptual role of the task type.

columns[].readOnly + dataTypes.task.type

Co-occurrence: 167 times across 33 files Column editability depends on the work item type being displayed. Task columns behave differently from risk columns regarding read-only enforcement.

columns[].bindings + dataTypes configurations

Co-occurrence: 72+ times Column bindings must reference fields that exist on the configured work item types. Changing dataTypes.risk.type from risk to hazard means all bindings values must map to fields defined on the hazard type.

Section Interaction Map

columns[] (Complexity: 88/100)

The columns array interacts with nearly every other configuration section:
Interacts WithRelationship
dataTypesColumn bindings must reference fields from configured types
levelsColumn level must align with defined levels
formulasFormula columns reference other column bindings
cellDecoratorsDecorators apply CSS based on column values
stylesStyle rules target column-specific CSS classes
pdfExportExport column lists must match defined columns
queryFactoriesLink columns use query factories for autocomplete

dataTypes (Complexity: 74/100)

Interacts WithRelationship
columns[]Determines available field bindings
levelsRisk type determines level merging behavior
reviewsReview configuration depends on item types
queryFactoriesQuery factories filter by item type

pdfExport (Complexity: 98/100)

The most complex section due to deep nesting and multiple grid/rating definitions:
Interacts WithRelationship
columns[]Export grids reference column definitions
dataTypesExport filters by configured types
stylesExport applies style rules to rendered output
levelsExport respects level hierarchy for merging
When modifying columns[], always check pdfExport.pages[].dataGrids[].columns — the export configuration maintains its own column list that must be kept in sync manually.

formulas (Complexity: 64/100)

Interacts WithRelationship
columns[]Formulas reference column bindings via info.item['fieldName']
cellDecoratorsDecorators often style formula result cells

reviews (Complexity: 38/100)

Interacts WithRelationship
dataTypes.taskReview workflows create/link work items
columns[].typeProperties.linkRoleReview columns use specific link roles

Configuration Change Checklist

When making configuration changes, use this checklist to ensure consistency:
  • Changed dataTypes.risk.type? Update all columns[].bindings for risk fields
  • Changed dataTypes.task.type? Update task.role, task.name, and task column bindings
  • Added/removed a column? Update pdfExport.pages[].dataGrids[].columns
  • Changed a level? Verify columns[].level assignments still match
  • Modified formulas? Check that referenced field names exist in bindings
  • Changed cellDecorators? Verify CSS class names match styles definitions
  • Updated link roles? Check queryFactories, reviews, and typeProperties.linkRole