skills upload function app.js

This commit is contained in:
kuangji
2026-05-26 10:32:47 +08:00
parent 0f8917d874
commit 5cb7785a38

View File

@@ -1,4 +1,7 @@
const form = document.querySelector("#upload-form");
const skillUploadForm = document.querySelector("#skill-upload-form");
const skillCollectionSelect = document.querySelector("#skill-collection");
const skillUploadStatus = document.querySelector("#skill-upload-status");
const result = document.querySelector("#result");
const summary = document.querySelector("#summary");
const skills = document.querySelector("#skills");
@@ -27,6 +30,64 @@ async function pollTask(statusUrl) {
}
}
function renderSkillCollections(collections, selectedSlug) {
const currentValue = selectedSlug || skillCollectionSelect.value;
skillCollectionSelect.innerHTML = "";
collections.forEach((collection) => {
const option = document.createElement("option");
option.value = collection.slug;
option.textContent = `${collection.label}${collection.skill_count}`;
if (collection.slug === currentValue) {
option.selected = true;
}
skillCollectionSelect.appendChild(option);
});
}
async function refreshSkillCollections(selectedSlug) {
const response = await fetch("/skill-collections");
const payload = await response.json();
if (!response.ok) {
throw new Error(payload.detail || "技能合集刷新失败");
}
renderSkillCollections(payload.collections, selectedSlug);
}
skillUploadForm.addEventListener("submit", async (event) => {
event.preventDefault();
const uploadButton = skillUploadForm.querySelector("button");
uploadButton.disabled = true;
uploadButton.textContent = "上传中...";
skillUploadStatus.textContent = "正在上传并解压技能合集...";
try {
const data = new FormData(skillUploadForm);
const response = await fetch("/skill-collections/upload", {
method: "POST",
body: data,
});
const payload = await response.json();
if (!response.ok) {
throw new Error(payload.detail || "上传失败");
}
renderSkillCollections(payload.collections, payload.collection.slug);
skillUploadForm.reset();
skillUploadStatus.textContent = payload.message;
} catch (error) {
skillUploadStatus.textContent = error.message;
} finally {
uploadButton.disabled = false;
uploadButton.textContent = "上传合集";
}
});
refreshSkillCollections().catch((error) => {
skillUploadStatus.textContent = error.message;
});
form.addEventListener("submit", async (event) => {
event.preventDefault();
button.disabled = true;