Quer mais?Faça login ou
assine
para acessar todas as 128 questões e recursos adicionais!
Faça login e assine para usar o filtro de questões.
Questão 1 de 10
QLEG-16775
08/03/2025
Federal
Lei Federal nº 13.655/2018 - Segurança Jurídica e Eficiência na Criação e na Aplicação do Direito Público
Todos os artigos
Explicação:
A alternativa correta está em conformidade com o Art. 20 da Lei nº 13.655/2018. As demais alternativas apresentam distorções ou omissões em relação ao texto legal, não refletindo corretamente a exigência de considerar as consequências práticas da decisão em todas as esferas mencionadas.
Art. 20. Nas esferas administrativa, controladora e judicial, não se decidirá com base em valores jurídicos abstratos sem que sejam consideradas as consequências práticas da decisão.<br>Parágrafo único. A motivação demonstrará a necessidade e a adequação da medida imposta ou da invalidação de ato, contrato, ajuste, processo ou norma administrativa, inclusive em face das possíveis alternativas.
Anotações da Questão
Quer mais?Faça login ou
assine
para acessar todas as 128 questões e recursos adicionais!
Atalhos desativados - Editor ativo
`).removeClass('hidden');
// Inicializar as abas
new bootstrap.Tab(document.querySelector(`#estatisticasTabs_${questaoId} .nav-link.active`));
// Coletar dados das alternativas
const ordemAtual = {
a: $questao.find('.opcao[data-opcao="a"] .opcao-texto').text().trim(),
b: $questao.find('.opcao[data-opcao="b"] .opcao-texto').text().trim(),
c: $questao.find('.opcao[data-opcao="c"] .opcao-texto').text().trim(),
d: $questao.find('.opcao[data-opcao="d"] .opcao-texto').text().trim(),
e: $questao.find('.opcao[data-opcao="e"] .opcao-texto').text().trim()
};
// Carregar estatísticas
$.ajax({
url: 'estatisticas_questao.php',
method: 'POST',
data: {
questao_id: questaoId,
ordem_atual_a: ordemAtual.a,
ordem_atual_b: ordemAtual.b,
ordem_atual_c: ordemAtual.c,
ordem_atual_d: ordemAtual.d,
ordem_atual_e: ordemAtual.e
},
success: function(response) {
try {
const data = typeof response === 'string' ? JSON.parse(response) : response;
if (data.success) {
// Atualizar apenas o conteúdo da aba individual
const $individualPane = $(`#individual_${questaoId}`);
$individualPane.html(`
`);
}
});
}
function renderizarEstatisticasGerais(estatisticas, questaoId) {
const $conteudoGeral = $(`#geral_${questaoId}`);
const isBlocoQuestoesErradas = false;
let htmlBotoes = `
`;
if (!isBlocoQuestoesErradas) {
htmlBotoes += `
`;
}
$conteudoGeral.html(`
${htmlBotoes}
Distribuição das Respostas (Bloco)
Taxa de Acerto (Questão)
Individual
Geral
Progresso do Bloco
Histórico de Respostas
Data
Resposta
Resultado
`);
renderizarDistribuicaoRespostas(estatisticas, `distribuicaoRespostasChart_${questaoId}`);
renderizarProgressoBloco(estatisticas, `progressoBlocoChart_${questaoId}`);
}
function renderizarDistribuicaoRespostas(estatisticas, elementId) {
const ctx = document.getElementById(elementId).getContext('2d');
new Chart(ctx, {
type: 'pie',
data: {
labels: ['Corretas', 'Erradas', 'Não Respondidas'],
datasets: [{
data: [
estatisticas.corretas,
estatisticas.erradas,
estatisticas.nao_respondidas
],
backgroundColor: ['#28a745', '#dc3545', '#6c757d']
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
position: 'bottom'
},
tooltip: {
callbacks: {
label: function(context) {
const label = context.label || '';
const value = context.raw;
const total = estatisticas.total_questoes;
const percentage = ((value / total) * 100).toFixed(1);
return `${label}: ${value} (${percentage}%)`;
}
}
}
}
}
});
}
function renderizarTaxaAcerto(estatisticas, elementId) {
const ctx = document.getElementById(elementId).getContext('2d');
const totalRespondidas = estatisticas.corretas + estatisticas.erradas;
const percentualAcertos = totalRespondidas > 0 ? (estatisticas.corretas / totalRespondidas * 100).toFixed(1) : 0;
const percentualErros = totalRespondidas > 0 ? (estatisticas.erradas / totalRespondidas * 100).toFixed(1) : 0;
new Chart(ctx, {
type: 'doughnut',
data: {
labels: ['Acertos', 'Erros'],
datasets: [{
data: [percentualAcertos, percentualErros],
backgroundColor: ['#28a745', '#dc3545']
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
position: 'bottom'
},
tooltip: {
callbacks: {
label: function(context) {
const label = context.label || '';
const value = parseFloat(context.raw).toFixed(1);
return `${label}: ${value}%`;
}
}
}
}
}
});
}
function renderizarProgressoBloco(estatisticas, elementId) {
const ctx = document.getElementById(elementId).getContext('2d');
const respondidas = estatisticas.corretas + estatisticas.erradas;
const percentualRespondidas = (respondidas / estatisticas.total_questoes * 100).toFixed(1);
const percentualNaoRespondidas = (100 - percentualRespondidas).toFixed(1);
new Chart(ctx, {
type: 'doughnut',
data: {
labels: ['Respondidas', 'Não Respondidas'],
datasets: [{
data: [percentualRespondidas, percentualNaoRespondidas],
backgroundColor: ['#17a2b8', '#6c757d']
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
position: 'bottom'
},
tooltip: {
callbacks: {
label: function(context) {
const label = context.label || '';
const value = parseFloat(context.raw).toFixed(1);
const count = label === 'Respondidas' ? respondidas : estatisticas.nao_respondidas;
return `${label}: ${value}% (${count} questões)`;
}
}
}
}
}
});
}
// Função para garantir que o botão seja visível
function mostrarBotaoCriarBloco() {
$('#criarBlocoErros').show();
}
// Chamar a função quando a aba geral for mostrada
$('#geral-tab').on('shown.bs.tab', function (e) {
mostrarBotaoCriarBloco();
});
// Chamar a função também quando o documento estiver pronto
mostrarBotaoCriarBloco();
// Manipulador de clique para o botão
$(document).on('click', '#criarBlocoErros', function() {
const blocoId = 46;
$.ajax({
url: 'criar_bloco_erros.php',
method: 'POST',
data: { bloco_id: blocoId },
dataType: 'json',
success: function(response) {
if (response.success) {
alert('Novo bloco criado com sucesso! Redirecionando...');
window.location.href = response.novo_bloco_url;
} else {
alert('Erro ao criar o bloco: ' + response.error);
}
},
error: function() {
alert('Erro ao comunicar com o servidor');
}
});
});
// Manipulador de clique para o botão "Duplicar Bloco"
$(document).on('click', '#duplicarBloco', function() {
const blocoId = 46;
if (confirm("Tem certeza que deseja duplicar este bloco?")) {
$.ajax({
url: 'duplicar_bloco.php',
method: 'POST',
data: { bloco_id: blocoId },
dataType: 'json',
success: function(response) {
if (response.success) {
alert('Bloco duplicado com sucesso! Redirecionando...');
window.location.href = response.novo_bloco_url;
} else {
alert('Erro ao duplicar o bloco: ' + response.error);
}
},
error: function() {
alert('Erro ao comunicar com o servidor');
}
});
}
});
// Manipulador de clique para o botão "Reiniciar Bloco"
$(document).on('click', '#reiniciarBloco', function() {
const blocoId = 46;
if (confirm("Tem certeza que deseja reiniciar este bloco? Todas as suas respostas serão apagadas.")) {
$.ajax({
url: 'reiniciar_bloco.php',
method: 'POST',
data: { bloco_id: blocoId },
dataType: 'json',
success: function(response) {
if (response.success) {
alert('Bloco reiniciado com sucesso! A página será recarregada.');
window.location.reload();
} else {
alert('Erro ao reiniciar o bloco: ' + response.error);
}
},
error: function() {
alert('Erro ao comunicar com o servidor');
}
});
}
});
function selectOption(letter) {
// Usar seletor mais direto e eficiente
const $questao = $('.questao:not(.hidden)');
const $opcao = $questao.find(`.opcao[data-opcao="${letter}"]`);
// Verificar existência antes de manipular
if ($opcao.length) {
handleOptionClick($opcao);
}
}
function proximaQuestaoNaoResolvida() {
const tipoSelecionado = $('#tipoQuestoes').val();
const $questoesFiltradas = tipoSelecionado === 'todas' ? $('.questao') : $(`.questao[data-tipo-questao="${tipoSelecionado}"]`);
let proximo = (questaoAtualIndex + 1) % $questoesFiltradas.length;
while (proximo !== questaoAtualIndex) {
const $questao = $questoesFiltradas.eq(proximo);
if (!$questao.data('respondida')) {
questaoAtualIndex = $questoes.index($questao);
showQuestion(questaoAtualIndex);
return;
}
proximo = (proximo + 1) % $questoesFiltradas.length;
}
alert('Todas as questões já foram resolvidas!');
}
function proximaQuestaoAleatoriaNaoResolvida() {
const tipoSelecionado = $('#tipoQuestoes').val();
const $questoesFiltradas = tipoSelecionado === 'todas' ? $('.questao') : $(`.questao[data-tipo-questao="${tipoSelecionado}"]`);
const ehAssinanteOuAdmin = false;
const limiteQuestoes = ehAssinanteOuAdmin ? $questoesFiltradas.length : Math.min(10, $questoesFiltradas.length);
let naoResolvidas = $questoesFiltradas.filter(function(index) {
return index < limiteQuestoes && !$(this).data('respondida');
});
if (naoResolvidas.length > 0) {
let aleatorio = Math.floor(Math.random() * naoResolvidas.length);
questaoAtualIndex = $questoesFiltradas.index(naoResolvidas[aleatorio]);
showQuestion(questaoAtualIndex);
} else {
// Se todas as questões disponíveis foram resolvidas, seleciona uma aleatória dentro do limite
let aleatorio = Math.floor(Math.random() * limiteQuestoes);
questaoAtualIndex = aleatorio;
showQuestion(questaoAtualIndex);
alert('Todas as questões disponíveis já foram resolvidas. Selecionando uma aleatória.');
}
}
function atualizarIndicadorAtalhos() {
if (editorAtivo) {
$('.atalhos-status').removeClass('hidden').text('Atalhos desativados - Editor ativo');
} else {
$('.atalhos-status').addClass('hidden');
}
}
function handleKeyPress(letter) {
const currentTime = new Date().getTime();
if (currentTime - lastKeyPressTime < doubleClickThreshold) {
// Duplo clique simulado
const $opcao = $('.questao:not(.hidden) .opcao[data-opcao="' + letter + '"]');
$opcao.toggleClass('descartada');
if ($opcao.hasClass('descartada') && $opcao.hasClass('selected')) {
$opcao.removeClass('selected');
$opcao.find('input[type="radio"]').prop('checked', false);
}
} else {
// Clique simples
selectOption(letter);
}
lastKeyPressTime = currentTime;
}
const keyHandlers = {
37: () => document.getElementById('btn-prev').click(), // Seta para esquerda
39: () => document.getElementById('btn-next').click(), // Seta para direita
78: () => document.getElementById('btn-proxima-nao-resolvida').click(), // Tecla N
77: () => document.getElementById('btn-proxima-aleatoria-nao-resolvida').click(), // Tecla M
82: () => $('.questao:not(.hidden) .responder').click(), // Tecla R
88: () => $('.questao:not(.hidden) .explicacao').click(), // Tecla X
13: () => $('.questao:not(.hidden) .responder').click(), // Enter
65: () => handleKeyPress('a'), // A
66: () => handleKeyPress('b'), // B
67: () => handleKeyPress('c'), // C
68: () => handleKeyPress('d'), // D
69: () => handleKeyPress('e'), // E
49: () => handleKeyPress('a'), // 1
50: () => handleKeyPress('b'), // 2
51: () => handleKeyPress('c'), // 3
52: () => handleKeyPress('d'), // 4
53: () => handleKeyPress('e'), // 5
97: () => handleKeyPress('a'), // Numpad 1
98: () => handleKeyPress('b'), // Numpad 2
99: () => handleKeyPress('c'), // Numpad 3
100: () => handleKeyPress('d'), // Numpad 4
101: () => handleKeyPress('e'), // Numpad 5
};
// Handler para teclas
$(document).on('keydown', throttle(function(e) {
// Verifica se algum modal está aberto ou se o campo de pesquisa está ativo
if ($('.modal.show').length > 0 || campoPesquisaAtivo) {
// Se algum modal estiver aberto ou o campo de pesquisa estiver ativo, não processa os atalhos
return;
}
const handler = keyHandlers[e.which];
if (handler) {
e.preventDefault();
handler();
}
}, 50));
// Adicione um handler para o clique fora do editor
$(document).on('click', function(e) {
if (!$(e.target).closest('.anotacoes-conteudo').length &&
!$(e.target).closest('.anotacoes').length) {
editorAtivo = false;
}
});
// Modifique o handler de salvar anotação
$(document).on('click', '.salvar-anotacao', function() {
const $questao = $(this).closest('.questao');
const questaoId = $questao.data('questao-id');
const editor = editors[questaoId];
if (editor) {
$.ajax({
url: 'salvar_anotacao.php',
method: 'POST',
data: {
questao_id: questaoId,
conteudo: editor.getData()
},
success: function(response) {
const data = JSON.parse(response);
if (data.success) {
mostrarAlerta('Anotação salva com sucesso!', 'success');
// Desativa o editor após salvar
editorAtivo = false;
}
}
});
}
});
// Carregar respostas salvas (se houver)
$questoes.each(function() {
const $questao = $(this);
const respostaUsuario = $questao.data('resposta-usuario');
if (respostaUsuario) {
$questao.find(`input[value="${respostaUsuario}"]`).prop('checked', true);
$questao.data('respondida', true);
estatisticas.resolvidas++;
// Aqui você pode adicionar lógica para determinar se a resposta estava correta
// e atualizar estatisticas.corretas e estatisticas.erradas
}
});
atualizarEstatisticas();
updateNavigationButtons();
let editors = {};
let editor = null;
let questaoAtualId = null;
// Handler para o botão de anotações
$(document).on('click', '.anotacoes', function() {
if (!usuarioLogado) {
mostrarAlertaLogin('as anotações');
return;
}
const $questao = $(this).closest('.questao');
questaoAtualId = $questao.data('questao-id');
// Mostrar o modal
$('#modalAnotacoes').modal('show');
// Inicializar o editor se ainda não foi inicializado
if (!editor) {
ClassicEditor
.create(document.querySelector('#editor'), {
toolbar: [
'heading', '|', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', '|',
'blockQuote', 'insertTable', '|', 'undo', 'redo'
],
placeholder: 'Digite suas anotações aqui...'
})
.then(newEditor => {
editor = newEditor;
carregarAnotacao(questaoAtualId);
})
.catch(error => {
});
} else {
carregarAnotacao(questaoAtualId);
}
});
// Função para carregar anotações
function carregarAnotacao(questaoId) {
if (!usuarioLogado) {
mostrarAlertaLogin('as anotações');
return;
}
// Mostrar loading
$('#editorLoading').removeClass('d-none');
editor.setData(''); // Limpa o editor enquanto carrega
$.ajax({
url: 'carregar_anotacao.php',
method: 'POST',
data: { questao_id: questaoId },
success: function(response) {
try {
const data = JSON.parse(response);
if (data.success) {
// Se houver conteúdo, carrega no editor
if (data.conteudo) {
editor.setData(data.conteudo);
} else {
editor.setData(''); // Se não houver conteúdo, deixa vazio
}
} else {
editor.setData('Erro ao carregar anotação.');
}
} catch (e) {
editor.setData('Erro ao processar resposta do servidor.');
}
},
error: function(xhr, status, error) {
editor.setData('Erro ao se comunicar com o servidor.');
},
complete: function() {
$('#editorLoading').addClass('d-none');
}
});
}
// Função para salvar anotações
function salvarAnotacao(questaoId, conteudo) {
if (!usuarioLogado) {
mostrarAlertaLogin('salvar anotações');
return;
}
if (false) {
$.ajax({
url: 'salvar_anotacao.php',
method: 'POST',
data: {
questao_id: questaoId,
conteudo: conteudo
},
success: function(response) {
// Processar resposta
}
});
} else {
mostrarAlerta('Faça login para salvar anotações', 'info');
}
}
// Salvar anotação
$(document).on('click', '.salvar-anotacao-modal', function() {
if (!usuarioLogado) {
mostrarAlertaLogin('salvar anotações');
return;
}
if (editor && questaoAtualId) {
const conteudo = editor.getData();
$.ajax({
url: 'salvar_anotacao.php',
method: 'POST',
data: {
questao_id: questaoAtualId,
conteudo: conteudo
},
success: function(response) {
try {
const data = JSON.parse(response);
if (data.success) {
mostrarAlerta('Anotação salva com sucesso!', 'success');
$('#modalAnotacoes').modal('hide');
}
} catch (e) {
}
},
error: function(xhr, status, error) {
mostrarAlerta('Erro ao salvar anotação', 'danger');
}
});
}
});
// Limpar editor quando o modal for fechado
$('#modalAnotacoes').on('hidden.bs.modal', function() {
if (editor) {
editor.setData('');
}
questaoAtualId = null;
});
// Função auxiliar para mostrar alertas
function mostrarAlerta(mensagem, tipo) {
const $alerta = $(`
${mensagem}
`);
$('body').append($alerta);
setTimeout(() => $alerta.alert('close'), 3000);
}
// Handler para o botão de editar nas anotações listadas
$(document).on('click', '.editar-anotacao', function() {
const questaoId = $(this).data('questao-id');
// Fechar o modal de todas as anotações
$('#modalTodasAnotacoes').modal('hide');
// Esperar um pouco para evitar problemas com múltiplos modais
setTimeout(() => {
// Atualizar o questaoAtualId
questaoAtualId = questaoId;
// Mostrar o modal de edição
$('#modalAnotacoes').modal('show');
// Se o editor já existe, carregar a anotação
if (editor) {
carregarAnotacao(questaoId);
} else {
// Se o editor ainda não existe, criar e depois carregar a anotação
ClassicEditor
.create(document.querySelector('#editor'), {
toolbar: [
'heading',
'|',
'bold',
'italic',
'link',
'bulletedList',
'numberedList',
'|',
'blockQuote',
'insertTable',
'|',
'undo',
'redo'
],
placeholder: 'Digite suas anotações aqui...'
})
.then(newEditor => {
editor = newEditor;
carregarAnotacao(questaoId);
})
.catch(error => {
});
}
}, 300); // Espera 300ms para evitar problemas com a transição dos modais
});
// Ver todas as anotações
$(document).on('click', '.ver-todas-anotacoes', function() {
if (!usuarioLogado) {
mostrarAlertaLogin('ver todas as anotações');
return;
}
$('#modalAnotacoes').modal('hide');
// Mostrar loading
const $lista = $('.anotacoes-lista');
$lista.html(`
Carregando...
Carregando anotações...
`);
// Mostra o modal com o loading
$('#modalTodasAnotacoes').modal('show');
$.ajax({
url: 'listar_anotacoes.php',
method: 'POST',
data: { bloco_id: 46 },
success: function(response) {
try {
const data = typeof response === 'string' ? JSON.parse(response) : response;
if (data.success) {
$lista.empty();
if (data.anotacoes && data.anotacoes.length > 0) {
data.anotacoes.forEach(anotacao => {
$lista.append(`
`);
}
});
});
});
// Handler para o botão de reportar erro
$(document).on('click', '.reportar-erro', function() {
const $questao = $(this).closest('.questao');
const questaoId = $questao.data('questao-id');
// Limpar o campo de texto antes de mostrar o modal
$('#descricaoErro').val('');
// Mostrar o modal
$('#modalReportarErro').modal('show');
// Handler para o botão de enviar reporte
$('#enviarReporte').off('click').on('click', function() {
const descricao = $('#descricaoErro').val().trim();
if (!descricao) {
alert('Por favor, descreva o erro encontrado.');
return;
}
// Desabilitar o botão durante o envio
$(this).prop('disabled', true);
$.ajax({
url: 'salvar_reporte.php',
method: 'POST',
data: {
questao_id: questaoId,
descricao: descricao
},
success: function(response) {
try {
const data = typeof response === 'string' ? JSON.parse(response) : response;
if (data.success) {
// Mostrar mensagem de sucesso
mostrarAlerta('Reporte enviado com sucesso!', 'success');
// Fechar o modal
$('#modalReportarErro').modal('hide');
// Limpar o campo de texto
$('#descricaoErro').val('');
} else {
mostrarAlerta('Erro ao enviar reporte: ' + (data.error || 'Erro desconhecido'), 'danger');
}
} catch (e) {
mostrarAlerta('Erro ao processar resposta do servidor', 'danger');
}
},
error: function(xhr, status, error) {
mostrarAlerta('Erro ao comunicar com o servidor', 'danger');
},
complete: function() {
// Reabilitar o botão após o envio (sucesso ou erro)
$('#enviarReporte').prop('disabled', false);
}
});
});
});
// Função para mostrar alertas
function mostrarAlerta(mensagem, tipo) {
const $alerta = $(`
${mensagem}
`);
$('body').append($alerta);
setTimeout(() => $alerta.alert('close'), 3000);
}
// Limpar o campo de texto quando o modal for fechado
$('#modalReportarErro').on('hidden.bs.modal', function() {
$('#descricaoErro').val('');
$('#enviarReporte').prop('disabled', false);
});
-->
Estrutura
Anotações da Questão
Carregando...
Carregando editor...
Todas as Anotações
Atalhos de Teclado e Funcionalidades
Atalhos de Teclado:
Alternativa A: Tecla A ou 1
Alternativa B: Tecla B ou 2
Alternativa C: Tecla C ou 3
Alternativa D: Tecla D ou 4
Alternativa E: Tecla E ou 5
Responder: Tecla R ou Enter
Explicação: Tecla X ou ,
Questão anterior: Seta para esquerda
Próxima questão: Seta para direita
Próxima não resolvida: Tecla N
Próxima aleatória não resolvida: Tecla M
Funcionalidades Especiais:
Duplo Clique em Alternativa: Marca a alternativa como "descartada".
Útil para eliminar opções consideradas incorretas.
Desfazer Descarte: Duplo clique novamente na alternativa descartada.