94 lines
4.0 KiB
C#
94 lines
4.0 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 Task<IList<GridCustomDataSourceGroupInfo>> GetGroupInfoAsync(GridCustomDataSourceGroupingOptions options, CancellationToken cancellationToken)
|
|
// {
|
|
// return base.GetGroupInfoAsync(options, cancellationToken);
|
|
// }
|
|
|
|
// public override Task<IList> GetTotalSummaryAsync(GridCustomDataSourceTotalSummaryOptions options, CancellationToken cancellationToken)
|
|
// {
|
|
// return base.GetTotalSummaryAsync(options, cancellationToken);
|
|
// }
|
|
|
|
// public override Task<object[]> GetUniqueValuesAsync(GridCustomDataSourceUniqueValuesOptions options, CancellationToken cancellationToken)
|
|
// {
|
|
// return base.GetUniqueValuesAsync(options, cancellationToken);
|
|
// }
|
|
|
|
// 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();
|
|
// }
|
|
// }
|
|
//}
|
|
}
|
|
|