Public
Edited
Feb 26, 2024
1 fork
Insert cell
Insert cell
Insert cell
Insert cell
initialUnseen = 11
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
actions = [
loadPageAction(0),
markSeenAction(0),
loadPageAction(1)
]
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
loadPageAction = function (pageNumber) {
return () => {
mutable loadedPosts = mutable loadedPosts.concat(
apiSort(mutable apiPosts).filter(
(p, i) => (i >= pageNumber * postsPerPage) && (i < (pageNumber + 1) * postsPerPage)
)
)
}
}
Insert cell
markSeenAction = function (pageNumber) {
return () => {
mutable apiPosts = mutable apiPosts.map((post, i) => ({
...post,
unseen: (i >= pageNumber * postsPerPage) && (i < (pageNumber + 1) * postsPerPage) ? false : post.unseen
}))
}
}
Insert cell
Insert cell
apiSort = function (posts) {
return posts.toSorted((post1, post2) => {
if (!post1.unseen && post2.unseen) {
return 1;
} else if (post1.unseen && !post2.unseen) {
return -1;
}
return 0;
})
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
mutable eyeIndex = 42;
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.
Learn more