alph
parent
ec65dd6cec
commit
8c57d7e4a8
|
|
@ -159,19 +159,6 @@
|
|||
}
|
||||
.header-logo { display: flex; align-items: center; }
|
||||
.header-logo img { height: 50px; margin-right: 10px; }
|
||||
#sort-folders-btn {
|
||||
background: #007bff;
|
||||
color: white;
|
||||
border: 1px solid #007bff;
|
||||
padding: 5px 10px;
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
margin-left: 5px;
|
||||
transition: background 0.2s ease;
|
||||
}
|
||||
#sort-folders-btn:hover {
|
||||
background: #0056b3;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
|
@ -179,7 +166,6 @@
|
|||
<h2>Папки</h2>
|
||||
<div id="folder-tree"></div>
|
||||
<button onclick="addFolder()">Добавить папку</button>
|
||||
<button id="sort-folders-btn" onclick="sortFolders()">Сортировать ⬆️</button>
|
||||
</div>
|
||||
<div id="installs-container">
|
||||
<h1 class="header-logo">
|
||||
|
|
@ -280,9 +266,11 @@
|
|||
$.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 = [
|
||||
{ id: "root", text: "Корень", parent: "#" }
|
||||
].concat(data.map(folder => ({
|
||||
].concat(sortedFolders.map(folder => ({
|
||||
id: folder.id,
|
||||
text: `${folder.name} <span class="folder-actions">` +
|
||||
`<button onclick="editFolder(${folder.id}, '${folder.name}')">✏️</button>` +
|
||||
|
|
@ -292,7 +280,7 @@
|
|||
cb(treeData);
|
||||
|
||||
// Автоматически выбираем папку "Несортированные" после загрузки дерева
|
||||
const unsortedFolder = data.find(f => f.name === 'Несортированные');
|
||||
const unsortedFolder = sortedFolders.find(f => f.name === 'Несортированные');
|
||||
if (unsortedFolder) {
|
||||
setTimeout(() => {
|
||||
$('#folder-tree').jstree('select_node', unsortedFolder.id);
|
||||
|
|
@ -349,7 +337,8 @@
|
|||
|
||||
function loadFolders() {
|
||||
$.getJSON(`${API_URL}/folders`, function (data) {
|
||||
allFolders = data; // Обновляем список папок
|
||||
// Сортируем папки по имени перед сохранением
|
||||
allFolders = [...data].sort((a, b) => a.name.localeCompare(b.name));
|
||||
updateFolderSelect(); // Обновляем выпадающий список
|
||||
}).fail(function(jqxhr, textStatus, error) {
|
||||
console.error("Error loading folders:", textStatus, error);
|
||||
|
|
@ -750,36 +739,7 @@
|
|||
});
|
||||
}
|
||||
|
||||
function sortFolders() {
|
||||
// Получаем все папки из allFolders
|
||||
const rootFolders = allFolders.filter(folder => !folder.parent_id || folder.parent_id === "root");
|
||||
|
||||
// Сортируем по имени
|
||||
rootFolders.sort((a, b) => a.name.localeCompare(b.name));
|
||||
|
||||
// Обновляем порядок папок в allFolders
|
||||
const sortedFolders = [];
|
||||
const nonRootFolders = allFolders.filter(folder => folder.parent_id && folder.parent_id !== "root");
|
||||
rootFolders.forEach(folder => sortedFolders.push(folder));
|
||||
nonRootFolders.forEach(folder => sortedFolders.push(folder));
|
||||
allFolders = sortedFolders;
|
||||
|
||||
// Перестраиваем дерево
|
||||
const instance = $('#folder-tree').jstree(true);
|
||||
instance.settings.core.data = [
|
||||
{ id: "root", text: "Корень", parent: "#" }
|
||||
].concat(allFolders.map(folder => ({
|
||||
id: folder.id,
|
||||
text: `${folder.name} <span class="folder-actions">` +
|
||||
`<button onclick="editFolder(${folder.id}, '${folder.name}')">✏️</button>` +
|
||||
`<button onclick="deleteFolder(${folder.id})">🗑️</button></span>`,
|
||||
parent: folder.parent_id ? folder.parent_id : "root"
|
||||
})));
|
||||
instance.refresh();
|
||||
}
|
||||
|
||||
function saveFolderPosition(folderId, newParentId) {
|
||||
// Найдём имя папки, чтобы включить его в запрос
|
||||
const folder = allFolders.find(f => f.id == folderId);
|
||||
if (!folder) {
|
||||
console.error(`Folder with id ${folderId} not found`);
|
||||
|
|
|
|||
Loading…
Reference in New Issue