Browse Source

Criar form de dados de vigência de dispositivos

- Criação do fragmento de formulário para buscas de dispositivos
   - Refatoração da Edição de Vides para usar o fragmento de formulário
   - Construção do formulário edição dos dados de vigência de
     dispositívos(Em progresso)
pull/299/head
LeandroRoberto 9 years ago
parent
commit
251a98d0e7
  1. 120
      compilacao/forms.py
  2. 4
      compilacao/urls.py
  3. 97
      compilacao/views.py
  4. 74
      static/js/compilacao.js
  5. 64
      static/js/compilacao_notas.js
  6. 278
      static/styles/compilacao.scss
  7. 33
      templates/compilacao/dispositivo_form.html
  8. 11
      templates/compilacao/dispositivo_search_fragment_form.html
  9. 2
      templates/compilacao/text_edit_bloco.html

120
compilacao/forms.py

@ -262,16 +262,6 @@ class NotaForm(ModelForm):
class DispositivoSearchFragmentForm(ModelForm): class DispositivoSearchFragmentForm(ModelForm):
pass
class VideForm(ModelForm):
dispositivo_base = forms.ModelChoiceField(
queryset=Dispositivo.objects.all(),
widget=forms.HiddenInput())
dispositivo_ref = forms.ModelChoiceField(
queryset=Dispositivo.objects.all(),
widget=forms.HiddenInput())
tipo_ta = forms.ModelChoiceField( tipo_ta = forms.ModelChoiceField(
label=_('Tipo do Texto Articulado'), label=_('Tipo do Texto Articulado'),
@ -287,19 +277,63 @@ class VideForm(ModelForm):
ano_ta = forms.IntegerField( ano_ta = forms.IntegerField(
label=_('Ano Texto Articulado'), required=False) label=_('Ano Texto Articulado'), required=False)
texto = forms.CharField( busca_dispositivo = forms.CharField(
label='', label=_('Buscar Dispositivo'),
widget=forms.Textarea,
required=False) required=False)
def __init__(self, *args, **kwargs):
if 'fields_search' in kwargs:
fields_search = kwargs['fields_search'].fields
fields_search.append(
Row(
to_column(('tipo_ta', 6)),
to_column(('tipo_model', 6))))
fields_search.append(
Row(
to_column(('num_ta', 6)),
to_column(('ano_ta', 6))))
fields_search.append(
Row(to_column((FieldWithButtons(
Field(
'busca_dispositivo',
placeholder=_('Digite palavras, letras, '
'números ou algo'
' que estejam '
'no rótulo ou no texto.')),
StrictButton(_('Buscar'), css_class='btn-busca')), 12))))
fields_search.append(
Row(to_column(
(Div(css_class='result-busca-dispositivo'), 12))))
kwargs.pop('fields_search')
if 'choice_model_type_foreignkey_in_extenal_views' in kwargs:
ch = kwargs.pop('choice_model_type_foreignkey_in_extenal_views')
if 'data' in kwargs:
choice = ch(kwargs['data']['tipo_ta'])
self.base_fields['tipo_model'].choices = choice
elif 'instance' in kwargs and\
isinstance(kwargs['instance'], Dispositivo):
choice = ch(kwargs['instance'].ta.tipo_ta_id)
self.base_fields['tipo_model'].choices = choice
super(DispositivoSearchFragmentForm, self).__init__(*args, **kwargs)
class VideForm(DispositivoSearchFragmentForm):
dispositivo_base = forms.ModelChoiceField(
queryset=Dispositivo.objects.all(),
widget=forms.HiddenInput())
dispositivo_ref = forms.ModelChoiceField(
queryset=Dispositivo.objects.all(),
widget=forms.HiddenInput())
tipo = forms.ModelChoiceField( tipo = forms.ModelChoiceField(
label=TipoVide._meta.verbose_name, label=TipoVide._meta.verbose_name,
queryset=TipoVide.objects.all(), queryset=TipoVide.objects.all(),
required=True, required=True,
error_messages=error_messages) error_messages=error_messages)
busca_dispositivo = forms.CharField(
label=_('Buscar Dispositivo a Referenciar'),
required=False)
pk = forms.IntegerField(widget=forms.HiddenInput(), pk = forms.IntegerField(widget=forms.HiddenInput(),
required=False) required=False)
@ -337,24 +371,7 @@ class VideForm(ModelForm):
placeholder=_('Texto Adicional ao Vide')), 12))), placeholder=_('Texto Adicional ao Vide')), 12))),
Row(to_column((buttons, 12)))) Row(to_column((buttons, 12))))
fields_search = Div( kwargs['fields_search'] = fields_search = Div()
Row(
to_column(('tipo_ta', 6)),
to_column(('tipo_model', 6))),
Row(
to_column(('num_ta', 6)),
to_column(('ano_ta', 6))),
Row(to_column((FieldWithButtons(
Field(
'busca_dispositivo',
placeholder=_('Digite palavras, letras, '
'números ou algo'
' que estejam '
'no rótulo ou no texto.')),
StrictButton(_('Buscar'), css_class='btn-busca')), 12))),
Row(to_column(
(Div(css_class='container-busca'), 12)))
)
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
@ -370,12 +387,6 @@ class VideForm(ModelForm):
) )
) )
if 'choice_model_type_foreignkey_in_extenal_views' in kwargs:
ch = kwargs.pop('choice_model_type_foreignkey_in_extenal_views')
if 'data' in kwargs:
choice = ch(kwargs['data']['tipo_ta'])
self.base_fields['tipo_model'].choices = choice
super(VideForm, self).__init__(*args, **kwargs) super(VideForm, self).__init__(*args, **kwargs)
@ -581,8 +592,12 @@ class DispositivoEdicaoBasicaForm(ModelForm):
super(DispositivoEdicaoBasicaForm, self).__init__(*args, **kwargs) super(DispositivoEdicaoBasicaForm, self).__init__(*args, **kwargs)
FIELD_NAME_MAPPING = {
'dispositivo_vigencia': 'dispositivo_ref',
}
class DispositivoEdicaoVigenciaForm(ModelForm): class DispositivoEdicaoVigenciaForm(DispositivoSearchFragmentForm):
inconstitucionalidade = forms.ChoiceField( inconstitucionalidade = forms.ChoiceField(
label=Dispositivo._meta.get_field( label=Dispositivo._meta.get_field(
@ -590,6 +605,11 @@ class DispositivoEdicaoVigenciaForm(ModelForm):
choices=utils.YES_NO_CHOICES, choices=utils.YES_NO_CHOICES,
widget=forms.RadioSelect()) widget=forms.RadioSelect())
dispositivo_vigencia = forms.ModelChoiceField(
required=False,
queryset=Dispositivo.objects.all(),
widget=forms.HiddenInput())
class Meta: class Meta:
model = Dispositivo model = Dispositivo
fields = ['inicio_vigencia', fields = ['inicio_vigencia',
@ -597,9 +617,15 @@ class DispositivoEdicaoVigenciaForm(ModelForm):
'inicio_eficacia', 'inicio_eficacia',
'fim_eficacia', 'fim_eficacia',
'publicacao', 'publicacao',
'inconstitucionalidade' 'inconstitucionalidade',
'dispositivo_vigencia'
] ]
def add_prefix(self, field_name):
# look up field name; return original if not found
field_name = FIELD_NAME_MAPPING.get(field_name, field_name)
return super(DispositivoEdicaoVigenciaForm, self).add_prefix(field_name)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
layout = [] layout = []
@ -624,6 +650,7 @@ class DispositivoEdicaoVigenciaForm(ModelForm):
('fim_vigencia', 3), ('fim_vigencia', 3),
('inicio_eficacia', 3), ('inicio_eficacia', 3),
('fim_eficacia', 3), ]) ('fim_eficacia', 3), ])
layout.append( layout.append(
Fieldset(_('Datas de Controle de Vigência'), Fieldset(_('Datas de Controle de Vigência'),
row_datas, row_datas,
@ -631,9 +658,16 @@ class DispositivoEdicaoVigenciaForm(ModelForm):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = SaplFormLayout( self.helper.layout = SaplFormLayout(
*layout,
label_cancel=_('Retornar para o Editor Sequencial')) label_cancel=_('Retornar para o Editor Sequencial'))
self.helper.layout.fields += layout
kwargs['fields_search'] = fields_search = Div()
self.helper.layout.fields.append(
Fieldset(_('Dispositivo de Vigência'),
fields_search,
css_class="col-md-12 dispositivo_vigencia_busca"))
super(DispositivoEdicaoVigenciaForm, self).__init__(*args, **kwargs) super(DispositivoEdicaoVigenciaForm, self).__init__(*args, **kwargs)
pubs = Publicacao.objects.order_by( pubs = Publicacao.objects.order_by(

4
compilacao/urls.py

@ -71,9 +71,9 @@ urlpatterns_compilacao = [
'(?P<dispositivo_id>[0-9]+)/vide/(?P<pk>[0-9]+)/delete$', '(?P<dispositivo_id>[0-9]+)/vide/(?P<pk>[0-9]+)/delete$',
views.VideDeleteView.as_view(), name='vide_delete'), views.VideDeleteView.as_view(), name='vide_delete'),
url(r'^(?P<ta_id>[0-9]+)/text/search$', url(r'^search_fragment_form$',
views.DispositivoSearchFragmentFormView.as_view(), views.DispositivoSearchFragmentFormView.as_view(),
name='search_dispositivo'), name='dispositivo_fragment_form'),
url(r'^(?P<ta_id>[0-9]+)/publicacao$', url(r'^(?P<ta_id>[0-9]+)/publicacao$',

97
compilacao/views.py

@ -9,6 +9,7 @@ from django.contrib.contenttypes.models import ContentType
from django.core.signing import Signer from django.core.signing import Signer
from django.core.urlresolvers import reverse_lazy from django.core.urlresolvers import reverse_lazy
from django.db.models import Q from django.db.models import Q
from django.forms.models import model_to_dict
from django.http.response import (HttpResponse, HttpResponseRedirect, from django.http.response import (HttpResponse, HttpResponseRedirect,
JsonResponse) JsonResponse)
from django.shortcuts import get_object_or_404, redirect from django.shortcuts import get_object_or_404, redirect
@ -1021,7 +1022,9 @@ class ActionsEditMixin:
dvt = dvt.dispositivo_pai dvt = dvt.dispositivo_pai
try: try:
Dispositivo.objects.all().update(dispositivo_vigencia=dvt) Dispositivo.objects.filter(
ta=dvt.ta,
ta_publicado__isnull=True).update(dispositivo_vigencia=dvt)
return {'message': str(_('Dispositivo de Vigência atualizado ' return {'message': str(_('Dispositivo de Vigência atualizado '
'com sucesso!!!'))} 'com sucesso!!!'))}
except: except:
@ -1704,10 +1707,10 @@ class VideMixin(DispositivoSuccessUrlMixin):
def choice_model_type_foreignkey_in_extenal_views(id_tipo_ta=None): def choice_model_type_foreignkey_in_extenal_views(id_tipo_ta=None):
result = [(None, '-------------'), ] yield None, '-------------'
if not id_tipo_ta: if not id_tipo_ta:
return result return
tipo_ta = TipoTextoArticulado.objects.get(pk=id_tipo_ta) tipo_ta = TipoTextoArticulado.objects.get(pk=id_tipo_ta)
@ -1718,35 +1721,14 @@ def choice_model_type_foreignkey_in_extenal_views(id_tipo_ta=None):
tipo_ta.content_type.app_label == tipo_ta.content_type.app_label ==
item.model._meta.app_label): item.model._meta.app_label):
for i in item.model_type_foreignkey.objects.all(): for i in item.model_type_foreignkey.objects.all():
result.append((i.pk, i)) yield i.pk, i
return result
class VideCreateView(VideMixin, CreateView): class DispositivoSearchMixin:
model = Vide
template_name = 'compilacao/ajax_form.html'
form_class = VideForm
def get(self, request, *args, **kwargs):
self.object = None
if 'action' in request.GET and request.GET['action'] == 'get_tipos':
result = choice_model_type_foreignkey_in_extenal_views(
id_tipo_ta=request.GET['tipo_ta'])
itens = []
for i in result:
item = {}
item[i[0] if i[0] else ''] = str(i[1])
itens.append(item)
return JsonResponse(itens, safe=False)
form = self.get_form()
return self.render_to_response(self.get_context_data(form=form))
def get_form_kwargs(self): def get_form_kwargs(self):
kwargs = super(VideCreateView, self).get_form_kwargs() kwargs = super(DispositivoSearchMixin, self).get_form_kwargs()
if 'choice_model_type_foreignkey_in_extenal_views' not in kwargs: if 'choice_model_type_foreignkey_in_extenal_views' not in kwargs:
kwargs.update({ kwargs.update({
@ -1757,6 +1739,17 @@ class VideCreateView(VideMixin, CreateView):
return kwargs return kwargs
class VideCreateView(VideMixin, DispositivoSearchMixin, CreateView):
model = Vide
template_name = 'compilacao/ajax_form.html'
form_class = VideForm
def get(self, request, *args, **kwargs):
self.object = None
form = self.get_form()
return self.render_to_response(self.get_context_data(form=form))
class VideEditView(VideMixin, UpdateView): class VideEditView(VideMixin, UpdateView):
model = Vide model = Vide
template_name = 'compilacao/ajax_form.html' template_name = 'compilacao/ajax_form.html'
@ -1774,6 +1767,21 @@ class VideDeleteView(VideMixin, TemplateView):
class DispositivoSearchFragmentFormView(ListView): class DispositivoSearchFragmentFormView(ListView):
template_name = 'compilacao/dispositivo_search_fragment_form.html' template_name = 'compilacao/dispositivo_search_fragment_form.html'
def get(self, request, *args, **kwargs):
if 'action' in request.GET and request.GET['action'] == 'get_tipos':
result = choice_model_type_foreignkey_in_extenal_views(
id_tipo_ta=request.GET['tipo_ta'])
itens = []
for i in result:
item = {}
item[i[0] if i[0] else ''] = str(i[1])
itens.append(item)
return JsonResponse(itens, safe=False)
return ListView.get(self, request, *args, **kwargs)
def get_queryset(self): def get_queryset(self):
try: try:
busca = '' busca = ''
@ -1827,7 +1835,8 @@ class DispositivoSearchFragmentFormView(ListView):
q = q & Q(pk=initial_ref) q = q & Q(pk=initial_ref)
n = 50 n = 50
result = Dispositivo.objects.filter(q).select_related('ta') result = Dispositivo.objects.filter(q).select_related(
'ta').exclude(tipo_dispositivo__dispositivo_de_alteracao=True)
if 'tipo_model' not in self.request.GET: if 'tipo_model' not in self.request.GET:
return result[:n] return result[:n]
@ -1984,9 +1993,12 @@ class PublicacaoDeleteView(CompMixin, DeleteView):
kwargs={'ta_id': self.kwargs['ta_id']}) kwargs={'ta_id': self.kwargs['ta_id']})
class DispositivoEdicaoBasicaView(UpdateView): class DispositivoEdicaoBasicaView(FormMessagesMixin, UpdateView):
model = Dispositivo model = Dispositivo
form_class = DispositivoEdicaoBasicaForm form_class = DispositivoEdicaoBasicaForm
form_valid_message = _('Alterações no Dispositivo realizadas com sucesso!')
form_invalid_message = _('Houve erro em registrar '
'as alterações no Dispositivo')
@property @property
def cancel_url(self): def cancel_url(self):
@ -2052,7 +2064,8 @@ class DispositivoEdicaoBasicaView(UpdateView):
return UpdateView.get(self, request, *args, **kwargs) return UpdateView.get(self, request, *args, **kwargs)
class DispositivoEdicaoVigenciaView(DispositivoEdicaoBasicaView): class DispositivoEdicaoVigenciaView(
DispositivoSearchMixin, DispositivoEdicaoBasicaView):
model = Dispositivo model = Dispositivo
form_class = DispositivoEdicaoVigenciaForm form_class = DispositivoEdicaoVigenciaForm
@ -2074,3 +2087,27 @@ class DispositivoEdicaoVigenciaView(DispositivoEdicaoBasicaView):
_('Ocorreu erro na atualização do rótulo'))}, safe=False) _('Ocorreu erro na atualização do rótulo'))}, safe=False)
return True, JsonResponse({}, safe=False) return True, JsonResponse({}, safe=False)
return False, '' return False, ''
def get_initial(self):
ta = self.object.ta_publicado if self.object.ta_publicado else\
self.object.ta
initial = {
'ano_ta': ta.ano,
'num_ta': ta.numero,
'tipo_ta': ta.tipo_ta,
}
if hasattr(ta, 'content_object') and\
ta.content_object:
lista_tipos = list(choice_model_type_foreignkey_in_extenal_views(
id_tipo_ta=ta.tipo_ta_id))
content_object = model_to_dict(ta.content_object)
for key, value in content_object.items():
for item in lista_tipos:
if getattr(ta.content_object, key) == item[1]:
initial['tipo_model'] = item[0]
return initial

74
static/js/compilacao.js

@ -21,3 +21,77 @@ function insertWaitAjax(element) {
//jQuery(element).append('<div style="text-align:center;"><img src="/static/img/ajax-loader.gif"></div>'); //jQuery(element).append('<div style="text-align:center;"><img src="/static/img/ajax-loader.gif"></div>');
jQuery(element).append('<div style="text-align:center;"><i style="font-size: 200%;"class="fa fa-refresh fa-spin"></i></div>'); jQuery(element).append('<div style="text-align:center;"><i style="font-size: 200%;"class="fa fa-refresh fa-spin"></i></div>');
} }
var tipo_select = '';
var tipo_form = '';
var configFormSearchTA = function(container, _tipo_form, _tipo_select) {
tipo_select = _tipo_select;
tipo_form = _tipo_form;
var ta_select = $(container+" select[name='tipo_ta']");
$(container+" label[for='id_tipo_model']").html('Tipos de ' + ta_select[0].children[ta_select[0].selectedIndex].innerHTML);
$(container+" select[name='tipo_ta']").change(function(event) {
var url = '';
url = '/ta/search_fragment_form?action=get_tipos&tipo_ta='+this.value;
$(container+" label[for='id_tipo_model']").html('Tipos de ' + this.children[this.selectedIndex].innerHTML);
var select = $(container+" select[name='tipo_model']");
select.empty();
$('<option value="">Carregando...</option>').appendTo(select);
$.get(url).done(function( data ) {
select.empty();
for(var item in data) {
for (var i in data[item])
$('<option value="'+i+'">'+data[item][i]+'</option>').appendTo(select);
}
select.change(onChangeParamTA)
});
});
$(container+" input[name='num_ta'], "
+ container+" input[name='ano_ta'], "
+ container+" select[name='tipo_model'], "
+ container+" input[name='busca_dispositivo']"
).change(onChangeParamTA);
$(container+" .btn-busca").click(onChangeParamTA);
}
var onChangeParamTA = function(event) {
var tipo_ta = $("select[name='tipo_ta']").val();
var tipo_model = $("select[name='tipo_model']").val();
var num_ta = $("input[name='num_ta']").val();
var ano_ta = $("input[name='ano_ta']").val();
var rotulo_dispositivo = $("input[name='rotulo_dispositivo']").val();
var busca_dispositivo = $("input[name='busca_dispositivo']").val();
var dispositivo_ref = $("#id_dispositivo_ref").val();
$('#id_dispositivo_ref').remove();
if (dispositivo_ref == null)
dispositivo_ref = ''
var url = '';
var formData = {
'tipo_ta' : tipo_ta,
'tipo_model' : tipo_model,
'num_ta' : num_ta,
'ano_ta' : ano_ta,
'busca' : busca_dispositivo,
'rotulo' : rotulo_dispositivo,
'tipo_form' : tipo_form,
'tipo_select' : tipo_select,
'initial_ref' : dispositivo_ref
};
url = '/ta/search_fragment_form';
$('.result-busca-dispositivo').html('');
insertWaitAjax('.result-busca-dispositivo')
$.get(url, formData).done(function( data ) {
$('.result-busca-dispositivo').html(data);
//$("input[name='dispositivo_ref']").first().prop('checked', true);
});
}

64
static/js/compilacao_notas.js

@ -5,7 +5,7 @@ function onEventsDneExec(pk, model) {
scrollTop: $('#dne' + pk ).offset().top - window.innerHeight / 5 scrollTop: $('#dne' + pk ).offset().top - window.innerHeight / 5
}, 300); }, 300);
refreshDatePicker() refreshDatePicker();
$('#dne'+pk+" #button-id-submit-form").click(onSubmitEditNVForm); $('#dne'+pk+" #button-id-submit-form").click(onSubmitEditNVForm);
$('#dne'+pk+" .btn-close-container").click(function(){ $('#dne'+pk+" .btn-close-container").click(function(){
@ -23,70 +23,12 @@ function onEventsDneExec(pk, model) {
}); });
} }
else if (model == 'vide') { else if (model == 'vide') {
$('#dne'+pk+" select[name='tipo_ta']").change(function(event) { configFormSearchTA('#dne'+pk, 'radio', 'select_for_vide');
var url = '';
url = 'text/'+pk+'/vide/create?action=get_tipos&tipo_ta='+this.value;
$('#dne'+pk+" label[for='id_tipo_model']").html('Tipos de ' + this.children[this.selectedIndex].innerHTML);
var select = $('#dne'+pk+" select[name='tipo_model']"); onChangeParamTA();
select.empty();
$('<option value="">Carregando...</option>').appendTo(select);
$.get(url).done(function( data ) {
select.empty();
for(var item in data) {
for (var i in data[item])
$('<option value="'+i+'">'+data[item][i]+'</option>').appendTo(select);
} }
});
});
$('#dne'+pk+" input[name='num_norma'], "
+ '#dne'+pk+" input[name='ano_norma'], "
+ '#dne'+pk+" input[name='busca_dispositivo']"
).change(onChangeParamNorma);
$('#dne'+pk+" .btn-busca").click(onChangeParamNorma);
onChangeParamNorma();
} }
}
var onChangeParamNorma = function(event) {
var tipo_ta = $("select[name='tipo_ta']").val();
var tipo_model = $("select[name='tipo_model']").val();
var num_ta = $("input[name='num_ta']").val();
var ano_ta = $("input[name='ano_ta']").val();
var busca_dispositivo = $("input[name='busca_dispositivo']").val();
var dispositivo_ref = $("#id_dispositivo_ref").val();
$('#id_dispositivo_ref').remove();
if (dispositivo_ref == null)
dispositivo_ref = ''
var url = '';
var pk = $("select[name='tipo_ta']").closest('.dne').attr('pk')
var formData = {
'tipo_ta' : tipo_ta,
'tipo_model' : tipo_model,
'num_ta' : num_ta,
'ano_ta' : ano_ta,
'busca' : busca_dispositivo,
'tipo_form' : 'radio',
'initial_ref' : dispositivo_ref
};
url = 'text/search';
$('.container-busca').html('');
insertWaitAjax('.container-busca')
$.get(url, formData).done(function( data ) {
$('.container-busca').html(data);
$("input[name='dispositivo_ref']").first().prop('checked', true);
});
}
var onSubmitEditNVForm = function(event) { var onSubmitEditNVForm = function(event) {

278
static/styles/compilacao.scss

@ -439,63 +439,6 @@ a:link:after, a:visited:after {
margin: 1em -2em 0em; margin: 1em -2em 0em;
text-align: left; text-align: left;
font-size: 1.6rem; font-size: 1.6rem;
.container-busca {
ul{
list-style: none;
display: table;
margin-left: 0;
border-collapse:separate;
border-spacing:1px;
padding: 0px;
li {
display: table-row;
&:nth-child(even) {
background-color: rgba(0, 0, 0, 0.05);
}
&:nth-child(odd) {
background-color: rgba(0, 0, 0, 0.08);
}
.iteminput {
display: table-cell;
padding: 0.5em;
vertical-align: middle;
text-align: center;
input {
margin: 0;
}
}
.itemlabel {
display: table-cell;
padding: 0.5em;
vertical-align: middle;
width: 100%;
label {
line-height: 1;
font-family: "SourceSansPro", Helvetica, Arial, sans-serif;
}
}
}
}
.ta_title {
padding: 0.15em 0.7em;
background-color: rgba(0, 0, 0, 0.15);
margin: 0.1em 0.08em 0 0.1em;
}
.nomenclatura_heranca {
font-size: 90%;
color: #057dba;
}
}
} }
} }
@ -510,166 +453,10 @@ a:link:after, a:visited:after {
transition-delay: 0s; transition-delay: 0s;
} }
} }
.dne-nota111 {
box-shadow: -4px 15px 15px rgba(0, 0, 0, 0.1), 0px 6px 6px rgba(0, 0, 0, 0.23);
@include background-top-down(#f5f5f5, #eee);
position: relative;
transform: scaleX(1);
height: auto;
left: 0;
right: 0;
margin: 1em 0 2em 0;
padding: 0em;
border: 0px;
z-index: 19;
ul.btns-action {
display: none;
}
.dne-form111 {
.asterisk {
color: transparent;
&::before {
color: red;
content: "\2b25";
padding: 0 0.333em;
vertical-align: super;
}
}
.title_form {
font-size: 2.5em;
padding: 0.5em 0.3em 0.3em;
background: #e5e5e5;
color: #777;
margin-bottom: 0.4em;
border-bottom: 1px solid #aaa;
}
fieldset {
border: 0px;
}
select {
background: url(/static/img/down_arrow_select.jpg) no-repeat right #ddd;
border: 0px;
outline:0px;
}
.alert-box {
margin-bottom: 0;
}
.row:first-of-type {
margin-top: 1em;
display: inline-block;
}
.columns {
padding: 0 0.5rem;
}
.input {
border: 0px;
border-bottom: 1px solid #ccc;
margin: 0 0 0 0 ;
padding: 0.5em;
background: #eee;
height: auto;
box-shadow: 0 0 0;
@include placeholder(#777, 1, 100%, normal);
&:focus {
background: #fafafa;
@include placeholder(#456, 1, 100%, normal);
}
}
.textinput{
@include placeholder(#777, 1, 90%, normal);
&:focus {
background: #fafafa;
@include placeholder(#456, 1, 90%, normal);
}
}
.textinput[name='titulo']{
@extend .input;
font-size:130%;
font-weight: bold;
border-bottom: 0;
@include placeholder(#777, 1, 100%, bold);
&:focus {
background: #fafafa;
@include placeholder(#777, 1, 100%, bold);
}
}
.textarea {
@extend .input;
resize: vertical;
font-weight: normal;
}
.urlinput {
@extend .input;
margin-bottom: 1em;
}
.button {
width: 100%;
margin-top: 1.6em;
padding: 0;
height: 2.835em;
}
.btn-busca {
margin-top: 1.25em;
}
.container-busca {
ul{
list-style: none;
display: table;
margin-left: 0;
border-collapse:separate;
border-spacing:1px;
li {
display: table-row;
&:nth-child(even) {
background-color: rgba(0, 0, 0, 0.05);
}
&:nth-child(odd) {
background-color: rgba(0, 0, 0, 0.08);
} }
} /* and dpt */
.iteminput {
display: table-cell;
padding: 0.5em;
vertical-align: middle;
text-align: center;
input {
margin: 0;
}
}
.itemlabel {
display: table-cell;
padding: 0.5em;
vertical-align: middle;
width: 100%;
}
}
}
.ta_title {
padding: 0.15em 0.7em;
background-color: rgba(0, 0, 0, 0.15);
margin: 0.1em 0.08em 0 0.1em;
}
.nomenclatura_heranca {
font-size: 90%;
color: #057dba;
}
}
}
}
}
} /* and dpt */
.tipo-vigencias { .tipo-vigencias {
list-style: none; list-style: none;
position: fixed; position: fixed;
@ -1002,11 +789,6 @@ a:link:after, a:visited:after {
left: 0em; left: 0em;
} }
.actions_inserts { .actions_inserts {
background: transparent; background: transparent;
position: relative; position: relative;
@ -1029,9 +811,7 @@ a:link:after, a:visited:after {
text-align: center; text-align: center;
white-space: nowrap; white-space: nowrap;
&.btn-excluir { &.btn-excluir {
text-align: left; text-align: left;
background: #A70808; background: #A70808;
color: #c99; color: #c99;
@ -1108,7 +888,6 @@ a:link:after, a:visited:after {
display: block; display: block;
position: static; position: static;
& > ul { & > ul {
right: 0.5em; right: 0.5em;
li { li {
@ -1197,6 +976,61 @@ a:link:after, a:visited:after {
} }
} }
.result-busca-dispositivo {
ul{
list-style: none;
display: table;
margin-left: 0;
border-collapse:separate;
border-spacing:1px;
padding: 0px;
li {
display: table-row;
&:nth-child(even) {
background-color: rgba(0, 0, 0, 0.05);
}
&:nth-child(odd) {
background-color: rgba(0, 0, 0, 0.08);
}
.iteminput {
display: table-cell;
padding: 0.5em;
vertical-align: middle;
text-align: center;
input {
margin: 0;
}
}
.itemlabel {
display: table-cell;
padding: 0.5em;
vertical-align: middle;
width: 100%;
label {
line-height: 1;
font-family: "SourceSansPro", Helvetica, Arial, sans-serif;
}
}
}
}
.ta_title {
padding: 0.15em 0.7em;
background-color: rgba(0, 0, 0, 0.15);
margin: 0.1em 0.08em 0 1px;
}
.nomenclatura_heranca {
font-size: 90%;
color: #057dba;
display: block;
}
}
.cp-nav-parents { .cp-nav-parents {
& > .dropdown-menu { & > .dropdown-menu {
left: 0; left: 0;

33
templates/compilacao/dispositivo_form.html

@ -37,12 +37,8 @@
{% crispy form %} {% crispy form %}
{% endblock %} {% endblock %}
{% block foot_js %}
{{block.super}}
<script type="text/javascript" src="{% static 'js/compilacao.js' %}"></script>
{% endblock %}
{% block extra_js %} {% block extra_js %}
<script type="text/javascript" src="{% static 'js/compilacao.js' %}"></script>
<script type="text/javascript"> <script type="text/javascript">
function atualizaRotulo() { function atualizaRotulo() {
@ -77,7 +73,34 @@
{% if object.tipo_dispositivo.dispositivo_de_articulacao %} {% if object.tipo_dispositivo.dispositivo_de_articulacao %}
setTimeout(removeTinymce, 100); setTimeout(removeTinymce, 100);
{% endif %} {% endif %}
$('[data-toggle="tooltip"]').tooltip(); $('[data-toggle="tooltip"]').tooltip();
configFormSearchTA('.dispositivo_vigencia_busca', 'radio', 'select_for_vigencia');
onChangeParamTA();
var change_inconstitucionalidade = function() {
var datas = $('.dateinput').filter('[name!="inicio_vigencia"]');
var _this = this;
if ($('[name="inconstitucionalidade"]:checked').val() == "True") {
datas.val($('[name="inicio_vigencia"]').val());
datas.attr("readonly", "readonly");
datas.datepicker( "destroy" );
}
else {
datas.removeAttr("readonly");
datas.datepicker();
}
}
$('[name="inconstitucionalidade"]').on('change', change_inconstitucionalidade);
$('[name="inicio_vigencia"]').on('change', change_inconstitucionalidade);
change_inconstitucionalidade();
$('form').bind("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
}); });
</script> </script>
{% endblock %} {% endblock %}

11
templates/compilacao/dispositivo_search_fragment_form.html

@ -13,7 +13,6 @@
<div class="ta_title">{{dpt.ta}}</div> <div class="ta_title">{{dpt.ta}}</div>
<ul> <ul>
{% endifchanged %} {% endifchanged %}
{% if dpt.is_relative_auto_insert and dpt.dispositivo_pai.nivel != 0 %} {% if dpt.is_relative_auto_insert and dpt.dispositivo_pai.nivel != 0 %}
<li> <li>
<div class="iteminput"> <div class="iteminput">
@ -34,6 +33,16 @@
<a target="_blank" href="{% url 'compilacao:ta_text' dpt.ta.pk%}#{{dpt.pk}}" class="nomenclatura_heranca">{% nomenclatura_heranca dpt 1 1 %}</a> <a target="_blank" href="{% url 'compilacao:ta_text' dpt.ta.pk%}#{{dpt.pk}}" class="nomenclatura_heranca">{% nomenclatura_heranca dpt 1 1 %}</a>
</div> </div>
</li> </li>
{% elif dpt.tipo_dispositivo.dispositivo_de_articulacao and request.GET.tipo_select != 'select_for_vide'%}
<li>
<div class="iteminput">
<input type="{{request.GET.tipo_form}}" name="dispositivo_ref" id="r{{dpt.pk}}" value="{{dpt.pk}}"/>
</div>
<div class="itemlabel">
<label for="r{{dpt.pk}}">{{dpt.rotulo|safe}} - {% if dpt.tipo_dispositivo.dispositivo_de_articulacao %}{{dpt.dispositivos_filhos_set.all.first.texto|safe}}{% else %}{{dpt.texto|safe}}{% endif %}</label>
<a target="_blank" href="{% url 'compilacao:ta_text' dpt.ta.pk%}#{{dpt.pk}}" class="nomenclatura_heranca">{% nomenclatura_heranca dpt 1 1 %}</a>
</div>
</li>
{% endif%} {% endif%}
{% if forloop.last %}</ul>{% endif %} {% if forloop.last %}</ul>{% endif %}
{% endfor %} {% endfor %}

2
templates/compilacao/text_edit_bloco.html

@ -27,7 +27,7 @@
</ul> </ul>
<ul class="btns-action actions_right"> <ul class="btns-action actions_right">
<li><a class="btn-right btn-action" pk="{{dpt.pk}}" action="set_dvt" title="{% trans 'Definir como Dispositivo de Vigência para todos os Dispositivos deste Texto.'%}">DVt</a></li> <li><a class="btn-right btn-action" pk="{{dpt.pk}}" action="set_dvt" title="{% trans 'Definir como Dispositivo de Vigência para todos os Dispositivos Originais deste Texto. OBS: Dispositivos Alterados devem ser feitos manualmente!'%}">DVt</a></li>
{% comment %} {% comment %}
<li><a class="btn-right btn-action" pk="{{dpt.pk}}" action="refresh" title="{% trans 'TODO: Reduzir nível do Dispositivo'%}">&#10092;</a></li> <li><a class="btn-right btn-action" pk="{{dpt.pk}}" action="refresh" title="{% trans 'TODO: Reduzir nível do Dispositivo'%}">&#10092;</a></li>

Loading…
Cancel
Save