Platform
Resources
Pricing
Sign in
Get started
GfK Displayr Engineering
Workspace
Fork
Public
we.innovate 2022 / tutorials
By
Misha Tsvelik
Edited
Sep 29, 2022
Fork of
Training: The Table - Part 1
2
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
input_data
=
tpx_table
.
sheet
(
0
,
{
headers
:
true
}
)
Insert cell
tpx_table
=
FileAttachment
(
"tpx_table.xlsx"
)
.
xlsx
(
)
Insert cell
Insert cell
Insert cell
getLabelPart
=
(
label
,
partIndex
)
=>
label
.
split
(
": "
)
[
partIndex
]
Insert cell
substractObjects
=
(
r1
,
r2
)
=>
{
return
Object
.
keys
(
r1
)
.
reduce
(
(
a
,
k
)
=>
{
a
[
k
]
=
typeof
r1
[
k
]
==
"string"
?
r1
[
k
]
:
(
typeof
r1
[
k
]
!=
"undefined"
)
&&
(
typeof
r2
[
k
]
!=
"undefined"
)
?
r1
[
k
]
-
r2
[
k
]
:
NaN
;
return
a
;
}
,
{
}
)
;
}
Insert cell
Insert cell
input_data_mapped
=
input_data
.
map
(
o
=>
{
return
{
touchpoint
:
getLabelPart
(
o
[
"Touchpoint Experience"
]
,
2
)
,
...
o
,
quadrant
:
getLabelPart
(
o
[
"Touchpoint Experience"
]
,
1
)
,
period
:
getLabelPart
(
o
[
"Touchpoint Experience"
]
,
0
)
}
}
)
Insert cell
Insert cell
input_data_indexed
=
d3
.
index
(
input_data_mapped
,
o
=>
o
.
period
,
o
=>
o
.
quadrant
,
o
=>
o
.
touchpoint
)
Insert cell
Insert cell
quadrantsFilterOptions
=
Array
.
from
(
new
Set
(
input_data_mapped
.
map
(
o
=>
o
.
quadrant
)
)
)
Insert cell
periods
=
Array
.
from
(
new
Set
(
input_data_mapped
.
map
(
o
=>
o
.
period
)
)
)
Insert cell
periodsFilterOptions
=
[
periods
[
0
]
,
`${
periods
[
0
]
} vs ${
periods
[
1
]
}`
]
Insert cell
Insert cell
touchpoints
=
Array
.
from
(
new
Set
(
input_data_mapped
.
map
(
o
=>
o
.
touchpoint
)
)
)
Insert cell
forTable
=
period
==
periods
[
0
]
?
touchpoints
.
map
(
o
=>
input_data_indexed
.
get
(
period
)
.
get
(
quadrant
)
.
get
(
o
)
)
:
touchpoints
.
map
(
o
=>
substractObjects
(
input_data_indexed
.
get
(
periods
[
0
]
)
.
get
(
quadrant
)
.
get
(
o
)
,
input_data_indexed
.
get
(
periods
[
1
]
)
.
get
(
quadrant
)
.
get
(
o
)
)
)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
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
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
touchpointExperience
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
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
input_data
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
tpx_table
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
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
getLabelPart
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
substractObjects
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
input_data_mapped
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
input_data_indexed
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
quadrantsFilterOptions
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
periods
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
periodsFilterOptions
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
touchpoints
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
forTable
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
columns
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
tableFormats
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
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
sparkbar
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
dynamicStyles
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
period
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
quadrant
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
forDisplay
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
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML