예제 #1
0
        public ObjectsTreeViewModel(IDataObjectService dataObjectService, bool isExpand)
        {
            _collapseAllCommand      = new DelegateCommand(CollapseAll);
            _expandAllCommand        = new DelegateCommand(ExpandAll);
            _checkAllCommand         = new DelegateCommand(CheckAll);
            _uncheckAllCommand       = new DelegateCommand(UncheckAll);
            _checkOnlyFoldersCommand = new DelegateCommand(CheckOnlyFolders);
            ToolbarItemsSource       = new ObservableCollection <object>();

            var compositeDisposable = new CompositeDisposable();

            _dataObjectService = dataObjectService;
            compositeDisposable.Add(_dataObjectService);

            var disposable = _dataObjectService.DataObjects.Connect()
                             .TransformToTree(o => o.ParentId)
                             .Transform(node => new NodeViewModel(node, _dataObjectService, isExpand))
                             .Sort(new NodeViewModelComparer())
                             .Bind(out _nodes)
                             .DisposeMany()
                             .Subscribe(set => { IsLoading = false; }, () => { IsLoading = false; });

            compositeDisposable.Add(disposable);
            _cleanUp = compositeDisposable;
        }
예제 #2
0
        public NodeViewModel(Node <DataObject, Guid> node, IDataObjectService dataObjectService, NodeViewModel parent = null)
        {
            _node  = node;
            Parent = parent;

            var childrenLoader = new Lazy <IDisposable>(() => node.Children.Connect()
                                                        .Transform(x => new NodeViewModel(x, dataObjectService, this))
                                                        .Sort(new NodeViewModelComparer())
                                                        .Bind(out _children)
                                                        .DisposeMany()
                                                        .Subscribe());

            var shouldExpand = node.IsRoot
                ? Observable.Return(true)
                : Parent.Value.WhenValueChanged(x => x.IsExpanded);

            var expander = shouldExpand
                           .Where(isExpanded => isExpanded)
                           .Take(1)
                           .Subscribe(x =>
            {
                dataObjectService.Load(node.Item.Children);
                //force lazy loading
                var value = childrenLoader.Value;
            });

            _cleanUp = Disposable.Create(() =>
            {
                expander.Dispose();
                if (childrenLoader.IsValueCreated)
                {
                    childrenLoader.Value.Dispose();
                }
            });
        }
예제 #3
0
 public SelectProjectTemplatePageViewModel(CreationInfo creationInfo, IDataObjectService dataObjectService)
 {
     _creationInfo         = creationInfo;
     _objectsTreeViewModel = new ObjectsTreeViewModel(dataObjectService, false);
     _objectsTreeViewModel.SelectedItemChanged += OnSelectedItemChanged;
     _objectsTreeViewModel.ToolbarItemsSource.Add(new ToolbarButtonItem("CollapseAll")
     {
         Header  = "Свернуть все",
         Icon    = Icons.Instance.CollapseAllIcon,
         Command = _objectsTreeViewModel.CollapseAllCommand
     });
 }
예제 #4
0
        public NodeViewModel(Node <IDataObject, Guid> node, IDataObjectService dataObjectService, bool isExpand, NodeViewModel parent = null)
        {
            _node  = node;
            Parent = parent;

            if (Parent.HasValue)
            {
                IsChecked = Parent.Value.IsChecked;
            }

            //Документы не выбираем изначально
            if (node.Item.Type.Children.Count == 0 && node.Item.Type.HasFiles && !node.Item.Type.IsEcmDocument())
            {
                _isChecked = false;
            }

            var childrenLoader = new Lazy <IDisposable>(() => node.Children.Connect()
                                                        .Transform(x => new NodeViewModel(x, dataObjectService, isExpand, this))
                                                        .Sort(new NodeViewModelComparer())
                                                        .Bind(out _children)
                                                        .DisposeMany()
                                                        .Subscribe());

            var shouldExpand = node.IsRoot
                ? Observable.Return(true)
                : Parent.Value.WhenValueChanged(x => x.IsExpanded);

            if (isExpand)
            {
                shouldExpand = Observable.Return(true);
            }

            var expander = shouldExpand
                           .Where(isExpanded => isExpanded)
                           .Take(1)
                           .Subscribe(x =>
            {
                dataObjectService.Load(node.Item.Id, () => { });
                //force lazy loading
                var value = childrenLoader.Value;
            });

            _cleanUp = Disposable.Create(() =>
            {
                expander.Dispose();
                if (childrenLoader.IsValueCreated)
                {
                    childrenLoader.Value.Dispose();
                }
            });
        }
예제 #5
0
 public ObjectsCreatorService(IDataObjectService dataObjectService, IBindingService bindingService)
 {
     _dataObjectService = dataObjectService;
     _bindingService    = bindingService;
     CreateModel();
 }
예제 #6
0
 public RequestHandler(IBindingService bindingService, IDataObjectService dataObjectService, IStoreService storeService)
 {
     _bindingService    = bindingService;
     _dataObjectService = dataObjectService;
     _storeService      = storeService;
 }
예제 #7
0
 public ObjectsController(IDataObjectService dataObjectService, ILoggerFactory loggerFactory)
 {
     _dataObjectService = dataObjectService;
     _logger            = loggerFactory.CreateLogger("ObjectsControllerExceptionsLogger");
 }