private async Task <EvaluationResponse> GetEvaluationAsync(InterpretationResponse.Interpretation i) { return(JsonConvert.DeserializeObject <EvaluationResponse>(await _client.GetStringAsync("/evaluate?expr=" + Uri.EscapeDataString(i.GetFirstQuery()) + "&attributes=person.first_name,person.last_name,type,start,end&count=200"))); }
public MainPage() { this.InitializeComponent(); _client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); var focusStream = Observable.FromEventPattern <RoutedEventArgs>(input, "GotFocus"); var keyInputStream = Observable.FromEventPattern <TextChangedEventArgs>(input, "TextChanged"); var keyPressTream = Observable.FromEventPattern <KeyRoutedEventArgs>(input, "KeyDown"); var enterStream = keyPressTream.Where(e => e.EventArgs.Key == Windows.System.VirtualKey.Enter); keyPressTream .Where(e => e.EventArgs.Key == Windows.System.VirtualKey.Tab) .Subscribe(e => { e.EventArgs.Handled = true; SetCurrentInterpretationAsText(); }); keyInputStream.Throttle(TimeSpan.FromMilliseconds(200)) .Merge <object>(focusStream) .ObserveOnDispatcher() .Select(_ => input.Text) .DistinctUntilChanged() .Select(text => GetIntepretationsAsync(text).ToObservable()) .Switch() .ObserveOnDispatcher() .Subscribe( response => { suggestions.Children.Clear(); results.Text = ""; _currentInterpretation = response.interpretations.FirstOrDefault(); foreach (var i in response.interpretations) { StackPanel item = new StackPanel(); item.Orientation = Orientation.Horizontal; foreach (var e in i.GetEntities()) { var block = new TextBlock(); block.Margin = new Thickness(0, 0, 5, 0); block.FontSize = 20; block.Text = e.display; switch (e.type) { case Entity.Type.Absence: block.Foreground = new SolidColorBrush(Colors.Red); break; case Entity.Type.FirstName: block.Foreground = new SolidColorBrush(Colors.ForestGreen); break; case Entity.Type.LastName: block.Foreground = new SolidColorBrush(Colors.ForestGreen); break; case Entity.Type.Date: block.Foreground = new SolidColorBrush(Colors.MediumSlateBlue); break; default: break; } item.Children.Add(block); } item.Tapped += (_, __) => { _currentInterpretation = i; SetCurrentInterpretationAsText(); }; suggestions.Children.Add(item); } }, error => Debug.WriteLine(error) ); Observable.FromEventPattern <RoutedEventArgs>(submit, "Click") .Merge <object>(enterStream) .Select(_ => _currentInterpretation) .Where(i => i != null) .Select(i => GetEvaluationAsync(i).ToObservable()) .Switch() .ObserveOnDispatcher() .Subscribe(e => { results.Text = ""; var absences = e.GetAbsences(); foreach (var a in absences) { results.Text += a.ToString() + "\n"; } }); }