Skip to content

Latest commit

Β 

History

History
91 lines (78 loc) Β· 8.45 KB

README.md

File metadata and controls

91 lines (78 loc) Β· 8.45 KB

πŸ“ˆβ° Working Hours Dashboard πŸ“Š

Python 3.10.12 Dash 2.17.1 Pandas 2.2.2

This project generates dynamic analytical graphs for enterprise management using Python's Dash library. It requires Excels worksheets to be available locally. They must have the following columns.

employee date project product task total hours
John 23/07/24 project1 product1.1 backend development 7.4

Names inside the repository might be in Portuguese because I developed in a way to be easily plugable to the Codex workhours worksheets back in the day.

⬇️ How to install

Set the directory of the worksheets

The company's workhours worksheets must be locally available, as by using OneDrive-Desktop to add their cloud directory as a shortcut at your local. Copy the local path to this mirrored local directory and paste it as the environment variable COMPANY_WORKHOURS_EXCELS_DIR in the .env.

Install project using Poetry

# Change directory into project directory
cd <project-dir>

# Install venv
poetry install

# Activate venv
poetry shell

# Run project
python run.py

πŸ› οΈ How it works?

It is strongly dependent upon OneDrive's synchronization.

Flowchart

🌳 Repository Structure 🧬

.
β”œβ”€β”€ πŸ“„ README.md
β”œβ”€β”€ πŸ“ app
β”‚Β Β  β”œβ”€β”€ πŸ“„ __init__.py
β”‚Β Β  β”œβ”€β”€ πŸ“„ alternative_to_onedrive.py
β”‚Β Β  β”œβ”€β”€ πŸ“„ app_state.py
β”‚Β Β  β”œβ”€β”€ πŸ“ assets
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“ css
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ card.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ header-selectors.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ main.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ root.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ tab.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── πŸ“„ table.css
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ favicon.ico
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ favicon_mock.ico
β”‚Β Β  β”‚Β Β  └── πŸ“„ script.js
β”‚Β Β  β”œβ”€β”€ πŸ“ cache
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ state.pickle
β”‚Β Β  β”‚Β Β  └── πŸ“„ valid_data.pickle
β”‚Β Β  β”œβ”€β”€ πŸ“ callbacks
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ __init__.py
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“ cards
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ __init__.py
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ invalid_registers.py
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ team_commitment.py
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── πŸ“„ valid_registers.py
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ headers.py
β”‚Β Β  β”‚Β Β  └── πŸ“„ read_excels_bar.py
β”‚Β Β  β”œβ”€β”€ πŸ“„ commitment_card_processor.py
β”‚Β Β  β”œβ”€β”€ πŸ“ languages
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ __init__.py
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ translations.csv
β”‚Β Β  β”‚Β Β  └── πŸ“„ translator.py
β”‚Β Β  β”œβ”€β”€ πŸ“ layout
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ πŸ“„ __init__.py
β”‚Β Β  β”‚Β Β  └── πŸ“„ layout.py
β”‚Β Β  β”œβ”€β”€ πŸ“ mocks
β”‚Β Β  β”‚Β Β  └── πŸ“„ mock.py
β”‚Β Β  └── πŸ“ utils
β”‚Β Β      └── πŸ“„ logger.py
β”œβ”€β”€ πŸ“ img
β”‚Β Β  └── πŸ“„ flowchart.svg
β”œβ”€β”€ πŸ“ logs
β”‚Β Β  └── πŸ“„ main.log
β”œβ”€β”€ πŸ“„ poetry.lock
β”œβ”€β”€ πŸ“„ pyproject.toml
└── πŸ“„ run.py