Browse Source

Add bts de incl com front-end bootstrap

pull/590/head
LeandroRoberto 9 years ago
parent
commit
7e012650fc
  1. 8
      sapl/compilacao/forms.py
  2. 4
      sapl/compilacao/models.py
  3. 43
      sapl/compilacao/views.py
  4. 51
      sapl/static/js/compilacao_edit.js
  5. 20
      sapl/static/styles/compilacao.scss

8
sapl/compilacao/forms.py

@ -640,8 +640,10 @@ class DispositivoEdicaoBasicaForm(ModelForm):
btns_excluir = [ btns_excluir = [
HTML('<a class="btn btn-danger btn-action btn-excluir" ' HTML('<a class="btn btn-danger btn-action btn-excluir" '
'action="json_delete_item_dispositivo" ' 'action="json_delete_item_dispositivo" '
'title="%s"' 'title="%s" '
'pk="%s" '
'>%s</a>' % (_('Excluir apenas este dispositivo.'), '>%s</a>' % (_('Excluir apenas este dispositivo.'),
inst.pk,
_('Excluir Dispositivo')))] _('Excluir Dispositivo')))]
if inst.dispositivos_filhos_set.exists(): if inst.dispositivos_filhos_set.exists():
@ -649,9 +651,11 @@ class DispositivoEdicaoBasicaForm(ModelForm):
HTML( HTML(
'<a class="btn btn-danger btn-action btn-excluir" ' '<a class="btn btn-danger btn-action btn-excluir" '
'action="json_delete_bloco_dispositivo" ' 'action="json_delete_bloco_dispositivo" '
'title="%s"' 'title="%s" '
'pk="%s" '
'>%s</a>' % (_('Excluir este dispositivo ' '>%s</a>' % (_('Excluir este dispositivo '
'e toda sua estrutura.'), 'e toda sua estrutura.'),
inst.pk,
_('Excluir Bloco de Dispositivo.')))) _('Excluir Bloco de Dispositivo.'))))
if btns_excluir: if btns_excluir:

4
sapl/compilacao/models.py

@ -924,12 +924,12 @@ class Dispositivo(BaseModel, TimestampedMixin):
def criar_espaco(self, espaco_a_criar, local): def criar_espaco(self, espaco_a_criar, local):
if local == 'add_next': if local == 'json_add_next':
proximo_bloco = Dispositivo.objects.filter( proximo_bloco = Dispositivo.objects.filter(
ordem__gt=self.ordem, ordem__gt=self.ordem,
nivel__lte=self.nivel, nivel__lte=self.nivel,
ta_id=self.ta_id)[:1] ta_id=self.ta_id)[:1]
elif local == 'add_in': elif local == 'json_add_in':
proximo_bloco = Dispositivo.objects.filter( proximo_bloco = Dispositivo.objects.filter(
ordem__gt=self.ordem, ordem__gt=self.ordem,
nivel__lte=self.nivel + 1, nivel__lte=self.nivel + 1,

43
sapl/compilacao/views.py

@ -1487,15 +1487,15 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
result = [{'tipo_insert': force_text(_('Inserir Depois')), result = [{'tipo_insert': force_text(_('Inserir Depois')),
'icone': '&#8631;&nbsp;', 'icone': '&#8631;&nbsp;',
'action': 'add_next', 'action': 'json_add_next',
'itens': []}, 'itens': []},
{'tipo_insert': force_text(_('Inserir Dentro')), {'tipo_insert': force_text(_('Inserir Dentro')),
'icone': '&#8690;&nbsp;', 'icone': '&#8690;&nbsp;',
'action': 'add_in', 'action': 'json_add_in',
'itens': []}, 'itens': []},
{'tipo_insert': force_text(_('Inserir Antes')), {'tipo_insert': force_text(_('Inserir Antes')),
'icone': '&#8630;&nbsp;', 'icone': '&#8630;&nbsp;',
'action': 'add_prior', 'action': 'json_add_prior',
'itens': []} 'itens': []}
] ]
@ -1694,7 +1694,7 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
def set_dvt(self, context): def set_dvt(self, context):
# Dispositivo de Vigência do Texto Original e de Dpts Alterados # 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(): if dvt.is_relative_auto_insert():
dvt = dvt.dispositivo_pai dvt = dvt.dispositivo_pai
@ -1730,17 +1730,17 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
return {'message': str(_('Ocorreu um erro na atualização do ' return {'message': str(_('Ocorreu um erro na atualização do '
'Dispositivo de Vigência'))} 'Dispositivo de Vigência'))}
def add_prior(self, context): def json_add_prior(self, context):
return {} return {}
def add_in(self, context): def json_add_in(self, context):
return self.add_next(context, local_add='add_in') 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: try:
dp_auto_insert = None 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']) tipo = TipoDispositivo.objects.get(pk=context['tipo_pk'])
pub_last = Publicacao.objects.order_by( pub_last = Publicacao.objects.order_by(
'data', 'hora').filter(ta=base.ta).last() 'data', 'hora').filter(ta=base.ta).last()
@ -1979,15 +1979,16 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
not dp.tipo_dispositivo.dispositivo_de_articulacao: not dp.tipo_dispositivo.dispositivo_de_articulacao:
dp.dispositivo_pai.ordenar_bloco_alteracao() dp.dispositivo_pai.ordenar_bloco_alteracao()
except Exception as e: if dp_auto_insert is None:
print(e) 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['action'] = 'get_form_base'
data = self.get_json_for_refresh(dp) return data
else:
data = self.get_json_for_refresh(dp=dp, dpauto=dp_auto_insert)
return data except Exception as e:
print(e)
class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin, class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin,
@ -1997,6 +1998,16 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin,
def render_to_json_response(self, context, **response_kwargs): def render_to_json_response(self, context, **response_kwargs):
action = getattr(self, context['action']) 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) data = action(context)
if 'message' in context and 'message' not in data: if 'message' in context and 'message' not in data:

51
sapl/static/js/compilacao_edit.js

@ -15,6 +15,34 @@ function DispositivoEdit() {
return instance; 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() { 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('');
@ -44,7 +72,6 @@ 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')
@ -56,24 +83,7 @@ function DispositivoEdit() {
var btns_excluir = _this.find('.btns-excluir'); var btns_excluir = _this.find('.btns-excluir');
_this.find('.dpt-actions-bottom').last().append(btns_excluir); _this.find('.dpt-actions-bottom').last().append(btns_excluir);
btns_excluir.find('.btn-excluir').on('click', function() { btns_excluir.find('.btn-excluir').on('click', instance.bindActionClick);
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);
}
});
}
});
}); });
instance.loadForm(dpt, 'get_form_base'); instance.loadForm(dpt, 'get_form_base');
} }
@ -81,9 +91,9 @@ function DispositivoEdit() {
instance.loadActionsEdit = function(dpt) { instance.loadActionsEdit = function(dpt) {
var pk = dpt.attr('pk'); var pk = dpt.attr('pk');
var url = pk+'/refresh?action=get_actions'; var url = pk+'/refresh?action=get_actions';
$.get(url).done(function(data) { $.get(url).done(function(data) {
dpt.find('.dpt-actions').first().html(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 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'));

20
sapl/static/styles/compilacao.scss

@ -527,7 +527,7 @@ a:link:after, a:visited:after {
& > .dpt-actions-fixed { & > .dpt-actions-fixed {
position: absolute; position: absolute;
right: 0px; right: 0px;
z-index: 2; z-index: 3;
opacity: 0; opacity: 0;
} }
& > .dpt-actions, & > .dpt-actions-bottom { & > .dpt-actions, & > .dpt-actions-bottom {
@ -672,6 +672,10 @@ a:link:after, a:visited:after {
} }
.dpt-block { .dpt-block {
border-top: 1px solid #e5e5e5 !important; border-top: 1px solid #e5e5e5 !important;
opacity: 0.3;
&:hover {
opacity: 1;
}
} }
.dpt { .dpt {
&:only-child { &:only-child {
@ -690,9 +694,8 @@ a:link:after, a:visited:after {
background-color: #f5f5f5; background-color: #f5f5f5;
} }
} }
& > .dpt-alts { .dpt-alts {
margin: 0; margin: 1em;
border: 0px;
.dpt { .dpt {
box-shadow: 0 0 0; box-shadow: 0 0 0;
} }
@ -701,6 +704,7 @@ a:link:after, a:visited:after {
} }
& > .dpt-actions-fixed { & > .dpt-actions-fixed {
display: none; display: none;
} }
.dropdown-menu { .dropdown-menu {
@ -719,6 +723,14 @@ a:link:after, a:visited:after {
} }
} }
} }
&:hover {
.dpt-actions-fixed {
margin-top: 1em;
margin-right: 1em;
}
}
} }
} }

Loading…
Cancel
Save