Added progress calculation for sections & texts; covered corner cases

This commit is contained in:
Thorsten Sommer 2022-09-26 22:05:10 +02:00
parent 8534163e55
commit ebc7a5708b
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108

View File

@ -60,6 +60,54 @@ public static class TranslationProcessor
var numTotalTranslations = numCultures * numTextElements;
var numTextElementsTranslated = await db.Translations.CountAsync(n => !string.IsNullOrWhiteSpace(n.Text));
if(numTextElementsTranslated == 0 && numTotalTranslations == 0)
return new ProcessorResult<int>(100);
if (numTotalTranslations == 0)
return new ProcessorResult<int>(0);
if(numTextElementsTranslated > numTotalTranslations)
return new ProcessorResult<int>(100);
return new ProcessorResult<int>(numTextElementsTranslated * 100 / numTotalTranslations);
}
public static async Task<ProcessorResult<int>> CalculateTranslationProgress(Section section)
{
await using var db = ProcessorMeta.ServiceProvider.GetRequiredService<DataContext>();
var numCultures = (await AppSettings.GetCultureIndices()).Count;
var numTextElements = await db.TextElements.CountAsync(n => n.Section == section);
var numTotalTranslations = numCultures * numTextElements;
var numTextElementsTranslated = await db.Translations.CountAsync(n => !string.IsNullOrWhiteSpace(n.Text) && n.TextElement.Section == section);
if(numTextElementsTranslated == 0 && numTotalTranslations == 0)
return new ProcessorResult<int>(100);
if (numTotalTranslations == 0)
return new ProcessorResult<int>(0);
if(numTextElementsTranslated > numTotalTranslations)
return new ProcessorResult<int>(100);
return new ProcessorResult<int>(numTextElementsTranslated * 100 / numTotalTranslations);
}
public static async Task<ProcessorResult<int>> CalculateTranslationProgress(TextElement textElement)
{
await using var db = ProcessorMeta.ServiceProvider.GetRequiredService<DataContext>();
var numCultures = (await AppSettings.GetCultureIndices()).Count;
var numTotalTranslations = numCultures;
var numTextElementsTranslated = await db.Translations.CountAsync(n => !string.IsNullOrWhiteSpace(n.Text) && n.TextElement == textElement);
if(numTextElementsTranslated == 0 && numTotalTranslations == 0)
return new ProcessorResult<int>(100);
if (numTotalTranslations == 0)
return new ProcessorResult<int>(0);
if(numTextElementsTranslated > numTotalTranslations)
return new ProcessorResult<int>(100);
return new ProcessorResult<int>(numTextElementsTranslated * 100 / numTotalTranslations);
}
}