Added update and delete functionality to article with cascade for variants.

This commit is contained in:
2026-01-26 16:51:29 +01:00
parent b562c26a82
commit 7879f69255
7 changed files with 266 additions and 19 deletions
+44 -8
View File
@@ -18,6 +18,7 @@ interface State {
// Article
article: Article | null,
articleEdit: Article | null,
origins: Array<Origin>,
}
@@ -36,6 +37,7 @@ export const useLabelEditorStore = defineStore('label_editor_store', {
// Article
article: null,
articleEdit: null,
origins: [
Origin.EU,
@@ -113,10 +115,13 @@ export const useLabelEditorStore = defineStore('label_editor_store', {
method: 'GET',
});
this.article = article;
this.addNotification(false, 'Artikel geladen: ' + this.article.name);
this.article = JSON.parse(JSON.stringify(article));
this.articleEdit = JSON.parse(JSON.stringify(article));
this.addNotification(false, 'Artikel geladen: ' + this.article!.name);
} catch {
this.article = null;
this.articleEdit = null;
this.addNotification(true, 'Fehler beim laden des Artikel. ID:' + articleID);
}
},
@@ -139,12 +144,15 @@ export const useLabelEditorStore = defineStore('label_editor_store', {
async createArticle(article: Article) {
try {
this.article = await $fetch<Article>(this.config.public.url + '/article', {
let createdArticle = await $fetch<Article>(this.config.public.url + '/article', {
method: 'POST',
body: JSON.stringify(article),
});
this.addNotification(false, 'Artikel "' + article.name + '" erstellt');
this.article = JSON.parse(JSON.stringify(createdArticle));
this.articleEdit = JSON.parse(JSON.stringify(createdArticle));
this.addNotification(false, 'Artikel "' + createdArticle.name + '" erstellt');
} catch {
this.addNotification(true, 'Fehler beim erstellen des Artikel: ' + article.name);
}
@@ -152,21 +160,49 @@ export const useLabelEditorStore = defineStore('label_editor_store', {
async updateArticle(article: Article) {
if (this.article != null) {
console.log(article);
try {
this.article = await $fetch<Article>(this.config.public.url + '/article/update', {
let updatedArticle = await $fetch<Article>(this.config.public.url + '/article/' + article.id, {
method: 'POST',
body: JSON.stringify(this.article),
body: JSON.stringify(article),
});
this.addNotification(false, 'Artikel "' + this.article.name + '" aktualisiert');
this.article.name = updatedArticle.name;
this.article.bio = updatedArticle.bio;
this.article.origin = updatedArticle.origin;
this.article.description = updatedArticle.description;
this.article.ingredients = updatedArticle.ingredients;
this.addNotification(false, 'Artikel "' + article.name + '" aktualisiert');
} catch {
this.addNotification(true, 'Fehler beim aktualisieren des Artikel: ' + this.article.name);
this.addNotification(true, 'Fehler beim aktualisieren des Artikel: ' + article.name);
}
} else {
this.addNotification(true, 'Es ist kein Artikel ausgewählt');
}
},
async deleteCurrentArticle() {
if(this.article != null) {
try {
await $fetch(this.config.public.url + '/article/' + this.article.id, {
method: 'DELETE',
});
this.article = null;
this.addNotification(false, 'Variante gelöscht.');
} catch {
this.addNotification(true, 'Fehler beim löschen der Variante.');
}
} else {
this.addNotification(true, 'Kann Variante nicht gelöscht werden. Es ist kein Artikel ausgewählt.');
}
},
// Variant
async addVariant(variant: Variant) {
if(this.article != null) {