Skip to content

Commit 0a38eb8

Browse files
authored
unique channels (#1551)
1 parent c8384ab commit 0a38eb8

File tree

3 files changed

+87
-7
lines changed

3 files changed

+87
-7
lines changed

src/marks/tip.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,15 +125,15 @@ export class Tip extends Mark {
125125
if (!defined(value) && channel.scale == null) continue;
126126
const color = channel.scale === "color" ? channels[key][i] : undefined;
127127
if (key === "x2" && "x1" in sources) {
128-
yield [formatLabel(scales, channel) ?? "x", formatPair(sources.x1, channel, i)];
128+
yield [formatLabel(scales, channel, "x"), formatPair(sources.x1, channel, i)];
129129
} else if (key === "y2" && "y1" in sources) {
130-
yield [formatLabel(scales, channel) ?? "y", formatPair(sources.y1, channel, i)];
130+
yield [formatLabel(scales, channel, "y"), formatPair(sources.y1, channel, i)];
131131
} else {
132-
yield [formatLabel(scales, channel) ?? key, formatDefault(value), color];
132+
yield [formatLabel(scales, channel, key), formatDefault(value), color];
133133
}
134134
}
135-
if (index.fi != null && fx) yield [fx.label ?? "fx", formatFx(index.fx)];
136-
if (index.fi != null && fy) yield [fy.label ?? "fy", formatFy(index.fy)];
135+
if (index.fi != null && fx) yield [String(fx.label ?? "fx"), formatFx(index.fx)];
136+
if (index.fi != null && fy) yield [String(fy.label ?? "fy"), formatFy(index.fy)];
137137
}
138138

139139
// We don’t call applyChannelStyles because we only use the channels to
@@ -159,7 +159,10 @@ export class Tip extends Mark {
159159
this.setAttribute("fill-opacity", 1);
160160
this.setAttribute("stroke", "none");
161161
// iteratively render each channel value
162+
const names = new Set();
162163
for (const [name, value, color] of format(sources, i)) {
164+
if (name && names.has(name)) continue;
165+
else names.add(name);
163166
renderLine(that, name, value, color);
164167
}
165168
})
@@ -316,6 +319,6 @@ function formatPair(c1, c2, i) {
316319
: `${formatDefault(c1.value[i])}${formatDefault(c2.value[i])}`;
317320
}
318321

319-
function formatLabel(scales, c) {
320-
return scales[c.scale]?.label ?? c?.label;
322+
function formatLabel(scales, c, defaultLabel) {
323+
return String(scales[c.scale]?.label ?? c?.label ?? defaultLabel);
321324
}

0 commit comments

Comments
 (0)