Private
Public Access
1
0
Files
rowsandall/static/js/videogauges.js
2019-12-11 15:17:20 +01:00

210 lines
4.7 KiB
JavaScript

google.charts.load('current', {'packages':['gauge','corechart']});
google.charts.setOnLoadCallback(drawSPMChart);
google.charts.setOnLoadCallback(drawSpeedChart);
google.charts.setOnLoadCallback(drawPowerChart);
google.charts.setOnLoadCallback(drawHRChart);
google.charts.setOnLoadCallback(drawStrokeAngleChart);
var spmdata = [
['Label', 'Value'],
['SPM', 21],
];
var speeddata = [
['Label', 'Value'],
['V m/s', 0],
];
var powerdata = [
['Label','Value'],
['PWR',150],
]
var hrdata = [
['Label','Value'],
['HR',110],
]
var angledata = [
['Angle', 'deg'],
['slip', 10 ],
['load', 50],
['unload', 50],
['wash', 10],
['recovery',240 ]
]
var anglesoptions = {
title: 'Stroke Angles',
legend: 'none',
pieHole: 0.5,
chartArea: { width: "100%" },
pieStartAngle: 35,
pieSliceText: 'value',
pieSliceTextStyle: {color:'black',fontSize:12},
slices: {
0: { color: 'lightblue' },
1: { color: 'lightgreen' },
2: { color: 'yellow'},
3: { color: 'orange'},
4: { color: 'transparent', textStyle: {color:'transparent'}}
}
};
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,
greenFrom: 20, greenTo: 30,
yellowFrom: 30,yellowTo: 40,
redFrom: 40, redTo: 50,
majorTicks: ['0','10','20','30','40','50'],
minorTicks: 10
};
var speedoptions = {
min:0, max: 6,
width: 400, height: 120,
greenFrom: 2, greenTo: 4,
yellowFrom: 4,yellowTo: 5,
redFrom: 5, redTo: 6,
majorTicks: ['0','1','2','3','4','5','6'],
minorTicks: 10
};
var poweroptions = {
min: 0, max: 1000,
width: 400, height: 120,
greenFrom: 100, greenTo: 200,
yellowFrom: 200,yellowTo: 400,
redFrom: 400, redTo: 1000,
majorTicks: ['0','200','400','600','800','1000'],
minorTicks: 5
};
var dataspm = null;
var dataspeed = null;
var spmchart = null;
var speedchart = null;
var powerchart = null;
var datapower = null;
var dataangles = 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
};
// Speed Chart
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) {
}
}
// HR 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');
}
}
// Stroke angle chart
function drawStrokeAngleChart() {
dataangles = new google.visualization.arrayToDataTable(angledata);
try {
angleschart = new google.visualization.PieChart(document.getElementById('stroke_angles'));
angleschart.draw(dataangles,anglesoptions);
} catch(err) {
console.log('no angles div');
}
}
function set_basic() {
dataspm.setCell(0,1,spm_now);
spmchart.draw(dataspm, spmoptions);
dataspeed.setCell(0,1,boatspeed_now);
speedchart.draw(dataspeed,speedoptions);
}
function set_athlete() {
datahr.setCell(0,1,hr_now);
try {
hrchart.draw(datahr,hroptions);
} catch(err) {}
}
function set_stroke() {
var piestartangle = 90+catch_now;
var load = Math.max(-catch_now-slip_now+peakforceangle_now);
var unload = Math.max(finish_now-wash_now-peakforceangle_now) ;
var recovery = Math.max(360+catch_now-finish_now);
// console.log('load ',load,'; unload ',unload,'; recovery ',recovery,'; pie start angle ',piestartangle);
dataangles.setCell(0,1,slip_now);
dataangles.setCell(1,1,load);
dataangles.setCell(2,1,unload);
dataangles.setCell(3,1,wash_now);
dataangles.setCell(4,1,recovery);
anglesoptions.pieStartAngle = piestartangle;
try {
angleschart.draw(dataangles,anglesoptions);
} catch(err) {
console.log('failed: ',err);
}
}
function set_forcepower() {
datapower.setCell(0,1,power_now);
try {
powerchart.draw(datapower,poweroptions);
} catch(err) {}
}