diff --git a/README.md b/README.md index 98f1782..56f0114 100644 --- a/README.md +++ b/README.md @@ -19,19 +19,6 @@ Please visit the [Tubular GitHub Page](http://unosquare.github.io/tubular) to le PM> Install-Package Tubular.ServerSide ``` -## Global Settings - -You can access global settings by using the static object `TubularDefaultSettings` and setup common behavior in Tubular. The settings included are: - - - - -
SettingDefault valueNotes
AdjustTimezoneOffsetTrueDetermines if the DateTime from a Response should adjust the timezone offset send by within the Request.
- -## Building C# Library - -To build the solution you need VS2017 with .NET Core support. - ## Sample You can check out the Tubular GitHub Page to get a few examples. We still need to work on more samples and better documentation, but we feel what we have now will get you up to speed very quickly :). diff --git a/src/Unosquare.Tubular.AspNetCoreSample/Startup.cs b/src/Unosquare.Tubular.AspNetCoreSample/Startup.cs index 2bc1758..a421cfa 100644 --- a/src/Unosquare.Tubular.AspNetCoreSample/Startup.cs +++ b/src/Unosquare.Tubular.AspNetCoreSample/Startup.cs @@ -83,11 +83,9 @@ public void Configure(IApplicationBuilder app) app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()); app.UseAuthorization(); + app.UseRouting(); - app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); + app.UseEndpoints(endpoints => endpoints.MapControllers()); } } } \ No newline at end of file diff --git a/src/Unosquare.Tubular.AspNetCoreSample/Unosquare.Tubular.AspNetCoreSample.csproj b/src/Unosquare.Tubular.AspNetCoreSample/Unosquare.Tubular.AspNetCoreSample.csproj index a0cdf11..ef4abb0 100644 --- a/src/Unosquare.Tubular.AspNetCoreSample/Unosquare.Tubular.AspNetCoreSample.csproj +++ b/src/Unosquare.Tubular.AspNetCoreSample/Unosquare.Tubular.AspNetCoreSample.csproj @@ -20,11 +20,11 @@ - - + + - - + + diff --git a/src/Unosquare.Tubular.AspNetCoreSample/web.config b/src/Unosquare.Tubular.AspNetCoreSample/web.config index dc0514f..6ee7496 100644 --- a/src/Unosquare.Tubular.AspNetCoreSample/web.config +++ b/src/Unosquare.Tubular.AspNetCoreSample/web.config @@ -1,14 +1,18 @@  - - - + - + + + + + + + - + \ No newline at end of file diff --git a/src/Unosquare.Tubular.EmbedioSample/Unosquare.Tubular.EmbedioSample.csproj b/src/Unosquare.Tubular.EmbedioSample/Unosquare.Tubular.EmbedioSample.csproj index 3ad183e..1bef904 100644 --- a/src/Unosquare.Tubular.EmbedioSample/Unosquare.Tubular.EmbedioSample.csproj +++ b/src/Unosquare.Tubular.EmbedioSample/Unosquare.Tubular.EmbedioSample.csproj @@ -20,7 +20,7 @@ - + diff --git a/src/Unosquare.Tubular/Extensions.cs b/src/Unosquare.Tubular/Extensions.cs index 733f224..1767d67 100644 --- a/src/Unosquare.Tubular/Extensions.cs +++ b/src/Unosquare.Tubular/Extensions.cs @@ -61,9 +61,6 @@ public static GridDataResponse CreateGridDataResponse( if (request.Columns.Any() != true) throw new ArgumentOutOfRangeException(nameof(request), "Missing column information"); - // Remove this in future versions. - AdjustFilters(request); - var response = new GridDataResponse { Counter = request.Counter, @@ -142,19 +139,6 @@ public static GridDataResponse CreateGridDataResponse( return response; } - private static void AdjustFilters(GridDataRequest request) - { - if (request.Search != null) - request.SearchText = request.Search.Text; - - foreach (var column in request.Columns.Where(x => x.Filter != null)) - { - column.FilterArgument = column.Filter.Argument; - column.FilterOperator = column.Filter.Operator; - column.FilterText = column.Filter.Text; - } - } - [MethodImpl(MethodImplOptions.AggressiveInlining)] private static Dictionary MapColumnsToProperties( IReadOnlyCollection columns, @@ -187,10 +171,9 @@ private static List> CreateGridPayload( { if (column.Value is DateTime time) { - if (column.Key.DataType == DataType.DateTimeUtc || !TubularDefaultSettings.AdjustTimezoneOffset) - payloadItem.Add(time); - else - payloadItem.Add(time.AddMinutes(-timezoneOffset)); + payloadItem.Add(column.Key.DataType == DataType.DateTimeUtc + ? time + : time.AddMinutes(-timezoneOffset)); } else { @@ -338,7 +321,7 @@ private static IQueryable FilterResponse(GridDataRequest request, IQueryable sub // Perform Searching var searchLambda = new StringBuilder(); - var searchParamArgs = new List(); + var searchParamArgs = new List(); if (!string.IsNullOrWhiteSpace(request.SearchText)) { @@ -369,7 +352,7 @@ private static IQueryable FilterResponse(GridDataRequest request, IQueryable sub private static void FilterColumn( GridColumn column, StringBuilder searchLambda, - ICollection searchParamArgs, + ICollection searchParamArgs, bool isDbQuery) { switch (column.FilterOperator) @@ -379,7 +362,7 @@ private static void FilterColumn( if (string.IsNullOrWhiteSpace(column.FilterText)) return; - if (column.DataType == DataType.Date) + if (column.DataType == DataType.Date || column.DataType == DataType.DateTime || column.DataType == DataType.DateTimeUtc) { searchLambda.AppendFormat( column.FilterOperator == CompareOperators.Equals @@ -404,27 +387,12 @@ private static void FilterColumn( break; case DataType.DateTime: case DataType.DateTimeUtc: - searchParamArgs.Add(DateTime.Parse(column.FilterText).ToString(DateFormat)); - break; case DataType.Date: - if (TubularDefaultSettings.AdjustTimezoneOffset) - { - searchParamArgs.Add(DateTime.Parse(column.FilterText).Date.ToUniversalTime() - .ToString(DateTimeFormat)); - searchParamArgs.Add( - DateTime.Parse(column.FilterText) - .Date.ToUniversalTime() - .AddDays(1) - .AddMinutes(-1).ToString(DateTimeFormat)); - } - else - { - searchParamArgs.Add( - DateTime.Parse(column.FilterText).Date.ToString(DateTimeFormat)); - searchParamArgs.Add(DateTime.Parse(column.FilterText) - .Date.AddDays(1) - .AddMinutes(-1).ToString(DateTimeFormat)); - } + searchParamArgs.Add( + DateTime.Parse(column.FilterText).Date.ToString(DateTimeFormat)); + searchParamArgs.Add(DateTime.Parse(column.FilterText) + .Date.AddDays(1) + .AddMinutes(-1).ToString(DateTimeFormat)); break; case DataType.Boolean: @@ -443,7 +411,7 @@ private static void FilterColumn( : "({0} != null && {0}.ToLowerInvariant().Contains(@{1})) &&", column.Name, searchParamArgs.Count); - searchParamArgs.Add(column.FilterText.ToLowerInvariant()); + searchParamArgs.Add(column.FilterText?.ToLowerInvariant()); break; case CompareOperators.StartsWith: searchLambda.AppendFormat( @@ -452,7 +420,7 @@ private static void FilterColumn( : "({0} != null && {0}.ToLowerInvariant().StartsWith(@{1})) &&", column.Name, searchParamArgs.Count); - searchParamArgs.Add(column.FilterText.ToLowerInvariant()); + searchParamArgs.Add(column.FilterText?.ToLowerInvariant()); break; case CompareOperators.EndsWith: searchLambda.AppendFormat( @@ -461,7 +429,7 @@ private static void FilterColumn( : "({0} != null && {0}.ToLowerInvariant().EndsWith(@{1})) &&", column.Name, searchParamArgs.Count); - searchParamArgs.Add(column.FilterText.ToLowerInvariant()); + searchParamArgs.Add(column.FilterText?.ToLowerInvariant()); break; case CompareOperators.NotContains: searchLambda.AppendFormat( @@ -470,7 +438,7 @@ private static void FilterColumn( : "({0} != null && {0}.ToLowerInvariant().Contains(@{1}) == false) &&", column.Name, searchParamArgs.Count); - searchParamArgs.Add(column.FilterText.ToLowerInvariant()); + searchParamArgs.Add(column.FilterText?.ToLowerInvariant()); break; case CompareOperators.NotStartsWith: searchLambda.AppendFormat( @@ -479,7 +447,7 @@ private static void FilterColumn( : "({0} != null && {0}.ToLowerInvariant().StartsWith(@{1}) == false) &&", column.Name, searchParamArgs.Count); - searchParamArgs.Add(column.FilterText.ToLowerInvariant()); + searchParamArgs.Add(column.FilterText?.ToLowerInvariant()); break; case CompareOperators.NotEndsWith: searchLambda.AppendFormat( @@ -488,7 +456,7 @@ private static void FilterColumn( : "({0} != null && {0}.ToLowerInvariant().EndsWith(@{1}) == false) &&", column.Name, searchParamArgs.Count); - searchParamArgs.Add(column.FilterText.ToLowerInvariant()); + searchParamArgs.Add(column.FilterText?.ToLowerInvariant()); break; case CompareOperators.Gte: case CompareOperators.Gt: @@ -548,10 +516,10 @@ private static void GetSearchFilter( bool isDbQuery, string searchValue, StringBuilder searchLambda, - List searchParamArgs) + List searchParamArgs) { var filter = new StringBuilder(); - var values = new List(); + var values = new List(); if (request.Columns.Any(x => x.Searchable)) filter.Append("("); diff --git a/src/Unosquare.Tubular/Filter.cs b/src/Unosquare.Tubular/Filter.cs deleted file mode 100644 index a3ec05f..0000000 --- a/src/Unosquare.Tubular/Filter.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; - -namespace Unosquare.Tubular -{ - /// - /// Represents a Tubular filter (by column). - /// - /// This object is only used to be serialized/deserialized between - /// the API and Tubular. - /// - [Obsolete("This will be removed in future versions.")] - public class Filter - { - /// - /// Initializes a new instance of the class. - /// - public Filter() - { - Operator = CompareOperators.None; - Name = string.Empty; - Text = string.Empty; - } - - /// - /// Filter name. - /// - public string? Name { get; set; } - - /// - /// Filter search text. - /// - public string? Text { get; set; } - - /// - /// Filter search params. - /// - public string[]? Argument { get; set; } - - /// - /// Filter's operator. - /// - public CompareOperators Operator { get; set; } - - /// - /// Flags if the Filter is applied. - /// - public bool HasFilter { get; set; } - } -} \ No newline at end of file diff --git a/src/Unosquare.Tubular/GridColumn.cs b/src/Unosquare.Tubular/GridColumn.cs index 13adac5..5aeac96 100644 --- a/src/Unosquare.Tubular/GridColumn.cs +++ b/src/Unosquare.Tubular/GridColumn.cs @@ -1,6 +1,4 @@ -using System; - -namespace Unosquare.Tubular +namespace Unosquare.Tubular { /// /// Represents a Tubular Grid column. @@ -35,12 +33,6 @@ public class GridColumn /// public SortDirection SortDirection { get; set; } - /// - /// Represents the Columns filter. - /// - [Obsolete("This will be removed in future versions.")] - public Filter? Filter { get; set; } - /// /// Set if the column is searchable in free-text search. /// diff --git a/src/Unosquare.Tubular/GridDataRequest.cs b/src/Unosquare.Tubular/GridDataRequest.cs index afc4bcb..18873fd 100644 --- a/src/Unosquare.Tubular/GridDataRequest.cs +++ b/src/Unosquare.Tubular/GridDataRequest.cs @@ -14,12 +14,6 @@ public class GridDataRequest /// public int Counter { get; set; } - /// - /// The free-text search. - /// - [Obsolete("This will be removed in future versions.")] - public Filter? Search { get; set; } - /// /// Gets or sets the search text. /// diff --git a/src/Unosquare.Tubular/TubularDefaultSettings.cs b/src/Unosquare.Tubular/TubularDefaultSettings.cs deleted file mode 100644 index 59d9321..0000000 --- a/src/Unosquare.Tubular/TubularDefaultSettings.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Unosquare.Tubular -{ - /// - /// Tubular default settings. - /// - public static class TubularDefaultSettings - { - /// - /// Defines if the timezone offset should used. - /// - public static bool AdjustTimezoneOffset { get; set; } = true; - } -} \ No newline at end of file diff --git a/src/Unosquare.Tubular/Unosquare.Tubular.csproj b/src/Unosquare.Tubular/Unosquare.Tubular.csproj index 8a7f145..9655baf 100644 --- a/src/Unosquare.Tubular/Unosquare.Tubular.csproj +++ b/src/Unosquare.Tubular/Unosquare.Tubular.csproj @@ -3,7 +3,7 @@ Unosquare 2016-2020 Unosquare Tubular - 2.2.0 + 3.0.0 netstandard2.0 true Unosquare.Tubular @@ -16,6 +16,6 @@ All - + diff --git a/test/Unosquare.Tubular.Tests/CompareOperatorsTest.cs b/test/Unosquare.Tubular.Tests/CompareOperatorsTest.cs index 6b6a9de..77314c5 100644 --- a/test/Unosquare.Tubular.Tests/CompareOperatorsTest.cs +++ b/test/Unosquare.Tubular.Tests/CompareOperatorsTest.cs @@ -127,7 +127,7 @@ public void DecimalNumberFilterTest() [Test] public void DateTimeEqualFilterTest() { - var filter = DateTime.Now.Date.ToString(CultureInfo.InvariantCulture); + var filter = "2020-04-15T05:00:00.000Z"; var filterCount = DataSource.Where(x => x.Date.ToString(CultureInfo.InvariantCulture) == filter); @@ -137,7 +137,7 @@ public void DateTimeEqualFilterTest() { Take = PageSize, Skip = 0, - Columns = Thing.GetColumnsWithDateFilter(filter, CompareOperators.Equals, DataType.DateTime) + Columns = Thing.GetColumnsWithDateFilter(filter, CompareOperators.Equals, DataType.Date) }; var response = request.CreateGridDataResponse(DataSource); diff --git a/test/Unosquare.Tubular.Tests/ExtensionTest.cs b/test/Unosquare.Tubular.Tests/ExtensionTest.cs index ac8a29d..e12960d 100644 --- a/test/Unosquare.Tubular.Tests/ExtensionTest.cs +++ b/test/Unosquare.Tubular.Tests/ExtensionTest.cs @@ -23,10 +23,7 @@ public void CreateGridDataResponseThrowArgumentExceptionTest() Columns = null }; - Assert.Throws(() => - { - request.CreateGridDataResponse(dataSource); - }); + Assert.Throws(() => request.CreateGridDataResponse(dataSource)); } } } diff --git a/test/Unosquare.Tubular.Tests/TestHelper.cs b/test/Unosquare.Tubular.Tests/TestHelper.cs index e8b106e..e7a89ea 100644 --- a/test/Unosquare.Tubular.Tests/TestHelper.cs +++ b/test/Unosquare.Tubular.Tests/TestHelper.cs @@ -49,15 +49,6 @@ public void SimpleList([Range(0, 21)] int page, [Range(430, 450)] int setSize) SimpleListTest(false, page, setSize); } - [Test] - public void SimpleListIgnoreTimezoneOffset() - { - // Ignore timezone adjustment - TubularDefaultSettings.AdjustTimezoneOffset = false; - SimpleListTest(true); - TubularDefaultSettings.AdjustTimezoneOffset = true; - } - [Test] public void SimpleFilter() { diff --git a/test/Unosquare.Tubular.Tests/Unosquare.Tubular.Tests.csproj b/test/Unosquare.Tubular.Tests/Unosquare.Tubular.Tests.csproj index b6a41a0..9fa9b58 100644 --- a/test/Unosquare.Tubular.Tests/Unosquare.Tubular.Tests.csproj +++ b/test/Unosquare.Tubular.Tests/Unosquare.Tubular.Tests.csproj @@ -12,13 +12,13 @@ - + all runtime; build; native; contentfiles; analyzers - + - +