(async function() { const token = sessionStorage.getItem('token') const response = await fetch("https://sisualuno-api.sisualuno.mec.gov.br/api/v1/inscricao/ranking", { "headers": { "Accept": "application/json, text/plain, */*", "Authorization": "Bearer " + token, "Sec-GPC": "1", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-site", "Priority": "u=4", }, "mode": "cors" }) if (response.status !== 200) { alert(`Houve um erro ao buscar o ranking [${response.status}]`) throw new Error('Failed to fetch') } const data = await response.json() const container = document.createElement('div') container.className = 'max-w-2xl mx-auto p-4 space-y-3 font-sans' for (const ranking of data.classificacoes) { const card = document.createElement('div') card.className = 'flex flex-col border-l-4 border-blue-500 bg-white p-3 shadow-sm border-y border-r border-gray-200' const header = document.createElement('div') header.className = 'text-xs text-gray-500 mb-2 truncate' header.textContent = `${ranking.no_curso} | ${ranking.no_ies} | ${ranking.no_campus}` card.appendChild(header) for (const modalidade of ranking.modalidades) { const row = document.createElement('div') row.className = 'py-1 border-t border-gray-50' const modTitle = document.createElement('div') modTitle.className = 'text-[10px] uppercase text-gray-400 font-semibold leading-none mb-1' modTitle.textContent = modalidade.no_mod_concorrencia const rankText = document.createElement('div') rankText.className = 'text-base text-gray-800' rankText.innerHTML = `Você ocupa a posição ${modalidade.nu_classificacao} de ${modalidade.qt_vagas_modalidade} vagas.` row.appendChild(modTitle) row.appendChild(rankText) card.appendChild(row) } container.appendChild(card) } document.body.appendChild(container)})()