Frontmatter
| id | 8954 |
| title | Feat: Generic Sparkline Component & Grid Column |
| state | Closed |
| labels | enhancementaifeature |
| assignees | tobiu |
| createdAt | Feb 2, 2026, 11:20 PM |
| updatedAt | Feb 2, 2026, 11:39 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8954 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8948 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 2, 2026, 11:39 PM |
Feat: Generic Sparkline Component & Grid Column
tobiu assigned to @tobiu on Feb 2, 2026, 11:38 PM

tobiu
Feb 2, 2026, 11:38 PM
Input from Gemini 3 Pro:
✦ I have successfully implemented the generic Sparkline component and grid column.
Changes:
- Promoted Component:
DevRank.view.SparklineComponenthas been genericized and moved tosrc/component/Sparkline.mjs. It now supports top-level configuration for dynamic worker renderers (rendererClassName,rendererImportPath).- New Grid Column: Created
src/grid/column/Sparkline.mjs. This column type automatically maps record data to the component'svaluesand passes down renderer configurations from the column definition to the component defaults.- SCSS Extraction: Styles were extracted to
resources/scss/src/grid/column/Sparkline.scss, making the component stylistically independent.- Integration:
DevRank.view.GridContainerwas updated to use the newtype: 'sparkline'column. The data aggregation logic remains in thecomponentfunction, while the renderer configuration was moved to the column definition for clarity.- Cleanup: Deleted the obsolete
apps/devrank/view/SparklineComponent.mjs.The implementation allows for easy reuse of worker-based sparklines across the framework while maintaining the "Zero-Config" goal for standard usage.
tobiu added parent issue #8948 on Feb 2, 2026, 11:39 PM
tobiu closed this issue on Feb 2, 2026, 11:39 PM
tobiu cross-referenced by #8948 on Feb 2, 2026, 11:54 PM
Goal
Promote the
DevRank.view.SparklineComponentimplementation to a generic framework component (Neo.component.Sparkline) and create a corresponding grid column (Neo.grid.column.Sparkline) to enable widespread usage.Scope
src/component/Sparkline.mjs:Neo.component.Canvas.apps/devrank/view/SparklineComponent.mjs.neo-sparkline-canvas).src/grid/column/Sparkline.mjs:Neo.grid.column.Component.applyRecordConfigsto map record data fields to the component.Neo.component.Sparklineas the default module.resources/scss/src/grid/column/Sparkline.scss:resources/scss/src/apps/devrank/GridContainer.scss..neo-sparkline-wrapper).Neo.grid.column.Sparklinetosrc/grid/column/_export.mjs.Note
apps/devrank/canvas/Sparkline.mjs) will be moved in a separate step.