funkwhale/front/src/components/library/Home.vue

92 wiersze
2.6 KiB
Vue
Czysty Zwykły widok Historia

<template>
2018-07-01 19:50:50 +00:00
<div v-title="labels.title">
<div class="ui vertical stripe segment">
2018-02-20 23:05:33 +00:00
<div class="ui stackable three column grid">
<div class="column">
2018-07-17 11:09:13 +00:00
<track-widget :url="'history/listenings/'" :filters="{scope: 'user', ordering: '-creation_date'}">
<template slot="title"><translate>Recently listened</translate></template>
</track-widget>
</div>
<div class="column">
2018-07-17 11:09:13 +00:00
<track-widget :url="'favorites/tracks/'" :filters="{scope: 'user', ordering: '-creation_date'}">
<template slot="title"><translate>Recently favorited</translate></template>
</track-widget>
</div>
2018-02-20 23:05:33 +00:00
<div class="column">
<playlist-widget :url="'playlists/'" :filters="{scope: 'user', playable: true, ordering: '-creation_date'}">
2018-07-17 11:09:13 +00:00
<template slot="title"><translate>Playlists</translate></template>
</playlist-widget>
</div>
</div>
<div class="ui section hidden divider"></div>
<div class="ui grid">
<div class="ui row">
<album-widget :filters="{playable: true, ordering: '-creation_date'}">
2018-07-17 11:09:13 +00:00
<template slot="title"><translate>Recently added</translate></template>
</album-widget>
2018-02-20 23:05:33 +00:00
</div>
</div>
</div>
</div>
</template>
<script>
2018-01-11 20:35:51 +00:00
import axios from 'axios'
import Search from '@/components/audio/Search'
import logger from '@/logging'
import ArtistCard from '@/components/audio/artist/Card'
2018-07-17 11:09:13 +00:00
import TrackWidget from '@/components/audio/track/Widget'
import AlbumWidget from '@/components/audio/album/Widget'
import PlaylistWidget from '@/components/playlists/Widget'
2018-01-11 20:35:51 +00:00
const ARTISTS_URL = 'artists/'
export default {
name: 'library',
components: {
Search,
ArtistCard,
2018-07-17 11:09:13 +00:00
TrackWidget,
AlbumWidget,
PlaylistWidget
},
data () {
return {
artists: [],
isLoadingArtists: false
}
},
created () {
this.fetchArtists()
},
2018-07-01 19:50:50 +00:00
computed: {
labels () {
return {
title: this.$gettext('Home')
}
}
},
methods: {
fetchArtists () {
var self = this
this.isLoadingArtists = true
let params = {
ordering: '-creation_date',
playable: true
}
let url = ARTISTS_URL
logger.default.time('Loading latest artists')
2018-01-11 20:35:51 +00:00
axios.get(url, {params: params}).then((response) => {
self.artists = response.data.results
logger.default.timeEnd('Loading latest artists')
self.isLoadingArtists = false
})
}
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>