Example #1
0
        private static Dictionary <IAbstractDataSource, IEnumerable <ParameterTimeSeries> > GetSeriesBySourceDictionary(
            ForecastViewerRequest request, Dictionary <IAbstractDataSource, IEnumerable <Forecast> > loadedForecasts, string parameterType)
        {
            var result = new Dictionary <IAbstractDataSource, IEnumerable <ParameterTimeSeries> >();

            try
            {
                result =
                    (from source in request.Sources
                     where source.Parameters.Contains(parameterType)
                     let allSeries = from f in loadedForecasts[source]
                                     group f by GetForecastGroupingTime(f, request.GivenTime) into fByTime
                                     where IsSuitableDateTime(fByTime.Key, request.DateTime, request.TimeDeterminateness)
                                     select GetSeries(fByTime.ToList(), request.GivenTime, parameterType, fByTime.Key)
                                     select new
                {
                    Key = source,
                    Value = allSeries
                }).ToDictionary(item => item.Key, item => item.Value);
            }
            catch (Exception e)
            {
                OnSelectingFailed(e.Message);
            }

            return(result);
        }
Example #2
0
        public static Dictionary <string, PlotData> GetGroupedByParameterForecastPlots(ForecastViewerRequest request)
        {
            var result          = new Dictionary <string, PlotData>();
            var loadedForecasts = new Dictionary <IAbstractDataSource, IEnumerable <Forecast> >();

            foreach (var source in request.Sources)
            {
                loadedForecasts.Add(
                    source, ForecastsDatabase.Load(
                        request.Station,
                        source,
                        GetValidTimeDates(request.DateTime, request.GivenTime, source)));
            }

            int plotsKey = GeneratePlotGroupKey();

            foreach (var parameterType in request.ParameterTypes)
            {
                var sourceSeriesDict = GetSeriesBySourceDictionary(request, loadedForecasts, parameterType);
                result.Add(parameterType, new PlotData(plotsKey, parameterType, sourceSeriesDict));
            }

            return(result);
        }