264 lines
11 KiB
JavaScript
264 lines
11 KiB
JavaScript
//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
|
|
});
|
|
|