Skip to content
Snippets Groups Projects
consumption.md 11.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • Yoan VALLET's avatar
    Yoan VALLET committed
    # Consumption
    
    The consumption view displays data by :
    
    - **multifluid**, which groups all fluids
    - **each fluid**
    
    Users can choose various time steps to display different periods on the graph.
    
    | Time step                  | Period  | Step      |
    | -------------------------- | ------- | --------- |
    | **Day** (electricity only) | one day | half-hour |
    | **Week**                   | a week  | daily     |
    | **Month**                  | a month | daily     |
    | **Year**                   | a year  | monthly   |
    | **5 years**                | 5 years | yearly    |
    
    Each fluid has an upcoming data interval depending on the provider API.
    
    | Provider | Interval   |
    | -------- | ---------- |
    | Enedis   | **3 days** |
    | GRDF     | **5 days** |
    | EGL      | **5 days** |
    
    ## Components 💻
    
    ### ConsumptionView
    
    This is the main component of the consumption page. It's the entrypoint to several children components :
    
    - `DateNavigator`
    - `FluidButtons`, _allows the user to switch between the different fluids and the multifluid view._
    - `FluidChart`
    - `ConsumptionDetails`
    - `KonnectorViewerList` / `KonnectorViewerCard`
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    **Rules:**
    
    - If no fluids are connected, the `KonnectorViewerList` will be displayed. It shows buttons that allow user to connect its fluids. These buttons redirects to the chosen fluid view.
    - If at least one fluid is connected, the multi fluid view shows the connected fluids. Fluids prices are added together. They are in multi fluid color and in euro.
    - A Fluid is displayed with his specific color and his unit (kWh for electricity and gas, l for water).
    - The selected time step will persist when changing fluid.
    
    ### DateNavigator
    
    This component allows the user to navigate through the selected timestep (week by week, month by month, etc.)
    
    - If no fluid is connected, the navigation is locked
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    - By default, the date is today.
    
    - Navigation is locked beyond the current date.
    
    ### FluidButtons
    
    This component allows the user to navigate through the different fluids.
    
    - If a Konnector is on error, it shows a red cross on the fluid icon
    - If the fluid is not connected it shows a [disconnected icon](https://forge.grandlyon.com/web-et-numerique/factory/llle_project/ecolyo/-/blob/async-oauth-gas/src/assets/icons/visu/disconnected.svg?plain=0)
    - Icons are grey when inactive and display their respective color when active.
    
    ### FluidChart
    
    This component displays consumption, according to the selected fluid, timestep and date.
    
    It uses two children components for the Day timestep (electricity only) in case no half-hour data is received : 
    - The HalfHourUpcoming component is displayed if the konnector has been updated within the last 3 days indicating data is potentially coming later.
    - The HalfHourNoDataFailure component is displayed if the konnector has not been updated within the last 3 days, suggesting a more permanent issue in data retrieval.
    
    
    #### FluidChartSwipe
    
    This component calls the `FluidChartSlide` component which is handled by the library `react-swipeable-views`, and allows the user to swipe across the data.
    
    This library loads the slides previous and next the current slide. This reduces loading time between slides.
    
    #### ConsumptionVisualizer
    
    - Calls the `DataloadConsumptionVisualizer` component that shows the dataload of the selected timeStep and fluid
    - For multifluid, shows the total consumption in € of summed connected fluids, and each fluid
    - It displays a message according to the data state as explained in the [DataLoad Consumption Visualizer](./#dataload-consumption-visualizer)
    
    #### DataLoadConsumptionVisualizer
    
    This component displays the load of a specified fluid or the total consumption on the multifluid screen. The rendered value depends on the data state.
    
    The data state is defined by the following rule inside `consumptionFormatter.service` :
    
    ##### For single fluid
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    | Condition                                                                             | State    |
    | ------------------------------------------------------------------------------------- | -------- |
    | Before the first data available                                                       | EMPTY    |
    | Between the first and last data available & value of load is not empty                | VALID    |
    
    | Between the first and last data available & no document in database for the given day | HOLE     |
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    | After the last data available & Before today & in the dataDelayOffset period          | UPCOMING |
    | After the last data available & Before today & not in the dataDelayOffset period      | MISSING  |
    | After today                                                                           | COMING   |
    
    ##### For multifluid
    
    
    | Condition                                                                                         | State                           |
    | ------------------------------------------------------------------------------------------------- | ------------------------------- |
    | All fluids have empty data                                                                        | AGGREGATED_EMPTY                |
    | At least one fluid have a data and another fluids with empty data                                 | AGGREGATED_WITH_EMPTY           |
    | All fluids have valid data                                                                        | AGGREGATED_VALID                |
    | All fluid have a hole or missing data                                                             | AGGREGATED_HOLE_OR_MISSING      |
    | At least one fluid have a data and another fluids with a missing or hole data                     | AGGREGATED_WITH_HOLE_OR_MISSING |
    | At least one fluid have upcoming or coming data and other fluid doesn’t have missing or hole data | AGGREGATED_WITH_COMING          |
    | All fluid have coming data                                                                        | AGGREGATED_COMING               |
    
    
    A modal `EstimatedConsumptionModal` can be opened when clicking on the estimated price.
    
    ##### Display of the specific cases `DataloadNoValue`
    
    This component appear instead of the traditional one. It is used to display a general message which override the value. Here are the rules :
    
    ##### For single fluid
    
    | dataload state | Displayed label    | Comments                                                      |
    | -------------- | ------------------ | ------------------------------------------------------------- |
    | EMPTY          | Pas de données     |                                                               |
    | VALID          | -                  |                                                               |
    | HOLE           | Pas de données     |                                                               |
    | MISSING        | Données manquantes | Displayed in red and clickable (scroll to the konnector card) |
    | UPCOMING       | À venir            |                                                               |
    | COMING         | À venir            |                                                               |
    
    ##### For multi fluid
    
    | dataload state                  | Displayed label    |
    | ------------------------------- | ------------------ |
    | AGGREGATED_EMPTY                | Pas de données     |
    | AGGREGATED_WITH_EMPTY           | -                  |
    | AGGREGATED_VALID                | -                  |
    | AGGREGATED_WITH_COMING          | -                  |
    | AGGREGATED_HOLE_OR_MISSING      | Données manquantes |
    | AGGREGATED_WITH_HOLE_OR_MISSING | -                  |
    | AGGREGATED_COMING               | À venir            |
    
    ##### Display of the load values
    
    Depending of the selected fluid, and of the data state, the value will be adapted.
    
    ##### Display of the main value `DataloadSectionValue`
    
    
    Used to display the load or price in function of following rules :
    
    | Condition                              | Displayed information                                                                    |
    | -------------------------------------- | ---------------------------------------------------------------------------------------- |
    | Single fluid && dataload value < 1000  | Display the load                                                                         |
    | Single fluid && dataload value >= 1000 | Display the load in Mega unit                                                            |
    | Multifluid without comparison          | Display the load converted in euro and a link to display the Estimated Modal information |
    | Multifluid with comparison             | Display the load converted in euro                                                       |
    
    
    ##### Display of the detail value `DataloadSectionDetail`
    
    Used to display the detail just below the main value.
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    | Condition                     | Displayed information                                       |
    | ----------------------------- | ----------------------------------------------------------- |
    | Single fluid                  | Display the load converted in euro                          |
    
    | Multifluid without comparison | Display the load converted in euro for each available fluid |
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    | Multifluid with comparison    | Display nothing                                             |
    
    #### InfoDataConsumptionVisualizer
    
    This component renders nothing if a bar with value is selected.
    
    If no value is available, the component render depending on the dataload state.
    
    **Single fluid:**
    
    | dataload state | Displayed label                          |
    | -------------- | ---------------------------------------- |
    | VALID          | -                                        |
    | EMPTY          | Pourquoi n’ai-je pas de données ?        |
    | HOLE           | Pourquoi n’ai-je pas de données ?        |
    | MISSING        | Dernières données disponibles : XX/XX/XX |
    | UPCOMING       | Dernières données disponibles : XX/XX/XX |
    | COMING         | Dernières données disponibles : XX/XX/XX |
    
    **Multi fluid:**
    
    | dataload state                  | Displayed label                        |
    | ------------------------------- | -------------------------------------- |
    | AGGREGATED_VALID                | -                                      |
    | AGGREGATED_WITH_COMING          | -                                      |
    | AGGREGATED_EMPTY                | Pourquoi n’ai-je pas de données ?      |
    | AGGREGATED_HOLE_OR_MISSING      | Dernières données complètes : XX/XX/XX |
    | AGGREGATED_WITH_HOLE_OR_MISSING | Dernières données complètes : XX/XX/XX |
    | AGGREGATED_COMING               | Dernières données complètes : XX/XX/XX |
    
    ### TimeStepSelector
    
    This component allows the user to change the current Timestep, or to return to today's date.
    
    ### Comparison
    
    The user can compare two periods of data on the same chart.
    
    The chart scale will adapt to the max load displayed between the `actualData` and the `comparisonData`.
    
    ### ConsumptionDetails
    
    This component sums up the consumption prices of the current period.
    
    ### KonnectorViewerCard
    
    This component shows the konnector state and allows the user to connect, delete, or update a konnector.
    
    - If the fluid is connected, this component will shows the konnector state
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    - If the fluid is not connected, it will show the connection form
    
    - If the konnector is in error or its data is outdated, it will display the number of days since the data became outdated
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    - If the error is a login error (eg: user consent is revoked), it will show a specific message
    
    Hugo NOUTS's avatar
    Hugo NOUTS committed
    - If the data is outdated but the konnector is not in error, it will display a warning concerning the outdated data
    
    - If the data is outdated but the user has already triggered an update today, it will show a message that informs the user that the issue is probably related to the energy provider