feat: filter date in charts

This commit is contained in:
2025-01-17 15:58:57 -03:00
parent 1999701dcf
commit c7bc44aa54
7 changed files with 51 additions and 31 deletions

Binary file not shown.

View File

@@ -29,6 +29,12 @@ RRB&C - DashBoard
<body> <body>
<h1>DashBoard</h1> <h1>DashBoard</h1>
<!-- <form class="grid-container" > -->
<input id="data-start" name="data-start" type="date">
<input id="data-end" name="data-end" type="date">
<!-- <input type="submit"> -->
<button onclick="mediaCuisine()" >Filtrar</button>
<!-- </form> -->
<div class="grid-container"> <div class="grid-container">
<div class="card"> <div class="card">

View File

@@ -3,6 +3,6 @@ from . import views
urlpatterns = [ urlpatterns = [
path('', views.home, name='home'), path('', views.home, name='home'),
path('chartCuisine', views.chartCuisine, name='chartCuisine'), path('chartCuisine/<str:dateStart>/<str:dateEnd>', views.chartCuisine, name='chartCuisine'),
] ]

View File

@@ -4,6 +4,9 @@ from django.db.models import Count, F
from django.http import JsonResponse, HttpResponse from django.http import JsonResponse, HttpResponse
from django.contrib.admin.views.decorators import staff_member_required from django.contrib.admin.views.decorators import staff_member_required
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.utils.dateparse import parse_datetime
import datetime
@@ -29,18 +32,22 @@ def home(request):
@group_required(groupName='Gerente') @group_required(groupName='Gerente')
def chartCuisine(request): def chartCuisine(request,dateStart,dateEnd):
print(request.user.groups.all()) try:
print(request.user.is_authenticated) dateStart = parse_datetime(dateStart+' 07:00:00')
dateEnd = parse_datetime(dateEnd+' 07:00:00')+ datetime.timedelta(days=1)
except:
dateStart = parse_datetime('2025-01-01 07:00:00')
dateEnd = datetime.datetime.now()
# print(request.user.groups.all())
# print(request.user.is_authenticated)
# fulano = User() # fulano = User()
tFila = [] tFila = []
tPreparando = [] tPreparando = []
tFinalizado = [] tFinalizado = []
dataStart = request.GET.get("data-start")
dataEnd = request.GET.get("data-end")
orders = Order.objects.filter(delivered__isnull=False)
orders = Order.objects.filter(delivered__isnull=False, queue__gt=dateStart, queue__lt=dateEnd)
try:
for order in orders: for order in orders:
tFila.append((order.preparing - order.queue).total_seconds()) tFila.append((order.preparing - order.queue).total_seconds())
tPreparando.append((order.finished - order.preparing).total_seconds()) tPreparando.append((order.finished - order.preparing).total_seconds())
@@ -50,14 +57,14 @@ def chartCuisine(request):
mediaPreparando = int((sum(tPreparando) / len(tPreparando))/60) mediaPreparando = int((sum(tPreparando) / len(tPreparando))/60)
mediaFinalizado = int((sum(tFinalizado) / len(tFinalizado))/60) mediaFinalizado = int((sum(tFinalizado) / len(tFinalizado))/60)
# orders = Order.objects.filter(
# created_at__gte='a',
# created_at__lte='b',
# delivered__isnull=False
# )
return JsonResponse({ return JsonResponse({
'mediaFila': mediaFila, 'mediaFila': mediaFila,
'mediaPreparando': mediaPreparando, 'mediaPreparando': mediaPreparando,
'mediaFinalizado': mediaFinalizado, 'mediaFinalizado': mediaFinalizado,
}) })
except:
return JsonResponse({
'mediaFila': 0,
'mediaPreparando': 0,
'mediaFinalizado': 0,
})

View File

@@ -38,20 +38,22 @@ new Chart("vendas", {
function mediaCuisine(){ function mediaCuisine(){
var dateStart = document.getElementById('data-start').value == '' ? '2025-01-01' :document.getElementById('data-start').value;
var dateEnd = document.getElementById('data-end').value == '' ? '2025-01-15' :document.getElementById('data-end').value;;
var yValues = []; var yValues = [];
var xValues = ['Fila', 'Preparando', 'Entregar']; var xValues = ['Fila', 'Preparando', 'Entregar'];
var barColors = ["red", "green","blue","orange","brown"]; var barColors = ["red", "green","blue","orange","brown"];
var resposta = fetch('/chartCuisine', {method: 'GET', var resposta = fetch(`/chartCuisine/${dateStart}/${dateEnd}`, {method: 'GET',
headers: {'Content-Type': 'application/json', headers: {'Content-Type': 'application/json',
},}) },})
.then(response => response.json()) .then(response => response.json())
.then(data => { .then(data => {
yValues = []
yValues.push(data['mediaFila']) yValues.push(data['mediaFila'])
yValues.push(data['mediaPreparando']) yValues.push(data['mediaPreparando'])
yValues.push(data['mediaFinalizado']) yValues.push(data['mediaFinalizado'])
console.log(yValues)
new Chart("cuisine", { new Chart("cuisine", {
type: "doughnut", type: "doughnut",
data: { data: {
@@ -76,6 +78,11 @@ var resposta = fetch('/chartCuisine', {method: 'GET',
}); });
} }
function deleyGraficos(){
productsPlus() setTimeout(function() {
mediaCuisine();}, 20000);
}
// productsPlus()
mediaCuisine() mediaCuisine()
// console.log(document.getElementById('data-start').value)