update article.ts

This commit is contained in:
zyronon
2023-09-27 23:18:46 +08:00
parent 5bbc068a1f
commit e500b64c2d
9 changed files with 860 additions and 850 deletions

View File

@@ -7,8 +7,8 @@ import {
getNetworkTranslate,
getSentenceAllText,
getSentenceAllTranslateText,
updateLocalSentenceTranslate,
updateSections
renewSectionTranslates,
renewSectionTexts
} from "@/hooks/translate.ts";
import * as copy from "copy-to-clipboard";
import {getSplitTranslateText} from "@/hooks/article.ts";
@@ -26,17 +26,18 @@ interface IProps {
}
const props = withDefaults(defineProps<IProps>(), {
article: () => cloneDeep(DefaultArticle)
article: () => DefaultArticle
})
const base = useBaseStore()
let article = $ref<Article>(props.article)
let article = $ref<Article>(cloneDeep(props.article))
let networkTranslateEngine = $ref('baidu')
let progress = $ref(0)
const TranslateEngineOptions = [
{value: 'baidu', label: '百度'},
{value: 'youdao', label: '有道'},
]
const emit = defineEmits([
'update:modelValue',
'close',
@@ -63,7 +64,7 @@ watch(() => props.article, n => {
}
}
}
updateSentenceTranslate()
renewSections()
}
})
@@ -74,7 +75,7 @@ async function startNetworkTranslate() {
if (!article.text.trim()) {
return ElMessage.error('请填写正文!')
}
updateSections(article)
renewSectionTexts(article)
article.textNetworkTranslate = ''
//注意!!!
//这里需要用异步因为watch了article.networkTranslate改变networkTranslate了之后会重新设置article.sections
@@ -96,22 +97,23 @@ function saveSentenceTranslate(sentence: Sentence, val: string) {
if (article.useTranslateType === TranslateType.network) {
article.textNetworkTranslate = getSentenceAllTranslateText(article)
}
renewSections()
}
function saveSentenceText(sentence: Sentence, val: string) {
sentence.text = val
article.text = getSentenceAllText(article)
updateSentenceTranslate()
renewSections()
}
function updateSentenceTranslate() {
function renewSections() {
if (article.text.trim()) {
updateSections(article)
renewSectionTexts(article)
if (article.useTranslateType === TranslateType.custom) {
updateLocalSentenceTranslate(article, article.textCustomTranslate)
renewSectionTranslates(article, article.textCustomTranslate)
}
if (article.useTranslateType === TranslateType.network) {
updateLocalSentenceTranslate(article, article.textNetworkTranslate)
renewSectionTranslates(article, article.textNetworkTranslate)
}
} else {
article.sections = []
@@ -132,14 +134,18 @@ function onPaste(event: ClipboardEvent) {
// @ts-ignore
let paste = (event.clipboardData || window.clipboardData).getData("text");
return MessageBox.confirm(
'是否需要进行自动分句',
'是否需要自动分句',
'提示',
() => {
let r = getSplitTranslateText(paste)
if (r) appendTranslate(r)
if (r) {
appendTranslate(r)
renewSections()
}
},
() => {
appendTranslate(paste)
renewSections()
},
{
confirmButtonText: '需要',
@@ -234,38 +240,34 @@ function save(option: 'save' | 'next', mute: boolean = false) {
saveTemp()
}
watch(() => article.textCustomTranslate, (str: string) => {
updateSentenceTranslate()
})
watch(() => article.textNetworkTranslate, (str: string) => {
updateSentenceTranslate()
})
watch(() => article.useTranslateType, () => {
function changeTranslateType() {
if (article.text.trim()) {
if (article.useTranslateType === TranslateType.custom) {
if (article.textCustomTranslate.trim()) {
updateLocalSentenceTranslate(article, article.textCustomTranslate)
renewSectionTranslates(article, article.textCustomTranslate)
} else {
updateSections(article)
renewSectionTexts(article)
}
}
if (article.useTranslateType === TranslateType.network) {
if (article.textNetworkTranslate.trim()) {
updateLocalSentenceTranslate(article, article.textNetworkTranslate)
renewSectionTranslates(article, article.textNetworkTranslate)
} else {
updateSections(article)
renewSectionTexts(article)
}
}
if (article.useTranslateType === TranslateType.none) {
updateSections(article)
renewSectionTexts(article)
}
}
})
}
function selectArticle(item: Article) {
article = cloneDeep(item)
if (!article?.sections?.length){
renewSections()
}
console.log('article', article)
}
function add() {
@@ -319,7 +321,7 @@ function add() {
<div class="label">正文</div>
<textarea
v-model="article.text"
@input="updateSentenceTranslate"
@input="renewSections"
:readonly="![100,0].includes(progress)"
type="textarea"
class="base-textarea"
@@ -333,7 +335,10 @@ function add() {
<div class="item">
<div class="label">
<span>标题</span>
<el-radio-group v-model="article.useTranslateType">
<el-radio-group
v-model="article.useTranslateType"
@change="changeTranslateType"
>
<el-radio-button :label="TranslateType.custom">本地翻译</el-radio-button>
<el-radio-button :label="TranslateType.network">网络翻译</el-radio-button>
<el-radio-button :label="TranslateType.none">不需要翻译</el-radio-button>
@@ -379,6 +384,7 @@ function add() {
<textarea
v-if="article.useTranslateType === TranslateType.custom"
v-model="article.textCustomTranslate"
@input="renewSections"
:readonly="![100,0].includes(progress)"
@blur="onBlur"
@focus="onFocus"
@@ -390,6 +396,7 @@ function add() {
<textarea
v-if="article.useTranslateType === TranslateType.network"
v-model="article.textNetworkTranslate"
@input="renewSections"
@blur="onBlur"
@focus="onFocus"
type="textarea"
@@ -554,6 +561,10 @@ function add() {
.sentence {
margin-bottom: 20rem;
&:last-child{
margin-bottom: 0;
}
.text {
font-size: 18rem;
}

View File

@@ -25,7 +25,7 @@ onMounted(() => {
<template>
<div id="BatchAddArticle">
<AddArticle2/>
<AddArticle2/>
</div>
</template>
@@ -37,6 +37,5 @@ onMounted(() => {
height: 100vh;
display: flex;
color: black;
}
</style>

View File

@@ -7,7 +7,7 @@ import {
getNetworkTranslate,
getSentenceAllText,
getSentenceAllTranslateText,
updateLocalSentenceTranslate, updateSections
renewSectionTranslates, renewSectionTexts
} from "@/hooks/translate.ts";
import * as copy from "copy-to-clipboard";
import {getSplitTranslateText, splitEnArticle} from "@/hooks/article.ts";
@@ -78,7 +78,7 @@ async function startNetworkTranslate() {
if (!article.text.trim()) {
return ElMessage.error('请填写正文!')
}
updateSections(article)
renewSectionTexts(article)
article.textNetworkTranslate = ''
//注意!!!
//这里需要用异步因为watch了article.networkTranslate改变networkTranslate了之后会重新设置article.sections
@@ -110,12 +110,12 @@ function saveSentenceText(sentence: Sentence, val: string) {
function updateSentenceTranslate() {
if (article.text.trim()) {
updateSections(article)
renewSectionTexts(article)
if (article.useTranslateType === TranslateType.custom) {
updateLocalSentenceTranslate(article, article.textCustomTranslate)
renewSectionTranslates(article, article.textCustomTranslate)
}
if (article.useTranslateType === TranslateType.network) {
updateLocalSentenceTranslate(article, article.textNetworkTranslate)
renewSectionTranslates(article, article.textNetworkTranslate)
}
} else {
article.sections = []
@@ -220,20 +220,20 @@ watch(() => article.useTranslateType, () => {
if (article.text.trim()) {
if (article.useTranslateType === TranslateType.custom) {
if (article.textCustomTranslate.trim()) {
updateLocalSentenceTranslate(article, article.textCustomTranslate)
renewSectionTranslates(article, article.textCustomTranslate)
} else {
updateSections(article)
renewSectionTexts(article)
}
}
if (article.useTranslateType === TranslateType.network) {
if (article.textNetworkTranslate.trim()) {
updateLocalSentenceTranslate(article, article.textNetworkTranslate)
renewSectionTranslates(article, article.textNetworkTranslate)
} else {
updateSections(article)
renewSectionTexts(article)
}
}
if (article.useTranslateType === TranslateType.none) {
updateSections(article)
renewSectionTexts(article)
}
}
})

View File

@@ -16,7 +16,7 @@ import {Article, DefaultArticle, TranslateType} from "@/types.ts";
import AddArticle from "@/components/Practice/AddArticle.vue";
import {useStartKeyboardEventListener} from "@/hooks/event.ts";
import {useRuntimeStore} from "@/stores/runtime.ts";
import {updateLocalSentenceTranslate, updateSections} from "@/hooks/translate.ts";
import {renewSectionTranslates, renewSectionTexts} from "@/hooks/translate.ts";
import BaseButton from "@/components/BaseButton.vue";
import {MessageBox} from "@/utils/MessageBox.tsx";
@@ -68,14 +68,14 @@ function getCurrentPractice() {
articleData.article = tempArticle
} else {
if (tempArticle.useTranslateType === TranslateType.none) {
updateSections(tempArticle)
renewSectionTexts(tempArticle)
articleData.article = tempArticle
} else {
if (tempArticle.useTranslateType === TranslateType.custom) {
if (tempArticle.textCustomTranslate.trim()) {
if (tempArticle.textCustomTranslateIsFormat) {
updateSections(tempArticle)
updateLocalSentenceTranslate(tempArticle, tempArticle.textCustomTranslate)
renewSectionTexts(tempArticle)
renewSectionTranslates(tempArticle, tempArticle.textCustomTranslate)
articleData.article = tempArticle
} else {
//说明有本地翻译,但是没格式化成一行一行的
@@ -86,7 +86,7 @@ function getCurrentPractice() {
showEditArticle = true
},
() => {
updateSections(tempArticle)
renewSectionTexts(tempArticle)
tempArticle.useTranslateType = TranslateType.none
store.currentDict.articles[store.currentDict.chapterIndex] = articleData.article = tempArticle
},
@@ -105,7 +105,7 @@ function getCurrentPractice() {
showEditArticle = true
},
() => {
updateSections(tempArticle)
renewSectionTexts(tempArticle)
tempArticle.useTranslateType = TranslateType.none
store.currentDict.articles[store.currentDict.chapterIndex] = articleData.article = tempArticle
},
@@ -117,8 +117,8 @@ function getCurrentPractice() {
}
if (tempArticle.useTranslateType === TranslateType.network) {
updateSections(tempArticle)
updateLocalSentenceTranslate(tempArticle, tempArticle.textNetworkTranslate)
renewSectionTexts(tempArticle)
renewSectionTranslates(tempArticle, tempArticle.textNetworkTranslate)
store.currentDict.articles[store.currentDict.chapterIndex] = articleData.article = tempArticle
}
}