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