From 1f40893b00e095846cedcb32feebc6e484a90380 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 9 Apr 2017 11:04:20 +0200 Subject: [PATCH] metrics definitions in separate file --- rowers/forms.py | 2 +- rowers/interactiveplots.py | 31 +--------------- rowers/metrics.py | 30 ++++++++++++++++ rowers/models.py | 72 +++++++------------------------------- 4 files changed, 45 insertions(+), 90 deletions(-) create mode 100644 rowers/metrics.py diff --git a/rowers/forms.py b/rowers/forms.py index 8e35e8c4..e9e4f31e 100644 --- a/rowers/forms.py +++ b/rowers/forms.py @@ -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') diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 8b514d66..0fe5bfe6 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -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 diff --git a/rowers/metrics.py b/rowers/metrics.py new file mode 100644 index 00000000..c92dfba2 --- /dev/null +++ b/rowers/metrics.py @@ -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} diff --git a/rowers/models.py b/rowers/models.py index 6c581794..ee55c678 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -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')