コード例 #1
0
ファイル: Class1.cs プロジェクト: ikihiki/TodoTree
        public TodoChangeMessage DeleteTodo(string id)
        {
            var result = new TodoChangeMessage();
            var todo   = todoDictionary[id];

            if (todo.Parent != null)
            {
                var oldParent = todo.Parent;
                oldParent.DeleteChild(todo);
                result.Upsert = result.Upsert.Concat(new[] { TodoConvert.ConvertSingle(oldParent) });
            }
            else
            {
                topTodo.Remove(todo);
            }
            if (todo.HasChildren)
            {
                foreach (var children in todo.Children)
                {
                    result.Merge(DeleteTodoWithoutParent(children.Id));
                }
            }
            result.Delete = result.Delete.Concat(new[] { TodoConvert.ConvertSingle(todo) });
            todoDictionary.Remove(id);

            return(result);
        }
コード例 #2
0
ファイル: Class1.cs プロジェクト: ikihiki/TodoTree
        public TodoChangeMessage DeleteTodo(IEnumerable <TodoData> todo)
        {
            var result = new TodoChangeMessage();

            foreach (var t in todo)
            {
                result.Merge(DeleteTodo(t.Id));
            }
            return(result);
        }
コード例 #3
0
ファイル: Class1.cs プロジェクト: ikihiki/TodoTree
        public TodoChangeMessage UpsertTodoRange(IEnumerable <TodoData> data)
        {
            var result = new TodoChangeMessage();

            foreach (var todo in data)
            {
                result.Merge(UpsertTodo(todo));
            }
            return(result);
        }
コード例 #4
0
ファイル: Class1.cs プロジェクト: ikihiki/TodoTree
        private TodoChangeMessage DeleteTodoWithoutParent(string id)
        {
            var result = new TodoChangeMessage();

            var todo = todoDictionary[id];

            if (todo.HasChildren)
            {
                foreach (var children in todo.Children)
                {
                    result.Merge(DeleteTodoWithoutParent(children.Id));
                }
            }
            result.Delete = result.Delete.Concat(new[] { TodoConvert.ConvertSingle(todo) });
            todoDictionary.Remove(id);

            return(result);
        }
コード例 #5
0
ファイル: Class1.cs プロジェクト: ikihiki/TodoTree
 public void OnUpdate(TodoChangeMessage data)
 {
     manager.UpsertTodoRange(data.Upsert);
     manager.DeleteTodo(data.Delete);
     ChangeTodo?.Invoke();
 }
コード例 #6
0
ファイル: Class1.cs プロジェクト: ikihiki/TodoTree
 public void ApplyChange(TodoChangeMessage data)
 {
     UpsertTodoRange(data.Upsert);
     DeleteTodo(data.Delete);
 }
コード例 #7
0
ファイル: Class1.cs プロジェクト: ikihiki/TodoTree
 public void Merge(TodoChangeMessage message)
 {
     Upsert = Upsert.Concat(message.Upsert).ToArray();
     Delete = Delete.Concat(message.Delete).ToArray();
 }