mirror of https://github.com/bvn13/covid19-ru.git
158 lines
5.3 KiB
HTML
158 lines
5.3 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns:th="http://www.thymeleaf.org">
|
||
|
||
<head>
|
||
<title>Home page</title>
|
||
<meta charset="UTF-8"/>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||
|
||
<!-- <link rel="stylesheet" th:href="@{/css/chart.min.css}">-->
|
||
</head>
|
||
<body>
|
||
<p>
|
||
<span th:text="'Today is: ' + ${#dates.format(#dates.createNow(), 'dd MMM yyyy HH:mm')}" th:remove="tag"></span>
|
||
</p>
|
||
<p>
|
||
<a th:href="${@mainConfig.getMainUrl()} + '/stats/last'">Последние данные</a>
|
||
</p>
|
||
<p>
|
||
<a th:href="${@mainConfig.getMainUrl()} + '/stats/all'">Все данные</a>
|
||
</p>
|
||
|
||
<p>
|
||
<label for="region">Регион</label>
|
||
<select id="region"></select>
|
||
</p>
|
||
|
||
<div style="width: 75%;">
|
||
<canvas id="chart"></canvas>
|
||
</div>
|
||
|
||
<script th:inline="javascript">
|
||
var mainUrl = [[${@mainConfig.getMainUrl()}]];
|
||
|
||
document.addEventListener('DOMContentLoaded', () => {
|
||
(function ($) {
|
||
function setUpRegions(regions) {
|
||
$("#region > option").each((i, el) => {
|
||
$(el).remove();
|
||
});
|
||
|
||
_.forEach(regions, (region) => {
|
||
$("#region").append("<option value='" + region + "'>" + region + "</option>");
|
||
});
|
||
|
||
onRegionChanged();
|
||
}
|
||
|
||
function getRegion() {
|
||
return document.getElementById("region").value;
|
||
}
|
||
|
||
function onRegionChanged() {
|
||
var region = getRegion();
|
||
loadStatsForRegion(region);
|
||
}
|
||
|
||
function loadStatsForRegion(region) {
|
||
fetch(mainUrl + '/stats/all?region=' + region)
|
||
.then(value => {
|
||
return value.json()
|
||
})
|
||
.then(json => {
|
||
console.log(json);
|
||
showData(json);
|
||
});
|
||
}
|
||
|
||
function showData(json) {
|
||
var labels = _.map(json.progress, (progress) => progress.datetime.substr(0, 10));
|
||
var sick = _.map(json.progress, (progress) => progress.stats.length > 0 ? progress.stats[0].sick : 0);
|
||
var healed = _.map(json.progress, (progress) => progress.stats.length > 0 ? progress.stats[0].healed : 0);
|
||
var died = _.map(json.progress, (progress) => progress.stats.length > 0 ? progress.stats[0].died : 0);
|
||
|
||
var myChart = new Chart(ctx, {
|
||
type: 'line',
|
||
data: {
|
||
labels: labels,
|
||
datasets: [{
|
||
label: 'Всего',
|
||
data: sick,
|
||
backgroundColor: 'red',
|
||
borderColor: 'red',
|
||
borderWidth: 1,
|
||
fill: false
|
||
}, {
|
||
label: 'Выздоровело',
|
||
data: healed,
|
||
backgroundColor: 'green',
|
||
borderColor: 'green',
|
||
borderWidth: 1,
|
||
fill: false
|
||
}, {
|
||
label: 'Умерло',
|
||
data: died,
|
||
backgroundColor: 'black',
|
||
borderColor: 'black',
|
||
borderWidth: 1,
|
||
fill: false
|
||
}]
|
||
},
|
||
options: {
|
||
responsive: true,
|
||
elements: {
|
||
line: {
|
||
tension: 0.000001
|
||
}
|
||
},
|
||
scales: {
|
||
xAxes: [{
|
||
display: true,
|
||
scaleLabel: {
|
||
display: true,
|
||
labelString: 'Дата'
|
||
}
|
||
}],
|
||
yAxes: [{
|
||
display: true,
|
||
scaleLabel: {
|
||
display: true,
|
||
labelString: 'Количество (чел.)'
|
||
},
|
||
ticks: {
|
||
beginAtZero: true
|
||
}
|
||
}]
|
||
}
|
||
}
|
||
});
|
||
|
||
myChart.canvas.parentNode.style.width = '1024px';
|
||
// myChart.canvas.parentNode.style.height = '1024px';
|
||
}
|
||
|
||
$("#region").change(() => onRegionChanged());
|
||
|
||
var ctx = document.getElementById('chart').getContext('2d');
|
||
|
||
fetch(mainUrl + '/regions')
|
||
.then(value => {
|
||
return value.json()
|
||
})
|
||
.then(json => setUpRegions(json));
|
||
|
||
})(jQuery);
|
||
|
||
});
|
||
|
||
</script>
|
||
|
||
<script th:src="@{/js/jquery-3.5.0.min.js}"></script>
|
||
<script th:src="@{/js/polyfill.min.js}"></script>
|
||
<script th:src="@{/js/fetch.min.js}"></script>
|
||
<script th:src="@{/js/chart.min.js}"></script>
|
||
<script th:src="@{/js/lodash.js}"></script>
|
||
|
||
</body>
|
||
|
||
</html> |