<!--
Thanks for contributing!
Provide a description of your changes below and a general summary in the
title
Please look at the following checklist to ensure that your PR can be
accepted quickly:
-->
## Jira Ticket
[SP-1594](https://syncrow.atlassian.net/browse/SP-1594)
## Description
1. Implemented `Bloc` and `Services` to integrate the device location
into the side panel of the AQI Analytics module.
2. Fixed bugs in side panel caused by `Expanded` widgets.
## Type of Change
<!--- Put an `x` in all the boxes that apply: -->
- [x] ✨ New feature (non-breaking change which adds functionality)
- [x] 🛠️ Bug fix (non-breaking change which fixes an issue)
- [ ] ❌ Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] 🧹 Code refactor
- [ ] ✅ Build configuration change
- [ ] 📝 Documentation
- [ ] 🗑️ Chore
[SP-1594]:
https://syncrow.atlassian.net/browse/SP-1594?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
* set the default tab to occupancy for ease of development.
* Implemented an initial design for the occupancy chart.
* Add Occupacy model and service for occupancy data handling.
* Created `OccupancyBloc`.
* Implemented the sidebar of Occupancy view.
* Moved `OccupancyEndSideBar` widget to its own file.
* Removed unnecessary widgets.
* Matched the `OccupancyChart` with the figma design.
* Added `AnalyticsDateFilterButton` to `OccupancyChartBox`.
* Hides `AnalyticsDateFilterButton` that is in the page header, when the selected tab isn't `AnalyticsPageTab.energyManagement`.
* Added animation to`AnalyticsDateFilterButton`.
* modified the implementation of `FakeOccupacyService` to clamp all the generated values to less than a 100.
* Injected `OccupancyBloc` into `AnalyticsPage`.
* Made `OccupancyChart` read its data from `OccupancyBloc`.
* Refactor AnalyticsCommunitiesSidebar to load data based on selected tab and implement loadEnergyManagementData method
* Refactor Analytics views to use StatefulWidget and load data in initState
* Created `OccupancyHeatMapModel`.
* Add FakeOccupancyHeatMapService implementation.
* Created `OccupancyHeatMapBloc`.
* Injected `OccupancyHeatMapBloc` into `AnalyticsPage`.
* Add OccupancyHeatMapBox widget and integrate into AnalyticsOccupancyView
* Matching the heat map with the design, and added week days.
* Made the HeatMap cells have a dashed border.
* shows months.
* responsiveness.
* Integrate OccupancyHeatMapBloc and update OccupancyHeatMapBox to display heat map data with error handling
* Integrate OccupancyHeatMapBloc and update OccupancyHeatMapBox to display heat map data with error handling
* made the heatmap loading fast af by using painters instead of individually creating a widget for every single event.
* Extracted `OccupancyHeatMapMonths` into its own widgte.
* Moved `OccupancyHeatMapMonths` to its own file.
* Adjusted design of `OccupancyHeatMapMonths`.
* Adjust layout flex properties for `OccupancyEndSideBar` and its parent column in `AnalyticsOccupancyView`.
* moved `OccupancyPaintItem` to `OccupancyPainter`s file.
* removed comments from `OccupancyPainter`.
* used color.withValues instead of .withOpacity.
* re-added `OccupancyHeatMapGradient`.
* Revert initial tab to `energyManagement`.
* Made datepicker dynamic for multiple states.
* Add year picker functionality to date filter button and implement dynamic date selection
* Align date filter button to the end in occupancy chart and heat map boxes for improved UI consistency.
* Enahnced color of border in `OccupancyPainter`.
* Add ClearOccupancyHeatMapEvent to reset heat map state and update occupancy data helper to trigger event on empty selections
* show percentage of value in tool tip of `OccupancyChart`.
* SP-1494-api-integration.
* fixed left stide titles intervals in total energy consumption chart.
* Adjusted tooltip and title intervals in energy management charts to improve accuracy by incrementing displayed values by one.
* Refactor AnalyticsCommunitiesSidebar to use AnalyticsSpaceTreeView and enhance community/space selection handling
* Gave every tab its own selection logic using the strategy design pattern, along with clearing the selection when changing tabes to avoid collision between features.