diff --git a/components/app/SideDrawer.vue b/components/app/SideDrawer.vue index 8506812f..81d8ca13 100644 --- a/components/app/SideDrawer.vue +++ b/components/app/SideDrawer.vue @@ -100,6 +100,11 @@ export default { to: '/account' }) } + items.push({ + icon: 'equalizer', + text: 'User Stats', + to: '/stats' + }) if (this.$platform !== 'ios') { items.push({ @@ -162,4 +167,4 @@ export default { this.show = false } } - \ No newline at end of file + diff --git a/components/stats/DailyListeningChart.vue b/components/stats/DailyListeningChart.vue new file mode 100644 index 00000000..db69783e --- /dev/null +++ b/components/stats/DailyListeningChart.vue @@ -0,0 +1,221 @@ + + + diff --git a/pages/stats.vue b/pages/stats.vue new file mode 100644 index 00000000..01206f63 --- /dev/null +++ b/pages/stats.vue @@ -0,0 +1,139 @@ + + + diff --git a/plugins/init.client.js b/plugins/init.client.js index c540d14f..b50e5474 100644 --- a/plugins/init.client.js +++ b/plugins/init.client.js @@ -2,7 +2,7 @@ import Vue from 'vue' import { App } from '@capacitor/app' import { Dialog } from '@capacitor/dialog' import { StatusBar, Style } from '@capacitor/status-bar'; -import { formatDistance, format } from 'date-fns' +import { formatDistance, format, addDays, isDate } from 'date-fns' import { Capacitor } from '@capacitor/core'; Vue.prototype.$eventBus = new Vue() @@ -24,7 +24,20 @@ Vue.prototype.$formatDate = (unixms, fnsFormat = 'MM/dd/yyyy HH:mm') => { if (!unixms) return '' return format(unixms, fnsFormat) } - +Vue.prototype.$formatJsDate = (jsdate, fnsFormat = 'MM/dd/yyyy HH:mm') => { + if (!jsdate || !isDate(jsdate)) return '' + return format(jsdate, fnsFormat) +} +Vue.prototype.$addDaysToToday = (daysToAdd) => { + var date = addDays(new Date(), daysToAdd) + if (!date || !isDate(date)) return null + return date +} +Vue.prototype.$addDaysToDate = (jsdate, daysToAdd) => { + var date = addDays(jsdate, daysToAdd) + if (!date || !isDate(date)) return null + return date +} Vue.prototype.$bytesPretty = (bytes, decimals = 2) => { if (isNaN(bytes) || bytes === null) return 'Invalid Bytes' if (bytes === 0) { @@ -162,4 +175,4 @@ export default ({ store, app }) => { export { encode, decode -} \ No newline at end of file +}