diff --git a/index.html b/index.html index 59ed0c6..f06d9e2 100644 --- a/index.html +++ b/index.html @@ -144,18 +144,23 @@
-
- - → - +
+
+ + → + +
+
@@ -175,6 +180,13 @@ Здесь появится перевод...
+ +
+

📋 Журнал действий

+
+ История пуста... +
+
@@ -329,6 +341,65 @@ function saveData(input, source, target, result) { localStorage.setItem('translatorSourceLang', source); localStorage.setItem('translatorTargetLang', target); localStorage.setItem('translatorResult', result); + + // Запись в журнал + addToLog('Перевод', source + ' → ' + target, input.substring(0, 50) + (input.length > 50 ? '...' : '')); +} + +// Добавление записи в журнал +function addToLog(action, details, data) { + const logs = JSON.parse(localStorage.getItem('translatorLog') || '[]'); + logs.unshift({ + action: action, + details: details, + data: data, + timestamp: new Date().toISOString() + }); + // Храним последние 20 записей + if (logs.length > 20) logs.pop(); + localStorage.setItem('translatorLog', JSON.stringify(logs)); + renderLog(); +} + +// Отображение журнала +function renderLog() { + const logBox = document.getElementById('logBox'); + const logs = JSON.parse(localStorage.getItem('translatorLog') || '[]'); + + if (logs.length === 0) { + logBox.innerHTML = 'История пуста...'; + return; + } + + const langNames = { ru: 'Русский', kk: 'Қазақша', en: 'English' }; + logBox.innerHTML = logs.map(function(log) { + var date = new Date(log.timestamp); + var time = date.toLocaleTimeString('ru-RU', { hour: '2-digit', minute: '2-digit' }); + return '
' + + '
' + + '' + log.action + '' + + '' + time + '' + + '
' + + '
' + log.details + ': ' + log.data + '
' + + '
'; + }).join(''); +} + +// Очистка истории +function clearHistory() { + if (confirm('Вы уверены, что хотите очистить всю историю переводов? Это действие нельзя отменить.')) { + localStorage.removeItem('translatorInput'); + localStorage.removeItem('translatorSourceLang'); + localStorage.removeItem('translatorTargetLang'); + localStorage.removeItem('translatorResult'); + localStorage.removeItem('translatorLog'); + + document.getElementById('inputText').value = ''; + document.getElementById('resultBox').innerHTML = 'Здесь появится перевод...'; + document.getElementById('logBox').innerHTML = 'История пуста...'; + + addToLog('Очистка', 'История', 'Все данные удалены'); + } } // Функция перевода @@ -413,6 +484,9 @@ document.getElementById('contactForm').addEventListener('submit', function(e) { }); localStorage.setItem('contactLeads', JSON.stringify(leads)); + // Запись в журнал + addToLog('Заявка', name, phone + (company ? ' | ' + company : '')); + // Показ сообщения об успехе document.getElementById('contactForm').style.display = 'none'; document.getElementById('successMessage').classList.add('show'); @@ -426,8 +500,10 @@ document.getElementById('contactForm').addEventListener('submit', function(e) { // Инициализация document.addEventListener('DOMContentLoaded', function() { loadSavedData(); + renderLog(); document.getElementById('translateBtn').addEventListener('click', translate); + document.getElementById('clearHistoryBtn').addEventListener('click', clearHistory); // Перевод по Enter в textarea document.getElementById('inputText').addEventListener('keydown', function(e) {