2018-08-11 07:47:10 +02:00
< template >
2022-02-19 06:18:01 +01:00
< div class = "fd-page-with-tabs" >
2018-08-11 07:47:10 +02:00
< tabs-music > < / tabs-music >
<!-- Recently added -- >
< content-with-heading >
2022-02-19 06:18:01 +01:00
< template v -slot : heading -left >
2018-08-11 07:47:10 +02:00
< p class = "title is-4" > Recently added < / p >
< p class = "heading" > albums < / p >
< / template >
2022-02-19 06:18:01 +01:00
< template v -slot : content >
2020-09-20 12:25:38 +02:00
< list-albums :albums = "recently_added.items" > < / list-albums >
2018-08-11 07:47:10 +02:00
< / template >
2022-02-19 06:18:01 +01:00
< template v -slot : footer >
2018-08-11 07:47:10 +02:00
< nav class = "level" >
< p class = "level-item" >
< a class = "button is-light is-small is-rounded" v -on :click = "open_browse('recently_added')" > Show more < / a >
< / p >
< / nav >
< / template >
< / content-with-heading >
<!-- Recently played -- >
< content-with-heading >
2022-02-19 06:18:01 +01:00
< template v -slot : heading -left >
2018-08-11 07:47:10 +02:00
< p class = "title is-4" > Recently played < / p >
< p class = "heading" > tracks < / p >
< / template >
2022-02-19 06:18:01 +01:00
< template v -slot : content >
2020-10-04 17:31:47 +02:00
< list-tracks :tracks = "recently_played.items" > < / list-tracks >
2018-08-11 07:47:10 +02:00
< / template >
2022-02-19 06:18:01 +01:00
< template v -slot : footer >
2018-08-11 07:47:10 +02:00
< nav class = "level" >
< p class = "level-item" >
< a class = "button is-light is-small is-rounded" v -on :click = "open_browse('recently_played')" > Show more < / a >
< / p >
< / nav >
< / template >
< / content-with-heading >
< / div >
< / template >
< script >
2022-02-19 06:18:01 +01:00
import ContentWithHeading from '@/templates/ContentWithHeading.vue'
import TabsMusic from '@/components/TabsMusic.vue'
import ListAlbums from '@/components/ListAlbums.vue'
import ListTracks from '@/components/ListTracks.vue'
2018-08-11 07:47:10 +02:00
import webapi from '@/webapi'
2022-02-19 06:18:01 +01:00
const dataObject = {
2018-08-11 07:47:10 +02:00
load : function ( to ) {
return Promise . all ( [
2019-02-09 08:48:42 +01:00
webapi . search ( { type : 'album' , expression : 'time_added after 8 weeks ago and media_kind is music having track_count > 3 order by time_added desc' , limit : 3 } ) ,
webapi . search ( { type : 'track' , expression : 'time_played after 8 weeks ago and media_kind is music order by time_played desc' , limit : 3 } )
2018-08-11 07:47:10 +02:00
] )
} ,
set : function ( vm , response ) {
vm . recently _added = response [ 0 ] . data . albums
vm . recently _played = response [ 1 ] . data . tracks
}
}
export default {
name : 'PageBrowse' ,
2020-10-04 17:31:47 +02:00
components : { ContentWithHeading , TabsMusic , ListAlbums , ListTracks } ,
2018-08-11 07:47:10 +02:00
data ( ) {
return {
2020-10-17 12:09:01 +02:00
recently _added : { items : [ ] } ,
recently _played : { items : [ ] } ,
2018-12-15 09:56:09 +01:00
show _track _details _modal : false ,
2020-09-20 12:25:38 +02:00
selected _track : { }
2020-08-23 19:26:54 +02:00
}
} ,
2018-08-11 07:47:10 +02:00
methods : {
open _browse : function ( type ) {
this . $router . push ( { path : '/music/browse/' + type } )
}
2022-02-19 06:18:01 +01:00
} ,
beforeRouteEnter ( to , from , next ) {
dataObject . load ( to ) . then ( ( response ) => {
next ( vm => dataObject . set ( vm , response ) )
} )
} ,
beforeRouteUpdate ( to , from , next ) {
const vm = this
dataObject . load ( to ) . then ( ( response ) => {
dataObject . set ( vm , response )
next ( )
} )
2018-08-11 07:47:10 +02:00
}
}
< / script >
< style >
< / style >