Teste de filtros de projetos
Deploy / Deploy (push) Successful in 1m51s
Details
Deploy / Deploy (push) Successful in 1m51s
Details
This commit is contained in:
parent
6b53212ea2
commit
6f50de815f
|
|
@ -325,23 +325,39 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||
if(filterBox) filterBox.style.display = 'none';
|
||||
});
|
||||
|
||||
function enrichCards(data) {
|
||||
cards.forEach(card => {
|
||||
// Normalização para tentar encontrar o projeto no JSON
|
||||
// Remove espaços extras e deixa minúsculo para comparar
|
||||
const cardTitleRaw = card.dataset.title || "";
|
||||
const cardTitle = cardTitleRaw.trim().toLowerCase();
|
||||
|
||||
const info = data.find(item => {
|
||||
// Tenta bater pelo título do projeto no YAML
|
||||
const jsonTitle = (item.dados_projeto && item.dados_projeto.titulo) ? item.dados_projeto.titulo.trim().toLowerCase() : "";
|
||||
// Tenta bater pelo nome do arquivo (sem extensão)
|
||||
const jsonFile = item.arquivo ? item.arquivo.toLowerCase().replace('.wav', '').replace('.mp3', '') : "";
|
||||
|
||||
// Estratégia de busca flexível
|
||||
return jsonTitle === cardTitle || jsonTitle.includes(cardTitle) || cardTitle.includes(jsonFile);
|
||||
});
|
||||
// Função auxiliar para gerar estrelas HTML
|
||||
function gerarEstrelas(num) {
|
||||
let html = '<span class="has-text-warning" title="Nível de Complexidade Técnica">';
|
||||
for (let i = 0; i < 5; i++) {
|
||||
if (i < num) {
|
||||
html += '<i class="fa-solid fa-star"></i>'; // Estrela cheia
|
||||
} else {
|
||||
html += '<i class="fa-regular fa-star"></i>'; // Estrela vazia
|
||||
}
|
||||
}
|
||||
html += '</span>';
|
||||
return html;
|
||||
}
|
||||
|
||||
function enrichCards(data) {
|
||||
// 1. Cria um mapa para busca rápida (O(N))
|
||||
const mapDados = {};
|
||||
data.forEach(item => {
|
||||
// Mapeia tanto pelo nome do arquivo quanto pelo título do projeto
|
||||
const keyArquivo = normalizarChaveJS(item.arquivo.replace('.wav','').replace('.mp3',''));
|
||||
mapDados[keyArquivo] = item;
|
||||
|
||||
if(item.dados_projeto && item.dados_projeto.titulo) {
|
||||
const keyTitulo = normalizarChaveJS(item.dados_projeto.titulo);
|
||||
mapDados[keyTitulo] = item;
|
||||
}
|
||||
});
|
||||
|
||||
cards.forEach(card => {
|
||||
const cardKey = normalizarChaveJS(card.dataset.title);
|
||||
// 2. Busca instantânea (O(1))
|
||||
const info = mapDados[cardKey];
|
||||
|
||||
if (info) {
|
||||
// 1. Salvar Metadados nos atributos HTML para usar nos filtros
|
||||
card.dataset.genre = (info.analise_ia && info.analise_ia.genero_macro) ? info.analise_ia.genero_macro : "Unknown";
|
||||
|
|
@ -350,6 +366,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||
|
||||
// 2. Injetar Etiquetas Visuais no Card
|
||||
const bpmContainer = card.querySelector('.bpm-container');
|
||||
const estrelasHTML = gerarEstrelas(projeto.analise_tecnica.complexidade.estrelas);
|
||||
|
||||
// Se achou o container do BPM, insere as novas tags logo após
|
||||
if (bpmContainer) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue