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;
+ }
+ }
+
}
}