auto-git:
[change] renderer.js
This commit is contained in:
55
renderer.js
55
renderer.js
@@ -411,10 +411,62 @@ folders.forEach(folderObj => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const folderTitleDrop = document.getElementById('folderTitleDrop');
|
||||||
|
const folderTitleArrow = document.getElementById('folderTitleArrow');
|
||||||
|
const folderHierarchyDropdown = document.getElementById('folderHierarchyDropdown');
|
||||||
|
let isDropdownOpen = false;
|
||||||
|
|
||||||
|
folderTitleDrop.addEventListener('click', async () => {
|
||||||
|
if (isDropdownOpen) {
|
||||||
|
closeDropdown();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const selected = await window.electronAPI.getSelected();
|
||||||
|
if (!selected || !selected.path) return;
|
||||||
|
|
||||||
|
// Show loading text
|
||||||
|
folderHierarchyDropdown.textContent = 'Lade Verzeichnis…';
|
||||||
|
folderHierarchyDropdown.classList.remove('hidden');
|
||||||
|
folderTitleArrow.classList.add('open');
|
||||||
|
isDropdownOpen = true;
|
||||||
|
|
||||||
|
// Lade Tree
|
||||||
|
const tree = await window.electronAPI.getFolderTree(selected.path);
|
||||||
|
folderHierarchyDropdown.textContent = renderFolderTreeAscii(tree, '.', '');
|
||||||
|
});
|
||||||
|
|
||||||
|
function closeDropdown() {
|
||||||
|
folderHierarchyDropdown.classList.add('hidden');
|
||||||
|
folderTitleArrow.classList.remove('open');
|
||||||
|
isDropdownOpen = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ASCII-Baum: wie bei ChatGPT!
|
||||||
|
function renderFolderTreeAscii(tree, prefix = '', indent = '') {
|
||||||
|
if (!Array.isArray(tree)) return '';
|
||||||
|
let result = '';
|
||||||
|
const lastIdx = tree.length - 1;
|
||||||
|
tree.forEach((node, i) => {
|
||||||
|
const isLast = i === lastIdx;
|
||||||
|
const pointer = isLast ? '└── ' : '├── ';
|
||||||
|
if (node.type === 'dir') {
|
||||||
|
result += `${indent}${pointer}${node.name}/\n`;
|
||||||
|
const newIndent = indent + (isLast ? ' ' : '│ ');
|
||||||
|
result += renderFolderTreeAscii(node.children, '', newIndent);
|
||||||
|
} else {
|
||||||
|
result += `${indent}${pointer}${node.name}\n`;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// **Optional: Bei neuem Ordnerauswahl Dropdown schließen**
|
||||||
|
window.addEventListener('repo-updated', closeDropdown);
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
const folderTitleDrop = document.getElementById('folderTitleDrop');
|
const folderTitleDrop = document.getElementById('folderTitleDrop');
|
||||||
const folderTitleArrow = document.getElementById('folderTitleArrow');
|
const folderTitleArrow = document.getElementById('folderTitleArrow');
|
||||||
const folderHierarchyDropdown = document.getElementById('folderHierarchyDropdown');
|
const folderHierarchyDropdown = document.getElementById('folderHierarchyDropdown');
|
||||||
@@ -477,3 +529,4 @@ folders.forEach(folderObj => {
|
|||||||
}
|
}
|
||||||
}).join('') + '</ul>';
|
}).join('') + '</ul>';
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
Reference in New Issue
Block a user