source: OpenWorkouts-current/ow/templates/dashboard.pt @ 0bf3bd6

currentfeature/docs
Last change on this file since 0bf3bd6 was 0bf3bd6, checked in by Borja Lopez <borja@…>, 5 years ago

Remove the "edit, update, delete" links from the dashboard list of workouts.

No need for them there, those are actions important enough to require clicking
first to go to the workout details page, then choose whatever you want to do.

  • Property mode set to 100644
File size: 9.0 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 dashboard</tal:t>
12  </metal:head-title>
13
14  <!--!
15      <metal:title metal:fill-slot="title">
16        <tal:t i18n:translate="">dashboard for user</tal:t>
17        <tal:user tal:content="context.fullname"></tal:user>
18      </metal:title>
19      -->
20
21  <metal:content metal:fill-slot="content">
22
23    <div class="workout-content">
24
25      <section class="workout-list">
26
27        <h3>
28           <tal:n tal:content="len(workouts)"></tal:n> <tal:t i18n:translate="">Activities</tal:t>
29        </h3>
30
31        <tal:no-workouts tal:condition="context.num_workouts == 0">
32            <div class="warning">
33                <p i18n:translate="">You haven't added any workouts yet</p>
34                <p>
35                    <a href="" i18n:translate=""
36                       tal:attributes="href request.resource_url(context, 'add-workout')">
37                        Upload one</a> |
38                    <a href="" i18n:translate=""
39                       tal:attributes="href request.resource_url(context, 'add-workout-manually')">
40                        Add one manually</a>
41                </p>
42            </div>
43        </tal:no-workouts>
44
45        <tal:r tal:repeat="workout workouts">
46
47          <article class="workout-resume">
48
49            <h2 class="workout-title">
50              <a href="" tal:content="workout.title"
51                 tal:attributes="href request.resource_url(workout)"></a>
52            </h2>
53
54            <ul class="workout-info">
55              <li>
56                <tal:c tal:content="workout.start_in_timezone(context.timezone)"></tal:c>
57              </li>
58              <li>
59                <!--! use the properly formatted duration instead of the timedelta object -->
60                <tal:c tal:content="workout._duration"></tal:c>
61              </li>
62              <li tal:condition="workout.distance">
63                <tal:c tal:content="workout.rounded_distance"></tal:c> km
64              </li>
65            </ul>
66
67            <ul class="workout-info" tal:define="hr workout.hr; cad workout.cad">
68              <li tal:condition="hr">
69                <span i18n:translate="">HR (bpm)</span>:
70                <tal:c tal:content="hr['min']"></tal:c>
71                <tal:t i18n:translate="">Min.</tal:t>,
72                <tal:c tal:content="hr['avg']"></tal:c>
73                <tal:t i18n:translate="">Avg.</tal:t>,
74                <tal:c tal:content="hr['max']"></tal:c>
75                <tal:t i18n:translate="">Max.</tal:t>
76              </li>
77              <li tal:condition="cad">
78                <span i18n:translate="">Cad</span>:
79                <tal:c tal:content="cad['min']"></tal:c>
80                <tal:t i18n:translate="">Min.</tal:t>,
81                <tal:c tal:content="cad['avg']"></tal:c>
82                <tal:t i18n:translate="">Avg.</tal:t>,
83                <tal:c tal:content="cad['max']"></tal:c>
84                <tal:t i18n:translate="">Max.</tal:t>
85              </li>
86            </ul>
87
88            <div class="workout-intro" tal:content="workout.notes"></div>
89
90            <div class="workout-map" tal:condition="workout.has_gpx">
91                <a href="" tal:attributes="href request.resource_url(workout)">
92                    <img src="" tal:attributes="src request.static_url(workout.map_screenshot);
93                              alt workout.title; title workout.title">
94                </a>
95            </div>
96
97          </article>
98
99        </tal:r>
100
101      </section>
102
103      <aside class="workout-aside">
104        <div class="aside-profile">
105          <tal:c tal:condition="getattr(context, 'picture', None)">
106            <img tal:attributes="src request.resource_path(context, 'picture')"
107                 width="450" />
108          </tal:c>
109          <h2 tal:content="context.fullname"></h2>
110          <ul>
111            <Li>
112              <tal:n tal:content="context.num_workouts"></tal:n> <tal:t i18n:translate="">workouts</tal:t>
113            </Li>
114          </ul>
115        </div>
116          <div class="week-stats js-week-stats">
117            <h3><tal:t i18n:translate="">This week</tal:t></h3>
118            <p tal:define="totals context.week_totals">
119              <span class="week-stats-distance">
120                <tal:d tal:content="round(totals['distance'])"></tal:d>
121                <tal:t i18n:translate="">kms</tal:t>
122              </span>
123              <span class="week-stats-time">
124                <tal:hms tal:define="hms timedelta_to_hms(totals['time'])">
125                  <tal:h tal:content="str(hms[0]).zfill(2)"></tal:h>
126                  <tal:t i18n:translate="">hours</tal:t>,
127                  <tal:h tal:content="str(hms[1]).zfill(2)"></tal:h>
128                  <tal:t i18n:translate="">min.</tal:t>
129                </tal:hms>
130              </span>
131            </p>
132            <div class="svg-cotent">
133              <svg width="300" height="200" viewBox="0 0 300 200"></svg>
134            </div>
135          </div>
136
137          <tal:activity_tree tal:condition="context.num_workouts > 0">
138              <ul class="workout-activity-tree" tal:define="tree context.activity_dates_tree">
139                  <tal:years tal:repeat="year sorted(tree.keys(), reverse=True )">
140                      <li tal:define="is_viewing_year year == viewing_year">
141                          <a href="" tal:content="year"
142                             tal:attributes="href request.resource_url(context, query={'year': year});
143                                             class 'js-year viewing-year' if is_viewing_year  else 'js-year'">
144                          </a>
145                          <ul tal:define="stats context.stats(year)" tal:attributes="class 'workout-activity-summary' if is_viewing_year  else 'workout-activity-summary hidden'">
146                            <li>
147                              <span i18n:translate="">Workouts:</span>
148                              <span tal:content="stats['workouts']"></span>
149                            </li>
150                            <li>
151                              <span i18n:translate="">Distance:</span>
152                              <span> <tal:kms tal:content="round(stats['distance'])"></tal:kms> km</span>
153                            </li>
154                            <li>
155                              <span i18n:translate="">Time:</span>
156                              <tal:hms tal:define="hms timedelta_to_hms(stats['time'])">
157                                <span>
158                                  <tal:h tal:content="str(hms[0]).zfill(2)"></tal:h>
159                                  <tal:t i18n:translate="">hours</tal:t>,
160                                  <tal:h tal:content="str(hms[1]).zfill(2)"></tal:h>
161                                  <tal:t i18n:translate="">min.</tal:t>
162                                </span>
163                              </tal:hms>
164                            </li>
165                            <li>
166                              <span i18n:translate="">Elevation:</span>
167                              <span> <tal:m tal:content="stats['elevation']"></tal:m> m</span>
168                            </li>
169                          </ul>
170                          <ul class="workout-activity-tree-year"
171                              tal:attributes="class 'workout-activity-tree-year' if is_viewing_year  else 'workout-activity-tree-year hidden'">
172                              <tal:months tal:repeat="month sorted(tree[year].keys())">
173                                  <li tal:define="is_viewing_month is_viewing_year and month == viewing_month">
174                                      <a href=""
175                                         tal:attributes="href request.resource_url(context, query={'year': year, 'month': month});
176                                                         class 'viewing-month' if is_viewing_month else ''">
177                                           <span tal:content="month_name[month]"></span>
178                                           <span tal:content="sum([tree[year][month][sport] for sport in tree[year][month]])"></span>
179                                      </a>
180                                  </li>
181                              </tal:months>
182                          </ul>
183                      </li>
184                  </tal:years>
185              </ul>
186          </tal:activity_tree>
187
188      </aside>
189
190    </div>
191
192  </metal:content>
193
194  <metal:body-js metal:fill-slot="body-js">
195    <script src="${request.static_url('ow:static/components/d3/d3.min.js')}"></script>
196    <script src="${request.static_url('ow:static/js/ow.js')}"></script>
197
198    <script type="text/javascript">
199     var week_chart = owjs.week_chart({
200         chart_selector: 'div.js-week-stats svg',
201         url: "${request.resource_url(context, 'week')}",
202         current_day_name: "${current_day_name}"
203     });
204     week_chart.render();
205    </script>
206
207  </metal:body-js>
208
209</html>
Note: See TracBrowser for help on using the repository browser.