diff --git a/rowers/forms.py b/rowers/forms.py index 81dcf643..27bc35bc 100644 --- a/rowers/forms.py +++ b/rowers/forms.py @@ -1057,9 +1057,7 @@ class AnalysisOptionsForm(forms.Form): waterboattype = forms.MultipleChoiceField(choices=boattypes, label='Water Boat Type', initial = mytypes.waterboattype) - rankingonly = forms.BooleanField(initial=False, - label='Only Ranking Pieces', - required=False) + # form to select modality and boat type for trend flex @@ -1070,17 +1068,14 @@ class TrendFlexModalForm(forms.Form): waterboattype = forms.MultipleChoiceField(choices=boattypes, label='Water Boat Type', initial = mytypes.waterboattype) - rankingonly = forms.BooleanField(initial=False, - label='Only Ranking Pieces', - required=False) + # This form sets options for the summary stats page class StatsOptionsForm(forms.Form): includereststrokes = forms.BooleanField(initial=False,label='Include Rest Strokes',required=False) - rankingonly = forms.BooleanField(initial=False, - label='Only Ranking Pieces',required=False) + water = forms.BooleanField(initial=False,required=False) waterboattype = forms.MultipleChoiceField(choices=boattypes, label='Water Boat Type', diff --git a/rowers/mytypes.py b/rowers/mytypes.py index 8ba51758..fc249da2 100644 --- a/rowers/mytypes.py +++ b/rowers/mytypes.py @@ -41,6 +41,39 @@ workouttypes_ordered = collections.OrderedDict({ } ) +workouttypes_icons = collections.OrderedDict({ + 'water':'rowing.svg', # g + 'rower':'indoor_rower.svg', # g + 'skierg':'ski_erg.svg', #g + 'bikeerg':'bike_erg.svg', #g + 'dynamic':'indoor_rower.svg', + 'slides':'indoor_rower.svg', + 'paddle':'paddle.svg', # could be better + 'snow':'cross_country_ski.svg', # ok + 'coastal':'rowing.svg', # ok + 'c-boat':'rowing.svg', # ok + 'churchboat':'rowing.svg', # ok + 'Ride':'bike.svg', # ok + 'bike':'bike.svg', # ok + 'Run':'run.svg', # ok + 'NordicSki':'cross_country_ski.svg', # ok + 'Swim':'swim.svg', # ok + 'Hike':'hike.svg', # ok + 'Walk':'walk.svg', # o k + 'Canoeing':'canoeing.svg', # ok + 'Crossfit':'crossfit.svg', # ok + 'StandUpPaddling':'standup_paddling.svg', # ok + 'IceSkate':'ice_skating.svg', # ok + 'WeightTraining':'weight_training.svg', # ok + 'InlineSkate':'inline_skating.svg', + 'Kayaking':'kayaking.svg', # ok + 'Workout':'workout.svg', + 'Yoga':'yoga.svg', +# 'bike':'Bike', + 'other':'other.svg', + } +) + workouttypes = tuple((key, value) for key, value in workouttypes_ordered.items()) def Reverse(tuples): diff --git a/rowers/templates/__MACOSX/svg/._bike.svg b/rowers/templates/__MACOSX/svg/._bike.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._bike.svg differ diff --git a/rowers/templates/__MACOSX/svg/._bike_erg.svg b/rowers/templates/__MACOSX/svg/._bike_erg.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._bike_erg.svg differ diff --git a/rowers/templates/__MACOSX/svg/._canoeing.svg b/rowers/templates/__MACOSX/svg/._canoeing.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._canoeing.svg differ diff --git a/rowers/templates/__MACOSX/svg/._cross_country_ski.svg b/rowers/templates/__MACOSX/svg/._cross_country_ski.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._cross_country_ski.svg differ diff --git a/rowers/templates/__MACOSX/svg/._crossfit.svg b/rowers/templates/__MACOSX/svg/._crossfit.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._crossfit.svg differ diff --git a/rowers/templates/__MACOSX/svg/._hike.svg b/rowers/templates/__MACOSX/svg/._hike.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._hike.svg differ diff --git a/rowers/templates/__MACOSX/svg/._ice_skating.svg b/rowers/templates/__MACOSX/svg/._ice_skating.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._ice_skating.svg differ diff --git a/rowers/templates/__MACOSX/svg/._indoor_rower.svg b/rowers/templates/__MACOSX/svg/._indoor_rower.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._indoor_rower.svg differ diff --git a/rowers/templates/__MACOSX/svg/._inline_skating.svg b/rowers/templates/__MACOSX/svg/._inline_skating.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._inline_skating.svg differ diff --git a/rowers/templates/__MACOSX/svg/._kayaking.svg b/rowers/templates/__MACOSX/svg/._kayaking.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._kayaking.svg differ diff --git a/rowers/templates/__MACOSX/svg/._other.svg b/rowers/templates/__MACOSX/svg/._other.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._other.svg differ diff --git a/rowers/templates/__MACOSX/svg/._paddle.svg b/rowers/templates/__MACOSX/svg/._paddle.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._paddle.svg differ diff --git a/rowers/templates/__MACOSX/svg/._rowing.svg b/rowers/templates/__MACOSX/svg/._rowing.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._rowing.svg differ diff --git a/rowers/templates/__MACOSX/svg/._run.svg b/rowers/templates/__MACOSX/svg/._run.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._run.svg differ diff --git a/rowers/templates/__MACOSX/svg/._ski_erg.svg b/rowers/templates/__MACOSX/svg/._ski_erg.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._ski_erg.svg differ diff --git a/rowers/templates/__MACOSX/svg/._standup_paddling.svg b/rowers/templates/__MACOSX/svg/._standup_paddling.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._standup_paddling.svg differ diff --git a/rowers/templates/__MACOSX/svg/._swim.svg b/rowers/templates/__MACOSX/svg/._swim.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._swim.svg differ diff --git a/rowers/templates/__MACOSX/svg/._walk.svg b/rowers/templates/__MACOSX/svg/._walk.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._walk.svg differ diff --git a/rowers/templates/__MACOSX/svg/._weight_training.svg b/rowers/templates/__MACOSX/svg/._weight_training.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._weight_training.svg differ diff --git a/rowers/templates/__MACOSX/svg/._workout.svg b/rowers/templates/__MACOSX/svg/._workout.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._workout.svg differ diff --git a/rowers/templates/__MACOSX/svg/._yoga.svg b/rowers/templates/__MACOSX/svg/._yoga.svg new file mode 100644 index 00000000..61066ba6 Binary files /dev/null and b/rowers/templates/__MACOSX/svg/._yoga.svg differ diff --git a/rowers/templates/bike.svg b/rowers/templates/bike.svg new file mode 100644 index 00000000..50a78948 --- /dev/null +++ b/rowers/templates/bike.svg @@ -0,0 +1,25 @@ + + + + + + diff --git a/rowers/templates/bike_erg.svg b/rowers/templates/bike_erg.svg new file mode 100644 index 00000000..05fd9ddd --- /dev/null +++ b/rowers/templates/bike_erg.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/rowers/templates/canoeing.svg b/rowers/templates/canoeing.svg new file mode 100644 index 00000000..6fd77453 --- /dev/null +++ b/rowers/templates/canoeing.svg @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/rowers/templates/cross_country_ski.svg b/rowers/templates/cross_country_ski.svg new file mode 100644 index 00000000..053971dc --- /dev/null +++ b/rowers/templates/cross_country_ski.svg @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/rowers/templates/crossfit.svg b/rowers/templates/crossfit.svg new file mode 100644 index 00000000..94424445 --- /dev/null +++ b/rowers/templates/crossfit.svg @@ -0,0 +1,27 @@ + + + + + + diff --git a/rowers/templates/hike.svg b/rowers/templates/hike.svg new file mode 100644 index 00000000..23d9c5b5 --- /dev/null +++ b/rowers/templates/hike.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/rowers/templates/ice_skating.svg b/rowers/templates/ice_skating.svg new file mode 100644 index 00000000..d6381b02 --- /dev/null +++ b/rowers/templates/ice_skating.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/rowers/templates/icons/bike.svg b/rowers/templates/icons/bike.svg new file mode 100644 index 00000000..53783f7f --- /dev/null +++ b/rowers/templates/icons/bike.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/rowers/templates/icons/bike_erg.svg b/rowers/templates/icons/bike_erg.svg new file mode 100644 index 00000000..b53b0f1f --- /dev/null +++ b/rowers/templates/icons/bike_erg.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/rowers/templates/icons/canoeing.svg b/rowers/templates/icons/canoeing.svg new file mode 100644 index 00000000..b749ff73 --- /dev/null +++ b/rowers/templates/icons/canoeing.svg @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/rowers/templates/icons/cross_country_ski.svg b/rowers/templates/icons/cross_country_ski.svg new file mode 100644 index 00000000..cf2207b7 --- /dev/null +++ b/rowers/templates/icons/cross_country_ski.svg @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/rowers/templates/icons/crossfit.svg b/rowers/templates/icons/crossfit.svg new file mode 100644 index 00000000..6f13a7b6 --- /dev/null +++ b/rowers/templates/icons/crossfit.svg @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/rowers/templates/icons/hike.svg b/rowers/templates/icons/hike.svg new file mode 100644 index 00000000..89fa0a01 --- /dev/null +++ b/rowers/templates/icons/hike.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/rowers/templates/icons/ice_skating.svg b/rowers/templates/icons/ice_skating.svg new file mode 100644 index 00000000..50fa4775 --- /dev/null +++ b/rowers/templates/icons/ice_skating.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/rowers/templates/icons/indoor_rower.svg b/rowers/templates/icons/indoor_rower.svg new file mode 100644 index 00000000..4eba251e --- /dev/null +++ b/rowers/templates/icons/indoor_rower.svg @@ -0,0 +1,24 @@ + + + + + + + + + diff --git a/rowers/templates/icons/inline_skating.svg b/rowers/templates/icons/inline_skating.svg new file mode 100644 index 00000000..1945100e --- /dev/null +++ b/rowers/templates/icons/inline_skating.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + diff --git a/rowers/templates/icons/kayaking.svg b/rowers/templates/icons/kayaking.svg new file mode 100644 index 00000000..b4bad483 --- /dev/null +++ b/rowers/templates/icons/kayaking.svg @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/rowers/templates/icons/other.svg b/rowers/templates/icons/other.svg new file mode 100644 index 00000000..b3be09c4 --- /dev/null +++ b/rowers/templates/icons/other.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/rowers/templates/icons/paddle.svg b/rowers/templates/icons/paddle.svg new file mode 100644 index 00000000..2bba600a --- /dev/null +++ b/rowers/templates/icons/paddle.svg @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/rowers/templates/icons/rowing.svg b/rowers/templates/icons/rowing.svg new file mode 100644 index 00000000..0644953d --- /dev/null +++ b/rowers/templates/icons/rowing.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/rowers/templates/icons/run.svg b/rowers/templates/icons/run.svg new file mode 100644 index 00000000..3445f4fb --- /dev/null +++ b/rowers/templates/icons/run.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/rowers/templates/icons/ski_erg.svg b/rowers/templates/icons/ski_erg.svg new file mode 100644 index 00000000..2041a06b --- /dev/null +++ b/rowers/templates/icons/ski_erg.svg @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/rowers/templates/icons/standup_paddling.svg b/rowers/templates/icons/standup_paddling.svg new file mode 100644 index 00000000..e60e9ace --- /dev/null +++ b/rowers/templates/icons/standup_paddling.svg @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/rowers/templates/icons/swim.svg b/rowers/templates/icons/swim.svg new file mode 100644 index 00000000..08633397 --- /dev/null +++ b/rowers/templates/icons/swim.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/rowers/templates/icons/walk.svg b/rowers/templates/icons/walk.svg new file mode 100644 index 00000000..5f91dc00 --- /dev/null +++ b/rowers/templates/icons/walk.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/rowers/templates/icons/weight_training.svg b/rowers/templates/icons/weight_training.svg new file mode 100644 index 00000000..b3510111 --- /dev/null +++ b/rowers/templates/icons/weight_training.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + diff --git a/rowers/templates/icons/workout.svg b/rowers/templates/icons/workout.svg new file mode 100644 index 00000000..f30fe27d --- /dev/null +++ b/rowers/templates/icons/workout.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/rowers/templates/icons/yoga.svg b/rowers/templates/icons/yoga.svg new file mode 100644 index 00000000..4a207e32 --- /dev/null +++ b/rowers/templates/icons/yoga.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/rowers/templates/indoor_rower.svg b/rowers/templates/indoor_rower.svg new file mode 100644 index 00000000..998e3e05 --- /dev/null +++ b/rowers/templates/indoor_rower.svg @@ -0,0 +1,24 @@ + + + + + + + + + diff --git a/rowers/templates/inline_skating.svg b/rowers/templates/inline_skating.svg new file mode 100644 index 00000000..06fd9308 --- /dev/null +++ b/rowers/templates/inline_skating.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + diff --git a/rowers/templates/kayaking.svg b/rowers/templates/kayaking.svg new file mode 100644 index 00000000..3027e2d7 --- /dev/null +++ b/rowers/templates/kayaking.svg @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/rowers/templates/list_workouts.html b/rowers/templates/list_workouts.html index d7fa0479..bb67af4b 100644 --- a/rowers/templates/list_workouts.html +++ b/rowers/templates/list_workouts.html @@ -12,32 +12,6 @@ type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js'> - {% endblock %} @@ -46,8 +20,11 @@ #mypointer { cursor: pointer; } + div.columns { width: 100%; } + div.columns div { width: 20%; padding: 10px; float: left; } + {% if team %}

{{ team.name }} Team Workouts

{% else %} @@ -97,16 +74,6 @@

- {% if rankingonly and not team %} - - Show All Workouts - - {% elif not team %} - - Show Only Ranking Pieces - - {% endif %} -

{% if workouts.has_previous %} @@ -153,143 +120,54 @@

-
  • {% if workouts %} - - - - - - - - - - - - - {% if not team %} - - {% else %} - - {% endif %} - - - {% for workout in workouts %} - {% if workout.rankingpiece %} - - {% else %} - - {% endif %} - - - - {% if workout|may_edit:request %} - {% if workout.name != '' %} - - {% else %} - - {% endif %} - {% else %} - {% if workout.name != '' %} - - {% else %} - - {% endif %} - {% endif %} - - - - - - {% if team %} - - {% endif %} - - - - - - - - + href={% url rower.defaultlandingpage id=workout.id|encode %} + title="Edit"> + + {% else %} +   + {% endif %} + + + {% endfor %} - -
    R Date Time Name Type Distance Duration Avg HR Max HR   - Owner -
    - {% if workout.rankingpiece %} - - {% else %} - - {% endif %} - {{ workout.date|date:"Y-m-d" }} {{ workout.starttime|date:"H:i" }} - +
  • + {{ workout.date|date:"Y-m-d" }} {{ workout.starttime|date:"H:i" }} +
  • - No Name - {{ workout.name }}No Name {{ workout.workouttype }} {{ workout.distance }}m {{ workout.duration |durationprint:"%H:%M:%S.%f" }} {{ workout.averagehr }} {{ workout.maxhr }} - {% if workout|may_edit:request %} - - {{ workout.user.user.first_name }} - {{ workout.user.user.last_name }} - - {% else %} - {{ workout.user.user.first_name }} - {{ workout.user.user.last_name }} - {% endif %} - - {% if workout|may_edit:request %} + + {% else %} +

    + No Name +

    + {% endif %} + +
    +
    + {% with workout.workouttype|icon|safe as templateName %} + {% include templateName %} + {% endwith %} +
    +
    + Distance
    + {{ workout.distance|distanceprint }} +
    +
    + Time
    + {{ workout.duration |durationprint:"%H:%M:%S.%f" }} +
    +
    + {% if workout|may_edit:request %} - - - {% else %} -   - {% endif %} -
    - - - - - - - - - - - - - - - - - {% if workout|may_edit:request %} - - - - {% else %} -   - {% endif %} -
    + {% else %} -

    No workouts found

    +
  • No workouts found
  • {% endif %} - {% if announcements %}
  • What's New?

    diff --git a/rowers/templates/other.svg b/rowers/templates/other.svg new file mode 100644 index 00000000..184ebc08 --- /dev/null +++ b/rowers/templates/other.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/rowers/templates/paddle.svg b/rowers/templates/paddle.svg new file mode 100644 index 00000000..2ce5dc3a --- /dev/null +++ b/rowers/templates/paddle.svg @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/rowers/templates/rowing.svg b/rowers/templates/rowing.svg new file mode 100644 index 00000000..478fbd8b --- /dev/null +++ b/rowers/templates/rowing.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/rowers/templates/run.svg b/rowers/templates/run.svg new file mode 100644 index 00000000..7fa18a46 --- /dev/null +++ b/rowers/templates/run.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/rowers/templates/ski_erg.svg b/rowers/templates/ski_erg.svg new file mode 100644 index 00000000..e788f26b --- /dev/null +++ b/rowers/templates/ski_erg.svg @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/rowers/templates/standup_paddling.svg b/rowers/templates/standup_paddling.svg new file mode 100644 index 00000000..b5d64b11 --- /dev/null +++ b/rowers/templates/standup_paddling.svg @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/rowers/templates/svg/bike.svg b/rowers/templates/svg/bike.svg new file mode 100644 index 00000000..50a78948 --- /dev/null +++ b/rowers/templates/svg/bike.svg @@ -0,0 +1,25 @@ + + + + + + diff --git a/rowers/templates/svg/bike_erg.svg b/rowers/templates/svg/bike_erg.svg new file mode 100644 index 00000000..05fd9ddd --- /dev/null +++ b/rowers/templates/svg/bike_erg.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/rowers/templates/svg/canoeing.svg b/rowers/templates/svg/canoeing.svg new file mode 100644 index 00000000..6fd77453 --- /dev/null +++ b/rowers/templates/svg/canoeing.svg @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/rowers/templates/svg/cross_country_ski.svg b/rowers/templates/svg/cross_country_ski.svg new file mode 100644 index 00000000..053971dc --- /dev/null +++ b/rowers/templates/svg/cross_country_ski.svg @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/rowers/templates/svg/crossfit.svg b/rowers/templates/svg/crossfit.svg new file mode 100644 index 00000000..94424445 --- /dev/null +++ b/rowers/templates/svg/crossfit.svg @@ -0,0 +1,27 @@ + + + + + + diff --git a/rowers/templates/svg/hike.svg b/rowers/templates/svg/hike.svg new file mode 100644 index 00000000..23d9c5b5 --- /dev/null +++ b/rowers/templates/svg/hike.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/rowers/templates/svg/ice_skating.svg b/rowers/templates/svg/ice_skating.svg new file mode 100644 index 00000000..d6381b02 --- /dev/null +++ b/rowers/templates/svg/ice_skating.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/rowers/templates/svg/indoor_rower.svg b/rowers/templates/svg/indoor_rower.svg new file mode 100644 index 00000000..998e3e05 --- /dev/null +++ b/rowers/templates/svg/indoor_rower.svg @@ -0,0 +1,24 @@ + + + + + + + + + diff --git a/rowers/templates/svg/inline_skating.svg b/rowers/templates/svg/inline_skating.svg new file mode 100644 index 00000000..06fd9308 --- /dev/null +++ b/rowers/templates/svg/inline_skating.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + diff --git a/rowers/templates/svg/kayaking.svg b/rowers/templates/svg/kayaking.svg new file mode 100644 index 00000000..3027e2d7 --- /dev/null +++ b/rowers/templates/svg/kayaking.svg @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/rowers/templates/svg/other.svg b/rowers/templates/svg/other.svg new file mode 100644 index 00000000..184ebc08 --- /dev/null +++ b/rowers/templates/svg/other.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/rowers/templates/svg/paddle.svg b/rowers/templates/svg/paddle.svg new file mode 100644 index 00000000..2ce5dc3a --- /dev/null +++ b/rowers/templates/svg/paddle.svg @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/rowers/templates/svg/rowing.svg b/rowers/templates/svg/rowing.svg new file mode 100644 index 00000000..478fbd8b --- /dev/null +++ b/rowers/templates/svg/rowing.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/rowers/templates/svg/run.svg b/rowers/templates/svg/run.svg new file mode 100644 index 00000000..7fa18a46 --- /dev/null +++ b/rowers/templates/svg/run.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/rowers/templates/svg/ski_erg.svg b/rowers/templates/svg/ski_erg.svg new file mode 100644 index 00000000..e788f26b --- /dev/null +++ b/rowers/templates/svg/ski_erg.svg @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/rowers/templates/svg/standup_paddling.svg b/rowers/templates/svg/standup_paddling.svg new file mode 100644 index 00000000..b5d64b11 --- /dev/null +++ b/rowers/templates/svg/standup_paddling.svg @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/rowers/templates/svg/swim.svg b/rowers/templates/svg/swim.svg new file mode 100644 index 00000000..13b52084 --- /dev/null +++ b/rowers/templates/svg/swim.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/rowers/templates/svg/walk.svg b/rowers/templates/svg/walk.svg new file mode 100644 index 00000000..d51d7f33 --- /dev/null +++ b/rowers/templates/svg/walk.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/rowers/templates/svg/weight_training.svg b/rowers/templates/svg/weight_training.svg new file mode 100644 index 00000000..37ae236e --- /dev/null +++ b/rowers/templates/svg/weight_training.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + diff --git a/rowers/templates/svg/workout.svg b/rowers/templates/svg/workout.svg new file mode 100644 index 00000000..427f2612 --- /dev/null +++ b/rowers/templates/svg/workout.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/rowers/templates/svg/yoga.svg b/rowers/templates/svg/yoga.svg new file mode 100644 index 00000000..11ba38da --- /dev/null +++ b/rowers/templates/svg/yoga.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/rowers/templates/swim.svg b/rowers/templates/swim.svg new file mode 100644 index 00000000..13b52084 --- /dev/null +++ b/rowers/templates/swim.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/rowers/templates/walk.svg b/rowers/templates/walk.svg new file mode 100644 index 00000000..d51d7f33 --- /dev/null +++ b/rowers/templates/walk.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/rowers/templates/weight_training.svg b/rowers/templates/weight_training.svg new file mode 100644 index 00000000..37ae236e --- /dev/null +++ b/rowers/templates/weight_training.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + diff --git a/rowers/templates/workout.svg b/rowers/templates/workout.svg new file mode 100644 index 00000000..427f2612 --- /dev/null +++ b/rowers/templates/workout.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/rowers/templates/yoga.svg b/rowers/templates/yoga.svg new file mode 100644 index 00000000..11ba38da --- /dev/null +++ b/rowers/templates/yoga.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/rowers/templatetags/rowerfilters.py b/rowers/templatetags/rowerfilters.py index d51f18ac..57db8e3b 100644 --- a/rowers/templatetags/rowerfilters.py +++ b/rowers/templatetags/rowerfilters.py @@ -25,6 +25,7 @@ from rowers.c2stuff import c2_open from rowers.rower_rules import is_coach_user, is_workout_user, isplanmember,ispromember from rowers.mytypes import ( otwtypes,adaptivetypes,sexcategories,weightcategories,workouttypes, + workouttypes_icons, ) from rowers.utils import NoTokenError, step_to_string @@ -375,6 +376,14 @@ def ddays(ddelta): def spacetohtml(t): return t.replace(" ","%20") +@register.filter +def distanceprint(d): + if d<10000: + return "{d} m".format(d=d) + + d2 = d/1000. + return "%.2f km" % d2 + @register.filter def durationprint(d,dstring): if (d == None): # pragma: no cover @@ -480,6 +489,16 @@ def jsdict(dict,key): # pragma: no cover s = dict.get(key) return mark_safe(json.dumps(s)) +@register.filter +def icon(workouttype): + try: + s = workouttypes_icons.get(workouttype) + except KeyError: + s = "bike.svg" + + iconstring = "{s}".format(s=s) + + return iconstring @register.filter diff --git a/rowers/tests/test_analysis.py b/rowers/tests/test_analysis.py index bca8a55a..65c4e4f6 100644 --- a/rowers/tests/test_analysis.py +++ b/rowers/tests/test_analysis.py @@ -234,7 +234,6 @@ class WorkoutCompareTestNew(TestCase): 'includereststrokes':False, 'modality':'all', 'waterboattype':['1x','2x','4x'], - 'rankingonly':False, 'workouts':[1,2,3] } @@ -332,7 +331,6 @@ class WorkoutBoxPlotTestNew(TestCase): 'includereststrokes':False, 'modality':'all', 'waterboattype':['1x','2x','4x'], - 'rankingonly':False, 'workouts':[1,2,3] } @@ -430,7 +428,6 @@ class WorkoutHistoTestNew(TestCase): 'includereststrokes':False, 'modality':'all', 'waterboattype':['1x','2x','4x'], - 'rankingonly':False, 'workouts':[1,2,3] } @@ -715,7 +712,6 @@ class WorkoutFlexallTestNew(TestCase): 'includereststrokes':False, 'modality':'all', 'waterboattype':['1x','2x','4x'], - 'rankingonly':False, 'workouts':[1,2,3] } @@ -820,7 +816,6 @@ class WorkoutStatsTestNew(TestCase): 'includereststrokes':False, 'modality':'all', 'waterboattype':['1x','2x','4x'], - 'rankingonly':False, 'ids':[1,2,3], 'userid':self.u.id, } @@ -883,7 +878,6 @@ class WorkoutStatsTestNew(TestCase): 'includereststrokes':False, 'modality':'all', 'waterboattype':['1x','2x','4x'], - 'rankingonly':False, 'ids':[1,2,3], 'userid':self.u.id, 'function':'boxplot' @@ -955,7 +949,6 @@ class WorkoutStatsTestNew(TestCase): 'includereststrokes':False, 'modality':'all', 'waterboattype':['1x','2x','4x'], - 'rankingonly':False, 'workouts':[1,2,3] } diff --git a/rowers/tests/test_aworkouts.py b/rowers/tests/test_aworkouts.py index b9f6f85f..db8c24f1 100644 --- a/rowers/tests/test_aworkouts.py +++ b/rowers/tests/test_aworkouts.py @@ -14,7 +14,7 @@ from io import BytesIO from PIL import Image from io import StringIO - +from rowers.mytypes import workouttypes def create_image(storage, filename, size=(100, 100), image_mode='RGB', image_format='PNG'): """ @@ -31,6 +31,63 @@ def create_image(storage, filename, size=(100, 100), image_mode='RGB', image_for image_file = ContentFile(data.read()) return storage.save(filename, image_file) +class ListWorkoutTest(TestCase): + def setUp(self): + self.u = UserFactory() + + self.r = Rower.objects.create(user=self.u, + birthdate=faker.profile()['birthdate'], + gdproptin=True,surveydone=True, + gdproptindate=timezone.now(), + rowerplan='coach') + + self.c = Client() + self.user_workouts = WorkoutFactory.create_batch(len(workouttypes), user=self.r) + i = 0 + for workouttype in workouttypes: + self.user_workouts[i].workouttype = workouttype[0] + self.user_workouts[i].save() + i = i+1 + + self.factory = RequestFactory() + self.password = faker.word() + self.u.set_password(self.password) + self.u.save() + + def tearDown(self): + for workout in self.user_workouts: + try: + os.remove(workout.csvfilename) + except (IOError, FileNotFoundError,OSError): + pass + + @patch('rowers.dataprep.create_engine') + @patch('rowers.dataprep.getsmallrowdata_db') + @patch('rowers.dataprep.myqueue') + def test_list_workouts(self, mocked_sqlalchemy, + mocked_getsmallrowdata_db, + mocked_myqueue): + + login = self.c.login(username=self.u.username, password=self.password) + self.assertTrue(login) + + + + url = reverse('workouts_view') + + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + url2 = url+'?page=2' + + response = self.c.get(url2) + self.assertEqual(response.status_code,200) + + url3 = url+'?page=3' + + response = self.c.get(url3) + self.assertEqual(response.status_code,200) + @override_settings(TESTING=True) class WorkoutViewTest(TestCase): def setUp(self): diff --git a/rowers/tests/test_urls.py b/rowers/tests/test_urls.py index 1baeb62d..b8986110 100644 --- a/rowers/tests/test_urls.py +++ b/rowers/tests/test_urls.py @@ -93,7 +93,6 @@ class URLTests(TestCase): '/rowers/list-graphs/', '/rowers/list-jobs/', '/rowers/list-workouts/', - '/rowers/list-workouts/ranking/', '/rowers/list-workouts/user/1/', '/rowers/me/calcdps/', '/rowers/me/edit/', @@ -155,7 +154,6 @@ class URLTests(TestCase): '/rowers/workout/'+encoded1+'/split/', '/rowers/workout/'+encoded1+'/stats/', '/rowers/workout/'+encoded1+'/stream/', - '/rowers/workout/'+encoded1+'/toggle-ranking/', '/rowers/workout/'+encoded1+'/undosmoothenpace/', '/rowers/workout/'+encoded1+'/unsubscribe/', '/rowers/workout/'+encoded1+'/view/', diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz deleted file mode 100644 index a0e60e63..00000000 Binary files a/rowers/tests/testdata/testdata.tcx.gz and /dev/null differ diff --git a/rowers/urls.py b/rowers/urls.py index cffc7775..71254ad5 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -261,14 +261,10 @@ urlpatterns = [ views.agegrouprecordview,name='agegrouprecordview'), re_path(r'^agegrouprecords/$', views.agegrouprecordview,name='agegrouprecordview'), - re_path(r'^list-workouts/ranking/$',views.workouts_view,{'rankingonly':True}, - name='workouts_view'), re_path(r'^list-workouts/team/(?P\d+)/$',views.workouts_view, name='workouts_view'), re_path(r'^(?P\d+)/list-workouts/$',views.workouts_view, name='workouts_view'), - re_path(r'^list-workouts/ranking/user/(?P\d+)/$',views.workouts_view,{'rankingonly':True}, - name='workouts_view'), re_path(r'^list-workouts/user/(?P\d+)/$',views.workouts_view, name='workouts_view'), re_path(r'^virtualevents/$',views.virtualevents_view,name='virtualevents_view'), diff --git a/rowers/utils.py b/rowers/utils.py index b6feb80a..596fc4ff 100644 --- a/rowers/utils.py +++ b/rowers/utils.py @@ -36,11 +36,14 @@ import arrow lbstoN = 4.44822 landingpages = ( + ('workout_view', 'Workout View'), ('workout_edit_view','Edit View'), ('workout_workflow_view','Workflow View'), ('workout_stats_view','Stats View'), ('workout_data_view','Data Explore View'), ('workout_summary_edit_view','Intervals Editor'), + ('workout_flexchart_stacked_view','Workout Stacked Chart'), + ('workout_flexchart3_view','Workout Flex Chart') ) diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py index 03af6174..6b1b234a 100644 --- a/rowers/views/analysisviews.py +++ b/rowers/views/analysisviews.py @@ -27,7 +27,6 @@ defaultoptions = { 'includereststrokes': False, 'workouttypes':['rower','dynamic','slides'], 'waterboattype': mytypes.waterboattype, - 'rankingonly': False, 'function':'boxplot' } @@ -86,11 +85,6 @@ def analysis_new(request,userid=0,function='boxplot',teamid=0,id='',session=0): worldclass = False - try: - rankingonly = options['rankingonly'] - except KeyError: # pragma: no cover - rankingonly = False - try: includereststrokes = options['includereststrokes'] except KeyError: # pragma: no cover @@ -137,12 +131,6 @@ def analysis_new(request,userid=0,function='boxplot',teamid=0,id='',session=0): if modality != 'water': waterboattype = [b[0] for b in mytypes.boattypes] - - if 'rankingonly' in optionsform.cleaned_data: - rankingonly = optionsform.cleaned_data['rankingonly'] - else: # pragma: no cover - rankingonly = False - options['modalities'] = modalities options['waterboattype'] = waterboattype try: @@ -234,8 +222,6 @@ def analysis_new(request,userid=0,function='boxplot',teamid=0,id='',session=0): ).exclude(boattype__in=negtypes) - if rankingonly: # pragma: no cover - workouts = workouts.exclude(rankingpiece=False) query = request.POST.get('q') if query: # pragma: no cover @@ -267,7 +253,6 @@ def analysis_new(request,userid=0,function='boxplot',teamid=0,id='',session=0): optionsform = AnalysisOptionsForm(initial={ 'modality':modality, 'waterboattype':waterboattype, - 'rankingonly':rankingonly, }) diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 5bdc17ef..faab6ed7 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -867,7 +867,6 @@ defaultoptions = { 'includereststrokes': False, 'workouttypes':['rower','dynamic','slides'], 'waterboattype': mytypes.waterboattype, - 'rankingonly': False, 'function':'boxplot' } @@ -901,12 +900,6 @@ def video_selectworkout(request,userid=0): modality = 'all' - - try: - rankingonly = options['rankingonly'] - except KeyError: # pragma: no cover - rankingonly = False - query = request.GET.get('q') if query: # pragma: no cover query_list = query.split() @@ -1002,9 +995,6 @@ def video_selectworkout(request,userid=0): ).exclude(boattype__in=negtypes) - if rankingonly: # pragma: no cover - workouts = workouts.exclude(rankingpiece=False) - startdatestring = startdate.strftime('%Y-%m-%d') enddatestring = enddate.strftime('%Y-%m-%d') request.session['startdate'] = startdatestring @@ -1276,11 +1266,6 @@ def team_comparison_select(request, else: waterboattype = mytypes.waterboattype - if 'rankingonly' in request.session: # pragma: no cover - rankingonly = request.session['rankingonly'] - else: - rankingonly = False - if 'modalities' in request.session: modalities = request.session['modalities'] if len(modalities) > 1: # pragma: no cover @@ -1314,11 +1299,6 @@ def team_comparison_select(request, waterboattype = [b[0] for b in mytypes.boattypes] - if 'rankingonly' in modalityform.cleaned_data: - rankingonly = modalityform.cleaned_data['rankingonly'] - else: # pragma: no cover - rankingonly = False - request.session['modalities'] = modalities request.session['waterboattype'] = waterboattype else: @@ -1329,7 +1309,6 @@ def team_comparison_select(request, modalityform = TrendFlexModalForm(initial={ 'modality':modality, 'waterboattype':waterboattype, - 'rankingonly':rankingonly, }) @@ -1388,8 +1367,6 @@ def team_comparison_select(request, startdatetime__lte=enddate, workouttype__in=modalities).order_by("-date", "-starttime").exclude(boattype__in=negtypes) - if rankingonly: # pragma: no cover - workouts = workouts.exclude(rankingpiece=False) query = request.GET.get('q') if query: # pragma: no cover @@ -2064,7 +2041,7 @@ def plannedsession_compare_view(request,id=0,userid=0): # List Workouts @login_required() def workouts_view(request,message='',successmessage='', - teamid=0,rankingonly=False,rowerid=0,userid=0): + teamid=0,rowerid=0,userid=0): startdate,enddate = get_dates_timeperiod(request,defaulttimeperiod='lastyear') request.session['referer'] = absolute(request)['PATH'] @@ -2189,8 +2166,6 @@ def workouts_view(request,message='',successmessage='', g_startdate = (timezone.now()-timedelta(days=15)) - if rankingonly: - workouts = workouts.exclude(rankingpiece=False) workoutsnohr = workouts.exclude(averagehr__isnull=False) for w in workoutsnohr: # pragma: no cover @@ -2213,7 +2188,7 @@ def workouts_view(request,message='',successmessage='', else: searchform = SearchForm() - paginator = Paginator(workouts,20) # show 25 workouts per page + paginator = Paginator(workouts,10) # show 25 workouts per page page = request.GET.get('page',1) try: @@ -2269,7 +2244,6 @@ def workouts_view(request,message='',successmessage='', 'enddate':enddate, 'announcements':announcements[0:4], 'team':theteam, - 'rankingonly':rankingonly, 'teams':get_my_teams(request.user), 'interactiveplot':script, 'the_div':div, diff --git a/static/css/rowsandall2.css b/static/css/rowsandall2.css index e4054cb8..62e92d7d 100644 --- a/static/css/rowsandall2.css +++ b/static/css/rowsandall2.css @@ -1,3 +1,5 @@ + + #main { background-color: transparent; -webkit-background-size: cover; @@ -320,6 +322,34 @@ th.rotate > div > span { margin: 2px; } +.divlines { + display: block; + overflow-x: hidden; + border-width: 1px 0 0 0; + border-color: #333 #333 #333 #333; + border-style: solid; + padding: 2px; + margin: 0px; +} + +.workoutcontainer { + display: grid; + grid-template-columns: 50px repeat(auto-fit, minmax(calc((100% - 100px)/4), 1fr)); + /* grid-template-columns: 50px repeat(auto-fit, minmax(100px, 1fr)) 50px; ????*/ + padding: 5px; +} + +.workoutelement { + margin-left: auto; + margin-right: auto; +} + +.divlines h3 { + font-size: 1.2em; + font-weight: bold; + padding: 0px; + margin: 0px; +} .whiteborder { border: solid 2px #aaa; } diff --git a/static/img/bike.svg b/static/img/bike.svg new file mode 100644 index 00000000..1cf2f65a --- /dev/null +++ b/static/img/bike.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/static/img/bike_erg.svg b/static/img/bike_erg.svg new file mode 100644 index 00000000..5e441fb2 --- /dev/null +++ b/static/img/bike_erg.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/static/img/canoeing.svg b/static/img/canoeing.svg new file mode 100644 index 00000000..09406837 --- /dev/null +++ b/static/img/canoeing.svg @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/static/img/cross_country_ski.svg b/static/img/cross_country_ski.svg new file mode 100644 index 00000000..51260a59 --- /dev/null +++ b/static/img/cross_country_ski.svg @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/static/img/crossfit.svg b/static/img/crossfit.svg new file mode 100644 index 00000000..4865cde7 --- /dev/null +++ b/static/img/crossfit.svg @@ -0,0 +1,27 @@ + + + + + + diff --git a/static/img/hike.svg b/static/img/hike.svg new file mode 100644 index 00000000..9b857bc2 --- /dev/null +++ b/static/img/hike.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/static/img/ice_skating.svg b/static/img/ice_skating.svg new file mode 100644 index 00000000..112dd33b --- /dev/null +++ b/static/img/ice_skating.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/static/img/indoor_rower.svg b/static/img/indoor_rower.svg new file mode 100644 index 00000000..eab7ba0c --- /dev/null +++ b/static/img/indoor_rower.svg @@ -0,0 +1,24 @@ + + + + + + + + + diff --git a/static/img/inline_skating.svg b/static/img/inline_skating.svg new file mode 100644 index 00000000..f0aae778 --- /dev/null +++ b/static/img/inline_skating.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + diff --git a/static/img/kayaking.svg b/static/img/kayaking.svg new file mode 100644 index 00000000..90dbb0c0 --- /dev/null +++ b/static/img/kayaking.svg @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/static/img/other.svg b/static/img/other.svg new file mode 100644 index 00000000..4c95ea08 --- /dev/null +++ b/static/img/other.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/static/img/paddle.svg b/static/img/paddle.svg new file mode 100644 index 00000000..0056f1ba --- /dev/null +++ b/static/img/paddle.svg @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/static/img/rowing.svg b/static/img/rowing.svg new file mode 100644 index 00000000..aee6bb68 --- /dev/null +++ b/static/img/rowing.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/static/img/run.svg b/static/img/run.svg new file mode 100644 index 00000000..999d7964 --- /dev/null +++ b/static/img/run.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/static/img/ski_erg.svg b/static/img/ski_erg.svg new file mode 100644 index 00000000..7f4eb2be --- /dev/null +++ b/static/img/ski_erg.svg @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/static/img/standup_paddling.svg b/static/img/standup_paddling.svg new file mode 100644 index 00000000..d79f487a --- /dev/null +++ b/static/img/standup_paddling.svg @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/static/img/swim.svg b/static/img/swim.svg new file mode 100644 index 00000000..7d159811 --- /dev/null +++ b/static/img/swim.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/static/img/walk.svg b/static/img/walk.svg new file mode 100644 index 00000000..0b8f7c06 --- /dev/null +++ b/static/img/walk.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/img/weight_training.svg b/static/img/weight_training.svg new file mode 100644 index 00000000..eed70eb5 --- /dev/null +++ b/static/img/weight_training.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + diff --git a/static/img/workout.svg b/static/img/workout.svg new file mode 100644 index 00000000..439aeb40 --- /dev/null +++ b/static/img/workout.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/static/img/yoga.svg b/static/img/yoga.svg new file mode 100644 index 00000000..748b75a5 --- /dev/null +++ b/static/img/yoga.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/templates/newbase.html b/templates/newbase.html index 5273af76..b05a4421 100644 --- a/templates/newbase.html +++ b/templates/newbase.html @@ -46,7 +46,7 @@ - + {% block meta %} {% endblock %}