Exemple #1
0
        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;
                }
            }
        }