diff --git a/deploy/app.js b/deploy/app.js
index 03cac6f..32dc48b 100644
--- a/deploy/app.js
+++ b/deploy/app.js
@@ -405,7 +405,7 @@ async function loadGroups() {
'
' + docsHtml + '
' +
'Загрузите недостающие базовые договоры для этих номеров.
';
} else {
- card.innerHTML = '📄 Договор №' + escHtml(g.contract_number || '?') + ' — ' + escHtml(g.counterparty || 'контрагент не определён') + '
' +
+ card.innerHTML = '' +
'' +
g.documents.map(function(d) {
var typeLabel = {contract: 'договор', supplement: 'допсоглашение', specification: 'спецификация'}[d.doc_type] || d.doc_type;
@@ -417,6 +417,20 @@ async function loadGroups() {
}).join('') + '
' +
'' +
'';
+ // Клик на заголовок → свернуть/развернуть результаты
+ card.querySelector('.cmp-header').addEventListener('click', function() {
+ var body = document.getElementById('cmpBody_' + gi);
+ var arrow = document.getElementById('cmpArrow_' + gi);
+ if (body) {
+ if (body.style.display === 'none') {
+ body.style.display = 'block';
+ if (arrow) arrow.textContent = '▾';
+ } else {
+ body.style.display = 'none';
+ if (arrow) arrow.textContent = '▸';
+ }
+ }
+ });
}
diffBody.appendChild(card);
});
@@ -442,8 +456,11 @@ window.runCompareForGroup = async function(gi, btn) {
if (_activeCompareES) { _activeCompareES.close(); _activeCompareES = null; }
if (_activeCompareTimer) { clearInterval(_activeCompareTimer); _activeCompareTimer = null; }
- // Свернуть все раскрытые сравнения, кроме текущей группы
- document.querySelectorAll('.cmp-body').forEach(function(el) { el.style.display = 'none'; });
+ // Свернуть ТОЛЬКО тело текущей группы
+ var curBody = document.getElementById('cmpBody_' + gi);
+ if (curBody) curBody.style.display = 'none';
+ var curArrow = document.getElementById('cmpArrow_' + gi);
+ if (curArrow) curArrow.textContent = '▸';
// Заменить span «✓ Готово» обратно на кнопку ТОЛЬКО для текущей группы
var doneSpan = document.querySelector('.cmp-done[data-gi="' + gi + '"]');
if (doneSpan) {
@@ -549,6 +566,9 @@ window.runCompareForGroup = async function(gi, btn) {
btn.parentNode.replaceChild(span, btn);
// Разблокировать остальные кнопки
document.querySelectorAll('.cmp-btn').forEach(function(b) { b.disabled = false; });
+ // Показать стрелку раскрытия
+ var arrow = document.getElementById('cmpArrow_' + gi);
+ if (arrow) arrow.textContent = '▾';
stepDone('stepCompare');
}
else if (d.type === 'error') {