Merge branch 'feature/minuteaxis' into develop
This commit is contained in:
@@ -29,7 +29,9 @@ from bokeh.layouts import layout,widgetbox
|
||||
from bokeh.palettes import Category20c,Category10
|
||||
from bokeh.layouts import row as layoutrow
|
||||
from bokeh.layouts import column as layoutcolumn
|
||||
from bokeh.models import LinearAxis,LogAxis,Range1d,DatetimeTickFormatter,HoverTool
|
||||
from bokeh.models import (
|
||||
LinearAxis,LogAxis,Range1d,DatetimeTickFormatter,HoverTool,Axis,PrintfTickFormatter
|
||||
)
|
||||
#from bokeh.io import output_file, show, vplot
|
||||
from bokeh.models import (
|
||||
GMapPlot, GMapOptions, ColumnDataSource, Circle,
|
||||
@@ -2896,12 +2898,15 @@ def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data',
|
||||
|
||||
deltas = powerdf['Delta'].apply(lambda x: timedeltaconv(x))
|
||||
powerdf['ftime'] = niceformat(deltas)
|
||||
powerdf['Deltaminutes'] = powerdf['Delta']/60.
|
||||
|
||||
|
||||
source = ColumnDataSource(
|
||||
data = powerdf
|
||||
)
|
||||
|
||||
|
||||
|
||||
# there is no Paul's law for OTW
|
||||
|
||||
thesecs = powerdf['Delta']
|
||||
@@ -2933,7 +2938,7 @@ def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data',
|
||||
data = dict(
|
||||
CP = fitpower,
|
||||
CPmax = ratio*fitpower,
|
||||
duration = fitt,
|
||||
duration = fitt/60.,
|
||||
ftime = ftime,
|
||||
workout = workouts,
|
||||
)
|
||||
@@ -2960,6 +2965,8 @@ def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data',
|
||||
plot.extra_y_ranges = {"watermark": watermarkrange}
|
||||
plot.sizing_mode = 'scale_width'
|
||||
|
||||
|
||||
|
||||
plot.image_url([watermarkurl],1.8*max(thesecs),watermarky,
|
||||
watermarkw,watermarkh,
|
||||
global_alpha=watermarkalpha,
|
||||
@@ -2970,18 +2977,22 @@ def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data',
|
||||
y_range_name = "watermark",
|
||||
)
|
||||
|
||||
plot.circle('Delta','CP',source=source,fill_color='red',size=15,
|
||||
plot.circle('Deltaminutes','CP',source=source,fill_color='red',size=15,
|
||||
legend='Power Data')
|
||||
plot.xaxis.axis_label = "Duration (seconds)"
|
||||
plot.xaxis.axis_label = "Duration (minutes)"
|
||||
plot.yaxis.axis_label = "Power (W)"
|
||||
|
||||
plot.y_range = Range1d(0,1.5*max(theavpower))
|
||||
plot.x_range = Range1d(1,2*max(thesecs))
|
||||
plot.x_range = Range1d(0.5*min(thesecs)/60.,2*max(thesecs)/60.)
|
||||
plot.legend.orientation = "vertical"
|
||||
if not title:
|
||||
title = "Critical Power for "+rowername
|
||||
plot.title.text = title
|
||||
|
||||
xaxis = plot.select(dict(type=Axis, layout="below"))[0]
|
||||
xaxis.formatter = PrintfTickFormatter()
|
||||
|
||||
|
||||
hover = plot.select(dict(type=HoverTool))
|
||||
|
||||
hover.tooltips = OrderedDict([
|
||||
|
||||
@@ -84,6 +84,17 @@
|
||||
<p>
|
||||
Select workouts and make X-Y charts of averages over various metrics
|
||||
</p>
|
||||
</li>
|
||||
<li class="rounder">
|
||||
<h2>Critical Power</h2>
|
||||
<a href="/rowers/user-analysis-select/cp/">
|
||||
<div class="vignet">
|
||||
<img src="/static/img/otwcp.png" alt="Critical Power">
|
||||
</div>
|
||||
</a>
|
||||
<p>
|
||||
Analyse power vs piece duration to make predictions.
|
||||
</p>
|
||||
</li>
|
||||
<li class="rounder">
|
||||
<h2>Power Progress</h2>
|
||||
@@ -96,29 +107,6 @@
|
||||
Monitoring power duration evidence from all your workouts. Feel free to explore.
|
||||
</p>
|
||||
</li>
|
||||
<li class="rounder">
|
||||
<h2>Ranking Pieces</h2>
|
||||
<a href="/rowers/ote-bests2/">
|
||||
<div class="vignet">
|
||||
<img src="/static/img/rankingpiece.png"
|
||||
alt="Ranking Piece">
|
||||
</div>
|
||||
</a>
|
||||
<p>
|
||||
Analyze your Concept2 ranking pieces over a date range and predict your pace on other pieces.
|
||||
</p>
|
||||
</li>
|
||||
<li class="rounder">
|
||||
<h2>Critical Power</h2>
|
||||
<a href="/rowers/user-analysis-select/cp/">
|
||||
<div class="vignet">
|
||||
<img src="/static/img/otwcp.png" alt="Critical Power">
|
||||
</div>
|
||||
</a>
|
||||
<p>
|
||||
Analyse power vs piece duration to make predictions.
|
||||
</p>
|
||||
</li>
|
||||
<li class="rounder">
|
||||
<h2>Alerts</h2>
|
||||
<a href="/rowers/alerts/">
|
||||
@@ -130,6 +118,18 @@
|
||||
<p>
|
||||
Need to monitor a metric? Set up automatic alerting and see the reports for your workouts.
|
||||
</p>
|
||||
</li>
|
||||
<li class="rounder">
|
||||
<h2>Ranking Pieces</h2>
|
||||
<a href="/rowers/ote-bests2/">
|
||||
<div class="vignet">
|
||||
<img src="/static/img/rankingpiece.png"
|
||||
alt="Ranking Piece">
|
||||
</div>
|
||||
</a>
|
||||
<p>
|
||||
Analyze your Concept2 ranking pieces over a date range and predict your pace on other pieces.
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -42,15 +42,15 @@
|
||||
<i class="far fa-watch-fitness fa-fw"></i> Power Progress
|
||||
</a>
|
||||
</li>
|
||||
<li id="fitness-ranking">
|
||||
<a href="/rowers/ote-bests2/">
|
||||
<i class="fas fa-star fa-fw"></i> Ranking Pieces
|
||||
</a>
|
||||
</li>
|
||||
<li id="fitness-otecp">
|
||||
<a href="/rowers/user-analysis-select/cp/">
|
||||
<i class="fas fa-user-chart fa-fw"></i> CP Chart
|
||||
</a>
|
||||
</li>
|
||||
<li id="fitness-ranking">
|
||||
<a href="/rowers/ote-bests2/">
|
||||
<i class="fas fa-star fa-fw"></i> Ranking Pieces
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
Reference in New Issue
Block a user