Sångare -> Genrer: kategorin föreslår musikgenrer med toppartister/topplåtar
All checks were successful
build-and-push / build (push) Successful in 14s
All checks were successful
build-and-push / build (push) Successful in 14s
Rättelse per Björn: tredje förslags-typen ska vara genrer, inte sångare. Gemini föreslår genrer utifrån artisterna i gillat/spelat; varje genre får 5 toppartister (filtrerade mot biblioteket, Hämta-knapp i modalen) och 5 topplåtar (filtrerade mot gillalistan, YT-länkar). Genrekortet lånar första toppartistens omslag. Gamla sångar-batcher renderas fortfarande. DetailModal generaliserad. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01824ZrvG2mDYYrmwqypLNup
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
<script setup>
|
||||
import { onMounted, ref } from 'vue'
|
||||
import MusicCard from '../components/MusicCard.vue'
|
||||
import SingerModal from '../components/SingerModal.vue'
|
||||
import DetailModal from '../components/DetailModal.vue'
|
||||
|
||||
const batches = ref([])
|
||||
const selected = ref(null)
|
||||
const loading = ref(false)
|
||||
const openSinger = ref(null)
|
||||
const openDetail = ref(null)
|
||||
|
||||
async function load() {
|
||||
const res = await fetch('/api/suggest/batches')
|
||||
@@ -44,7 +44,7 @@ onMounted(load)
|
||||
@click="pick(b.id)"
|
||||
>
|
||||
<strong>#{{ b.id }}</strong> — {{ fmt(b.createdAt) }}
|
||||
<span class="dim">{{ { tracks: 'låtar', singers: 'sångare' }[b.type] ?? 'artister/album' }} · {{ b.count }} förslag · {{ b.trigger }}</span>
|
||||
<span class="dim">{{ { tracks: 'låtar', singers: 'sångare', genres: 'genrer' }[b.type] ?? 'artister/album' }} · {{ b.count }} förslag · {{ b.trigger }}</span>
|
||||
</button>
|
||||
</aside>
|
||||
|
||||
@@ -59,13 +59,13 @@ onMounted(load)
|
||||
v-for="(r, i) in selected.items"
|
||||
:key="`${selected.id}-${r.mbid ?? i}`"
|
||||
:item="r"
|
||||
@detail="openSinger = $event"
|
||||
@detail="openDetail = $event"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<p v-else-if="loading" class="dim">Laddar…</p>
|
||||
</div>
|
||||
<SingerModal v-if="openSinger" :singer="openSinger" @close="openSinger = null" />
|
||||
<DetailModal v-if="openDetail" :item="openDetail" @close="openDetail = null" />
|
||||
</section>
|
||||
</template>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user