From 6f16a834c8ca2a44735416b99baac805ce7ee5b8 Mon Sep 17 00:00:00 2001 From: Brandon Martinez Date: Sun, 14 Sep 2014 15:58:31 -0400 Subject: [PATCH] Wired up delegate to handle incoming data records --- ViewModels/SupervisorViewModel.cs | 97 +++++++++++++++---------------- 1 file changed, 48 insertions(+), 49 deletions(-) diff --git a/ViewModels/SupervisorViewModel.cs b/ViewModels/SupervisorViewModel.cs index ae23513..660e50a 100644 --- a/ViewModels/SupervisorViewModel.cs +++ b/ViewModels/SupervisorViewModel.cs @@ -1,51 +1,51 @@ -using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; using Windows.UI.Core; using AutoMapper; using Manufacturing.Framework.Dto; using Manufacturing.WinApp.Common; using Manufacturing.WinApp.Common.Clients; using Manufacturing.WinApp.Views.Supervisor; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; namespace Manufacturing.WinApp.ViewModels { public class DataRecord : DatasourceRecord { - public string Id { get; set; } - public bool IsSelected { get; set; } - public DataRecord(DatasourceRecord datasourceRecord) { Mapper.CreateMap(); Mapper.Map(datasourceRecord, this); } + + public string Id { get; set; } + + public bool IsSelected { get; set; } } public class Datasource : DatasourceConfiguration { - public bool IsSelected { get; set; } - public Datasource(DatasourceConfiguration datasourceConfiguration) { Mapper.CreateMap(); Mapper.Map(datasourceConfiguration, this); } + + public bool IsSelected { get; set; } } - [MenuScreen(typeof(SupervisorPage), "Supervisor Demo")] - [RequiredRole("Supervisor")] + [MenuScreen(typeof(SupervisorPage), "Supervisor Demo"), RequiredRole("Supervisor")] public class SupervisorViewModel : BaseViewModel { private readonly ApiClient _apiClient; + private readonly DatasourceRecordReceiver _subscriptionClient; + private RelayCommand _dataRecordSelectedCommand; + private CoreDispatcher _dispatcher; - public ObservableCollection Datasources { get; set; } - public ObservableCollection DataRecords { get; set; } - public ObservableCollection SelectedDataRecords { get; set; } + private string _errorMessage; public SupervisorViewModel() { @@ -53,57 +53,39 @@ public SupervisorViewModel() var apiUrl = string.Format("{0}/api/", ConfigSettings.ApiServiceUrl); _apiClient = new ApiClient(apiUrl, App.BearerToken); - try - { - // _subscriptionClient = new DatasourceRecordReceiver(App.BearerToken, "http://localhost:3184/signalr", "DatasourceRecord", "notify", "1"); - } - catch (Exception ex) - { - - throw; - } - - Datasources = new ObservableCollection(); DataRecords = new ObservableCollection(); - } - - public void Load() - { - //Subscriptions = new ObservableCollection(); - //Subscriptions.Add("Item1"); - //Subscriptions.Add("Item2"); - //Subscriptions.Add("Item3"); - _dispatcher = CoreWindow.GetForCurrentThread().Dispatcher; + _subscriptionClient = new DatasourceRecordReceiver(App.BearerToken, "http://localhost:3184/signalr", + "DatasourceRecordHub", "notify", "1"); + _subscriptionClient.DataReceived += (sender, args) => DataRecords.Add(new DataRecord(args.Message)); + } - SelectedDataRecords = new ObservableCollection(); - LoadDataRecords(); + public ObservableCollection Datasources { get; set; } - // Move this into subscription code, you'll need to track these manually for now - //var subscriber = new DatasourceRecordReceiver("GIVE ME AUTH TOKEN!", "ENDPOINT URL; these come from Cloud.json, not sure how that's being injected", "HUB ID", "notify", - // "id you want to look for; still need to set up filtering"); - // subscribe to event and have it push into data records - //subscriber.DataReceived += (sender, args) => DataRecords.Add(args.Message); - } + public ObservableCollection DataRecords { get; set; } + public ObservableCollection SelectedDataRecords { get; set; } - private string _errorMessage; public string ErrorMessage { - get { return _errorMessage; } - set { this.SetProperty(ref _errorMessage, value); } + get + { + return _errorMessage; + } + set + { + SetProperty(ref _errorMessage, value); + } } - RelayCommand _dataRecordSelectedCommand; public RelayCommand DataRecordSelectedCommand { get { if (_dataRecordSelectedCommand == null) { - _dataRecordSelectedCommand = new RelayCommand( - x => this.PerformDataRecordSelectedCommand(x)); + _dataRecordSelectedCommand = new RelayCommand(x => PerformDataRecordSelectedCommand(x)); } return _dataRecordSelectedCommand; } @@ -113,15 +95,32 @@ public RelayCommand DataRecordSelectedCommand } } + public void Load() + { + //Subscriptions = new ObservableCollection(); + //Subscriptions.Add("Item1"); + //Subscriptions.Add("Item2"); + //Subscriptions.Add("Item3"); + + _dispatcher = CoreWindow.GetForCurrentThread().Dispatcher; + + SelectedDataRecords = new ObservableCollection(); + LoadDataRecords(); + } + public virtual void PerformDataRecordSelectedCommand(object state) { var dr = (DataRecord)state; if (dr != null) { if (dr.IsSelected) + { SelectedDataRecords.Add(dr); + } else if (SelectedDataRecords.Any(x => x.Id == dr.Id)) + { SelectedDataRecords.Remove(SelectedDataRecords.SingleOrDefault(x => x.Id == dr.Id)); + } } } @@ -138,7 +137,7 @@ private async void LoadDatasources() }); } - async void LoadDataRecords() + private async void LoadDataRecords() { var records = await _apiClient.GetData>("data?datasourceId=1");