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

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

update profile header

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