AyCode.Blazor/AyCode.Blazor.Components/Services/AcGridDataSource.cs

79 lines
3.3 KiB
C#

using DevExpress.Blazor;
using DevExpress.Data.Filtering;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AyCode.Core.Interfaces;
using DevExpress.Data.Filtering.Helpers;
using DevExpress.Data.Linq;
using DevExpress.Data.Linq.Helpers;
namespace AyCode.Blazor.Components.Services
{
//public class AcGridDataSource<T> : GridCustomDataSource where T : class, IId<Guid>
//{
// private static readonly AcSignalRDataSource<T> _signalRDataSource;
// public AcGridDataSource(AcSignalRDataSource<T> signalRDataSource)
// {
// _signalRDataSource = signalRDataSource;
// }
// public override async Task<int> GetItemCountAsync(GridCustomDataSourceCountOptions options, CancellationToken cancellationToken)
// {
// return await ApplyFiltering(options.FilterCriteria, _signalRDataSource.For<T>()).Count().FindScalarAsync<int>(cancellationToken);
// }
// public override async Task<IList> GetItemsAsync(GridCustomDataSourceItemsOptions options, CancellationToken cancellationToken)
// {
// var filteredClient = ApplyFiltering(options.FilterCriteria, _signalRDataSource.For<T>().Top(options.Count).Skip(options.StartIndex));
// return (await ApplySorting(options, filteredClient).FindEntriesAsync(cancellationToken)).ToList();
// }
// private static IBoundClient<T> ApplyFiltering(CriteriaOperator criteria, IBoundClient<T> boundClient)
// {
// //return !criteria.ReferenceEqualsNull() ? boundClient.Filter(ToSimpleClientCriteria(criteria)) : boundClient;
// CriteriaToExpressionConverter converter = new CriteriaToExpressionConverter();
// //IQueryable<T> source = null!;
// IQueryable<T>? filteredData = _signalRDataSource.AsQueryable().AppendWhere(converter, criteria) as IQueryable<T>;
// gridControl1.DataSource = null;
// gridControl1.DataSource = filteredData.ToList();
// }
// private static string ToSimpleClientCriteria(CriteriaOperator criteria)
// => $"{criteria}".Replace("[", "").Replace("]", "");
// private static IBoundClient<T> ApplySorting(GridCustomDataSourceItemsOptions options, IBoundClient<T> boundClient)
// {
// return options.SortInfo.Any()
// ? boundClient.OrderBy(options.SortInfo
// .Where(info => !info.DescendingSortOrder).Select(info => info.FieldName).ToArray())
// .OrderByDescending(options.SortInfo
// .Where(info => info.DescendingSortOrder).Select(info => info.FieldName).ToArray())
// : boundClient;
// }
// public async Task DeleteAsync(T instance)
// => await _signalRDataSource.For<T>().Key(instance.Id).DeleteEntryAsync();
// public async Task AddOrUpdateAsync(T instance, bool update = false)
// {
// if (!update)
// {
// await _signalRDataSource.For<T>().Set(new { instance.Title, instance.Content }).InsertEntryAsync();
// }
// else
// {
// await _signalRDataSource.For<T>().Key(instance.Id).Set(instance).UpdateEntryAsync();
// }
// }
//}
}