A replay UI can show the interleaved stream or focus on one named history. This script models the filtered view as ordinary data.

Program

Play the script to choose a stream and see the view label, color, and event count stay together.

view_index
filtered_stream_replay.R
Replay: real traced execution (multi-file project)
view_index <- 2
views <- c("main", "worker", "io")
colors <- c("blue", "green", "orange")
event_counts <- c(4, 3, 2)
view <- views[view_index]
color <- colors[view_index]
count <- event_counts[view_index]
label <- paste(view, color, count, sep = ":")
cat(label, "\n", sep = "")
view_index <- 1
views <- c("main", "worker", "io")
colors <- c("blue", "green", "orange")
event_counts <- c(4, 3, 2)
view <- views[view_index]
color <- colors[view_index]
count <- event_counts[view_index]
label <- paste(view, color, count, sep = ":")
cat(label, "\n", sep = "")
view_index <- 3
views <- c("main", "worker", "io")
colors <- c("blue", "green", "orange")
event_counts <- c(4, 3, 2)
view <- views[view_index]
color <- colors[view_index]
count <- event_counts[view_index]
label <- paste(view, color, count, sep = ":")
cat(label, "\n", sep = "")
  1. view_index ← 2

    1view_index <- 22views <- c("main", "worker", "io")
    values this step2view_index
  2. views ← main, worker, io

    1view_index <- 22views <- c("main", "worker", "io")3colors <- c("blue", "green", "orange")
    values this stepmain, worker, ioviews
  3. colors ← blue, green, orange

    2views <- c("main", "worker", "io")3colors <- c("blue", "green", "orange")4event_counts <- c(4, 3, 2)
    values this stepblue, green, orangecolors
  4. event_counts ← 4, 3, 2

    3colors <- c("blue", "green", "orange")4event_counts <- c(4, 3, 2)5view <- views[view_index]
    values this step4, 3, 2event_counts
  5. view ← worker

    4event_counts <- c(4, 3, 2)5view <- views[view_index]6color <- colors[view_index]
    values this stepworkerview2view_index
  6. color ← green

    5view <- views[view_index]6color <- colors[view_index]7count <- event_counts[view_index]
    values this stepgreencolor2view_index
  7. count ← 3

    6color <- colors[view_index]7count <- event_counts[view_index]8label <- paste(view, color, count, sep = ":")
    values this step3count4, 3, 2event_counts2view_index
  8. label ← worker:green:3

    7count <- event_counts[view_index]8label <- paste(view, color, count, sep = ":")9cat(label, "\n", sep = "")
    values this stepworker:green:3labelworkerviewgreencolor3count
  9. cat(label, " ", sep = "")

    8label <- paste(view, color, count, sep = ":")9cat(label, "\n", sep = "")
    outputworker:green:3
    values this stepworker:green:3label
  1. view_index ← 1

    1view_index <- 12views <- c("main", "worker", "io")
    values this step1view_index
  2. views ← main, worker, io

    1view_index <- 12views <- c("main", "worker", "io")3colors <- c("blue", "green", "orange")
    values this stepmain, worker, ioviews
  3. colors ← blue, green, orange

    2views <- c("main", "worker", "io")3colors <- c("blue", "green", "orange")4event_counts <- c(4, 3, 2)
    values this stepblue, green, orangecolors
  4. event_counts ← 4, 3, 2

    3colors <- c("blue", "green", "orange")4event_counts <- c(4, 3, 2)5view <- views[view_index]
    values this step4, 3, 2event_counts
  5. view ← main

    4event_counts <- c(4, 3, 2)5view <- views[view_index]6color <- colors[view_index]
    values this stepmainview1view_index
  6. color ← blue

    5view <- views[view_index]6color <- colors[view_index]7count <- event_counts[view_index]
    values this stepbluecolor1view_index
  7. count ← 4

    6color <- colors[view_index]7count <- event_counts[view_index]8label <- paste(view, color, count, sep = ":")
    values this step4count4, 3, 2event_counts1view_index
  8. label ← main:blue:4

    7count <- event_counts[view_index]8label <- paste(view, color, count, sep = ":")9cat(label, "\n", sep = "")
    values this stepmain:blue:4labelmainviewbluecolor4count
  9. cat(label, " ", sep = "")

    8label <- paste(view, color, count, sep = ":")9cat(label, "\n", sep = "")
    outputmain:blue:4
    values this stepmain:blue:4label
  1. view_index ← 3

    1view_index <- 32views <- c("main", "worker", "io")
    values this step3view_index
  2. views ← main, worker, io

    1view_index <- 32views <- c("main", "worker", "io")3colors <- c("blue", "green", "orange")
    values this stepmain, worker, ioviews
  3. colors ← blue, green, orange

    2views <- c("main", "worker", "io")3colors <- c("blue", "green", "orange")4event_counts <- c(4, 3, 2)
    values this stepblue, green, orangecolors
  4. event_counts ← 4, 3, 2

    3colors <- c("blue", "green", "orange")4event_counts <- c(4, 3, 2)5view <- views[view_index]
    values this step4, 3, 2event_counts
  5. view ← io

    4event_counts <- c(4, 3, 2)5view <- views[view_index]6color <- colors[view_index]
    values this stepioview3view_index
  6. color ← orange

    5view <- views[view_index]6color <- colors[view_index]7count <- event_counts[view_index]
    values this steporangecolor3view_index
  7. count ← 2

    6color <- colors[view_index]7count <- event_counts[view_index]8label <- paste(view, color, count, sep = ":")
    values this step2count4, 3, 2event_counts3view_index
  8. label ← io:orange:2

    7count <- event_counts[view_index]8label <- paste(view, color, count, sep = ":")9cat(label, "\n", sep = "")
    values this stepio:orange:2labeliovieworangecolor2count
  9. cat(label, " ", sep = "")

    8label <- paste(view, color, count, sep = ":")9cat(label, "\n", sep = "")
    outputio:orange:2
    values this stepio:orange:2label
filtered history Choosing one history is just selecting one stream from the composed replay data.
color label A stable color label helps distinguish histories without changing the source file.
count check The event count makes the selected history easy to verify.