0
0
Fork 0

Make app function.

This commit is contained in:
Tyler-A 2020-07-05 18:14:59 -06:00
parent e4c81beefe
commit af75bbc522
14 changed files with 865 additions and 0 deletions

63
components/track.js Normal file
View file

@ -0,0 +1,63 @@
Vue.component(
`track-card`,
{
props: [ `track` ],
data: function () {
return {
popularity_tooltip: `Popularity.\nClick for more information.`
}
},
template: `<div class="track">
<div class="cover center">
<a :href="track.album.link" target="_blank" rel="noopener">
<img :src="track.album.image.url" :alt="track.album.name + ' Cover Image'" class="cover">
</a>
</div>
<div class="info">
<span class="name remote" v-if="!track.locality">
<a :href="track.link" target="_blank" rel="noopener">{{track.name}}</a>
</span>
<span class="name local" v-else>
{{track.name}}
</span>
<br>
<span class="artist" v-html="artists"></span>
<br>
</div>
<div class="popularity" v-tooltip="popularity_tooltip">{{track.popularity}}</div>
<div class="duration">{{duration}}</div>
</div>`,
computed: {
duration: function () {
let timestamp = ``;
// Converting to seconds
let duration = Math.trunc(this.track.duration / 1000);
let seconds = duration % 60;
// Converting to minutes
duration = Math.trunc(duration / 60);
let minutes = duration % 60
// Converting to hours
duration = Math.trunc(duration / 60);
let hours = duration % 24;
if (seconds < 10) {
seconds = `0${seconds}`
};
return `${hours > 0 ? `${hours}:` : ''}${minutes}:${seconds}`;
},
artists: function () {
let artists = [];
for (var artist of this.track.artists) {
artists.push(
`<a href="${artist.external_urls.spotify}" target="_blank" rel="noopener">${artist.name}</a>`
)
}
return artists.join(`, `)
},
}
}
);