Loading feedback with indeterminate circle
This commit is contained in:
@@ -29,9 +29,9 @@ const path = require('path')
|
|||||||
app.use('/static', express.static(path.join(__dirname, 'images')))
|
app.use('/static', express.static(path.join(__dirname, 'images')))
|
||||||
|
|
||||||
// Add delay for more realistic response times
|
// Add delay for more realistic response times
|
||||||
// app.use((req, res, next) => {
|
app.use((req, res, next) => {
|
||||||
// setTimeout(next, Math.floor((Math.random () * 4000) + 100))
|
setTimeout(next, Math.floor((Math.random () * 4000) + 100))
|
||||||
// })
|
})
|
||||||
|
|
||||||
// Routes
|
// Routes
|
||||||
app.use("/api", api)
|
app.use("/api", api)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ export const useFeedbackStore = defineStore("feedbackStore", {
|
|||||||
title: ref(""),
|
title: ref(""),
|
||||||
color: ref(""),
|
color: ref(""),
|
||||||
icon: ref(""),
|
icon: ref(""),
|
||||||
|
fetchDataFromServerInProgress: ref(false),
|
||||||
$i18n: {}
|
$i18n: {}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
|||||||
@@ -6,24 +6,29 @@ import { fetchAllCities } from "../api/cityApi";
|
|||||||
import { CityModel } from "../models/locations/cityModel";
|
import { CityModel } from "../models/locations/cityModel";
|
||||||
import { GenreModel } from "../models/acts/genreModel";
|
import { GenreModel } from "../models/acts/genreModel";
|
||||||
import { fetchAllGenres } from "../api/genreApi";
|
import { fetchAllGenres } from "../api/genreApi";
|
||||||
|
import { useFeedbackStore } from "./feedbackStore";
|
||||||
|
|
||||||
export const useShoppingStore = defineStore("shoppingStore", {
|
export const useShoppingStore = defineStore("shoppingStore", {
|
||||||
state: () => ({
|
state: () => ({
|
||||||
events: ref<Array<EventModel>>([ new EventModel() ]),
|
events: ref<Array<EventModel>>([]),
|
||||||
cities: ref<Array<CityModel>>([ new CityModel() ]),
|
cities: ref<Array<CityModel>>([]),
|
||||||
genres: ref<Array<GenreModel>>([ new GenreModel() ]),
|
genres: ref<Array<GenreModel>>([]),
|
||||||
cityFilterName: ref<String>(),
|
cityFilterName: ref<String>(),
|
||||||
genreFilterName: ref<String>()
|
genreFilterName: ref<String>()
|
||||||
}),
|
}),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
async getEvents() {
|
async getEvents() {
|
||||||
|
const feedbackStore = useFeedbackStore()
|
||||||
|
feedbackStore.fetchDataFromServerInProgress = true
|
||||||
|
|
||||||
await fetchEvents(
|
await fetchEvents(
|
||||||
this.cityFilterName != null ? this.cityFilterName : "",
|
this.cityFilterName != null ? this.cityFilterName : "",
|
||||||
this.genreFilterName != null ? this.genreFilterName : ""
|
this.genreFilterName != null ? this.genreFilterName : ""
|
||||||
)
|
)
|
||||||
.then(result => {
|
.then(result => {
|
||||||
this.events = result.data
|
this.events = result.data
|
||||||
|
feedbackStore.fetchDataFromServerInProgress = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,11 @@ import { createDateRangeString, lowestTicketPrice } from '@/scripts/concertScrip
|
|||||||
import filterBar from './filterBar.vue';
|
import filterBar from './filterBar.vue';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import { useShoppingStore } from '@/data/stores/shoppingStore';
|
import { useShoppingStore } from '@/data/stores/shoppingStore';
|
||||||
|
import { useFeedbackStore } from '@/data/stores/feedbackStore';
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const shoppingStore = useShoppingStore()
|
const shoppingStore = useShoppingStore()
|
||||||
|
const feedbackStore = useFeedbackStore()
|
||||||
|
|
||||||
shoppingStore.getEvents()
|
shoppingStore.getEvents()
|
||||||
</script>
|
</script>
|
||||||
@@ -23,8 +25,14 @@ shoppingStore.getEvents()
|
|||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</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-row
|
||||||
v-if="shoppingStore.events.length > 0"
|
v-else-if="shoppingStore.events.length > 0"
|
||||||
v-for="event of shoppingStore.events"
|
v-for="event of shoppingStore.events"
|
||||||
>
|
>
|
||||||
<v-col>
|
<v-col>
|
||||||
|
|||||||
Reference in New Issue
Block a user