Skip to content
Snippets Groups Projects
HomeViewContainer.tsx 3.87 KiB
Newer Older
  • Learn to ignore specific revisions
  • import React, { useState, useContext } from 'react'
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    import StyledSpinner from 'components/CommonKit/Spinner/StyledSpinner'
    import CozyBar from 'components/ContainerComponents/CozyBar/CozyBar'
    import Header from 'components/ContainerComponents/Header/Header'
    import Content from 'components/ContainerComponents/Content/Content'
    import FluidContainer from 'components/ContainerComponents/FluidChartContainer/FluidChartContainer'
    import { TimeStep } from 'services/dataConsumptionContracts'
    import ConsumptionNavigator from 'components/ContentComponents/ConsumptionNavigator/ConsumptionNavigator'
    import { AppContext } from 'components/Contexts/AppContextProvider'
    import MultliFluidIndicatorsContainer from 'components/ContainerComponents/IndicatorsContainer/MultiFluidIndicatorsContainer'
    import ChallengeCardContainer from 'components/ContainerComponents/ChallengeCardContainer/ChallengeCardContainer'
    import KonnectorViewerContainer from 'components/ContainerComponents/KonnectorViewerContainer/KonnectorViewerContainer'
    
    
    Romain CREY's avatar
    Romain CREY committed
    const HomeViewContainer: React.FC = () => {
    
      const { fluidTypes, previousTimeStep, setPreviousTimeStep } = useContext(
        AppContext
      )
    
      const [timeStep, setTimeStep] = useState<TimeStep>(
    
    Romain CREY's avatar
    Romain CREY committed
        previousTimeStep && previousTimeStep !== TimeStep.HALF_AN_HOUR
    
    Romain CREY's avatar
    Romain CREY committed
          : TimeStep.DAY
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
      const [resetRefenceDate, setResetReferenceDate] = useState<boolean>(false)
      const [headerHeight, setHeaderHeight] = useState<number>(0)
      const [isChartLoading, setChartLoading] = useState<boolean>(true)
      const [isIndicatorsLoading, setIndicatorsLoading] = useState<boolean>(true)
    
    Romain CREY's avatar
    Romain CREY committed
    
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
      const setChartLoaded = () => {
        setChartLoading(false)
      }
    
      const setIndicatorsLoaded = () => {
        setIndicatorsLoading(false)
      }
    
      const handleClickTimeStepForNavigation = (_timeStep: TimeStep) => {
        setResetReferenceDate(true)
        setTimeStep(_timeStep)
    
        setPreviousTimeStep(_timeStep)
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
      }
    
      const handleClickTimeStepForFluidContainer = (_timeStep: TimeStep) => {
        setResetReferenceDate(false)
        setTimeStep(_timeStep)
      }
    
      const defineHeaderHeight = (height: number) => {
        setHeaderHeight(height)
      }
    
      return (
        <React.Fragment>
          <CozyBar />
          {fluidTypes && fluidTypes.length > 0 ? (
            <>
              <Header
                setHeaderHeight={defineHeaderHeight}
                textKey={'COMMON.APP_PRESENTATION'}
              >
                <ConsumptionNavigator
                  fluidTypes={fluidTypes}
                  multiFluid={true}
                  timeStep={timeStep}
                  handleClickTimeStep={handleClickTimeStepForNavigation}
                />
              </Header>
              <Content height={headerHeight}>
    
    Romain CREY's avatar
    Romain CREY committed
                {(isChartLoading || isIndicatorsLoading) && (
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
                  <div className="content-view-loading">
                    <StyledSpinner size="5em" />
                  </div>
                )}
    
                <div
                  className={`${
    
    Romain CREY's avatar
    Romain CREY committed
                    isChartLoading || isIndicatorsLoading
    
                      ? 'chart-indicator-none'
                      : 'chart-indicator-block'
                  }`}
                >
                  <FluidContainer
                    timeStep={timeStep}
                    fluidTypes={fluidTypes}
                    resetReferenceDate={resetRefenceDate}
                    multiFluid={true}
                    handleClickTimeStep={handleClickTimeStepForFluidContainer}
                    setChartLoaded={setChartLoaded}
                  />
                  <MultliFluidIndicatorsContainer
                    timeStep={timeStep}
                    setIndicatorsLoaded={setIndicatorsLoaded}
                  />
                  <ChallengeCardContainer />
                </div>
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
              </Content>
            </>
          ) : (
            <>
              <Header setHeaderHeight={defineHeaderHeight}></Header>
              <Content height={headerHeight}>
                <KonnectorViewerContainer></KonnectorViewerContainer>
              </Content>
            </>
          )}
        </React.Fragment>
      )
    }
    
    
    Romain CREY's avatar
    Romain CREY committed
    export default HomeViewContainer