MediaWiki:Common.js: mudanças entre as edições
Aparência
Sem resumo de edição |
Sem resumo de edição |
||
| Linha 41: | Linha 41: | ||
/* Página Normas - Sistema Orbital - Lógica do Sistema Orbital com Auto-Ocultação e Suporte a Apelidos Dinâmicos */ | /* Página Normas - Sistema Orbital - Lógica do Sistema Orbital com Auto-Ocultação e Suporte a Apelidos Dinâmicos */ | ||
/* Lógica do Sistema Orbital de Anexos com Tradução de Nomes e Auto-Ocultação */ | /* Lógica do Sistema Orbital de Anexos com Tradução de Nomes e Auto-Ocultação */ | ||
/* Lógica do Sistema Orbital de Anexos com Links Inteligentes e Auto-Ocultação */ | |||
$(document).ready(function() { | $(document).ready(function() { | ||
var $containerOrbital = $('#sistema-orbital'); | var $containerOrbital = $('#sistema-orbital'); | ||
| Linha 53: | Linha 54: | ||
} | } | ||
// Mapeamento manual de nomes especiais | // 1. IDENTIFICA A PÁGINA ATUAL PELA URL DO NAVEGADOR | ||
var urlAtual = window.location.pathname; | |||
var idAnexoAtivo = null; | |||
if (urlAtual.indexOf('_AN_') !== -1 || urlAtual.indexOf(' AN ') !== -1) { | |||
// Captura o número do anexo no final da URL (ex: "NR-1_AN_1" ou "NR-1 AN 1") | |||
var partes = urlAtual.split(/_AN_| AN /i); | |||
if (partes.length > 1) { | |||
idAnexoAtivo = partes[1].trim(); | |||
} | |||
} else { | |||
// Se não achou "AN" na URL, o usuário está na página mãe (Origem 0) | |||
idAnexoAtivo = "0"; | |||
} | |||
// 2. DESABILITA O RE-CLIQUE COM PRECISÃO DO NAVEGADOR | |||
if (idAnexoAtivo === "0") { | |||
// Desativa o link do Sol (Origem 0) | |||
var $sol = $containerOrbital.find('.bolha-centro'); | |||
var $spanSol = $sol.find('.nome-norma-centro').detach(); | |||
$sol.empty().append($spanSol); | |||
} | |||
// Mapeamento manual de nomes especiais | |||
var mapeamentoNomes = { | var mapeamentoNomes = { | ||
"30": "13-A", | "30": "13-A", | ||
| Linha 68: | Linha 92: | ||
var idOrigem = $item.data('anexo').toString().trim(); | var idOrigem = $item.data('anexo').toString().trim(); | ||
// | // Se esta lua for a página aberta, remove o link e ativa a classe protetora | ||
if (mapeamentoNomes[idOrigem]) { | if (idOrigem === idAnexoAtivo) { | ||
$item.addClass('pagina-ativa'); | |||
$item.find('span').html( | var textoSimples = idOrigem; | ||
if (mapeamentoNomes[idOrigem]) { | |||
textoSimples = mapeamentoNomes[idOrigem]; | |||
} | |||
if (textoSimples === "Glossário" || textoSimples === "(*)") { | |||
$item.find('span').html(textoSimples); | |||
} else { | } else { | ||
$item.find('span').html("Anexo<br>" + | $item.find('span').html("Anexo<br>" + textoSimples); | ||
} | } | ||
// Remove a tag <a> de link de dentro dela | |||
var $spanLimpo = $item.find('span').detach(); | |||
$item.empty().append($spanLimpo); | |||
} else { | } else { | ||
$item.find('span').html("Anexo<br>" + idOrigem); | // Luas normais mantêm o link padrão | ||
if (mapeamentoNomes[idOrigem]) { | |||
if (mapeamentoNomes[idOrigem] === "Glossário" || mapeamentoNomes[idOrigem] === "(*)") { | |||
$item.find('span').html(mapeamentoNomes[idOrigem]); | |||
} else { | |||
$item.find('span').html("Anexo<br>" + mapeamentoNomes[idOrigem]); | |||
} | |||
} else { | |||
$item.find('span').html("Anexo<br>" + idOrigem); | |||
} | |||
} | } | ||
| Linha 91: | Linha 133: | ||
}); | }); | ||
}); | }); | ||
/* Lógica de Agrupamento em Blocos Sólidos para o Infográfico Histórico */ | /* Lógica de Agrupamento em Blocos Sólidos para o Infográfico Histórico */ | ||
Edição das 20h11min de 15 de julho de 2026
/* Página Normas - Texto Principal Lógica para Ativação de Notas Explicativas no texto de Norma/Anexo */
$(document).ready(function() {
// Varre todas as notas sobrescritas que possuem conteúdo vindo do banco
$('.item-nr .nota-sup').each(function() {
var textoNota = $(this).text().trim();
// Se a nota contiver texto (ex: [1]), transforma esse texto no Tooltip oficial
if (textoNota && textoNota !== "[]") {
$(this).attr('title', 'Nota Explicativa ' + textoNota);
}
});
});
/* Tabela NR 04 Anexo 1 */
$(function() {
// Função genérica para alternar visibilidade e limpar descendentes
$('.linha-nivel-1, .linha-nivel-2, .linha-nivel-3').on('click', function(e) {
e.stopPropagation();
var nivelAtual = parseInt($(this).attr('class').match(/linha-nivel-(\d)/)[1]);
var proximoNivel = nivelAtual + 1;
// Se a linha já estiver aberta, estamos fechando (recolhendo)
if ($(this).hasClass('aberto')) {
// Remove a classe 'aberto' desta linha
$(this).removeClass('aberto');
// Fecha todos os descendentes (recursivo)
$(this).nextUntil('.linha-nivel-' + nivelAtual).removeClass('show aberto');
} else {
// Se estamos abrindo:
$(this).addClass('aberto');
// Mostra apenas os filhos imediatos (do próximo nível)
$(this).nextUntil('.linha-nivel-' + nivelAtual).filter('.linha-nivel-' + proximoNivel).addClass('show');
}
});
});
/* Página Normas - Sistema Orbital - Lógica do Sistema Orbital com Auto-Ocultação e Suporte a Apelidos Dinâmicos */
/* Lógica do Sistema Orbital de Anexos com Tradução de Nomes e Auto-Ocultação */
/* Lógica do Sistema Orbital de Anexos com Links Inteligentes e Auto-Ocultação */
$(document).ready(function() {
var $containerOrbital = $('#sistema-orbital');
var $listaPlanetas = $containerOrbital.find('.planeta-satelite');
var totalPlanetas = $listaPlanetas.length;
if (totalPlanetas === 0) {
$containerOrbital.closest('.caixa-orbital-container').hide();
return;
} else {
$containerOrbital.closest('.caixa-orbital-container').show();
}
// 1. IDENTIFICA A PÁGINA ATUAL PELA URL DO NAVEGADOR
var urlAtual = window.location.pathname;
var idAnexoAtivo = null;
if (urlAtual.indexOf('_AN_') !== -1 || urlAtual.indexOf(' AN ') !== -1) {
// Captura o número do anexo no final da URL (ex: "NR-1_AN_1" ou "NR-1 AN 1")
var partes = urlAtual.split(/_AN_| AN /i);
if (partes.length > 1) {
idAnexoAtivo = partes[1].trim();
}
} else {
// Se não achou "AN" na URL, o usuário está na página mãe (Origem 0)
idAnexoAtivo = "0";
}
// 2. DESABILITA O RE-CLIQUE COM PRECISÃO DO NAVEGADOR
if (idAnexoAtivo === "0") {
// Desativa o link do Sol (Origem 0)
var $sol = $containerOrbital.find('.bolha-centro');
var $spanSol = $sol.find('.nome-norma-centro').detach();
$sol.empty().append($spanSol);
}
// Mapeamento manual de nomes especiais
var mapeamentoNomes = {
"30": "13-A",
"50": "Glossário",
"60": "(*)"
};
var raio = 96;
var centroX = 120;
var centroY = 120;
$listaPlanetas.each(function(index) {
var $item = $(this);
var idOrigem = $item.data('anexo').toString().trim();
// Se esta lua for a página aberta, remove o link e ativa a classe protetora
if (idOrigem === idAnexoAtivo) {
$item.addClass('pagina-ativa');
var textoSimples = idOrigem;
if (mapeamentoNomes[idOrigem]) {
textoSimples = mapeamentoNomes[idOrigem];
}
if (textoSimples === "Glossário" || textoSimples === "(*)") {
$item.find('span').html(textoSimples);
} else {
$item.find('span').html("Anexo<br>" + textoSimples);
}
// Remove a tag <a> de link de dentro dela
var $spanLimpo = $item.find('span').detach();
$item.empty().append($spanLimpo);
} else {
// Luas normais mantêm o link padrão
if (mapeamentoNomes[idOrigem]) {
if (mapeamentoNomes[idOrigem] === "Glossário" || mapeamentoNomes[idOrigem] === "(*)") {
$item.find('span').html(mapeamentoNomes[idOrigem]);
} else {
$item.find('span').html("Anexo<br>" + mapeamentoNomes[idOrigem]);
}
} else {
$item.find('span').html("Anexo<br>" + idOrigem);
}
}
var angulo = (index * (2 * Math.PI) / totalPlanetas) - (Math.PI / 2);
var x = centroX + raio * Math.cos(angulo) - 22;
var y = centroY + raio * Math.sin(angulo) - 22;
$item.css({
'left': x + 'px',
'top': y + 'px',
'width': '44px',
'height': '44px'
});
});
});
/* Lógica de Agrupamento em Blocos Sólidos para o Infográfico Histórico */
$(document).ready(function() {
var $container = $('#infografico-vigencia');
if ($container.length === 0) return;
// Aguarda um instante para garantir que o Cargo renderizou todas as linhas na tela
setTimeout(function() {
var $itens = $container.find('.timeline-item');
if ($itens.length === 0) return;
var numeroBloco = 1;
var grupoValido = [];
var itensArray = $itens.toArray();
$container.empty();
for (var i = 0; i < itensArray.length; i++) {
var $item = $(itensArray[i]);
var verbo = $item.data('verbo');
grupoValido.push($item);
// A cada portaria de Redação 'R' ou no final da fila, fecha o bloco sólido
if (verbo === 'R' || i === itensArray.length - 1) {
var $wrapper = $('<div class="bloco-grupo bloco-' + numeroBloco + '"></div>');
for (var j = 0; j < grupoValido.length; j++) {
$wrapper.append(grupoValido[j]);
}
// Injeta o rótulo "Vigências" acima do Bloco 1 (Verde)
if (numeroBloco === 1) {
var $tituloVigencias = $('<div class="titulo-bloco-vigencias">Vigências</div>');
$container.append($tituloVigencias);
}
$container.append($wrapper);
grupoValido = [];
numeroBloco++;
}
}
}, 50);
});