Private
Public Access
1
0

more progress on gauges (loading, initializing)

This commit is contained in:
Sander Roosendaal
2019-12-11 00:21:57 +01:00
parent 557a7fa6e2
commit 93bf91beb5
4 changed files with 122 additions and 7 deletions

View File

@@ -389,6 +389,11 @@ function copyText() {
<div id="forcepower_power"></div>
</li>
{% endif %}
{% if 'athlete' in metricsgroups %}
<li class="grid_1">
<div id="athlete_hr"></div>
</li>
{% endif %}
</ul>
</li>
<li class="grid_2">
@@ -404,12 +409,29 @@ function copyText() {
<script>
$(document).ready( function() {
$(window).load(function() {
// initialize data fields
{% for id, metric in metrics.items %}
{{ id }}_now = {{ id }}_values[0];
document.getElementById("{{ id }}").innerHTML = {{ id }}_now;
document.getElementById("{{ id }}").className = 'bold';
{% endfor %}
document.getElementById("time").innerHTML = Math.round(videotime);
var slider = document.getElementById("myRange");
document.getElementById("datatime").innerHTML = slider.value;
// gauge settings
{% if workout.workouttype != 'water' %}
speedoptions.max = 7;
speedoptions.redTo = 7;
speedoptions.majorTicks = ['0','1','2','3','4','5','6','7'];
{% endif %}
{% if 'basic' in metricsgroups %}
spm_now = spm_values[0];
boatspeed_now = boatspeed_values[0];
set_basic();
{% endif %}
{% if 'forcepower' in metricsgroups %}
poweroptions.max = {{ rower.pw_an|add:100|round100 }};
poweroptions.greenFrom = {{ rower.pw_ut2 }};
@@ -417,7 +439,32 @@ function copyText() {
poweroptions.yellowFrom = {{ rower.pw_at }};
poweroptions.yellowTo = {{ rower.pw_an }};
poweroptions.redFrom = {{ rower.pw_an }};
poweroptions.redTo = {{ rower.pw_an|add:200|round100 }};
poweroptions.redTo = {{ rower.pw_an|add:100|round100 }};
poweroptions.majorTicks = {{ rower.pw_an|add:100|round100|majorticks }};
{% if workout.workouttype == 'water' %}
poweroptions.max = {{ rower.pw_an|waterpower:rower|add:100|round100 }}
poweroptions.greenFrom = {{ rower.pw_ut2|waterpower:rower }};
poweroptions.greenTo = {{ rower.pw_at|waterpower:rower }};
poweroptions.yellowFrom = {{ rower.pw_at|waterpower:rower }};
poweroptions.yellowTo = {{ rower.pw_an|waterpower:rower }};
poweroptions.redFrom = {{ rower.pw_an|waterpower:rower }};
poweroptions.redTo = {{ rower.pw_an|waterpower:rower|add:100|round100 }};
poweroptions.majorTicks = {{ rower.pw_an|waterpower:rower|add:100|round100|majorticks }};
{% endif %}
power_now = power_values[0];
set_forcepower();
{% endif %}
{% if 'athlete' in metricsgroups %}
hroptions.max = {{ rower.max|round20 }}
hroptions.greenFrom = {{ rower.ut2 }}
hroptions.greenTo = {{ rower.at }}
hroptions.yellowFrom = {{ rower.at }}
hroptions.yellowTo = {{ rower.an }}
hroptions.redFrom = {{ rower.an }}
hroptions.redTo = {{ rower.max }}
hroptions.majorTicks = {{ rower.max|round20|majorticks }}
hr_now = hr_values[0];
set_athlete();
{% endif %}
// cookie reader
@@ -724,6 +771,7 @@ dataplay.onclick = function() {
// }
});
});
</script>
{% endlanguage %}

View File

@@ -121,7 +121,26 @@ def is_coach(rower,rowers):
return True
@register.filter
def waterpower(x,rower):
return int(x*(100-rower.otwslack)/100.)
@register.filter
def round20(x):
return int(20.*(1+int(int(x)/20)))
@register.filter
def round100(x):
return int(100.*(1+int(int(x)/100)))
@register.filter
def majorticks(maxval):
ticks = range(1+int(maxval/100.))
newticks =[]
for t in ticks:
newticks.append(t*100)
return newticks
def strfdeltah(tdelta):
hours, rest = divmod(tdelta.seconds,3600)

View File

@@ -84,7 +84,7 @@ MIDDLEWARE = [
'django.middleware.common.CommonMiddleware',
'django.middleware.common.BrokenLinkEmailsMiddleware',
'django.middleware.gzip.GZipMiddleware',
'htmlmin.middleware.HtmlMinifyMiddleware',
# 'htmlmin.middleware.HtmlMinifyMiddleware',
# 'htmlmin.middleware.MarkRequestMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.security.SecurityMiddleware',

View File

@@ -2,15 +2,18 @@ google.charts.load('current', {'packages':['gauge']});
google.charts.setOnLoadCallback(drawSPMChart);
google.charts.setOnLoadCallback(drawSpeedChart);
google.charts.setOnLoadCallback(drawPowerChart);
google.charts.setOnLoadCallback(drawHRChart);
console.log('initializing data');
var spmdata = [
['Label', 'Value'],
['SPM', 21.0],
['SPM', 21],
];
var speeddata = [
['Label', 'Value'],
['V m/s', 0.0],
['V m/s', 0],
];
var powerdata = [
@@ -18,6 +21,21 @@ var powerdata = [
['PWR',150],
]
var hrdata = [
['Label','Value'],
['HR',110],
]
var hroptions = {
min: 100, max: 200,
width: 400, height: 120,
greenFrom: 100, greenTo: 135,
yellowFrom: 135,yellowTo: 157,
redFrom: 157, redTo: 200,
minorTicks: 5
};
var spmoptions = {
min:0, max: 50,
width: 400, height: 120,
@@ -58,13 +76,16 @@ var datapower = null;
// SPM chart
function drawSPMChart() {
console.log('first draw SPM chart');
dataspm = new google.visualization.arrayToDataTable(spmdata);
try {
spmchart = new google.visualization.Gauge(document.getElementById('basic_spm'));
spmchart.draw(dataspm,spmoptions);
} catch(err) {
}
// spmchart.draw(data, spmoptions);
// Define set_basic(values) so that gauges can be set by metricsgroups
@@ -75,13 +96,35 @@ function drawSPMChart() {
function drawSpeedChart() {
dataspeed = new google.visualization.arrayToDataTable(speeddata);
try {
speedchart = new google.visualization.Gauge(document.getElementById('basic_boatspeed'));
speedchart.draw(dataspeed,speedoptions);
} catch(err) {
}
}
// Power chart
function drawPowerChart() {
datapower = new google.visualization.arrayToDataTable(powerdata);
try {
powerchart = new google.visualization.Gauge(document.getElementById('forcepower_power'));
powerchart.draw(datapower,poweroptions)
} catch(err) {
}
}
// Power chart
function drawHRChart() {
datahr = new google.visualization.arrayToDataTable(hrdata);
try {
hrchart = new google.visualization.Gauge(document.getElementById('athlete_hr'));
hrchart.draw(datahr,hroptions);
} catch(err) {
console.log('no hr div');
}
}
@@ -94,7 +137,10 @@ function set_basic() {
}
function set_athlete() {
datahr.setCell(0,1,hr_now);
try {
hrchart.draw(datahr,hroptions);
} catch(err) {}
}
function set_stroke() {
@@ -103,5 +149,7 @@ function set_stroke() {
function set_forcepower() {
datapower.setCell(0,1,power_now);
try {
powerchart.draw(datapower,poweroptions);
} catch(err) {}
}