Public
Edited
Mar 27, 2022
Insert cell
Insert cell
// dataUrl = 'https://gateway.pinata.cloud/ipfs/QmQ1nX8rDj17qvauk1paPqaoCgvcVZ8cryarfr3tr2XGwP/f0688165.json'
Insert cell
providers = (await fetch('https://gateway.pinata.cloud/ipfs/QmQ1nX8rDj17qvauk1paPqaoCgvcVZ8cryarfr3tr2XGwP/providers.json')).json()
Insert cell
viewof selectedProvider = Inputs.select(d3.shuffle(providers))
Insert cell
provider = {
// return 'f0688165'
// return 'f02620'
return selectedProvider
}
Insert cell
Inputs.table(transitionsPretty)
Insert cell
dataUrl = {
return `https://bafybeiay4ivzjx3uvk7cyx3mp3kvyjnb26xj33nza6bsw54rnhnbgm67ry.ipfs.dweb.link/${provider}.json`
// return `https://gateway.pinata.cloud/ipfs/QmQ1nX8rDj17qvauk1paPqaoCgvcVZ8cryarfr3tr2XGwP/${provider}.json`
}
Insert cell
powerData = (await fetch(dataUrl)).json()
Insert cell
powerDataWithDates = powerData.map(obj => ({ ...obj, date: d3.isoParse(obj.date) }))
Insert cell
maxPower = {
return 166253442384265200 // f0688165
// return powerDataWithDates[powerDataWithDates.length - 1].qualityAdjPower
}
Insert cell
powerScale = d3.scalePow()
.exponent(0.25)
.domain([0, maxPower])
.range([0, 15])
Insert cell
logScale = d3.scaleLog()
.domain([32 * 1024 ** 3, maxPower])
.range([0, 30])
Insert cell
powerLevels = powerDataWithDates.map(({ date, qualityAdjPower }) => ({ date, qualityAdjPower, level: Math.round(powerScale(qualityAdjPower)) }))
Insert cell
transitions = powerLevels.reduce((acc, record) => {
const lastLevel = acc.length ? acc[acc.length - 1].level : -1
const newAcc = [...acc]
if (record.level > lastLevel) newAcc.push(record)
return newAcc
}, [])
Insert cell
transitionsPretty = transitions.map(({ date, qualityAdjPower, level }) => ({ date, level, qualityAdjPower: bytes(qualityAdjPower, { mode: 'binary' }) }))
Insert cell
md`## Imports`
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.
Learn more