273 lines
8.6 KiB
TypeScript
273 lines
8.6 KiB
TypeScript
import { defineStore } from "pinia";
|
|
import { ref } from "vue";
|
|
import { BannerStateEnum } from "../data/enums/bannerStateEnum";
|
|
import { Composer } from 'vue-i18n';
|
|
|
|
/**
|
|
* Logic of the bubble notifications
|
|
* Includes an i18n object for translation
|
|
*/
|
|
export const useFeedbackStore = defineStore("feedbackStore", {
|
|
state: () => ({
|
|
showBanner: ref(false),
|
|
title: ref(""),
|
|
color: ref(""),
|
|
icon: ref(""),
|
|
$i18n: {},
|
|
|
|
/** Band, Location or concert on URL does not exist, redirect to 404 page */
|
|
notFound: ref(false)
|
|
}),
|
|
|
|
getters: {
|
|
i18n(): Composer {
|
|
return this.$i18n.global as Composer
|
|
}
|
|
},
|
|
|
|
actions: {
|
|
changeBanner(bannerState: BannerStateEnum) {
|
|
// Banner message
|
|
switch (bannerState) {
|
|
////////// System feedback //////////
|
|
|
|
case BannerStateEnum.ERROR: {
|
|
this.title = this.i18n.t('bannerMessages.error'); break;
|
|
}
|
|
|
|
case BannerStateEnum.BASKETPRODUCTADDED: {
|
|
this.title = this.i18n.t('bannerMessages.basketTicketAdded'); break;
|
|
}
|
|
|
|
case BannerStateEnum.BASKETPRODUCTREMOVED: {
|
|
this.title = this.i18n.t("bannerMessages.basketTicketRemoved"); break;
|
|
}
|
|
|
|
|
|
////////// Exercise feedback //////////
|
|
|
|
case BannerStateEnum.EXERCISESOLVED01: {
|
|
this.title = this.i18n.t("bannerMessages.exerciseSolvedNr", [0, 1]); break;
|
|
}
|
|
|
|
case BannerStateEnum.EXERCISESOLVED02: {
|
|
this.title = this.i18n.t("bannerMessages.exerciseSolvedNr", [0, 2]); break;
|
|
}
|
|
|
|
case BannerStateEnum.EXERCISESOLVED11: {
|
|
this.title = this.i18n.t("bannerMessages.exerciseSolvedNr", [1, 1]); break;
|
|
}
|
|
|
|
case BannerStateEnum.EXERCISESOLVED12: {
|
|
this.title = this.i18n.t("bannerMessages.exerciseSolvedNr", [1, 2]); break;
|
|
}
|
|
|
|
case BannerStateEnum.EXERCISESOLVED13: {
|
|
this.title = this.i18n.t("bannerMessages.exerciseSolvedNr", [1, 3]); break;
|
|
}
|
|
|
|
case BannerStateEnum.EXERCISESOLVED21: {
|
|
this.title = this.i18n.t("bannerMessages.exerciseSolvedNr", [2, 1]); break;
|
|
}
|
|
|
|
case BannerStateEnum.EXERCISESOLVED22: {
|
|
this.title = this.i18n.t("bannerMessages.exerciseSolvedNr", [2, 2]); break;
|
|
}
|
|
|
|
case BannerStateEnum.EXERCISESOLVED23: {
|
|
this.title = this.i18n.t("bannerMessages.exerciseSolvedNr", [2, 3]); break;
|
|
}
|
|
|
|
case BannerStateEnum.EXERCISESOLVED31: {
|
|
this.title = this.i18n.t("bannerMessages.exerciseSolvedNr", [3, 1]); break;
|
|
}
|
|
|
|
case BannerStateEnum.EXERCISESOLVED32: {
|
|
this.title = this.i18n.t("bannerMessages.exerciseSolvedNr", [3, 2]); break;
|
|
}
|
|
|
|
case BannerStateEnum.EXERCISESOLVED33: {
|
|
this.title = this.i18n.t("bannerMessages.exerciseSolvedNr", [3, 3]); break;
|
|
}
|
|
|
|
|
|
////////// API Endpoint /api //////////
|
|
|
|
case BannerStateEnum.DATABASERESETSUCCESSFUL: {
|
|
this.title = this.i18n.t('bannerMessages.databaseResetSuccessful'); break;
|
|
}
|
|
|
|
|
|
////////// API Endpoint /accounts //////////
|
|
|
|
case BannerStateEnum.ACCOUNTLOGINSUCCESSFUL: {
|
|
this.title = this.i18n.t('bannerMessages.loginSuccessful'); break;
|
|
}
|
|
|
|
case BannerStateEnum.ACCOUNTLOGINWRONGLOGIN: {
|
|
this.title = this.i18n.t('bannerMessages.wrongLogin'); break;
|
|
}
|
|
|
|
case BannerStateEnum.ACCOUNTLOGINERROR: {
|
|
this.title = this.i18n.t('bannerMessages.error'); break;
|
|
}
|
|
|
|
case BannerStateEnum.ACCOUNTREGISTERSUCCESSFUL: {
|
|
this.title = this.i18n.t("bannerMessages.registerSuccessful"); break;
|
|
}
|
|
|
|
case BannerStateEnum.ACCOUNTREGISTERUSERNAMEINUSE: {
|
|
this.title = this.i18n.t("bannerMessages.usernameInUse"); break;
|
|
}
|
|
|
|
case BannerStateEnum.ACCOUNTUPDATESUCCESSFUL: {
|
|
this.title = this.i18n.t("bannerMessages.accountUpdated"); break;
|
|
}
|
|
|
|
case BannerStateEnum.ACCOUNTLOGOUTSUCCESSFUL: {
|
|
this.title = this.i18n.t('bannerMessages.logoutSuccessful'); break;
|
|
}
|
|
|
|
|
|
////////// API Endpoint /orders //////////
|
|
|
|
case BannerStateEnum.ORDERPLACESUCCESSFUL: {
|
|
this.title = this.i18n.t('bannerMessages.orderPlaceSuccessfull'); break;
|
|
}
|
|
|
|
|
|
////////// API Endpoint /bands //////////
|
|
|
|
case BannerStateEnum.BANDDELETEERROR: {
|
|
this.title = this.i18n.t('bannerMessages.bandDeleteError'); break;
|
|
}
|
|
|
|
case BannerStateEnum.BANDDELETESUCCESSFUL: {
|
|
this.title = this.i18n.t('bannerMessages.bandDeleteSuccessful'); break;
|
|
}
|
|
|
|
case BannerStateEnum.BANDSAVEDERROR: {
|
|
this.title = this.i18n.t('bannerMessages.bandSavedError'); break;
|
|
}
|
|
|
|
case BannerStateEnum.BANDSAVEDSUCCESSFUL: {
|
|
this.title = this.i18n.t('bannerMessages.bandSavedSuccessful'); break;
|
|
}
|
|
}
|
|
|
|
|
|
// Banner color
|
|
|
|
switch (bannerState) {
|
|
case BannerStateEnum.ERROR:
|
|
case BannerStateEnum.ACCOUNTLOGINERROR:
|
|
case BannerStateEnum.ACCOUNTLOGINWRONGLOGIN:
|
|
case BannerStateEnum.ACCOUNTREGISTERERROR:
|
|
case BannerStateEnum.ACCOUNTREGISTERUSERNAMEINUSE:
|
|
case BannerStateEnum.BANDDELETEERROR:
|
|
case BannerStateEnum.BANDSAVEDERROR:
|
|
this.color = "red"
|
|
break;
|
|
|
|
case BannerStateEnum.BASKETPRODUCTADDED:
|
|
case BannerStateEnum.DATABASERESETSUCCESSFUL:
|
|
case BannerStateEnum.ACCOUNTLOGINSUCCESSFUL:
|
|
case BannerStateEnum.ACCOUNTREGISTERSUCCESSFUL:
|
|
case BannerStateEnum.ACCOUNTUPDATESUCCESSFUL:
|
|
case BannerStateEnum.ACCOUNTLOGOUTSUCCESSFUL:
|
|
case BannerStateEnum.ORDERPLACESUCCESSFUL:
|
|
case BannerStateEnum.BANDDELETESUCCESSFUL:
|
|
case BannerStateEnum.BANDSAVEDSUCCESSFUL:
|
|
case BannerStateEnum.EXERCISEPROGRESSRESETSUCCESSFUL:
|
|
this.color = "green"
|
|
break;
|
|
|
|
case BannerStateEnum.EXERCISESOLVED01:
|
|
case BannerStateEnum.EXERCISESOLVED02:
|
|
case BannerStateEnum.EXERCISESOLVED11:
|
|
case BannerStateEnum.EXERCISESOLVED12:
|
|
case BannerStateEnum.EXERCISESOLVED13:
|
|
case BannerStateEnum.EXERCISESOLVED21:
|
|
case BannerStateEnum.EXERCISESOLVED22:
|
|
case BannerStateEnum.EXERCISESOLVED23:
|
|
case BannerStateEnum.EXERCISESOLVED31:
|
|
case BannerStateEnum.EXERCISESOLVED32:
|
|
case BannerStateEnum.EXERCISESOLVED33:
|
|
this.color = "purple"
|
|
break;
|
|
|
|
case BannerStateEnum.BASKETPRODUCTREMOVED:
|
|
this.color = "blue"
|
|
}
|
|
|
|
|
|
// Banner icon
|
|
|
|
switch (bannerState) {
|
|
case BannerStateEnum.ERROR:
|
|
this.icon = "mdi-alert-circle"
|
|
break;
|
|
|
|
case BannerStateEnum.ACCOUNTLOGINERROR:
|
|
case BannerStateEnum.ACCOUNTLOGINWRONGLOGIN:
|
|
case BannerStateEnum.ACCOUNTREGISTERERROR:
|
|
case BannerStateEnum.ACCOUNTREGISTERUSERNAMEINUSE:
|
|
this.icon = "mdi-account"
|
|
break;
|
|
|
|
case BannerStateEnum.EXERCISESOLVED01:
|
|
case BannerStateEnum.EXERCISESOLVED02:
|
|
case BannerStateEnum.EXERCISESOLVED11:
|
|
case BannerStateEnum.EXERCISESOLVED12:
|
|
case BannerStateEnum.EXERCISESOLVED13:
|
|
case BannerStateEnum.EXERCISESOLVED21:
|
|
case BannerStateEnum.EXERCISESOLVED22:
|
|
case BannerStateEnum.EXERCISESOLVED23:
|
|
case BannerStateEnum.EXERCISESOLVED31:
|
|
case BannerStateEnum.EXERCISESOLVED32:
|
|
case BannerStateEnum.EXERCISESOLVED33:
|
|
this.icon = "mdi-check-circle-outline"
|
|
break;
|
|
|
|
|
|
case BannerStateEnum.DATABASERESETSUCCESSFUL:
|
|
this.icon = "mdi-database-refresh"
|
|
break;
|
|
|
|
case BannerStateEnum.BASKETPRODUCTADDED:
|
|
case BannerStateEnum.BASKETPRODUCTREMOVED:
|
|
this.icon = "mdi-basket"
|
|
break;
|
|
|
|
case BannerStateEnum.ORDERPLACESUCCESSFUL:
|
|
this.icon = "mdi-basket-check"
|
|
break;
|
|
|
|
case BannerStateEnum.ACCOUNTLOGOUTSUCCESSFUL:
|
|
this.icon = "mdi-logout"
|
|
break;
|
|
|
|
case BannerStateEnum.ACCOUNTLOGINSUCCESSFUL:
|
|
this.icon = "mdi-login"
|
|
break;
|
|
|
|
case BannerStateEnum.ACCOUNTREGISTERSUCCESSFUL:
|
|
this.icon = "mdi-account-plus"
|
|
break;
|
|
|
|
case BannerStateEnum.ACCOUNTUPDATESUCCESSFUL:
|
|
this.icon = "mdi-account-reactivate"
|
|
break;
|
|
|
|
case BannerStateEnum.BANDDELETEERROR:
|
|
case BannerStateEnum.BANDDELETESUCCESSFUL:
|
|
case BannerStateEnum.BANDSAVEDERROR:
|
|
case BannerStateEnum.BANDSAVEDSUCCESSFUL:
|
|
this.icon = "mdi-guitar-electric"
|
|
break;
|
|
}
|
|
|
|
this.showBanner = true
|
|
}
|
|
}
|
|
}) |