Browse Source

Construction and structural editing norms

pull/10/head
LeandroRoberto 9 years ago
parent
commit
e071c01260
  1. 23
      compilacao/migrations/0009_auto_20151007_1635.py
  2. 9
      compilacao/models.py
  3. 6
      compilacao/templatetags/compilacao_filters.py
  4. 51
      compilacao/views.py
  5. 18
      static/styles/compilacao.scss
  6. 16
      templates/compilacao/edit.html
  7. 6
      templates/compilacao/edit_bloco.html
  8. 26
      templates/compilacao/index.html

23
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')]),
),
]

9
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,

6
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

51
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:

18
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 {

16
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");
});

6
templates/compilacao/edit_bloco.html

@ -27,9 +27,7 @@
{% endfor %}
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="Atualizar bloco...">A</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Aumentar nível do Dispositivo">&gt;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Aumentar nível do Dispositivo">&gt;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Reduzir nível do Dispositivo">&lt;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Descer uma posição">&#8595;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Subir uma posição">&#8593;</a></li>
@ -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 %}
<div class="actions">
<a class="btn-action" pk="{{dispositivo.pk}}" title="Edição do dispositivo: {{ dispositivo.tipo_dispositivo.nome }} {{ dispositivo.rotulo }}">E</a>

26
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");
});
});
</script>
<div class="compilacao">
<div style="float: right; clear:right;">
<a title="TODO: diminuir fonte... basta manipular font-size da classe css dispositivo">---</a>
<a title="TODO: aumentar fonte... basta manipular font-size da classe css dispositivo">+++</a>
<a id="btn_font_menos" title="Diminuir tamanho da letra">a</a>
<a id="btn_font_mais" title="Aumentar tamanho da Letra">A</a>
</div>
{% for key, values in view.get_vigencias.items %}

Loading…
Cancel
Save