private void AddMissingTranslationToStatistics(List <LanguageStatistics> statistics, string language, string modName) { if (statistics.Any(ls => ls.LanguageName == language)) { var languageStatistics = statistics.First(ls => ls.LanguageName == language); if (languageStatistics.MissingModStrings.ContainsKey(modName)) { // increment languageStatistics.MissingModStrings[modName] = languageStatistics.MissingModStrings[modName] + 1; } else { languageStatistics.MissingModStrings.Add(modName, 1); } } else { var languageStatistics = new LanguageStatistics(); languageStatistics.LanguageName = language; languageStatistics.MissingModStrings = new Dictionary <string, int>(); languageStatistics.MissingModStrings.Add(modName, 1); statistics.Add(languageStatistics); } }
private static string AggregateMods(LanguageStatistics modInfoStatistics, string seperator) { return(modInfoStatistics.MissingModStrings.Select(ms => ms.Key).ToList().Aggregate((cur, next) => cur + seperator + next)); }
private static int GetMissingTranslationCount(LanguageStatistics modInfoStatistics) { return(modInfoStatistics.MissingModStrings.Sum(ms => ms.Value)); }
private void PopulateChart() { int inc = 0; var series = new Series("Missing Translations") { IsVisibleInLegend = false, XValueType = ChartValueType.String }; int highestCount = 0; foreach (var header in _myParent.TranslationManager.TranslationComponents.Headers) { if (header == "ID") { continue; } DataPoint dataPoint; LanguageStatistics modInfoStat = _myParent.TranslationManager.TranslationComponents.Statistics.FirstOrDefault(s => s.LanguageName.ToLower().Equals(header.ToLower())); if (modInfoStat == null) { dataPoint = new DataPoint(inc, 0) { AxisLabel = header, Label = "0" }; } else { int missingTranslationCount = GetMissingTranslationCount(modInfoStat); if (missingTranslationCount > highestCount) { highestCount = missingTranslationCount; } dataPoint = new DataPoint(inc, missingTranslationCount) { AxisLabel = modInfoStat.LanguageName, Label = missingTranslationCount.ToString(CultureInfo.CurrentCulture), ToolTip = AggregateMods(modInfoStat, "\n") }; } series.Points.Add(dataPoint); inc += 1; } //foreach (LanguageStatistics modInfoStatistics in _myParent.TranslationManager.TranslationComponents.Statistics) { // int missingTranslationCount = GetMissingTranslationCount(modInfoStatistics); // if (missingTranslationCount > highestCount) { // highestCount = missingTranslationCount; // } // var dataPoint = new DataPoint(inc, missingTranslationCount); // dataPoint.AxisLabel = modInfoStatistics.LanguageName; // dataPoint.Label = missingTranslationCount.ToString(); // dataPoint.ToolTip = AggregateMods(modInfoStatistics, "\n"); // series.Points.Add(dataPoint); // inc += 1; //} chart.Series.Add(series); ChartArea chartArea = chart.ChartAreas.FirstOrDefault(); if (chartArea != null) { chartArea.AxisX.MajorGrid.Enabled = false; chartArea.AxisY.Interval = 10.0; if (highestCount > 100) { chartArea.AxisY.Interval = 25.0; } } }