2020-12-24 16:37:38 -09:00
|
|
|
<template>
|
2021-01-17 22:22:54 -09:00
|
|
|
<v-card :loading="backupLoading" class="mt-3">
|
|
|
|
<v-card-title class="headline">
|
|
|
|
{{$t('settings.backup-and-exports')}}
|
|
|
|
</v-card-title>
|
2021-01-08 19:57:28 -09:00
|
|
|
<v-divider></v-divider>
|
2021-01-03 12:09:22 -09:00
|
|
|
|
2020-12-24 16:37:38 -09:00
|
|
|
<v-card-text>
|
|
|
|
<p>
|
2021-01-17 22:22:54 -09:00
|
|
|
{{$t('settings.backup-info')}}
|
2020-12-24 16:37:38 -09:00
|
|
|
</p>
|
|
|
|
|
|
|
|
<v-row dense align="center">
|
|
|
|
<v-col dense cols="12" sm="12" md="4">
|
2021-01-17 22:22:54 -09:00
|
|
|
<v-text-field v-model="backupTag" :label="$t('settings.backup-tag')"></v-text-field>
|
2020-12-24 16:37:38 -09:00
|
|
|
</v-col>
|
|
|
|
<v-col cols="12" sm="12" md="3">
|
|
|
|
<v-combobox
|
|
|
|
auto-select-first
|
2021-01-17 22:22:54 -09:00
|
|
|
:label="$t('settings.markdown-template')"
|
2020-12-24 16:37:38 -09:00
|
|
|
:items="availableTemplates"
|
|
|
|
v-model="selectedTemplate"
|
|
|
|
></v-combobox>
|
2021-01-09 13:13:16 -09:00
|
|
|
</v-col>
|
2020-12-24 16:37:38 -09:00
|
|
|
<v-col dense cols="12" sm="12" md="2">
|
2021-01-17 22:22:54 -09:00
|
|
|
<v-btn block text color="accent" @click="createBackup" width="165">
|
|
|
|
{{$t('settings.backup-recipes')}}
|
2020-12-24 16:37:38 -09:00
|
|
|
</v-btn>
|
|
|
|
</v-col>
|
|
|
|
</v-row>
|
2021-01-17 22:22:54 -09:00
|
|
|
<BackupCard
|
|
|
|
@loading="backupLoading = true"
|
|
|
|
@finished="processFinished"
|
|
|
|
:backups="availableBackups"
|
|
|
|
/>
|
2021-01-09 12:56:20 -09:00
|
|
|
<SuccessFailureAlert
|
|
|
|
success-header="Successfully Imported"
|
|
|
|
:success="successfulImports"
|
|
|
|
failed-header="Failed Imports"
|
|
|
|
:failed="failedImports"
|
|
|
|
/>
|
2020-12-24 16:37:38 -09:00
|
|
|
</v-card-text>
|
|
|
|
</v-card>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
2021-01-08 17:09:03 -09:00
|
|
|
import api from "../../../api";
|
2021-01-09 12:56:20 -09:00
|
|
|
import SuccessFailureAlert from "../../UI/SuccessFailureAlert";
|
2021-01-17 22:22:54 -09:00
|
|
|
import BackupCard from "./BackupCard";
|
2021-01-08 17:09:03 -09:00
|
|
|
|
2020-12-24 16:37:38 -09:00
|
|
|
export default {
|
2021-01-09 12:56:20 -09:00
|
|
|
components: {
|
|
|
|
SuccessFailureAlert,
|
2021-01-17 22:22:54 -09:00
|
|
|
BackupCard,
|
2021-01-09 12:56:20 -09:00
|
|
|
},
|
2020-12-24 16:37:38 -09:00
|
|
|
data() {
|
|
|
|
return {
|
2021-01-09 12:56:20 -09:00
|
|
|
failedImports: [],
|
|
|
|
successfulImports: [],
|
2020-12-24 16:37:38 -09:00
|
|
|
backupLoading: false,
|
|
|
|
backupTag: null,
|
|
|
|
selectedBackup: null,
|
|
|
|
selectedTemplate: null,
|
|
|
|
availableBackups: [],
|
|
|
|
availableTemplates: [],
|
|
|
|
};
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
this.getAvailableBackups();
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
async getAvailableBackups() {
|
|
|
|
let response = await api.backups.requestAvailable();
|
|
|
|
this.availableBackups = response.imports;
|
|
|
|
this.availableTemplates = response.templates;
|
|
|
|
},
|
|
|
|
deleteBackup() {
|
|
|
|
if (this.$refs.form.validate()) {
|
|
|
|
this.backupLoading = true;
|
|
|
|
|
|
|
|
api.backups.delete(this.selectedBackup);
|
|
|
|
this.getAvailableBackups();
|
|
|
|
|
|
|
|
this.selectedBackup = null;
|
|
|
|
this.backupLoading = false;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
async createBackup() {
|
|
|
|
this.backupLoading = true;
|
|
|
|
|
2021-01-17 22:22:54 -09:00
|
|
|
let response = await api.backups.create(this.backupTag, this.templates);
|
2020-12-24 16:37:38 -09:00
|
|
|
|
|
|
|
if (response.status == 201) {
|
|
|
|
this.selectedBackup = null;
|
|
|
|
this.getAvailableBackups();
|
|
|
|
this.backupLoading = false;
|
|
|
|
}
|
|
|
|
},
|
2021-01-17 22:22:54 -09:00
|
|
|
processFinished(successful = null, failed = null) {
|
|
|
|
this.getAvailableBackups();
|
|
|
|
this.backupLoading = false;
|
|
|
|
this.successfulImports = successful;
|
|
|
|
this.failedImports = failed;
|
|
|
|
},
|
2020-12-24 16:37:38 -09:00
|
|
|
},
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style>
|
|
|
|
</style>
|