/** * Eventos inicializados após renderização da página * @todo necessário verificar tradução das mensagens de texto */ $(document).ready(function(){ /** * Remove o COOKIE com informação da imagem de BACKGROUND */ $.cookie("AdminIntensoBackground", null ); /** * Animação AJAX */ $( document ).ajaxStart( function() { $( '#ajaxLoading' ).fadeIn(); $( 'body' ).css( 'overflow', 'hidden' ); }) .ajaxStop( function() { $( '#ajaxLoading' ).fadeOut(); $( 'body' ).css( 'overflow', 'auto' ); }); /** * Modal de confirmação de exclusão de item */ $( "#System_Excluir" ).dialog({ autoOpen: false, height: 190, width: 350, modal: true, closeText: 'Fechar', buttons: { "Excluir" : function(){ $( this ).dialog( "close" ); var params = $( this ).data( 'params' ); $.ajax( { type: "POST", url: params.url, data: params, cache: false, async: false, success: function( data ) { if ( data.status == 'error' ) { var msg = ''; switch( data.code ) { case '23503': msg = 'Ítem não pode ser excluído porque contem dados relacionados!'; break; default: msg = 'Erro desconhecido!'; break; } System.Flash.show( 'Erro', msg ); return false; } /** * Verifica quantidade de colunas e quantos elementos ainda restam a listar após a exclusão */ var _tbody = $( '#item_' + params.id ).parent(); var _thead = $( 'thead', _tbody.parent() ); var _colspan = _thead.children().first().children().length; // Qtde colunas $( '#item_' + params.id ).remove(); // Remove o item da Grid if ( _tbody.children().length < 1 ) { // Se for o último registro a ser excluído _tbody.append('NENHUM REGISTRO ENCONTRADO'); } System.Flash.show( 'Sucesso', 'Item excluído com sucesso!' ); }, error: function( data ) { System.Flash.show( 'Erro', 'Erro na exclusão do item!' ); }, complete: function( data ) { /** * Caso uma função de CallBack tenha sido definida, invoca-a neste ponto e passa como parâmetros: * - Os próprios parâmetros já enviados na requisição AJAX * - O "response" devolvido pelo servidor como resposta à requisição AJAX */ if ( params.callback ) params.callback( params, data ); } } ); }, "Cancelar" : function(){ $( this ).dialog( "close" ); } }, show: { effect: "fade", duration: 500 }, hide: { effect: "fade", duration: 500 } }); /** * Abre a MODAL com o formulário para troca de Senha */ $( "#trocarPropriaSenha" ).dialog({ autoOpen: false, height: 250, width: 350, modal: true, buttons: { "Salvar" : function(){ // Realiza a validação dos campos var validation = function(){ /** * Verifica se a senha informa é valida * - Se as 2 senhas conferem entre si * - Se possui o mínimo de caracteres (6) * - Se possui o máximo de caracteres (10) * @return boolean|string */ var min = 6; // Mínimo de caracteres para a senha var max = 10; // Máximo de caracteres para a senha var senhaAtual = $( '#troca_propria_senha_te_senha_atual' ).val(); var senhaNova = $( '#troca_propria_senha_te_senha_nova' ).val(); var senhaConfirma = $( '#troca_propria_senha_te_senha_nova_confirma' ).val(); if ( senhaAtual.length < min || senhaAtual.length > max ) return 'Senha atual inválida'; if ( senhaNova != senhaConfirma ) return 'Senhas não conferem'; if ( senhaNova.length < min ) return 'Nova Senha não pode conter menos que ' +min+ ' caracteres'; if ( senhaNova.length > max ) return 'Nova Senha não pode conter mais que ' +max+ ' caracteres'; return true; }; var validation_result = validation(); if( validation_result === true ) { var params = { 'senha_nova' : $( '#troca_propria_senha_te_senha_nova' ).val(), 'senha_atual': $( '#troca_propria_senha_te_senha_atual' ).val() }; $.ajax( { type: "POST", url: $( this ).data( 'params' ).url, cache: false, async: false, success: function( data ) { System.Flash.show( 'Sucesso', 'Senha alterada com sucesso!' ); }, error: function( data ) { var response = JSON.parse(data.responseText); System.Flash.show( 'Erro', 'Erro na solicitação: ' + response.status ); }, data: params } ); } else { System.Flash.show( 'Erro', validation_result ); } $( this ).dialog( "close" ); }, "Cancelar" : function(){ $( this ).dialog( "close" ); } }, show: { effect: "fade", duration: 500 }, hide: { effect: "fade", duration: 500 }, close: function( event, ui ){ // Limpa os campos do formulário $( "#troca_propria_senha_te_senha_atual" ).val( '' ); $( "#troca_propria_senha_te_senha_nova" ).val( '' ); $( "#troca_propria_senha_te_senha_nova_confirma" ).val( '' ); } }); /** * Ativa a ABA correta, caso esta seja passada via URL */ if ( window.location.hash != '' && window.location.hash != undefined ) { var _activeTab = window.location.hash; _activeTab && $('ul.nav a[href="' + _activeTab + '"]').tab('show'); } /** * Configura a propriedade css Z-INDEX do MODAL */ $.modal.defaults.zIndex = 1030; $.modal.defaults.showSpinner = false; /** * Listeners do sistema */ System.Grid.excluir(); // Inicializa o LISTENER para os botões-padrão de exclusão de itens System.Form.reset(); // Inicializa o LISTENER para os botões (ou input) type=reset System.Menu.changeOwnPass(); // Inicializa o LISTENER para funcionalidade de troca de senha /** * Adiciona o calendário aos campos de data (contendo a classe datepicker_on) * e já configura a máscara no formato xx/xx/xxxx */ $(".datepicker_on").datepicker({ altFormat: "dd/mm/yy" }).mask('99/99/9999'); /*$('#datatable').dataTable( { "iDisplayLength": 100, "iDisplayStart": 1, "bJQueryUI": true, "sPaginationType": "full_numbers", "bDestroy": true } );*/ });