diff --git a/DATA-MODEL.md b/DATA-MODEL.md index 494b0ff..722d71e 100644 --- a/DATA-MODEL.md +++ b/DATA-MODEL.md @@ -31,6 +31,8 @@ public/data/ Lista leve com metadados básicos. Use este para listar cantorias sem carregar estrofes. +**⚠️ IMPORTANTE - Ordenação:** A ordem dos itens no array `cantorias` é **cronológica** (primeira = mais antiga, última = mais recente). Para exibir as mais recentes primeiro, inverta a ordem do array com `.reverse()`. + ```json { "$schema": "https://json-schema.org/draft-07/schema#", diff --git a/view/src/routes/cantorias.tsx b/view/src/routes/cantorias.tsx index 873a001..3461b19 100644 --- a/view/src/routes/cantorias.tsx +++ b/view/src/routes/cantorias.tsx @@ -34,21 +34,23 @@ function CantoriasPage() { } // Ordenação primária - if (sortBy === "alfabetica") { + if (sortBy === "recentes") { + // Inverte a ordem do array (último adicionado = mais recente) + filtered.reverse(); + } else if (sortBy === "alfabetica") { filtered.sort((a, b) => a.titulo.localeCompare(b.titulo)); } else if (sortBy === "estilo") { filtered.sort((a, b) => a.estilo.nome.localeCompare(b.estilo.nome)); } else if (sortBy === "destaque") { filtered.sort((a, b) => (b.destaque ? 1 : 0) - (a.destaque ? 1 : 0)); + // Ordenação secundária: colocar cantorias COM vídeo primeiro apenas no modo destaque + filtered.sort((a, b) => { + const aTemVideo = a.links.youtube ? 1 : 0; + const bTemVideo = b.links.youtube ? 1 : 0; + return bTemVideo - aTemVideo; // Com vídeo primeiro + }); } - // Ordenação secundária: sempre colocar cantorias COM vídeo primeiro - filtered.sort((a, b) => { - const aTemVideo = a.links.youtube ? 1 : 0; - const bTemVideo = b.links.youtube ? 1 : 0; - return bTemVideo - aTemVideo; // Com vídeo primeiro - }); - return filtered; }, [cantorias, filterEstilo, sortBy]);