Skip to content

Implement optional rail heatmap and unassigned item rendering - #28

Merged
blackopsrepl merged 1 commit into
mainfrom
issue-8-rail-features
Mar 21, 2026
Merged

Implement optional rail heatmap and unassigned item rendering#28
blackopsrepl merged 1 commit into
mainfrom
issue-8-rail-features

Conversation

@blackopsrepl

Copy link
Copy Markdown
Contributor

Closes #8.

Summary

  • add SF.rail.createHeatmap(config) and wire it into SF.rail.createCard
  • add optional heatmap support on resource cards with configurable segments
  • add SF.rail.createUnassignedRail and card.setUnassigned() for unassigned pill rendering
  • keep behavior backward-compatible when heatmap/unassigned are not provided

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3b94bcc02e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread js-src/05-statusbar.js
Comment on lines 121 to +125
className: 'sf-constraint-dot',
id: 'sf-cdot-' + i,
title: c.name || ('Constraint ' + i),
role: onClick ? 'button' : null,
tabIndex: onClick ? '0' : null,
'aria-label': onClick ? ('Open constraint ' + (c.name || ('Constraint ' + i))) : null,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Restore sf-cdot-* ids for analysis coloring

Because buildDots() no longer assigns id: 'sf-cdot-' + i, colorDotsFromAnalysis() in this same module still cannot resolve any of the dots it just rebuilt, and the calls from js-src/11-solver.js:64 silently skip every violation class. In any flow that shows post-run analysis, hard/soft constraint failures stop being highlighted even though the analysis payload is present.

Useful? React with 👍 / 👎.

Comment thread js-src/13-rail.js
Comment on lines +182 to +186
var heatmap = sf.el('div', { className: 'sf-heatmap' });
var label = sf.el('div', { className: 'sf-heatmap-label' }, config.label || '');
heatmap.appendChild(label);

var track = sf.el('div', { className: 'sf-heatmap-track' });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Lay out heatmaps on the card's two-column grid

createCard() uses labelWidth + 'px 1fr' for the header/body rows, but the new heatmap strip never gets that template or even the labelWidth value. Since .sf-heatmap is only display: grid in css-src/16-rail-blocks.css:126-140, the label and track auto-flow into separate rows instead of aligning with the stats/rail columns, so any card that opts into heatmap renders the strip misaligned with the timeline (and a non-empty label can push it taller than the intended 10px strip).

Useful? React with 👍 / 👎.

@blackopsrepl
blackopsrepl force-pushed the issue-8-rail-features branch from 3b94bcc to 286ddb9 Compare March 21, 2026 12:35
@blackopsrepl
blackopsrepl merged commit e6e3c0f into main Mar 21, 2026
1 check passed
@blackopsrepl
blackopsrepl deleted the issue-8-rail-features branch May 15, 2026 18:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement or prune unfinished rail features such as heatmaps and unassigned rows

1 participant