129 lines
3.8 KiB
C#
129 lines
3.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.ComponentModel;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Input;
|
|
using MarketData.MarketDataModel;
|
|
using MarketData.Service;
|
|
using Navigator.Core;
|
|
using DataDisplay.Renderers;
|
|
using Navigator.MarketDataModel;
|
|
using Navigator.Renderers;
|
|
|
|
namespace Navigator.ViewModels
|
|
{
|
|
public class EconomicIndicatorsViewModel : WorkspaceViewModel
|
|
{
|
|
private RelayCommand refreshCommand;
|
|
private bool isRefreshing = false;
|
|
private EconomicIndicatorsRenderer economicIndicatorsRenderer=new EconomicIndicatorsRenderer();
|
|
private String selectedCode;
|
|
private EconomicIndicators economicIndicators = default;
|
|
private String chartTitle;
|
|
private ObservableCollection<String> codeCollection;
|
|
private bool showActivity = true;
|
|
|
|
public EconomicIndicatorsViewModel()
|
|
{
|
|
Title = "Consumer Price Index";
|
|
Initialize();
|
|
PropertyChanged += OnViewModelPropertyChanged;
|
|
}
|
|
private void OnViewModelPropertyChanged(object sender,PropertyChangedEventArgs eventArgs)
|
|
{
|
|
if (eventArgs.PropertyName.Equals("SelectedCode"))
|
|
{
|
|
if (null == selectedCode) return;
|
|
HandleSelectedCodeRequest();
|
|
}
|
|
}
|
|
private void Initialize()
|
|
{
|
|
Task workerTask=Task.Factory.StartNew(()=>
|
|
{
|
|
IEnumerable<String> codes=null;
|
|
ServiceResult serviceResult=MarketDataServiceClient.GetInstance().GetDistinctEconomicIndicatorCodes();
|
|
if(serviceResult.Success)codes=(List<String>)serviceResult.ContextSpecificResult;
|
|
CodeCollection=new ObservableCollection<string>(codes);
|
|
});
|
|
workerTask.ContinueWith((continuation)=>
|
|
{
|
|
});
|
|
}
|
|
|
|
public void HandleSelectedCodeRequest()
|
|
{
|
|
ServiceResult serviceResult = null;
|
|
IsBusy=true;
|
|
ShowActivity=!IsRefreshing;
|
|
Task workerTask = Task.Factory.StartNew(() =>
|
|
{
|
|
serviceResult = MarketDataServiceClient.GetInstance().GetGetEconomicIndicators(selectedCode);
|
|
if (serviceResult.Success)
|
|
{
|
|
ChartTitle = selectedCode;
|
|
economicIndicators = new EconomicIndicators((List<EconomicIndicator>)serviceResult.ContextSpecificResult);
|
|
if(null!=economicIndicators && economicIndicators.Count>0)
|
|
{
|
|
economicIndicatorsRenderer.EconomicIndicatorElements=EconomicIndicatorsModel.Elements(economicIndicators);
|
|
economicIndicatorsRenderer.SetColorBlack();
|
|
economicIndicatorsRenderer.Refresh();
|
|
}
|
|
}
|
|
});
|
|
workerTask.ContinueWith((TaskContinuationOptions) =>
|
|
{
|
|
IsBusy=false;
|
|
IsRefreshing=false;
|
|
ShowActivity=!IsRefreshing;
|
|
});
|
|
}
|
|
public ObservableCollection<String> CodeCollection
|
|
{
|
|
get { return codeCollection; }
|
|
set { SetProperty(ref codeCollection, value); }
|
|
}
|
|
public IRenderer Renderer
|
|
{
|
|
get{return economicIndicatorsRenderer;}
|
|
}
|
|
|
|
public String SelectedCode
|
|
{
|
|
get { return selectedCode; }
|
|
set { SetProperty(ref selectedCode, value); }
|
|
}
|
|
public String ChartTitle
|
|
{
|
|
get { return chartTitle; }
|
|
set { SetProperty(ref chartTitle, value); }
|
|
}
|
|
public bool IsRefreshing
|
|
{
|
|
get{return isRefreshing;}
|
|
set{SetProperty(ref isRefreshing,value);}
|
|
}
|
|
public bool ShowActivity
|
|
{
|
|
get {return showActivity;}
|
|
set {SetProperty(ref showActivity,value);}
|
|
}
|
|
public ICommand RefreshCommand
|
|
{
|
|
get
|
|
{
|
|
if(null==refreshCommand)
|
|
{
|
|
refreshCommand=new RelayCommand(param=>
|
|
{
|
|
HandleSelectedCodeRequest();
|
|
},param=>{return !IsRefreshing;});
|
|
}
|
|
return refreshCommand;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|