Improve band page for smaller screens
This commit is contained in:
93
src/App.vue
93
src/App.vue
@@ -1,50 +1,63 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useTheme } from 'vuetify/lib/framework.mjs';
|
import { useTheme } from "vuetify/lib/framework.mjs";
|
||||||
import { i18n } from './plugins/i18n';
|
import { i18n } from "./plugins/i18n";
|
||||||
import { ref, watch } from 'vue';
|
import { ref, watch } from "vue";
|
||||||
import { usePreferencesStore } from './stores/preferences.store';
|
import { usePreferencesStore } from "./stores/preferences.store";
|
||||||
import { useFeedbackStore } from './stores/feedback.store';
|
import { useFeedbackStore } from "./stores/feedback.store";
|
||||||
import companyFooter from './components/navigation/companyFooter.vue';
|
import companyFooter from "./components/navigation/companyFooter.vue";
|
||||||
import urlBar from './components/navigation/urlBar.vue';
|
import urlBar from "./components/navigation/urlBar.vue";
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from "vue-router";
|
||||||
import NavigationBar from './components/navigation/navigationBar.vue';
|
import NavigationBar from "./components/navigation/navigationBar.vue";
|
||||||
import { BannerStateEnum } from './data/enums/bannerStateEnum';
|
import { BannerStateEnum } from "./data/enums/bannerStateEnum";
|
||||||
|
|
||||||
const preferencesStore = usePreferencesStore()
|
const preferencesStore = usePreferencesStore();
|
||||||
const feedbackStore = useFeedbackStore()
|
const feedbackStore = useFeedbackStore();
|
||||||
const theme = useTheme()
|
const theme = useTheme();
|
||||||
const router = useRouter()
|
const router = useRouter();
|
||||||
|
|
||||||
theme.global.name.value = preferencesStore.theme
|
theme.global.name.value = preferencesStore.theme;
|
||||||
|
|
||||||
// Global watcher
|
// Global watcher
|
||||||
// Watch for language change
|
// Watch for language change
|
||||||
watch(() => preferencesStore.language, () => {
|
watch(
|
||||||
i18n.global.locale = preferencesStore.language
|
() => preferencesStore.language,
|
||||||
}, { immediate: true })
|
() => {
|
||||||
|
i18n.global.locale = preferencesStore.language;
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
|
|
||||||
// Watch for theme change
|
// Watch for theme change
|
||||||
watch(() => preferencesStore.theme, () => {
|
watch(
|
||||||
theme.global.name.value = preferencesStore.theme
|
() => preferencesStore.theme,
|
||||||
})
|
() => {
|
||||||
|
theme.global.name.value = preferencesStore.theme;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
// Watch for 404 page directions
|
// Watch for 404 page directions
|
||||||
watch(() => feedbackStore.notFound, () => {
|
watch(
|
||||||
|
() => feedbackStore.notFound,
|
||||||
|
() => {
|
||||||
if (feedbackStore.notFound) {
|
if (feedbackStore.notFound) {
|
||||||
feedbackStore.notFound = false
|
feedbackStore.notFound = false;
|
||||||
router.push("/404")
|
router.push("/404");
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
);
|
||||||
|
|
||||||
// Watch for snackbar disappear
|
// Watch for snackbar disappear
|
||||||
watch(() => feedbackStore.showSnackbar, () => {
|
watch(
|
||||||
|
() => feedbackStore.showSnackbar,
|
||||||
|
() => {
|
||||||
if (!feedbackStore.showSnackbar) {
|
if (!feedbackStore.showSnackbar) {
|
||||||
feedbackStore.snackbars = []
|
feedbackStore.snackbars = [];
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
);
|
||||||
|
|
||||||
function calcMargin(i) {
|
function calcMargin(i) {
|
||||||
return (i * 60) + 10 + 'px'
|
return i * 60 + 10 + "px";
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -56,7 +69,6 @@ function calcMargin(i) {
|
|||||||
<!-- Navigaion bar of page -->
|
<!-- Navigaion bar of page -->
|
||||||
<navigation-bar />
|
<navigation-bar />
|
||||||
|
|
||||||
|
|
||||||
<v-main>
|
<v-main>
|
||||||
<!-- Snackbar in the top right corner for user feedback -->
|
<!-- Snackbar in the top right corner for user feedback -->
|
||||||
<v-snackbar
|
<v-snackbar
|
||||||
@@ -75,21 +87,18 @@ function calcMargin(i) {
|
|||||||
</v-snackbar>
|
</v-snackbar>
|
||||||
|
|
||||||
<!-- Here changes the router the content -->
|
<!-- Here changes the router the content -->
|
||||||
<v-container max-width="1400" min-height="1000" class="py-0" height="100%">
|
<v-container
|
||||||
|
max-width="1400"
|
||||||
|
min-height="1000"
|
||||||
|
class="py-0 px-0"
|
||||||
|
height="100%"
|
||||||
|
>
|
||||||
<v-sheet color="sheet" height="100%">
|
<v-sheet color="sheet" height="100%">
|
||||||
<router-view></router-view>
|
<router-view></router-view>
|
||||||
</v-sheet>
|
</v-sheet>
|
||||||
|
|
||||||
</v-container>
|
</v-container>
|
||||||
|
|
||||||
<v-btn
|
<v-btn fab dark fixed bottom right color="primary">
|
||||||
fab
|
|
||||||
dark
|
|
||||||
fixed
|
|
||||||
bottom
|
|
||||||
right
|
|
||||||
color="primary"
|
|
||||||
>
|
|
||||||
<v-icon>keyboard_arrow_up</v-icon>
|
<v-icon>keyboard_arrow_up</v-icon>
|
||||||
</v-btn>
|
</v-btn>
|
||||||
|
|
||||||
@@ -104,8 +113,8 @@ function calcMargin(i) {
|
|||||||
location="bottom right"
|
location="bottom right"
|
||||||
class="pa-3 mb-12 mr-n16 text-center text-h5"
|
class="pa-3 mb-12 mr-n16 text-center text-h5"
|
||||||
width="300"
|
width="300"
|
||||||
style="rotate: 315deg; z-index: 1008;"
|
style="rotate: 315deg; z-index: 1008"
|
||||||
>
|
>
|
||||||
{{ $t('misc.testEnvironment') }}
|
{{ $t("misc.testEnvironment") }}
|
||||||
</v-sheet>
|
</v-sheet>
|
||||||
</template>
|
</template>
|
||||||
@@ -50,7 +50,7 @@ defineProps({
|
|||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
|
|
||||||
<v-col cols="8">
|
<v-col cols="12" md="10">
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<v-skeleton-loader
|
<v-skeleton-loader
|
||||||
type="heading"
|
type="heading"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ const bandStore = useBandStore()
|
|||||||
<v-row>
|
<v-row>
|
||||||
<v-spacer />
|
<v-spacer />
|
||||||
|
|
||||||
<v-col v-for="member of bandStore.band.members" cols="6" md="3">
|
<v-col v-for="member of bandStore.band.members" cols="12" md="3">
|
||||||
<card-with-top-image
|
<card-with-top-image
|
||||||
:title="member.name"
|
:title="member.name"
|
||||||
:image=" member.image"
|
:image=" member.image"
|
||||||
@@ -26,7 +26,7 @@ defineProps({
|
|||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-col>
|
<v-col cols="12" md="6">
|
||||||
<div class="d-flex align-center justify-center flex-column" style="height: 100%;">
|
<div class="d-flex align-center justify-center flex-column" style="height: 100%;">
|
||||||
<div class="text-h2 mt-5">
|
<div class="text-h2 mt-5">
|
||||||
{{ rating.toFixed(1) }}
|
{{ rating.toFixed(1) }}
|
||||||
@@ -45,7 +45,7 @@ defineProps({
|
|||||||
</div>
|
</div>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
<v-col>
|
<v-col cols="12" md="6">
|
||||||
<v-list style="background-color: transparent;">
|
<v-list style="background-color: transparent;">
|
||||||
<v-list-item
|
<v-list-item
|
||||||
v-for="ratingValue in ratings"
|
v-for="ratingValue in ratings"
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import ratingSection from './ratingSection.vue';
|
import ratingSection from './components/ratingSection.vue';
|
||||||
import bandMemberSection from './bandMemberSection.vue';
|
import bandMemberSection from './components/bandMemberSection.vue';
|
||||||
import gallerySection from './gallerySection.vue';
|
import gallerySection from './components/gallerySection.vue';
|
||||||
import concertSection from './concertSection.vue';
|
import concertSection from './components/concertSection.vue';
|
||||||
import heroImage from '@/components/pageParts/heroImage.vue';
|
import heroImage from '@/components/pageParts/heroImage.vue';
|
||||||
import { useBandStore } from '@/stores/band.store';
|
import { useBandStore } from '@/stores/band.store';
|
||||||
import { onMounted, watch } from 'vue';
|
import { onMounted, watch } from 'vue';
|
||||||
@@ -38,7 +38,7 @@ watch(() => router.currentRoute.value.params.name, () => {
|
|||||||
<v-row>
|
<v-row>
|
||||||
<v-spacer />
|
<v-spacer />
|
||||||
|
|
||||||
<v-col cols="10">
|
<v-col cols="12" md="10">
|
||||||
<concert-section />
|
<concert-section />
|
||||||
|
|
||||||
<band-member-section />
|
<band-member-section />
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ function generateExerciseKey() {
|
|||||||
<!-- Exercise item -->
|
<!-- Exercise item -->
|
||||||
<v-timeline-item
|
<v-timeline-item
|
||||||
v-if="exercise.available"
|
v-if="exercise.available"
|
||||||
:dot-color="exercise.solved ? 'green' : 'primary'"
|
:dot-color="exercise.solved ? 'green-darken-4' : 'primary'"
|
||||||
:icon="exercise.solved ? 'mdi-check' : 'mdi-pencil'"
|
:icon="exercise.solved ? 'mdi-check' : 'mdi-pencil'"
|
||||||
>
|
>
|
||||||
<!-- Right side -->
|
<!-- Right side -->
|
||||||
@@ -115,7 +115,7 @@ function generateExerciseKey() {
|
|||||||
exercise.exerciseNr,
|
exercise.exerciseNr,
|
||||||
]) + getExerciseNameLanguage(exercise)
|
]) + getExerciseNameLanguage(exercise)
|
||||||
"
|
"
|
||||||
:color="exercise.solved ? 'green' : 'primary'"
|
:color="exercise.solved ? 'green-darken-4' : 'primary'"
|
||||||
>
|
>
|
||||||
{{ getExerciseDescriptionLanguage(exercise) }}
|
{{ getExerciseDescriptionLanguage(exercise) }}
|
||||||
</card-view>
|
</card-view>
|
||||||
|
|||||||
Reference in New Issue
Block a user