Ejemplo n.º 1
0
        private void InitTableConfigs()
        {
            this.RegisteredStudentsTableConfig = new TableConfig {
                Sorts      = RegisteredStudentsSorts,
                Filter     = this.Filter,
                DragConfig = new DragConfig {
                    SourceId         = _token.Id + nameof(this.RegisteredStudentsTableConfig),
                    SourceType       = nameof(StudentLessonEntity),
                    DropAvailability = data => data.Data.Count > 0 &&
                                       ((data.SenderType.Equals(nameof(StudentLessonEntity)) &&
                                         data.SenderId.Equals(this.LessonStudentsTableConfig.DragConfig
                                                              .SourceId)
                                         ) ||
                                        data.SenderType.Equals(nameof(StudentEntity))),
                    Drop = async() => {
                        var dragData = await _mainReducer.Select(state => state.DragData).FirstOrDefaultAsync();

                        if (dragData == null)
                        {
                            return;
                        }

                        if (nameof(StudentLessonEntity).Equals(dragData.SenderType))
                        {
                            RunInUiThread(Register);
                        }

                        if (nameof(StudentEntity).Equals(dragData.SenderType))
                        {
                            RunInUiThread(() => AcceptDropFromStudentTable(dragData.Data));
                        }

                        dragData.Accept();
                    },
                    DragStart = data => _mainReducer.DispatchSetValueAction(state => state.DragData, data),
                },
                ColumnWidths = new[] {
                    new GridLength(1, GridUnitType.Star),
                    new GridLength(1, GridUnitType.Star),
                    new GridLength(1, GridUnitType.Star),
                    new GridLength(1, GridUnitType.Star),
                }
            };
            this.AllStudentsTableConfig = new TableConfig {
                Sorts      = Sorts,
                Filter     = this.AllStudentsFilter,
                DragConfig = new DragConfig {
                    SourceId      = _token.Id + nameof(this.AllStudentsTableConfig),
                    SourceType    = nameof(StudentEntity),
                    DragValuePath = "Student",
                    DragStart     = data => _mainReducer.DispatchSetValueAction(state => state.DragData, data)
                },
                IsFilterDependsOnlyOnFilterValue = false,
                ColumnWidths = new[] {
                    new GridLength(1, GridUnitType.Star),
                    new GridLength(1, GridUnitType.Star),
                    new GridLength(1, GridUnitType.Star),
                    new GridLength(100),
                }
            };
            this.LessonStudentsTableConfig = new TableConfig {
                Sorts      = Sorts,
                Filter     = this.Filter,
                DragConfig = new DragConfig {
                    SourceId         = _token.Id + nameof(this.LessonStudentsTableConfig),
                    SourceType       = nameof(StudentLessonEntity),
                    DropAvailability = data => data.Data.Count > 0 &&
                                       data.SenderId.Equals(this.RegisteredStudentsTableConfig.DragConfig
                                                            .SourceId),
                    Drop = async() => {
                        var dragData = await _mainReducer.Select(state => state.DragData).FirstAsync();

                        RunInUiThread(UnRegister);
                        dragData.Accept();
                    },
                    DragStart = data => _mainReducer.DispatchSetValueAction(state => state.DragData, data)
                },
                ColumnWidths = new[] {
                    new GridLength(1, GridUnitType.Star),
                    new GridLength(1, GridUnitType.Star),
                    new GridLength(1, GridUnitType.Star),
                }
            };
        }