feat: drag-and-drop interne, file viewer multi-type, sidebar persistante
1. Drag & drop interne: déplacer fichiers/dossiers existants vers d'autres
dossiers ou racine via l'API /api/local-workspace/items/{id}/move.
Items rendus draggable dans le template x-for et renderChildren.
2. File viewer pour fichiers uploadés: détection content_format='file',
visualiseur intégré avec rendu adapté au type MIME:
- Images: affichage direct
- PDF: iframe
- Texte/Code (.py .js .md .html .ps1 etc.): <pre> avec fetch du contenu
- Autres: lien de téléchargement
Route GET /api/files/{ws_id}/{filename:path} pour servir les fichiers.
3. Sidebar persistante: expandedFolders sauvegardé dans localStorage,
restauré au chargement, préservé avant navigation vers un dossier.
4. Suppression: nettoie aussi le fichier disque pour content_format='file'
This commit is contained in:
@@ -803,12 +803,20 @@
|
||||
},
|
||||
|
||||
// ── Tree expand/collapse + folder navigation ──
|
||||
expandedFolders: {},
|
||||
expandedFolders: (function() {
|
||||
try { return JSON.parse(localStorage.getItem('fd_expanded_folders') || '{}'); }
|
||||
catch(e) { return {}; }
|
||||
})(),
|
||||
toggleTreeFolder(id) {
|
||||
this.expandedFolders[id] = !(this.expandedFolders[id] || false);
|
||||
this.expandedFolders = Object.assign({}, this.expandedFolders);
|
||||
try { localStorage.setItem('fd_expanded_folders', JSON.stringify(this.expandedFolders)); }
|
||||
catch(e) {}
|
||||
},
|
||||
navigateToFolder(id) {
|
||||
// Save expansion state before navigating
|
||||
try { localStorage.setItem('fd_expanded_folders', JSON.stringify(this.expandedFolders)); }
|
||||
catch(e) {}
|
||||
window.location = `/local-workspace?folder=${id}`;
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user