Skip to content

Commit 44e837f

Browse files
feat: WebGL shreds chart
1 parent 423bf54 commit 44e837f

13 files changed

Lines changed: 1233 additions & 110 deletions

File tree

package-lock.json

Lines changed: 57 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
"react-use": "^17.5.1",
5151
"react-virtualized-auto-sizer": "^1.0.24",
5252
"react-virtuoso": "^4.13.0",
53+
"three": "0.184.0",
5354
"uplot": "^1.6.32",
5455
"use-debounce": "^10.0.3",
5556
"zod": "^4.1.13"
@@ -68,6 +69,7 @@
6869
"@types/node": "^22.7.0",
6970
"@types/react": "^18.3.26",
7071
"@types/react-dom": "^18.3.7",
72+
"@types/three": "^0.184.0",
7173
"@vitejs/plugin-react": "^4.3.1",
7274
"baseline-browser-mapping": "^2.10.29",
7375
"eslint": "^9.11.1",

src/api/entities.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -971,6 +971,10 @@ export enum ShredEvent {
971971
shred_published = 6,
972972
}
973973

974+
export const SHRED_EVENT_TYPES_COUNT = Object.values(ShredEvent).filter(
975+
(v) => typeof v === "number",
976+
).length;
977+
974978
export const liveShredsSchema = z.object({
975979
reference_slot: z.number(),
976980
reference_ts: z.coerce.bigint(),

src/api/useSetAtomWsData.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ import {
3838
deleteSupermajorityDeltaEntriesAtom,
3939
resetSupermajorityAtom,
4040
} from "../atoms";
41-
import { shredsAtoms } from "../features/Overview/ShredsProgression/atoms";
41+
import {
42+
shredsAtoms,
43+
setDirtySlotOnSkippedChangeAtom,
44+
} from "../features/Overview/ShredsProgression/atoms";
4245
import { xRangeMs } from "./worker/cache/shreds/shredsCalc";
4346
import { rateLiveWaterfallAtom } from "../features/Overview/SlotPerformance/atoms";
4447
import {
@@ -343,6 +346,9 @@ function useUpdateAtoms() {
343346

344347
const addSkippedClusterSlots = useSetAtom(addSkippedClusterSlotsAtom);
345348
const deleteSkippedClusterSlot = useSetAtom(deleteSkippedClusterSlotAtom);
349+
const setDirtySlotOnSkippedChange = useSetAtom(
350+
setDirtySlotOnSkippedChangeAtom,
351+
);
346352

347353
const addLateVoteSlots = useSetAtom(addLateVoteSlotAtom);
348354
const deleteLateVoteSlot = useSetAtom(deleteLateVoteSlotAtom);
@@ -353,10 +359,13 @@ function useUpdateAtoms() {
353359
(value: SlotResponse) => {
354360
setSlotStatus(value.publish.slot, value.publish.level);
355361

362+
const slot = value.publish.slot;
363+
setDirtySlotOnSkippedChange(slot, value.publish.skipped);
364+
356365
if (value.publish.skipped) {
357-
addSkippedClusterSlots([value.publish.slot]);
366+
addSkippedClusterSlots([slot]);
358367
} else {
359-
deleteSkippedClusterSlot(value.publish.slot);
368+
deleteSkippedClusterSlot(slot);
360369
}
361370

362371
if (value.publish.level === "rooted") {
@@ -391,6 +400,7 @@ function useUpdateAtoms() {
391400
addSkippedClusterSlots,
392401
deleteLateVoteSlot,
393402
deleteSkippedClusterSlot,
403+
setDirtySlotOnSkippedChange,
394404
setSkippedSlots,
395405
setSlotStatus,
396406
],

0 commit comments

Comments
 (0)