#56 - handle compare track count

This commit is contained in:
isUnknown 2024-12-17 15:29:26 +01:00
parent 7c20f756f1
commit 42bf8c11b4

View file

@ -18,7 +18,11 @@
:class="{ 'btn--secondary': isCompareModeEnabled }" :class="{ 'btn--secondary': isCompareModeEnabled }"
@click="isCompareModeEnabled = !isCompareModeEnabled" @click="isCompareModeEnabled = !isCompareModeEnabled"
> >
<span>{{ isCompareModeEnabled ? 'Quitter le mode comparer' : 'Comparer les pistes' }}</span> <span>{{
isCompareModeEnabled
? "Quitter le mode comparer"
: "Comparer les pistes"
}}</span>
</button> </button>
</header> </header>
@ -32,7 +36,10 @@
<img :src="activeTrack.files[0].url" alt="" /> <img :src="activeTrack.files[0].url" alt="" />
</figure> </figure>
</template> </template>
<div v-if="isCompareModeEnabled && activeTracks.length < 2" class="track-empty | bg-white rounded-xl w-full p-32"> <div
v-if="isCompareModeEnabled && activeTracks.length < 2"
class="track-empty | bg-white rounded-xl w-full p-32"
>
<p>Cliquez sur la piste que vous souhaitez comparer</p> <p>Cliquez sur la piste que vous souhaitez comparer</p>
</div> </div>
</div> </div>
@ -52,7 +59,7 @@ const tracks = computed(
const isCompareModeEnabled = ref(false); const isCompareModeEnabled = ref(false);
watch(isCompareModeEnabled, (newValue) => { watch(isCompareModeEnabled, (newValue) => {
if (!newValue) { if (!newValue && activeTracks.value.length === 2) {
activeTracks.value.pop(); activeTracks.value.pop();
} }
}); });
@ -68,18 +75,31 @@ function getFrontViewUrl(track) {
} }
function selectTrack(track) { function selectTrack(track) {
if (isCompareModeEnabled.value) { if (!isCompareModeEnabled.value) {
activeTracks.value = [track];
return;
}
if (activeTracks.value.length === 1 && !activeTracks.value.includes(track)) {
activeTracks.value.push(track);
return;
}
if (activeTracks.value.length === 2) {
if (activeTracks.value.includes(track)) { if (activeTracks.value.includes(track)) {
activeTracks.value = activeTracks.value.filter( removeTrack(track);
(item) => item.title !== track.title
);
} else { } else {
activeTracks.value.shift();
activeTracks.value.push(track); activeTracks.value.push(track);
} }
} else {
activeTracks.value = [track];
} }
} }
function removeTrack(track) {
activeTracks.value = activeTracks.value.filter(
(activeTrack) => activeTrack.title !== track.title
);
}
</script> </script>
<style> <style>