210 lines
4.7 KiB
JavaScript
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) {}
|
|
}
|