add merging sentences action
This commit is contained in:
@@ -114,6 +114,6 @@
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
<script src="/static/admin.js?v=admin-title-autofill-v2" defer></script>
|
||||
<script src="/static/admin.js?v=admin-merge-sentence-v1" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -254,7 +254,7 @@ async function openSentences(video) {
|
||||
elements.sentenceMeta.textContent = `${sentences.length} 句 / ${detail.video.video_hash}`;
|
||||
elements.sentenceRows.replaceChildren();
|
||||
for (const sentence of sentences) {
|
||||
elements.sentenceRows.append(sentenceRow(video, sentence));
|
||||
elements.sentenceRows.append(sentenceRow(video, sentence, sentences.length));
|
||||
}
|
||||
if (!elements.dialog.open) elements.dialog.showModal();
|
||||
} catch (error) {
|
||||
@@ -262,7 +262,7 @@ async function openSentences(video) {
|
||||
}
|
||||
}
|
||||
|
||||
function sentenceRow(video, sentence) {
|
||||
function sentenceRow(video, sentence, totalCount) {
|
||||
const row = document.createElement("tr");
|
||||
const textArea = document.createElement("textarea");
|
||||
textArea.value = sentence.text || "";
|
||||
@@ -307,6 +307,26 @@ function sentenceRow(video, sentence) {
|
||||
}
|
||||
});
|
||||
saveContainer.append(save);
|
||||
if (sentence.index < totalCount - 1) {
|
||||
const merge = button("合并下句", async () => {
|
||||
const preview = `${(textArea.value || sentence.text || "").trim()} + 下一句`;
|
||||
const confirmed = window.confirm(`确定将第 ${sentence.index + 1} 句与下一句合并成一句吗?\n${preview}`);
|
||||
if (!confirmed) return;
|
||||
merge.disabled = true;
|
||||
try {
|
||||
await api(`/api/v1/admin/videos/${video.video_hash}/sentences/${sentence.index}/merge`, {
|
||||
method: "PUT",
|
||||
});
|
||||
merge.textContent = "已合并";
|
||||
await openSentences(video);
|
||||
} catch (error) {
|
||||
elements.serviceState.textContent = `句子合并失败: ${error.message}`;
|
||||
merge.textContent = error.message;
|
||||
window.setTimeout(() => { merge.disabled = false; merge.textContent = "合并下句"; }, 1600);
|
||||
}
|
||||
});
|
||||
saveContainer.append(merge);
|
||||
}
|
||||
const timeContainer = document.createElement("td");
|
||||
const startLabel = document.createElement("span");
|
||||
startLabel.textContent = formatDuration(sentence.start_ms);
|
||||
|
||||
Reference in New Issue
Block a user