PDF: undo delete pages (30 sec window)
- Undo button appears after deleting pages - Restores original file with all pages - Re-renders all grids with restored pages - Auto-hides after 30 seconds
This commit is contained in:
parent
9711b1b3d3
commit
782149e3fa
@ -769,6 +769,7 @@
|
|||||||
<div class="page-grid" id="deletePageGrid"></div>
|
<div class="page-grid" id="deletePageGrid"></div>
|
||||||
<div class="grid-action-bar">
|
<div class="grid-action-bar">
|
||||||
<button class="grid-action-btn danger" id="btnDeleteSelected" disabled onclick="executeDeletePages()">Удалить выбранные (<span id="deleteCount">0</span>)</button>
|
<button class="grid-action-btn danger" id="btnDeleteSelected" disabled onclick="executeDeletePages()">Удалить выбранные (<span id="deleteCount">0</span>)</button>
|
||||||
|
<button class="grid-action-btn" id="btnUndoDelete" style="display:none;background:var(--surface-600);color:var(--text-secondary);" onclick="undoDeletePages()">Отменить</button>
|
||||||
<span class="page-grid-hint" id="deleteHint"></span>
|
<span class="page-grid-hint" id="deleteHint"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -1824,6 +1825,9 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
clearError();
|
clearError();
|
||||||
|
// Save backup for undo
|
||||||
|
const backupFile = { ...selFile };
|
||||||
|
_deleteBackup = { file: backupFile };
|
||||||
// Hide deleted pages visually
|
// Hide deleted pages visually
|
||||||
const grid = document.getElementById('deletePageGrid');
|
const grid = document.getElementById('deletePageGrid');
|
||||||
if (grid) {
|
if (grid) {
|
||||||
@ -1843,7 +1847,14 @@
|
|||||||
await syncAfterOperation(data);
|
await syncAfterOperation(data);
|
||||||
} catch(e) { showError(e.message); }
|
} catch(e) { showError(e.message); }
|
||||||
document.getElementById('btnDeleteSelected').textContent = 'Удалить выбранные (0)';
|
document.getElementById('btnDeleteSelected').textContent = 'Удалить выбранные (0)';
|
||||||
|
document.getElementById('btnUndoDelete').style.display = '';
|
||||||
updateDeleteCount();
|
updateDeleteCount();
|
||||||
|
// Auto-hide undo after 30 seconds
|
||||||
|
setTimeout(() => {
|
||||||
|
_deleteBackup = null;
|
||||||
|
var ub = document.getElementById('btnUndoDelete');
|
||||||
|
if (ub) ub.style.display = 'none';
|
||||||
|
}, 30000);
|
||||||
};
|
};
|
||||||
|
|
||||||
window.executeRotatePages = async function() {
|
window.executeRotatePages = async function() {
|
||||||
@ -2025,6 +2036,23 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ─── Undo delete ──────────────────────────────────────────────────────────
|
||||||
|
let _deleteBackup = null; // { fileId, file object before delete }
|
||||||
|
|
||||||
|
window.undoDeletePages = function() {
|
||||||
|
if (!_deleteBackup) return;
|
||||||
|
// Restore the backed-up file
|
||||||
|
const old = _deleteBackup;
|
||||||
|
state.files = state.files.map(f => f.id === state.selectedFileId ? old.file : f);
|
||||||
|
state.selectedFileId = old.file.id;
|
||||||
|
_deleteBackup = null;
|
||||||
|
document.getElementById('btnUndoDelete').style.display = 'none';
|
||||||
|
stepResult.style.display = 'none';
|
||||||
|
downloadLink.style.display = 'none';
|
||||||
|
renderFileList();
|
||||||
|
};
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user