public async ValueTask <ItemsProviderResult <Employee> > LoadEmployees(ItemsProviderRequest request)
        {
            var numberOfEmployees = Math.Min(request.Count, totalNumberOfEmployees - request.StartIndex);
            var EmployeeListItems = await EmployeeDataService.GetTakeLongEmployeeList(request.StartIndex, numberOfEmployees);

            return(new ItemsProviderResult <Employee>(EmployeeListItems, totalNumberOfEmployees));
        }
        private async ValueTask <ItemsProviderResult <TParent> > LoadItems(ItemsProviderRequest request)
        {
            var numItem = Math.Min(request.Count, TotalItemCount - request.StartIndex);
            var items   = await GetItems(request.StartIndex, numItem, request.CancellationToken);

            return(new ItemsProviderResult <TParent>(items, TotalItemCount));
        }
示例#3
0
        private async ValueTask <ItemsProviderResult <WeatherForecast> > LoadItems(ItemsProviderRequest request)
        {
            var numItems = Math.Min(request.Count, ItemsCount - request.StartIndex);
            var items    = forecasts.Skip(request.StartIndex).Take(numItems).ToList();

            return(new ItemsProviderResult <WeatherForecast>(items, ItemsCount));
        }
        private async ValueTask <ItemsProviderResult <Employee> > LoadEmployees(ItemsProviderRequest request)
        {
            //assume we have asked the api for the total in a seperate call
            var numberOfEmployees = Math.Min(request.Count, totalNumberOfEmployees - request.StartIndex);
            var employees         = await _employeeDataService.GetTakeLongEmployeeList(request.StartIndex, numberOfEmployees);

            return(new ItemsProviderResult <Employee>(employees, totalNumberOfEmployees));
        }
示例#5
0
        public async ValueTask <ItemsProviderResult <Employee> > LoadEmployees(ItemsProviderRequest request)
        {
            //assume that we have asked the API the total number in a separate call

            var numberOfEmployees = Math.Min(request.Count, totalNumberOfEmployees - request.StartIndex);
            var EmployeeListItems = await EmployeeDataService.GetTakeLongEmployeeList(request.StartIndex, numberOfEmployees);

            return(new ItemsProviderResult <Employee>(EmployeeListItems, totalNumberOfEmployees));
        }
示例#6
0
        private async ValueTask <ItemsProviderResult <Product> > LoadProducts(ItemsProviderRequest request)
        {
            var productNum = Math.Min(request.Count, TotalSize - request.StartIndex);
            await OnScroll.InvokeAsync(new ProductParameters
            {
                StartIndex = request.StartIndex,
                PageSize   = productNum == 0 ? request.Count : productNum
            });

            return(new ItemsProviderResult <Product>(Products, TotalSize));
        }
示例#7
0
        private async ValueTask <ItemsProviderResult <TItem> > LoadData(ItemsProviderRequest request)
        {
            loadPagedData();
            int totalRows = 0;

            if (pagedData != null)
            {
                totalRows = pagedData.Count();
            }
            var numberofItems = Math.Min(request.Count, totalRows - request.StartIndex);

            return(new ItemsProviderResult <TItem>(pagedData.Skip(request.StartIndex).Take(numberofItems), totalRows));
        }
        public async ValueTask <ItemsProviderResult <Player> > GetPlayers(ItemsProviderRequest request)
        {
            IQueryable <Player> result = _context.Players
                                         .ApplySophisticatedAiAlgorithm()
                                         .OrderByDescending(x => x.ExtendNow)
                                         .ThenBy(x => x.ExpiryDate)
                                         .ThenBy(x => x.Id);

            result = result.Skip(request.StartIndex)
                     .Take(request.Count);

            return(new ItemsProviderResult <Player>(
                       await result.ToListAsync(),
                       await _context.Players.CountAsync()));
        }
示例#9
0
    private async ValueTask <ItemsProviderResult <BugModel> > LoadBugs(ItemsProviderRequest request)
    {
        var req = request.StartIndex + request.Count;

        if (req > BugsList.Count())
        {
            await LoadMoreBugs();
        }

        var list       = FiltrList.Count == 0 ? BugsList : BugsList.Where(v => FiltrList.Contains(v.System)).ToList();
        var totalCount = FiltrList.Count == 0 ? TotalCount : list.Count;

        var bugs = list.Skip(request.StartIndex).Take(request.Count);

        return(new ItemsProviderResult <BugModel>(bugs, totalCount));
    }
示例#10
0
    private async ValueTask RefreshDataCoreAsync(bool renderOnSuccess)
    {
        _refreshCts?.Cancel();
        CancellationToken cancellationToken;

        if (_itemsProvider == DefaultItemsProvider)
        {
            // If we're using the DefaultItemsProvider (because the developer supplied a fixed
            // Items collection) we know it will complete synchronously, and there's no point
            // instantiating a new CancellationTokenSource
            _refreshCts       = null;
            cancellationToken = CancellationToken.None;
        }
        else
        {
            _refreshCts       = new CancellationTokenSource();
            cancellationToken = _refreshCts.Token;
        }

        var request = new ItemsProviderRequest(_itemsBefore, _visibleItemCapacity, cancellationToken);

        try
        {
            var result = await _itemsProvider(request);

            // Only apply result if the task was not canceled.
            if (!cancellationToken.IsCancellationRequested)
            {
                _itemCount             = result.TotalItemCount;
                _loadedItems           = result.Items;
                _loadedItemsStartIndex = request.StartIndex;

                if (renderOnSuccess)
                {
                    StateHasChanged();
                }
            }
        }
        catch (Exception e)
        {
            if (e is OperationCanceledException oce && oce.CancellationToken == cancellationToken)
            {
                // No-op; we canceled the operation, so it's fine to suppress this exception.
            }
示例#11
0
 private ValueTask <ItemsProviderResult <TItem> > AlwaysThrowsItemsProvider <TItem>(ItemsProviderRequest request)
 => throw new InvalidOperationException("Thrown from items provider.");
示例#12
0
 private ValueTask <ItemsProviderResult <TItem> > EmptyItemsProvider <TItem>(ItemsProviderRequest request)
 => ValueTask.FromResult(new ItemsProviderResult <TItem>(Enumerable.Empty <TItem>(), 0));
        public async ValueTask <ItemsProviderResult <Player> > GetPlayers(ItemsProviderRequest request)
        {
            var response = await _http.GetFromJsonAsync <PlayersResponse>($"/api/players?start={request.StartIndex}&count={request.Count}");

            return(new ItemsProviderResult <Player>(response.Players, response.TotalCount));
        }
示例#14
0
        private async ValueTask <ItemsProviderResult <MonitorStepLogDto> > LoadMonitorAsync(ItemsProviderRequest request)
        {
            var numStepLogs = Math.Min(request.Count, TotalMonitorStepLogCount - request.StartIndex);

            Filter.SkipCount      = request.StartIndex;
            Filter.MaxResultCount = numStepLogs;
            MonitorWithDetails    = await MonitorAppService.GetAsync(Guid.Parse(Id), Filter);

            return(new ItemsProviderResult <MonitorStepLogDto>(MonitorWithDetails.MonitorStep.MonitorStepLogs, TotalMonitorStepLogCount));
        }