次日预测振幅支持点击查看计算明细
This commit is contained in:
@@ -46,7 +46,7 @@
|
||||
<td class="na">—</td>
|
||||
<td class="na">—</td>
|
||||
<td class="na">—</td>
|
||||
<td><span style="color:var(--accent);font-weight:700;">{{ next_amp }}</span></td>
|
||||
<td><span class="amp-cell" style="color:var(--accent);font-weight:700;" data-next="1">{{ next_amp }}</span></td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% for row in rows %}
|
||||
@@ -84,32 +84,44 @@ document.querySelectorAll('.amp-cell').forEach(function(cell) {
|
||||
cell.addEventListener('click', function() {
|
||||
var row = cell.parentElement.parentElement;
|
||||
var tbl = document.getElementById('bars-table');
|
||||
// Only rows with data-index (skip header + next-day row)
|
||||
var dataRows = tbl.querySelectorAll('tr[data-index]');
|
||||
|
||||
// Next-day row: use latest 5 data rows
|
||||
if (cell.dataset.next) {
|
||||
if (dataRows.length < 5) return;
|
||||
showDrawer(cell, '{{ contract }}', dataRows, 0, 5);
|
||||
return;
|
||||
}
|
||||
|
||||
var idx = parseInt(row.dataset.index);
|
||||
// Need 5 older rows (higher index, since newest first)
|
||||
if (idx + 5 >= dataRows.length) return;
|
||||
|
||||
document.getElementById('drawer-title').textContent = '{{ contract }}';
|
||||
document.getElementById('drawer-date').textContent = '目标: ' + row.dataset.date + ' ' + row.dataset.weekday + ' 振幅 ' + cell.textContent.trim();
|
||||
|
||||
var html = '<tr><td>日期</td><td>最高−最低</td></tr>';
|
||||
var sum = 0;
|
||||
for (var j = idx + 1; j <= idx + 5; j++) {
|
||||
var r = dataRows[j];
|
||||
html += '<tr><td>' + r.dataset.date + ' ' + r.dataset.weekday + '</td><td>' + r.dataset.diff + '</td></tr>';
|
||||
sum += parseInt(r.dataset.diff);
|
||||
}
|
||||
document.getElementById('drawer-table').innerHTML = html;
|
||||
document.getElementById('drawer-result').innerHTML = '合计 <b>' + sum + '</b> ÷ 5 = <b>' + (sum / 5).toFixed(1) + '</b><br>四舍五入 → <b>' + Math.round(sum / 5) + '</b>';
|
||||
|
||||
document.getElementById('overlay').classList.add('show');
|
||||
document.getElementById('drawer').classList.add('show');
|
||||
|
||||
if (activeRow) activeRow.classList.remove('active');
|
||||
row.classList.add('active');
|
||||
activeRow = row;
|
||||
showDrawer(cell, '{{ contract }}', dataRows, idx + 1, idx + 5);
|
||||
});
|
||||
});
|
||||
|
||||
function showDrawer(cell, product, dataRows, fromIdx, toIdx) {
|
||||
document.getElementById('drawer-title').textContent = product;
|
||||
var label = cell.dataset.next ? '次日预测' : '目标';
|
||||
document.getElementById('drawer-date').textContent = label + ' 振幅 ' + cell.textContent.trim();
|
||||
|
||||
var html = '<tr><td>日期</td><td>最高−最低</td></tr>';
|
||||
var sum = 0;
|
||||
for (var j = fromIdx; j <= toIdx; j++) {
|
||||
var r = dataRows[j];
|
||||
html += '<tr><td>' + r.dataset.date + ' ' + r.dataset.weekday + '</td><td>' + r.dataset.diff + '</td></tr>';
|
||||
sum += parseInt(r.dataset.diff);
|
||||
}
|
||||
document.getElementById('drawer-table').innerHTML = html;
|
||||
document.getElementById('drawer-result').innerHTML = '合计 <b>' + sum + '</b> ÷ 5 = <b>' + (sum / 5).toFixed(1) + '</b><br>四舍五入 → <b>' + Math.round(sum / 5) + '</b>';
|
||||
|
||||
document.getElementById('overlay').classList.add('show');
|
||||
document.getElementById('drawer').classList.add('show');
|
||||
|
||||
var row = cell.parentElement.parentElement;
|
||||
if (activeRow) activeRow.classList.remove('active');
|
||||
row.classList.add('active');
|
||||
activeRow = row;
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user