Add download lora

This commit is contained in:
Will Miao
2025-02-14 10:57:33 +08:00
parent b7aca9b6fc
commit 451f77b99b
10 changed files with 283 additions and 87 deletions

View File

@@ -1211,4 +1211,20 @@ body.modal-open {
color: var(--text-color);
opacity: 0.8;
margin-top: 4px;
}
.folder-item {
padding: 8px;
cursor: pointer;
border-radius: var(--border-radius-xs);
transition: background-color 0.2s;
}
.folder-item:hover {
background: var(--lora-surface);
}
.folder-item.selected {
background: oklch(var(--lora-accent) / 0.1);
border: 1px solid var(--lora-accent);
}

View File

@@ -10,6 +10,7 @@ export class DownloadManager {
// Add initialization check
this.initialized = false;
this.selectedFolder = '';
}
showDownloadModal() {
@@ -127,6 +128,9 @@ export class DownloadManager {
loraRoot.innerHTML = data.roots.map(root =>
`<option value="${root}">${root}</option>`
).join('');
// Initialize folder browser after loading roots
this.initializeFolderBrowser();
} catch (error) {
showToast(error.message, 'error');
}
@@ -151,20 +155,33 @@ export class DownloadManager {
return;
}
console.log('Selected folder:', this.selectedFolder); // Log selected folder
console.log('New folder:', newFolder); // Log new folder
// Construct relative path
let relativePath = '';
if (this.selectedFolder) {
relativePath = this.selectedFolder;
}
if (newFolder) {
relativePath = relativePath ?
`${relativePath}/${newFolder}` : newFolder;
}
try {
const downloadUrl = this.currentVersion.downloadUrl;
if (!downloadUrl) {
throw new Error('No download URL available');
}
// 只传递必要参数
const response = await fetch('/api/download-lora', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
download_url: downloadUrl,
version_info: this.currentVersion,
lora_root: loraRoot,
new_folder: newFolder
relative_path: relativePath
})
});
@@ -182,4 +199,25 @@ export class DownloadManager {
showToast(error.message, 'error');
}
}
// Add new method to handle folder selection
initializeFolderBrowser() {
// Update folder selection handling
const folderBrowser = document.getElementById('folderBrowser');
if (!folderBrowser) return;
// Update folder selection event handling
folderBrowser.addEventListener('click', (event) => {
const folderItem = event.target.closest('.folder-item');
if (!folderItem) return;
// Remove previous selection
folderBrowser.querySelectorAll('.folder-item').forEach(f =>
f.classList.remove('selected'));
// Add selection to clicked folder
folderItem.classList.add('selected');
this.selectedFolder = folderItem.dataset.folder;
});
}
}