Added download button to history page

This commit is contained in:
Maximilian Giller 2021-01-06 22:20:29 +01:00
parent 931a16aa54
commit e1154ec33b
2 changed files with 42 additions and 4 deletions

View file

@ -108,6 +108,22 @@ export const helperService = {
);
},
dateAsFilenameString(date) {
return (
date.getFullYear() +
"-" +
(date.getMonth() + 1) +
"-" +
date.getDate() +
"_" +
date.getHours() +
"-" +
date.getMinutes() +
"-" +
date.getSeconds()
);
},
getDurationTimestamp(totalSeconds) {
totalSeconds = Math.ceil(totalSeconds);
var days = Math.floor(totalSeconds / 86400);

View file

@ -1,10 +1,13 @@
<template>
<LayoutNavbarPrivate title="History">
<section>
<div class="center" v-if="working">
<b-spinner></b-spinner>
<div class="center" v-if="working">
<b-spinner></b-spinner>
</div>
<section v-if="!working">
<div class="controls">
<b-button :download="downloadFilename" :href="'data:text/plain;charset=utf-8,' + encodeURIComponent(fileOutput)" variant="outline-secondary">Download data</b-button>
</div>
<JugglRecordsList :records="finishedRecords" v-if="!working" />
<JugglRecordsList :records="finishedRecords" />
</section>
</LayoutNavbarPrivate>
</template>
@ -12,6 +15,7 @@
<script>
import LayoutNavbarPrivate from "@/components/layout/LayoutNavbarPrivate";
import JugglRecordsList from "@/components/juggl/JugglRecordsList";
import { helperService } from "@/services/helper.service.js";
import store from "@/store";
export default {
@ -28,9 +32,23 @@ export default {
computed: {
finishedRecords: () => {
return store.getters.finishedRecords;
},
downloadFilename: function() {
return "juggl_data_" + helperService.dateAsFilenameString(new Date()) + ".json";
},
fileOutput: function() {
var content = {
user: store.getters.user,
tags: store.getters.tags,
projects: store.getters.projects,
records: store.getters.records
};
return JSON.stringify(content);
}
},
created: function() {
store.dispatch("loadTags");
store.dispatch("loadProjects");
store
.dispatch("loadRecords", { limit: 0, finished: true })
@ -51,6 +69,10 @@ export default {
.center
text-align: center
.controls
margin-bottom: 1rem
text-align: right
section
margin-bottom: 4rem
</style>