diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 05be7fe0..1c315fd9 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -1594,20 +1594,35 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None, dates.append(datetime.datetime.combine(w.date,datetime.datetime.min.time())) testpower.append(powertest) + fatigues.append(np.nan) + fitnesses.append(np.nan) - # create Fitness and Fatigue number - fatigue = 0 - fitness = 0 - previousworkouts = Workout.objects.filter(user=user.rower,date__lte=w.date, - date__gte=startdate) - for ww in previousworkouts: - delta = (w.date-ww.date).days - weight = getattr(ww,metricchoice) - fatigue += weight*math.exp(-delta/kfatigue) - fitness += weight*math.exp(-delta/kfitness) - fatigues.append(fatigue) - fitnesses.append(fitness) + allworkouts = Workout.objects.filter(user=user.rower,date__lte=enddate, + date__gte=startdate, + duplicate=False, + ) + for w in allworkouts: + # create Fitness and Fatigue number + fatigue = 0 + fitness = 0 + + previousworkouts = Workout.objects.filter(user=user.rower,date__lte=w.date, + date__gte=startdate, + duplicate=False) + for ww in previousworkouts: + delta = (w.date-ww.date).days + weight = getattr(ww,metricchoice) + fatigue += weight*math.exp(-delta/kfatigue) + fitness += weight*math.exp(-delta/kfitness) + + fatigues.append(fatigue) + fitnesses.append(fitness) + testpower.append(np.nan) + dates.append( + datetime.datetime.combine( + w.date,datetime.datetime.min.time()) + ) @@ -1623,16 +1638,19 @@ def fitnessfit_chart(workouts,user,workoutmode='water',startdate=None, df['form'] = df['fitness']-df['fatigue'] + df.sort_values(['date'],inplace=True) - #df = df.fillna(0) + + df = df.groupby(['date']).max() + df['date'] = df.index.values + + df['testdup'] = df['testpower'].shift(1) df['testpower'] = df.apply(lambda x: np.nan if abs(x['testpower'] - x['testdup']) < 4 \ else x['testpower'],axis=1) - #df = df.fillna(-100) - - #print(df) + source = ColumnDataSource( data = dict( diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py index 6537fdc9..fa1f3dc3 100644 --- a/rowers/views/analysisviews.py +++ b/rowers/views/analysisviews.py @@ -1581,10 +1581,12 @@ def fitness_from_cp_view(request,userid=0,mode='rower', workouts = Workout.objects.filter(user=therower,date__gte=startdate, date__lte=enddate, - workouttype__in=mytypes.otwtypes) + workouttype__in=mytypes.otwtypes, + duplicate=False) if mode == 'rower': workouts = Workout.objects.filter(user=therower,date__gte=startdate, - date__lte=enddate,workouttype__in=mytypes.otetypes) + date__lte=enddate,workouttype__in=mytypes.otetypes, + duplicate=False)