Newer
Older
import AxisBottom from 'components/Charts/AxisBottom'
import AxisRight from 'components/Charts/AxisRight'
import Bar from 'components/Charts/Bar'
import { scaleBand, ScaleBand, scaleLinear, ScaleLinear } from 'd3-scale'
import { DataloadState, FluidType, TimeStep } from 'enums'
/** showCompare should be false for analysis view */
showCompare: boolean
width?: number
height?: number
marginLeft?: number
marginRight?: number
marginTop?: number
marginBottom?: number
clickable?: boolean
width = 600,
height = 400,
marginLeft = 10,
marginTop = 20,
marginBottom = 50,
isSwitching,
clickable = true,
const getContentWidth = () => {
return width - marginLeft - marginRight
}
const getContentHeight = () => {
return height - marginTop - marginBottom
}
const getMaxLoad = () => {
const maxCompare = chartData.comparisonData
? Math.max(...chartData.comparisonData.map(d => d.value))
: 0

Guilhem CARRON
committed
const max = chartData.actualData
? Math.max(...chartData.actualData.map(d => d.value))
: 0

Guilhem CARRON
committed
if (showCompare) {
if (max <= 0 && maxCompare <= 0) return 15
else return Math.max(max, maxCompare)
} else {
if (max <= 0) {
return 15
} else return max
}
}
const xScale: ScaleBand<string> = scaleBand()
.domain(
chartData.actualData.map(d =>
d.date.toLocaleString(DateTime.DATETIME_SHORT)
)
)
.range([0, getContentWidth()])
.padding(0.2)
const yScale: ScaleLinear<number, number> = scaleLinear()
.domain([0, getMaxLoad()])
.range([getContentHeight(), 0])
const sum = chartData.actualData.reduce((a, b) => a + b.value, 0)
const averageConsumption = sum / chartData.actualData.length
yScale={yScale}
width={width}
marginRight={marginRight}
marginTop={marginTop}
/>
{chartData.actualData.map((data, index) => (
? chartData.comparisonData[index]
: null
compare={showCompare}
xScale={xScale}
yScale={yScale}
height={getContentHeight()}
isMultiMissingFluid={
data.state === DataloadState.AGGREGATED_WITH_EMPTY ||
data.state === DataloadState.AGGREGATED_WITH_COMING ||
data.state === DataloadState.AGGREGATED_WITH_HOLE_OR_MISSING
clickable={clickable}
average={averageConsumption}
/>
))}
</g>
<AxisBottom
data={chartData.actualData}