quiske v2 improvements
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 }}/"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user