Skip to content

Commit 15cfb0d

Browse files
committed
feat: enhance TranslationJobViewComponent layout and improve token display formatting
1 parent 8c1a52e commit 15cfb0d

2 files changed

Lines changed: 18 additions & 11 deletions

File tree

custom/TranslationJobViewComponent.vue

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
1+
12
<template>
2-
<div class="flex flex-col w-full min-w-96">
3-
<p>{{ t('Total tokens will be used for translation:') }} <span class="font-bold"> {{ props.job.state?.totalTranslationTokenCost || 0 }}</span></p>
4-
<p>{{ t('Total translation token used:') }} <span class="font-bold"> {{ props.job.state?.totalUsedTokens || 0 }}</span></p>
5-
</div>
3+
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4 mb-3">
4+
<div class="flex items-center space-x-1">
5+
<span class=" text-gray-500">{{ t('Total tokens will be used for translation:') }}</span>
6+
<span class="text-lg font-semibold text-gray-900 dark:text-gray-100">{{ new Number(props.job.state?.totalTranslationTokenCost).toLocaleString() || 0 }}</span>
7+
</div>
8+
<div class="flex items-center space-x-1">
9+
<span class=" text-gray-500">{{ t('Total translation token used:') }}</span>
10+
<span class="text-lg font-semibold text-gray-900 dark:text-gray-100">{{ new Number(props.job.state?.totalUsedTokens).toLocaleString() || 0 }}</span>
11+
</div>
12+
</div>
613
</template>
714

815

9-
1016
<script setup lang="ts">
1117
import { useI18n } from 'vue-i18n'
1218
const { t } = useI18n();

index.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -574,12 +574,13 @@ export default class I18nPlugin extends AdminForthPlugin {
574574

575575
const backgroundJobsPlugin = this.adminforth.getPluginByClassName<any>('BackgroundJobsPlugin');
576576

577-
let totalUsedTokens = await backgroundJobsPlugin.getJobField(jobId, 'totalUsedTokens');
578-
579-
totalUsedTokens += promptCost;
580-
581-
await backgroundJobsPlugin.setJobField(jobId, 'totalUsedTokens', totalUsedTokens);
582-
577+
backgroundJobsPlugin.updateJobFieldsAtomicly(jobId, async () => {
578+
// do all set / get fields in this function to make state update atomic and there is no conflicts when 2 tasks in parallel do get before set.
579+
// don't do long awaits in this callback, since it has exclusive lock.
580+
let totalUsedTokens = await backgroundJobsPlugin.getJobField(jobId, 'totalUsedTokens');
581+
totalUsedTokens += promptCost;
582+
await backgroundJobsPlugin.setJobField(jobId, 'totalUsedTokens', totalUsedTokens);
583+
})
583584

584585

585586
try {

0 commit comments

Comments
 (0)