Private
Public Access
1
0

quiske v2 improvements

This commit is contained in:
Sander Roosendaal
2022-10-13 14:10:24 +02:00
parent 9a93779009
commit 7340178827
7 changed files with 43 additions and 2 deletions

View File

@@ -986,7 +986,8 @@ def checkbreakthrough(w, r):
coach.user.email, coach.user.email,
r.user.first_name, r.user.first_name,
r.user.last_name, r.user.last_name,
btvalues=btvalues.to_json()) btvalues=btvalues.to_json(),
surname=True)
# submit email task to send email about breakthrough workout # submit email task to send email about breakthrough workout
if ishard: # pragma: no cover if ishard: # pragma: no cover

View File

@@ -4081,6 +4081,7 @@ def interactive_streamchart(id=0, promember=0):
def instroke_multi_interactive_chart(selected): def instroke_multi_interactive_chart(selected):
df_plot = pd.DataFrame() df_plot = pd.DataFrame()
ids = [analysis.id for analysis in selected] ids = [analysis.id for analysis in selected]
metrics = list(set([analysis.metric for analysis in selected]))
for analysis in selected: for analysis in selected:
#start_second, end_second, spm_min, spm_max, name #start_second, end_second, spm_min, spm_max, name
activeminutesmin = int(analysis.start_second/60.) activeminutesmin = int(analysis.start_second/60.)
@@ -4094,6 +4095,8 @@ def instroke_multi_interactive_chart(selected):
activeminutesmax=activeminutesmax, activeminutesmax=activeminutesmax,
) )
mean_vals = data.mean() mean_vals = data.mean()
if len(metrics)>1:
mean_vals = mean_vals/mean_vals.max()
xvals = np.arange(len(mean_vals)) xvals = np.arange(len(mean_vals))
xname = 'x_'+str(analysis.id) xname = 'x_'+str(analysis.id)
yname = 'y_'+str(analysis.id) yname = 'y_'+str(analysis.id)
@@ -4124,6 +4127,11 @@ def instroke_multi_interactive_chart(selected):
plot.extra_y_ranges = {"watermark": watermarkrange} plot.extra_y_ranges = {"watermark": watermarkrange}
plot.extra_x_ranges = {"watermark": watermarkrange} plot.extra_x_ranges = {"watermark": watermarkrange}
if len(metrics)>1:
plot.yaxis.axis_label = 'Scaled'
else:
plot.yaxis.axis_label = metrics[0]
plot.image_url([watermarkurl], watermarkx, watermarky, plot.image_url([watermarkurl], watermarkx, watermarky,
watermarkw, watermarkh, watermarkw, watermarkh,
global_alpha=watermarkalpha, global_alpha=watermarkalpha,
@@ -4146,7 +4154,13 @@ def instroke_multi_interactive_chart(selected):
xname = 'x_'+str(id) xname = 'x_'+str(id)
yname = 'y_'+str(id) yname = 'y_'+str(id)
analysis = InStrokeAnalysis.objects.get(id=id) analysis = InStrokeAnalysis.objects.get(id=id)
plot.line(xname,yname,source=source,legend_label=analysis.name, legendlabel = '{name} - {metric} - {workout}'.format(
name = analysis.name,
metric = analysis.metric,
date = analysis.date,
workout = str(analysis.workout)
)
plot.line(xname,yname,source=source,legend_label=legendlabel,
line_width=2, color=color) line_width=2, color=color)
script, div = components(plot) script, div = components(plot)

View File

@@ -1709,11 +1709,17 @@ def handle_sendemail_expired(useremail, userfirstname, userlastname, expireddate
def handle_sendemail_breakthrough(workoutid, useremail, def handle_sendemail_breakthrough(workoutid, useremail,
userfirstname, userlastname, userfirstname, userlastname,
btvalues=pd.DataFrame().to_json(), btvalues=pd.DataFrame().to_json(),
surname=False,
**kwargs): **kwargs):
btvalues = pd.read_json(btvalues) btvalues = pd.read_json(btvalues)
btvalues.sort_values('delta', axis=0, inplace=True) btvalues.sort_values('delta', axis=0, inplace=True)
lastname = ''
if surname:
lastname = userlastname
tablevalues = [ tablevalues = [
{'delta': t.delta, {'delta': t.delta,
'time': str(timedelta(seconds=t.delta)), 'time': str(timedelta(seconds=t.delta)),
@@ -1728,6 +1734,7 @@ def handle_sendemail_breakthrough(workoutid, useremail,
d = { d = {
'first_name': userfirstname, 'first_name': userfirstname,
'last_name': lastname,
'siteurl': siteurl, 'siteurl': siteurl,
'workoutid': encoder.encode_hex(workoutid), 'workoutid': encoder.encode_hex(workoutid),
'btvalues': tablevalues, 'btvalues': tablevalues,
@@ -1749,6 +1756,7 @@ def handle_sendemail_breakthrough(workoutid, useremail,
def handle_sendemail_hard(workoutid, useremail, def handle_sendemail_hard(workoutid, useremail,
userfirstname, userlastname, userfirstname, userlastname,
btvalues=pd.DataFrame().to_json(), btvalues=pd.DataFrame().to_json(),
surname=False,
debug=False, **kwargs): debug=False, **kwargs):
btvalues = pd.read_json(btvalues) btvalues = pd.read_json(btvalues)
@@ -1761,12 +1769,17 @@ def handle_sendemail_hard(workoutid, useremail,
} for t in btvalues.itertuples() } for t in btvalues.itertuples()
] ]
lastname = ''
if surname:
lastname = userlastname
# send email with attachment # send email with attachment
subject = "That was a pretty hard workout on rowsandall.com" subject = "That was a pretty hard workout on rowsandall.com"
from_email = 'Rowsandall <info@rowsandall.com>' from_email = 'Rowsandall <info@rowsandall.com>'
d = { d = {
'first_name': userfirstname, 'first_name': userfirstname,
'last_name': lastname,
'siteurl': siteurl, 'siteurl': siteurl,
'workoutid': encoder.encode_hex(workoutid), 'workoutid': encoder.encode_hex(workoutid),
'btvalues': tablevalues, 'btvalues': tablevalues,

View File

@@ -1,7 +1,11 @@
{% extends "emailbase.html" %} {% extends "emailbase.html" %}
{% block body %} {% block body %}
{% if last_name %}
<p>Dear <strong>{{ first_name }} {{ last_name }}</strong>,</p>
{% else %}
<p>Dear <strong>{{ first_name }}</strong>,</p> <p>Dear <strong>{{ first_name }}</strong>,</p>
{% endif %}
<p> <p>
Congratulations! Your recent workout has been analyzed Congratulations! Your recent workout has been analyzed

View File

@@ -1,7 +1,11 @@
{% extends "emailbase.html" %} {% extends "emailbase.html" %}
{% block body %} {% block body %}
{% if last_name %}
<p>Dear <strong>{{ first_name }} {{ last_name }}</strong>,</p>
{% else %}
<p>Dear <strong>{{ first_name }}</strong>,</p> <p>Dear <strong>{{ first_name }}</strong>,</p>
{% endif %}
<p> <p>
Congratulations! Your recent workout has been analyzed Congratulations! Your recent workout has been analyzed

View File

@@ -35,7 +35,11 @@
<div><h3>{{ analysis.name }}</h3></div> <div><h3>{{ analysis.name }}</h3></div>
<div class="analysiscontainer"> <div class="analysiscontainer">
<div class="workoutelement"> <div class="workoutelement">
{% if analysis in selected %}
<input type="checkbox" name="analyses" value="{{ analysis.id }}" id="analyses_{{ analysis.id }}" checked>
{% else %}
<input type="checkbox" name="analyses" value="{{ analysis.id }}" id="analyses_{{ analysis.id }}"> <input type="checkbox" name="analyses" value="{{ analysis.id }}" id="analyses_{{ analysis.id }}">
{% endif %}
</div> </div>
<div class="workoutelement"> <div class="workoutelement">
<a class="small" href="/rowers/workout/{{ analysis.workout.id|encode }}/instroke/interactive/{{ analysis.id }}/" <a class="small" href="/rowers/workout/{{ analysis.workout.id|encode }}/instroke/interactive/{{ analysis.id }}/"

View File

@@ -1886,6 +1886,7 @@ def instrokeanalysis_view(request, userid=0):
'rower': r, 'rower': r,
'the_script': script, 'the_script': script,
'the_div': div, 'the_div': div,
'selected': selected,
}) })
#instroke analysis delete view #instroke analysis delete view