diff --git a/board/templates/board/employee_list.html b/board/templates/board/employee_list.html
index 13f37a0..59a5402 100644
--- a/board/templates/board/employee_list.html
+++ b/board/templates/board/employee_list.html
@@ -6,11 +6,19 @@
Add employee from email or Add employee from scratch
{% for employee in employee_list %}
-
- {{employee.full_name}}
- Hire date: {{employee.hire_date|date:"SHORT_DATE_FORMAT"}}
- Department: {{employee.department}}
-
+
+
+
+
+
+ {{employee.full_name}}
+ Hire date: {{employee.hire_date|date:"SHORT_DATE_FORMAT"}}
+ Department: {{employee.department}}
+
+
{% endfor %}
diff --git a/board/views.py b/board/views.py
index dc4ccce..abc8202 100644
--- a/board/views.py
+++ b/board/views.py
@@ -5,7 +5,11 @@ from django.views.generic.edit import FormView, CreateView, UpdateView, DeleteVi
from django.views.generic.detail import DetailView
from django.views.generic.list import ListView
from django.contrib.auth.mixins import LoginRequiredMixin
-from django.db.models import Q
+
+
+from django.db.models import (Exists, OuterRef,
+ Prefetch, Subquery, Count, Sum, F, Q, Value)
+from django.db.models.functions import Length, Upper
from .models import Employee, LogEntry, Todo, Event
from .forms import (
@@ -32,7 +36,10 @@ class SearchResultsView(ListView):
# Employees
class EmployeeListView(LoginRequiredMixin, ListView):
model = Employee
- queryset = Employee.objects.filter(archived=False).order_by('hire_date')
+ queryset = Employee.objects.filter(archived=False).order_by('hire_date').annotate(
+ todos_total=Count('todo'),
+ todos_completed=Count('pk', filter=Q(todo__completed=True)),
+ )
class EmployeeArchivedView(LoginRequiredMixin, ListView):
model = Employee
diff --git a/onboard/settings.py b/onboard/settings.py
index a0775c0..1fc67d7 100644
--- a/onboard/settings.py
+++ b/onboard/settings.py
@@ -53,6 +53,7 @@ MIDDLEWARE = [
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
+ 'onboard.middleware.TimezoneMiddleware',
]
ROOT_URLCONF = 'onboard.urls'
diff --git a/static/styles/main.css b/static/styles/main.css
index 0e037c5..65ffeee 100644
--- a/static/styles/main.css
+++ b/static/styles/main.css
@@ -3,6 +3,7 @@
--black: #393d3f;
--grey: #a7b4bb;
--blue: #10638c;
+ --light-blue: #74c0e6;
--red: #8c1016;
}
@@ -313,6 +314,13 @@ hgroup {
}
+.employee__item {
+ display: grid;
+ grid-template-columns: 0.25fr 4fr;
+ column-gap: 1rem;
+ align-items: center;
+}
+
.log_entry {
display: grid;
@@ -342,4 +350,39 @@ hgroup {
grid-template-columns: 0.25fr 2fr 0.25fr;
column-gap: 0.5rem;
margin-bottom: 1rem;
+}
+
+
+
+
+
+.pie_chart {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+
+}
+
+
+circle.pie {
+ fill: rgba(255,255,255,0);
+ stroke: var(--light-blue);
+}
+
+circle.slice {
+ fill: rgba(255,255,255,0);
+ stroke: var(--blue);
+}
+
+svg {
+ border-radius: 50%;
+ -webkit-transform: rotate(-90deg);
+ -moz-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ -o-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+}
+
+svg:not(:root) {
+ overflow: hidden;
}
\ No newline at end of file