From 7e012650fcfc610ec8df807250ff9cfe77fef1d1 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Wed, 24 Aug 2016 08:32:41 -0300 Subject: [PATCH] Add bts de incl com front-end bootstrap --- sapl/compilacao/forms.py | 8 +++-- sapl/compilacao/models.py | 4 +-- sapl/compilacao/views.py | 43 +++++++++++++++---------- sapl/static/js/compilacao_edit.js | 51 ++++++++++++++++++------------ sapl/static/styles/compilacao.scss | 20 +++++++++--- 5 files changed, 82 insertions(+), 44 deletions(-) diff --git a/sapl/compilacao/forms.py b/sapl/compilacao/forms.py index a9e2f6ac2..2d0d8450a 100644 --- a/sapl/compilacao/forms.py +++ b/sapl/compilacao/forms.py @@ -640,8 +640,10 @@ class DispositivoEdicaoBasicaForm(ModelForm): btns_excluir = [ HTML('%s' % (_('Excluir apenas este dispositivo.'), + inst.pk, _('Excluir Dispositivo')))] if inst.dispositivos_filhos_set.exists(): @@ -649,9 +651,11 @@ class DispositivoEdicaoBasicaForm(ModelForm): HTML( '%s' % (_('Excluir este dispositivo ' 'e toda sua estrutura.'), + inst.pk, _('Excluir Bloco de Dispositivo.')))) if btns_excluir: diff --git a/sapl/compilacao/models.py b/sapl/compilacao/models.py index 4d413d1d0..df7491d13 100644 --- a/sapl/compilacao/models.py +++ b/sapl/compilacao/models.py @@ -924,12 +924,12 @@ class Dispositivo(BaseModel, TimestampedMixin): def criar_espaco(self, espaco_a_criar, local): - if local == 'add_next': + if local == 'json_add_next': proximo_bloco = Dispositivo.objects.filter( ordem__gt=self.ordem, nivel__lte=self.nivel, ta_id=self.ta_id)[:1] - elif local == 'add_in': + elif local == 'json_add_in': proximo_bloco = Dispositivo.objects.filter( ordem__gt=self.ordem, nivel__lte=self.nivel + 1, diff --git a/sapl/compilacao/views.py b/sapl/compilacao/views.py index c08d36ea7..7e36b32ae 100644 --- a/sapl/compilacao/views.py +++ b/sapl/compilacao/views.py @@ -1487,15 +1487,15 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin): result = [{'tipo_insert': force_text(_('Inserir Depois')), 'icone': '↷ ', - 'action': 'add_next', + 'action': 'json_add_next', 'itens': []}, {'tipo_insert': force_text(_('Inserir Dentro')), 'icone': '⇲ ', - 'action': 'add_in', + 'action': 'json_add_in', 'itens': []}, {'tipo_insert': force_text(_('Inserir Antes')), 'icone': '↶ ', - 'action': 'add_prior', + 'action': 'json_add_prior', 'itens': []} ] @@ -1694,7 +1694,7 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin): def set_dvt(self, context): # Dispositivo de Vigência do Texto Original e de Dpts Alterados - dvt = Dispositivo.objects.get(pk=context['dispositivo_id']) + dvt = Dispositivo.objects.get(pk=self.kwargs['dispositivo_id']) if dvt.is_relative_auto_insert(): dvt = dvt.dispositivo_pai @@ -1730,17 +1730,17 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin): return {'message': str(_('Ocorreu um erro na atualização do ' 'Dispositivo de Vigência'))} - def add_prior(self, context): + def json_add_prior(self, context): return {} - def add_in(self, context): - return self.add_next(context, local_add='add_in') + def json_add_in(self, context): + return self.json_add_next(context, local_add='json_add_in') - def add_next(self, context, local_add='add_next'): + def json_add_next(self, context, local_add='json_add_next'): try: dp_auto_insert = None - base = Dispositivo.objects.get(pk=context['dispositivo_id']) + base = Dispositivo.objects.get(pk=self.kwargs['dispositivo_id']) tipo = TipoDispositivo.objects.get(pk=context['tipo_pk']) pub_last = Publicacao.objects.order_by( 'data', 'hora').filter(ta=base.ta).last() @@ -1979,15 +1979,16 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin): not dp.tipo_dispositivo.dispositivo_de_articulacao: dp.dispositivo_pai.ordenar_bloco_alteracao() - except Exception as e: - print(e) + if dp_auto_insert is None: + data = self.get_json_for_refresh(dp) + else: + data = self.get_json_for_refresh(dp=dp, dpauto=dp_auto_insert) - if dp_auto_insert is None: - data = self.get_json_for_refresh(dp) - else: - data = self.get_json_for_refresh(dp=dp, dpauto=dp_auto_insert) + # data['action'] = 'get_form_base' + return data - return data + except Exception as e: + print(e) class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin, @@ -1997,6 +1998,16 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin, def render_to_json_response(self, context, **response_kwargs): action = getattr(self, context['action']) + + if 'tipo_pk' in self.request.GET: + context['tipo_pk'] = self.request.GET['tipo_pk'] + + if 'variacao' in self.request.GET: + context['variacao'] = self.request.GET['variacao'] + + if 'perfil_estrutural' in self.request.session: + context['perfil_pk'] = self.request.session['perfil_estrutural'] + data = action(context) if 'message' in context and 'message' not in data: diff --git a/sapl/static/js/compilacao_edit.js b/sapl/static/js/compilacao_edit.js index b95a7f08a..47632da05 100644 --- a/sapl/static/js/compilacao_edit.js +++ b/sapl/static/js/compilacao_edit.js @@ -15,6 +15,34 @@ function DispositivoEdit() { return instance; }; + instance.bindActionClick = function(event) { + var pk = this.getAttribute('pk'); + + var form_data = { + 'action' : this.getAttribute('action'), + 'tipo_pk' : this.getAttribute('tipo_pk'), + 'variacao' : this.getAttribute('variacao'), + }; + + if (pk !== undefined) { + var url = pk+'/refresh'; + instance.waitShow(); + + $.get(url, form_data).done(function(data) { + instance.clearEditSelected(); + instance.waitHide(); + if (data.pk != null) { + if (data.message === undefined) + instance.refreshScreenFocusPk(data); + else if (instance.modalMessage(data.message.value, 'alert-'+data.message.type, function() { + //instance.waitHide(); + })) + instance.refreshScreenFocusPk(data); + } + }); + } + } + instance.clearEditSelected = function() { $('.dpt-selected .dpt-form').html(''); $('.dpt-actions, .dpt-actions-bottom').html(''); @@ -44,7 +72,6 @@ function DispositivoEdit() { dpt.on('get_form_base', function () { var _this = $(this); _this.addClass('dpt-selected'); - var pk = _this.attr('pk'); instance.scrollTo(_this); _this.off('get_form_base') @@ -56,24 +83,7 @@ function DispositivoEdit() { var btns_excluir = _this.find('.btns-excluir'); _this.find('.dpt-actions-bottom').last().append(btns_excluir); - btns_excluir.find('.btn-excluir').on('click', function() { - var action = this.getAttribute('action'); - - if (pk !== undefined) { - var url = pk+'/refresh?action='+action; - instance.waitShow(); - $.get(url).done(function(data) { - instance.clearEditSelected(); - instance.waitHide(); - if (data.pk != null) { - if (instance.modalMessage(data.message.value, 'alert-'+data.message.type, function() { - //instance.waitHide(); - })) - instance.refreshScreenFocusPk(data); - } - }); - } - }); + btns_excluir.find('.btn-excluir').on('click', instance.bindActionClick); }); instance.loadForm(dpt, 'get_form_base'); } @@ -81,9 +91,9 @@ function DispositivoEdit() { instance.loadActionsEdit = function(dpt) { var pk = dpt.attr('pk'); var url = pk+'/refresh?action=get_actions'; - $.get(url).done(function(data) { dpt.find('.dpt-actions').first().html(data); + dpt.find('.btn-inserts').on('click', instance.bindActionClick); }); } @@ -215,6 +225,7 @@ function DispositivoEdit() { } var pk = pais.shift(); var url = pk+'/refresh'; + $.get(url).done(function(data) { var dpt = $('#id'+pk).closest('.dpt'); dpt = $('#'+dpt.replaceWith(data).attr('id')); diff --git a/sapl/static/styles/compilacao.scss b/sapl/static/styles/compilacao.scss index 564da9554..03f100fdb 100644 --- a/sapl/static/styles/compilacao.scss +++ b/sapl/static/styles/compilacao.scss @@ -527,7 +527,7 @@ a:link:after, a:visited:after { & > .dpt-actions-fixed { position: absolute; right: 0px; - z-index: 2; + z-index: 3; opacity: 0; } & > .dpt-actions, & > .dpt-actions-bottom { @@ -672,6 +672,10 @@ a:link:after, a:visited:after { } .dpt-block { border-top: 1px solid #e5e5e5 !important; + opacity: 0.3; + &:hover { + opacity: 1; + } } .dpt { &:only-child { @@ -690,9 +694,8 @@ a:link:after, a:visited:after { background-color: #f5f5f5; } } - & > .dpt-alts { - margin: 0; - border: 0px; + .dpt-alts { + margin: 1em; .dpt { box-shadow: 0 0 0; } @@ -701,6 +704,7 @@ a:link:after, a:visited:after { } & > .dpt-actions-fixed { display: none; + } .dropdown-menu { @@ -719,6 +723,14 @@ a:link:after, a:visited:after { } } } + + &:hover { + .dpt-actions-fixed { + margin-top: 1em; + margin-right: 1em; + } + } + } }