diff --git a/compilacao/forms.py b/compilacao/forms.py index cb854f9af..13c493c29 100644 --- a/compilacao/forms.py +++ b/compilacao/forms.py @@ -262,16 +262,6 @@ class NotaForm(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( label=_('Tipo do Texto Articulado'), @@ -287,19 +277,63 @@ class VideForm(ModelForm): ano_ta = forms.IntegerField( label=_('Ano Texto Articulado'), required=False) - texto = forms.CharField( - label='', - widget=forms.Textarea, + busca_dispositivo = forms.CharField( + label=_('Buscar Dispositivo'), 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( label=TipoVide._meta.verbose_name, queryset=TipoVide.objects.all(), required=True, error_messages=error_messages) - busca_dispositivo = forms.CharField( - label=_('Buscar Dispositivo a Referenciar'), - required=False) pk = forms.IntegerField(widget=forms.HiddenInput(), required=False) @@ -337,24 +371,7 @@ class VideForm(ModelForm): placeholder=_('Texto Adicional ao Vide')), 12))), Row(to_column((buttons, 12)))) - 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))) - ) + kwargs['fields_search'] = fields_search = Div() self.helper = FormHelper() 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) @@ -581,8 +592,12 @@ class DispositivoEdicaoBasicaForm(ModelForm): super(DispositivoEdicaoBasicaForm, self).__init__(*args, **kwargs) +FIELD_NAME_MAPPING = { + 'dispositivo_vigencia': 'dispositivo_ref', +} + -class DispositivoEdicaoVigenciaForm(ModelForm): +class DispositivoEdicaoVigenciaForm(DispositivoSearchFragmentForm): inconstitucionalidade = forms.ChoiceField( label=Dispositivo._meta.get_field( @@ -590,6 +605,11 @@ class DispositivoEdicaoVigenciaForm(ModelForm): choices=utils.YES_NO_CHOICES, widget=forms.RadioSelect()) + dispositivo_vigencia = forms.ModelChoiceField( + required=False, + queryset=Dispositivo.objects.all(), + widget=forms.HiddenInput()) + class Meta: model = Dispositivo fields = ['inicio_vigencia', @@ -597,9 +617,15 @@ class DispositivoEdicaoVigenciaForm(ModelForm): 'inicio_eficacia', 'fim_eficacia', '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): layout = [] @@ -610,7 +636,7 @@ class DispositivoEdicaoVigenciaForm(ModelForm): row_publicacao.fields.append( Alert( css_class='alert-info col-md-3', - content='%s%s' % ( + content='%s %s' % ( _('Dica!'), _('Inclua uma Nota de Dispositivo informando ' 'sobre a Inconstitucionalidade.')))) @@ -624,6 +650,7 @@ class DispositivoEdicaoVigenciaForm(ModelForm): ('fim_vigencia', 3), ('inicio_eficacia', 3), ('fim_eficacia', 3), ]) + layout.append( Fieldset(_('Datas de Controle de Vigência'), row_datas, @@ -631,9 +658,16 @@ class DispositivoEdicaoVigenciaForm(ModelForm): self.helper = FormHelper() self.helper.layout = SaplFormLayout( - *layout, 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) pubs = Publicacao.objects.order_by( diff --git a/compilacao/urls.py b/compilacao/urls.py index 0d48376b1..bc5d22754 100644 --- a/compilacao/urls.py +++ b/compilacao/urls.py @@ -71,9 +71,9 @@ urlpatterns_compilacao = [ '(?P[0-9]+)/vide/(?P[0-9]+)/delete$', views.VideDeleteView.as_view(), name='vide_delete'), - url(r'^(?P[0-9]+)/text/search$', + url(r'^search_fragment_form$', views.DispositivoSearchFragmentFormView.as_view(), - name='search_dispositivo'), + name='dispositivo_fragment_form'), url(r'^(?P[0-9]+)/publicacao$', diff --git a/compilacao/views.py b/compilacao/views.py index 62bdd32f4..1adf2760a 100644 --- a/compilacao/views.py +++ b/compilacao/views.py @@ -9,6 +9,7 @@ from django.contrib.contenttypes.models import ContentType from django.core.signing import Signer from django.core.urlresolvers import reverse_lazy from django.db.models import Q +from django.forms.models import model_to_dict from django.http.response import (HttpResponse, HttpResponseRedirect, JsonResponse) from django.shortcuts import get_object_or_404, redirect @@ -1021,7 +1022,9 @@ class ActionsEditMixin: dvt = dvt.dispositivo_pai 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 ' 'com sucesso!!!'))} except: @@ -1704,10 +1707,10 @@ class VideMixin(DispositivoSuccessUrlMixin): def choice_model_type_foreignkey_in_extenal_views(id_tipo_ta=None): - result = [(None, '-------------'), ] + yield None, '-------------' if not id_tipo_ta: - return result + return 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 == item.model._meta.app_label): for i in item.model_type_foreignkey.objects.all(): - result.append((i.pk, i)) - return result - - -class VideCreateView(VideMixin, CreateView): - 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']) + yield i.pk, i - 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)) +class DispositivoSearchMixin: 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: kwargs.update({ @@ -1757,6 +1739,17 @@ class VideCreateView(VideMixin, CreateView): 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): model = Vide template_name = 'compilacao/ajax_form.html' @@ -1774,6 +1767,21 @@ class VideDeleteView(VideMixin, TemplateView): class DispositivoSearchFragmentFormView(ListView): 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): try: busca = '' @@ -1827,7 +1835,8 @@ class DispositivoSearchFragmentFormView(ListView): q = q & Q(pk=initial_ref) 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: return result[:n] @@ -1984,9 +1993,12 @@ class PublicacaoDeleteView(CompMixin, DeleteView): kwargs={'ta_id': self.kwargs['ta_id']}) -class DispositivoEdicaoBasicaView(UpdateView): +class DispositivoEdicaoBasicaView(FormMessagesMixin, UpdateView): model = Dispositivo 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 def cancel_url(self): @@ -2052,7 +2064,8 @@ class DispositivoEdicaoBasicaView(UpdateView): return UpdateView.get(self, request, *args, **kwargs) -class DispositivoEdicaoVigenciaView(DispositivoEdicaoBasicaView): +class DispositivoEdicaoVigenciaView( + DispositivoSearchMixin, DispositivoEdicaoBasicaView): model = Dispositivo form_class = DispositivoEdicaoVigenciaForm @@ -2074,3 +2087,27 @@ class DispositivoEdicaoVigenciaView(DispositivoEdicaoBasicaView): _('Ocorreu erro na atualização do rótulo'))}, safe=False) return True, JsonResponse({}, safe=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 diff --git a/static/js/compilacao.js b/static/js/compilacao.js index 3c4a3f859..892b53858 100644 --- a/static/js/compilacao.js +++ b/static/js/compilacao.js @@ -21,3 +21,77 @@ function insertWaitAjax(element) { //jQuery(element).append('
'); jQuery(element).append('
'); } + + +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(); + $('').appendTo(select); + + $.get(url).done(function( data ) { + select.empty(); + for(var item in data) { + for (var i in data[item]) + $('').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); + }); +} diff --git a/static/js/compilacao_notas.js b/static/js/compilacao_notas.js index 97a4709f2..f08a4f993 100644 --- a/static/js/compilacao_notas.js +++ b/static/js/compilacao_notas.js @@ -5,7 +5,7 @@ function onEventsDneExec(pk, model) { scrollTop: $('#dne' + pk ).offset().top - window.innerHeight / 5 }, 300); - refreshDatePicker() + refreshDatePicker(); $('#dne'+pk+" #button-id-submit-form").click(onSubmitEditNVForm); $('#dne'+pk+" .btn-close-container").click(function(){ @@ -23,70 +23,12 @@ function onEventsDneExec(pk, model) { }); } else if (model == 'vide') { - $('#dne'+pk+" select[name='tipo_ta']").change(function(event) { - 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']"); - select.empty(); - $('').appendTo(select); - - $.get(url).done(function( data ) { - select.empty(); - for(var item in data) { - for (var i in data[item]) - $('').appendTo(select); - } - + configFormSearchTA('#dne'+pk, 'radio', 'select_for_vide'); - }); - }); - $('#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(); + onChangeParamTA(); } } -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) { diff --git a/static/styles/compilacao.scss b/static/styles/compilacao.scss index d0f7b86d3..d907e9828 100644 --- a/static/styles/compilacao.scss +++ b/static/styles/compilacao.scss @@ -439,63 +439,6 @@ a:link:after, a:visited:after { margin: 1em -2em 0em; text-align: left; 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; } } - - .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); - - } - - .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 { list-style: none; position: fixed; @@ -1002,11 +789,6 @@ a:link:after, a:visited:after { left: 0em; } - - - - - .actions_inserts { background: transparent; position: relative; @@ -1029,9 +811,7 @@ a:link:after, a:visited:after { text-align: center; white-space: nowrap; - &.btn-excluir { - text-align: left; background: #A70808; color: #c99; @@ -1108,7 +888,6 @@ a:link:after, a:visited:after { display: block; position: static; - & > ul { right: 0.5em; 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 { & > .dropdown-menu { left: 0; diff --git a/templates/compilacao/dispositivo_form.html b/templates/compilacao/dispositivo_form.html index 1c5350be9..2f681de8f 100644 --- a/templates/compilacao/dispositivo_form.html +++ b/templates/compilacao/dispositivo_form.html @@ -7,7 +7,7 @@ {% block head_content %}{{block.super}} {% endblock %} -{% block sections_nav %} +{% block sections_nav %}