private void QueryChanged(object sender, QueryChangeEventArgs e) { if (Todos.Count == e.Rows.Count) { return; } Console.WriteLine("Query reports {0} rows", e.Rows.Count); UpdateDataContextSync(e.Rows); }
private void UpdateTable(object sender, QueryChangeEventArgs args) { if (_currentOperation == TableOperation.Add) { int i = 0; foreach (var row in args.Rows) { if (i >= Items.Count) { Items.Add(new TableViewEntry(row.Document)); } else if (!Items[i].Matches(row)) { Items.Insert(i, new TableViewEntry(row.Document)); break; } i += 1; } } else if (_currentOperation == TableOperation.Delete) { int i = 0; foreach (var row in args.Rows) { if (!Items[i].Matches(row)) { Items.RemoveAt(i); return; } i += 1; } for (int j = Items.Count - 1; j >= i; j--) { Items.RemoveAt(j); } } else { int i = 0; foreach (var row in args.Rows) { Items[i++].IsChecked = (bool)row.Document.UserProperties[CheckboxPropertyName]; } } }
private static void ResolveConflicts(object sender, QueryChangeEventArgs e) { var rows = _conflictsLiveQuery?.Rows; if (rows == null) { return; } foreach (var row in rows) { var conflicts = row.GetConflictingRevisions().ToArray(); if (conflicts.Length > 1) { var defaultWinning = conflicts[0]; var type = defaultWinning.GetProperty("type") as string ?? ""; switch (type) { // TRAINING: Automatic conflict resolution case "task-list": case "task-list.user": var props = defaultWinning.UserProperties; var image = defaultWinning.GetAttachment("image"); ResolveConflicts(conflicts, props, image); break; // TRAINING: N-way merge conflict resolution case "task": var merged = NWayMergeConflicts(conflicts); ResolveConflicts(conflicts, merged.Item1, merged.Item2); break; default: break; } } } }
private void QueryChanged(object sender, QueryChangeEventArgs e) { Console.WriteLine("Found {0} new rows", e.Rows.Count()); UpdateDataContextSync(e.Rows); }
private void QueryChanged(object sender, QueryChangeEventArgs e) { throw new NotImplementedException(); }