diff --git a/.gitignore b/.gitignore index c97383a..5eb2b0c 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ hs_err_pid* replay_pid* /peakup-backend/src/test/resources/ +/peakup-maven/target/ diff --git a/peakup-backend/src/main/java/com/peakup/activity/IntervalsActivityResource.java b/peakup-backend/src/main/java/com/peakup/activity/IntervalsActivityResource.java index e7edb9f..7c1f72d 100644 --- a/peakup-backend/src/main/java/com/peakup/activity/IntervalsActivityResource.java +++ b/peakup-backend/src/main/java/com/peakup/activity/IntervalsActivityResource.java @@ -71,9 +71,7 @@ public class IntervalsActivityResource extends AbstractResource { @PathParam("id") final long id, @PathParam("workoutId") final long workoutId) { try { - final IntervalsActivity activity = intervalsActivityService.getById(id); - intervalsActivityService.linkWorkout(activity, workoutId); - return RestResponse.ok(activity); + return RestResponse.ok(intervalsActivityService.linkWorkout(id, workoutId)); } catch (final NoResultException e) { return RestResponse.notFound(); } @@ -83,9 +81,7 @@ public class IntervalsActivityResource extends AbstractResource { @Path("/{id}/unlink-workout") public RestResponse unlinkWorkout(@PathParam("id") final long id) { try { - final IntervalsActivity activity = intervalsActivityService.getById(id); - intervalsActivityService.unlinkWorkout(activity); - return RestResponse.ok(activity); + return RestResponse.ok(intervalsActivityService.unlinkWorkout(id)); } catch (final NoResultException e) { return RestResponse.notFound(); } diff --git a/peakup-backend/src/main/java/com/peakup/activity/service/IntervalsActivityService.java b/peakup-backend/src/main/java/com/peakup/activity/service/IntervalsActivityService.java index 00e323a..f7051b2 100644 --- a/peakup-backend/src/main/java/com/peakup/activity/service/IntervalsActivityService.java +++ b/peakup-backend/src/main/java/com/peakup/activity/service/IntervalsActivityService.java @@ -43,14 +43,18 @@ public class IntervalsActivityService extends AbstractService { public void update(final T entity) { if (!em.contains(entity)) { throw new PersistenceException( - "Entity is not managed (attached). Use merge() or re-fetch before update: " + entity + "Entity is not managed (attached). Use merge() or re-fetch before update: " + + entity.getClass().getSimpleName() + "#" + entity.getId() ); } // Änderungen werden automatisch von JPA übernommen diff --git a/peakup-backend/src/main/java/com/peakup/scheduler/ActivityImportScheduler.java b/peakup-backend/src/main/java/com/peakup/scheduler/ActivityImportScheduler.java index dffab2a..1853533 100644 --- a/peakup-backend/src/main/java/com/peakup/scheduler/ActivityImportScheduler.java +++ b/peakup-backend/src/main/java/com/peakup/scheduler/ActivityImportScheduler.java @@ -42,6 +42,7 @@ public class ActivityImportScheduler { log.warn("Import already running, skipping this trigger."); return; } + log.info("Start import ..."); try { for (final StravaConnector connector : stravaConnectorService.getStravaConnectors()) { try { diff --git a/peakup-backend/src/main/java/com/peakup/workout/WeekPlanResource.java b/peakup-backend/src/main/java/com/peakup/workout/WeekPlanResource.java index fece56c..e85826f 100644 --- a/peakup-backend/src/main/java/com/peakup/workout/WeekPlanResource.java +++ b/peakup-backend/src/main/java/com/peakup/workout/WeekPlanResource.java @@ -112,12 +112,11 @@ public class WeekPlanResource extends AbstractResource { @PathParam("workoutId") final long workoutId, final Workout workout) { try { - final Workout existing = workoutService.getById(workoutId); - if (existing.getWeekPlanId() != planId) { + final Workout updated = workoutService.updateWorkout(planId, workoutId, workout); + if (updated == null) { return RestResponse.notFound(); } - workoutService.updateWorkout(existing, workout); - return RestResponse.ok(existing); + return RestResponse.ok(updated); } catch (final NoResultException e) { return RestResponse.notFound(); } diff --git a/peakup-backend/src/main/java/com/peakup/workout/service/WorkoutService.java b/peakup-backend/src/main/java/com/peakup/workout/service/WorkoutService.java index 0ff1d9c..2afe9bf 100644 --- a/peakup-backend/src/main/java/com/peakup/workout/service/WorkoutService.java +++ b/peakup-backend/src/main/java/com/peakup/workout/service/WorkoutService.java @@ -3,6 +3,7 @@ package com.peakup.workout.service; import com.peakup.common.service.AbstractService; import com.peakup.workout.dao.WorkoutDAO; import com.peakup.workout.model.Workout; +import jakarta.annotation.Nullable; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.transaction.Transactional; @@ -26,7 +27,11 @@ public class WorkoutService extends AbstractService { } @Transactional - public void updateWorkout(final Workout existing, final Workout updated) { + public @Nullable Workout updateWorkout(final long planId, final long workoutId, final Workout updated) { + final Workout existing = workoutDAO.getById(workoutId); + if (existing.getWeekPlanId() != planId) { + return null; + } existing.setTitle(updated.getTitle()); existing.setDescription(updated.getDescription()); existing.setWorkoutAt(updated.getWorkoutAt()); @@ -37,5 +42,6 @@ public class WorkoutService extends AbstractService { existing.setEstimatedTimeSeconds(updated.getEstimatedTimeSeconds()); existing.setEstimatedTss(updated.getEstimatedTss()); update(existing); + return existing; } } diff --git a/peakup-backend/src/main/resources/application.properties b/peakup-backend/src/main/resources/application.properties index 1cb3c8c..bd4f4ca 100644 --- a/peakup-backend/src/main/resources/application.properties +++ b/peakup-backend/src/main/resources/application.properties @@ -1,7 +1,3 @@ -quarkus.log.category."org.jboss.resteasy.reactive".level=WARN -quarkus.log.category."com.fasterxml.jackson".level=WARN -quarkus.log.category."org.hibernate".level=WARN -quarkus.log.console.level=WARN quarkus.http.port=8111 quarkus.http.cors=true quarkus.http.cors.origins=* diff --git a/peakup-frontend/src/pages/Dashboard.tsx b/peakup-frontend/src/pages/Dashboard.tsx index d003a5a..7576336 100644 --- a/peakup-frontend/src/pages/Dashboard.tsx +++ b/peakup-frontend/src/pages/Dashboard.tsx @@ -373,7 +373,9 @@ export function Dashboard({athleteId}: { athleteId: number }) { const loadData = buildLoadData(activities, wStart) - const ctlValues = loadData.map(d => d.ctl).filter((v): v is number => v !== null) + const ctlLoadData = loadData.slice(loadData.findIndex(d => d.ctl !== null)) + + const ctlValues = ctlLoadData.map(d => d.ctl).filter((v): v is number => v !== null) const ctlDomain: [number, number] | ['auto', 'auto'] = ctlValues.length ? [Math.floor(Math.min(...ctlValues) * 0.9), Math.ceil(Math.max(...ctlValues) * 1.1)] : ['auto', 'auto'] @@ -511,9 +513,9 @@ export function Dashboard({athleteId}: { athleteId: number }) {

Fitness, Fatigue & Form (CTL / ATL / TSB)

- {loadData.some((d) => d.ctl !== null) ? ( + {ctlLoadData.some((d) => d.ctl !== null) ? ( - +