Esempio n. 1
0
        public ErrorsVM([NotNull] List <IError> errors)
        {
            ErrorsOrig = errors;

            var errorVMs = errors.Where(w => !string.IsNullOrEmpty(w.Message)).GroupBy(g => g.Group)
                           .Select(s =>
            {
                ErrorModelBase errModel;
                if (s.Skip(1).Any())
                {
                    var errList = new ErrorModelList(s.ToList());
                    errList.SameErrors.Iterate(e => e.SelectionChanged += ErrModel_SelectionChanged);
                    errModel = errList;
                }
                else
                {
                    errModel = new ErrorModelOne(s.First(), null);
                }

                errModel.SelectionChanged += ErrModel_SelectionChanged;
                return(errModel);
            });

            errorsSrc = new SourceList <ErrorModelBase>();
            errorsSrc.AddRange(errorVMs);

            errorsSrc.Connect()
            .ObserveOnDispatcher()
            .Bind(out var data)
            .Subscribe();
            Errors = data;

            IsDublicateBlocksEnabled = errors.Any(e => e.Message?.StartsWith("Дублирование блоков") == true ||
                                                  e.Message?.StartsWith("Наложение блоков") == true);
            ErrorsCountInfo = errors.Count;

            var canCollapse = errorsSrc.CountChanged.Select(s => Errors.OfType <ErrorModelList>().Any(a => a.IsExpanded));

            CollapseAll = CreateCommand(CollapseAllExecute, canCollapse);
            var canExpand = errorsSrc.CountChanged.Select(s =>
                                                          Errors.OfType <ErrorModelList>().Any(a => a.SameErrors != null && !a.IsExpanded));

            ExpandeAll    = CreateCommand(ExpandedAllExecute, canExpand);
            ExportToExcel = CreateCommand(ExportToExcelExecute);
            ExportToTxt   = CreateCommand(ExportToTxtExecute);
            DeleteSelectedDublicateBlocks = CreateCommand(OnDeleteSelectedDublicateBlocksExecute);
            DeleteAllDublicateBlocks      = CreateCommand(OnDeleteAllDublicateBlocksExecute);
            DeleteError = CreateCommand <ErrorModelBase>(DeleteErrorExec);
            var visualsEnts = ErrorsOrig.SelectManyNulless(s => s.Visuals).ToList();

            if (visualsEnts.Any())
            {
                errorsVisual = new VisualTransientSimple(visualsEnts)
                {
                    VisualIsOn = true
                };
            }
        }
Esempio n. 2
0
        public ErrorsVM([NotNull] List <IError> errors)
        {
            ErrorsOrig = errors;

            // Группировка ошибок
            // "Дублирование блоков"
            Errors = new ReactiveList <ErrorModelBase>(errors.Where(w => !string.IsNullOrEmpty(w.Message)).GroupBy(g => g.Group)
                                                       .Select(s =>
            {
                ErrorModelBase errModel;
                if (s.Skip(1).Any())
                {
                    var errList = new ErrorModelList(s.ToList());
                    errList.SameErrors.Iterate(e => e.SelectionChanged += ErrModel_SelectionChanged);
                    errModel = errList;
                }
                else
                {
                    errModel = new ErrorModelOne(s.First(), null);
                }
                errModel.SelectionChanged += ErrModel_SelectionChanged;
                return(errModel);
            }).ToList());
            IsDublicateBlocksEnabled = errors.Any(e => e.Message?.StartsWith("Дублирование блоков") ?? false);
            ErrorsCountInfo          = errors.Count;

            var canCollapse = Errors.CountChanged.Select(s => Errors.OfType <ErrorModelList>().Any(a => a.IsExpanded));

            CollapseAll = CreateCommand(CollapseAllExecute, canCollapse);
            var canExpand = Errors.CountChanged.Select(s =>
                                                       Errors.OfType <ErrorModelList>().Any(a => a.SameErrors != null && !a.IsExpanded));

            ExpandeAll    = CreateCommand(ExpandedAllExecute, canExpand);
            ExportToExcel = CreateCommand(ExportToExcelExecute);
            ExportToTxt   = CreateCommand(ExportToTxtExecute);
            DeleteSelectedDublicateBlocks = CreateCommand(OnDeleteSelectedDublicateBlocksExecute);
            DeleteError = CreateCommand <ErrorModelBase>(DeleteErrorExec);

            var visualsEnts = ErrorsOrig.SelectManyNulless(s => s.Visuals).ToList();

            if (visualsEnts.Any())
            {
                errorsVisual = new VisualTransientSimple(visualsEnts)
                {
                    VisualIsOn = true
                };
            }
        }