Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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];
                }
            }
        }
Exemplo n.º 3
0
        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;
                    }
                }
            }
        }
Exemplo n.º 4
0
 private void QueryChanged(object sender, QueryChangeEventArgs e)
 {
     Console.WriteLine("Found {0} new rows", e.Rows.Count());
     UpdateDataContextSync(e.Rows);
 }
Exemplo n.º 5
0
 private void QueryChanged(object sender, QueryChangeEventArgs e)
 {
     throw new NotImplementedException();
 }