From c7bc44aa54ac28e9c8a353e04b6dc08eae25d3a0 Mon Sep 17 00:00:00 2001 From: Welton Moura Date: Fri, 17 Jan 2025 15:58:57 -0300 Subject: [PATCH] feat: filter date in charts --- gestaoRaul/db.sqlite3 | Bin 299008 -> 299008 bytes .../home/__pycache__/urls.cpython-313.pyc | Bin 407 -> 453 bytes .../home/__pycache__/views.cpython-313.pyc | Bin 3634 -> 3797 bytes gestaoRaul/home/templates/home.html | 6 ++ gestaoRaul/home/urls.py | 2 +- gestaoRaul/home/views.py | 57 ++++++++++-------- gestaoRaul/templates/static/home/js/home.js | 17 ++++-- 7 files changed, 51 insertions(+), 31 deletions(-) diff --git a/gestaoRaul/db.sqlite3 b/gestaoRaul/db.sqlite3 index 35e45a1b54ccc5a0488b55c5969cb1b59b89198a..4dacca369ca5d4792676c00ffe4eaf1b0a25bbc5 100644 GIT binary patch delta 1015 zcmaizTWAwm7{}+FGfl`OnXl2R@lqX&U=wUQlbIyVtY~Ys(Uq#PDpU~K8mraTM5|SF z(Yj@~`r?Hkr}$Jaiw_Iklo1E*ORGK<1zSgcYS6+px3*1$?Mk{%2!MSf#y@#=-1h@^ydC8VoLKncsC zuxk9a{qStBz#rwrhwh866V684P>vzQ90m5T{81yGyOS^cy&x~AvaPDDc3Wa!-NvT6 zNJ*k)-dFsNll)OS$m&e!aZfRK_TVD~07wxQQsHk4l zxH??1WZABb>y#bMvGvuJdpG}Dza$Y4%E3^PtQ4urcxNTDsu;$}xF87PF%FhOlX%Q< zbsiFZb4VrnnU6fHDBW{XY8&b@hq}-_M27jSY0sdi1oPQ+Jol3=hd3}AHeXyoGk@_4 z;tdX-!Bsd1e}F@L1N9JtLh**-N&O?zH{XzJ;{W~SnQUQ7H}8&dKAMxkRoJj3}nQ7c@yWO$v*Km2Or=u+=X7a1jk_x3mJ4ES^E-EauJmS=`|~xX170 z+-2-x&heP_y6>W@s^i7~pU-M+R=vaBs#k!^ z9DHU0-@^0nAqSuz`rtB^B*N@UgxQtI0br+s5gGB*zG70&sB0X2f%ou{9m^|rt&d<3 zuERAd$rdGBluQl-8v%sCPp>Z|I)koQ&_{+@$W7Mh3Os~6R4TQgQVS|2e~v=LZ}zVw ztaULzKA%Qy+J6UmJ)>h0)`MCg7!7J#)U4i3{(eB-IqsYGRs21K9rq1I`fMK^ M0XDkXYF-Ne3np_Y7ytkO delta 679 zcmX}qUr19?90&08=Wf^QcJFU9TUm-Xv09PWd-vzMElI^-`Y>$uK@VJXw9GASB6C=3rYSs`o6>JD&+_G2 zd<@e~=`)wJ_ye6z`!FlbV;A3;$92a8iuMJ;M|cho;SPucoQEU?9sgiaV=s2Fm;czo zo;k^L0tJ~XOU|%?EJ?DJjY7!k}b2+lhAGH$^+puFXD-u&_)9^W#&5_;w zT8@lLG^njJIZx7TAWt5!!MyOKK-N_GCPKKemh$x_(tvA&+6sd2@E+bk9-hKDG(*G8 zz9PYV?<n`h(H7Hcu`J!R5|K#4vW!?;JZ##4ZOz7IwF@DZEt5Tm+6*fa3diFA z3eVIoQ9+oX|1C^C6i)EeSHi;q1quj$itHQk>2Lm*umA<7>r`aXsmP+!8zA@kd;Ovd zE40#XVHOemf^V=T-dh%Hcn3vTWV%@~X2qCv1l;0&yUWKGJ7_|Xg$mgcr~;P6kX3li z^v(+DtdLH67u?wP3B?!ss2FRw`k6dP&x$XzE%E*<^wA34P)b}rCB4OtrHfsZ`X$}| E10*5L^8f$< diff --git a/gestaoRaul/home/__pycache__/urls.cpython-313.pyc b/gestaoRaul/home/__pycache__/urls.cpython-313.pyc index b030868c71214e70c90ca0e186b6450a7ad10635..48363d0ed6e2784a0ddf97af530fba2dd8fba8df 100644 GIT binary patch delta 122 zcmbQve3Y5@GcPX}0}!yy>q@^ik++POBbd#SS)ZwhEuB-7YvKfLohq&5jKrc6=hDpL z%)C^6o8poptCYl&)Zh}Js2zgunwMfXarazCi^-9U%CZ-@%yzI|xA3}X;dLP}{vvC_ P2UZq-rbg}}UZ73t?< delta 75 zcmX@gJe`^MGcPX}0}z;)wWjZw$XmwC9?WLRtj|=$md>HcIdOva#OHGv%_g@pDoc0h d%}~8ArE^hAXM^2ER;LfFEc{H3+(o=V-2nX~6iomC diff --git a/gestaoRaul/home/__pycache__/views.cpython-313.pyc b/gestaoRaul/home/__pycache__/views.cpython-313.pyc index b933a388d0858fb69496954b3fe180b1cfd1297e..361efe888b92536a6351d703f682b73ff0a8be24 100644 GIT binary patch delta 1685 zcmaJ>O>7%Q6rT0&dTrP1jn{Vkmt<`xA#&3=P82JI@Efqx#8skru>>+Dn0OmpoDJP| z3hl)a;*ioq6)lxgQADa1k%~jzAF0=Z1nM!13${!`k>~|+z#$wET$tI!ju92(*|*=k z@6G3ZGjHZr+js4jU79ul*w(InIRB$*)#AeLulCHJkQg5D#(2x5RkHd3#HKhqX_IUk zJ`}f4IwXgN&GFVrr{wg3*PH>s)4XK_;~5W#AWhgLSChY`$?u*w1g)z-3CufbNfu@^ z>AaB7E(lY%U%+@BW>+raS22q+LiAu}B~3&e9wgR=j2D>>WZIQ4h?mJ82-({NNn-^Z z!g`}1K;zvHpuGq>KnklCOe18dPNs}w0G=1|rRT||=D zqZF^fMkJ|3OEX9Ab2liP;xc%(DSZXBE?P^q*HIF$r+3rN08b%Xj}i^3$Egr? zzDcFwtE&{6WQ>oMAs-{t@YQ9SR7@#<&jlv8mI~;2b!CX>%H?yixl#smd_A3+%-PO;cx$zVPr<;V|sKpjruHRU(r< zBcHVmh6f{k;Q`ni5wRd%wPu7|_Ou`gnc3N_EH34oxvKHhlCUJq&d%o>Fqc<;H4gPj zsJ4Pu3GM)>8tO-&YD5PC3gy#PTwHutq9HAD%Il^#T-_+rh$8uXTFO@`1fya``N|Y1 z=oh7oAjwrydrSRjS{RuDXk_#!zJn$`0moJI+*?rQ#igvA6$L2%vP5lnU&)CiJ1 zyk!rpk8GsW&L>Oukrm?>>sxnjcvb&UiH+QOuRJ{Q?eN6?Q|j=HT3}~ZsG0@P%yP8C z+Lz;+c|@}pj-NYTru{1IFGlaZx=H&t={J{SHJzPgesFkKq7}3C!m)G5*1A9Kztq1G zy%E12S3SdJcT9E1O75c%%o7!}vuy5A%^mCH=aws$qT?=ilT&@qm$_+`n=WxP56p>5 zp(%*D!W6sjhHi$MgT6N>b|}!=_J;{LT$gQY$&WqP<~F*oo>bl8VnB5bmFy9ip{M<_ zygpju`tNiW-!2V~sodDTF|{LB@{F%A|HBp_{fO~a+<^)gf_;Y~;PncK7N!OWBlBmi zSEnuKW@9NmWwujgJIid3%J!7l;CbrrT9_o6Eu`Y9a6Z@%RDMS)f5|SmLGKSlN5Pk_ zmjbaP;Oo&|Sb5(Zv68Xp@SsPzW&UKSHFGj8&M$_R^4XjmLN%h@vRa`@gJ|QKxy6OF zm`Tf_g+*9uvIK8g+U7*1R)tscnFT@2H#m!Op7u^Nkdx45tJTSMunQsBDMw}I~==za(Wx54-}=-mbbKLbYjjUHe-F=iJBy6znvL{b9I F`3H2+gFXNN delta 1515 zcmZux-*4Jh6ut(7jg5f-CJB%hnxu^UTC*+>ovKVqOS1-zthh+iSe3G1QC4C{*Dz__ z1MF$ZQ%df(q|&BV>Lw-9q*Uu3_ptw9^~eUY8g)PV2Q*4v_O^RzO=#9D-{a%&eCIpY z_a5Ef2Yw8@4g`S%cqD)QqVT?>?&_m{s>cfHIS=$ifCMB*vS-c2!bh+j|UXHa90-|D7fRE`l0-=M9o_$ANtvPpAyh@I!5tmg`N`oNpgso zATa~Pgwb#GRoiLox*v|(1nM+}U31v6W5x4e9ow%!wiC;sGnN4Q+U`SDM;I+J9DgiE zvFLM$um43t1iTIu3Qr53)(l8<=r6p!zwLfEHT8m{(A{{irGwkDE^|F;56O%9%W1lw!}=ec+w%0Z^C>g|0Au#Shf$po(QU?e zoMAN?CkUfId{oQyUXtX{JnN`N%~*EO^fH}4%ntt_8|ML#Y{Yi{m(9LPrL!MhDjm#J zsdmXYUMXWW%XG;M8+GQ5bPlZ2bc%~=CaX~#-zZESU{$qne- zK$DB=T(rRr?$Sfm$49Z4&c$}=*Zy?6YKfNDUrRnWp56_<&TqKu?t9LLXS{Z~w&XPaYh$s8e;Y0E}Lkvz9t*g+2Cg4Zt6~IE3>n(y`YEBH$zE1lx&3F-DOkV zocTNRTk?*wt#ot#U{m`H@b(>YpvV8Ev?-zwz8kzJ-yhM%v8|7E|CxqovUd4#p#Ph* zo1Zm8qdzP@7;Q{knbt$ozgYC(Oe1iiHh(<)a`eyxoP90vL@P9cpM8ez=MDhv

DashBoard

+ + + + + +
diff --git a/gestaoRaul/home/urls.py b/gestaoRaul/home/urls.py index 3351dac..4016206 100644 --- a/gestaoRaul/home/urls.py +++ b/gestaoRaul/home/urls.py @@ -3,6 +3,6 @@ from . import views urlpatterns = [ path('', views.home, name='home'), - path('chartCuisine', views.chartCuisine, name='chartCuisine'), + path('chartCuisine//', views.chartCuisine, name='chartCuisine'), ] diff --git a/gestaoRaul/home/views.py b/gestaoRaul/home/views.py index 71e97c1..9b28b8a 100644 --- a/gestaoRaul/home/views.py +++ b/gestaoRaul/home/views.py @@ -4,6 +4,9 @@ from django.db.models import Count, F from django.http import JsonResponse, HttpResponse from django.contrib.admin.views.decorators import staff_member_required 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') -def chartCuisine(request): - print(request.user.groups.all()) - print(request.user.is_authenticated) +def chartCuisine(request,dateStart,dateEnd): + try: + 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() tFila = [] tPreparando = [] 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: - tFila.append((order.preparing - order.queue).total_seconds()) - tPreparando.append((order.finished - order.preparing).total_seconds()) - tFinalizado.append((order.delivered - order.finished).total_seconds()) + mediaFila = int((sum(tFila) / len(tFila))/60) + mediaPreparando = int((sum(tPreparando) / len(tPreparando))/60) + mediaFinalizado = int((sum(tFinalizado) / len(tFinalizado))/60) - mediaFila = int((sum(tFila) / len(tFila))/60) - mediaPreparando = int((sum(tPreparando) / len(tPreparando))/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({ - 'mediaFila': mediaFila, - 'mediaPreparando': mediaPreparando, - 'mediaFinalizado': mediaFinalizado, - }) \ No newline at end of file + return JsonResponse({ + 'mediaFila': mediaFila, + 'mediaPreparando': mediaPreparando, + 'mediaFinalizado': mediaFinalizado, + }) + except: + return JsonResponse({ + 'mediaFila': 0, + 'mediaPreparando': 0, + 'mediaFinalizado': 0, + }) diff --git a/gestaoRaul/templates/static/home/js/home.js b/gestaoRaul/templates/static/home/js/home.js index 85c4fdd..00c626a 100644 --- a/gestaoRaul/templates/static/home/js/home.js +++ b/gestaoRaul/templates/static/home/js/home.js @@ -38,20 +38,22 @@ new Chart("vendas", { 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 xValues = ['Fila', 'Preparando', 'Entregar']; 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', },}) .then(response => response.json()) .then(data => { + yValues = [] yValues.push(data['mediaFila']) yValues.push(data['mediaPreparando']) yValues.push(data['mediaFinalizado']) - + console.log(yValues) new Chart("cuisine", { type: "doughnut", data: { @@ -76,6 +78,11 @@ var resposta = fetch('/chartCuisine', {method: 'GET', }); } +function deleyGraficos(){ + setTimeout(function() { + mediaCuisine();}, 20000); +} +// productsPlus() +mediaCuisine() -productsPlus() -mediaCuisine() \ No newline at end of file +// console.log(document.getElementById('data-start').value) \ No newline at end of file