Loading feedback with indeterminate circle

This commit is contained in:
2024-10-03 20:19:03 +02:00
parent c611cc04fc
commit ed4fa90f75
4 changed files with 21 additions and 7 deletions

View File

@@ -29,9 +29,9 @@ const path = require('path')
app.use('/static', express.static(path.join(__dirname, 'images')))
// Add delay for more realistic response times
// app.use((req, res, next) => {
// setTimeout(next, Math.floor((Math.random () * 4000) + 100))
// })
app.use((req, res, next) => {
setTimeout(next, Math.floor((Math.random () * 4000) + 100))
})
// Routes
app.use("/api", api)

View File

@@ -9,6 +9,7 @@ export const useFeedbackStore = defineStore("feedbackStore", {
title: ref(""),
color: ref(""),
icon: ref(""),
fetchDataFromServerInProgress: ref(false),
$i18n: {}
}),

View File

@@ -6,24 +6,29 @@ import { fetchAllCities } from "../api/cityApi";
import { CityModel } from "../models/locations/cityModel";
import { GenreModel } from "../models/acts/genreModel";
import { fetchAllGenres } from "../api/genreApi";
import { useFeedbackStore } from "./feedbackStore";
export const useShoppingStore = defineStore("shoppingStore", {
state: () => ({
events: ref<Array<EventModel>>([ new EventModel() ]),
cities: ref<Array<CityModel>>([ new CityModel() ]),
genres: ref<Array<GenreModel>>([ new GenreModel() ]),
events: ref<Array<EventModel>>([]),
cities: ref<Array<CityModel>>([]),
genres: ref<Array<GenreModel>>([]),
cityFilterName: ref<String>(),
genreFilterName: ref<String>()
}),
actions: {
async getEvents() {
const feedbackStore = useFeedbackStore()
feedbackStore.fetchDataFromServerInProgress = true
await fetchEvents(
this.cityFilterName != null ? this.cityFilterName : "",
this.genreFilterName != null ? this.genreFilterName : ""
)
.then(result => {
this.events = result.data
feedbackStore.fetchDataFromServerInProgress = false
})
},

View File

@@ -4,9 +4,11 @@ import { createDateRangeString, lowestTicketPrice } from '@/scripts/concertScrip
import filterBar from './filterBar.vue';
import { useRouter } from 'vue-router';
import { useShoppingStore } from '@/data/stores/shoppingStore';
import { useFeedbackStore } from '@/data/stores/feedbackStore';
const router = useRouter()
const shoppingStore = useShoppingStore()
const feedbackStore = useFeedbackStore()
shoppingStore.getEvents()
</script>
@@ -23,8 +25,14 @@ shoppingStore.getEvents()
</v-col>
</v-row>
<v-row v-if="feedbackStore.fetchDataFromServerInProgress">
<v-col class="text-center">
<v-progress-circular indeterminate :size="128" :width="12" color="primary" />
</v-col>
</v-row>
<v-row
v-if="shoppingStore.events.length > 0"
v-else-if="shoppingStore.events.length > 0"
v-for="event of shoppingStore.events"
>
<v-col>