metrics definitions in separate file
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -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
30
rowers/metrics.py
Normal 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}
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user