Public
Edited
Nov 17, 2022
Insert cell
Insert cell
chart(tree)
Insert cell
url = "https://econtwitter.net/@Edent@mastodon.social/109359170070635243"
Insert cell
urlParse = (url) => {
const idsMatcher = /\@[^\@\/]*/ig
const ids = url.match(idsMatcher)
const instance = url.split('@')[0].split('/').slice(-2)[0]
const status = url.split('/').slice(-1)[0]
return ({instance:instance, status:status})
}
Insert cell
urlParse(url)
Insert cell
getUrlStatus = (urlObject) => {
const status = `https://${urlObject.instance}/api/v1/statuses/${urlObject.status}`
const context = `https://${urlObject.instance}/api/v1/statuses/${urlObject.status}/context`
return ({status:status, context:context})
}
Insert cell
urlStatus = getUrlStatus(urlParse(url))
Insert cell
getStatus = (url) => {
return d3.json(url.status)
}
Insert cell
getContext = (url) => {
return d3.json(url.context)
}
Insert cell
status = getStatus(urlStatus)
Insert cell
context = getContext(urlStatus)
Insert cell
bootstrapTree = (status, context) => {
var root = {name: stripHTML(status.content), children: []}
context.descendants.forEach(
(child) => root.children.push({
name:stripHTML(child.content),
children: []
})
)
return root
}
Insert cell
stripHTML = (text) => {
return text.replace(/<[^>]+>/g, '')
}
Insert cell
tree = bootstrapTree(status, context)
Insert cell
import {chart} from "@mauforonda/collapsible-tree"
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