From ce2cc79610a9d29044bf432ba371568815585d3f Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 22 Jul 2024 04:23:28 +0000 Subject: [PATCH 01/34] chore(deps): add renovate.json --- renovate.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..8ad9b13 --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "local>kektus/infra/infrastructure//renovate-presets" + ] +} From da9bd21c451f1089ee5c0da2bd5538dc4843d0d1 Mon Sep 17 00:00:00 2001 From: Nicolas Froger Date: Fri, 26 Jul 2024 15:34:49 +0200 Subject: [PATCH 02/34] frontend: remove duplicate zoom control, fix position Signed-off-by: Nicolas Froger --- summer2024-frontend/src/assets/main.css | 15 +++++++++++++-- summer2024-frontend/src/views/MapView.vue | 4 ---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/summer2024-frontend/src/assets/main.css b/summer2024-frontend/src/assets/main.css index aa188c2..066995b 100644 --- a/summer2024-frontend/src/assets/main.css +++ b/summer2024-frontend/src/assets/main.css @@ -2,9 +2,20 @@ @import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap'); body { - font-family: 'Raleway', sans-serif; + font-family: 'Raleway', sans-serif; } #kektus { - font-family: 'Montserrat', sans-serif; + font-family: 'Montserrat', sans-serif; } + +.ol-zoom { + top: 120px !important; + left: .5em; +} + +@media screen and (min-width: 500px) { + .ol-zoom { + top: 70px !important; + } +} \ No newline at end of file diff --git a/summer2024-frontend/src/views/MapView.vue b/summer2024-frontend/src/views/MapView.vue index 42478b8..68f94a8 100644 --- a/summer2024-frontend/src/views/MapView.vue +++ b/summer2024-frontend/src/views/MapView.vue @@ -37,7 +37,6 @@ onMounted(() => { - { \ No newline at end of file From 4356816f07ce22028aa96077c7f7ea27bc22d2fe Mon Sep 17 00:00:00 2001 From: Nicolas Froger Date: Fri, 26 Jul 2024 15:35:45 +0200 Subject: [PATCH 03/34] frontend: create-post: better error handling Signed-off-by: Nicolas Froger --- .../src/views/CreatePostView.vue | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/summer2024-frontend/src/views/CreatePostView.vue b/summer2024-frontend/src/views/CreatePostView.vue index dabb974..d41a03c 100644 --- a/summer2024-frontend/src/views/CreatePostView.vue +++ b/summer2024-frontend/src/views/CreatePostView.vue @@ -46,6 +46,13 @@ const formStatus = ref({ errorMsg: '' }) +function formError(message) { + formStatus.value.sending = false + formStatus.value.error = true + formStatus.value.errorMsg = message + formContainer.value.classList.remove('invisible') +} + const onSubmit = form.handleSubmit(async (values) => { if (!authStore.isAuth) return @@ -65,14 +72,16 @@ const onSubmit = form.handleSubmit(async (values) => { 'X-admin-token': authStore.adminToken }, body: JSON.stringify({ filename: file.file.name }) + }).catch((e) => { + console.log('Contact API asset failed: ' + e) + formError('Erreur à la préparation de l\'envoi d\'un média : ' + e) }) + if (!response) + return if (!response.ok) { console.log('Contact API asset failed: ' + response.statusText + '\n\n' + response.body) - formStatus.value.sending = false - formStatus.value.error = true - formStatus.value.errorMsg = 'Une erreur est survenue à la préparation de l\'envoi d\'un média : ' + response.statusText - formContainer.value.classList.remove('invisible') + formError('Erreur à la préparation de l\'envoi d\'un média : ' + response.statusText) return } const responseBody = await response.json() @@ -88,13 +97,15 @@ const onSubmit = form.handleSubmit(async (values) => { const s3Response = await fetch(`${S3_ENDPOINT}/${S3_BUCKET}/`, { method: 'POST', body: mediaUploadFormData + }).catch((e) => { + console.log('Erreur envoi S3: ' + e) + formError('Une erreur est survenue pendant l\'envoi d\'un média : ' + e) }) + if (!s3Response) + return if (!s3Response.ok) { console.log('Envoi media S3 failed: ' + s3Response.statusText + '\n\n' + s3Response.body) - formStatus.value.sending = false - formStatus.value.error = true - formStatus.value.errorMsg = 'Une erreur est survenue pendant l\'envoi d\'un média : ' + s3Response.statusText - formContainer.value.classList.remove('invisible') + formError('Une erreur est survenue pendant l\'envoi d\'un média : ' + s3Response.statusText) return } @@ -115,13 +126,15 @@ const onSubmit = form.handleSubmit(async (values) => { country: values.country, assets: assets }) + }).catch((e) => { + console.log('Erreur envoi post : ' + e) + formError('Une erreur est survenue pendant l\'envoi du post : ' + e) }) + if (!response) + return if (!response.ok) { console.log('POST post API failed: ' + response.statusText + '\n\n' + response.body) - formStatus.value.sending = false - formStatus.value.error = true - formStatus.value.errorMsg = 'Une erreur est survenue lors de l\'envoi du poste : ' + response.statusText - formContainer.value.classList.remove('hidden') + formError('Une erreur est survenue lors de l\'envoi du poste : ' + response.statusText) return } From 130581a411a0f0d9ee97f2832b8f12b3d88b120c Mon Sep 17 00:00:00 2001 From: Nicolas Froger Date: Fri, 26 Jul 2024 15:36:19 +0200 Subject: [PATCH 04/34] add location logging, display last location on map Signed-off-by: Nicolas Froger --- .../converters/LocationConverter.java | 22 +++ .../summer2024/data/model/Location.java | 20 +++ .../data/repository/LocationRepository.java | 9 ++ .../domain/entity/LocationEntity.java | 15 ++ .../domain/service/LocationService.java | 35 +++++ .../presentation/rest/AdminLocationApi.java | 47 ++++++ .../presentation/rest/LocationApi.java | 21 +++ .../db/migration/V1.2.0__AddLocation.sql | 7 + summer2024-frontend/src/router/index.js | 7 + summer2024-frontend/src/stores/location.js | 32 ++++ summer2024-frontend/src/views/AdminView.vue | 8 +- summer2024-frontend/src/views/MapView.vue | 29 +++- .../src/views/SendLocationView.vue | 137 ++++++++++++++++++ 13 files changed, 386 insertions(+), 3 deletions(-) create mode 100644 summer2024-backend/src/main/java/fr/kektus/summer2024/converters/LocationConverter.java create mode 100644 summer2024-backend/src/main/java/fr/kektus/summer2024/data/model/Location.java create mode 100644 summer2024-backend/src/main/java/fr/kektus/summer2024/data/repository/LocationRepository.java create mode 100644 summer2024-backend/src/main/java/fr/kektus/summer2024/domain/entity/LocationEntity.java create mode 100644 summer2024-backend/src/main/java/fr/kektus/summer2024/domain/service/LocationService.java create mode 100644 summer2024-backend/src/main/java/fr/kektus/summer2024/presentation/rest/AdminLocationApi.java create mode 100644 summer2024-backend/src/main/java/fr/kektus/summer2024/presentation/rest/LocationApi.java create mode 100644 summer2024-backend/src/main/resources/db/migration/V1.2.0__AddLocation.sql create mode 100644 summer2024-frontend/src/stores/location.js create mode 100644 summer2024-frontend/src/views/SendLocationView.vue diff --git a/summer2024-backend/src/main/java/fr/kektus/summer2024/converters/LocationConverter.java b/summer2024-backend/src/main/java/fr/kektus/summer2024/converters/LocationConverter.java new file mode 100644 index 0000000..fddd483 --- /dev/null +++ b/summer2024-backend/src/main/java/fr/kektus/summer2024/converters/LocationConverter.java @@ -0,0 +1,22 @@ +package fr.kektus.summer2024.converters; + +import fr.kektus.summer2024.data.model.Location; +import fr.kektus.summer2024.domain.entity.LocationEntity; +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class LocationConverter implements Converter { + @Override public Location toLeft(LocationEntity locationEntity) { + return new Location().withId(locationEntity.id) + .withLatitude(locationEntity.latitude) + .withLongitude(locationEntity.longitude) + .withTimestamp(locationEntity.timestamp); + } + + @Override public LocationEntity toRight(Location location) { + return new LocationEntity().withId(location.id) + .withLatitude(location.latitude) + .withLongitude(location.longitude) + .withTimestamp(location.timestamp); + } +} diff --git a/summer2024-backend/src/main/java/fr/kektus/summer2024/data/model/Location.java b/summer2024-backend/src/main/java/fr/kektus/summer2024/data/model/Location.java new file mode 100644 index 0000000..bd1e1d6 --- /dev/null +++ b/summer2024-backend/src/main/java/fr/kektus/summer2024/data/model/Location.java @@ -0,0 +1,20 @@ +package fr.kektus.summer2024.data.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; +import lombok.With; + +import java.time.ZonedDateTime; + +@Entity +@AllArgsConstructor @NoArgsConstructor @With +public class Location { + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long id; + public ZonedDateTime timestamp; + public Float latitude; + public Float longitude; +} diff --git a/summer2024-backend/src/main/java/fr/kektus/summer2024/data/repository/LocationRepository.java b/summer2024-backend/src/main/java/fr/kektus/summer2024/data/repository/LocationRepository.java new file mode 100644 index 0000000..fe8a2c6 --- /dev/null +++ b/summer2024-backend/src/main/java/fr/kektus/summer2024/data/repository/LocationRepository.java @@ -0,0 +1,9 @@ +package fr.kektus.summer2024.data.repository; + +import fr.kektus.summer2024.data.model.Location; +import io.quarkus.hibernate.orm.panache.PanacheRepository; +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class LocationRepository implements PanacheRepository { +} diff --git a/summer2024-backend/src/main/java/fr/kektus/summer2024/domain/entity/LocationEntity.java b/summer2024-backend/src/main/java/fr/kektus/summer2024/domain/entity/LocationEntity.java new file mode 100644 index 0000000..939f86b --- /dev/null +++ b/summer2024-backend/src/main/java/fr/kektus/summer2024/domain/entity/LocationEntity.java @@ -0,0 +1,15 @@ +package fr.kektus.summer2024.domain.entity; + +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; +import lombok.With; + +import java.time.ZonedDateTime; + +@AllArgsConstructor @NoArgsConstructor @With +public class LocationEntity { + public Long id; + public ZonedDateTime timestamp; + public Float latitude; + public Float longitude; +} diff --git a/summer2024-backend/src/main/java/fr/kektus/summer2024/domain/service/LocationService.java b/summer2024-backend/src/main/java/fr/kektus/summer2024/domain/service/LocationService.java new file mode 100644 index 0000000..58d9561 --- /dev/null +++ b/summer2024-backend/src/main/java/fr/kektus/summer2024/domain/service/LocationService.java @@ -0,0 +1,35 @@ +package fr.kektus.summer2024.domain.service; + +import fr.kektus.summer2024.converters.LocationConverter; +import fr.kektus.summer2024.data.model.Location; +import fr.kektus.summer2024.data.repository.LocationRepository; +import fr.kektus.summer2024.domain.entity.LocationEntity; +import io.quarkus.panache.common.Sort; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.transaction.Transactional; +import jakarta.ws.rs.NotFoundException; + +import java.time.ZonedDateTime; + +@ApplicationScoped +public class LocationService { + @Inject LocationRepository locationRepository; + @Inject LocationConverter locationConverter; + + @Transactional + public LocationEntity createLocation(Float lat, Float lon) { + final Location location = new Location().withLatitude(lat) + .withLongitude(lon) + .withTimestamp(ZonedDateTime.now()); + locationRepository.persist(location); + return locationConverter.toRight(location); + } + + public LocationEntity getLatestLocation() { + final Location lastLocation = locationRepository.findAll(Sort.descending("id")).firstResult(); + if (lastLocation == null) + throw new NotFoundException(); + return locationConverter.toRight(lastLocation); + } +} diff --git a/summer2024-backend/src/main/java/fr/kektus/summer2024/presentation/rest/AdminLocationApi.java b/summer2024-backend/src/main/java/fr/kektus/summer2024/presentation/rest/AdminLocationApi.java new file mode 100644 index 0000000..908163c --- /dev/null +++ b/summer2024-backend/src/main/java/fr/kektus/summer2024/presentation/rest/AdminLocationApi.java @@ -0,0 +1,47 @@ +package fr.kektus.summer2024.presentation.rest; + +import fr.kektus.summer2024.Validators; +import fr.kektus.summer2024.domain.entity.LocationEntity; +import fr.kektus.summer2024.domain.service.AuthService; +import fr.kektus.summer2024.domain.service.LocationService; +import jakarta.inject.Inject; +import jakarta.ws.rs.BadRequestException; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.NotAuthorizedException; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; +import lombok.With; +import org.jboss.resteasy.reactive.RestHeader; + +@Path("/admin/location") +@Consumes(MediaType.APPLICATION_JSON) +@Produces(MediaType.APPLICATION_JSON) +public class AdminLocationApi { + @Inject AuthService authService; + @Inject LocationService locationService; + + @POST + public LocationEntity createPost(@RestHeader("X-admin-token") final String adminToken, + CreateLocation.Request request) { + if (!authService.isAdminTokenValid(adminToken)) + throw new NotAuthorizedException("provided admin token is invalid"); + + Validators.assertNotNull(request, new BadRequestException()); + Validators.assertNotNull(request.latitude, new BadRequestException()); + Validators.assertNotNull(request.longitude, new BadRequestException()); + + return locationService.createLocation(request.latitude, request.longitude); + } + + public static class CreateLocation { + @NoArgsConstructor @AllArgsConstructor @With + public static class Request { + public Float latitude; + public Float longitude; + } + } +} diff --git a/summer2024-backend/src/main/java/fr/kektus/summer2024/presentation/rest/LocationApi.java b/summer2024-backend/src/main/java/fr/kektus/summer2024/presentation/rest/LocationApi.java new file mode 100644 index 0000000..c1c64b0 --- /dev/null +++ b/summer2024-backend/src/main/java/fr/kektus/summer2024/presentation/rest/LocationApi.java @@ -0,0 +1,21 @@ +package fr.kektus.summer2024.presentation.rest; + +import fr.kektus.summer2024.domain.entity.LocationEntity; +import fr.kektus.summer2024.domain.service.LocationService; +import jakarta.inject.Inject; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; + +@Path("/location") +@Produces(MediaType.APPLICATION_JSON) +public class LocationApi { + @Inject LocationService locationService; + + @GET @Path("/last") + public LocationEntity getLastLocation() { + return locationService.getLatestLocation(); + } +} diff --git a/summer2024-backend/src/main/resources/db/migration/V1.2.0__AddLocation.sql b/summer2024-backend/src/main/resources/db/migration/V1.2.0__AddLocation.sql new file mode 100644 index 0000000..13ef5ad --- /dev/null +++ b/summer2024-backend/src/main/resources/db/migration/V1.2.0__AddLocation.sql @@ -0,0 +1,7 @@ +create table Location +( + id bigserial not null primary key, + latitude float4, + longitude float4, + timestamp timestamp(6) with time zone +); \ No newline at end of file diff --git a/summer2024-frontend/src/router/index.js b/summer2024-frontend/src/router/index.js index b8fc864..9476757 100644 --- a/summer2024-frontend/src/router/index.js +++ b/summer2024-frontend/src/router/index.js @@ -6,6 +6,7 @@ const CreatePostView = () => import('@/views/CreatePostView.vue') const AdminView = () => import('@/views/AdminView.vue') const LoginView = () => import('@/views/LoginView.vue') const MapView = () => import('@/views/MapView.vue') +const SendLocationView = () => import('@/views/SendLocationView.vue') function authenticatedRoute(to) { const authStore = useAuthStore() @@ -46,6 +47,12 @@ const router = createRouter({ name: 'admin_create_post', component: CreatePostView, beforeEnter: [authenticatedRoute] + }, + { + path: '/admin/send-location', + name: 'admin_send_location', + component: SendLocationView, + beforeEnter: [authenticatedRoute] } ] }) diff --git a/summer2024-frontend/src/stores/location.js b/summer2024-frontend/src/stores/location.js new file mode 100644 index 0000000..354714b --- /dev/null +++ b/summer2024-frontend/src/stores/location.js @@ -0,0 +1,32 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' +import { formatRelative } from 'date-fns' +import { fr } from 'date-fns/locale' +import { API_BASE_URL } from '@/config.js' +import { fromLonLat } from 'ol/proj.js' + +export const useLocationStore = defineStore('location', () => { + const locationApiPath = API_BASE_URL + '/location/last' + + const lastLocation = ref(null) + + function fetchLocation() { + return fetch(locationApiPath) + .then((response) => { + return response.json() + }) + .then(async (loc) => { + const locDate = new Date(loc.timestamp) + loc.formatedDate = formatRelative(locDate, new Date(), { locale: fr }) + loc.projectedCoordinates = fromLonLat([loc.longitude, loc.latitude]) + lastLocation.value = loc + + return location.value + }) + .catch((error) => { + console.log('fetch last location failed with: ' + error) + }) + } + + return { lastLocation, fetchLocation } +}) diff --git a/summer2024-frontend/src/views/AdminView.vue b/summer2024-frontend/src/views/AdminView.vue index 47b0c8f..0e28de9 100644 --- a/summer2024-frontend/src/views/AdminView.vue +++ b/summer2024-frontend/src/views/AdminView.vue @@ -1,7 +1,7 @@ @@ -59,8 +65,27 @@ onMounted(() => { + + + + +
+ +
+
+ +

Dernière position, {{ locationStore.lastLocation.formatedDate }}

+
+
+
+
- + +import { Button } from '@/components/ui/button/index.js' +import { useForm } from 'vee-validate' +import { FormControl, FormField, FormItem, FormLabel } from '@/components/ui/form/index.js' +import { Input } from '@/components/ui/input/index.js' +import { toTypedSchema } from '@vee-validate/zod' +import { z } from 'zod' +import { onMounted, onUnmounted, ref } from 'vue' +import { AlertCircle, ArrowLeft, CircleCheckBig, Send } from 'lucide-vue-next' +import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert/index.js' +import { useAuthStore } from '@/stores/auth.js' +import { API_BASE_URL } from '@/config.js' + +const authStore = useAuthStore() + +const formSchema = toTypedSchema(z.object({ + latitude: z.number(), + longitude: z.number() +})) +const form = useForm({ + validationSchema: formSchema +}) + +const formContainer = ref(null) +const latitudeInput = ref(null) +const longitudeInput = ref(null) + +const formStatus = ref({ + sending: false, + sent: false, + error: false, + errorMsg: '' +}) + +const onSubmit = form.handleSubmit(async (values) => { + if (!authStore.isAuth) + return + + console.log('Envoi de la localisation...') + formContainer.value.classList.add('hidden') + formStatus.value.sending = true + + const response = await fetch(API_BASE_URL + '/admin/location', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-admin-token': authStore.adminToken + }, + body: JSON.stringify({ + latitude: values.latitude, + longitude: values.longitude + }) + }) + if (!response.ok) { + console.log('POST post API failed: ' + response.statusText + '\n\n' + response.body) + formStatus.value.sending = false + formStatus.value.error = true + formStatus.value.errorMsg = 'Une erreur est survenue lors de l\'envoi du poste : ' + response.statusText + formContainer.value.classList.remove('hidden') + return + } + + formStatus.value.sending = false + formStatus.value.sent = true +}) + +let geoWatchId = null + +onMounted(() => { + geoWatchId = navigator.geolocation.watchPosition((position) => { + console.log(position) + form.setFieldValue('latitude', position.coords.latitude) + form.setFieldValue('longitude', position.coords.longitude) + }) +}) + +onUnmounted(() => { + if (geoWatchId != null) { + navigator.geolocation.clearWatch(geoWatchId) + } +}) + + + + + + From c38cfb20527dde4d8e347ce37d70074df54bb372 Mon Sep 17 00:00:00 2001 From: Nicolas Froger Date: Fri, 26 Jul 2024 15:38:04 +0200 Subject: [PATCH 05/34] release 1.2.0 Signed-off-by: Nicolas Froger --- summer2024-backend/pom.xml | 2 +- summer2024-frontend/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/summer2024-backend/pom.xml b/summer2024-backend/pom.xml index 1d91bc8..574a3ab 100644 --- a/summer2024-backend/pom.xml +++ b/summer2024-backend/pom.xml @@ -3,7 +3,7 @@ 4.0.0 fr.kektus summer2024-backend - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT 3.13.0 diff --git a/summer2024-frontend/package.json b/summer2024-frontend/package.json index 58b5abf..f2d0b9d 100644 --- a/summer2024-frontend/package.json +++ b/summer2024-frontend/package.json @@ -1,6 +1,6 @@ { "name": "summer2024-frontend", - "version": "1.1.0", + "version": "1.2.0", "private": true, "type": "module", "scripts": { From 00634ebbc801f9b00839b523c5c759e45dd07418 Mon Sep 17 00:00:00 2001 From: Nicolas Froger Date: Fri, 26 Jul 2024 16:05:05 +0200 Subject: [PATCH 06/34] frontend: display version in corner Signed-off-by: Nicolas Froger --- summer2024-frontend/.env | 1 + summer2024-frontend/src/App.vue | 20 +++++++++++++++++--- summer2024-frontend/src/config.js | 6 +++--- summer2024-frontend/vite.config.js | 2 +- 4 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 summer2024-frontend/.env diff --git a/summer2024-frontend/.env b/summer2024-frontend/.env new file mode 100644 index 0000000..5e01b0f --- /dev/null +++ b/summer2024-frontend/.env @@ -0,0 +1 @@ +VITE_APP_VERSION=$npm_package_version \ No newline at end of file diff --git a/summer2024-frontend/src/App.vue b/summer2024-frontend/src/App.vue index 8d10567..663d6ed 100644 --- a/summer2024-frontend/src/App.vue +++ b/summer2024-frontend/src/App.vue @@ -1,19 +1,33 @@ diff --git a/summer2024-frontend/src/config.js b/summer2024-frontend/src/config.js index 7a73a12..de29f13 100644 --- a/summer2024-frontend/src/config.js +++ b/summer2024-frontend/src/config.js @@ -1,3 +1,3 @@ -export const API_BASE_URL = import.meta.env.VITE_API_BASEURL; -export const S3_ENDPOINT = import.meta.env.VITE_S3_ENDPOINT; -export const S3_BUCKET = import.meta.env.VITE_S3_BUCKET; +export const API_BASE_URL = import.meta.env.VITE_API_BASEURL +export const S3_ENDPOINT = import.meta.env.VITE_S3_ENDPOINT +export const S3_BUCKET = import.meta.env.VITE_S3_BUCKET diff --git a/summer2024-frontend/vite.config.js b/summer2024-frontend/vite.config.js index 6e38a91..4754cfc 100644 --- a/summer2024-frontend/vite.config.js +++ b/summer2024-frontend/vite.config.js @@ -27,4 +27,4 @@ export default defineConfig({ esbuild: { drop: [] } -}) \ No newline at end of file +}) From 9aa549dd6de4152b6dd24466adbca4514a0c7f54 Mon Sep 17 00:00:00 2001 From: Nicolas Froger Date: Fri, 26 Jul 2024 16:10:42 +0200 Subject: [PATCH 07/34] release 1.2.1 Signed-off-by: Nicolas Froger --- summer2024-backend/pom.xml | 2 +- summer2024-frontend/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/summer2024-backend/pom.xml b/summer2024-backend/pom.xml index 574a3ab..ef6df36 100644 --- a/summer2024-backend/pom.xml +++ b/summer2024-backend/pom.xml @@ -3,7 +3,7 @@ 4.0.0 fr.kektus summer2024-backend - 1.2.0-SNAPSHOT + 1.2.1-SNAPSHOT 3.13.0 diff --git a/summer2024-frontend/package.json b/summer2024-frontend/package.json index f2d0b9d..9730223 100644 --- a/summer2024-frontend/package.json +++ b/summer2024-frontend/package.json @@ -1,6 +1,6 @@ { "name": "summer2024-frontend", - "version": "1.2.0", + "version": "1.2.1", "private": true, "type": "module", "scripts": { From 67c1257b3d3b366edfafacde495f367ca981d961 Mon Sep 17 00:00:00 2001 From: Nicolas Froger Date: Fri, 26 Jul 2024 16:59:24 +0200 Subject: [PATCH 08/34] frontend: add goal locations Signed-off-by: Nicolas Froger --- summer2024-frontend/src/views/MapView.vue | 35 +++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/summer2024-frontend/src/views/MapView.vue b/summer2024-frontend/src/views/MapView.vue index 81515e9..d7b9cb5 100644 --- a/summer2024-frontend/src/views/MapView.vue +++ b/summer2024-frontend/src/views/MapView.vue @@ -1,10 +1,11 @@ - + diff --git a/summer2024-frontend/src/components/ui/alert/Alert.vue b/summer2024-frontend/src/components/ui/alert/Alert.vue index 3ac2f85..f889172 100644 --- a/summer2024-frontend/src/components/ui/alert/Alert.vue +++ b/summer2024-frontend/src/components/ui/alert/Alert.vue @@ -1,11 +1,11 @@