chore: be able to refresh stats on demand
This commit is contained in:
parent
09c834e6ce
commit
523359ec32
|
@ -5,10 +5,27 @@ const moment = require('moment');
|
|||
// Thank you Bobby for the stats code https://github.com/BobbyWibowo/lolisafe/blob/safe.fiery.me/controllers/utilsController.js
|
||||
class filesGET extends Route {
|
||||
constructor() {
|
||||
super('/service/statistics', 'get', { adminOnly: true });
|
||||
super('/service/statistics/:category?', 'get', { adminOnly: true });
|
||||
}
|
||||
|
||||
async run(req, res, db) {
|
||||
const { category } = req.params;
|
||||
if (category) {
|
||||
const dbRes = await StatsGenerator.statGenerators[category](db);
|
||||
return res.json({
|
||||
statistics: {
|
||||
[category]: {
|
||||
...dbRes,
|
||||
meta: {
|
||||
cached: true,
|
||||
generatedOn: moment().format('MMMM Do YYYY, h:mm:ss a z'), // pg returns this as a date, sqlite3 returns an unix timestamp :<
|
||||
type: StatsGenerator.Type.HIDDEN
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const cachedStats = await db('statistics')
|
||||
.select('type', 'data', 'batchId', 'createdAt')
|
||||
.where('batchId', '=', db('statistics').max('batchId'));
|
||||
|
|
|
@ -16,6 +16,10 @@
|
|||
<h2 class="title">
|
||||
{{ category }} <span v-if="stats[category].meta" class="is-size-7 is-pulled-right is-family-monospace has-text-grey-light">
|
||||
generated on {{ stats[category].meta.generatedOn }}
|
||||
<b-icon class="is-pulled-right ml1 is-clickable"
|
||||
size="is-small"
|
||||
icon="reload"
|
||||
@click.native="refresh(category)" />
|
||||
</span>
|
||||
</h2>
|
||||
|
||||
|
@ -84,7 +88,15 @@ export default {
|
|||
computed: mapState({
|
||||
stats: state => state.admin.statistics
|
||||
}),
|
||||
methods: {},
|
||||
methods: {
|
||||
refresh(category) {
|
||||
try {
|
||||
this.$store.dispatch('admin/fetchStatistics', category);
|
||||
} catch (error) {
|
||||
this.$notifier.error(error.message);
|
||||
}
|
||||
}
|
||||
},
|
||||
head() {
|
||||
return {
|
||||
title: 'Service statistics'
|
||||
|
|
|
@ -22,9 +22,10 @@ export const actions = {
|
|||
|
||||
return response;
|
||||
},
|
||||
async fetchStatistics({ commit }) {
|
||||
const response = await this.$axios.$get('service/statistics');
|
||||
commit('setStatistics', response);
|
||||
async fetchStatistics({ commit }, category) {
|
||||
const url = category ? `service/statistics/${category}` : 'service/statistics';
|
||||
const response = await this.$axios.$get(url);
|
||||
commit('setStatistics', { statistics: response.statistics, category: category });
|
||||
|
||||
return response;
|
||||
},
|
||||
|
@ -96,8 +97,12 @@ export const mutations = {
|
|||
setSettings(state, { config }) {
|
||||
state.settings = config;
|
||||
},
|
||||
setStatistics(state, { statistics }) {
|
||||
state.statistics = statistics;
|
||||
setStatistics(state, { statistics, category }) {
|
||||
if (category) {
|
||||
state.statistics[category] = statistics[category];
|
||||
} else {
|
||||
state.statistics = statistics;
|
||||
}
|
||||
},
|
||||
setUsers(state, { users }) {
|
||||
state.users = users;
|
||||
|
|
Loading…
Reference in New Issue