void InitEngineControl(DeviceEngineControl engineControl, AnalyticsEngine engine, AnalyticsArgs args, string ctrltoken = null) { //try to remove and clear all needed data if (engineControl.Content is IDisposable) { var disp = engineControl.Content as IDisposable; //try to remove content from disposables collection if (disposables.Contains(disp)) disposables.Remove(disp); //dispose existing control disp.Dispose(); } //Begin load channels section disposables.Add(EnginesView.Load(engine, args.capabilities, args.nvtSession, args.odmSession, ctrltoken) .ObserveOnCurrentDispatcher() .Subscribe(ctrlArgs => { if (ctrlArgs.selectedEngineControl != null) engineControl.Title = ctrlArgs.engine.name + ": " + ctrlArgs.selectedEngineControl.name; else engineControl.Title = ctrlArgs.engine.name; EnginesView enginesView = new EnginesView(container); disposables.Add(enginesView); enginesView.Init(ctrlArgs); engineControl.Content = enginesView; }, err => { ErrorView errorView = new ErrorView(err); disposables.Add(errorView); engineControl.Content = errorView; } )); }
void LoadEngine(AnalyticsEngine engine, AnalyticsArgs args) { try { //Create engine control DeviceEngineControl engineControl = new DeviceEngineControl(); //add control to controls dictionary //if (engine.token == null) { // throw new ArgumentNullException("Analytics engine token can not be null"); //} engineControls.Add(new KeyValuePair <string, DeviceEngineControl>(engine.token, engineControl)); //Display progress bar ShowLoadingProgress(engineControl, engine.token); //add control to parent UI panel parent.Children.Add(engineControl); InitEngineControl(engineControl, engine, args); //subscribe to control changed event var subsToken = eventAggregator.GetEvent <ControlChangedEvent>().Subscribe(evargs => { if (evargs.engine.token == engine.token) { //reload channel with new profile InitEngineControl(engineControl, engine, args, evargs.controlToken); } }, false); disposables.Add(Disposable.Create(() => { eventAggregator.GetEvent <ControlChangedEvent>().Unsubscribe(subsToken); })); } catch (Exception err) { ErrorView errorView = new ErrorView(err); disposables.Add(errorView); parent.Children.Add(errorView); } }
void InitEngineControl(DeviceEngineControl engineControl, AnalyticsEngine engine, AnalyticsArgs args, string ctrltoken = null) { //try to remove and clear all needed data if (engineControl.Content is IDisposable) { var disp = engineControl.Content as IDisposable; //try to remove content from disposables collection if (disposables.Contains(disp)) { disposables.Remove(disp); } //dispose existing control disp.Dispose(); } //Begin load channels section disposables.Add(EnginesView.Load(engine, args.capabilities, args.nvtSession, args.odmSession, ctrltoken) .ObserveOnCurrentDispatcher() .Subscribe(ctrlArgs => { if (ctrlArgs.selectedEngineControl != null) { engineControl.Title = ctrlArgs.engine.name + ": " + ctrlArgs.selectedEngineControl.name; } else { engineControl.Title = ctrlArgs.engine.name; } EnginesView enginesView = new EnginesView(container); disposables.Add(enginesView); enginesView.Init(ctrlArgs); engineControl.Content = enginesView; }, err => { ErrorView errorView = new ErrorView(err); disposables.Add(errorView); engineControl.Content = errorView; } )); }
public void Init(AnalyticsArgs args) { args.Engines.ForEach(engine => { LoadEngine(engine, args); }); }
static IEnumerable<FSharpAsync<Unit>> LoadImpl(AnalyticsArgs args) { yield return args.nvtSession.GetAnalyticsEngines().Select(engines => { args.Engines = engines; return (Unit)null; }); }
public static FSharpAsync<AnalyticsArgs> Load(INvtSession nvtSession, OdmSession odmSession, Capabilities capabilities) { AnalyticsArgs args = new AnalyticsArgs(); args.odmSession = odmSession; args.capabilities = capabilities; args.nvtSession = nvtSession; return Apm.Iterate(LoadImpl(args)).Select(f => { return args; }); }
void LoadEngine(AnalyticsEngine engine, AnalyticsArgs args) { try { //Create engine control DeviceEngineControl engineControl = new DeviceEngineControl(); //add control to controls dictionary //if (engine.token == null) { // throw new ArgumentNullException("Analytics engine token can not be null"); //} engineControls.Add(new KeyValuePair<string, DeviceEngineControl>(engine.token, engineControl)); //Display progress bar ShowLoadingProgress(engineControl, engine.token); //add control to parent UI panel parent.Children.Add(engineControl); InitEngineControl(engineControl, engine, args); //subscribe to control changed event var subsToken = eventAggregator.GetEvent<ControlChangedEvent>().Subscribe(evargs => { if (evargs.engine.token == engine.token) { //reload channel with new profile InitEngineControl(engineControl, engine, args, evargs.controlToken); } }, false); disposables.Add(Disposable.Create(() => { eventAggregator.GetEvent<ControlChangedEvent>().Unsubscribe(subsToken); })); } catch (Exception err) { ErrorView errorView = new ErrorView(err); disposables.Add(errorView); parent.Children.Add(errorView); } }