frontend: fix health body-battery activity bands not rendering (inline ReferenceArea so recharts recognizes them)
This commit is contained in:
@@ -199,30 +199,6 @@ function ActivityRefLabel({ viewBox, icon }) {
|
|||||||
// *below* the battery bars (the negative Y region) so they don't obscure the data.
|
// *below* the battery bars (the negative Y region) so they don't obscure the data.
|
||||||
const ACTIVITY_BAND_BOTTOM = -18
|
const ACTIVITY_BAND_BOTTOM = -18
|
||||||
|
|
||||||
function ActivityBands({ activities, nearestT, sportColor, sportIcon }) {
|
|
||||||
return (activities || []).map(a => {
|
|
||||||
const start = new Date(a.start_time).getTime()
|
|
||||||
const end = a.duration_s ? start + a.duration_s * 1000 : start
|
|
||||||
const x1 = nearestT(start), x2 = nearestT(end)
|
|
||||||
if (x1 == null || x2 == null) return null
|
|
||||||
const color = sportColor(a.sport_type)
|
|
||||||
return (
|
|
||||||
<ReferenceArea
|
|
||||||
key={`area-${a.id}`}
|
|
||||||
x1={x1}
|
|
||||||
x2={x2}
|
|
||||||
y1={0}
|
|
||||||
y2={ACTIVITY_BAND_BOTTOM}
|
|
||||||
fill={color}
|
|
||||||
fillOpacity={0.9}
|
|
||||||
stroke={color}
|
|
||||||
strokeOpacity={1}
|
|
||||||
label={<ActivityRefLabel icon={sportIcon(a.sport_type)} />}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function BodyBatteryChart({ bb, hiresValues, sleepStart, sleepEnd, activities }) {
|
function BodyBatteryChart({ bb, hiresValues, sleepStart, sleepEnd, activities }) {
|
||||||
if (!bb) return null
|
if (!bb) return null
|
||||||
const { charged, drained, start_level, end_level } = bb
|
const { charged, drained, start_level, end_level } = bb
|
||||||
@@ -292,7 +268,18 @@ function BodyBatteryChart({ bb, hiresValues, sleepStart, sleepEnd, activities })
|
|||||||
<Cell key={i} fill={BB_INFERRED_COLOR[d.type]} />
|
<Cell key={i} fill={BB_INFERRED_COLOR[d.type]} />
|
||||||
))}
|
))}
|
||||||
</Bar>
|
</Bar>
|
||||||
<ActivityBands activities={activities} nearestT={nearestT} sportColor={sportColor} sportIcon={sportIcon} />
|
{(activities || []).map(a => {
|
||||||
|
const start = new Date(a.start_time).getTime()
|
||||||
|
const end = a.duration_s ? start + a.duration_s * 1000 : start
|
||||||
|
const x1 = nearestT(start), x2 = nearestT(end)
|
||||||
|
if (x1 == null || x2 == null) return null
|
||||||
|
const color = sportColor(a.sport_type)
|
||||||
|
return (
|
||||||
|
<ReferenceArea key={`area-${a.id}`} x1={x1} x2={x2} y1={0} y2={ACTIVITY_BAND_BOTTOM}
|
||||||
|
fill={color} fillOpacity={0.9} stroke={color} strokeOpacity={1}
|
||||||
|
label={<ActivityRefLabel icon={sportIcon(a.sport_type)} />} />
|
||||||
|
)
|
||||||
|
})}
|
||||||
</BarChart>
|
</BarChart>
|
||||||
</ResponsiveContainer>
|
</ResponsiveContainer>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user