2017-06-23 21:00:42 +00:00
|
|
|
<template>
|
2018-07-01 19:50:50 +00:00
|
|
|
<div v-title="labels.title">
|
2017-06-23 21:00:42 +00:00
|
|
|
<div class="ui vertical stripe segment">
|
2018-02-20 23:05:33 +00:00
|
|
|
<div class="ui stackable three column grid">
|
2017-06-23 21:00:42 +00:00
|
|
|
<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>
|
2017-06-23 21:00:42 +00:00
|
|
|
</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>
|
2017-06-23 21:00:42 +00:00
|
|
|
</div>
|
2018-02-20 23:05:33 +00:00
|
|
|
<div class="column">
|
2018-09-06 18:35:02 +00:00
|
|
|
<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">
|
2018-09-06 18:35:02 +00:00
|
|
|
<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>
|
2017-06-23 21:00:42 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
2018-01-11 20:35:51 +00:00
|
|
|
import axios from 'axios'
|
2017-06-23 21:00:42 +00:00
|
|
|
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'
|
2017-06-23 21:00:42 +00:00
|
|
|
|
2018-01-11 20:35:51 +00:00
|
|
|
const ARTISTS_URL = 'artists/'
|
2017-06-23 21:00:42 +00:00
|
|
|
|
|
|
|
export default {
|
2017-06-29 21:26:57 +00:00
|
|
|
name: 'library',
|
2017-06-23 21:00:42 +00:00
|
|
|
components: {
|
|
|
|
Search,
|
|
|
|
ArtistCard,
|
2018-07-17 11:09:13 +00:00
|
|
|
TrackWidget,
|
|
|
|
AlbumWidget,
|
|
|
|
PlaylistWidget
|
2017-06-23 21:00:42 +00:00
|
|
|
},
|
|
|
|
data () {
|
|
|
|
return {
|
|
|
|
artists: [],
|
|
|
|
isLoadingArtists: false
|
|
|
|
}
|
|
|
|
},
|
|
|
|
created () {
|
|
|
|
this.fetchArtists()
|
|
|
|
},
|
2018-07-01 19:50:50 +00:00
|
|
|
computed: {
|
|
|
|
labels () {
|
|
|
|
return {
|
|
|
|
title: this.$gettext('Home')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2017-06-23 21:00:42 +00:00
|
|
|
methods: {
|
|
|
|
fetchArtists () {
|
|
|
|
var self = this
|
|
|
|
this.isLoadingArtists = true
|
|
|
|
let params = {
|
2018-07-09 20:47:55 +00:00
|
|
|
ordering: '-creation_date',
|
2018-09-06 18:35:02 +00:00
|
|
|
playable: true
|
2017-06-23 21:00:42 +00:00
|
|
|
}
|
|
|
|
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) => {
|
2017-06-23 21:00:42 +00:00
|
|
|
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>
|