Browse Source

Adiciona card Uso dos serviços SEIT

pull/159/head
Sesostris Vieira 3 years ago
parent
commit
7360e759e0
  1. 2
      sigi/apps/home/fixtures/cards.json
  2. 5
      sigi/apps/home/urls.py
  3. 37
      sigi/apps/home/views.py
  4. 4
      sigi/static/js/dashboard.js
  5. 2
      sigi/templates/material/admin/index.html

2
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}}] [{"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}}]

5
sigi/apps/home/urls.py

@ -10,6 +10,11 @@ urlpatterns = [
path("openmapsearch/", views.openmapsearch, name="openmapsearch"), path("openmapsearch/", views.openmapsearch, name="openmapsearch"),
path("home/resumoseit/", views.resumo_seit, name="home_resumoseit"), path("home/resumoseit/", views.resumo_seit, name="home_resumoseit"),
path("home/chartseit/", views.chart_seit, name="home_chartseit"), path("home/chartseit/", views.chart_seit, name="home_chartseit"),
path(
"home/cartusoservico/",
views.chart_uso_servico,
name="home_chartusoservico",
),
path( path(
"home/chartperformance/", "home/chartperformance/",
views.chart_performance, views.chart_performance,

37
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.contatos.models import UnidadeFederativa
from sigi.apps.convenios.models import Convenio, Projeto from sigi.apps.convenios.models import Convenio, Projeto
from sigi.apps.home.models import Cards, Dashboard 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.servidores.models import Servidor
from sigi.apps.utils import to_ascii from sigi.apps.utils import to_ascii
@ -406,6 +406,41 @@ def chart_seit(request):
return JsonResponse(data) 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 # @never_cache
# @login_required # @login_required
# def chart_convenios(request): # def chart_convenios(request):

4
sigi/static/js/dashboard.js

@ -1,6 +1,10 @@
$(document).ready(function () { $(document).ready(function () {
$(".dash-control").hide(); $(".dash-control").hide();
try {
M.Tabs.init($('.tabs'), {}); M.Tabs.init($('.tabs'), {});
} catch {
// fail gracefully
}
$(".remove-card").off("click").on("click", function (e) { $(".remove-card").off("click").on("click", function (e) {
e.preventDefault(); e.preventDefault();
var $this = $(this); var $this = $(this);

2
sigi/templates/material/admin/index.html

@ -20,13 +20,13 @@
<a href="#dashtab-{{ dash.slug }}"{% if sigi_dash_selected == dash.slug %} class="active"{% endif %}>{{ dash.label }}</a> <a href="#dashtab-{{ dash.slug }}"{% if sigi_dash_selected == dash.slug %} class="active"{% endif %}>{{ dash.label }}</a>
</li> </li>
{% endfor %} {% endfor %}
{% endif %}
<li class="dash-control tab-control"> <li class="dash-control tab-control">
<a href="#dashcontrol-addtab" class="waves-effect waves-light modal-trigger"><i class="material-icons tiny">add</i>{% trans "Adicionar tab" %}</a> <a href="#dashcontrol-addtab" class="waves-effect waves-light modal-trigger"><i class="material-icons tiny">add</i>{% trans "Adicionar tab" %}</a>
</li> </li>
<li class="tab-edit right"> <li class="tab-edit right">
<a href="#" title="{% trans 'Modo de ediçao' %}"><i class="material-icons tiny">edit</i></a> <a href="#" title="{% trans 'Modo de ediçao' %}"><i class="material-icons tiny">edit</i></a>
</li> </li>
{% endif %}
</ul> </ul>
</div> </div>
{% endblock %} {% endblock %}

Loading…
Cancel
Save