source: OpenWorkouts-current/ow/templates/profile.pt @ 6993c72

currentfeature/docs
Last change on this file since 6993c72 was 6993c72, checked in by Segundo Fdez <segun.2@…>, 5 years ago

Merge branch 'master' into feature/ui

# Conflicts:
# ow/templates/profile.pt

  • Property mode set to 100644
File size: 6.6 KB
Line 
1<html xmlns="http://www.w3.org/1999/xhtml"
2      xml:lang="en"
3      xmlns:tal="http://xml.zope.org/namespaces/tal"
4      xmlns:metal="http://xml.zope.org/namespaces/metal"
5      xmlns:i18n="http://xml.zope.org/namespaces/i18n"
6      i18n:domain="OpenWorkouts"
7      metal:use-macro="load: base.pt"
8      tal:attributes="lang request.locale_name">
9
10  <metal:head-title metal:fill-slot="head-title">
11    <tal:t i18n:translate="">My profile</tal:t>
12  </metal:head-title>
13
14  <metal:content metal:fill-slot="content">
15
16    <div class="user-profile">
17      <div class="user-profile-account">
18        <tal:c tal:condition="getattr(context, 'picture', None)">
19          <img tal:attributes="src request.resource_path(context, 'picture')"
20               width="450" />
21        </tal:c>
22        <h2>
23            <tal:fullname tal:content="context.fullname"></tal:fullname>
24        </h2>
25        <p>
26          <tal:has-nickname tal:condition="context.nickname">
27              <tal:nickname tal:content="context.nickname"></tal:nickname>
28          </tal:has-nickname> |
29          <span><tal:email tal:content="context.email"></tal:email></span>
30        </p>
31
32        <div class="profile-bio" tal:content="getattr(context, 'bio', '')"></div>
33
34        <ul class="profile-data">
35          <li>
36            <tal:t i18n:translate="">Gender:</tal:t>
37            <tal:c tal:content="getattr(context, 'gender', '-')"></tal:c>
38          </li>
39          <li tal:define="birth_date getattr(context, 'birth_date', None)">
40            <tal:t i18n:translate="">Birth date:</tal:t>
41            <tal:c tal:condition="birth_date"
42                   tal:content="birth_date.strftime('%d/%m/%Y')"></tal:c>
43            <tal:c tal:condition="birth_date is None">-</tal:c>
44          </li>
45          <li>
46            <tal:t i18n:translate="">Height:</tal:t>
47            <tal:c tal:content="getattr(context, 'height', '-')"></tal:c> meters
48          </li>
49          <li>
50            <tal:t i18n:translate="">Weight:</tal:t>
51            <tal:c tal:content="getattr(context, 'weight', '-')"></tal:c> kg
52          </li>
53        </ul>
54        <ul class="workout-options">
55          <li><a href=""
56             tal:attributes="href request.resource_url(context, 'edit')"
57             i18n:translate="">edit profile</a></li>
58          <li><a href=""
59             tal:attributes="href request.resource_url(context, 'passwd')"
60             i18n:translate="">change password</a></li>
61        </ul>
62      </div>
63
64      <div class="total-workouts">
65        <tal:w tal:replace="context.num_workouts"></tal:w>
66        <tal:t i18n:translate="">workouts</tal:t>
67      </div>
68
69      <div class="month-stats js-month-stats">
70        <div class="svg-cotent">
71          <svg width="800" height="180" viewBox="0 0 800 180"></svg>
72        </div>
73        <ul class="workout-options filters js-filters">
74          <li><a href="#" class="js-distance is-active" i18n:translate="">distance</a></li>
75          <li><a href="#" class="js-time" i18n:translate="">time</a></li>
76          <li><a href="#" class="js-elevation" i18n:translate="">elevation</a></li>
77        </ul>
78
79        <ul class="workout-options switcher js-switcher">
80          <li><a href="#" class="js-weekly" i18n:translate="">weekly</a></li>
81          <li><a href="#" class="js-monthly is-active" i18n:translate="">monthly</a></li>
82        </ul>
83      </div>
84
85
86      <tal:r tal:repeat="workout workouts">
87
88        <a name="workouts"></a>
89
90
91        <article class="workout-resume">
92
93          <h2 class="workout-title">
94            <a href="" tal:content="workout.title"
95               tal:attributes="href request.resource_url(workout)"></a>
96          </h2>
97
98          <ul class="workout-info">
99            <li>
100              <tal:c tal:content="workout.start_in_timezone(context.timezone)"></tal:c>
101            </li>
102            <li>
103              <!--! use the properly formatted duration instead of the timedelta object -->
104              <tal:c tal:content="workout._duration"></tal:c>
105            </li>
106            <li tal:condition="workout.distance">
107              <tal:c tal:content="workout.rounded_distance"></tal:c> km
108            </li>
109          </ul>
110
111          <ul class="workout-info" tal:define="hr workout.hr; cad workout.cad">
112            <li tal:condition="hr">
113              <span i18n:translate="">HR (bpm)</span>:
114              <tal:c tal:content="hr['min']"></tal:c>
115              <tal:t i18n:translate="">Min.</tal:t>,
116              <tal:c tal:content="hr['avg']"></tal:c>
117              <tal:t i18n:translate="">Avg.</tal:t>,
118              <tal:c tal:content="hr['max']"></tal:c>
119              <tal:t i18n:translate="">Max.</tal:t>
120            </li>
121            <li tal:condition="cad">
122              <span i18n:translate="">Cad</span>:
123              <tal:c tal:content="cad['min']"></tal:c>
124              <tal:t i18n:translate="">Min.</tal:t>,
125              <tal:c tal:content="cad['avg']"></tal:c>
126              <tal:t i18n:translate="">Avg.</tal:t>,
127              <tal:c tal:content="cad['max']"></tal:c>
128              <tal:t i18n:translate="">Max.</tal:t>
129            </li>
130          </ul>
131
132          <div class="workout-intro" tal:content="workout.notes"></div>
133
134          <div class="workout-map" tal:condition="workout.has_gpx">
135            <a href="" tal:attributes="href request.resource_url(workout)">
136              <img src="" tal:attributes="src request.static_url(workout.map_screenshot);
137                        alt workout.title; title workout.title">
138            </a>
139          </div>
140
141        </article>
142
143      </tal:r>
144    </div>
145
146  </metal:content>
147
148  <metal:body-js metal:fill-slot="body-js">
149
150    <script src="${request.static_url('ow:static/components/d3/d3.min.js')}"></script>
151    <script src="${request.static_url('ow:static/js/ow.js')}"></script>
152
153    <script type="text/javascript">
154     var y_axis_labels = {
155         "distance": "Kilometers",
156         "time": "Hours",
157         "elevation": "Meters"
158     };
159
160     var year_chart = owjs.year_chart({
161         chart_selector: '.js-month-stats svg',
162         filters_selector: '.js-month-stats .js-filters a',
163         switcher_selector: '.js-month-stats .js-switcher a',
164         urls: {"monthly": "${request.resource_url(context, 'monthly')}",
165                "weekly": "${request.resource_url(context, 'weekly')}"},
166         current_month: "${current_month}",
167         current_week: "${current_week}",
168         y_axis_labels: y_axis_labels,
169         filter_by: "distance",
170         url: "${'monthly' if current_week is None else 'weekly'}",
171     });
172     year_chart.render("distance", "${'monthly' if current_week is None else 'weekly'}");
173     year_chart.filters_setup();
174     year_chart.switcher_setup();
175    </script>
176
177  </metal:body-js>
178
179</html>
Note: See TracBrowser for help on using the repository browser.