From 7360e759e0f9815d7dc3c7481157f8f48ac956f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ses=C3=B3stris=20Vieira?= Date: Tue, 17 May 2022 09:27:18 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20card=20Uso=20dos=20servi=C3=A7os=20S?= =?UTF-8?q?EIT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sigi/apps/home/fixtures/cards.json | 2 +- sigi/apps/home/urls.py | 5 ++++ sigi/apps/home/views.py | 37 +++++++++++++++++++++++- sigi/static/js/dashboard.js | 6 +++- sigi/templates/material/admin/index.html | 12 ++++---- 5 files changed, 53 insertions(+), 9 deletions(-) diff --git a/sigi/apps/home/fixtures/cards.json b/sigi/apps/home/fixtures/cards.json index e85dc54..13ab0c0 100644 --- a/sigi/apps/home/fixtures/cards.json +++ b/sigi/apps/home/fixtures/cards.json @@ -1 +1 @@ -[{"model": "home.cards", "pk": 1, "fields": {"codigo": "resumoseit", "tipo": "T", "nome_url": "home_resumoseit", "query_string": "", "link_acao": false, "titulo": "Serviços hospedados no Interlegis (SEIT)", "descricao": "Tabela com os serviços criados no SEIT por mês", "categoria": "Serviços", "ordem": 1, "default": true}}, {"model": "home.cards", "pk": 2, "fields": {"codigo": "chartseit", "tipo": "C", "nome_url": "home_chartseit", "query_string": "", "link_acao": true, "titulo": "Sazonalidade da hospedagem de serviços", "descricao": "Gráfico com a sazonalidade das solicitações de serviços", "categoria": "Serviços", "ordem": 2, "default": true}}, {"model": "home.cards", "pk": 3, "fields": {"codigo": "carteira", "tipo": "T", "nome_url": "casas-carteira", "query_string": "snippet=resumo&s=sim", "link_acao": false, "titulo": "Resumo da carteira de relacionamentos", "descricao": "Tabela resumindo a carteira de gerência Interlegis", "categoria": "Gerente", "ordem": 1, "default": true}}, {"model": "home.cards", "pk": 4, "fields": {"codigo": "performance", "tipo": "C", "nome_url": "home_chartperformance", "query_string": "", "link_acao": true, "titulo": "Performance da gerência de carteiras", "descricao": "Performance da gerência de carteiras", "categoria": "Gerente", "ordem": 2, "default": true}}, {"model": "home.cards", "pk": 5, "fields": {"codigo": "chartcarteira", "tipo": "C", "nome_url": "home_chartcarteira", "query_string": "", "link_acao": false, "titulo": "Distribuição de Casas por Gerente", "descricao": "Distribuição de Casas por Gerente", "categoria": "Gerente", "ordem": 3, "default": true}}, {"model": "home.cards", "pk": 6, "fields": {"codigo": "resumoconvenios", "tipo": "T", "nome_url": "home_resumoconvenios", "query_string": "", "link_acao": false, "titulo": "Resumo de informações", "descricao": "Resumo de informações", "categoria": "Geral", "ordem": 1, "default": true}}] \ No newline at end of file +[{"model": "home.cards", "pk": 1, "fields": {"codigo": "resumoseit", "tipo": "T", "nome_url": "home_resumoseit", "query_string": "", "link_acao": false, "titulo": "Serviços hospedados no Interlegis (SEIT)", "descricao": "Tabela com os serviços criados no SEIT por mês", "categoria": "Serviços", "ordem": 1, "default": true}}, {"model": "home.cards", "pk": 2, "fields": {"codigo": "chartseit", "tipo": "C", "nome_url": "home_chartseit", "query_string": "", "link_acao": true, "titulo": "Sazonalidade da hospedagem de serviços", "descricao": "Gráfico com a sazonalidade das solicitações de serviços", "categoria": "Serviços", "ordem": 2, "default": true}}, {"model": "home.cards", "pk": 3, "fields": {"codigo": "carteira", "tipo": "T", "nome_url": "casas-carteira", "query_string": "snippet=resumo&s=sim", "link_acao": false, "titulo": "Resumo da carteira de relacionamentos", "descricao": "Tabela resumindo a carteira de gerência Interlegis", "categoria": "Gerente", "ordem": 1, "default": true}}, {"model": "home.cards", "pk": 4, "fields": {"codigo": "performance", "tipo": "C", "nome_url": "home_chartperformance", "query_string": "", "link_acao": true, "titulo": "Performance da gerência de carteiras", "descricao": "Performance da gerência de carteiras", "categoria": "Gerente", "ordem": 2, "default": true}}, {"model": "home.cards", "pk": 5, "fields": {"codigo": "chartcarteira", "tipo": "C", "nome_url": "home_chartcarteira", "query_string": "", "link_acao": false, "titulo": "Distribuição de Casas por Gerente", "descricao": "Distribuição de Casas por Gerente", "categoria": "Gerente", "ordem": 3, "default": true}}, {"model": "home.cards", "pk": 6, "fields": {"codigo": "resumoconvenios", "tipo": "T", "nome_url": "home_resumoconvenios", "query_string": "", "link_acao": false, "titulo": "Resumo de informações", "descricao": "Resumo de informações", "categoria": "Geral", "ordem": 1, "default": true}}, {"model": "home.cards", "pk": 7, "fields": {"codigo": "chartusoservico", "tipo": "C", "nome_url": "home_chartusoservico", "query_string": "", "link_acao": false, "titulo": "Uso dos serviços SEIT", "descricao": "Mostra como serviços SEIT estão sendo usados pelas Casas", "categoria": "Serviços", "ordem": 3, "default": true}}] \ No newline at end of file diff --git a/sigi/apps/home/urls.py b/sigi/apps/home/urls.py index ae624e3..e8b8ad1 100644 --- a/sigi/apps/home/urls.py +++ b/sigi/apps/home/urls.py @@ -10,6 +10,11 @@ urlpatterns = [ path("openmapsearch/", views.openmapsearch, name="openmapsearch"), path("home/resumoseit/", views.resumo_seit, name="home_resumoseit"), path("home/chartseit/", views.chart_seit, name="home_chartseit"), + path( + "home/cartusoservico/", + views.chart_uso_servico, + name="home_chartusoservico", + ), path( "home/chartperformance/", views.chart_performance, diff --git a/sigi/apps/home/views.py b/sigi/apps/home/views.py index 49e60fc..33a8b01 100644 --- a/sigi/apps/home/views.py +++ b/sigi/apps/home/views.py @@ -25,7 +25,7 @@ from sigi.apps.casas.models import TipoOrgao, Orgao from sigi.apps.contatos.models import UnidadeFederativa from sigi.apps.convenios.models import Convenio, Projeto from sigi.apps.home.models import Cards, Dashboard -from sigi.apps.servicos.models import TipoServico +from sigi.apps.servicos.models import TipoServico, Servico from sigi.apps.servidores.models import Servidor from sigi.apps.utils import to_ascii @@ -406,6 +406,41 @@ def chart_seit(request): return JsonResponse(data) +@never_cache +@login_required +def chart_uso_servico(request): + colors, highlights = color_palete() + counts = { + f"{key}_count": Count("servico", Q(servico__resultado_verificacao=key)) + for key, *__ in Servico.RESULTADO_CHOICES + } + + queryset = ( + TipoServico.objects.exclude(string_pesquisa="") + .filter(servico__data_desativacao=None) + .annotate(**counts) + ) + + chart = { + "data": { + "datasets": [ + { + "type": "bar", + "label": label, + "data": list( + queryset.values_list(f"{key}_count", flat=True) + ), + "backgroundColor": next(colors), + } + for key, label in Servico.RESULTADO_CHOICES + ], + "labels": list(queryset.values_list("sigla", flat=True)), + } + } + + return JsonResponse(chart) + + # @never_cache # @login_required # def chart_convenios(request): diff --git a/sigi/static/js/dashboard.js b/sigi/static/js/dashboard.js index 0be3175..8960495 100644 --- a/sigi/static/js/dashboard.js +++ b/sigi/static/js/dashboard.js @@ -1,6 +1,10 @@ $(document).ready(function () { $(".dash-control").hide(); - M.Tabs.init($('.tabs'), {}); + try { + M.Tabs.init($('.tabs'), {}); + } catch { + // fail gracefully + } $(".remove-card").off("click").on("click", function (e) { e.preventDefault(); var $this = $(this); diff --git a/sigi/templates/material/admin/index.html b/sigi/templates/material/admin/index.html index 191c120..dfb5bdd 100644 --- a/sigi/templates/material/admin/index.html +++ b/sigi/templates/material/admin/index.html @@ -20,13 +20,13 @@ {{ dash.label }} {% endfor %} -
  • - add{% trans "Adicionar tab" %} -
  • -
  • - edit -
  • {% endif %} +
  • + add{% trans "Adicionar tab" %} +
  • +
  • + edit +
  • {% endblock %}