diff --git a/src/components/MacroplanGrid.vue b/src/components/MacroplanGrid.vue index e65959e..a93656e 100644 --- a/src/components/MacroplanGrid.vue +++ b/src/components/MacroplanGrid.vue @@ -78,7 +78,9 @@ function markerAt(row: FeatureRow, w: WeekId): MarkerKind | null { } interface Cell { - inBar: boolean + // how far the bar line runs within this cell: none, half-from-center-right, + // half-from-left-to-center, or full width + line: 'none' | 'right' | 'left' | 'full' isStart: boolean glyph: string glyphCls: string @@ -90,8 +92,16 @@ const matrix = computed(() => weeks.value.map((w) => { const m = markerAt(row, w) const inBar = w >= row.startWeek && w <= row.barEndWeek + let line: Cell['line'] = 'none' + if (inBar) { + const isStart = w === row.startWeek + const isEnd = w === row.barEndWeek + // line runs center→edge so it begins and ends at a glyph centre, + // never stubbing past the first/last symbol + line = isStart && isEnd ? 'none' : isStart ? 'right' : isEnd ? 'left' : 'full' + } return { - inBar, + line, isStart: inBar && w === row.startWeek, glyph: m ? GLYPH[m] : '', glyphCls: m ? MARKER_CLASS[m] : '', @@ -157,7 +167,7 @@ function milestoneTitle(ms: Plan['milestones']): string { class="cell" :class="colClass(ci)" > - + {{ cell.glyph }} @@ -178,18 +188,18 @@ function milestoneTitle(ms: Plan['milestones']): string {
original estimate - re-estimate (slip) + re-estimate on time late ┣━ feature bar milestone - vertical rule = now + today