//public static IObservable<StaticViewModel> BuildStaticService(IObservable<IEnumerable<KeyValuePair<DateTime, double>>> observable,IScheduler uischeduler)
        //{
        //    return observable.Select(s =>
        //    {
        //       return BuildStatic(s, uischeduler);

        //    });
        //}



        public static StaticViewModel BuildStatic(/*IObservable<IEnumerable<KeyValuePair<DateTime, double>>> s,*/ IScheduler uischeduler)
        {
            var s = new Filter.Model.Observable <IEnumerable <KeyValuePair <DateTime, double> > >();

            var ts = s.Select(_ => new TimeValueSeriesViewModel(_));


            Action <IEnumerable <KeyValuePair <DateTime, double> > > avi = (a) => s.Publish(a);

            var bds = ButtonDefinitionFactory.Build(avi, typeof(Filter.Service.SignalGenerator));



            var types = Helper.GetInheritingTypes(typeof(Filter.Model.IFilterWrapper));

            var vm = new GenericViewModel <Type>(types.ToObservable(), null, uischeduler);

            var bdds = vm.GetSelectedObjectSteam().Where(a => a != null).Select(_ =>
                                                                                ViewModelSelector(_));

            var dfs = bdds.Select(_ => _.Output).Select(v => v.WithLatestFrom(s, (a, b) => new { a, b }).Select(l => new PredictionsViewModel(l.a.BatchRun(l.b)))).SelectMany(l => l);


            //var xs = new Filter.Model.Observable<Type>();

            //Action<Type> at = (a) => xs.Publish(a);

            //var bds = ButtonDefinitionFactory.Build(avi, typeof(Filter.Service.SignalGenerator));


            //var x = new Filter.Model.Observable<PredictionsViewModel>();

            //Action<IEnumerable<KeyValuePair<DateTime, Tuple<double, double>[]>>> av = (a) => x.Publish(new PredictionsViewModel(a));

            //var defs = s.Select(_ => ButtonDefinitionFactory.Build(av, typeof(Filter.Service.StaticPredictionService), _));

            return(new StaticViewModel(bds, vm, ts, dfs, bdds));
        }
        public static IEnumerable <ButtonDefinition> BuildMeasurements(Filter.Model.Observable <IEnumerable <KeyValuePair <DateTime, double> > > x)
        {
            Action <IEnumerable <KeyValuePair <DateTime, double> > > av = (a) => x.Publish(a);

            return(ButtonDefinitionFactory.Build(av, typeof(Filter.Service.SignalGenerator)));
        }
        public static Filter.Model.Observable <IEnumerable <KeyValuePair <DateTime, double> > > BuildMeasurements()
        {
            var x = new Filter.Model.Observable <IEnumerable <KeyValuePair <DateTime, double> > >();

            return(x);
        }