Esempio n. 1
0
        public void CreateData()
        {
            StatisticData.Add(new Data("Aktywne zadania: ", repository.AmountOfActiveTasks()));
            StatisticData.Add(new Data("Skończone zadania: ", repository.AmountOfFinishedTasks()));
            StatisticData.Add(new Data("Ilość zadań znajdujących się w koszu: ", repository.AmountOfFDeletedTasks()));
            StatisticData.Add(new Data("Średnia ilość dni potrzebnych na wykonanie zadania: ", repository.AverageFinishTime()));
            StatisticData.Add(new Data("Ilość dni najdłuższej trwającego zakończonego zadania: ", repository.DaysOfLongestTask()));

            StatisticData.Add(new Data("Wykonanych zadań na poziomie trudne: ", repository.AmountOfFinishedHardTasks()));
            StatisticData.Add(new Data("Wykonanych zadań na poziomie średnie: ", repository.AmountOfFinishedMediumTasks()));
            StatisticData.Add(new Data("Wykonanych zadań na poziomie łatwe: ", repository.AmountOfFinishedEasyTasks()));
            StatisticData.Add(new Data("Wykonanych zadań bez określonego poziomu: ", repository.AmountOfFinishedUndefinedTasks()));

            StatisticData.Add(new Data("Wykonanych zadań o priorytecie normalnym: ", repository.AmountOfFinishedHardTasks()));
            StatisticData.Add(new Data("Wykonanych zadań o priorytecie ważnym: ", repository.AmountOfFinishedImportantTasks()));
            StatisticData.Add(new Data("Wykonanych zadań o priorytecie krytycznym: ", repository.AmountOfFinishedCriticalTasks()));
            StatisticData.Add(new Data("Wykonanych zadań bez określonego priorytetu: ", repository.AmountOfFinishedUndefinedPriorityTasks()));

            StatisticData.Add(new Data("Średnia ilość dni potrzebna na wykonanie zadania o priorytecie normlanym: ", repository.AmountOfDaysNeededForFinishingNormalTasks()));
            StatisticData.Add(new Data("Średnia ilość dni potrzebna na wykonanie zadania o priorytecie ważnym: ", repository.AmountOfDaysNeededForFinishingImportantTasks()));
            StatisticData.Add(new Data("Średnia ilość dni potrzebna na wykonanie zadania o priorytecie krytycznym: ", repository.AmountOfDaysNeededForFinishingCriticalTasks()));
            StatisticData.Add(new Data("Średnia ilość dni potrzebna na wykonanie zadania bez określonego priorytetu: ", repository.AmountOfDaysNeededForFinishingUndefinedTasks()));

            StatisticData.Add(new Data("Średnia ilość dni potrzebna na wykonanie trudnych zadań: ", repository.AmountOfDaysNeededForFinishingHardTasks()));
            StatisticData.Add(new Data("Średnia ilość dni potrzebna na wykonanie średnich zadań: ", repository.AmountOfDaysNeededForFinishingMediumTasks()));
            StatisticData.Add(new Data("Średnia ilość dni potrzebna na wykonanie łatwych zadań: ", repository.AmountOfDaysNeededForFinishingCriticalTasks()));
            StatisticData.Add(new Data("Średnia ilość dni potrzebna na wykonanie zadań bez okreśłonego poziomu: ", repository.AmountOfDaysNeededForFinishingEasyTasks()));
        }
Esempio n. 2
0
        public GlobalStatisticsPerYear(int[] calculatedYears, IEnumerable <StatisticsSubjectPerYear <T> > dataForAllIcos,
                                       Func <T, bool> allowedItems = null)
        {
            this.CalculatedYears = calculatedYears;
            allowedItems         = allowedItems ?? alwaysTrue;

            // kdyby nás někoho náhodou napadlo dát do statistik string, tak tohle by to mělo pohlídat
            var numericProperties = typeof(T).GetProperties().Where(p => IsNumericType(p.PropertyType));

            //todo: asi by se dalo zrychlit, kdyby se nejelo po jednotlivých property, ale všechny property najednou
            // dneska na to už ale mentálně nemam :)
            // případně by se dalo paralelizovat do threadů (udělat paralel foreach a jet každý rok v samostatném threadu)
            // musel by se jen zamykat zápis do statistic data (třeba v setteru)
            Util.Consts.Logger.Debug($"Starting calculation of all properties for {string.Join(",", this.CalculatedYears)}");

            foreach (var year in CalculatedYears)
            {
                Devmasters.Batch.Manager.DoActionForAll <PropertyInfo>(numericProperties,
                                                                       property => {
                    Util.Consts.Logger.Debug($"Starting property {property} for {year}");
                    IEnumerable <decimal> globalData = dataForAllIcos
                                                       .Select(d => d[year])
                                                       .Where(allowedItems)
                                                       .Select(d =>
                                                               GetDecimalValueOfNumericProperty(property, d))
                                                       .Where(d => d.HasValue)
                                                       .Select(d => d.Value);
                    Util.Consts.Logger.Debug($"calc percentiles for property {property} for {year}");
                    var val = new PropertyYearPercentiles(property.Name, year, globalData);
                    StatisticData.Add(val);
                    Util.Consts.Logger.Debug($"Done property {property} for {year}");

                    return(new Devmasters.Batch.ActionOutputData());
                }, true);
            }
            Util.Consts.Logger.Debug($"Done calculation of all properties for {string.Join(",", this.CalculatedYears)}");
        }