html
parent
01b1515172
commit
9c3b36cb6f
|
|
@ -14,6 +14,7 @@
|
|||
.form-container { margin-bottom: 20px; }
|
||||
.jstree-node { position: relative; }
|
||||
.folder-actions { display: inline; margin-left: 10px; }
|
||||
#root-btn { margin-top: 10px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
|
@ -21,6 +22,7 @@
|
|||
<h2>Папки</h2>
|
||||
<div id="folder-tree"></div>
|
||||
<button onclick="addFolder()">Добавить папку</button>
|
||||
<button id="root-btn" onclick="showRoot()">Показать все записи</button>
|
||||
</div>
|
||||
<div id="installs-container">
|
||||
<h1>Органайзер RustDesk</h1>
|
||||
|
|
@ -72,13 +74,13 @@
|
|||
}).on('drop', function (e) {
|
||||
e.preventDefault();
|
||||
const installId = e.originalEvent.dataTransfer.getData('text');
|
||||
const folderId = $(e.target).closest('.jstree-node').attr('id');
|
||||
if (installId && folderId) {
|
||||
updateInstallFolder(installId, folderId);
|
||||
const targetFolderId = $(e.target).closest('.jstree-node').attr('id');
|
||||
if (installId && targetFolderId && targetFolderId !== 'undefined') {
|
||||
moveInstallToFolder(installId, targetFolderId);
|
||||
}
|
||||
});
|
||||
|
||||
// Загрузка записей без выбранной папки
|
||||
// Загрузка всех записей при старте
|
||||
loadInstalls(null);
|
||||
});
|
||||
|
||||
|
|
@ -94,6 +96,7 @@
|
|||
</div>
|
||||
`).join(''));
|
||||
});
|
||||
selectedFolderId = folderId; // Обновляем текущую папку
|
||||
}
|
||||
|
||||
function addFolder() {
|
||||
|
|
@ -132,11 +135,11 @@
|
|||
url: `${API_URL}/folders/${folderId}`,
|
||||
type: 'DELETE',
|
||||
success: function () {
|
||||
// Перемещаем записи в корень (folder_id = null)
|
||||
// Перемещаем записи в корень
|
||||
$.getJSON(`${API_URL}/installs`, function (data) {
|
||||
const folderInstalls = data.filter(i => i.folder_id == folderId);
|
||||
folderInstalls.forEach(item => {
|
||||
updateInstallFolder(item.id, null);
|
||||
moveInstallToFolder(item.id, null);
|
||||
});
|
||||
});
|
||||
$('#folder-tree').jstree(true).refresh();
|
||||
|
|
@ -190,14 +193,19 @@
|
|||
}
|
||||
}
|
||||
|
||||
function updateInstallFolder(installId, folderId) {
|
||||
function moveInstallToFolder(installId, folderId) {
|
||||
$.ajax({
|
||||
url: `${API_URL}/install/${installId}`,
|
||||
type: 'PUT',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify({ folder_id: folderId === 'undefined' ? null : folderId }),
|
||||
data: JSON.stringify({ folder_id: folderId }),
|
||||
success: function () {
|
||||
loadInstalls(selectedFolderId); // Обновляем список после переноса
|
||||
// Если текущая папка выбрана, обновляем её, иначе показываем целевую
|
||||
if (selectedFolderId === folderId) {
|
||||
loadInstalls(selectedFolderId);
|
||||
} else {
|
||||
loadInstalls(selectedFolderId); // Остаемся в текущей папке
|
||||
}
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
console.error("Ошибка переноса:", status, error);
|
||||
|
|
@ -210,6 +218,12 @@
|
|||
window.location.href = `rustdesk://${rustId}`;
|
||||
}
|
||||
}
|
||||
|
||||
function showRoot() {
|
||||
selectedFolderId = null;
|
||||
loadInstalls(null);
|
||||
$('#folder-tree').jstree('deselect_all'); // Снимаем выделение с папок
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue