Skip to content

Commit bdff544

Browse files
chore: update replayed shreds colors
1 parent c12c60f commit bdff544

File tree

3 files changed

+75
-36
lines changed

3 files changed

+75
-36
lines changed

src/colors.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,12 +143,15 @@ export const nextSlotValueColor = "#CACACA";
143143
export const gridTicksColor = "#858585";
144144
export const gridLineColor = "#312D42";
145145

146-
export const shredRepairRequestedColor = "#A34B4B";
147-
export const shredReceivedTurbineColor = "#106AA7";
148-
export const shredReceivedRepairColor = "#885D2D";
149-
export const shredReplayStartedColor = "#326E79";
150-
export const shredReplayedColor = "#1C443A";
151-
export const shredSkippedColor = "#FF5353";
146+
export const shredRepairRequestedColor = "#8B5148";
147+
export const shredReceivedTurbineColor = "#3E6883";
148+
export const shredReceivedRepairColor = "#896549";
149+
export const shredReplayStartedColor = "#3A7B84";
150+
export const shredReplayedTurbineColor = "#59A693";
151+
export const shredReplayedRepairColor = "#5C844B";
152+
export const shredReplayedNothingColor = "#616A68";
153+
export const shredSkippedColor = "#8B4648";
154+
export const shredPublishedColor = "#685C70";
152155

153156
// epoch bar
154157
export const epochTextColor = "#FAFAFA";

src/features/Overview/ShredsProgression/const.ts

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,8 @@
11
import { ShredEvent } from "../../../api/entities";
2-
import {
3-
shredRepairRequestedColor,
4-
shredReceivedTurbineColor,
5-
shredReceivedRepairColor,
6-
shredReplayedColor,
7-
shredReplayStartedColor,
8-
} from "../../../colors";
92

103
export const xRangeMs = 10_000;
114
export const delayMs = 50;
125

13-
export const shredColors: {
14-
[key in Exclude<ShredEvent, ShredEvent.slot_complete>]: string;
15-
} = {
16-
[ShredEvent.shred_repair_request]: shredRepairRequestedColor,
17-
[ShredEvent.shred_received_turbine]: shredReceivedTurbineColor,
18-
[ShredEvent.shred_received_repair]: shredReceivedRepairColor,
19-
[ShredEvent.shred_replay_start]: shredReplayStartedColor,
20-
[ShredEvent.shred_replayed]: shredReplayedColor,
21-
};
22-
236
/**
247
* Draw highest to lowest priority events.
258
* Ignore lower priority events that overlap.

src/features/Overview/ShredsProgression/shredsProgressionPlugin.ts

Lines changed: 66 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,18 @@ import {
55
type ShredEventTsDeltas,
66
type SlotsShreds,
77
} from "./atoms";
8-
import { delayMs, shredColors, shredEventDescPriorities } from "./const";
8+
import { delayMs, shredEventDescPriorities } from "./const";
99
import { showStartupProgressAtom } from "../../StartupProgress/atoms";
10-
import { shredSkippedColor } from "../../../colors";
10+
import {
11+
shredReceivedRepairColor,
12+
shredReceivedTurbineColor,
13+
shredRepairRequestedColor,
14+
shredReplayedNothingColor,
15+
shredReplayedRepairColor,
16+
shredReplayedTurbineColor,
17+
shredReplayStartedColor,
18+
shredSkippedColor,
19+
} from "../../../colors";
1120
import { skippedClusterSlotsAtom } from "../../../atoms";
1221
import { clamp } from "lodash";
1322
import { ShredEvent } from "../../../api/entities";
@@ -94,6 +103,13 @@ export function shredsProgressionPlugin(
94103

95104
for (const slotNumber of orderedSlotNumbers) {
96105
const eventsByFillStyle: EventsByFillStyle = {};
106+
const addEventPosition = (
107+
fillStyle: string,
108+
position: [x: number, y: number, width: number],
109+
) => {
110+
eventsByFillStyle[fillStyle] ??= [];
111+
eventsByFillStyle[fillStyle].push(position);
112+
};
97113

98114
const slot = liveShreds.slots.get(slotNumber);
99115
if (!slot) continue;
@@ -111,7 +127,7 @@ export function shredsProgressionPlugin(
111127
);
112128

113129
addEventsForRow({
114-
eventsByFillStyle,
130+
addEventPosition,
115131
u,
116132
firstShredIdx,
117133
lastShredIdx,
@@ -199,7 +215,10 @@ const getDrawInfo = (
199215
};
200216

201217
interface AddEventsForRowArgs {
202-
eventsByFillStyle: EventsByFillStyle;
218+
addEventPosition: (
219+
fillStyle: string,
220+
position: [x: number, y: number, width: number],
221+
) => void;
203222
u: uPlot;
204223
firstShredIdx: number;
205224
lastShredIdx: number;
@@ -217,12 +236,11 @@ interface AddEventsForRowArgs {
217236
getXPos: (xVal: number) => number;
218237
}
219238
/**
220-
* Mutate eventsByFillStyle
221239
* Draw rows for shreds, with rectangles or dots for events.
222240
* Each row may represent partial or multiple shreds. Use the most completed shred.
223241
*/
224242
function addEventsForRow({
225-
eventsByFillStyle,
243+
addEventPosition,
226244
u,
227245
firstShredIdx,
228246
lastShredIdx,
@@ -256,6 +274,11 @@ function addEventsForRow({
256274
: // event goes to slot completion or max x
257275
Math.min(getXPos(slotCompletionTsDelta - tsXValueOffset), maxXPos);
258276

277+
const eventPositions = new Map<
278+
Exclude<ShredEvent, ShredEvent.slot_complete>,
279+
[x: number, y: number, width: number]
280+
>();
281+
259282
// draw events from highest to lowest priority
260283
for (const eventType of shredEventDescPriorities) {
261284
const tsDelta = eventTsDeltas[eventType];
@@ -269,19 +292,49 @@ function addEventsForRow({
269292

270293
const yOffset = getYOffset?.(eventType) ?? 0;
271294

272-
const fillStyle = isSlotSkipped
273-
? shredSkippedColor
274-
: (shredColors[eventType] ?? "transparent");
275-
276-
eventsByFillStyle[fillStyle] ??= [];
277-
eventsByFillStyle[fillStyle].push(
295+
eventPositions.set(
296+
eventType,
278297
drawOnlyDots || isSlotSkipped
279298
? [startXPos, y + yOffset, dotWidth]
280299
: [startXPos, y + yOffset, endXPos - startXPos],
281300
);
282-
283301
endXPos = startXPos;
284302
}
303+
304+
for (const [eventType, position] of eventPositions.entries()) {
305+
if (isSlotSkipped) {
306+
addEventPosition(shredSkippedColor, position);
307+
continue;
308+
}
309+
switch (eventType) {
310+
case ShredEvent.shred_repair_request: {
311+
addEventPosition(shredRepairRequestedColor, position);
312+
break;
313+
}
314+
case ShredEvent.shred_received_turbine: {
315+
addEventPosition(shredReceivedTurbineColor, position);
316+
break;
317+
}
318+
case ShredEvent.shred_received_repair: {
319+
addEventPosition(shredReceivedRepairColor, position);
320+
break;
321+
}
322+
case ShredEvent.shred_replay_start: {
323+
addEventPosition(shredReplayStartedColor, position);
324+
break;
325+
}
326+
case ShredEvent.shred_replayed: {
327+
if (eventPositions.has(ShredEvent.shred_received_repair)) {
328+
addEventPosition(shredReplayedRepairColor, position);
329+
} else if (eventPositions.has(ShredEvent.shred_received_turbine)) {
330+
addEventPosition(shredReplayedTurbineColor, position);
331+
} else {
332+
addEventPosition(shredReplayedNothingColor, position);
333+
}
334+
break;
335+
}
336+
}
337+
}
285338
}
286339

287340
function getMostCompletedShredIdx(

0 commit comments

Comments
 (0)