LearnNewsExamplesServices
Frontmatter
id8935
titleFeat: Yearly Breakdown Columns & Heatmap
stateClosed
labels
enhancementdesign
assigneestobiu
createdAtFeb 1, 2026, 4:59 PM
updatedAtFeb 1, 2026, 5:11 PM
githubUrlhttps://github.com/neomjs/neo/issues/8935
authortobiu
commentsCount1
parentIssue8930
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtFeb 1, 2026, 5:11 PM

Feat: Yearly Breakdown Columns & Heatmap

Closed v12.0.0 enhancementdesign
tobiu
tobiu commented on Feb 1, 2026, 4:59 PM

This task focuses on leveraging the Neo.mjs Grid's horizontal scrolling capabilities by adding yearly contribution columns (2025 down to 2010). This will visualize the "career arc" of contributors.

Requirements

  1. Model Update: Update DevRank.model.Contributor to expose yearly data as top-level fields (e.g., y2025, y2024) mapping from the nested years object.
  2. Grid Columns:
    • Dynamically generate columns for the range 2025 down to 2010.
    • Place these columns after the "Updated" column.
    • Header: The Year (e.g., "2025").
    • Cell Content: The contribution count.
    • Heatmap Styling: Apply a CSS class or inline style to the cell background based on the value intensity:
      • 0: No color
      • 1-100: Low intensity
      • 100-1000: Medium intensity
      • 1000+: High intensity

Acceptance Criteria

  • The grid displays ~16 new columns for yearly data.
  • Horizontal scrolling works smoothly.
  • Cells are color-coded based on contribution volume.
tobiu added the enhancement label on Feb 1, 2026, 4:59 PM
tobiu added the design label on Feb 1, 2026, 4:59 PM
tobiu added parent issue #8930 on Feb 1, 2026, 4:59 PM
tobiu assigned to @tobiu on Feb 1, 2026, 5:00 PM
tobiu referenced in commit dbd237b - "feat: Yearly Breakdown Columns & Heatmap (#8935)" on Feb 1, 2026, 5:03 PM
tobiu referenced in commit 71466c5 - "fix: Resolve maximum call stack error in GridContainer (#8935)" on Feb 1, 2026, 5:10 PM
tobiu
tobiu Feb 1, 2026, 5:10 PM

Input from Gemini 3 Pro:

✦ I have resolved the Maximum call stack size exceeded error.

Issue

The error was caused by a naming collision or recursion loop when using the method name createColumns while extending Neo.grid.Container. It's likely that the base class or its config system interacts with a method of this name, or the columns setter triggered a cycle.

Fix

  1. Renamed createColumns to buildDynamicColumns to ensure a unique method name.
  2. Verified that buildDynamicColumns is called within construct after super.construct.
  3. Ensured the static columns config was removed (it was already overwritten in the previous file write, but verified).

The grid should now render correctly without infinite recursion.

tobiu closed this issue on Feb 1, 2026, 5:11 PM