Browse Source

Atual. dinâmica de interface na excl de Dispositivos

pull/590/head
LeandroRoberto 9 years ago
parent
commit
acbbfa8fc0
  1. 2
      sapl/compilacao/forms.py
  2. 40
      sapl/compilacao/views.py
  3. 43
      sapl/static/js/compilacao_edit.js

2
sapl/compilacao/forms.py

@ -587,7 +587,7 @@ class DispositivoEdicaoBasicaForm(ModelForm):
'conteúdo que deve estar no Texto Original e '
'no Texto Alterador, não há necessidade '
'de duplicar a informação. A validação dos '
'negará a igualdade.'))
'dados negará a igualdade.'))
self.visibilidade = forms.ChoiceField(
label=Dispositivo._meta.get_field(
'visibilidade').verbose_name,

40
sapl/compilacao/views.py

@ -1140,6 +1140,7 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin):
def json_delete_bloco_dispositivo(self, context, bloco=True):
base = Dispositivo.objects.get(pk=self.kwargs['dispositivo_id'])
ta_base = base.ta
base_anterior = Dispositivo.objects.order_by('-ordem').filter(
ta_id=base.ta_id,
@ -1150,26 +1151,30 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin):
if base_anterior:
data = self.get_json_for_refresh(base_anterior)
else:
base_anterior = Dispositivo.objects.order_by('ordem').filter(
ta_id=base.ta_id,
ordem__lt=base.ordem
).first()
if base_anterior:
data = self.get_json_for_refresh(base_anterior)
else:
data['pk'] = ''
base_anterior = base.get_nivel_zero_anterior()
data = self.get_json_for_refresh(base_anterior)
ta_base = base.ta
bases_atualizacao = Dispositivo.objects.order_by('ordem').filter(
ta_id=base.ta_id,
ordem__gt=base.ordem,
nivel__lt=base.nivel)
data['pai'] = [base.get_raiz().pk]
# TODO: a linha abaixo causa atualização da tela inteira...
# retirar a linha abaixo e identificar atualizações pontuais
data['pai'] = [-1, ]
"""nivel = sys.maxsize
for b in bases_atualizacao:
if b.nivel < nivel:
data['pai'].append(b.pk)
nivel = b.nivel"""
try:
with transaction.atomic():
message = str(self.remover_dispositivo(base, bloco))
if message:
self.set_message(data, 'success', message)
self.set_message(data, 'warning', message)
else:
self.set_message(data, 'success', _(
'Exclusão efetuada com sucesso!'))
ta_base.ordenar_dispositivos()
except Exception as e:
data['pk'] = self.kwargs['dispositivo_id']
@ -1459,18 +1464,15 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin):
class ActionDispositivoCreateMixin(ActionsCommonsMixin):
def select_provaveis_inserts(self, request=None):
def json_provaveis_inserts(self, context=None):
request = self.request
try:
if request and 'perfil_estrutural' not in request.session:
self.set_perfil_in_session(request)
perfil_pk = request.session['perfil_estrutural']
# Não salvar d_base
if self.pk_edit == 0:
base = Dispositivo.objects.get(pk=self.pk_view)
else:
base = Dispositivo.objects.get(pk=self.pk_edit)
base = Dispositivo.objects.get(pk=self.kwargs['dispositivo_id'])
prox_possivel = Dispositivo.objects.filter(
ordem__gt=base.ordem,

43
sapl/static/js/compilacao_edit.js

@ -14,6 +14,7 @@ function DispositivoEdit() {
DispositivoEdit = function() {
return instance;
};
instance.clearEditSelected = function() {
$('.dpt-selected .dpt-form').html('');
$('.dpt-actions, .dpt-actions-bottom').html('');
@ -41,6 +42,7 @@ 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')
@ -54,25 +56,36 @@ function DispositivoEdit() {
btns_excluir.find('.btn-excluir').on('click', function() {
var action = this.getAttribute('action');
var pk = $(this).closest('.dpt-selected').attr('pk');
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.value, function() {
instance.waitHide();
if (instance.modalMessage(data.message.value, 'alert-'+data.message.type, function() {
//instance.waitHide();
}))
instance.refreshScreenFocusPk(data);
}
});
}
});
instance.loadActionsProvaveisInserts(pk)
});
instance.loadForm(dpt, 'get_form_base');
}
instance.loadActionsProvaveisInserts = function(pk) {
var url = pk+'/refresh?action=json_provaveis_inserts';
instance.waitShow();
$.get(url).done(function(data) {
console.log(data);
});
}
instance.loadForm = function(dpt, trigger) {
if (editortype == "construct")
return;
@ -193,22 +206,26 @@ function DispositivoEdit() {
if (event != null)
event.preventDefault();
}
instance.refreshContent = function(pk, trigger_edit_pk) {
instance.refreshContent = function(pais, trigger_edit_pk) {
if (pais.length == 0) {
instance.waitHide();
return;
}
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'));
instance.onClicks(dpt);
if (trigger_edit_pk != null && trigger_edit_pk != 0) {
if (trigger_edit_pk > 0)
instance.triggerBtnDptEdit(trigger_edit_pk)
}
else {
instance.waitHide();
}
instance.refreshContent(pais);
});
}
instance.refreshScreenFocusPk = function (data) {
instance.waitShow();
if (data.pai[0] == -1) {
instance.waitShow()
href = location.href.split('#')[0]
@ -216,11 +233,13 @@ function DispositivoEdit() {
location.reload(true)
}
else {
instance.refreshContent(data.pai[0], data.pk);
setTimeout(function() {
instance.refreshContent(data.pai, data.pk);
/*setTimeout(function() {
for (var pai = 1; pai < data.pai.length; pai++)
instance.refreshContent(data.pai[pai]);
}, 1000);
instance.waitHide();
}, 1000);*/
}
}

Loading…
Cancel
Save