Platform
Resources
Pricing
Sign in
Get started
Marta Mullor
Creative Frontend Developer 👩🏻💻
Workspace
Fork
Published
By
Marta Mullor
Edited
Oct 12, 2022
Fork of
Project: How fast are API responses?
1
Insert cell
Insert cell
Insert cell
apiLogData
=
(
await
FileAttachment
(
"apiLogData.json"
)
.
json
(
)
)
// Load & parse the JSON file
.
map
(
(
d
)
=>
(
{
...
d
,
timestamp
:
new
Date
(
d
.
timestamp
)
}
)
)
// Convert string timestamps to Date objects
Insert cell
Inputs
.
table
(
apiLogData
)
Insert cell
Insert cell
Insert cell
Plot
.
dot
(
apiLogData
,
{
y
:
"duration"
,
x
:
"timestamp"
,
fill
:
"path"
,
fillOpacity
:
0.5
,
title
:
(
d
)
=>
[
d
.
path
,
`${
d
.
duration
} ms`
,
`status ${
d
.
status_code
}`
]
.
join
(
"\n"
)
}
)
.
plot
(
{
width
,
marginLeft
:
80
}
)
Insert cell
Insert cell
Insert cell
viewof
favColors
=
Inputs
.
checkbox
(
[
"red"
,
"orange"
,
"yellow"
,
"green"
,
"blue"
,
"purple"
]
,
{
label
:
"Colors I like:"
}
)
Insert cell
Insert cell
favColors
Insert cell
Insert cell
favColors
.
map
(
(
s
)
=>
s
.
toUpperCase
(
)
)
Insert cell
`I like the colors ${
favColors
.
join
(
", "
)
}`
Insert cell
Insert cell
selectedCodes
Insert cell
statusCodes
=
Array
.
from
(
new
Set
(
apiLogData
.
map
(
(
d
)
=>
d
.
status_code
)
)
)
.
sort
(
)
Insert cell
Insert cell
Insert cell
Insert cell
Plot
.
dot
(
apiLogData
.
filter
(
(
d
)
=>
selectedCodes
.
includes
(
d
.
status_code
)
)
,
{
y
:
"duration"
,
x
:
"timestamp"
,
fill
:
"path"
,
fillOpacity
:
0.5
,
title
:
(
d
)
=>
[
d
.
path
,
`${
d
.
duration
} ms`
,
`status ${
d
.
status_code
}`
]
.
join
(
"\n"
)
}
)
.
plot
(
{
width
,
marginLeft
:
50
}
)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Inputs
.
table
(
pathSearch
)
Insert cell
Plot
.
dot
(
pathSearch
.
filter
(
(
d
)
=>
selectedCodes
.
includes
(
d
.
status_code
)
)
,
{
y
:
"duration"
,
x
:
"timestamp"
,
fill
:
"path"
,
fillOpacity
:
0.5
,
title
:
(
d
)
=>
[
d
.
path
,
`${
d
.
duration
} ms`
,
`status ${
d
.
status_code
}`
]
.
join
(
"\n"
)
}
)
.
plot
(
{
width
,
marginLeft
:
50
}
)
Insert cell
Insert cell
Insert cell
viewof
finishedSelectedCodes
=
Inputs
.
checkbox
(
statusCodes
,
{
value
:
statusCodes
}
)
Insert cell
viewof
finishedPathSearch
=
Inputs
.
search
(
apiLogData
)
Insert cell
// One possible solution; yours may differ!
finishedResponses
=
Plot
.
dot
(
finishedPathSearch
.
filter
(
(
d
)
=>
finishedSelectedCodes
.
includes
(
d
.
status_code
)
)
,
{
x
:
"timestamp"
,
y
:
"duration"
,
fill
:
"path"
,
fillOpacity
:
0.5
,
title
:
(
d
)
=>
[
d
.
path
,
`${
d
.
duration
} ms`
,
`status ${
d
.
status_code
}`
]
.
join
(
"\n"
)
}
)
.
plot
(
{
width
,
marginLeft
:
50
}
)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Purpose-built for displays of data
Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Try it for free
Learn more
Compare fork
Fork
View
Export
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
apiLogData
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
responseTimes
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
favColors
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
statusCheckboxes
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
statusCodes
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
filterByStatus
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
filtered
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
filterBySearch
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
selectedCodes
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
pathSearch
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
finishedSelectedCodes
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
finishedPathSearch
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
finishedResponses
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
customStyles
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML