Private
Public Access
1
0

metrics definitions in separate file

This commit is contained in:
Sander Roosendaal
2017-04-09 11:04:20 +02:00
parent 276c1637a1
commit 1f40893b00
4 changed files with 45 additions and 90 deletions

View File

@@ -259,7 +259,7 @@ class WorkoutMultipleCompareForm(forms.Form):
workouts = forms.ModelMultipleChoiceField(queryset=Workout.objects.all(),
widget=forms.CheckboxSelectMultiple())
from rowers.interactiveplots import axlabels
from rowers.metrics import axlabels
formaxlabels = axlabels.copy()
formaxlabels.pop('None')

View File

@@ -50,36 +50,7 @@ import stravastuff
from rowers.dataprep import rdata
import rowers.dataprep as dataprep
axes = (
('time','Time',0,1e5,'basic'),
('distance', 'Distance (m)',0,1e5,'basic'),
('cumdist', 'Cumulative Distance (m)',0,1e5,'basic'),
('hr','Heart Rate (bpm)',100,200,'basic'),
('spm', 'Stroke Rate (spm)',15,45,'basic'),
('pace', 'Pace (/500m)',1.0e3*210,1.0e3*75,'basic'),
('power', 'Power (Watt)',0,600,'basic'),
('averageforce', 'Average Drive Force (lbs)',0,200,'pro'),
('drivelength', 'Drive Length (m)',0.5,2.0,'pro'),
('peakforce', 'Peak Drive Force (lbs)',0,400,'pro'),
('forceratio', 'Average/Peak Force Ratio',0,1,'pro'),
('driveenergy', 'Work per Stroke (J)',0,1000,'pro'),
('drivespeed', 'Drive Speed (m/s)',0,4,'pro'),
('slip', 'Slip (degrees)',0,20,'pro'),
('catch', 'Catch (degrees)',-40,-75,'pro'),
('finish', 'Finish (degrees)',20,55,'pro'),
('wash', 'Wash (degrees)',0,30,'pro'),
('peakforceangle', 'Peak Force Angle (degrees)',-20,20,'pro'),
('totalangle', 'Drive Length (deg)',40,140,'pro'),
('effectiveangle', 'Effective Drive Length (deg)',40,140,'pro'),
('rhythm', 'Stroke Rhythm (%)',20,55,'pro'),
('None', 'None',0,1,'basic'),
)
axlabels = {ax[0]:ax[1] for ax in axes}
yaxminima = {ax[0]:ax[2] for ax in axes}
yaxmaxima = {ax[0]:ax[3] for ax in axes}
from rowers.metrics import axes,axlabels,yaxminima,yaxmaxima
def tailwind(bearing,vwind,winddir):
""" Calculates head-on head/tailwind in direction of rowing

30
rowers/metrics.py Normal file
View File

@@ -0,0 +1,30 @@
axes = (
('time','Time',0,1e5,'basic'),
('distance', 'Distance (m)',0,1e5,'basic'),
('cumdist', 'Cumulative Distance (m)',0,1e5,'basic'),
('hr','Heart Rate (bpm)',100,200,'basic'),
('spm', 'Stroke Rate (spm)',15,45,'basic'),
('pace', 'Pace (/500m)',1.0e3*210,1.0e3*75,'basic'),
('power', 'Power (Watt)',0,600,'basic'),
('averageforce', 'Average Drive Force (lbs)',0,200,'pro'),
('drivelength', 'Drive Length (m)',0.5,2.0,'pro'),
('peakforce', 'Peak Drive Force (lbs)',0,400,'pro'),
('forceratio', 'Average/Peak Force Ratio',0,1,'pro'),
('driveenergy', 'Work per Stroke (J)',0,1000,'pro'),
('drivespeed', 'Drive Speed (m/s)',0,4,'pro'),
('slip', 'Slip (degrees)',0,20,'pro'),
('catch', 'Catch (degrees)',-40,-75,'pro'),
('finish', 'Finish (degrees)',20,55,'pro'),
('wash', 'Wash (degrees)',0,30,'pro'),
('peakforceangle', 'Peak Force Angle (degrees)',-20,20,'pro'),
('totalangle', 'Drive Length (deg)',40,140,'pro'),
('effectiveangle', 'Effective Drive Length (deg)',40,140,'pro'),
('rhythm', 'Stroke Rhythm (%)',20,55,'pro'),
('None', 'None',0,1,'basic'),
)
axlabels = {ax[0]:ax[1] for ax in axes}
yaxminima = {ax[0]:ax[2] for ax in axes}
yaxmaxima = {ax[0]:ax[3] for ax in axes}

View File

@@ -242,64 +242,18 @@ def auto_delete_teams_on_change(sender, instance, **kwargs):
teams = Team.objects.filter(manager=instance.user)
for team in teams:
team.delete()
from rowers.metrics import axlabels
favchartlabelsx = axlabels.copy()
favchartlabelsy1 = axlabels.copy()
favchartlabelsy2 = axlabels.copy()
favchartlabelsy1.pop('None')
parchoicesy1 = list(sorted(favchartlabelsy1.items(), key = lambda x:x[1]))
parchoicesy2 = list(sorted(favchartlabelsy2.items(), key = lambda x:x[1]))
parchoicesx = list(sorted(favchartlabelsx.items(), key = lambda x:x[1]))
# Saving a chart as a favorite chart
class FavoriteChart(models.Model):
y1params = (
('hr','Heart Rate'),
('pace','Pace'),
('spm','SPM'),
('driveenergy','Work per Stroke'),
('power','Power'),
('drivelength','Drivelength'),
('averageforce','Average Force'),
('peakforce','Peak Force'),
('forceratio','Average/Peak Force Ratio'),
('drivespeed','Drive Speed'),
('wash','Wash'),
('slip','Slip'),
('catch','Catch Angle'),
('finish','Finish Angle'),
('peakforceangle','Peak Force Angle')
)
y2params = (
('hr','Heart Rate'),
('spm','SPM'),
('driveenergy','Work per Stroke'),
('power','Power'),
('drivelength','Drivelength'),
('averageforce','Average Force'),
('peakforce','Peak Force'),
('forceratio','Average/Peak Force Ratio'),
('drivespeed','Drive Speed'),
('wash','Wash'),
('slip','Slip'),
('catch','Catch Angle'),
('finish','Finish Angle'),
('peakforceangle','Peak Force Angle'),
('None','None')
)
xparams = (
('time','Time'),
('distance','Distance'),
('hr','Heart Rate'),
('spm','SPM'),
('driveenergy','Work per Stroke'),
('power','Power'),
('drivelength','Drivelength'),
('averageforce','Average Force'),
('peakforce','Peak Force'),
('forceratio','Average/Peak Force Ratio'),
('drivespeed','Drive Speed'),
('wash','Wash'),
('slip','Slip'),
('catch','Catch Angle'),
('finish','Finish Angle'),
('peakforceangle','Peak Force Angle'),
)
workouttypechoices = (
('ote','Erg/SkiErg'),
('otw','On The Water'),
@@ -311,9 +265,9 @@ class FavoriteChart(models.Model):
('scatter','Scatter Chart')
)
yparam1 = models.CharField(max_length=50,choices=y1params,verbose_name='Y1')
yparam2 = models.CharField(max_length=50,choices=y2params,verbose_name='Y2',default='None',blank=True)
xparam = models.CharField(max_length=50,choices=xparams,verbose_name='X')
yparam1 = models.CharField(max_length=50,choices=parchoicesy1,verbose_name='Y1')
yparam2 = models.CharField(max_length=50,choices=parchoicesy2,verbose_name='Y2',default='None',blank=True)
xparam = models.CharField(max_length=50,choices=parchoicesx,verbose_name='X')
plottype = models.CharField(max_length=50,choices=plottypes,
default='line',
verbose_name='Chart Type')