mirror of
https://github.com/welton89/RRBEC.git
synced 2026-04-05 21:45:41 +00:00
feat: filter date in charts
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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">
|
||||||
|
|||||||
@@ -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'),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -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,35 +32,39 @@ 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:
|
||||||
|
tFila.append((order.preparing - order.queue).total_seconds())
|
||||||
|
tPreparando.append((order.finished - order.preparing).total_seconds())
|
||||||
|
tFinalizado.append((order.delivered - order.finished).total_seconds())
|
||||||
|
|
||||||
for order in orders:
|
mediaFila = int((sum(tFila) / len(tFila))/60)
|
||||||
tFila.append((order.preparing - order.queue).total_seconds())
|
mediaPreparando = int((sum(tPreparando) / len(tPreparando))/60)
|
||||||
tPreparando.append((order.finished - order.preparing).total_seconds())
|
mediaFinalizado = int((sum(tFinalizado) / len(tFinalizado))/60)
|
||||||
tFinalizado.append((order.delivered - order.finished).total_seconds())
|
|
||||||
|
|
||||||
mediaFila = int((sum(tFila) / len(tFila))/60)
|
return JsonResponse({
|
||||||
mediaPreparando = int((sum(tPreparando) / len(tPreparando))/60)
|
'mediaFila': mediaFila,
|
||||||
mediaFinalizado = int((sum(tFinalizado) / len(tFinalizado))/60)
|
'mediaPreparando': mediaPreparando,
|
||||||
|
'mediaFinalizado': mediaFinalizado,
|
||||||
# orders = Order.objects.filter(
|
})
|
||||||
# created_at__gte='a',
|
except:
|
||||||
# created_at__lte='b',
|
return JsonResponse({
|
||||||
# delivered__isnull=False
|
'mediaFila': 0,
|
||||||
# )
|
'mediaPreparando': 0,
|
||||||
|
'mediaFinalizado': 0,
|
||||||
return JsonResponse({
|
})
|
||||||
'mediaFila': mediaFila,
|
|
||||||
'mediaPreparando': mediaPreparando,
|
|
||||||
'mediaFinalizado': mediaFinalizado,
|
|
||||||
})
|
|
||||||
|
|||||||
@@ -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)
|
||||||
Reference in New Issue
Block a user