From 8165f17fc8cd25c2e3649d31d93df3e5f77806c7 Mon Sep 17 00:00:00 2001 From: Tobias Zoghaib Date: Fri, 4 Oct 2024 18:01:37 +0200 Subject: [PATCH] More skeleton loader, repair bandDetailPage --- software/backend/data/cities.json | 17 ++++ software/backend/database.ts | 2 +- .../backend/images/locations/capitol-logo.png | Bin 0 -> 22124 bytes .../backend/images/locations/faust-logo.png | Bin 0 -> 27894 bytes .../models/locations/location.model.ts | 3 + software/backend/routes/band.routes.ts | 31 +++++- .../components/pageParts/concertListItem.vue | 3 +- .../src/components/pageParts/heroImage.vue | 88 +++++++++++------ software/src/data/models/acts/bandModel.ts | 4 +- .../data/models/locations/locationModel.ts | 1 + software/src/locales/de.json | 5 +- software/src/locales/en.json | 5 +- .../bandDetailPage/bandMemberSection.vue | 12 ++- .../events/bandDetailPage/gallerySection.vue | 69 +++++++------- .../src/pages/events/bandDetailPage/index.vue | 89 +++++++++++++++++- .../events/bandDetailPage/ratingSection.vue | 10 +- .../src/pages/events/eventsPage/index.vue | 5 +- .../locations/locationDetailPage/index.vue | 11 ++- 18 files changed, 262 insertions(+), 93 deletions(-) create mode 100644 software/backend/images/locations/capitol-logo.png create mode 100644 software/backend/images/locations/faust-logo.png diff --git a/software/backend/data/cities.json b/software/backend/data/cities.json index 736561d..8cbb223 100644 --- a/software/backend/data/cities.json +++ b/software/backend/data/cities.json @@ -9,6 +9,7 @@ "name": "Swiss Life Hall", "address": "Ferdinand-Wilhelm-Fricke-Weg 8", "image": "locations/swiss-life-hall.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -58,6 +59,7 @@ "name": "Capitol", "address": "Schwarzer Bär 2", "image": "locations/capitol.jpg", + "logo": "locations/capitol-logo.png", "seatGroups": [ { "name": "A", @@ -72,6 +74,7 @@ "name": "ZAG Arena", "address": "EXPO-Plaza 7", "image": "locations/zag-arena.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -121,6 +124,7 @@ "name": "Kulturzentrum Faust", "address": "Zur Bettfedernfabrik 3", "image": "locations/faust-hannover.jpg", + "logo": "locations/faust-logo.png", "seatGroups": [ { "name": "A", @@ -141,6 +145,7 @@ "name": "Olympiahalle München", "address": "Spiridon-Louis-Ring 21", "image": "locations/olympiahalle-munich.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -155,6 +160,7 @@ "name": "Schlachthof München", "address": "Zenettistraße 9", "image": "locations/schlachthof-munich.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -169,6 +175,7 @@ "name": "Muffatwerk", "address": "Zellstraße 4", "image": "locations/muffatwerk.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -189,6 +196,7 @@ "name": "Elbphilharmonie Hamburg", "address": "Platz der deutschen Einheit", "image": "locations/elbphilharmonie-hamburg.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -203,6 +211,7 @@ "name": "Volksparkstadion", "address": "Sylvesterallee 7", "image": "locations/volksparkstadion-hamburg.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -217,6 +226,7 @@ "name": "Barclays Arena", "address": "Sylvesterallee 10", "image": "locations/barclays-arena.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -231,6 +241,7 @@ "name": "Stage Theater im Hafen Hamburg", "address": "Norderelbestraße 6", "image": "locations/stage-theater-hamburg.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -251,6 +262,7 @@ "name": "Waldbühne Berlin", "address": "Am Glockenturm", "image": "locations/waldbuehne-berlin.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -265,6 +277,7 @@ "name": "Olympiastadion Berlin", "address": "Olympischer Platz 3", "image": "locations/olympiastadion-berlin.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -279,6 +292,7 @@ "name": "Uber Arena Berlin", "address": "Uber-Platz 1", "image": "locations/uber-arena-berlin.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -293,6 +307,7 @@ "name": "Columbiahalle", "address": "Columbiadamm 13-21", "image": "locations/columbiahalle.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -307,6 +322,7 @@ "name": "Astra Kulturhaus", "address": "Revaler Straße 99", "image": "locations/astra-kulturhaus.jpg", + "logo": "locations/capitol.logo.png", "seatGroups": [ { "name": "A", @@ -321,6 +337,7 @@ "name": "Deutsche Oper Berlin", "address": "Bismarckstraße 35", "image": "locations/deutsche-oper-berlin.jpg", + "logo": "locations/capitol-logo.png", "seatGroups": [ { "name": "A", diff --git a/software/backend/database.ts b/software/backend/database.ts index cc5b00a..401c808 100644 --- a/software/backend/database.ts +++ b/software/backend/database.ts @@ -41,7 +41,7 @@ export const sequelize = new Sequelize({ }) export function startDatabase() { - let force = false + let force = true // Create database and tables sequelize.sync({ force: force }) diff --git a/software/backend/images/locations/capitol-logo.png b/software/backend/images/locations/capitol-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6787f3282013e97b65ab17982ff1a3088233c2fe GIT binary patch literal 22124 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 G%KrcaJq_dl literal 0 HcmV?d00001 diff --git a/software/backend/images/locations/faust-logo.png b/software/backend/images/locations/faust-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..392ab59ccc006182fd93650fd938e1dd0f1c0e57 GIT binary patch literal 27894 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 ZYSmMyb1oFDfj?x1rKF%PUny%A{D1bv#;*VX literal 0 HcmV?d00001 diff --git a/software/backend/models/locations/location.model.ts b/software/backend/models/locations/location.model.ts index 7eb3f16..c08e447 100644 --- a/software/backend/models/locations/location.model.ts +++ b/software/backend/models/locations/location.model.ts @@ -18,6 +18,9 @@ export class Location extends Model { @Column image: String + @Column + logo: String + // Relations diff --git a/software/backend/routes/band.routes.ts b/software/backend/routes/band.routes.ts index a1f3beb..4b0018b 100644 --- a/software/backend/routes/band.routes.ts +++ b/software/backend/routes/band.routes.ts @@ -7,6 +7,7 @@ import { Event } from "../models/acts/event.model"; import { Concert } from "../models/acts/concert.model"; import { Location } from "../models/locations/location.model"; import { City } from "../models/locations/city.model"; +import { Op } from "sequelize"; export const band = Router() @@ -58,8 +59,11 @@ band.get("/", (req: Request, res: Response) => { }) // Get all information about one band -band.get("/:id", (req: Request, res: Response) => { - Band.findByPk(req.params.id, { +band.get("/:name", (req: Request, res: Response) => { + Band.findOne({ + where: { + name: { [Op.like]: req.params.name } + }, include: [ { model: Member, @@ -73,6 +77,29 @@ band.get("/:id", (req: Request, res: Response) => { exclude: [ "bandId" ] } }, + { + model: Event, + include: [ + { + model: Concert, + include: [ + { + model: Location, + include: [ City ], + attributes: { + exclude: [ "id" ] + } + } + ], + attributes: { + exclude: [ "id", "tourId", "locationId" ] + } + } + ], + attributes: { + exclude: [ "id", "bandId" ] + } + }, Genre ], attributes: { diff --git a/software/src/components/pageParts/concertListItem.vue b/software/src/components/pageParts/concertListItem.vue index 01e6d8b..d1f7ea6 100644 --- a/software/src/components/pageParts/concertListItem.vue +++ b/software/src/components/pageParts/concertListItem.vue @@ -5,7 +5,6 @@ defineProps({ image: String, title: String, description: String, - price: String, loading: Boolean }) @@ -35,7 +34,7 @@ defineProps({ size="x-large" /> - {{ price }} + diff --git a/software/src/components/pageParts/heroImage.vue b/software/src/components/pageParts/heroImage.vue index f27fe39..95f4797 100644 --- a/software/src/components/pageParts/heroImage.vue +++ b/software/src/components/pageParts/heroImage.vue @@ -6,52 +6,78 @@ defineProps({ logo: String, title: String, chips: Array, - description: String + description: String, + loading: Boolean }) \ No newline at end of file + + + \ No newline at end of file diff --git a/software/src/data/models/acts/bandModel.ts b/software/src/data/models/acts/bandModel.ts index e72f9e9..3947b00 100644 --- a/software/src/data/models/acts/bandModel.ts +++ b/software/src/data/models/acts/bandModel.ts @@ -10,13 +10,13 @@ export class BandModel { images: Array imageMembers: string logo: string - ratings: Array + ratings: Array = [] members: Array<{ name: string, image: string }> genres: Array<{ name: string - }> + }> = [] events: Array } \ No newline at end of file diff --git a/software/src/data/models/locations/locationModel.ts b/software/src/data/models/locations/locationModel.ts index 5654149..901da21 100644 --- a/software/src/data/models/locations/locationModel.ts +++ b/software/src/data/models/locations/locationModel.ts @@ -9,6 +9,7 @@ export class LocationModel { address: string image: string seatSchema: string + logo: string city: { name: string country: string diff --git a/software/src/locales/de.json b/software/src/locales/de.json index a74fcb3..d0ff4dc 100644 --- a/software/src/locales/de.json +++ b/software/src/locales/de.json @@ -143,5 +143,8 @@ "city": "Stadt", "seatPlan": "Saalplan", "stage": "Bühne", - "filtering": "Filtern" + "filtering": "Filtern", + "bandMember": "Band Mitglieder", + "rating": "Bewertung | Bewertungen", + "image": "Foto | Fotos" } diff --git a/software/src/locales/en.json b/software/src/locales/en.json index 11707fb..d196f89 100644 --- a/software/src/locales/en.json +++ b/software/src/locales/en.json @@ -143,5 +143,8 @@ "city": "City", "seatPlan": "Seat Plan", "stage": "Stage", - "filtering": "Filtering" + "filtering": "Filtering", + "bandMember": "Band members", + "rating": "Rating | Ratings", + "image": "Image | Images" } diff --git a/software/src/pages/events/bandDetailPage/bandMemberSection.vue b/software/src/pages/events/bandDetailPage/bandMemberSection.vue index 7e52689..50c8c19 100644 --- a/software/src/pages/events/bandDetailPage/bandMemberSection.vue +++ b/software/src/pages/events/bandDetailPage/bandMemberSection.vue @@ -1,7 +1,9 @@