Index: ow/models/user.py
===================================================================
--- ow/models/user.py	(revision ea4372504bfda5b983d464377cf0b708c253e187)
+++ ow/models/user.py	(revision 778d53d0180c6115a5a8a7204516018101ee7326)
@@ -113,4 +113,26 @@
     def num_workouts(self):
         return len(self.workout_ids())
+
+    @property
+    def favorite_sport(self):
+        """
+        Return which sport is the one with most workouts for this user.
+        In case of more than one sport with the maximum number of workouts,
+        return the first in reversed alphabetical ordering
+        """
+        sports = {}
+        for w in self.workouts():
+            if w.sport not in sports.keys():
+                sports[w.sport] = 0
+            sports[w.sport] += 1
+        _sports = sorted(sports.items(), reverse=True,
+                         key=lambda x: (x[1], x[0]))
+        if _sports:
+            return _sports[0][0]
+        return None
+
+    @property
+    def activity_sports(self):
+        return sorted(list(set(w.sport for w in self.workouts())))
 
     @property
@@ -368,2 +390,28 @@
 
         return stats
+
+    def sport_totals(self, sport=None, year=None):
+        """
+        Return totals for this user, filtered by sport.
+
+        If no sport is passed, the favorite sport is picked up
+
+        If the additional parameter year is passed, show stats only
+        for that year
+        """
+        totals = {
+            'workouts': 0,
+            'time': timedelta(0),
+            'distance': Decimal(0),
+            'elevation': Decimal(0),
+        }
+        if self.activity_sports:
+            sport = sport or self.favorite_sport
+            for workout in self.workouts():
+                if workout.sport == sport:
+                    if year is None or workout.start.year == year:
+                        totals['workouts'] += 1
+                        totals['time'] += workout.duration or timedelta(0)
+                        totals['distance'] += workout.distance or Decimal(0)
+                        totals['elevation'] += workout.uphill or Decimal(0)
+        return totals
Index: ow/static/css/main.css
===================================================================
--- ow/static/css/main.css	(revision ea4372504bfda5b983d464377cf0b708c253e187)
+++ ow/static/css/main.css	(revision 778d53d0180c6115a5a8a7204516018101ee7326)
@@ -642,4 +642,37 @@
   background-color: #EE4056;
 }
+/*
+Very simple way to paint dropdown-like arrows, without
+using any external dependencies.
+
+To use it, add something like this to your html, to display a "down" arrow:
+
+  <i class="arrow down"></i>
+*/
+i.arrow {
+  border: solid black;
+  border-width: 0 3px 3px 0;
+  display: inline-block;
+  padding: 3px;
+  margin: 3px;
+  margin-left: 6px;
+  margin-right: 0px;
+}
+.right {
+  transform: rotate(-45deg);
+  -webkit-transform: rotate(-45deg);
+}
+.left {
+  transform: rotate(135deg);
+  -webkit-transform: rotate(135deg);
+}
+.up {
+  transform: rotate(-135deg);
+  -webkit-transform: rotate(-135deg);
+}
+.down {
+  transform: rotate(45deg);
+  -webkit-transform: rotate(45deg);
+}
 .header-content {
   padding: 1em 1.5em;
@@ -1488,4 +1521,21 @@
   font-size: 13px;
   font-size: 0.8125rem;
+}
+.profile-dropdown-sports,
+.profile-dropdown-years {
+  color: #151515;
+  text-decoration: none;
+}
+.profile-dropdown-sports:hover,
+.profile-dropdown-years:hover {
+  color: #151515;
+}
+.profile-dropdown-sports:active,
+.profile-dropdown-years:active,
+.profile-dropdown-sports:focus,
+.profile-dropdown-years:focus {
+  outline: 0;
+  border: none;
+  -moz-outline-style: none;
 }
 .verify-account-content {
Index: ow/static/js/ow.js
===================================================================
--- ow/static/js/ow.js	(revision ea4372504bfda5b983d464377cf0b708c253e187)
+++ ow/static/js/ow.js	(revision 778d53d0180c6115a5a8a7204516018101ee7326)
@@ -486,2 +486,77 @@
 
 };
+
+
+owjs.sport_stats = function(spec) {
+
+    "use strict";
+
+    var link_selector = spec.link_selector;
+    var stats_selector = spec.stats_selector;
+    var selected = spec.selected;
+    var dropdown_selector = spec.dropdown_selector;
+    var current_year = spec.current_year;
+    var year_link_selector = spec.year_link_selector;
+
+    var setup = function setup() {
+        // Hide all sports stats by default
+        $(stats_selector).hide();
+        // Show the pre-selected one
+        $(selected).show();
+
+        $(link_selector).on('click', function(e) {
+            e.preventDefault();
+            var selected = $(this).attr('class').split(' ')[1];
+            var sport = selected.split('-')[1]
+            // Hide them all
+            $(stats_selector).hide();
+            // Show the selected one
+            $(stats_selector + '.' + selected).show();
+            // Update the sport on the sports selector widget
+            $(dropdown_selector + ' strong').html(sport);
+            // finally "click" on the proper year to be displayed for this sport
+            $(year_link_selector + sport + '-' + current_year).click();
+        });
+    };
+
+    var that = {}
+    that.setup = setup;
+    return that
+
+};
+
+
+owjs.year_stats = function(spec) {
+
+    "use strict";
+
+    var link_selector = spec.link_selector;
+    var stats_selector = spec.stats_selector;
+    var selected = spec.selected;
+    var dropdown_selector = spec.dropdown_selector;
+
+    var setup = function setup() {
+        // Hide all years stats by default
+        $(stats_selector).hide();
+        // Show the pre-selected one
+        $(selected).show();
+
+        $(link_selector).on('click', function(e) {
+            e.preventDefault();
+            var selected = $(this).attr('class').split(' ')[1];
+            var sport = selected.split('-')[1]
+            var year = selected.split('-')[2]
+            // Hide them all
+            $(stats_selector).hide();
+            // Show the selected one
+            $(stats_selector + '.' + selected).show();
+            // Update the year on the years selector widget
+            $(dropdown_selector + sport + ' strong').html(year);
+        });
+    };
+
+    var that = {}
+    that.setup = setup;
+    return that
+
+};
Index: ow/static/less/main.less
===================================================================
--- ow/static/less/main.less	(revision ea4372504bfda5b983d464377cf0b708c253e187)
+++ ow/static/less/main.less	(revision 778d53d0180c6115a5a8a7204516018101ee7326)
@@ -23,4 +23,5 @@
 @import "ui/form.less";
 @import "ui/buttons.less";
+@import "ui/arrows.less";
 
 // Modules
Index: ow/static/less/pages/profile.less
===================================================================
--- ow/static/less/pages/profile.less	(revision ea4372504bfda5b983d464377cf0b708c253e187)
+++ ow/static/less/pages/profile.less	(revision 778d53d0180c6115a5a8a7204516018101ee7326)
@@ -128,2 +128,16 @@
 	}
 }
+
+.profile-dropdown-sports,
+.profile-dropdown-years {
+    color: @color-main;
+    text-decoration: none;
+    &:hover {
+	color: @color-main;
+    }
+    &:active, &:focus {
+        outline: 0;
+        border: none;
+        -moz-outline-style: none;
+    }
+}
Index: ow/static/less/ui/arrows.less
===================================================================
--- ow/static/less/ui/arrows.less	(revision 778d53d0180c6115a5a8a7204516018101ee7326)
+++ ow/static/less/ui/arrows.less	(revision 778d53d0180c6115a5a8a7204516018101ee7326)
@@ -0,0 +1,38 @@
+/*
+Very simple way to paint dropdown-like arrows, without
+using any external dependencies.
+
+To use it, add something like this to your html, to display a "down" arrow:
+
+  <i class="arrow down"></i>
+*/
+
+i.arrow {
+    border: solid black;
+    border-width: 0 3px 3px 0;
+    display: inline-block;
+    padding: 3px;
+    margin: 3px;
+    margin-left: 6px;
+    margin-right: 0px;
+}
+
+.right {
+    transform: rotate(-45deg);
+    -webkit-transform: rotate(-45deg);
+}
+
+.left {
+    transform: rotate(135deg);
+    -webkit-transform: rotate(135deg);
+}
+
+.up {
+    transform: rotate(-135deg);
+    -webkit-transform: rotate(-135deg);
+}
+
+.down {
+    transform: rotate(45deg);
+    -webkit-transform: rotate(45deg);
+}
Index: ow/templates/profile.pt
===================================================================
--- ow/templates/profile.pt	(revision ea4372504bfda5b983d464377cf0b708c253e187)
+++ ow/templates/profile.pt	(revision 778d53d0180c6115a5a8a7204516018101ee7326)
@@ -11,4 +11,8 @@
     <tal:t i18n:translate="">My profile</tal:t>
   </metal:head-title>
+
+  <metal:css metal:fill-slot="css">
+    <link rel="stylesheet" href="${request.static_url('ow:static/components/jquery-dropdown/jquery.dropdown.css')}" />
+  </metal:css>
 
   <metal:content metal:fill-slot="content">
@@ -168,4 +172,7 @@
 
         <div class="workout-aside">
+
+          <h3 i18n:translate="">Profile info</h3>
+
           <ul class="profile-data">
             <li>
@@ -188,12 +195,144 @@
             </li>
           </ul>
+
+          <tal:has-workouts tal:condition="profile_stats['sports']">
+
+            <h3 i18n:translate="">Workout stats</h3>
+
+            <p>
+              <a href="" data-jq-dropdown="#jq-dropdown-sports"
+                 class="profile-dropdown-sports js-jq-dropdown-sel-sports">
+                <strong tal:content="profile_stats['current_sport']"></strong>
+                <i class="arrow down"></i>
+              </a>
+            </p>
+
+            <tal:sports tal:repeat="sport profile_stats['sports']">
+              <div class="" tal:attributes="class 'js-sport-stats js-' + sport">
+
+                <a href="" data-jq-dropdown=""
+                   tal:attributes="data-jq-dropdown '#jq-dropdown-' + sport;
+                         class 'profile-dropdown-years js-jq-dropdown-sel-' + sport">
+                  <strong tal:content="profile_stats['current_year']"></strong>
+                  <i class="arrow down"></i>
+                </a>
+
+                <tal:years tal:repeat="year profile_stats['years']">
+                  <div class="" tal:attributes="class 'js-year-stats js-' + sport + '-' + str(year)">
+                    <ul class="profile-data"
+                        tal:define="sport_totals context.sport_totals(sport, year)">
+                      <li>
+                        <span>
+                          <tal:t i18n:translate="">Workouts</tal:t>
+                        </span>
+                        <tal:w tal:replace="sport_totals['workouts']"></tal:w>
+                      </li>
+                      <li>
+                        <span>
+                          <tal:t i18n:translate="">Time</tal:t>
+                        </span>
+                        <tal:hms tal:define="hms timedelta_to_hms(sport_totals['time'])">
+                          <tal:h tal:content="str(hms[0]).zfill(2)"></tal:h>
+                          <tal:t i18n:translate="">hours</tal:t>,
+                          <tal:h tal:content="str(hms[1]).zfill(2)"></tal:h>
+                          <tal:t i18n:translate="">min.</tal:t>
+                        </tal:hms>
+                      </li>
+                      <li>
+                        <span>
+                          <tal:t i18n:translate="">Distance</tal:t>
+                        </span>
+                        <tal:w tal:replace="round(sport_totals['distance'])"></tal:w>
+                        <tal:t i18n:translate="">km</tal:t>
+                      </li>
+                      <li>
+                        <span>
+                          <tal:t i18n:translate="">Elevation</tal:t>
+                        </span>
+                        <tal:w tal:replace="round(sport_totals['elevation'])"></tal:w>
+                        <tal:t i18n:translate="">m</tal:t>
+                      </li>
+                    </ul>
+                  </div>
+                </tal:years>
+
+                <strong i18n:translate="">All time</strong>
+                <ul class="profile-data"
+                    tal:define="sport_totals context.sport_totals(sport)">
+                  <li>
+                    <span>
+                      <tal:t i18n:translate="">Workouts</tal:t>
+                    </span>
+                    <tal:w tal:replace="sport_totals['workouts']"></tal:w>
+                  </li>
+                  <li>
+                    <span>
+                      <tal:t i18n:translate="">Time</tal:t>
+                    </span>
+                    <tal:hms tal:define="hms timedelta_to_hms(sport_totals['time'])">
+                      <tal:h tal:content="str(hms[0]).zfill(2)"></tal:h>
+                      <tal:t i18n:translate="">hours</tal:t>,
+                      <tal:h tal:content="str(hms[1]).zfill(2)"></tal:h>
+                      <tal:t i18n:translate="">min.</tal:t>
+                    </tal:hms>
+                  </li>
+                  <li>
+                    <span>
+                      <tal:t i18n:translate="">Distance</tal:t>
+                    </span>
+                    <tal:w tal:replace="round(sport_totals['distance'])"></tal:w>
+                    <tal:t i18n:translate="">km</tal:t>
+                  </li>
+                  <li>
+                    <span>
+                      <tal:t i18n:translate="">Elevation</tal:t>
+                    </span>
+                    <tal:w tal:replace="round(sport_totals['elevation'])"></tal:w>
+                    <tal:t i18n:translate="">m</tal:t>
+                  </li>
+                </ul>
+              </div>
+            </tal:sports>
+
+          </tal:has-workouts>
+
         </div>
       </div>
     </div>
 
+      <div id="jq-dropdown-sports" class="jq-dropdown jq-dropdown-tip">
+        <ul class="jq-dropdown-menu">
+          <tal:sports tal:repeat="sport profile_stats['sports']">
+            <li>
+              <a href="#" class="" tal:content="sport"
+                 tal:attributes="class 'js-choose-sport-stats js-' + sport">
+              </a>
+            </li>
+          </tal:sports>
+        </ul>
+      </div>
+
+
+    <tal:sports tal:repeat="sport profile_stats['sports']">
+      <div id="" class="jq-dropdown jq-dropdown-tip"
+           tal:attributes="id 'jq-dropdown-' + sport">
+        <ul class="jq-dropdown-menu">
+          <tal:years tal:repeat="year profile_stats['years']">
+            <li>
+              <a href="#" class="" tal:content="year"
+                 tal:attributes="class 'js-choose-year-stats js-' + sport + '-' + str(year)">
+              </a>
+            </li>
+          </tal:years>
+        </ul>
+      </div>
+    </tal:sports>
+
+
   </metal:content>
 
   <metal:body-js metal:fill-slot="body-js">
 
+    <script src="${request.static_url('ow:static/components/jquery-dropdown/jquery.dropdown.js')}"></script>
     <script src="${request.static_url('ow:static/components/d3/d3.min.js')}"></script>
     <script src="${request.static_url('ow:static/js/ow.js')}"></script>
@@ -204,4 +343,22 @@
      })
      map_shots.run();
+
+     var sport_stats = owjs.sport_stats({
+         link_selector: 'a.js-choose-sport-stats',
+         stats_selector: 'div.js-sport-stats',
+         selected: 'div.js-sport-stats.js-${profile_stats['current_sport']}',
+         dropdown_selector: 'a.js-jq-dropdown-sel-sports',
+         current_year: '${profile_stats['current_year']}',
+         year_link_selector: 'a.js-choose-year-stats.js-'
+     })
+     sport_stats.setup();
+
+     var year_stats = owjs.year_stats({
+         link_selector: 'a.js-choose-year-stats',
+         stats_selector: 'div.js-year-stats',
+         selected: 'div.js-year-stats.js-${profile_stats['current_sport']}-${profile_stats['current_year']}',
+         dropdown_selector: 'a.js-jq-dropdown-sel-'
+     })
+     year_stats.setup();
 
      var y_axis_labels = {
Index: ow/tests/models/test_user.py
===================================================================
--- ow/tests/models/test_user.py	(revision ea4372504bfda5b983d464377cf0b708c253e187)
+++ ow/tests/models/test_user.py	(revision 778d53d0180c6115a5a8a7204516018101ee7326)
@@ -81,4 +81,103 @@
         assert list(root['john'].workout_ids()) == ['1', '2', '3']
         assert root['john'].num_workouts == len(workouts)
+
+    def test_favorite_sport(self, root):
+        assert root['john'].favorite_sport is None
+        # add a cycling workout
+        workout = Workout(
+            sport='cycling',
+            start=datetime.now(timezone.utc),
+            duration=timedelta(minutes=120),
+            distance=66,
+        )
+        root['john'].add_workout(workout)
+        assert root['john'].favorite_sport == 'cycling'
+        # add a running workout, both sports have same amount of workouts,
+        # favorite is picked up reversed alphabetically
+        workout = Workout(
+            sport='running',
+            start=datetime.now(timezone.utc),
+            duration=timedelta(minutes=45),
+            distance=5,
+        )
+        root['john'].add_workout(workout)
+        assert root['john'].favorite_sport == 'running'
+        # add another cycling workout, now that is the favorite sport
+        workout = Workout(
+            sport='cycling',
+            start=datetime.now(timezone.utc),
+            duration=timedelta(minutes=60),
+            distance=30,
+        )
+        root['john'].add_workout(workout)
+        assert root['john'].favorite_sport == 'cycling'
+
+    def test_activity_sports(self, root):
+        assert root['john'].activity_sports == []
+        workout = Workout(
+            sport='cycling',
+            start=datetime.now(timezone.utc),
+            duration=timedelta(minutes=120),
+            distance=66,
+        )
+        root['john'].add_workout(workout)
+        assert root['john'].activity_sports == ['cycling']
+        workout = Workout(
+            sport='running',
+            start=datetime.now(timezone.utc),
+            duration=timedelta(minutes=45),
+            distance=5,
+        )
+        root['john'].add_workout(workout)
+        assert root['john'].activity_sports == ['cycling', 'running']
+
+    def test_activity_years(self, root):
+        assert root['john'].activity_years == []
+        workout = Workout(
+            sport='cycling',
+            start=datetime.now(timezone.utc),
+            duration=timedelta(minutes=120),
+            distance=66,
+        )
+        root['john'].add_workout(workout)
+        assert root['john'].activity_years == [datetime.now(timezone.utc).year]
+        workout = Workout(
+            sport='running',
+            start=datetime(2018, 11, 25, 10, 00, tzinfo=timezone.utc),
+            duration=timedelta(minutes=45),
+            distance=5,
+        )
+        root['john'].add_workout(workout)
+        assert root['john'].activity_years == [
+            datetime.now(timezone.utc).year,
+            2018
+        ]
+
+    def test_activity_months(self, root):
+        # we have to pass a year parameter
+        with pytest.raises(TypeError):
+            root['john'].activity_months()
+        now = datetime.now(timezone.utc)
+        assert root['john'].activity_months(now.year) == []
+        workout = Workout(
+            sport='cycling',
+            start=datetime.now(timezone.utc),
+            duration=timedelta(minutes=120),
+            distance=66,
+        )
+        root['john'].add_workout(workout)
+        assert root['john'].activity_months(now.year) == [now.month]
+        assert root['john'].activity_months(now.year-1) == []
+        assert root['john'].activity_months(now.year+1) == []
+        workout = Workout(
+            sport='running',
+            start=datetime(2018, 11, 25, 10, 00, tzinfo=timezone.utc),
+            duration=timedelta(minutes=45),
+            distance=5,
+        )
+        root['john'].add_workout(workout)
+        assert root['john'].activity_months(now.year) == [now.month]
+        assert root['john'].activity_months(2018) == [11]
+        assert root['john'].activity_months(now.year+1) == []
 
     def test_activity_dates_tree(self, root):
@@ -552,2 +651,99 @@
             else:
                 assert stats == expected_no_stats_per_week
+
+    def test_sport_totals(self, root):
+        # user has no workouts, so no totals
+        assert root['john'].sport_totals() == {
+            'workouts': 0,
+            'time': timedelta(0),
+            'distance': Decimal(0),
+            'elevation': Decimal(0),
+        }
+        # add a cycling workout happening now
+        workout = Workout(
+            sport='cycling',
+            start=datetime.now(timezone.utc),
+            duration=timedelta(minutes=120),
+            distance=66,
+        )
+        root['john'].add_workout(workout)
+        # only one workout, one sport, so the default will show totals
+        # for that sport
+        assert root['john'].sport_totals() == {
+            'workouts': 1,
+            'time': timedelta(minutes=120),
+            'distance': Decimal(66),
+            'elevation': Decimal(0),
+        }
+        # Add a running workout
+        workout = Workout(
+            sport='running',
+            start=datetime(2018, 11, 25, 10, 00, tzinfo=timezone.utc),
+            duration=timedelta(minutes=45),
+            distance=5,
+        )
+        root['john'].add_workout(workout)
+        # the favorite sport is running now
+        assert root['john'].sport_totals() == {
+            'workouts': 1,
+            'time': timedelta(minutes=45),
+            'distance': Decimal(5),
+            'elevation': Decimal(0),
+        }
+        # but we can get the totals for cycling too
+        assert root['john'].sport_totals('cycling') == {
+            'workouts': 1,
+            'time': timedelta(minutes=120),
+            'distance': Decimal(66),
+            'elevation': Decimal(0),
+        }
+        # adding a new cycling workout, in a different year
+        workout = Workout(
+            sport='cycling',
+            start=datetime(2017, 11, 25, 10, 00, tzinfo=timezone.utc),
+            duration=timedelta(minutes=60),
+            distance=32,
+        )
+        root['john'].add_workout(workout)
+        # now cycling is the favorite sport
+        assert root['john'].sport_totals() == {
+            'workouts': 2,
+            'time': timedelta(minutes=180),
+            'distance': Decimal(98),
+            'elevation': Decimal(0),
+        }
+        # but we can get running stats too
+        assert root['john'].sport_totals('running') == {
+            'workouts': 1,
+            'time': timedelta(minutes=45),
+            'distance': Decimal(5),
+            'elevation': Decimal(0),
+        }
+        # there are no running activities for 2016
+        assert root['john'].sport_totals('running', 2016) == {
+            'workouts': 0,
+            'time': timedelta(0),
+            'distance': Decimal(0),
+            'elevation': Decimal(0),
+        }
+        # and not activities for cycling in 2016 neither
+        assert root['john'].sport_totals('cycling', 2016) == {
+            'workouts': 0,
+            'time': timedelta(0),
+            'distance': Decimal(0),
+            'elevation': Decimal(0),
+        }
+        # and we can get the separate totals for cycling in different years
+        year = datetime.now(timezone.utc).year
+        assert root['john'].sport_totals('cycling', year) == {
+            'workouts': 1,
+            'time': timedelta(minutes=120),
+            'distance': Decimal(66),
+            'elevation': Decimal(0),
+        }
+        assert root['john'].sport_totals('cycling', 2017) == {
+            'workouts': 1,
+            'time': timedelta(minutes=60),
+            'distance': Decimal(32),
+            'elevation': Decimal(0),
+        }
Index: ow/tests/views/test_user.py
===================================================================
--- ow/tests/views/test_user.py	(revision ea4372504bfda5b983d464377cf0b708c253e187)
+++ ow/tests/views/test_user.py	(revision 778d53d0180c6115a5a8a7204516018101ee7326)
@@ -46,5 +46,6 @@
             start=datetime(2015, 6, 28, 12, 55, tzinfo=timezone.utc),
             duration=timedelta(minutes=60),
-            distance=30
+            distance=30,
+            sport='cycling'
         )
         john.add_workout(workout)
@@ -413,5 +414,5 @@
         # profile page for the current day (no workouts avalable)
         response = user_views.profile(john, request)
-        assert len(response.keys()) == 6
+        assert len(response.keys()) == 7
         current_month = datetime.now(timezone.utc).strftime('%Y-%m')
         assert response['user'] == john
@@ -425,9 +426,15 @@
             'elevation': Decimal(0)
         }
+        assert response['profile_stats'] == {
+            'sports': ['cycling'],
+            'years': [2015],
+            'current_year': datetime.now(timezone.utc).year,
+            'current_sport': 'cycling'
+        }
         # profile page for a previous date, that has workouts
         request.GET['year'] = 2015
         request.GET['month'] = 6
         response = user_views.profile(john, request)
-        assert len(response.keys()) == 6
+        assert len(response.keys()) == 7
         assert response['user'] == john
         assert response['user_gender'] == 'Robot'
@@ -446,5 +453,5 @@
         request.GET['week'] = 25
         response = user_views.profile(john, request)
-        assert len(response.keys()) == 6
+        assert len(response.keys()) == 7
         assert response['user'] == john
         assert response['user_gender'] == 'Robot'
@@ -462,5 +469,5 @@
         request.GET['week'] = 26
         response = user_views.profile(john, request)
-        assert len(response.keys()) == 6
+        assert len(response.keys()) == 7
         assert response['user'] == john
         assert response['user_gender'] == 'Robot'
Index: ow/views/user.py
===================================================================
--- ow/views/user.py	(revision ea4372504bfda5b983d464377cf0b708c253e187)
+++ ow/views/user.py	(revision 778d53d0180c6115a5a8a7204516018101ee7326)
@@ -305,4 +305,12 @@
             user_gender = localizer.translate(g[1])
 
+    # get some data to be shown in the "profile stats" totals column
+    profile_stats = {
+        'sports': user.activity_sports,
+        'years': user.activity_years,
+        'current_year': request.GET.get('stats_year', now.year),
+        'current_sport': request.GET.get('stats_sport', user.favorite_sport),
+    }
+
     return {
         'user': user,
@@ -312,5 +320,6 @@
             year=str(year), month=str(month).zfill(2)),
         'current_week': week,
-        'totals': totals
+        'totals': totals,
+        'profile_stats': profile_stats
     }
 
