feat(history): improve commit hover branch labels and titles
The history panel now generates more informative hover text for commits. It prefers direct local branch refs when available, otherwise it derives a concise list from containing branch labels and summarizes overflow. - Add helpers to compute hover branch labels and title text - Update the graph row hover rendering to use the new helpers
This commit is contained in:
@@ -207,6 +207,24 @@
|
|||||||
return labels.filter(branchIsVisible);
|
return labels.filter(branchIsVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function commitHoverBranchLabels(commit: GitCommit, row: GraphRow | undefined): string[] {
|
||||||
|
const directBranches = localBranchRefs(commit);
|
||||||
|
if (directBranches.length > 0) return directBranches;
|
||||||
|
|
||||||
|
const containingBranches = row?.branchLabels ?? [];
|
||||||
|
if (containingBranches.length <= 3) return containingBranches;
|
||||||
|
return [...containingBranches.slice(0, 3), `+${containingBranches.length - 3} more`];
|
||||||
|
}
|
||||||
|
|
||||||
|
function commitHoverTitle(commit: GitCommit, row: GraphRow | undefined): string {
|
||||||
|
const directBranches = localBranchRefs(commit);
|
||||||
|
if (directBranches.length > 0) return `Branches: ${directBranches.join(", ")}`;
|
||||||
|
|
||||||
|
const containingBranches = row?.branchLabels ?? [];
|
||||||
|
if (containingBranches.length === 0) return commit.short_hash;
|
||||||
|
return `Branches containing this commit: ${containingBranches.join(", ")}`;
|
||||||
|
}
|
||||||
|
|
||||||
function segmentIsVisible(segment: GraphSegment): boolean {
|
function segmentIsVisible(segment: GraphSegment): boolean {
|
||||||
return segment.branches.length === 0 || segment.branches.some(branchIsVisible);
|
return segment.branches.length === 0 || segment.branches.some(branchIsVisible);
|
||||||
}
|
}
|
||||||
@@ -483,7 +501,7 @@
|
|||||||
{#each visibleCommitEntries as entry, rowIndex (entry.commit.hash)}
|
{#each visibleCommitEntries as entry, rowIndex (entry.commit.hash)}
|
||||||
{@const item = entry.commit}
|
{@const item = entry.commit}
|
||||||
{@const row = graphRows[rowIndex]}
|
{@const row = graphRows[rowIndex]}
|
||||||
{@const hoverBranchRefs = visibleBranchLabels(row?.branchLabels ?? [])}
|
{@const hoverBranchRefs = commitHoverBranchLabels(item, row)}
|
||||||
{@const otherRefs = visibleRefs(item)}
|
{@const otherRefs = visibleRefs(item)}
|
||||||
<article
|
<article
|
||||||
class="commit-row graph-row"
|
class="commit-row graph-row"
|
||||||
@@ -518,7 +536,7 @@
|
|||||||
class:merge={item.parents.length > 1}
|
class:merge={item.parents.length > 1}
|
||||||
class:tip={item.refs.length > 0}
|
class:tip={item.refs.length > 0}
|
||||||
class:hidden-branch={!rowGraphIsVisible(row)}
|
class:hidden-branch={!rowGraphIsVisible(row)}
|
||||||
title={hoverBranchRefs.length > 0 ? `Contained in: ${hoverBranchRefs.join(", ")}` : item.short_hash}
|
title={commitHoverTitle(item, row)}
|
||||||
style={`left:${graphColX(row.dotCol)}px; --dot-color:${row.dotColor}`}
|
style={`left:${graphColX(row.dotCol)}px; --dot-color:${row.dotColor}`}
|
||||||
></span>
|
></span>
|
||||||
{#if hoverBranchRefs.length > 0}
|
{#if hoverBranchRefs.length > 0}
|
||||||
|
|||||||
Reference in New Issue
Block a user