Changeset ffd6bb5 in OpenWorkouts-current
- Timestamp:
- Feb 4, 2019, 5:48:44 PM (5 years ago)
- Branches:
- current, feature/docs, master
- Children:
- d24a64a
- Parents:
- d52ba50
- Location:
- ow
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
ow/static/css/main.css
rd52ba50 rffd6bb5 663 663 border-radius: 4px; 664 664 padding: 0; 665 width: auto; 665 666 } 666 667 .workout-options li { … … 1009 1010 font-size: 13px; 1010 1011 font-size: 0.8125rem; 1012 margin-right: 2em; 1011 1013 } 1012 1014 .user-profile-account { … … 1018 1020 padding: 2em 6em; 1019 1021 } 1022 } 1023 .user-profile-account > div { 1024 display: flex; 1025 align-items: center; 1020 1026 } 1021 1027 .user-profile-account img { … … 1025 1031 border-radius: 50%; 1026 1032 margin-bottom: 0.5em; 1033 margin-right: 1em; 1027 1034 } 1028 1035 .user-profile-account h2 { … … 1050 1057 font-size: 14px; 1051 1058 font-size: 0.875rem; 1059 background-color: white; 1060 padding: 0.5em 0.75em; 1061 border-radius: 4px; 1062 border: 1px solid #e1e1e1; 1063 max-width: 200px; 1052 1064 } 1053 1065 .profile-data li { 1054 margin-bottom: 0.25em; 1066 display: flex; 1067 justify-content: space-between; 1068 color: #959595; 1069 } 1070 .profile-data li:not(:last-child) { 1071 margin-bottom: 0.5em; 1072 padding-bottom: 0.5em; 1073 border-bottom: 1px solid #e1e1e1; 1074 } 1075 .profile-data li span { 1076 font-weight: bold; 1077 color: #151515; 1055 1078 } 1056 1079 .profile-bio { 1057 margin: 1em 0; 1080 margin: 0.5em 0; 1081 font-size: 14px; 1082 font-size: 0.875rem; 1058 1083 } 1059 1084 .month-stats, 1060 1085 .latest-workouts { 1061 max-width: 40vw; 1062 margin: 0 auto; 1086 max-width: 700px; 1087 } 1088 .month-stats { 1089 margin-bottom: 4em; 1063 1090 } 1064 1091 .latest-workouts h4 { -
ow/static/less/modules/workout.less
rd52ba50 rffd6bb5 122 122 border-radius: 4px; 123 123 padding: 0; 124 width: auto; 124 125 li{ 125 126 display: inline-block; -
ow/static/less/pages/profile.less
rd52ba50 rffd6bb5 2 2 .workout-options { 3 3 .font-size(13); 4 margin-right: 2em; 4 5 } 5 6 } … … 11 12 padding: 2em 6em; 12 13 } 14 >div { 15 display: flex; 16 align-items: center; 17 } 13 18 img { 14 19 width: 140px; … … 17 22 border-radius: 50%; 18 23 margin-bottom: .5em; 24 margin-right: 1em; 19 25 } 20 26 h2 { … … 40 46 padding: 0; 41 47 .font-size(14); 48 background-color: white; 49 padding: .5em .75em; 50 border-radius: 4px; 51 border: 1px solid @color-main-light; 52 max-width: 200px; 42 53 li { 43 margin-bottom: .25em; 54 display: flex; 55 justify-content: space-between; 56 color: @color-main-medium; 57 &:not(:last-child) { 58 margin-bottom: .5em; 59 padding-bottom: .5em; 60 border-bottom: 1px solid @color-main-light; 61 } 62 span { 63 font-weight: bold; 64 color: @color-main; 65 } 44 66 } 45 67 } 46 68 47 69 .profile-bio { 48 margin: 1em 0; 70 margin: .5em 0; 71 .font-size(14); 49 72 } 50 73 51 74 .month-stats, 52 75 .latest-workouts { 53 max-width: 40vw; 54 margin: 0 auto; 76 max-width: 700px 77 } 78 79 .month-stats { 80 margin-bottom: 4em; 55 81 } 56 82 -
ow/templates/profile.pt
rd52ba50 rffd6bb5 16 16 <div class="user-profile"> 17 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 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> 34 44 <ul class="profile-data"> 35 45 <li> 36 < tal:t i18n:translate="">Gender:</tal:t>46 <span><tal:t i18n:translate="">Gender:</tal:t></span> 37 47 <tal:c tal:content="getattr(context, 'gender', '-')"></tal:c> 38 48 </li> 39 49 <li tal:define="birth_date getattr(context, 'birth_date', None)"> 40 < tal:t i18n:translate="">Birth date:</tal:t>50 <span><tal:t i18n:translate="">Birth date:</tal:t></span> 41 51 <tal:c tal:condition="birth_date" 42 52 tal:content="birth_date.strftime('%d/%m/%Y')"></tal:c> … … 44 54 </li> 45 55 <li> 46 < tal:t i18n:translate="">Height:</tal:t>56 <span><tal:t i18n:translate="">Height:</tal:t></span> 47 57 <tal:c tal:content="getattr(context, 'height', '-')"></tal:c> meters 48 58 </li> 49 59 <li> 50 < tal:t i18n:translate="">Weight:</tal:t>60 <span><tal:t i18n:translate="">Weight:</tal:t></span> 51 61 <tal:c tal:content="getattr(context, 'weight', '-')"></tal:c> kg 52 62 </li> 53 63 </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> 64 62 65 </div> 63 66 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> 67 <div class="workout-content"> 68 <div class="workout-list"> 69 <div class="total-workouts"> 70 <tal:w tal:replace="context.num_workouts"></tal:w> 71 <tal:t i18n:translate="">workouts</tal:t> 72 </div> 68 73 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>74 <div class="month-stats js-month-stats"> 75 <div class="svg-cotent"> 76 <svg width="900" height="180" viewBox="0 0 900 180"></svg> 77 </div> 78 <ul class="workout-options filters js-filters"> 79 <li><a href="#" class="js-distance is-active" i18n:translate="">distance</a></li> 80 <li><a href="#" class="js-time" i18n:translate="">time</a></li> 81 <li><a href="#" class="js-elevation" i18n:translate="">elevation</a></li> 82 </ul> 78 83 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 <ul class="workout-options switcher js-switcher"> 85 <li><a href="#" class="js-weekly" i18n:translate="">weekly</a></li> 86 <li><a href="#" class="js-monthly is-active" i18n:translate="">monthly</a></li> 87 </ul> 88 </div> 84 89 85 90 86 <tal:r tal:repeat="workout workouts">91 <tal:r tal:repeat="workout workouts"> 87 92 88 <a name="workouts"></a>93 <article class="workout-resume"> 89 94 95 <h2 class="workout-title"> 96 <a href="" tal:content="workout.title" 97 tal:attributes="href request.resource_url(workout)"></a> 98 </h2> 90 99 91 <article class="workout-resume"> 100 <ul class="workout-info"> 101 <li> 102 <tal:c tal:content="workout.start_in_timezone(context.timezone)"></tal:c> 103 </li> 104 <li> 105 <!--! use the properly formatted duration instead of the timedelta object --> 106 <tal:c tal:content="workout._duration"></tal:c> 107 </li> 108 <li tal:condition="workout.distance"> 109 <tal:c tal:content="workout.rounded_distance"></tal:c> km 110 </li> 111 </ul> 92 112 93 <h2 class="workout-title"> 94 <a href="" tal:content="workout.title" 95 tal:attributes="href request.resource_url(workout)"></a> 96 </h2> 113 <ul class="workout-info" tal:define="hr workout.hr; cad workout.cad"> 114 <li tal:condition="hr"> 115 <span i18n:translate="">HR (bpm)</span>: 116 <tal:c tal:content="hr['min']"></tal:c> 117 <tal:t i18n:translate="">Min.</tal:t>, 118 <tal:c tal:content="hr['avg']"></tal:c> 119 <tal:t i18n:translate="">Avg.</tal:t>, 120 <tal:c tal:content="hr['max']"></tal:c> 121 <tal:t i18n:translate="">Max.</tal:t> 122 </li> 123 <li tal:condition="cad"> 124 <span i18n:translate="">Cad</span>: 125 <tal:c tal:content="cad['min']"></tal:c> 126 <tal:t i18n:translate="">Min.</tal:t>, 127 <tal:c tal:content="cad['avg']"></tal:c> 128 <tal:t i18n:translate="">Avg.</tal:t>, 129 <tal:c tal:content="cad['max']"></tal:c> 130 <tal:t i18n:translate="">Max.</tal:t> 131 </li> 132 </ul> 97 133 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> 134 <div class="workout-intro" tal:content="workout.notes"></div> 110 135 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> 136 <div class="workout-map" tal:condition="workout.has_gpx"> 137 <a href="" tal:attributes="href request.resource_url(workout)"> 138 <img src="" tal:attributes="src request.static_url(workout.map_screenshot); 139 alt workout.title; title workout.title"> 140 </a> 141 </div> 131 142 132 <div class="workout-intro" tal:content="workout.notes"></div>143 </article> 133 144 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> 145 </tal:r> 146 </div> 147 </div> 144 148 </div> 145 149
Note: See TracChangeset
for help on using the changeset viewer.