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 ' 'conteúdo que deve estar no Texto Original e '
'no Texto Alterador, não há necessidade ' 'no Texto Alterador, não há necessidade '
'de duplicar a informação. A validação dos ' 'de duplicar a informação. A validação dos '
'negará a igualdade.')) 'dados negará a igualdade.'))
self.visibilidade = forms.ChoiceField( self.visibilidade = forms.ChoiceField(
label=Dispositivo._meta.get_field( label=Dispositivo._meta.get_field(
'visibilidade').verbose_name, 'visibilidade').verbose_name,

40
sapl/compilacao/views.py

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

43
sapl/static/js/compilacao_edit.js

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

Loading…
Cancel
Save