private void WriteTo(ProjectionVersion projectionVersion, IEnumerable <KeyValuePair <string, JToken> > extraMetaData, JsonTextWriter jsonWriter) { jsonWriter.WriteStartObject(); if (projectionVersion.ProjectionId > 0) { jsonWriter.WritePropertyName("$v"); WriteVersion(projectionVersion, jsonWriter); } switch (Mode_) { case Mode.Position: case Mode.EventTypeIndex: jsonWriter.WritePropertyName("$c"); jsonWriter.WriteValue(CommitPosition.GetValueOrDefault()); jsonWriter.WritePropertyName("$p"); jsonWriter.WriteValue(PreparePosition.GetValueOrDefault()); if (Mode_ == Mode.EventTypeIndex) { goto case Mode.MultiStream; } break; case Mode.PreparePosition: jsonWriter.WritePropertyName("$p"); jsonWriter.WriteValue(PreparePosition.GetValueOrDefault()); break; case Mode.Stream: case Mode.MultiStream: jsonWriter.WritePropertyName("$s"); jsonWriter.WriteStartObject(); foreach (var stream in Streams) { jsonWriter.WritePropertyName(stream.Key); jsonWriter.WriteValue(stream.Value); } jsonWriter.WriteEndObject(); break; } if (extraMetaData != null) { foreach (var pair in extraMetaData) { jsonWriter.WritePropertyName(pair.Key); pair.Value.WriteTo(jsonWriter); } } jsonWriter.WriteEndObject(); }
private async void FilterTrigger(object sender, EventArgs e) { filterTriggerTimer.Stop(); string filterText = settingFilterText; FilterText = filterText; Log.Debug($"Filter triggered for: {FilterText}"); CommitPosition commitPosition = TryGetSelectedCommitPosition(); using (progress.ShowBusy()) { await viewModelService.SetFilterAsync(this, filterText); } TrySetSelectedCommitPosition(commitPosition, true); CommitDetailsViewModel.NotifyAll(); VirtualItemsSource.DataChanged(width); }
private void TrySetSelectedCommitPosition( CommitPosition commitPosition, bool ignoreTopIndex = false) { if (commitPosition != null) { if (!ignoreTopIndex && commitPosition.Index == 0) { // The index was 0 (top) lest ensure the index remains 0 again Log.Debug("Scroll to 0 since first position was 0"); ScrollTo(0); if (Commits.Any()) { SelectedIndex = 0; SelectedItem = Commits.First(); } return; } Commit selected = commitPosition.Commit; int indexAfter = Commits.FindIndex(c => c.Commit.Id == selected.Id); if (selected != null && indexAfter != -1) { int indexBefore = commitPosition.Index; ScrollRows(indexBefore - indexAfter); SelectedIndex = indexAfter; SelectedItem = Commits[indexAfter]; return; } } ScrollTo(0); if (Commits.Any()) { SelectedIndex = 0; SelectedItem = Commits.First(); } }
public void WriteTo(ProjectionVersion projectionVersion, IEnumerable <KeyValuePair <string, JToken> > extraMetaData, JsonWriter jsonWriter) { jsonWriter.WriteStartObject(); if (projectionVersion.ProjectionId > 0) { jsonWriter.WritePropertyName("$v"); WriteVersion(projectionVersion, jsonWriter); } if (Phase != 0) { jsonWriter.WritePropertyName("$ph"); jsonWriter.WriteValue(Phase); } switch (Mode_) { case Mode.Phase: jsonWriter.WritePropertyName("$cp"); jsonWriter.WriteValue(Completed); break; case Mode.Position: case Mode.EventTypeIndex: jsonWriter.WritePropertyName("$c"); jsonWriter.WriteValue(CommitPosition.GetValueOrDefault()); jsonWriter.WritePropertyName("$p"); jsonWriter.WriteValue(PreparePosition.GetValueOrDefault()); if (Mode_ == Mode.EventTypeIndex) { goto case Mode.MultiStream; } break; case Mode.PreparePosition: jsonWriter.WritePropertyName("$p"); jsonWriter.WriteValue(PreparePosition.GetValueOrDefault()); break; case Mode.Stream: case Mode.MultiStream: jsonWriter.WritePropertyName("$s"); jsonWriter.WriteStartObject(); foreach (var stream in Streams) { jsonWriter.WritePropertyName(stream.Key); jsonWriter.WriteValue(stream.Value); } jsonWriter.WriteEndObject(); break; case Mode.ByStream: jsonWriter.WritePropertyName("$m"); jsonWriter.WriteValue("bs"); jsonWriter.WritePropertyName("$c"); jsonWriter.WriteValue(CommitPosition.GetValueOrDefault()); jsonWriter.WritePropertyName("$s"); jsonWriter.WriteStartArray(); jsonWriter.WriteStartObject(); jsonWriter.WritePropertyName(CatalogStream); jsonWriter.WriteValue(CatalogPosition); jsonWriter.WriteEndObject(); if (!string.IsNullOrEmpty(DataStream)) { jsonWriter.WriteStartObject(); jsonWriter.WritePropertyName(DataStream); jsonWriter.WriteValue(DataPosition); jsonWriter.WriteEndObject(); } jsonWriter.WriteEndArray(); break; } if (extraMetaData != null) { foreach (var pair in extraMetaData) { jsonWriter.WritePropertyName(pair.Key); pair.Value.WriteTo(jsonWriter); } } jsonWriter.WriteEndObject(); }
public void ShouldReturnFirstBefore(CommitPositionSequence sequence, CommitPosition expected) { var first = sequence.FirstBeforeGap(); first.Should().Be(expected); }