testes/js/page/Ambiente/Service/Contrutor_Serviços.js

145 lines
4.1 KiB
JavaScript

async function respostaServer_data() {
// Function to get the API URL
async function getApiUrl() {
try {
const response = await fetch('../../../Site_ItGuys/php/config_url.php');
if (!response.ok) {
throw new Error('Network response was not ok');
}
const data = await response.json();
return data.apiUrl;
} catch (error) {
console.error('Error fetching API URL:', error);
throw error;
}
}
// Function to get the authentication token
function getAuthToken() {
return localStorage.getItem('x-access-token');
}
const apiUrl = await getApiUrl();
const token = getAuthToken();
return { apiUrl, token };
}
async function verificardados() {
try {
const { apiUrl, token } = await respostaServer_data();
const response = await fetch(`${apiUrl}/mounting`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'x-access-token': token || ''
}
});
if (!response.ok) {
throw new Error('Erro na requisição: ' + response.statusText);
}
const data = await response.json();
const nameempresa = data.empresa?.nome || 'Empresa Desconhecida';
console.log(nameempresa);
const Data_Center = {
Ser_User: {},
Ser_Itguys: {}
};
if (nameempresa === 'itguys') {
setupItGuysServices(Data_Center);
}
if (true) { // Assuming this is a permission check
setupUserServices(Data_Center);
}
renderAllServices(Data_Center);
} catch (error) {
console.error('Erro ao verificar o ambiente:', error);
}
}
function renderService(service) {
const { nome, Imagem, id_server, resposta_popup, resposta_script, resposta_estilo } = service;
const serviceDiv = document.createElement('div');
serviceDiv.classList.add('painel');
serviceDiv.id = id_server;
serviceDiv.innerHTML = `
<div class="Colun_1">
<img src="${Imagem}" alt="">
</div>
<div class="Colun_2">
<h2>${nome}</h2>
</div>
`;
const painel_serviços_icon = document.getElementById('saida');
painel_serviços_icon.appendChild(serviceDiv);
serviceDiv.addEventListener('click', () => {
popup(resposta_popup, resposta_script, resposta_estilo);
});
}
function renderAllServices(Data_Center) {
const painel_serviços_icon = document.getElementById('saida');
painel_serviços_icon.innerHTML = '';
// Renderiza os serviços de Ser_Itguys
for (const service of Object.values(Data_Center.Ser_Itguys)) {
renderService(service);
}
// Renderiza os serviços de Ser_User
for (const service of Object.values(Data_Center.Ser_User)) {
renderService(service);
}
}
function popup(resposta, script, estilo) {
const painel_serviços = document.getElementById('painel_Servico');
painel_serviços.innerHTML = `
<section>
<div class='colun_1'>
<button id='fechar'>X</button>
</div>
<div class='colun_2'>${resposta}</div>
</section>
`;
// Remove previous styles and scripts
document.querySelectorAll('style').forEach(style => style.remove());
document.querySelectorAll('script[data-dynamic]').forEach(script => script.remove());
// Inject style if present
if (estilo) {
const style = document.createElement('style');
style.innerHTML = estilo;
document.head.appendChild(style);
}
// Inject script if present
if (script) {
const scriptElement = document.createElement('script');
scriptElement.setAttribute('data-dynamic', '');
scriptElement.src = script;
document.body.appendChild(scriptElement);
}
document.getElementById('fechar').addEventListener('click', () => {
painel_serviços.style.display = "none";
});
painel_serviços.style.display = "flex";
}
window.addEventListener('load', verificardados);