<template> <div> <div v-if="stats" class="ui stackable two column grid"> <div class="column"> <h3 class="ui left aligned header"><i18next path="User activity"/></h3> <div v-if="stats" class="ui mini horizontal statistics"> <div class="statistic"> <div class="value"> <i class="green user icon"></i> {{ stats.users }} </div> <i18next tag="div" class="label" path="users"/> </div> <div class="statistic"> <div class="value"> <i class="orange sound icon"></i> {{ stats.listenings }} </div> <i18next tag="div" class="label" path="tracks listened"/> </div> <div class="statistic"> <div class="value"> <i class="pink heart icon"></i> {{ stats.trackFavorites }} </div> <i18next tag="div" class="label" path="Tracks favorited"/> </div> </div> </div> <div class="column"> <h3 class="ui left aligned header">Library</h3> <div class="ui mini horizontal statistics"> <div class="statistic"> <div class="value"> {{ parseInt(stats.musicDuration) }} </div> <i18next tag="div" class="label" path="hours of music"/> </div> <div class="statistic"> <div class="value"> {{ stats.artists }} </div> <i18next tag="div" class="label" path="Artists"/> </div> <div class="statistic"> <div class="value"> {{ stats.albums }} </div> <i18next tag="div" class="label" path="Albums"/> </div> <div class="statistic"> <div class="value"> {{ stats.tracks }} </div> <i18next tag="div" class="label" path="tracks"/> </div> </div> </div> </div> </div> </template> <script> import _ from 'lodash' import axios from 'axios' import logger from '@/logging' export default { data () { return { stats: null } }, created () { this.fetchData() }, methods: { fetchData () { var self = this this.isLoading = true logger.default.debug('Fetching instance stats...') axios.get('instance/nodeinfo/2.0/').then((response) => { let d = response.data self.stats = {} self.stats.users = _.get(d, 'usage.users.total') self.stats.listenings = _.get(d, 'metadata.usage.listenings.total') self.stats.trackFavorites = _.get(d, 'metadata.usage.favorites.tracks.total') self.stats.musicDuration = _.get(d, 'metadata.library.music.hours') self.stats.artists = _.get(d, 'metadata.library.artists.total') self.stats.albums = _.get(d, 'metadata.library.albums.total') self.stats.tracks = _.get(d, 'metadata.library.tracks.total') self.isLoading = false }) } } } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> </style>