Temperature Tapir is a Room Temperature Monitoring Dashboard web app made with MeteorJS.
Features supported:
- Adjust timeframe using inputs
- Visualise temperature data
- On a time series graph
- On a floorplan, indicating average temperature
- Panning on time series using shift + click + drag
- Zooming on time series using click + drag or mousewheel
- Share app settings with a URL
GitHub Repository | Video Demo
importsapifloorplan.js: Assigns colour to each roomhandleTimeframe.js: Handles all operations related to time and date formatting (eg. from int to HH:MM string) and retrieves datalinkability.js: Provides functions to supports linkability (PWA) implementationsample.js: Provides functions to manipulate data based on sample settempPublications.js: Publishes data collection
dbTempCollection.js: Creates collection to store temperature data
uiApp.jsx: Contains overall app structure and stateFloorplan.jsx: Contains Floorplan component (eg. each room SVG and onClick listener)TimeSeries.jsx: Contains TimeSeries component (using Plotly)
privateroom-temperatures.csv: Given dataset
servermain.js: Initialises datasetschema.json: Data schema defined with JSON Schema
README.md: Brief project introduction, credits and references
- Clone this repository.
- Install Meteor here.
- Run
meteor npm installto download dependencies. - Run
meteor runto start using 🌡 Temperature Tapir!
- Get dates between range of dates: miguelmota on Github
- Format Date object to yyyy-mm-dd: user3470953 on Stack Overflow
- Regex for yyyy-mm-dd (use in schema): Hamid Shatu on Stackoverflow
- Using images with SVG shapes: Responsive SVG Image Overlays - Jess Damerst
- Sorting object by value: Nosredna on Stackoverflow
- React routing with URL: An alternative to handle state in React: the URL !
- Getting window size for responsive design: useWindowSize from useHooks
- Inputs and slider: Material UI
- Time series: plotly for React
- Colour palette: Seaborn (HLS)
- Adjusting sample size of data: janjakubnanista/downsample