From e071c01260b39674301b91f0f841e5e55762406f Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Tue, 13 Oct 2015 10:36:59 -0300 Subject: [PATCH] Construction and structural editing norms --- .../migrations/0009_auto_20151007_1635.py | 23 +++++++++ compilacao/models.py | 9 ++-- compilacao/templatetags/compilacao_filters.py | 6 +-- compilacao/views.py | 51 ++++++++++++++----- static/styles/compilacao.scss | 18 +++++-- templates/compilacao/edit.html | 16 +++--- templates/compilacao/edit_bloco.html | 6 +-- templates/compilacao/index.html | 26 ++++++++-- 8 files changed, 110 insertions(+), 45 deletions(-) create mode 100644 compilacao/migrations/0009_auto_20151007_1635.py diff --git a/compilacao/migrations/0009_auto_20151007_1635.py b/compilacao/migrations/0009_auto_20151007_1635.py new file mode 100644 index 000000000..9a8618131 --- /dev/null +++ b/compilacao/migrations/0009_auto_20151007_1635.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('compilacao', '0008_auto_20151005_1023'), + ] + + operations = [ + migrations.AlterField( + model_name='tipodispositivo', + name='rotulo_ordinal', + field=models.IntegerField(choices=[(0, 'Numeração Cardinal.'), (-1, 'Numeração Ordinal.'), (9, 'Numeração Ordinal até o item nove.')], verbose_name='Tipo de número do rótulo'), + ), + migrations.AlterUniqueTogether( + name='dispositivo', + unique_together=set([('norma', 'ordem'), ('norma', 'dispositivo0', 'dispositivo1', 'dispositivo2', 'dispositivo3', 'dispositivo4', 'dispositivo5', 'tipo_dispositivo', 'dispositivo_pai', 'norma_publicada', 'publicacao')]), + ), + ] diff --git a/compilacao/models.py b/compilacao/models.py index 17c0f1ae5..736d3fa4f 100644 --- a/compilacao/models.py +++ b/compilacao/models.py @@ -453,10 +453,11 @@ class Dispositivo(BaseModel): if len(prefixo) > 1: - if for_insertion and \ - d_base_for_insertion is not None and \ - d_base_for_insertion.pk != self.pk and \ - d_base_for_insertion.tipo_dispositivo.pk <= t.pk: + if (for_insertion and + d_base_for_insertion is not None and + d_base_for_insertion.pk != self.pk and + d_base_for_insertion.tipo_dispositivo.pk <= t.pk) or \ + for_insertion and d_base_for_insertion is None: count_irmaos_mesmo_tipo = Dispositivo.objects.filter( tipo_dispositivo=self.tipo_dispositivo, diff --git a/compilacao/templatetags/compilacao_filters.py b/compilacao/templatetags/compilacao_filters.py index 1a8feb527..6ff84b0e2 100644 --- a/compilacao/templatetags/compilacao_filters.py +++ b/compilacao/templatetags/compilacao_filters.py @@ -82,11 +82,7 @@ def render_actions_head(view, d_atual): if view.__class__.__name__ != 'DispositivoEditView': return False - # Apenas Menu actions head - if view.pk_add == 0 and d_atual.pk == view.pk_view: - return True - - # Menu e conteudo + # Menu if view.pk_view == view.pk_add and d_atual.pk == view.pk_view: return True diff --git a/compilacao/views.py b/compilacao/views.py index c0444c585..12b6df2d7 100644 --- a/compilacao/views.py +++ b/compilacao/views.py @@ -271,7 +271,7 @@ class CompilacaoEditView(CompilacaoView): ).select_related(*DISPOSITIVO_SELECT_RELATED) -class DispositivoEditView(DispositivoView): +class DispositivoEditView(CompilacaoEditView): template_name = 'compilacao/edit_bloco.html' def get_queryset(self): @@ -405,7 +405,8 @@ class DispositivoEditView(DispositivoView): for mudarnivel in [1, 0]: if mudarnivel: # Outros Tipos de Dispositivos PARA DENTRO - otds = TipoDispositivo.objects.order_by('-contagem_continua', 'id').filter( + otds = TipoDispositivo.objects.order_by( + '-contagem_continua', 'id').filter( Q(id__gt=100) & Q(id__gt=d_base.tipo_dispositivo_id)) else: # Outros Tipos de Dispositivos PARA FORA @@ -413,22 +414,36 @@ class DispositivoEditView(DispositivoView): for c in result[0]['itens']: if c['class_css'] not in classes_ja_inseridas: classes_ja_inseridas.append(c['class_css']) - otds = TipoDispositivo.objects.order_by('-contagem_continua', 'id').filter( + otds = TipoDispositivo.objects.order_by( + '-contagem_continua', 'id').filter( id__gt=100, id__lt=d_base.tipo_dispositivo_id).exclude( class_css__in=classes_ja_inseridas) for td in otds: - if (tipb.class_css == 'caput' and - td.class_css == 'paragrafo'): + if td.class_css == 'caput' or (tipb.class_css == 'caput' and + td.class_css == 'paragrafo'): continue d_base.tipo_dispositivo = td - disps = Dispositivo.objects.filter( - tipo_dispositivo_id=td.pk, - dispositivo_pai_id=d_base.pk).aggregate( + if td.contagem_continua: + disps = Dispositivo.objects.filter( + tipo_dispositivo_id=td.pk, + ordem__lte=d_base.ordem, + norma_id=d_base.norma_id).aggregate( + Max('dispositivo0'), + Max('dispositivo1'), + Max('dispositivo2'), + Max('dispositivo3'), + Max('dispositivo4'), + Max('dispositivo5')) + + else: + disps = Dispositivo.objects.filter( + tipo_dispositivo_id=td.pk, + dispositivo_pai_id=d_base.pk).aggregate( Max('dispositivo0'), Max('dispositivo1'), Max('dispositivo2'), @@ -464,14 +479,14 @@ class DispositivoEditView(DispositivoView): if mudarnivel == 1: result[1]['itens'] += r else: - if td.pk < tipb.pk and td.class_css != 'caput': + if td.pk < tipb.pk: result[2]['itens'] += r result[0]['itens'] += r # retira inserir após e inserir antes if tipb.class_css == 'caput': result.pop() - result.remove(result[0]) + # result.remove(result[0]) if tipb.class_css == 'articulacao': r = result[0] @@ -816,10 +831,18 @@ class ActionsEditMixin(object): pkfilho = dp.pk dp = dp.dispositivo_pai - parents = Dispositivo.objects.filter( - norma_id=dp.norma_id, - ordem__gte=dp.ordem, - nivel__lte=dp.nivel) + if proxima_articulacao is not None and \ + proxima_articulacao.exists(): + parents = Dispositivo.objects.filter( + norma_id=dp.norma_id, + ordem__gte=dp.ordem, + ordem__lt=proxima_articulacao[0].ordem, + nivel__lte=dp.nivel) + else: + parents = Dispositivo.objects.filter( + norma_id=dp.norma_id, + ordem__gte=dp.ordem, + nivel__lte=dp.nivel) nivel = sys.maxsize for p in parents: diff --git a/static/styles/compilacao.scss b/static/styles/compilacao.scss index eb0e25287..e649b6bc0 100644 --- a/static/styles/compilacao.scss +++ b/static/styles/compilacao.scss @@ -2,7 +2,7 @@ #message_block { - display: none; + display: block; position: fixed; top: 0; bottom: 0; @@ -14,7 +14,7 @@ #message_block #msg{ position: relative; - margin: 25% auto; + margin: 20% auto; padding: 1.2em 2em; max-width: 600px; text-align: center; @@ -152,7 +152,7 @@ } .dispositivo .bloco_alteracao { - padding-left: 5em; + padding-left: 10%; font-style: italic; } @@ -330,7 +330,8 @@ .compilacaoedit .editclick { border: 2.1em solid #eee; - padding: 1em; + padding: 1em; + padding-bottom: 0em; margin: 1em -2em 1em -2.8em; z-index: 1; background-color: #fff !important; @@ -532,6 +533,15 @@ width: 0; } +@media only screen and (max-width: 40.0625em) { + + .compilacao .fixed{ + z-index:98; + position: relative; + } + + +} @media print { diff --git a/templates/compilacao/edit.html b/templates/compilacao/edit.html index 54845b8c4..09f8d96ba 100644 --- a/templates/compilacao/edit.html +++ b/templates/compilacao/edit.html @@ -17,7 +17,7 @@ $(document).ready(function() { var flag_add_next_pai = 0 clickEditDispositivo = function(event) { - var _pk = event.target.getAttribute('pk'); + var _pk = event.currentTarget.getAttribute('pk'); if ($('#de'+_pk).hasClass("editclick")) { @@ -38,7 +38,7 @@ $(document).ready(function() { var _tipo_pk = ''; if (event != null) { - _pk = event.target.getAttribute('pk'); + _pk = event.currentTarget.getAttribute('pk'); _action = $(this).attr('action'); _variacao = $(this).attr('variacao'); _tipo_pk = $(this).attr('tipo_pk'); @@ -50,14 +50,12 @@ $(document).ready(function() { var url = '' if (_action == '') return - else if (_action == 'refresh' || typeof _action == 'undefined') + else if (_action == 'refresh' || _action == null) url = _pk+'/refresh?pkadd='+flag_add_next_pk; else { url = _pk+'/actions?action='+_action; url += '&tipo_pk='+_tipo_pk; url += '&variacao='+_variacao; - - if (typeof addeditclick == 'undefined' || addeditclick) { $("#message_block").css("display", "block"); } @@ -69,7 +67,7 @@ $(document).ready(function() { if (addeditclick) clearEditClick(); - if (_action == 'refresh' || typeof _action == 'undefined') { + if (_action == 'refresh' || _action == null) { if (flag_add_next) { @@ -86,7 +84,7 @@ $(document).ready(function() { if (typeof addeditclick == 'undefined' || addeditclick) { $('#de'+flag_add_next_pk).addClass('editclick'); $('html, body').animate({ - scrollTop: $('#de' + flag_add_next_pk ).offset().top - window.innerHeight / 3 + scrollTop: $('#de' + flag_add_next_pk ).offset().top - window.innerHeight / 10 }, 300); flag_add_next_pk = 0; } @@ -112,7 +110,7 @@ $(document).ready(function() { location.reload(true) } else { - alert('TODO: Inserção com renumeração '); + alert('Erro na inserção!'); flag_add_next_pk = 0; flag_add_next = false; } @@ -142,7 +140,7 @@ function reloadFunctionClicks() { } reloadFunctionClicks(); - +$("#message_block").css("display", "none"); }); diff --git a/templates/compilacao/edit_bloco.html b/templates/compilacao/edit_bloco.html index b3b4c555f..d8318baf4 100644 --- a/templates/compilacao/edit_bloco.html +++ b/templates/compilacao/edit_bloco.html @@ -27,9 +27,7 @@ {% endfor %} -
  • A
  • - -
  • >
  • +
  • >
  • <
  • @@ -51,7 +49,7 @@ {% endif%} - {% if view.pk_view == 0 and view.pk_add == 0 or view.pk_add != view.pk_view%} + {% if view.pk_view == 0 and view.pk_add == 0 or view.pk_add != view.pk_view %}
    E diff --git a/templates/compilacao/index.html b/templates/compilacao/index.html index d694f657a..080ec9286 100644 --- a/templates/compilacao/index.html +++ b/templates/compilacao/index.html @@ -19,9 +19,11 @@ $( window ).scroll(function() { $(window).load(function() { setTimeout(function() { - height = $( "section.vigencias" ).height() - window.scrollTo(0, window.pageYOffset - height - 36 ); - }, 1000); + height = $( "section.vigencias" ).height(); + $('html, body').animate({ + scrollTop: window.pageYOffset - height - 36 + }, 300); + }, 100); }); function textoMultiVigente(item) { @@ -38,14 +40,28 @@ function textoVigente(item, link) { if (!link) $(".link_alterador").addClass("displaynone"); } + +$(document).ready(function() { + $("#btn_font_menos").click(function() { + $(".dispositivo").css("font-size", "-=1"); + + }); + $("#btn_font_mais").click(function() { + $(".dispositivo").css("font-size", "+=1"); + + }); + +}); + +
    ---- -+++ +a +A
    {% for key, values in view.get_vigencias.items %}