308 lines
10 KiB
HTML
308 lines
10 KiB
HTML
{% load leaflet_tags %}
|
|
{% load cookielaw_tags %}
|
|
|
|
{% load tz_detect %}
|
|
{% tz_detect %}
|
|
{% load analytical %}
|
|
{% block filters %}
|
|
{% endblock %}
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
|
<html lang="en">
|
|
<head>
|
|
<script type='text/javascript'
|
|
src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js'>
|
|
</script>
|
|
|
|
<script type="text/javascript">
|
|
window.jQuery || document.write('<script src="/static/js/jquery-3.1.0.js"><' + '/script>');
|
|
</script>
|
|
|
|
|
|
<script>
|
|
var previous = null;
|
|
var current = null;
|
|
(function checkJobs() {
|
|
console.log('polling');
|
|
$.getJSON(window.location.protocol + '//'+window.location.host + '/rowers/list-jobs/', function(json) {
|
|
current = JSON.stringify(json);
|
|
if (previous && current && previous !== current) {
|
|
console.log('refresh');
|
|
location.reload();
|
|
};
|
|
previous = current;
|
|
});
|
|
setTimeout(checkJobs, 15000);
|
|
}());
|
|
|
|
</script>
|
|
|
|
<script src="/static/cookielaw/js/cookielaw.js"></script>
|
|
{% analytical_head_top %}
|
|
{% if GOOGLE_ANALYTICS_PROPERTY_ID %}
|
|
{% include "ga.html" %}
|
|
{% endif %}
|
|
<link rel="stylesheet" href="/static/css/bokeh-0.12.3.min.css" type="text/css" />
|
|
<link rel="stylesheet" href="/static/css/bokeh-widgets-0.12.3.min.css" type="text/css" />
|
|
|
|
<link rel="shortcut icon" href="/static/img/favicon.ico" type="image/x-icon" />
|
|
<link rel="icon" sizes="32x32" href="/static/img/favicon-32x32.png" type="image/png"/>
|
|
<link rel="icon" sizes="64x64" href="/static/img/favicon-64x64.png" type="image/png"/>
|
|
<link rel="icon" sizes="192x192" href="/static/img/favicon-192x192.png" type="image/png"/>
|
|
<link rel="icon" sizes="16x16" href="/static/img/favicon-16x16.png" type="image/png"/>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="initial-scale=0.67">
|
|
<title>{% block title %}Rowsandall Rowing Data Analytics{% endblock %}</title>
|
|
<meta name="description" content="{% block description %}Free Data and Analysis. For Rowers. By Rowers. {% endblock %}"/>
|
|
{% block image_src %}<link rel="image_src" href="static/img/logo7.png" />{% endblock %}
|
|
<meta property="og:type" content="website">
|
|
{% block og_image %}
|
|
<meta property="og:image" content="https://rowsandall.com/static/img/logo_r.png" />
|
|
<meta property="og:image:secure_url" content="https://rowsandall.com/static/img/logo_r.png" />
|
|
{% endblock %}
|
|
<meta property="og:url" content="https://rowsandall.com{{ request.get_full_path }}" />
|
|
<meta property="fb:app_id" content="694685920739849" />
|
|
<meta property="og:title" content="{% block og_title %}Rowsandall{% endblock %}" />
|
|
<meta property="og:description" content="{% block og_description %}Rowsandall: Free Data and Analysis. For Rowers. By Rowers.{% endblock %}" />
|
|
<link rel="stylesheet" href="/static/css/reset.css" />
|
|
<link rel="stylesheet" href="/static/css/text.css" />
|
|
<link rel="stylesheet" href="/static/css/960_12_col.css" />
|
|
<link rel="stylesheet" href="/static/css/rowsandall.css" />
|
|
|
|
{% block meta %} {% endblock %}
|
|
{% leaflet_js %}
|
|
{% leaflet_css %}
|
|
<div id="fb-root"></div>
|
|
<script>(function(d, s, id) {
|
|
var js, fjs = d.getElementsByTagName(s)[0];
|
|
if (d.getElementById(id)) return;
|
|
js = d.createElement(s); js.id = id;
|
|
js.async=true;
|
|
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.10&appId=694685920739849";
|
|
fjs.parentNode.insertBefore(js, fjs);
|
|
}(document, 'script', 'facebook-jssdk'));</script>
|
|
<link rel="stylesheet" href="https://webapiv2.navionics.com/dist/webapi/webapi.min.css" >
|
|
<script type="text/javascript" src="https://webapiv2.navionics.com/dist/webapi/webapi.min.no-dep.js"></script>
|
|
<script>window.twttr = (function(d, s, id) {
|
|
var js, fjs = d.getElementsByTagName(s)[0],
|
|
t = window.twttr || {};
|
|
if (d.getElementById(id)) return t;
|
|
js = d.createElement(s);
|
|
js.id = id;
|
|
js.async=true;
|
|
js.src = "https://platform.twitter.com/widgets.js";
|
|
fjs.parentNode.insertBefore(js, fjs);
|
|
|
|
t._e = [];
|
|
t.ready = function(f) {
|
|
t._e.push(f);
|
|
};
|
|
|
|
return t;
|
|
}(document, "script", "twitter-wjs"));</script>
|
|
{% analytical_head_bottom %}
|
|
</head>
|
|
<body data-root="http://webapiv2.navionics.com/dist/webapi/images">
|
|
{% analytical_body_top %}
|
|
{% block body_top %}{% endblock %}
|
|
<div class="container_12">
|
|
<div class="grid_12">
|
|
|
|
</div>
|
|
<div class="grid_12">
|
|
<div id="logo" class="grid_6 alpha">
|
|
{% if user.rower.rowerplan == 'pro' or user.rower.rowerplan == 'coach' %}
|
|
<p><a href="/"><img src="/static/img/logo7.png"
|
|
alt="Rowsandall logo" height="80"></a></p>
|
|
{% else %}
|
|
<p><a href="/"><img src="/static/img/logo7.png"
|
|
alt="Rowsandall logo" height="80"></a></p>
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid_6 omega">
|
|
<div class="grid_4 alpha">
|
|
<div class="grid_1 alpha">
|
|
<p id="header">
|
|
<a class="button gray small" href="/rowers/videos">Videos</a></p>
|
|
</div>
|
|
<div class="grid_2">
|
|
<p id="header">
|
|
<a class="button gray small" href="https://analytics.rowsandall.com/">Rowing Analytics BLOG</a></p>
|
|
</div>
|
|
<div class="grid_1 omega">
|
|
<p id="header">
|
|
<a class="button gray small" href="/rowers/email">Contact</a>
|
|
</p>
|
|
</div>
|
|
<div class="grid_4 alpha">
|
|
<p>Free Data and Analysis. For Rowers. By Rowers.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="grid_1">
|
|
<div class="grid_1 tooltip">
|
|
{% if user.is_authenticated %}
|
|
<p>
|
|
<a class="button gray small" href="/rowers/me/edit">{{ user.first_name }}</a>
|
|
</p>
|
|
<span class="tooltiptext">Edit user account, e.g. heart rate zones, power zones, email, teams</span>
|
|
|
|
{% else %}
|
|
<p><a class="button gray small" href="{% url 'login' %}">login</a> </p>
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid_1">
|
|
{% if user.is_authenticated %}
|
|
<p><a class="button gray small" href="{% url 'logout' %}">logout</a></p>
|
|
{% else %}
|
|
<p> </p>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="grid_1 omega">
|
|
{% if user.rower.rowerplan == 'pro' or user.rower.rowerplan == 'coach' %}
|
|
<h6 class="graytext">Pro Member</h6>
|
|
{% else %}
|
|
<div class="grid_1"><a class="button green small" href="/rowers/promembership">Upgrade to Pro</a></div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="grid_12">
|
|
<div class="grid_1 alpha tooltip">
|
|
{% if user.is_authenticated %}
|
|
<p><a class="button gray small" href="/rowers/workout/upload/">Upload</a></p>
|
|
<span class="tooltiptext">Upload CSV, TCX, FIT data files to rowsandall.com</span>
|
|
{% else %}
|
|
<p><a class="button green small" href="/rowers/register">Register (free)</a></p>
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid_1 tooltip">
|
|
{% if user.is_authenticated %}
|
|
<p>
|
|
<a class="button gray small" href="/rowers/imports/">Import</a>
|
|
</p>
|
|
<span class="tooltiptext">Import workouts from Strava, SportTracks, and C2 logbook</span>
|
|
{% else %}
|
|
<p> </p>
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid_2 tooltip">
|
|
{% if user.is_authenticated %}
|
|
<p>
|
|
<a class="button gray small" href="/rowers/list-workouts/">Workouts</a>
|
|
</p>
|
|
<span class="tooltiptext">See your list of workouts</span>
|
|
{% else %}
|
|
<p> </p>
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid_1 tooltip">
|
|
{% if user.is_authenticated %}
|
|
<p>
|
|
<a class="button gray small" href="/rowers/list-graphs/">Graphs</a>
|
|
</p>
|
|
<span class="tooltiptext">See your most recent charts</span>
|
|
{% else %}
|
|
<p> </p>
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid_2 tooltip">
|
|
{% if user.is_authenticated %}
|
|
<p>
|
|
<a class="button gray small" href="/rowers/analysis">Analysis</a>
|
|
</p>
|
|
<span class="tooltiptext">Analysis of workouts over a period of time</span>
|
|
{% else %}
|
|
<p> </p>
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid_1 tooltip">
|
|
{% block teams %}
|
|
{% endblock %}
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="clear"></div>
|
|
<div class="grid_12">
|
|
{% if messages %}
|
|
{% for message in messages %}
|
|
{% if message.level == DEFAULT_MESSAGE_LEVELS.ERROR %}
|
|
<p class="message">
|
|
{% else %}
|
|
<p class="successmessage">
|
|
{% endif %}
|
|
{{ message|safe }}
|
|
</p>
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% block message %}
|
|
{% if message %}
|
|
<p class="message">
|
|
{{ message }}
|
|
</p>
|
|
{% endif %}
|
|
{% if successmessage %}
|
|
<p class="successmessage">
|
|
{{ successmessage }}
|
|
</p>
|
|
{% endif %}
|
|
{% endblock %}
|
|
</div>
|
|
<div class="grid_12">
|
|
{% load tz %}
|
|
|
|
{% block content %}{% endblock %}
|
|
</div>
|
|
<div class="clear"></div>
|
|
|
|
<div class="grid_12 omega" >
|
|
{% block footer %}
|
|
<p id="footer">{{ versionstring }}</p>
|
|
<div class="grid_2 alpha">
|
|
<p id="footer"><a href="/rowers/email/">© Sander Roosendaal</a></p>
|
|
</div>
|
|
<div class="grid_1">
|
|
<p id="footer">
|
|
<a href="/rowers/about">About</a></p>
|
|
</div>
|
|
<div class="grid_1">
|
|
<p id="footer">
|
|
<a href="/rowers/brochure">Brochure</a></p>
|
|
</div>
|
|
<div class="grid_1">
|
|
<p id="footer">
|
|
<a href="/rowers/developers">Develop</a></p>
|
|
</div>
|
|
<div class="grid_1">
|
|
<p id="footer">
|
|
<a href="/rowers/legal">Legal</a></p>
|
|
</div>
|
|
<div class="grid_1">
|
|
<p id="footer">
|
|
<a href="/rowers/partners">Partners</a></p>
|
|
</div>
|
|
<div class="grid_1">
|
|
<p id="footer">
|
|
<a href="/rowers/physics">Physics</a></p>
|
|
</div>
|
|
<div class="grid_2">
|
|
<p id="footer">
|
|
<a href="https://analytics.rowsandall.com/">Rowing Analytics BLOG</a></p>
|
|
</div>
|
|
<div class="grid_2 omega">
|
|
<p id="footer">
|
|
<a href="https://www.facebook.com/groups/rowsandall/">Facebook group</a></p>
|
|
</div>
|
|
{% endblock %}
|
|
</div>
|
|
{% cookielaw_banner %}
|
|
</div>
|
|
<!-- end container -->
|
|
{% analytical_body_bottom %}
|
|
{% block body_bottom %}{% endblock %}
|
|
</body>
|
|
</html>
|