From 51da9cd359888abd5fb74f291468a5ab388ecd54 Mon Sep 17 00:00:00 2001 From: "Satur@it-depot.ru" Date: Tue, 11 Mar 2025 11:36:46 +0300 Subject: [PATCH] icons --- templates/icons/copy.png | Bin 0 -> 4735 bytes templates/icons/delete.png | Bin 0 -> 652 bytes templates/icons/edit.png | Bin 0 -> 3216 bytes templates/index.html | 88 ++++++++++++++++++------------------- 4 files changed, 43 insertions(+), 45 deletions(-) create mode 100644 templates/icons/copy.png create mode 100644 templates/icons/delete.png create mode 100644 templates/icons/edit.png diff --git a/templates/icons/copy.png b/templates/icons/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..9519dce93498ad2abb445fc6c2b14eae4b01105e GIT binary patch literal 4735 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 literal 0 HcmV?d00001 diff --git a/templates/icons/edit.png b/templates/icons/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..9572efa5ab15dffec3b5538892d79dcb32254c23 GIT binary patch literal 3216 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 { - // Восстановление ширины окна с папками из localStorage const savedWidth = localStorage.getItem('treeContainerWidth'); if (savedWidth) { document.getElementById('tree-container').style.width = savedWidth + 'px'; @@ -407,7 +424,7 @@ } localStorage.setItem('theme', defaultTheme); - $('#installs-list').on('click', '.action-buttons button:nth-child(2)', function () { + $('#installs-list').on('click', '.note-icon', function () { const installId = $(this).closest('.install-item').data('id'); const install = allInstalls.find(i => i.id === installId); openNoteModal(installId, install?.note || ''); @@ -440,7 +457,6 @@ document.addEventListener('mouseup', () => { isResizing = false; document.body.style.cursor = 'default'; - // Сохраняем ширину в localStorage const width = treeContainer.offsetWidth; localStorage.setItem('treeContainerWidth', width); }); @@ -532,7 +548,6 @@ 'core': { 'data': function (node, cb) { $.getJSON(`${API_URL}/folders`, function (data) { - console.log("Loaded folders:", data); allFolders = data; const sortedFolders = [...data].sort((a, b) => a.name.localeCompare(b.name)); const treeData = [ @@ -540,8 +555,8 @@ ].concat(sortedFolders.map(folder => ({ id: folder.id, text: `${folder.name} ` + - `` + - ``, + `` + + ``, parent: folder.parent_id ? folder.parent_id : "root" }))); cb(treeData); @@ -608,20 +623,15 @@ }); $('#installs-list').on('dragstart', '.install-item', function (e) { - console.log('Drag start:', $(this).data('id')); e.originalEvent.dataTransfer.setData('text/plain', $(this).data('id')); }); $('#folder-tree').on('dragover', function (e) { e.preventDefault(); - console.log('Drag over'); }).on('drop', function (e) { e.preventDefault(); - console.log('Drop event triggered'); const installId = e.originalEvent.dataTransfer.getData('text'); - console.log('Dropped installId:', installId); let targetFolderId = $(e.target).closest('.jstree-node').attr('id'); - console.log('Target folderId:', targetFolderId); if (installId && targetFolderId) { targetFolderId = targetFolderId === "root" ? null : targetFolderId; moveInstallToFolder(installId, targetFolderId); @@ -653,8 +663,8 @@ }; ws.onclose = function() { console.log('WebSocket disconnected, retrying...'); - let retryDelay = 1000; // Начальная задержка 1 секунда - const maxDelay = 30000; // Максимальная задержка 30 секунд + let retryDelay = 1000; + const maxDelay = 30000; const maxAttempts = 10; let attempts = 0; @@ -684,7 +694,6 @@ function loadInstalls(folderId) { $.getJSON(`${API_URL}/installs`, function (data) { - console.log("Loaded installs:", data); allInstalls = data; let filtered = folderId ? data.filter(i => i.folder_id == folderId && i.folder_id !== null) : data; displayInstalls(filtered); @@ -703,8 +712,6 @@ const query = $('#search-input').val().toLowerCase().trim(); const folderId = $('#folder-select').val() || ''; - console.log("Search query:", query, "Folder ID:", folderId); - let filteredInstalls = [...allInstalls]; if (folderId) { @@ -725,21 +732,20 @@ } function displayInstalls(installs) { - console.log("Displaying installs:", installs); const isDarkTheme = document.body.classList.contains('dark-theme'); if (installs.length === 0) { $('#installs-list').html('

Нет результатов

'); } else { $('#installs-list').html(installs.map(item => { const lastSeen = new Date(item.last_seen || '1970-01-01'); - const isOnline = (new Date() - lastSeen) < 60000; // Онлайн, если менее 1 минуты + const isOnline = (new Date() - lastSeen) < 60000; const statusClass = isOnline ? 'status-online' : 'status-offline'; return `
-
${item.computer_name}
-
${protocolIcons[item.protocol]}${item.rust_id}
-
${item.install_time}
-
+
${item.computer_name}
+
${protocolIcons[item.protocol]}${item.rust_id}
+
${item.install_time}
+
`; }).join('')); @@ -951,7 +957,6 @@ } function moveInstallToFolder(installId, folderId) { - console.log('Moving installId:', installId, 'to folderId:', folderId); const install = allInstalls.find(i => i.id === parseInt(installId)); if (!install) { console.error('Install not found:', installId); @@ -970,7 +975,6 @@ note: install.note }), success: function () { - console.log('Move successful'); loadInstalls(selectedFolderId); }, error: function (xhr, status, error) { @@ -1016,7 +1020,6 @@ } function openNoteModal(installId, currentNote) { - console.log('Opening note modal for installId:', installId, 'with note:', currentNote); selectedInstallId = installId; $('#note-textarea').val(currentNote || ''); $('#note-modal').show(); @@ -1043,7 +1046,6 @@ processData: false, contentType: false, success: function (response) { - console.log('Image uploaded:', response); const imageUrl = response.url; const textarea = $('#note-textarea'); const cursorPos = textarea[0].selectionStart; @@ -1062,9 +1064,7 @@ } function saveNote() { - console.log('Saving note for installId:', selectedInstallId); if (!selectedInstallId) { - console.error('No install selected'); alert('Выберите запись для редактирования заметки.'); return; } @@ -1086,7 +1086,6 @@ note: note }), success: function () { - console.log('Note saved successfully'); loadInstalls(selectedFolderId); selectedInstallId = currentSelectedId; closeNoteModal(); @@ -1164,7 +1163,7 @@ function formatItalic() { const textarea = $('#note-textarea'); const start = textarea[0].selectionStart; - end = textarea[0].selectionEnd; + const end = textarea[0].selectionEnd; const text = textarea.val(); const selected = text.substring(start, end); const newText = `*${selected}*`; @@ -1207,7 +1206,6 @@ contentType: 'application/json', data: JSON.stringify({ name: folder.name, parent_id: newParentId }), success: function () { - console.log(`Folder ${folderId} moved to parent ${newParentId}`); loadFolders(); $('#folder-tree').jstree(true).refresh(); }, @@ -1228,7 +1226,7 @@ }).fail(function(jqxhr, textStatus, error) { console.error("Error syncing installs:", textStatus, error); }); - }, 60000); // Каждые 60 секунд + }, 60000); } startPeriodicSync();