Расчет средних ЗРВ
This commit is contained in:
@@ -30,6 +30,17 @@
|
||||
return date.toLocaleString('ru-RU');
|
||||
}
|
||||
|
||||
function formatNumber(value, digits = 3) {
|
||||
const number = Number(value);
|
||||
if (!Number.isFinite(number)) {
|
||||
return '';
|
||||
}
|
||||
return number.toLocaleString('ru-RU', {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: digits
|
||||
});
|
||||
}
|
||||
|
||||
function selectedMode() {
|
||||
return document.querySelector('input[name="rva-mode"]:checked')?.value || 'common';
|
||||
}
|
||||
@@ -113,7 +124,7 @@
|
||||
<td>${row.durationSec}</td>
|
||||
</tr>
|
||||
`).join('');
|
||||
} else {
|
||||
} else if (resultState.mode === 'merge-on-rev') {
|
||||
head.innerHTML = `
|
||||
<tr>
|
||||
<th>Виток</th>
|
||||
@@ -123,7 +134,24 @@
|
||||
body.innerHTML = resultState.rows.map(row => `
|
||||
<tr>
|
||||
<td>${row.revolution}</td>
|
||||
<td>${row.durationSec}</td>
|
||||
<td>${formatNumber(row.durationSec, 1)}</td>
|
||||
</tr>
|
||||
`).join('');
|
||||
} else if (resultState.mode === 'average') {
|
||||
head.innerHTML = `
|
||||
<tr>
|
||||
<th>№ППИ</th>
|
||||
<th>Широта ППИ</th>
|
||||
<th>Сред.кол-во</th>
|
||||
<th>Сред.длит., с</th>
|
||||
</tr>
|
||||
`;
|
||||
body.innerHTML = resultState.rows.map(row => `
|
||||
<tr>
|
||||
<td>${row.ppiNumber}</td>
|
||||
<td>${formatNumber(row.ppiLatitude, 6)}</td>
|
||||
<td>${formatNumber(row.averageCount, 3)}</td>
|
||||
<td>${formatNumber(row.averageDurationSec, 1)}</td>
|
||||
</tr>
|
||||
`).join('');
|
||||
}
|
||||
@@ -145,8 +173,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
const lines = resultState.mode === 'common'
|
||||
? [
|
||||
let lines;
|
||||
if (resultState.mode === 'common') {
|
||||
lines = [
|
||||
['stationId', 'revolution', 'onStart', 'onMaximum', 'onStop', 'duration'],
|
||||
...resultState.rows.map(row => [
|
||||
row.stationId,
|
||||
@@ -156,23 +185,35 @@
|
||||
row.onStop.time,
|
||||
row.duration
|
||||
])
|
||||
]
|
||||
: resultState.mode === 'merge'
|
||||
? [
|
||||
];
|
||||
} else if (resultState.mode === 'merge') {
|
||||
lines = [
|
||||
['begin', 'end', 'durationSec'],
|
||||
...resultState.rows.map(row => [
|
||||
row.begin,
|
||||
row.end,
|
||||
row.durationSec
|
||||
])
|
||||
]
|
||||
: [
|
||||
];
|
||||
} else if (resultState.mode === 'merge-on-rev') {
|
||||
lines = [
|
||||
['revolution', 'durationSec'],
|
||||
...resultState.rows.map(row => [
|
||||
row.revolution,
|
||||
row.durationSec
|
||||
])
|
||||
];
|
||||
} else {
|
||||
lines = [
|
||||
['ppiNumber', 'ppiLatitude', 'averageCount', 'averageDurationSec'],
|
||||
...resultState.rows.map(row => [
|
||||
row.ppiNumber,
|
||||
row.ppiLatitude,
|
||||
row.averageCount,
|
||||
row.averageDurationSec
|
||||
])
|
||||
];
|
||||
}
|
||||
|
||||
const csv = lines.map(line => line.map(csvEscape).join(';')).join('\n');
|
||||
const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
|
||||
|
||||
Reference in New Issue
Block a user