Skip to content
Snippets Groups Projects
Commit 32db48c0 authored by Adel LAKHDAR's avatar Adel LAKHDAR
Browse files

Merge branch 'feat/clickable-monthly-summary' into 'dev'

feat(analysis): Make monthly summary button clickable

See merge request !1124
parents 15958b21 4f966f60
No related branches found
No related tags found
2 merge requests!11623.0 Release,!1124feat(analysis): Make monthly summary button clickable
...@@ -5,8 +5,10 @@ import { useI18n } from 'cozy-ui/transpiled/react/I18n' ...@@ -5,8 +5,10 @@ import { useI18n } from 'cozy-ui/transpiled/react/I18n'
import { FluidType, TimeStep } from 'enums' import { FluidType, TimeStep } from 'enums'
import { PerformanceIndicator } from 'models' import { PerformanceIndicator } from 'models'
import React, { useEffect, useMemo, useState } from 'react' import React, { useEffect, useMemo, useState } from 'react'
import { useNavigate } from 'react-router-dom'
import ConsumptionService from 'services/consumption.service' import ConsumptionService from 'services/consumption.service'
import { setPeriod } from 'store/analysis/analysis.slice' import { setPeriod } from 'store/analysis/analysis.slice'
import { setCurrentTimeStep, setShowCompare } from 'store/chart/chart.slice'
import { useAppDispatch, useAppSelector } from 'store/hooks' import { useAppDispatch, useAppSelector } from 'store/hooks'
import FluidPerformanceIndicator from './FluidPerformanceIndicator' import FluidPerformanceIndicator from './FluidPerformanceIndicator'
import './comparison.scss' import './comparison.scss'
...@@ -20,9 +22,11 @@ const Comparison = ({ ...@@ -20,9 +22,11 @@ const Comparison = ({
}) => { }) => {
const { t } = useI18n() const { t } = useI18n()
const client = useClient() const client = useClient()
const navigate = useNavigate()
const { const {
global: { fluidTypes }, global: { fluidTypes },
analysis: { period, analysisMonth }, analysis: { period, analysisMonth },
chart: { showCompare },
} = useAppSelector(state => state.ecolyo) } = useAppSelector(state => state.ecolyo)
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
const [yearPerformanceIndicators, setYearPerformanceIndicators] = useState< const [yearPerformanceIndicators, setYearPerformanceIndicators] = useState<
...@@ -33,6 +37,7 @@ const Comparison = ({ ...@@ -33,6 +37,7 @@ const Comparison = ({
() => new ConsumptionService(client), () => new ConsumptionService(client),
[client] [client]
) )
const periods = useMemo(() => { const periods = useMemo(() => {
return { return {
monthPeriod: { monthPeriod: {
...@@ -49,6 +54,7 @@ const Comparison = ({ ...@@ -49,6 +54,7 @@ const Comparison = ({
}, },
} }
}, [analysisMonth]) }, [analysisMonth])
const NAVIGATION_HEIGHT = 40 const NAVIGATION_HEIGHT = 40
const loaderPlaceholderHeight = const loaderPlaceholderHeight =
fluidsWithData.length * 84 + fluidsWithData.length * 84 +
...@@ -94,6 +100,33 @@ const Comparison = ({ ...@@ -94,6 +100,33 @@ const Comparison = ({
dispatch, dispatch,
]) ])
const handleFluidClick = (fluid: FluidType) => {
let fluidTypeText: string
switch (fluid) {
case FluidType.ELECTRICITY:
fluidTypeText = 'electricity'
break
case FluidType.WATER:
fluidTypeText = 'water'
break
case FluidType.GAS:
fluidTypeText = 'gas'
break
default:
fluidTypeText = 'unknown'
}
const url = `/consumption/${fluidTypeText}`
dispatch(setCurrentTimeStep(TimeStep.MONTH))
if (period === 'year') {
dispatch(setShowCompare(true))
} else {
dispatch(setShowCompare(false))
}
navigate(url)
}
return ( return (
<div className="comparison"> <div className="comparison">
{!isLoading && ( {!isLoading && (
...@@ -156,6 +189,7 @@ const Comparison = ({ ...@@ -156,6 +189,7 @@ const Comparison = ({
? periods.previousMonthPeriod.startDate ? periods.previousMonthPeriod.startDate
: periods.previousYearPeriod.startDate : periods.previousYearPeriod.startDate
} }
onClickHandler={() => handleFluidClick(fluid)}
/> />
))} ))}
</div> </div>
......
...@@ -12,12 +12,14 @@ interface FluidPerformanceIndicatorProps { ...@@ -12,12 +12,14 @@ interface FluidPerformanceIndicatorProps {
performanceIndicator: PerformanceIndicator performanceIndicator: PerformanceIndicator
fluidType: FluidType fluidType: FluidType
comparisonDate: DateTime comparisonDate: DateTime
onClickHandler?: () => void
} }
const FluidPerformanceIndicator = ({ const FluidPerformanceIndicator = ({
performanceIndicator, performanceIndicator,
fluidType, fluidType,
comparisonDate, comparisonDate,
onClickHandler,
}: FluidPerformanceIndicatorProps) => { }: FluidPerformanceIndicatorProps) => {
const { t } = useI18n() const { t } = useI18n()
const iconType = getPicto(fluidType) const iconType = getPicto(fluidType)
...@@ -36,7 +38,7 @@ const FluidPerformanceIndicator = ({ ...@@ -36,7 +38,7 @@ const FluidPerformanceIndicator = ({
} }
return ( return (
<div className="fpi"> <button className="fpi" onClick={onClickHandler}>
<StyledIcon icon={iconType} size={50} /> <StyledIcon icon={iconType} size={50} />
<div className="fpi-content"> <div className="fpi-content">
{!displayedValue && ( {!displayedValue && (
...@@ -72,7 +74,7 @@ const FluidPerformanceIndicator = ({ ...@@ -72,7 +74,7 @@ const FluidPerformanceIndicator = ({
</> </>
)} )}
</div> </div>
</div> </button>
) )
} }
......
...@@ -35,6 +35,17 @@ ...@@ -35,6 +35,17 @@
gap: 1rem; gap: 1rem;
align-items: center; align-items: center;
box-shadow: 0px 4px 16px 0px $black-shadow; box-shadow: 0px 4px 16px 0px $black-shadow;
transition: background-color 0.3s;
background: linear-gradient(180deg, #323339 0%, #25262b 100%);
cursor: pointer;
&:hover {
background: linear-gradient(
180deg,
rgba(70, 71, 77, 0.7) 0%,
rgba(57, 58, 63, 0.7) 100%
);
}
.fpi-content { .fpi-content {
.fpi-value { .fpi-value {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment