Skip to content
Snippets Groups Projects
Commit b3bef1d7 authored by Romain CREY's avatar Romain CREY
Browse files

fix: loading chart + scale if 0

parent cd6ee760
No related branches found
No related tags found
2 merge requests!58Merge master into dev - v0.1.6,!54Challenge with no data + fluids on challenge + graph loader + bugs
import React, { useState, useContext } from 'react' import React, { useState, useContext, useEffect } from 'react'
import StyledSpinner from 'components/CommonKit/Spinner/StyledSpinner' import StyledSpinner from 'components/CommonKit/Spinner/StyledSpinner'
import CozyBar from 'components/ContainerComponents/CozyBar/CozyBar' import CozyBar from 'components/ContainerComponents/CozyBar/CozyBar'
import Header from 'components/ContainerComponents/Header/Header' import Header from 'components/ContainerComponents/Header/Header'
...@@ -12,9 +12,12 @@ import ChallengeCardContainer from 'components/ContainerComponents/ChallengeCard ...@@ -12,9 +12,12 @@ import ChallengeCardContainer from 'components/ContainerComponents/ChallengeCard
import KonnectorViewerContainer from 'components/ContainerComponents/KonnectorViewerContainer/KonnectorViewerContainer' import KonnectorViewerContainer from 'components/ContainerComponents/KonnectorViewerContainer/KonnectorViewerContainer'
const HomeViewContainer: React.FC = () => { const HomeViewContainer: React.FC = () => {
const { fluidTypes, previousTimeStep, setPreviousTimeStep } = useContext( const {
AppContext fluidTypes,
) previousTimeStep,
setPreviousTimeStep,
chartIsLoaded,
} = useContext(AppContext)
const [timeStep, setTimeStep] = useState<TimeStep>( const [timeStep, setTimeStep] = useState<TimeStep>(
previousTimeStep && previousTimeStep !== TimeStep.HALF_AN_HOUR previousTimeStep && previousTimeStep !== TimeStep.HALF_AN_HOUR
? previousTimeStep ? previousTimeStep
...@@ -48,6 +51,17 @@ const HomeViewContainer: React.FC = () => { ...@@ -48,6 +51,17 @@ const HomeViewContainer: React.FC = () => {
setHeaderHeight(height) setHeaderHeight(height)
} }
useEffect(() => {
console.log(
'isChartLoading',
isChartLoading,
'isIndicatorsLoading',
isIndicatorsLoading,
'chartIsLoaded',
chartIsLoaded
)
}, [isChartLoading, isIndicatorsLoading, chartIsLoaded])
return ( return (
<React.Fragment> <React.Fragment>
<CozyBar /> <CozyBar />
...@@ -65,24 +79,32 @@ const HomeViewContainer: React.FC = () => { ...@@ -65,24 +79,32 @@ const HomeViewContainer: React.FC = () => {
/> />
</Header> </Header>
<Content height={headerHeight}> <Content height={headerHeight}>
{(isChartLoading || isIndicatorsLoading) && ( {(isChartLoading || isIndicatorsLoading || !chartIsLoaded) && (
<div className="content-view-loading"> <div className="content-view-loading">
<StyledSpinner size="5em" /> <StyledSpinner size="5em" />
</div> </div>
)} )}
<FluidContainer <div
timeStep={timeStep} className={`${
fluidTypes={fluidTypes} isChartLoading || isIndicatorsLoading || !chartIsLoaded
resetReferenceDate={resetRefenceDate} ? 'chart-indicator-none'
multiFluid={true} : 'chart-indicator-block'
handleClickTimeStep={handleClickTimeStepForFluidContainer} }`}
setChartLoaded={setChartLoaded} >
/> <FluidContainer
<MultliFluidIndicatorsContainer timeStep={timeStep}
timeStep={timeStep} fluidTypes={fluidTypes}
setIndicatorsLoaded={setIndicatorsLoaded} resetReferenceDate={resetRefenceDate}
/> multiFluid={true}
<ChallengeCardContainer /> handleClickTimeStep={handleClickTimeStepForFluidContainer}
setChartLoaded={setChartLoaded}
/>
<MultliFluidIndicatorsContainer
timeStep={timeStep}
setIndicatorsLoaded={setIndicatorsLoaded}
/>
<ChallengeCardContainer />
</div>
</Content> </Content>
</> </>
) : ( ) : (
......
...@@ -16,7 +16,9 @@ interface SingleFluidViewContainerProps { ...@@ -16,7 +16,9 @@ interface SingleFluidViewContainerProps {
const SingleFluidViewContainer: React.FC<SingleFluidViewContainerProps> = ({ const SingleFluidViewContainer: React.FC<SingleFluidViewContainerProps> = ({
fluidTypes, fluidTypes,
}: SingleFluidViewContainerProps) => { }: SingleFluidViewContainerProps) => {
const { setPreviousTimeStep, previousTimeStep } = useContext(AppContext) const { setPreviousTimeStep, previousTimeStep, chartIsLoaded } = useContext(
AppContext
)
const [timeStep, setTimeStep] = useState<TimeStep | null>( const [timeStep, setTimeStep] = useState<TimeStep | null>(
previousTimeStep && previousTimeStep !== TimeStep.HALF_AN_HOUR previousTimeStep && previousTimeStep !== TimeStep.HALF_AN_HOUR
...@@ -71,14 +73,16 @@ const SingleFluidViewContainer: React.FC<SingleFluidViewContainerProps> = ({ ...@@ -71,14 +73,16 @@ const SingleFluidViewContainer: React.FC<SingleFluidViewContainerProps> = ({
/> />
</Header> </Header>
<Content height={headerHeight}> <Content height={headerHeight}>
{(isChartLoading || isIndicatorsLoading) && ( {(isChartLoading || isIndicatorsLoading || !chartIsLoaded) && (
<div className="content-view-loading"> <div className="content-view-loading">
<StyledSpinner size="5em" fluidTypes={fluidTypes} /> <StyledSpinner size="5em" fluidTypes={fluidTypes} />
</div> </div>
)} )}
<div <div
className={`${ className={`${
isChartLoading ? 'chart-indicator-none' : 'chart-indicator-display' isChartLoading || isIndicatorsLoading || !chartIsLoaded
? 'chart-indicator-none'
: 'chart-indicator-block'
}`} }`}
> >
<FluidChartContainer <FluidChartContainer
......
...@@ -76,7 +76,7 @@ const BarChart: React.FC<BarChartProps> = (props: BarChartProps) => { ...@@ -76,7 +76,7 @@ const BarChart: React.FC<BarChartProps> = (props: BarChartProps) => {
const maxCompare = chartData.comparisonData const maxCompare = chartData.comparisonData
? Math.max(...chartData.comparisonData.map(d => d.value)) ? Math.max(...chartData.comparisonData.map(d => d.value))
: 0 : 0
max = max === -1 ? 15 : max max = max <= 0 ? 15 : max
return showCompare ? Math.max(max, maxCompare) : max return showCompare ? Math.max(max, maxCompare) : max
} }
......
import React, { useState, useEffect } from 'react' import React, { useState, useEffect, useContext } from 'react'
import { DateTime } from 'luxon' import { DateTime } from 'luxon'
import { import {
IConsumptionDataManager, IConsumptionDataManager,
...@@ -12,6 +12,7 @@ import { defineTimePeriod } from 'services/dateChartService' ...@@ -12,6 +12,7 @@ import { defineTimePeriod } from 'services/dateChartService'
import { FluidType } from 'enum/fluid.enum' import { FluidType } from 'enum/fluid.enum'
import BarChart from 'components/ContentComponents/Charts/BarChart' import BarChart from 'components/ContentComponents/Charts/BarChart'
import { AppContext } from 'components/Contexts/AppContextProvider'
interface FluidChartSlideProps { interface FluidChartSlideProps {
index: number index: number
...@@ -48,8 +49,11 @@ const FluidChartSlide: React.FC<FluidChartSlideProps> = ({ ...@@ -48,8 +49,11 @@ const FluidChartSlide: React.FC<FluidChartSlideProps> = ({
const [chartData, setChartData] = useState<IChartData>(new ChartData([])) const [chartData, setChartData] = useState<IChartData>(new ChartData([]))
const [isLoaded, setIsLoaded] = useState<boolean>(false) const [isLoaded, setIsLoaded] = useState<boolean>(false)
const { setChartIsLoaded, chartIsLoaded } = useContext(AppContext)
useEffect(() => { useEffect(() => {
let subscribed = true let subscribed = true
console.log('in fluid chart', chartIsLoaded)
async function loadData() { async function loadData() {
const [timePeriod, compareTimePeriod] = await Promise.all([ const [timePeriod, compareTimePeriod] = await Promise.all([
...@@ -65,15 +69,19 @@ const FluidChartSlide: React.FC<FluidChartSlideProps> = ({ ...@@ -65,15 +69,19 @@ const FluidChartSlide: React.FC<FluidChartSlideProps> = ({
if (subscribed && graphData && graphData.actualData.length > 0) { if (subscribed && graphData && graphData.actualData.length > 0) {
setChartData(graphData) setChartData(graphData)
setIsLoaded(true) setIsLoaded(true)
setChartIsLoaded(true)
} }
} }
setIsLoaded(false) setIsLoaded(false)
loadData() loadData()
return () => { return () => {
subscribed = false subscribed = false
} }
}, [timeStep, fluidTypes]) }, [timeStep, fluidTypes])
console.log('in fluid chart vrac', chartIsLoaded)
return ( return (
<div className="fs-slide"> <div className="fs-slide">
{!isLoaded ? null : ( {!isLoaded ? null : (
......
...@@ -29,6 +29,8 @@ interface AppContextProps { ...@@ -29,6 +29,8 @@ interface AppContextProps {
setPreviousTimeStep: Function setPreviousTimeStep: Function
userProfile: UserProfile | null userProfile: UserProfile | null
setWelcomeModalViewed: Function setWelcomeModalViewed: Function
chartIsLoaded: boolean
setChartIsLoaded: Function
} }
export const AppContext = React.createContext<AppContextProps>({ export const AppContext = React.createContext<AppContextProps>({
...@@ -52,6 +54,8 @@ export const AppContext = React.createContext<AppContextProps>({ ...@@ -52,6 +54,8 @@ export const AppContext = React.createContext<AppContextProps>({
userProfile: null, userProfile: null,
setPreviousTimeStep: () => null, setPreviousTimeStep: () => null,
setWelcomeModalViewed: () => null, setWelcomeModalViewed: () => null,
chartIsLoaded: false,
setChartIsLoaded: () => null,
}) })
interface AppContextProviderProps { interface AppContextProviderProps {
...@@ -63,6 +67,7 @@ const AppContextProvider: React.FC<AppContextProviderProps> = ({ ...@@ -63,6 +67,7 @@ const AppContextProvider: React.FC<AppContextProviderProps> = ({
children, children,
client, client,
}: AppContextProviderProps) => { }: AppContextProviderProps) => {
const [chartIsLoaded, setChartIsLoaded] = useState<boolean>(false)
const [isIndexesLoading, setIndexesLoading] = useState<boolean>(false) const [isIndexesLoading, setIndexesLoading] = useState<boolean>(false)
const [isIndexesLoadingSuccess, setIndexesLoadingSuccess] = useState< const [isIndexesLoadingSuccess, setIndexesLoadingSuccess] = useState<
boolean | null boolean | null
...@@ -317,6 +322,8 @@ const AppContextProvider: React.FC<AppContextProviderProps> = ({ ...@@ -317,6 +322,8 @@ const AppContextProvider: React.FC<AppContextProviderProps> = ({
previousTimeStep, previousTimeStep,
setPreviousTimeStep, setPreviousTimeStep,
setWelcomeModalViewed, setWelcomeModalViewed,
setChartIsLoaded,
chartIsLoaded,
}} }}
> >
{children} {children}
......
...@@ -112,10 +112,12 @@ ...@@ -112,10 +112,12 @@
} }
} }
.chart-indicator-none { .chart-indicator-none {
display: none; visibility: hidden;
height: 0;
} }
.chart-indicator-block { .chart-indicator-block {
display: block; visibility: visible;
height: auto;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment