🏟🌦 Checkpoint
./public/index.js:1954897/89394
This commit is contained in:
1 parent
80a0b0aa1f
commit
44cd6dd3bb
2 files changed
+95
-40
No files matched your search
@@ -543,3 +543,32 @@ ECSW,1636909147757,4
|
|||||||
ECSW,1636909163750,6
|
ECSW,1636909163750,6
|
||||||
ECSW,1636909180516,5
|
ECSW,1636909180516,5
|
||||||
ECSW,1636909215665,6
|
ECSW,1636909215665,6
|
||||||
|
ECSW,1636909229400,5
|
||||||
|
ECSW,1636909243731,6
|
||||||
|
ECSW,1636909274937,7
|
||||||
|
ECSW,1636909289079,5
|
||||||
|
ECSW,1636909315656,6
|
||||||
|
ECSW,1636909333963,6
|
||||||
|
ECSW,1636909348537,5
|
||||||
|
ECSW,1636909363417,4
|
||||||
|
ECSW,1636909382345,5
|
||||||
|
ECSW,1636909407321,5
|
||||||
|
ECSW,1636909421900,3
|
||||||
|
ECSW,1636909438132,5
|
||||||
|
ECSW,1636909452476,4
|
||||||
|
ECSW,1636909466423,4
|
||||||
|
ECSW,1636909481481,4
|
||||||
|
ECSW,1636909495551,3
|
||||||
|
ECSW,1636909532824,3
|
||||||
|
ECSW,1636909545720,3
|
||||||
|
ECSW,1636909565938,4
|
||||||
|
ECSW,1636909580958,6
|
||||||
|
ECSW,1636909601361,6
|
||||||
|
ECSW,1636909625543,6
|
||||||
|
ECSW,1636909659108,6
|
||||||
|
ECSW,1636909672982,4
|
||||||
|
ECSW,1636909693465,5
|
||||||
|
ECSW,1636909707199,5
|
||||||
|
ECSW,1636909721382,5
|
||||||
|
ECSW,1636909744777,4
|
||||||
|
ECSW,1636909764092,5
|
||||||
|
+66
-40
@@ -68,9 +68,15 @@ for (const [id, building] of Object.entries(buildings)) {
|
|||||||
|
|
||||||
// Update map colors every minute
|
// Update map colors every minute
|
||||||
drawRegions()
|
drawRegions()
|
||||||
|
let chart = null
|
||||||
|
let currentChart = null
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
drawRegions()
|
drawRegions()
|
||||||
}, 60 * 1000)
|
if (chart) {
|
||||||
|
updateChart(currentChart)
|
||||||
|
}
|
||||||
|
// }, 60 * 1000)
|
||||||
|
}, 6000)
|
||||||
|
|
||||||
async function drawRegions() {
|
async function drawRegions() {
|
||||||
const data = await getData()
|
const data = await getData()
|
||||||
@@ -161,7 +167,7 @@ async function displayCard(id) {
|
|||||||
<canvas id="myChart" height="80"></canvas>
|
<canvas id="myChart" height="80"></canvas>
|
||||||
`
|
`
|
||||||
card.style.setProperty("--region", `'${id}'`)
|
card.style.setProperty("--region", `'${id}'`)
|
||||||
updateChart(data)
|
updateChart(id)
|
||||||
await card.animate([
|
await card.animate([
|
||||||
{ transform: 'translateY(0%)', opacity: "1" },
|
{ transform: 'translateY(0%)', opacity: "1" },
|
||||||
], {
|
], {
|
||||||
@@ -172,24 +178,31 @@ async function displayCard(id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function updateChart(data) {
|
async function updateChart(id) {
|
||||||
const parsed = data.map(d => {
|
currentChart = id
|
||||||
// this is 0-5
|
const parsed = (await getData())
|
||||||
let ago = Math.floor((Date.now() - d.time) / STEP)
|
.filter(d => d.loc === id && Date.now() - d.time < INTERVAL)
|
||||||
// if (20 < ago) ago = 20
|
.map(d => {
|
||||||
return {time: d.time, ago, count: d.count}
|
// this is 0-5
|
||||||
}).reduce((acc, v) => {
|
let ago = Math.floor((Date.now() - d.time) / STEP)
|
||||||
if (!acc[v.ago]) {
|
// if (20 < ago) ago = 20
|
||||||
acc[v.ago] = []
|
return {time: d.time, ago, count: d.count}
|
||||||
}
|
}).reduce((acc, v) => {
|
||||||
acc[v.ago].push(v.count)
|
if (!acc[v.ago]) {
|
||||||
return acc
|
acc[v.ago] = []
|
||||||
}, Array.from({ length: 6 })).map(v => {
|
}
|
||||||
if (typeof v === 'undefined') return NaN
|
acc[v.ago].push(v.count)
|
||||||
return v.reduce((acc, v) => acc + v, 0) / v.length
|
return acc
|
||||||
})
|
}, Array.from({ length: 6 })).map(v => {
|
||||||
|
if (typeof v === 'undefined') return NaN
|
||||||
|
return v.reduce((acc, v) => acc + v, 0) / v.length
|
||||||
|
})
|
||||||
|
|
||||||
|
const canvas = document.getElementById('myChart')
|
||||||
|
canvas.width = canvas.width
|
||||||
|
canvas.innerHTML = canvas.innerHTML
|
||||||
|
const ctx = canvas.getContext('2d')
|
||||||
|
|
||||||
const ctx = document.getElementById('myChart').getContext('2d')
|
|
||||||
|
|
||||||
const min = STEP / 1000 / 60
|
const min = STEP / 1000 / 60
|
||||||
|
|
||||||
@@ -197,27 +210,40 @@ function updateChart(data) {
|
|||||||
'Now', `${min}m ago`, `${min * 2}m ago`, `${min * 3}m ago`, `${min * 4}m ago`, `${min * 5}m ago`
|
'Now', `${min}m ago`, `${min * 2}m ago`, `${min * 3}m ago`, `${min * 4}m ago`, `${min * 5}m ago`
|
||||||
].reverse()
|
].reverse()
|
||||||
|
|
||||||
new Chart(ctx, {
|
if (!chart) {
|
||||||
type: 'line',
|
chart = new Chart(ctx, {
|
||||||
data: {
|
type: 'line',
|
||||||
labels,
|
data: {
|
||||||
datasets: [{
|
labels,
|
||||||
label: 'Density',
|
datasets: [{
|
||||||
data: parsed.slice(0, labels.length).reverse(),
|
label: 'Density',
|
||||||
borderColor: '#55aadd',
|
data: parsed.slice(0, labels.length).reverse(),
|
||||||
backgroundColor: '#55aadd',
|
borderColor: '#55aadd',
|
||||||
// borderWidth: 2
|
backgroundColor: '#55aadd',
|
||||||
}]
|
// borderWidth: 2
|
||||||
},
|
}]
|
||||||
options: {
|
},
|
||||||
scales: {
|
options: {
|
||||||
x: {
|
scales: {
|
||||||
beginAtZero: true,
|
x: {
|
||||||
},
|
beginAtZero: true,
|
||||||
y: {
|
},
|
||||||
beginAtZero: true,
|
y: {
|
||||||
|
beginAtZero: true,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
})
|
} else {
|
||||||
|
chart.data.datasets = [{
|
||||||
|
label: 'Density',
|
||||||
|
data: parsed.slice(0, labels.length).reverse(),
|
||||||
|
borderColor: '#55aadd',
|
||||||
|
backgroundColor: '#55aadd',
|
||||||
|
// borderWidth: 2
|
||||||
|
}]
|
||||||
|
chart.update()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user