mirror of
https://github.com/hay-kot/mealie.git
synced 2025-07-31 04:00:21 -07:00
* Translate missing items on About page * Localize import summary dialog * Make site menu translation reactive * Localize import options * Include semi colon in string * Move API texts to frontend + better status codes * Provide feedback to user when no meal is planned * Fix API tests after latest rework * Add warning for API changes in changelog * Refactor API texts handling * Refactor API texts handling #2 * Better API feedback * Rearrange strings hierarchy * Add messages upon recipe updated * Fix 'recipe effected' typo * Remove snackbar usage in backend * Translate toolbox * Provide feedback for tags CRUD * Fix messed up merge * Translate sign-up form * Better feedback for sign-up CRUD * Refactor log-in API texts handling * No error message when user is not authenticated * Remove unimportant console log
89 lines
No EOL
1.9 KiB
Vue
89 lines
No EOL
1.9 KiB
Vue
<template>
|
|
<div>
|
|
<ImportDialog
|
|
:name="selectedName"
|
|
:date="selectedDate"
|
|
ref="import_dialog"
|
|
@import="importBackup"
|
|
@delete="deleteBackup"
|
|
/>
|
|
<v-row>
|
|
<v-col
|
|
:cols="12"
|
|
:sm="6"
|
|
:md="6"
|
|
:lg="4"
|
|
:xl="4"
|
|
v-for="backup in backups"
|
|
:key="backup.name"
|
|
>
|
|
<v-card hover outlined @click="openDialog(backup)">
|
|
<v-card-text>
|
|
<v-row align="center">
|
|
<v-col cols="2">
|
|
<v-icon large color="primary">mdi-backup-restore</v-icon>
|
|
</v-col>
|
|
<v-col cols="10">
|
|
<div class="text-truncate">
|
|
<strong>{{ backup.name }}</strong>
|
|
</div>
|
|
<div class="text-truncate">{{ $d(new Date(backup.date), "medium") }}</div>
|
|
</v-col>
|
|
</v-row>
|
|
</v-card-text>
|
|
</v-card>
|
|
</v-col>
|
|
</v-row>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import ImportDialog from "./ImportDialog";
|
|
import { api } from "@/api";
|
|
export default {
|
|
props: {
|
|
backups: Array,
|
|
},
|
|
components: {
|
|
ImportDialog,
|
|
},
|
|
data() {
|
|
return {
|
|
selectedName: "",
|
|
selectedDate: "",
|
|
loading: false,
|
|
};
|
|
},
|
|
methods: {
|
|
openDialog(backup) {
|
|
this.selectedDate = backup.date;
|
|
this.selectedName = backup.name;
|
|
this.$refs.import_dialog.open();
|
|
},
|
|
async importBackup(data) {
|
|
this.$emit("loading");
|
|
const response = await api.backups.import(data.name, data);
|
|
if(response) {
|
|
let importData = response.data;
|
|
this.$emit("finished", importData);
|
|
} else {
|
|
this.$emit("finished");
|
|
}
|
|
|
|
},
|
|
async deleteBackup(data) {
|
|
this.$emit("loading");
|
|
|
|
if (await api.backups.delete(data.name)) {
|
|
this.selectedBackup = null;
|
|
}
|
|
this.backupLoading = false;
|
|
|
|
this.$emit("finished");
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style>
|
|
</style> |