inksiyu's picture
Upload 5 files
0756e48 verified
document.addEventListener('DOMContentLoaded', function() {
const form = document.getElementById('article-form');
const outlineContainer = document.getElementById('outline-container');
const outlineElement = document.getElementById('outline');
const expandOutlineElement = document.getElementById('expand-outline');
const generateContentButton = document.getElementById('generate-content');
const contentContainer = document.getElementById('content-container');
const contentElement = document.getElementById('content');
const docType = document.getElementById('doc-type').value; // 获取文档类型
form.addEventListener('submit', function(event) {
event.preventDefault();
const formData = new FormData(form);
const requestData = {
outline_model: formData.get('outline_model'),
content_model: formData.get('content_model'),
proxy_url: formData.get('proxy_url'),
api_key: formData.get('api_key'),
title: formData.get('title'),
doc_type: formData.get('doc_type'),
notice: formData.get('notice'),
//doc_type: formData.get('doc_type') || docType
};
outlineElement.value = 'Generating outline...';
outlineContainer.style.display = 'block';
fetch('/generate_outline', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(requestData)
})
.then(response => response.json())
.then(data => {
outlineElement.value = data.outline;
})
.catch(error => {
console.error('Error:', error);
outlineElement.value = 'Failed to generate outline. Please check the console for more details.';
});
});
generateContentButton.addEventListener('click', function() {
const expandOutline = expandOutlineElement.value;
const outline = outlineElement.value;
const title = document.getElementById('title').value;
const contentModel = document.getElementById('content-model').value;
const apiKey = document.getElementById('api-key').value;
const proxyUrl = document.getElementById('proxy-url').value;
const requestData = {
expand_outline: expandOutline,
outline: outline,
title: title,
content_model: contentModel,
api_key: apiKey,
proxy_url: proxyUrl,
doc_type: docType
};
contentElement.innerText = 'Generating content...';
contentContainer.style.display = 'block';
fetch('/generate_content', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(requestData)
})
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.body;
})
.then(body => {
const reader = body.getReader();
const decoder = new TextDecoder('utf-8');
return new ReadableStream({
start(controller) {
function push() {
reader.read().then(({ done, value }) => {
if (done) {
controller.close();
return;
}
controller.enqueue(decoder.decode(value));
push();
});
}
push();
}
});
})
.then(stream => {
const reader = stream.getReader();
let fullContent = '';
function read() {
reader.read().then(({ done, value }) => {
if (done) {
// 内容生成完成后,将其发送到后端进行文件写入
const title = document.getElementById('title').value;
fetch('/write_to_file', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ title: title, content: fullContent })
})
.then(response => response.json())
.then(data => {
console.log(data.message);
})
.catch(error => {
console.error('Error:', error);
});
return;
}
fullContent += value;
contentElement.innerText += value;
read();
});
}
read();
})
.catch(error => {
console.error('Error:', error);
contentElement.innerText = 'Failed to generate content. Please check the console for more details.';
});
});
});