Exemple #1
0
 public RemapTrendsResult[] RemapTrends(RemapTrendsParameter[] parameters)
 {
     if (NotValid())
         return null;
     var result = new RemapTrendsResult[parameters.Length];
     for (var i = 0; i < parameters.Length; i++)
     {
         var parameter = parameters[i];
         var trendsRunTarget = _project.TrendsRunTargets[parameter.CategoryId];
         var r = new RemapTrendsResult();
         ReadTrendsSamples(parameter, r, trendsRunTarget);
         ReadTrendsPages(parameter, r, trendsRunTarget);
         r.Notifications = GetNotifications(trendsRunTarget.Reporter.Notifications);
         result[i] = r;
     }
     return result;
 }
Exemple #2
0
 private static void ReadTrendsSamples(RemapTrendsParameter parameter, RemapTrendsResult result, ITrendsRunTarget runTarget)
 {
     var r = new Tuple<DateTime, double?[]>[parameter.SamplesParameters.Length][];
     for (var i = 0; i < parameter.SamplesParameters.Length; i++)
     {
         var samplesParameter = parameter.SamplesParameters[i];
         r[i] = runTarget.GetSamples(
             samplesParameter.Item1, samplesParameter.Item2, samplesParameter.Item3, samplesParameter.Item4);
     }
     result.Samples = r;
 }
Exemple #3
0
        internal override RemapTrendsParameter CreateRemapParameter()
        {
            Tuple<Tuple<DateTime, DateTime?, int>, Tuple<int, Action<Tuple<DateTime, double>[]>>[]>[] currentSamplesQueries;
            lock (_samplesQueries)
            {
                currentSamplesQueries = _samplesQueries
                    .GroupBy(s => s.Item2)
                    .Select(g => new Tuple<Tuple<DateTime, DateTime?, int>, Tuple<int, Action<Tuple<DateTime, double>[]>>[]>(
                            g.Key,
                            g.Select(s => new Tuple<int, Action<Tuple<DateTime, double>[]>>(s.Item1, s.Item3)).ToArray()))
                    .ToArray();
                _samplesQueries.Clear();
            }
            Tuple<Tuple<CriteriaType, DateTime, int>, Tuple<int, Action<Tuple<DateTime, double>[]>>[]>[] pageSamplesQueries;
            lock (_pageQueries)
            {
                pageSamplesQueries = _pageQueries
                    .GroupBy(p => p.Item2)
                    .Select(g => new Tuple<Tuple<CriteriaType, DateTime, int>, Tuple<int, Action<Tuple<DateTime, double>[]>>[]>(
                            g.Key,
                            g.Select(s => new Tuple<int, Action<Tuple<DateTime, double>[]>>(s.Item1, s.Item3)).ToArray()))
                    .ToArray();
                _pageQueries.Clear();
            }
            if (!currentSamplesQueries.Any() && !pageSamplesQueries.Any())
            {
                return null;
            }
            var samplesParameters = currentSamplesQueries
                .Select(s => new Tuple<int[], DateTime, DateTime?, int>(
                    s.Item2.Select(i => i.Item1).ToArray(), s.Item1.Item1, s.Item1.Item2, s.Item1.Item3)).ToArray();
            _currentSamplesCallabacks = currentSamplesQueries.Select(s => s.Item2.Select(t => t.Item2).ToArray()).ToArray();
            var pageParameters = pageSamplesQueries
                .Select(s => new Tuple<int[], CriteriaType, DateTime, int>(
                    s.Item2.Select(i => i.Item1).ToArray(), s.Item1.Item1, s.Item1.Item2, s.Item1.Item3)).ToArray();
            _pageSamplesCallbacks = pageSamplesQueries.Select(s => s.Item2.Select(t => t.Item2).ToArray()).ToArray();

            var parameter = new RemapTrendsParameter
                {
                    CategoryId = _id,
                    SamplesParameters = samplesParameters,
                    PageParameters = pageParameters
                };
            return parameter;
        }