|
|
@@ -2,6 +2,7 @@ import pandas as pd
|
|
|
import numpy as np
|
|
|
import datetime
|
|
|
import json
|
|
|
+import math
|
|
|
import os
|
|
|
import plotly
|
|
|
import plotly.graph_objs as go
|
|
|
@@ -17,8 +18,14 @@ def round_float(s):
|
|
|
r = round(float(m.groups(0)[0]),0)
|
|
|
except:
|
|
|
r = s
|
|
|
+# r = 0
|
|
|
return r
|
|
|
|
|
|
+def safe_round(number, ndigits=None):
|
|
|
+ if math.isnan(number):
|
|
|
+ return number
|
|
|
+ return round(number, ndigits)
|
|
|
+
|
|
|
# https://stackoverflow.com/questions/775049/how-do-i-convert-seconds-to-hours-minutes-and-seconds
|
|
|
def sec2time(sec, n_msec=3):
|
|
|
''' Convert seconds to 'D days, HH:MM:SS.FFF' '''
|
|
|
@@ -204,49 +211,50 @@ def homepage_data (csv_file):
|
|
|
'movingDuration': sum,
|
|
|
'intensityMinutes': sum
|
|
|
})
|
|
|
- d = { 'elevationtotal' : df['elevationGain'].sum(),
|
|
|
- 'elevation0y' : yf['elevationGain'].take([-1])[0],
|
|
|
- 'elevation1y' : yf['elevationGain'].take([-2])[0],
|
|
|
- 'elevation1m' : mf['elevationGain'].take([-2])[0],
|
|
|
- 'elevation0m' : mf['elevationGain'].take([-1])[0],
|
|
|
- 'elevation1w' : wf['elevationGain'].take([-2])[0],
|
|
|
- 'elevation0w' : wf['elevationGain'].take([-1])[0],
|
|
|
- # '0w' : wf.take([-1]).keys,
|
|
|
- 'distancetotal' : round(df['distance'].sum(), 1),
|
|
|
- 'distance0y' : round(yf['distance'].take([-1])[0], 1),
|
|
|
- 'distance1y' : round(yf['distance'].take([-2])[0], 1),
|
|
|
- 'distance1m' : round(mf['distance'].take([-2])[0], 1),
|
|
|
- 'distance0m' : round(mf['distance'].take([-1])[0], 1),
|
|
|
- 'distance1w' : round(wf['distance'].take([-2])[0], 1),
|
|
|
- 'distance0w' : round(wf['distance'].take([-1])[0], 1),
|
|
|
- 'durationtotal' : sec2time(df['movingDuration'].sum(), 0),
|
|
|
- 'duration0y' : sec2time(yf['movingDuration'].take([-1])[0], 0),
|
|
|
- 'duration1y' : sec2time(yf['movingDuration'].take([-2])[0], 0),
|
|
|
- 'duration1m' : sec2time(mf['movingDuration'].take([-2])[0], 0),
|
|
|
- 'duration0m' : sec2time(mf['movingDuration'].take([-1])[0], 0),
|
|
|
- 'duration1w' : sec2time(wf['movingDuration'].take([-2])[0], 0),
|
|
|
- 'duration0w' : sec2time(wf['movingDuration'].take([-1])[0], 0),
|
|
|
- 'averageHRtotal' : round(df['averageHR'].mean()),
|
|
|
- 'averageHR0y' : round(df['averageHR'].take([-1])[0]),
|
|
|
- 'averageHR1y' : round(df['averageHR'].take([-2])[0]),
|
|
|
- 'averageHR1m' : round(mf['averageHR'].take([-2])[0]),
|
|
|
- 'averageHR0m' : round(mf['averageHR'].take([-1])[0]),
|
|
|
- 'averageHR1w' : round_float(wf['averageHR'].take([-2])[0]),
|
|
|
- 'averageHR0w' : round_float(wf['averageHR'].take([-1])[0]),
|
|
|
- 'maxHRtotal' : round(df['maxHR'].max()),
|
|
|
- 'maxHR0y' : round(df['maxHR'].take([-1])[0]),
|
|
|
- 'maxHR1y' : round(df['maxHR'].take([-2])[0]),
|
|
|
- 'maxHR1m' : round(mf['maxHR'].take([-2])[0]),
|
|
|
- 'maxHR0m' : round(mf['maxHR'].take([-1])[0]),
|
|
|
- 'maxHR1w' : round_float(wf['maxHR'].take([-2])[0]),
|
|
|
- 'maxHR0w' : round_float(wf['maxHR'].take([-1])[0]),
|
|
|
- 'intensityMinutestotal' : round(df['intensityMinutes'].sum()),
|
|
|
- 'intensityMinutes0y' : round(yf['intensityMinutes'].take([-1])[0]),
|
|
|
- 'intensityMinutes1y' : round(yf['intensityMinutes'].take([-2])[0]),
|
|
|
- 'intensityMinutes1m' : round(mf['intensityMinutes'].take([-2])[0]),
|
|
|
- 'intensityMinutes0m' : round(mf['intensityMinutes'].take([-1])[0]),
|
|
|
- 'intensityMinutes1w' : round(wf['intensityMinutes'].take([-2])[0]),
|
|
|
- 'intensityMinutes0w' : round(wf['intensityMinutes'].take([-1])[0]),
|
|
|
+
|
|
|
+ d = { 'elevationtotal' : df['elevationGain'].sum(),
|
|
|
+ 'elevation0y' : yf['elevationGain'].take([-1])[0],
|
|
|
+ 'elevation1y' : yf['elevationGain'].take([-2])[0],
|
|
|
+ 'elevation1m' : mf['elevationGain'].take([-2])[0],
|
|
|
+ 'elevation0m' : mf['elevationGain'].take([-1])[0],
|
|
|
+ 'elevation1w' : wf['elevationGain'].take([-2])[0],
|
|
|
+ 'elevation0w' : wf['elevationGain'].take([-1])[0],
|
|
|
+ # '0w' : wf.take([-1]).keys,
|
|
|
+ 'distancetotal' : round(df['distance'].sum(), 1),
|
|
|
+ 'distance0y' : round(yf['distance'].take([-1])[0], 1),
|
|
|
+ 'distance1y' : round(yf['distance'].take([-2])[0], 1),
|
|
|
+ 'distance1m' : round(mf['distance'].take([-2])[0], 1),
|
|
|
+ 'distance0m' : round(mf['distance'].take([-1])[0], 1),
|
|
|
+ 'distance1w' : round(wf['distance'].take([-2])[0], 1),
|
|
|
+ 'distance0w' : round(wf['distance'].take([-1])[0], 1),
|
|
|
+ 'durationtotal' : sec2time(df['movingDuration'].sum(), 0),
|
|
|
+ 'duration0y' : sec2time(yf['movingDuration'].take([-1])[0], 0),
|
|
|
+ 'duration1y' : sec2time(yf['movingDuration'].take([-2])[0], 0),
|
|
|
+ 'duration1m' : sec2time(mf['movingDuration'].take([-2])[0], 0),
|
|
|
+ 'duration0m' : sec2time(mf['movingDuration'].take([-1])[0], 0),
|
|
|
+ 'duration1w' : sec2time(wf['movingDuration'].take([-2])[0], 0),
|
|
|
+ 'duration0w' : sec2time(wf['movingDuration'].take([-1])[0], 0),
|
|
|
+ 'averageHRtotal' : round(df['averageHR'].mean()),
|
|
|
+ 'averageHR0y' : safe_round(df['averageHR'].take([-1])[0]),
|
|
|
+ 'averageHR1y' : safe_round(df['averageHR'].take([-2])[0]),
|
|
|
+ 'averageHR1m' : safe_round(mf['averageHR'].take([-2])[0]),
|
|
|
+ 'averageHR0m' : safe_round(mf['averageHR'].take([-1])[0]),
|
|
|
+ 'averageHR1w' : round_float(wf['averageHR'].take([-2])[0]),
|
|
|
+ 'averageHR0w' : round_float(wf['averageHR'].take([-1])[0]),
|
|
|
+ 'maxHRtotal' : round(df['maxHR'].max()),
|
|
|
+ 'maxHR0y' : safe_round(df['maxHR'].take([-1])[0]),
|
|
|
+ 'maxHR1y' : safe_round(df['maxHR'].take([-2])[0]),
|
|
|
+ 'maxHR1m' : safe_round(mf['maxHR'].take([-2])[0]),
|
|
|
+ 'maxHR0m' : safe_round(mf['maxHR'].take([-1])[0]),
|
|
|
+ 'maxHR1w' : round_float(wf['maxHR'].take([-2])[0]),
|
|
|
+ 'maxHR0w' : round_float(wf['maxHR'].take([-1])[0]),
|
|
|
+ 'intensityMinutestotal' : round(df['intensityMinutes'].sum()),
|
|
|
+ 'intensityMinutes0y' : round(yf['intensityMinutes'].take([-1])[0]),
|
|
|
+ 'intensityMinutes1y' : round(yf['intensityMinutes'].take([-2])[0]),
|
|
|
+ 'intensityMinutes1m' : round(mf['intensityMinutes'].take([-2])[0]),
|
|
|
+ 'intensityMinutes0m' : round(mf['intensityMinutes'].take([-1])[0]),
|
|
|
+ 'intensityMinutes1w' : round(wf['intensityMinutes'].take([-2])[0]),
|
|
|
+ 'intensityMinutes0w' : round(wf['intensityMinutes'].take([-1])[0]),
|
|
|
}
|
|
|
return(d)
|
|
|
|