//Evento que esepra, todos os elementos htmls foram construidos na tela para disparar a função document.addEventListener('DOMContentLoaded', () => { insercaoFunc_Total(); }); //Função responsavel por inserir o script de load dentro dá página html function insercaoFunc_Total() { // Script de carregamento const script_Load = document.createElement('script'); script_Load.src = './js/page/Modulo_Construcao/Painel/Estrutura/load.js'; document.body.appendChild(script_Load); script_Load.onload = async () => { await verificarAmbiente(); // Chama a função somente após o script ser carregado }; } let usuarioData = null; // Variável para armazenar dados do usuário //Função responsavel por montar toda á página do ambiente do usuário async function criarBlocos() { try { // Conexção com o script de Comunicacao.js para se utilizar da função de autenticação com a rota mouten, para puxar a const response e apiURL const { response, apiUrl, ResponseAutenticao } = await Autenticao(); //Essa constante faz um tratamento sobre a response retirando o json para armazenar nesse data const data = await response.json(); // Armazena os dados para usos futuros usuarioData = { nomeCompleto: data.usuario.nome, Empresa: data.empresa.nome, ImagemUser: `${apiUrl}${data.usuario.img_perfil}`, logoEmpresa: `${apiUrl}${data.empresa.logo}` }; //Consoles para validar a chegada das informações, e se estão sendo usadas corretamento //console.log('Data config' + usuarioData); //console.log(usuarioData.nomeCompleto); //console.log(usuarioData.Empresa); // Inicia a função insercaoFunc_Estrutura await insercaoFunc_Estrutura(); // Função responsavel inserir scripts que construem todo o ambiente do usuário. async function insercaoFunc_Estrutura() { const script_Func = document.createElement('script'); script_Func.id = 'Ambiente_func'; script_Func.src = './js/page/Modulo_Construcao/Funcao/Estrutura/Estrutura.js'; // Esse script é responsavel por todas as funções que o ambiente realiza de forma passiva e ativa. const script_Html = document.createElement('script'); script_Html.id = 'Ambiente_Html'; script_Html.src = './js/page/Modulo_Construcao/Painel/Estrutura/Html_estrutura.js'; // Esse script é responsavel por inserir toda estrutura html dentro do projeto // Adiciona pousa na leitura do codigo somente enquanto os dois scripts ainda estão sendo carregados. await Promise.all([ carregarScript(script_Func), carregarScript(script_Html), ]); await EstruturaEsqueleto(); // Chama de cosntrução do ambiente do usuário. // Script responsavel por carregar todo os script dentro dá página html function carregarScript(script) { return new Promise((resolve, reject) => { script.onload = () => resolve(); script.onerror = () => reject(new Error(`Erro ao carregar o script: ${script.src}`)); document.body.appendChild(script); }); } async function EstruturaEsqueleto() { //constante que controla o estilo css que está estilizando todo o ambiente do usuário. const estilos_Estrutura = document.getElementById('conexao'); estilos_Estrutura.href = './Css/page/Ambiente/Estrutura/estrutura.css'; const construtor_primario = document.getElementById('entrada_1'); // Estrutura Html que será apresentada sobre a tela, puxando as informações que foram alinhadas na consultas inicias. construtor_primario.innerHTML = InterfaceAmbiente(usuarioData.nomeCompleto, usuarioData.Empresa); // Uma condicional para iniciar as funções somente se a estrutura que está recebendo todo o esqueleto html, do ambiente do usuário esitver diferente de vazia, ou seja ser o innerhtml acima ser aplicado corretamente. if (construtor_primario.innerHTML !== '') { // Função responsavel belo botão que reajusta todos os elementos sobre a propria tela // Aplica as funções para carregamento das imagens, os alinhando com classe para a aplicação dentro do html. loadImage(usuarioData.ImagemUser, 'profileImage'); loadImage(usuarioData.logoEmpresa, 'companyLogo'); await loadBackgroundAndUpdateStyle() //console.log('Link da imagem de perfil -' + usuarioData.ImagemUser); //console.log('Link da Logo -' + usuarioData.logoEmpresa); Interatividade(); // Função responsavel sobre o controle da telas dentro do ambiente do usuário, responsavel por determinar qual tela será usada. ApresentarTelas(usuarioData); } } setTimeout(localStorage.setItem('Carregou', 'true'), 500) } // Cenario de erro completo da estrutura } catch (error) { localStorage.removeItem('Carregou'); // Inicialização da função insercaoFunc_Erro insercaoFunc_Erro(); // Função similiar de inserção de scripts para o ambiente do usuário, porem nesse caso sendo para a tela de erro. function insercaoFunc_Erro() { const script_ERRO = document.createElement('script'); script_ERRO.src = './js/page/Modulo_Construcao/Funcao/Estrutura/Painel_Erro.js'; document.body.appendChild(script_ERRO); // Script responsavel por todas as funções da tela de erro // Apos o carregamento das funções é executada a função dos casos de erro script_ERRO.onload = async () => { await CasodeErro(); // Chama a função somente após o script ser carregado }; // Função responsavel por inserir o esqueleto html dentro do ambiente od usuário para apresentar a tela de erro. const script_ERRO_Html = document.createElement('script'); script_ERRO_Html.src = './js/page/Modulo_Construcao/Painel/Estrutura/Html_erro.js'; document.body.appendChild(script_ERRO_Html); } // Apresentação do atual erro do projeto dentro do //console.log console.error('Houve um problema durante a construção do ambiente', error); } } // Função para carregar uma imagem protegida com token JWT e exibi-la async function loadImage(url, imgElementClass) { try { // Obtém o token de autenticação do usuário const token = getAuthToken(); //console.log('Token:', token); //console.log('URL da imagem:', url); // Faz uma requisição GET para obter a imagem protegida const response = await fetch(url, { method: 'GET', headers: { 'x-access-token': token ? token : '' // Adiciona o token no cabeçalho da requisição } }); // Verifica se a requisição foi bem-sucedida if (!response.ok) { throw new Error('Erro ao carregar a imagem: ' + response.statusText); } // Converte a resposta para um Blob (arquivo binário) const blob = await response.blob(); // Cria uma URL temporária para exibir a imagem const imageUrl = URL.createObjectURL(blob); // Seleciona todos os elementos da página que possuem a classe especificada const imgElements = document.getElementsByClassName(imgElementClass); if (imgElements.length > 0) { // Define a imagem carregada para cada elemento encontrado for (let i = 0; i < imgElements.length; i++) { imgElements[i].src = imageUrl; } } else { console.warn('Nenhum elemento encontrado com a classe:', imgElementClass); } return imageUrl; // Retorna a URL da imagem carregada } catch (error) { console.error('Erro ao carregar a imagem:', error); //console.log('Classe do elemento:', imgElementClass); return null; // Retorna null em caso de erro } } // Função para carregar a imagem de fundo e atualizar o estilo dinamicamente async function loadBackgroundAndUpdateStyle() { try { // Obtém a URL da API para buscar as informações do usuário const apiUrl = await getApiUrl(); const token = getAuthToken(); // Faz uma requisição GET para obter os dados do usuário const response = await fetch(`${apiUrl}/mounting`, { method: 'GET', headers: { 'x-access-token': token ? token : '' } }); // Verifica se a requisição foi bem-sucedida if (!response.ok) { throw new Error('Erro ao carregar os dados: ' + response.statusText); } // Converte a resposta para JSON const data = await response.json(); // Constrói a URL da imagem de fundo do usuário const imagemFun = `${apiUrl}${data.usuario.img_fundo}`; // Faz uma nova requisição GET para obter a imagem de fundo const fundoResponse = await fetch(imagemFun, { method: 'GET', headers: { 'x-access-token': token ? token : '' } }); // Verifica se a requisição foi bem-sucedida if (!fundoResponse.ok) { throw new Error('Erro ao carregar a imagem de fundo: ' + fundoResponse.statusText); } // Converte a resposta para um Blob (arquivo binário) const blob = await fundoResponse.blob(); // Cria uma URL temporária para exibir a imagem de fundo const fundoUserUrl = URL.createObjectURL(blob); // Seleciona o elemento com id 'fundouser' e aplica a imagem de fundo dinamicamente const fundouser = document.getElementById('fundouser'); fundouser.innerHTML = '.seguimentacao_2 .coluna_1 {' + 'width: 100%;' + // Define a largura como 100% 'height: 30vh;' + // Define a altura como 30% da viewport 'display: flex;' + // Usa flexbox para organização dos elementos internos 'flex-direction: row;' + // Organiza os elementos na horizontal 'background-image: url("' + fundoUserUrl + '");' + // Define a imagem de fundo carregada 'background-position: center;' + // Centraliza a imagem de fundo 'background-size: cover;' + // Ajusta a imagem para cobrir toda a área disponível 'overflow: hidden;' + // Esconde partes que ultrapassam os limites do contêiner 'transition: 1s ease;' + // Aplica uma transição suave '}'; //console.log('Imagem de fundo carregada e estilo aplicado com sucesso.'); } catch (error) { console.error('Erro ao carregar a imagem de fundo:', error); } } // Aguarda o carregamento completo do DOM document.addEventListener('DOMContentLoaded', async () => { setTimeout(async () => { await criarBlocos(); // Salva um valor no localStorage }, 3000); // Executa as funções 3 segundos após o carregamento do DOM });