Skip to content

Commit 7761f67

Browse files
committed
Revert "Added support for output as an array of objects for newer versions of datatables.js."
This reverts commit 24bc707.
1 parent 24bc707 commit 7761f67

File tree

3 files changed

+39
-57
lines changed

3 files changed

+39
-57
lines changed
Lines changed: 24 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
using Mvc.JQuery.Datatables.Models;
2-
using Mvc.JQuery.Datatables.Reflection;
3-
using Mvc.JQuery.Datatables.Util;
1+
using System.Web;
2+
using System.Web.Script.Serialization;
43
using System;
54
using System.Collections.Generic;
65
using System.Linq;
7-
using System.Web;
86
using System.Web.Mvc;
9-
using System.Web.Script.Serialization;
7+
using Mvc.JQuery.Datatables.Models;
8+
using Mvc.JQuery.Datatables.Reflection;
9+
using Mvc.JQuery.Datatables.Util;
1010

1111
namespace Mvc.JQuery.Datatables
1212
{
@@ -18,83 +18,60 @@ public abstract class DataTablesResult : ActionResult
1818
/// <param name="dataTableParam"></param>
1919
/// <param name="transform">//a transform for custom column rendering e.g. to do a custom date row => new { CreatedDate = row.CreatedDate.ToString("dd MM yy") } </param>
2020
/// <returns></returns>
21-
public static DataTablesResult<TSource> Create<TSource, TTransform>(IQueryable<TSource> q, DataTablesParam dataTableParam,
22-
Func<TSource, TTransform> transform, ArrayOutputType? arrayOutput = null)
21+
public static DataTablesResult<TSource> Create<TSource, TTransform>(IQueryable<TSource> q, DataTablesParam dataTableParam, Func<TSource, TTransform> transform)
2322
{
2423
var result = new DataTablesResult<TSource>(q, dataTableParam);
25-
2624
result.Data = result.Data
2725
.Transform<TSource, Dictionary<string, object>>(row => TransformTypeInfo.MergeTransformValuesIntoDictionary(transform, row))
28-
.Transform<Dictionary<string, object>, Dictionary<string, object>>(StringTransformers.StringifyValues);
29-
30-
result.Data = ApplyOutputRules(result.Data, arrayOutput);
26+
.Transform<Dictionary<string, object>, Dictionary<string, object>>(StringTransformers.StringifyValues)
27+
.Transform<Dictionary<string, object>, object[]>(d => d.Values.ToArray());
3128

3229
return result;
3330
}
3431

35-
public static DataTablesResult<TSource> Create<TSource>(IQueryable<TSource> q, DataTablesParam dataTableParam,
36-
ArrayOutputType? arrayOutput = null)
32+
public static DataTablesResult<TSource> Create<TSource>(IQueryable<TSource> q, DataTablesParam dataTableParam)
3733
{
3834
var result = new DataTablesResult<TSource>(q, dataTableParam);
3935

4036
result.Data = result.Data
4137
.Transform<TSource, Dictionary<string, object>>(DataTablesTypeInfo<TSource>.ToDictionary)
42-
.Transform<Dictionary<string, object>, Dictionary<string, object>>(StringTransformers.StringifyValues);
43-
44-
result.Data = ApplyOutputRules(result.Data, arrayOutput);
45-
38+
.Transform<Dictionary<string, object>, Dictionary<string, object>>(StringTransformers.StringifyValues)
39+
.Transform<Dictionary<string, object>, object[]>(d => d.Values.ToArray()); ;
4640
return result;
4741
}
4842

49-
private static DataTablesData ApplyOutputRules(DataTablesData sourceData, ArrayOutputType? arrayOutput = null)
50-
{
51-
DataTablesData outputData = sourceData;
52-
53-
switch (arrayOutput)
54-
{
55-
case ArrayOutputType.ArrayOfObjects:
56-
// Nothing is needed
57-
break;
58-
case ArrayOutputType.BiDimensionalArray:
59-
default:
60-
outputData = sourceData.Transform<Dictionary<string, object>, object[]>(d => d.Values.ToArray());
61-
break;
62-
}
63-
64-
return outputData;
65-
}
6643

6744
/// <param name="transform">Should be a Func<T, TTransform></param>
68-
public static DataTablesResult Create(IQueryable queryable, DataTablesParam dataTableParam, object transform,
69-
ArrayOutputType? arrayOutput = null)
45+
public static DataTablesResult Create(IQueryable queryable, DataTablesParam dataTableParam, object transform)
7046
{
7147
var s = "Create";
7248
var openCreateMethod = typeof(DataTablesResult).GetMethods().Single(x => x.Name == s && x.GetGenericArguments().Count() == 2);
7349
var queryableType = queryable.GetType().GetGenericArguments()[0];
7450
var transformType = transform.GetType().GetGenericArguments()[1];
7551
var closedCreateMethod = openCreateMethod.MakeGenericMethod(queryableType, transformType);
76-
return (DataTablesResult)closedCreateMethod.Invoke(null, new object[] { queryable, dataTableParam, transform, arrayOutput });
52+
return (DataTablesResult)closedCreateMethod.Invoke(null, new object[] { queryable, dataTableParam, transform });
7753
}
7854

79-
public static DataTablesResult Create(IQueryable queryable, DataTablesParam dataTableParam,
80-
ArrayOutputType? arrayOutput = null)
55+
public static DataTablesResult Create(IQueryable queryable, DataTablesParam dataTableParam)
8156
{
8257
var s = "Create";
8358
var openCreateMethod = typeof(DataTablesResult).GetMethods().Single(x => x.Name == s && x.GetGenericArguments().Count() == 1);
8459
var queryableType = queryable.GetType().GetGenericArguments()[0];
8560
var closedCreateMethod = openCreateMethod.MakeGenericMethod(queryableType);
86-
return (DataTablesResult)closedCreateMethod.Invoke(null, new object[] { queryable, dataTableParam, arrayOutput });
61+
return (DataTablesResult)closedCreateMethod.Invoke(null, new object[] { queryable, dataTableParam });
8762
}
8863

89-
public static DataTablesResult<T> CreateResultUsingEnumerable<T>(IEnumerable<T> q, DataTablesParam dataTableParam,
90-
ArrayOutputType? arrayOutput = null)
64+
public static DataTablesResult<T> CreateResultUsingEnumerable<T>(IEnumerable<T> q, DataTablesParam dataTableParam)
9165
{
92-
return Create(q.AsQueryable(), dataTableParam, arrayOutput);
66+
return Create(q.AsQueryable(), dataTableParam);
9367
}
68+
9469
}
9570

71+
9672
public class DataTablesResult<TSource> : DataTablesResult
9773
{
74+
9875
public DataTablesData Data { get; set; }
9976

10077
internal DataTablesResult(IQueryable<TSource> q, DataTablesParam dataTableParam)
@@ -110,20 +87,18 @@ public override void ExecuteResult(ControllerContext context)
11087
{
11188
if (context == null)
11289
throw new ArgumentNullException("context");
113-
11490
HttpResponseBase response = context.HttpContext.Response;
11591

11692
var scriptSerializer = new JavaScriptSerializer()
11793
{
11894
MaxJsonLength = int.MaxValue
11995
};
120-
12196
response.Write(scriptSerializer.Serialize(this.Data));
12297
}
12398

12499
DataTablesData GetResults(IQueryable<TSource> data, DataTablesParam param)
125100
{
126-
var totalRecords = data.Count(); // annoying this, as it causes an extra evaluation..
101+
var totalRecords = data.Count(); //annoying this, as it causes an extra evaluation..
127102

128103
var filters = new DataTablesFiltering();
129104

@@ -134,6 +109,7 @@ DataTablesData GetResults(IQueryable<TSource> data, DataTablesParam param)
134109

135110
var skipped = filteredData.Skip(param.iDisplayStart);
136111
var page = (param.iDisplayLength <= 0 ? skipped : skipped.Take(param.iDisplayLength)).ToArray();
112+
137113

138114
var result = new DataTablesData
139115
{
@@ -145,5 +121,7 @@ DataTablesData GetResults(IQueryable<TSource> data, DataTablesParam param)
145121

146122
return result;
147123
}
124+
125+
148126
}
149127
}

Mvc.JQuery.Datatables/Models/ArrayOutputType.cs

Lines changed: 0 additions & 9 deletions
This file was deleted.

Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@
8282
<Compile Include="DataTablesFiltering.cs" />
8383
<Compile Include="DataTablesFilterAttribute.cs" />
8484
<Compile Include="LengthMenuVm.cs" />
85-
<Compile Include="Models\ArrayOutputType.cs" />
8685
<Compile Include="Models\ColDef.cs" />
8786
<Compile Include="ColumnFilterSettingsVm.cs" />
8887
<Compile Include="DataTablesAttribute.cs" />
@@ -123,11 +122,25 @@
123122
<EmbeddedResource Include="..\Mvc.JQuery.Datatables.Templates\Views\Shared\DataTable.cshtml">
124123
<Link>Views\Shared\DataTable.cshtml</Link>
125124
</EmbeddedResource>
125+
<EmbeddedResource Include="..\Mvc.JQuery.Datatables.Templates\Content\jquery-datatables-column-filter\media\js\jquery.dataTables.columnFilter.js">
126+
<Link>Content\jquery-datatables-column-filter\media\js\jquery.dataTables.columnFilter.js</Link>
127+
</EmbeddedResource>
128+
<EmbeddedResource Include="..\Mvc.JQuery.Datatables.Templates\Content\jquery-datatables-column-filter\jquery-ui-timepicker-addon.css">
129+
<Link>Content\jquery-datatables-column-filter\jquery-ui-timepicker-addon.css</Link>
130+
</EmbeddedResource>
131+
<EmbeddedResource Include="..\Mvc.JQuery.Datatables.Templates\Content\jquery-datatables-column-filter\jquery-ui-timepicker-addon.js">
132+
<Link>Content\jquery-datatables-column-filter\jquery-ui-timepicker-addon.js</Link>
133+
</EmbeddedResource>
134+
<EmbeddedResource Include="..\Mvc.JQuery.Datatables.Templates\Content\jquery-datatables-column-filter\media\js\jquery.dataTables.columnFilter.css">
135+
<Link>Content\jquery-datatables-column-filter\media\js\jquery.dataTables.columnFilter.css</Link>
136+
</EmbeddedResource>
126137
<Content Include="RegisterDatatablesModelBinder.cs.pp" />
127138
<None Include="packages.config" />
128139
<None Include="Views\Web.config" />
129140
</ItemGroup>
130-
<ItemGroup />
141+
<ItemGroup>
142+
<Folder Include="Scripts\" />
143+
</ItemGroup>
131144
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
132145
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
133146
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

0 commit comments

Comments
 (0)