Commit b1047e4d authored by Dexter Sapugay's avatar Dexter Sapugay

1234567

parent 935a370a
...@@ -99,6 +99,21 @@ class SummaryReport(models.Model): ...@@ -99,6 +99,21 @@ class SummaryReport(models.Model):
date = models.DateField() date = models.DateField()
totalworkhrs = models.DurationField() totalworkhrs = models.DurationField()
def getSrno(self):
return self.sr_no
def getEmployeename(self):
return self.employee_name
def getProdScore(self):
return self.prod_score
def getDate(self):
return self.date
def __str__(self):
return "pk: " + str(self.pk) + ": " + self.sr_no + ", " + self.employee_name + ", " + self.prod_score + ", " + self.date
# class Meta: # class Meta:
# constraints = [ # constraints = [
# models.ForeignKeyConstraint( # models.ForeignKeyConstraint(
......
{% extends 'EmployeeProdDB/base.html' %} {% extends 'EmployeeProdDB/base.html' %}
{% block content %} {% block content %}
<canvas id="myChart" width="250" height="250"></canvas>
<div>
<canvas id="myChart"></canvas>
</div>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
var ctx = document.getElementById('myChart').getContext('2d');
<script> var data = {
const ctx = document.getElementById('myChart'); labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
new Chart(ctx, {
type: 'bar',
data: {
labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
datasets: [{ datasets: [{
label: '# of Votes', label: 'Productivity Score',
data: [12, 19, 3, 5, 2, 3], data: [
{% for score in daily_scores %}
{{ score.date }},
{% endfor %}
],
backgroundColor: 'rgba(255, 99, 132, 0.2)',
borderColor: 'rgba(255, 99, 132, 1)',
borderWidth: 1 borderWidth: 1
}] }]
}, };
options: { var options = {
scales: { scales: {
y: { y: {
beginAtZero: true beginAtZero: true
} }
} }
} };
var myChart = new Chart(ctx, {
type: 'bar',
data: data,
options: options
}); });
</script> </script>
{% endblock %} {% endblock %}
\ No newline at end of file
...@@ -12,6 +12,7 @@ from django.views.generic import View ...@@ -12,6 +12,7 @@ from django.views.generic import View
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.db.models import Sum from django.db.models import Sum
from django.http import JsonResponse from django.http import JsonResponse
from django.utils import timezone
def home(request): def home(request):
return render(request, 'EmployeeProdDB/home.html') return render(request, 'EmployeeProdDB/home.html')
...@@ -113,10 +114,6 @@ def loginpage(request): ...@@ -113,10 +114,6 @@ def loginpage(request):
# return render(request, 'EmployeeProdDB/upload_csv.html') # return render(request, 'EmployeeProdDB/upload_csv.html')
def upload_csv(request): def upload_csv(request):
if request.method == 'POST': if request.method == 'POST':
csv_file = request.FILES['csv_file'] csv_file = request.FILES['csv_file']
...@@ -147,14 +144,54 @@ def upload_csv(request): ...@@ -147,14 +144,54 @@ def upload_csv(request):
return render(request, 'EmployeeProdDB/upload_csv.html') return render(request, 'EmployeeProdDB/upload_csv.html')
def chart_template(request): def chart_template(request):
data = SummaryReport.objects.values('employee_name').annotate(total_prod_score=Sum('prod_score')).order_by('-total_prod_score')[:10] data = SummaryReport.objects.all()
labels = list(map(lambda x: x['employee_name'], data)) # Get the start and end dates from the request GET parameters
data = list(map(lambda x: x['total_prod_score'], data)) start_date = request.GET.get('start_date')
return render(request, 'EmployeeProdDB/chart_template.html', { end_date = request.GET.get('end_date')
'labels': labels,
'data': data, # Set default values if the dates are not provided
}) if not start_date:
start_date = (datetime.now() - timedelta(days=7)).strftime('%Y-%m-%d')
if not end_date:
end_date = datetime.now().strftime('%Y-%m-%d')
# Query the SummaryReport model to get the daily productivity scores
daily_scores = []
test1array = []
test2array = []
for day in range(7):
date = (datetime.strptime(start_date, '%Y-%m-%d') + timedelta(days=day)).date()
total_score = SummaryReport.objects.filter(date=date).aggregate(total_score=Sum('prod_score'))['total_score']
#test1 = SummaryReport.objects.filter(date=date)
test1 = SummaryReport.objects.filter(date=date).values()
test2 = test1.aggregate(total_score=Sum('prod_score'))['total_score']
daily_scores.append(total_score or 0)
test1array.append(test1)
test2array.append(test2)
# Pass the data to the template context
context = {
'a1' : test1array,
'a2' : test2array,
'data' : data,
'start_date': start_date,
'end_date': end_date,
'daily_scores': daily_scores
}
return render(request, 'EmployeeProdDB/chart_template.html', context)
# def chart_template(request):
# data = SummaryReport.objects.values('employee_name').annotate(total_prod_score=Sum('prod_score')).order_by('-total_prod_score')[:10]
# labels = list(map(lambda x: x['employee_name'], data))
# data = list(map(lambda x: x['total_prod_score'], data))
# return render(request, 'EmployeeProdDB/chart_template.html', {
# 'labels': labels,
# 'data': data,
# })
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment