mirror of https://github.com/interlegis/sapl.git
LeandroRoberto
9 years ago
4 changed files with 563 additions and 300 deletions
@ -1,317 +1,312 @@ |
|||||
|
function DispositivoEdit() { |
||||
|
// Função única - Singleton pattern - operador new sempre devolve o mesmo objeto
|
||||
|
var instance; |
||||
|
|
||||
var editortype = "textarea"; |
var editortype = "textarea"; |
||||
var onSubmitEditForm = function(event) { |
|
||||
|
|
||||
var texto = ''; |
if (!(this instanceof DispositivoEdit)) { |
||||
var editorTiny = tinymce.get('editdi_texto'); |
if (!instance) { |
||||
|
instance = new DispositivoEdit(); |
||||
if (editorTiny != null) |
} |
||||
texto = editorTiny.getContent(); |
return instance; |
||||
else |
} |
||||
texto = $('#editdi_texto').val(); |
instance = this; |
||||
|
DispositivoEdit = function() { |
||||
var formData = { |
return instance; |
||||
'csrfmiddlewaretoken' : $('input[name=csrfmiddlewaretoken]').val(), |
|
||||
'texto' : texto |
|
||||
}; |
}; |
||||
|
instance.clearEditSelected = function() { |
||||
|
$('.dpt-selected .dpt-form').html(''); |
||||
|
$('.dpt-actions, .dpt-actions-bottom').html(''); |
||||
|
tinymce.remove(); |
||||
|
$('.dpt-selected').removeClass('dpt-selected'); |
||||
|
} |
||||
|
|
||||
var url = $('.csform form').attr( "action_ajax" ); |
instance.editDispositivo = function(event) { |
||||
$("#message_block").css("display", "block"); |
var obj_click = (event.target.classList.contains('dpt-link') |
||||
|
? event.target |
||||
$.post(url, formData) |
: (event.target.parentElement.classList.contains('dpt-link') |
||||
.done(function(data) { |
? event.target.parentElement |
||||
|
: null)); |
||||
|
|
||||
if (typeof data == "string") { |
if (obj_click && obj_click.getAttribute('href') && obj_click.getAttribute('href').length > 0) |
||||
$('.dpt-selected').html(data); |
|
||||
clearEditSelected(); |
|
||||
reloadFunctionClicks(); |
|
||||
return; |
return; |
||||
} |
|
||||
|
|
||||
clearEditSelected(); |
|
||||
|
|
||||
if (data.pk != null) |
var dpt = $(this).closest('.dpt'); |
||||
refreshScreenFocusPk(data); |
if (dpt.hasClass('dpt-selected')) { |
||||
else { |
instance.clearEditSelected(); |
||||
alert('Erro na inserção!'); |
return; |
||||
flag_refresh_all = false; |
|
||||
} |
} |
||||
|
instance.clearEditSelected(); |
||||
}).always(function() { |
|
||||
$("#message_block").css("display", "none"); |
dpt.on('get_form_base', function () { |
||||
}); |
var _this = $(this); |
||||
if (event != null) |
_this.addClass('dpt-selected'); |
||||
event.preventDefault(); |
instance.scrollTo(_this); |
||||
} |
_this.off('get_form_base') |
||||
|
|
||||
|
var btn_fechar = _this.find('.btns-excluir'); |
||||
var clickEditDispositivo = function(event) { |
_this.find('.dpt-actions-bottom').last().append(btn_fechar); |
||||
var _pk = event.currentTarget.getAttribute('pk'); |
btn_fechar.on('click', function() { |
||||
if ($('#dpt'+_pk).hasClass("dpt-selected")) { |
instance.clearEditSelected(); |
||||
clearEditSelected(); |
}); |
||||
return; |
|
||||
|
btn_fechar.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(); |
||||
|
if (data.pk != null) { |
||||
|
if (!instance.modalMessage(data.message.value, 'alert-'+data.message.value, function() { |
||||
|
instance.waitHide(); |
||||
|
})) |
||||
|
instance.refreshScreenFocusPk(data); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
instance.loadForm(dpt, 'get_form_base'); |
||||
} |
} |
||||
clearEditSelected(); |
|
||||
clickUpdateDispositivo(event); |
|
||||
} |
|
||||
|
|
||||
var clickUpdateDispositivo = function(event, __pk_refresh, __pk_edit, __action, flag_actions_vibible, flag_refresh_all) { |
instance.loadForm = function(dpt, trigger) { |
||||
|
if (editortype == "construct") |
||||
var pk_refresh = __pk_refresh; |
return; |
||||
var pk_edit = __pk_edit; |
var dpt_form = dpt.children().filter('.dpt-form'); |
||||
var _action = __action; |
if (dpt_form.length == 1) { |
||||
var _variacao = ''; |
var pk = dpt.attr('pk'); |
||||
var _tipo_pk = ''; |
var url = pk+'/refresh?action='+trigger; |
||||
var _perfil_pk = ''; |
$.get(url).done(function(data) { |
||||
|
dpt_form.html(data); |
||||
if (event != null) { |
dpt_form.find('form').submit(instance.onSubmitEditFormBase); |
||||
pk_refresh = event.currentTarget.getAttribute('pk'); |
if (editortype == 'tinymce' ) { |
||||
_action = $(this).attr('action'); |
initTinymce(); |
||||
_variacao = $(this).attr('variacao'); |
} |
||||
_tipo_pk = $(this).attr('tipo_pk'); |
dpt.trigger(trigger); |
||||
_perfil_pk = $(this).attr('perfil_pk'); |
}).always(function() { |
||||
|
instance.waitHide(); |
||||
|
}); |
||||
|
} |
||||
} |
} |
||||
|
|
||||
if (pk_edit == null) |
instance.modalMessage = function(message, alert, closeFunction) { |
||||
pk_edit = pk_refresh; |
if (message != null && message != '') { |
||||
|
$('#modal-message #message').html(message); |
||||
var url = ''; |
$('#modal-message').modal('show'); |
||||
if (_action == '') |
$('#modal-message, #modal-message .alert button').off(); |
||||
return; |
$('#modal-message .alert').removeClass('alert-success alert-info alert-warning alert-danger alert-danger'); |
||||
else if ( _action == null) { |
$('#modal-message .alert').addClass(alert); |
||||
url = pk_refresh+'/refresh?edit='+pk_edit; |
|
||||
} |
if (closeFunction != null) |
||||
else if (_action.startsWith('refresh')) { |
$('#modal-message').on('hidden.bs.modal', closeFunction); |
||||
var str = _action.split(':'); |
|
||||
if (str.length > 1) { |
$('#modal-message .alert button').on('click', function() { |
||||
if(_action.endsWith('perfil')) { |
$('#modal-message').modal('hide'); |
||||
url = '&perfil_pk='+_perfil_pk; |
}); |
||||
$("#message_block").css("display", "block"); |
return true; |
||||
} |
|
||||
else { |
|
||||
editortype = str[1]; |
|
||||
SetCookie("editortype", editortype, 30) |
|
||||
} |
|
||||
} |
} |
||||
url = pk_refresh+'/refresh?edit='+pk_edit+url; |
return false; |
||||
} |
} |
||||
else if (_action.startsWith('add_')) { |
|
||||
|
|
||||
url = pk_refresh+'/actions?action='+_action; |
|
||||
url += '&tipo_pk='+_tipo_pk; |
|
||||
url += '&variacao='+_variacao; |
|
||||
|
|
||||
$("#message_block").css("display", "block"); |
|
||||
|
|
||||
|
instance.message = function(data) { |
||||
|
if (!('message' in data)) |
||||
|
return; |
||||
|
var cp_notify = $(".cp-notify") |
||||
|
cp_notify.removeClass('hide') |
||||
|
var msg = cp_notify.find('.message'); |
||||
|
msg.text(data.message.value); |
||||
|
msg.removeClass('bg-primary bg-success bg-info bg-warning bg-danger').addClass('bg-'+data.message.type); |
||||
|
setTimeout(function() { |
||||
|
cp_notify.addClass('hide'); |
||||
|
}, (data.message.time?data.message.time: 3000)); |
||||
} |
} |
||||
else if (_action.startsWith('set_')) { |
instance.offClicks = function() { |
||||
|
$('.btn-dpt-edit').off() |
||||
url = pk_refresh+'/actions?action='+_action; |
|
||||
$("#message_block").css("display", "block"); |
|
||||
|
|
||||
} |
} |
||||
else if (_action.startsWith('delete_')) { |
instance.onClicks = function(container) { |
||||
var r = confirm("Confirma Exclusão deste dispositivo?"); |
var objects; |
||||
if (!r) { |
if (container == null) |
||||
return |
objects = $('.btn-dpt-edit'); |
||||
} |
else |
||||
url = pk_refresh+'/actions?action='+_action; |
objects = $(container).find('.btn-dpt-edit'); |
||||
$("#message_block").css("display", "block"); |
objects.on('click', instance.editDispositivo); |
||||
} |
} |
||||
|
instance.onSubmitEditFormBase = function(event) { |
||||
$.get(url).done(function( data ) { |
|
||||
if ( _action == null || _action.startsWith('refresh')) { |
var _this = this; |
||||
|
var texto = ''; |
||||
if (flag_refresh_all) { |
var texto_atualizador = ''; |
||||
if (flag_actions_vibible) |
var visibilidade = ''; |
||||
clearEditSelected(); |
var editor_tiny_texto = tinymce.get('id_texto'); |
||||
|
var editor_tiny_texto_atualizador = tinymce.get('id_texto_atualizador'); |
||||
$( '#dpt' + pk_refresh ).html( data); |
|
||||
} |
if (editor_tiny_texto != null) |
||||
else { |
texto = editor_tiny_texto.getContent(); |
||||
//console.log(pk_refresh + ' - '+pk_edit)
|
else |
||||
if (flag_actions_vibible == null || flag_actions_vibible) |
texto = this['id_texto'].value; |
||||
clearEditSelected(); |
|
||||
|
if (editor_tiny_texto_atualizador != null) |
||||
//$( '#dpt' + pk_refresh+' > .bloco' ).addClass('displaynone' );
|
texto_atualizador = editor_tiny_texto_atualizador.getContent(); |
||||
$( '#dpt' + pk_refresh ).prepend( data ); |
else if ('id_texto_atualizador' in this) |
||||
|
texto_atualizador = this['id_texto_atualizador'].value; |
||||
|
|
||||
|
if ('visibilidade' in this) |
||||
|
visibilidade = this['visibilidade'].value; |
||||
|
|
||||
|
var form_data = { |
||||
|
'csrfmiddlewaretoken' : this['csrfmiddlewaretoken'].value, |
||||
|
'texto' : texto, |
||||
|
'texto_atualizador' : texto_atualizador, |
||||
|
'visibilidade' : visibilidade |
||||
|
}; |
||||
|
|
||||
|
var url = $(this).closest('.dpt').attr( "pk" )+'/refresh'; |
||||
|
|
||||
|
instance.waitShow(); |
||||
|
|
||||
|
$.post(url, form_data) |
||||
|
.done(function(data) { |
||||
|
if (typeof data == "string") { /* if obsoleto */ |
||||
|
var dpt = $(_this).closest('.dpt'); |
||||
|
dpt = $('#'+dpt.replaceWith(data).attr('id')); |
||||
|
instance.onClicks(dpt); |
||||
|
instance.waitHide(); |
||||
|
return; |
||||
} |
} |
||||
|
instance.clearEditSelected(); |
||||
|
|
||||
reloadFunctionClicks(); |
|
||||
|
|
||||
var _editortype = editortype; |
|
||||
if ( $('.edt-'+_editortype).length == 0) { |
|
||||
_editortype = 'construct'; |
|
||||
} |
|
||||
|
|
||||
if ( _editortype == 'tinymce' ) { |
|
||||
initTinymce(); |
|
||||
} |
|
||||
else if (_editortype == 'textarea') { |
|
||||
$('.csform form').submit(onSubmitEditForm); |
|
||||
} |
|
||||
else if (_editortype == 'construct') { |
|
||||
$('.csform .btn-salvar').parent().addClass("displaynone"); |
|
||||
$('.csform .btn-salvar, .csform .fields').addClass("displaynone"); |
|
||||
$('#dpt'+pk_refresh).css('min-height', $('.actions_right').height()*2); |
|
||||
$('.actions_inserts').removeClass('menu_flutuante'); |
|
||||
} |
|
||||
else if (_editortype == 'detail') { //TODO: código obsoleto - confirmar retirada desta condição
|
|
||||
$('.csform .btn-salvar').parent().removeClass("displaynone"); |
|
||||
$('.csform .btn-salvar, .csform .fields').removeClass("displaynone"); |
|
||||
$('#dpt'+pk_refresh).css('min-height', $('.actions_right').height()*2); |
|
||||
$('.actions_inserts').addClass('menu_flutuante'); |
|
||||
} |
|
||||
|
|
||||
$(".edt-"+_editortype).addClass('selected'); |
|
||||
|
|
||||
if (flag_actions_vibible == null || flag_actions_vibible) { |
|
||||
$('#dpt'+pk_edit).addClass('dpt-selected'); |
|
||||
try { |
|
||||
$('html, body').animate({ |
|
||||
scrollTop: $('#dpt' + pk_edit ).offset().top - window.innerHeight / 9 |
|
||||
}, 100); |
|
||||
} |
|
||||
catch(err) { |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
else if (_action == 'add_next' || _action == 'add_in') { |
|
||||
clearEditSelected(); |
|
||||
if (data.pk != null) { |
if (data.pk != null) { |
||||
refreshScreenFocusPk(data); |
instance.refreshScreenFocusPk(data); |
||||
|
instance.message(data); |
||||
} |
} |
||||
else { |
else { |
||||
alert('Erro na inserção!'); |
alert('Erro na resposta!'); |
||||
} |
} |
||||
} |
|
||||
else if (_action.startsWith('delete_')) { |
}).always(function() { |
||||
$("#message_block").css("display", "block"); |
instance.waitHide(); |
||||
clearEditSelected(); |
}); |
||||
if (data.pk != null) { |
if (event != null) |
||||
if (!modalMessage(data.message, 'alert-danger', function() { |
event.preventDefault(); |
||||
//refreshScreenFocusPk(data);
|
} |
||||
})) |
instance.refreshContent = function(pk, trigger_edit_pk) { |
||||
refreshScreenFocusPk(data); |
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) { |
||||
|
instance.triggerBtnDptEdit(trigger_edit_pk) |
||||
} |
} |
||||
else { |
else { |
||||
alert('Erro exclusão de Dispositivo!'); |
instance.waitHide(); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
instance.refreshScreenFocusPk = function (data) { |
||||
|
if (data.pai[0] == -1) { |
||||
|
instance.waitShow() |
||||
|
href = location.href.split('#')[0] |
||||
|
location.href = href+'#'+data.pk; |
||||
|
location.reload(true) |
||||
} |
} |
||||
} |
|
||||
else { |
else { |
||||
clearEditSelected(); |
instance.refreshContent(data.pai[0], data.pk); |
||||
reloadFunctionClicks(); |
setTimeout(function() { |
||||
modalMessage(data.message, 'alert-success', null); |
for (var pai = 1; pai < data.pai.length; pai++) |
||||
|
instance.refreshContent(data.pai[pai]); |
||||
|
}, 1000); |
||||
} |
} |
||||
|
} |
||||
|
|
||||
}).always(function() { |
instance.reloadFunctionsDraggables = function() { |
||||
$("#message_block").css("display", "none"); |
$( ".dpt-alts" ).sortable({ |
||||
}); |
revert: true, |
||||
} |
distance: 15, |
||||
|
start: function( event, ui ) { |
||||
function modalMessage(message, alert, closeFunction) { |
} |
||||
if (message != null && message != '') { |
, |
||||
$('#modal-message #message').html(message); |
stop: function( event, ui ) { |
||||
$('#modal-message').modal('show'); |
var pk = ui.item.attr('pk'); |
||||
$('#modal-message, #modal-message .alert button').off(); |
var bloco_pk = ui.item.closest('.dpt-alts').closest('.dpt').attr('pk'); |
||||
$('#modal-message .alert').removeClass('alert-success alert-info alert-warning alert-danger alert-danger'); |
|
||||
$('#modal-message .alert').addClass(alert); |
var url = pk+'/refresh?action=json_drag_move_dpt_alterado&index='+ui.item.index()+'&bloco_pk='+bloco_pk; |
||||
|
$.get(url).done(function( data ) { |
||||
if (closeFunction != null) |
console.log(pk+ ' - '+ bloco_pk); |
||||
$('#modal-message').on('hidden.bs.modal', closeFunction); |
//reloadFunctionsForObjectsOfCompilacao();
|
||||
|
}); |
||||
$('#modal-message .alert button').on('click', function() { |
} |
||||
$('#modal-message').modal('hide'); |
|
||||
}); |
}); |
||||
return true; |
|
||||
} |
|
||||
return false; |
|
||||
} |
|
||||
|
|
||||
function refreshScreenFocusPk(data) { |
$( ".dpt-alts .dpt" ).draggable({ |
||||
|
connectToSortable: ".dpt-alts", |
||||
|
revert: 'invalid', |
||||
|
zIndex: 1, |
||||
|
distance: 15, |
||||
|
drag: function( event, ui ) { |
||||
|
//$('.dpt-comp-selected').removeClass('dpt-comp-selected');
|
||||
|
$(".dpt-alts").addClass('drag'); |
||||
|
}, |
||||
|
stop: function( event, ui ) { |
||||
|
$(".dpt-alts").removeClass('drag'); |
||||
|
}, |
||||
|
}); |
||||
|
|
||||
if (data.pai[0] == -1) { |
$(".dpt-alts").disableSelection(); |
||||
$("#message_block").css("display", "block"); |
} |
||||
href = location.href.split('#')[0] |
instance.scrollTo = function(dpt) { |
||||
location.href = href+'#'+data.pk; |
try { |
||||
location.reload(true) |
$('html, body').animate({ |
||||
|
scrollTop: dpt.offset().top - window.innerHeight / 9 |
||||
|
}, 100); |
||||
|
} |
||||
|
catch(err) { |
||||
} |
} |
||||
else { |
|
||||
clickUpdateDispositivo(null, data.pai[0], data.pk, 'refresh', true, true); |
|
||||
setTimeout(function() { |
|
||||
for (var pai = 1; pai < data.pai.length; pai++) |
|
||||
clickUpdateDispositivo(null, data.pai[pai], data.pk, 'refresh', false, true); |
|
||||
}, 1000); |
|
||||
} |
} |
||||
} |
instance.triggerBtnDptEdit =function(pk) { |
||||
|
var btn_dpt_edit = $('#id'+pk + ' > .dpt-text.btn-dpt-edit'); |
||||
|
if (btn_dpt_edit.length == 0) |
||||
|
btn_dpt_edit = $('#id'+pk + ' > .dpt-actions-fixed > .btn-dpt-edit'); |
||||
|
btn_dpt_edit.trigger( "click" ); |
||||
|
} |
||||
|
instance.waitHide = function() { |
||||
|
$("#wait_message").addClass("displaynone"); |
||||
|
} |
||||
|
instance.waitShow = function() { |
||||
|
$("#wait_message").removeClass("displaynone"); |
||||
|
} |
||||
|
|
||||
function clearEditSelected() { |
|
||||
$('.bloco' ).removeClass('displaynone' ); |
|
||||
|
|
||||
$(".container").removeClass('class_color_container'); |
instance.init = function() { |
||||
tinymce.remove(); |
editortype = ReadCookie("editortype"); |
||||
$('.dpt-selected').removeClass('dpt-selected'); |
if (editortype == null || editortype == '') { |
||||
$('.dpt').css('min-height', ''); |
editortype = "textarea" |
||||
$('.csform').remove(); |
SetCookie("editortype", editortype, 30) |
||||
|
} |
||||
|
editortype = "textarea"; |
||||
|
instance.offClicks(); |
||||
|
instance.onClicks(); |
||||
|
instance.reloadFunctionsDraggables(); |
||||
|
|
||||
|
href = location.href.split('#') |
||||
|
if (href.length == 2 && href[1] != '') { |
||||
|
instance.triggerBtnDptEdit(href[1]) |
||||
|
} |
||||
|
$('main').click(function(event) { |
||||
|
if (event.target == this || event.target == this.firstElementChild) |
||||
|
instance.clearEditSelected(); |
||||
|
}); |
||||
|
instance.waitHide(); |
||||
|
} |
||||
|
instance.init(); |
||||
} |
} |
||||
|
|
||||
function reloadFunctionClicks() { |
|
||||
$('.dpt .de, .btn-action, .btn-edit').off(); |
|
||||
|
|
||||
$('.dpt .de, .btn-edit').on('click', clickEditDispositivo); |
|
||||
|
|
||||
$('.btn-action').on('click', clickUpdateDispositivo); |
|
||||
|
|
||||
$('#editdi_texto').focus(); |
|
||||
$( ".bloco_alteracao" ).sortable({ |
|
||||
revert: true, |
|
||||
stop: function( event, ui ) { |
|
||||
var pk = ui.item.attr('pk'); |
|
||||
var bloco_pk = ui.item.closest('.bloco').closest('.dpt').attr('pk'); |
|
||||
|
|
||||
url = pk+'/actions?action=move_dpt_alterado&index='+ui.item.index()+'&bloco_pk='+bloco_pk; |
|
||||
$.get(url).done(function( data ) { |
|
||||
console.log(pk+ ' - '+ bloco_pk); |
|
||||
}); |
|
||||
} |
|
||||
}); |
|
||||
|
|
||||
$( ".bloco_alteracao .dpt" ).draggable({ |
|
||||
connectToSortable: ".bloco_alteracao", |
|
||||
revert: 'invalid', |
|
||||
zIndex: 1, |
|
||||
drag: function( event, ui ) { |
|
||||
$( ".bloco_alteracao" ).addClass('drag'); |
|
||||
}, |
|
||||
stop: function( event, ui ) { |
|
||||
$( ".bloco_alteracao" ).removeClass('drag'); |
|
||||
}, |
|
||||
}); |
|
||||
|
|
||||
$( ".bloco_alteracao" ).disableSelection(); |
|
||||
} |
|
||||
|
|
||||
$(document).ready(function() { |
$(document).ready(function() { |
||||
|
|
||||
editortype = ReadCookie("editortype") |
DispositivoEdit(); |
||||
|
|
||||
if (editortype == null || editortype == "") { |
|
||||
editortype = "textarea" |
|
||||
SetCookie("editortype", editortype, 30) |
|
||||
} |
|
||||
|
|
||||
reloadFunctionClicks(); |
|
||||
$("#message_block").css("display", "none"); |
|
||||
|
|
||||
href = location.href.split('#') |
|
||||
if (href.length == 2 && href[1] != '') { |
|
||||
clickUpdateDispositivo(null, href[1], href[1], 'refresh', true); |
|
||||
} |
|
||||
|
|
||||
$('main').click(function(event) { |
|
||||
if (event.target == this || event.target == this.firstElementChild) |
|
||||
clearEditSelected(); |
|
||||
}); |
|
||||
|
|
||||
}); |
}); |
||||
|
Loading…
Reference in new issue