alph
parent
ec65dd6cec
commit
8c57d7e4a8
|
|
@ -159,19 +159,6 @@
|
||||||
}
|
}
|
||||||
.header-logo { display: flex; align-items: center; }
|
.header-logo { display: flex; align-items: center; }
|
||||||
.header-logo img { height: 50px; margin-right: 10px; }
|
.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>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
@ -179,7 +166,6 @@
|
||||||
<h2>Папки</h2>
|
<h2>Папки</h2>
|
||||||
<div id="folder-tree"></div>
|
<div id="folder-tree"></div>
|
||||||
<button onclick="addFolder()">Добавить папку</button>
|
<button onclick="addFolder()">Добавить папку</button>
|
||||||
<button id="sort-folders-btn" onclick="sortFolders()">Сортировать ⬆️</button>
|
|
||||||
</div>
|
</div>
|
||||||
<div id="installs-container">
|
<div id="installs-container">
|
||||||
<h1 class="header-logo">
|
<h1 class="header-logo">
|
||||||
|
|
@ -280,9 +266,11 @@
|
||||||
$.getJSON(`${API_URL}/folders`, function (data) {
|
$.getJSON(`${API_URL}/folders`, function (data) {
|
||||||
console.log("Loaded folders:", data);
|
console.log("Loaded folders:", data);
|
||||||
allFolders = data; // Сохраняем все папки
|
allFolders = data; // Сохраняем все папки
|
||||||
|
// Сортируем папки по имени
|
||||||
|
const sortedFolders = [...data].sort((a, b) => a.name.localeCompare(b.name));
|
||||||
const treeData = [
|
const treeData = [
|
||||||
{ id: "root", text: "Корень", parent: "#" }
|
{ id: "root", text: "Корень", parent: "#" }
|
||||||
].concat(data.map(folder => ({
|
].concat(sortedFolders.map(folder => ({
|
||||||
id: folder.id,
|
id: folder.id,
|
||||||
text: `${folder.name} <span class="folder-actions">` +
|
text: `${folder.name} <span class="folder-actions">` +
|
||||||
`<button onclick="editFolder(${folder.id}, '${folder.name}')">✏️</button>` +
|
`<button onclick="editFolder(${folder.id}, '${folder.name}')">✏️</button>` +
|
||||||
|
|
@ -292,7 +280,7 @@
|
||||||
cb(treeData);
|
cb(treeData);
|
||||||
|
|
||||||
// Автоматически выбираем папку "Несортированные" после загрузки дерева
|
// Автоматически выбираем папку "Несортированные" после загрузки дерева
|
||||||
const unsortedFolder = data.find(f => f.name === 'Несортированные');
|
const unsortedFolder = sortedFolders.find(f => f.name === 'Несортированные');
|
||||||
if (unsortedFolder) {
|
if (unsortedFolder) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
$('#folder-tree').jstree('select_node', unsortedFolder.id);
|
$('#folder-tree').jstree('select_node', unsortedFolder.id);
|
||||||
|
|
@ -349,7 +337,8 @@
|
||||||
|
|
||||||
function loadFolders() {
|
function loadFolders() {
|
||||||
$.getJSON(`${API_URL}/folders`, function (data) {
|
$.getJSON(`${API_URL}/folders`, function (data) {
|
||||||
allFolders = data; // Обновляем список папок
|
// Сортируем папки по имени перед сохранением
|
||||||
|
allFolders = [...data].sort((a, b) => a.name.localeCompare(b.name));
|
||||||
updateFolderSelect(); // Обновляем выпадающий список
|
updateFolderSelect(); // Обновляем выпадающий список
|
||||||
}).fail(function(jqxhr, textStatus, error) {
|
}).fail(function(jqxhr, textStatus, error) {
|
||||||
console.error("Error loading folders:", 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) {
|
function saveFolderPosition(folderId, newParentId) {
|
||||||
// Найдём имя папки, чтобы включить его в запрос
|
|
||||||
const folder = allFolders.find(f => f.id == folderId);
|
const folder = allFolders.find(f => f.id == folderId);
|
||||||
if (!folder) {
|
if (!folder) {
|
||||||
console.error(`Folder with id ${folderId} not found`);
|
console.error(`Folder with id ${folderId} not found`);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue