/// <summary>
        /// Request to change the virtual results
        /// </summary>
        /// <param name="request">The request.</param>
        /// <exception cref="System.ArgumentNullException">request</exception>
        public void Virtualise(IVirtualRequest request)
        {
            if (request == null) throw new ArgumentNullException(nameof(request));

            _request = request;
            _subject.OnNext(_request);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="VirtualisingController"/> class.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <exception cref="System.ArgumentNullException">request</exception>
        public VirtualisingController(IVirtualRequest request)
        {
            if (request == null) throw new ArgumentNullException(nameof(request));

            _request = request;
            _subject.OnNext(_request);
        }
        /// <summary>
        /// Request to change the virtual results
        /// </summary>
        /// <param name="request">The request.</param>
        /// <exception cref="System.ArgumentNullException">request</exception>
        public void Virtualise(IVirtualRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            _request = request;
            _subject.OnNext(_request);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="VirtualisingController"/> class.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <exception cref="System.ArgumentNullException">request</exception>
        public VirtualisingController(IVirtualRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            _request = request;
            _subject.OnNext(_request);
        }
Esempio n. 5
0
        private IChangeSet <T> Virtualise(List <T> all, ChangeAwareList <T> virtualised, IVirtualRequest request)
        {
            if (request == null || request.StartIndex < 0 || request.Size < 1)
            {
                return(null);
            }

            _parameters = request;
            return(Virtualise(all, virtualised));
        }
Esempio n. 6
0
        private IChangeSet <T> Virtualise(IVirtualRequest request)
        {
            if (request == null || request.StartIndex < 0 || request.Size < 1)
            {
                return(null);
            }

            _parameters = request;
            return(Virtualise());
        }
Esempio n. 7
0
            public IVirtualChangeSet <TObject, TKey> Virtualise(IVirtualRequest parameters)
            {
                if (parameters == null || parameters.StartIndex < 0 || parameters.Size < 1)
                {
                    return(null);
                }
                if (parameters.Size == _parameters.Size && parameters.StartIndex == _parameters.StartIndex)
                {
                    return(null);
                }

                _parameters = parameters;
                return(Virtualise());
            }
Esempio n. 8
0
 public Virtualiser(VirtualRequest request = null)
 {
     _parameters = request ?? new VirtualRequest();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="VirtualisingController"/> class.
 /// </summary>
 public VirtualisingController()
 {
     _request = new VirtualRequest(0, 30);
     _subject.OnNext(_request);
 }
Esempio n. 10
0
        private static IChangeSet <T> Virtualise(IList <T> all, ChangeAwareList <T> virtualised, IVirtualRequest request, IChangeSet <T>?changeSet = null)
        {
            if (changeSet is not null)
            {
                all.Clone(changeSet);
            }

            var previous = virtualised;

            var current = all.Skip(request.StartIndex).Take(request.Size).ToList();

            var adds    = current.Except(previous);
            var removes = previous.Except(current);

            virtualised.RemoveMany(removes);

            adds.ForEach(
                t =>
            {
                var index = current.IndexOf(t);
                virtualised.Insert(index, t);
            });

            var moves = changeSet.EmptyIfNull().Where(change => change.Reason == ListChangeReason.Moved && change.MovedWithinRange(request.StartIndex, request.StartIndex + request.Size));

            foreach (var change in moves)
            {
                // check whether an item has moved within the same page
                var currentIndex  = change.Item.CurrentIndex - request.StartIndex;
                var previousIndex = change.Item.PreviousIndex - request.StartIndex;
                virtualised.Move(previousIndex, currentIndex);
            }

            // find replaces [Is this ever the case that it can be reached]
            for (var i = 0; i < current.Count; i++)
            {
                var currentItem  = current[i];
                var previousItem = previous[i];

                if (ReferenceEquals(currentItem, previousItem))
                {
                    continue;
                }

                var index = virtualised.IndexOf(currentItem);
                virtualised.Move(i, index);
            }

            return(virtualised.CaptureChanges());
        }
Esempio n. 11
0
        private IChangeSet <T> CheckParamsAndVirtualise(List <T> all, ChangeAwareList <T> virtualised, IVirtualRequest request)
        {
            if (request == null || request.StartIndex < 0 || request.Size < 1)
            {
                return(null);
            }

            return(Virtualise(all, virtualised, request));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="VirtualisingController"/> class.
 /// </summary>
 public VirtualisingController()
 {
     _request = new VirtualRequest(0, 30);
     _subject.OnNext(_request);
 }