Skip to content

Commit dd4138e

Browse files
authored
Merge pull request #1 from programcsharp/master
Update from main source
2 parents cf73479 + fecc860 commit dd4138e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+4864
-12219
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ obj/
3030
[Dd]ebug*/
3131
[Rr]elease*/
3232
Ankh.NoLoad
33+
.vs/
3334

3435
#Tooling
3536
_ReSharper*/

Build/CommonAssemblyInfo.cs

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Runtime.InteropServices;
33

44
[assembly: AssemblyProduct("Griddly")]
5-
[assembly: AssemblyCopyright("Copyright © 2015 Chris Hynes and Data Research Group")]
5+
[assembly: AssemblyCopyright("Copyright © 2013-2017 Chris Hynes and Data Research Group")]
66

77
[assembly: ComVisible(false)]
88

@@ -15,5 +15,6 @@
1515
//
1616
// You can specify all the values or you can default the Revision and Build Numbers
1717
// by using the '*' as shown below:
18-
[assembly: AssemblyVersion("1.2.4")]
19-
[assembly: AssemblyFileVersion("1.2.4")]
18+
[assembly: AssemblyVersion("1.8.1")]
19+
[assembly: AssemblyFileVersion("1.8.1")]
20+
//[assembly: AssemblyInformationalVersion("1.4.5-editlyalpha2")]

Build/Griddly.Core.nuspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<dependencies>
1616
<group>
1717
<dependency id="CsvHelper" version="2.4.0" />
18-
<dependency id="Dapper" version="1.13.0" />
18+
<dependency id="Dapper" version="1.50.2" />
1919
<dependency id="EPPlus" version="3.1.3.3" />
2020
</group>
2121
</dependencies>

Build/build.proj

+38-7
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
<!-- http://www.jeremyskinner.co.uk/2011/01/12/automating-nuget-package-creation-with-msbuild-and-powershell/ -->
2-
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="default">
2+
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0" DefaultTargets="default">
33
<PropertyGroup>
44
<BaseDir>$(MSBuildProjectDirectory)\..</BaseDir>
55
<Configuration Condition="'$(Configuration)'==''" >Release</Configuration>
66
<BuildDir>$(BaseDir)\Build</BuildDir>
77
<PackageDir>$(BuildDir)\Packages</PackageDir>
88
<SolutionFile>$(BaseDir)\Griddly.sln</SolutionFile>
99
<MSBuildExtensions>$(BaseDir)\.build\MSBuild.Community.Tasks.dll</MSBuildExtensions>
10+
<VisualStudioVersion>14.0</VisualStudioVersion>
1011
</PropertyGroup>
1112

1213
<UsingTask AssemblyFile="$(MSBuildExtensions)" TaskName="MSBuild.Community.Tasks.XmlUpdate" />
1314

1415
<Target Name="default" DependsOnTargets="Compile; Package" />
1516

1617
<Target Name="Compile">
17-
<MSBuild Projects="$(SolutionFile)" Properties="Configuration=$(Configuration)" />
18+
<MSBuild Projects="$(SolutionFile)" Properties="Configuration=$(Configuration);VisualStudioVersion=$(VisualStudioVersion)" />
1819
</Target>
1920

2021
<Target Name="Package">
@@ -24,8 +25,9 @@
2425
<ItemGroup>
2526
<Libs Include="$(BaseDir)\Griddly.Mvc\bin\$(Configuration)\Griddly.Mvc.dll" />
2627
<Content Include="$(BaseDir)\Griddly\**\griddly.js" />
28+
<Content Include="$(BaseDir)\Griddly\**\editly.js" />
2729
<Content Include="$(BaseDir)\Griddly\**\griddly.css" />
28-
<Content Include="$(BaseDir)\Griddly\**\Griddly\*.*" />
30+
<Content Include="$(BaseDir)\Griddly\**\Views\Shared\Griddly\*.*" />
2931
</ItemGroup>
3032

3133
<Exec Command="rd $(PackageDir) /s /q" />
@@ -41,28 +43,35 @@
4143
<Copy SourceFiles="@(Content)" DestinationFolder="$(PackageDir)\Griddly\content\%(RecursiveDir)" />
4244
<Copy SourceFiles="@(Libs)" DestinationFolder="$(PackageDir)\Griddly.Core\lib\net45\%(RecursiveDir)" />
4345

44-
<!-- Get the version number of the main FV assembly to insert into the nuspec files -->
46+
<!-- Get the version number of the main assembly to insert into the nuspec files -->
4547
<GetAssemblyIdentity AssemblyFiles="$(PackageDir)\Griddly.Core\lib\net45\Griddly.Mvc.dll">
4648
<Output TaskParameter="Assemblies" ItemName="AsmInfo" />
4749
</GetAssemblyIdentity>
50+
<GetAssemblyInformationalVersion AssemblyFile="$(PackageDir)\Griddly.Core\lib\net45\Griddly.Mvc.dll">
51+
<Output TaskParameter="Value" ItemName="AssemblyVersion" />
52+
</GetAssemblyInformationalVersion>
53+
<PropertyGroup>
54+
<AssemblyVersion Condition="@(AssemblyVersion) != ''">@(AssemblyVersion)</AssemblyVersion>
55+
<AssemblyVersion Condition="$(AssemblyVersion) == ''">%(AsmInfo.Version)</AssemblyVersion>
56+
</PropertyGroup>
4857

4958
<!-- insert the version number into the nuspec files -->
5059
<XmlUpdate
5160
Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"
5261
XmlFileName="$(PackageDir)\Griddly\Griddly.nuspec"
5362
XPath="/package/metadata/version"
54-
Value="%(AsmInfo.Version)" />
63+
Value="$(AssemblyVersion)" />
5564
<XmlUpdate
5665
Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"
5766
XmlFileName="$(PackageDir)\Griddly.Core\Griddly.Core.nuspec"
5867
XPath="/package/metadata/version"
59-
Value="%(AsmInfo.Version)" />
68+
Value="$(AssemblyVersion)" />
6069

6170
<XmlUpdate
6271
Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"
6372
XmlFileName="$(PackageDir)\Griddly\Griddly.nuspec"
6473
XPath="/package/metadata/dependencies/group/dependency[@id='Griddly.Core']/@version"
65-
Value="%(AsmInfo.Version)" />
74+
Value="$(AssemblyVersion)" />
6675

6776
<Exec WorkingDirectory="$(PackageDir)"
6877
Command="$(BaseDir)\.nuget\nuget.exe pack $(PackageDir)\Griddly\Griddly.nuspec" />
@@ -75,4 +84,26 @@
7584

7685
<Copy SourceFiles="@(OutputPackages)" DestinationFolder="$(PackageDir)"/>
7786
</Target>
87+
88+
<UsingTask TaskName="GetAssemblyInformationalVersion" TaskFactory="CodeTaskFactory"
89+
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
90+
<ParameterGroup>
91+
<AssemblyFile ParameterType="System.String" Required="true" />
92+
<Value ParameterType="System.String" Output="true" />
93+
</ParameterGroup>
94+
<Task>
95+
<Reference Include="System.Core" />
96+
<Using Namespace="System" />
97+
<Using Namespace="System.IO" />
98+
<Using Namespace="System.Diagnostics" />
99+
<Using Namespace="System.Reflection" />
100+
<Code Type="Fragment" Language="cs">
101+
<![CDATA[
102+
var attr = Attribute.GetCustomAttribute(Assembly.LoadFile(Path.GetFullPath(AssemblyFile)), typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute;
103+
104+
Value = attr != null ? attr.InformationalVersion : null;
105+
]]>
106+
</Code>
107+
</Task>
108+
</UsingTask>
78109
</Project>

Build/publish-nuget.ps1

+9-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,15 @@ $scriptpath = split-path -parent $MyInvocation.MyCommand.Path
55
msbuild $scriptpath/build.proj
66

77
Function Get-DropBox() {
8-
$hostFile = Join-Path (Split-Path (Get-ItemProperty HKCU:\Software\Dropbox).InstallPath) "host.db"
9-
$encodedPath = [System.Convert]::FromBase64String((Get-Content $hostFile)[1])
10-
[System.Text.Encoding]::UTF8.GetString($encodedPath)
8+
if (Test-Path "$HOMEPATH\Dropbox")
9+
{
10+
"$HOMEPATH\Dropbox"
11+
}
12+
else
13+
{
14+
$hostFile = Get-Content -raw -path "$env:LOCALAPPDATA\Dropbox\info.json" | ConvertFrom-Json
15+
$hostFile.personal.path
16+
}
1117
}
1218

1319
$dropbox = Get-DropBox

Griddly.Mvc/Griddly.Mvc.csproj

+5-2
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@
3939
<SpecificVersion>False</SpecificVersion>
4040
<HintPath>..\packages\CsvHelper.2.4.1\lib\net40-client\CsvHelper.dll</HintPath>
4141
</Reference>
42-
<Reference Include="Dapper">
43-
<HintPath>..\packages\Dapper.1.13\lib\net45\Dapper.dll</HintPath>
42+
<Reference Include="Dapper, Version=1.50.2.0, Culture=neutral, processorArchitecture=MSIL">
43+
<HintPath>..\packages\Dapper.1.50.2\lib\net45\Dapper.dll</HintPath>
44+
<Private>True</Private>
4445
</Reference>
4546
<Reference Include="EPPlus">
4647
<HintPath>..\packages\EPPlus.3.1.3.3\lib\net35\EPPlus.dll</HintPath>
@@ -92,6 +93,7 @@
9293
<Compile Include="Exceptions\DapperGriddlyException.cs" />
9394
<Compile Include="GriddlyFilterExtensions.cs" />
9495
<Compile Include="GriddlyHtmlFilter.cs" />
96+
<Compile Include="GriddlyExport.cs" />
9597
<Compile Include="InternalExtensions.cs" />
9698
<Compile Include="GriddlyButton.cs" />
9799
<Compile Include="GriddlyColumn.cs" />
@@ -111,6 +113,7 @@
111113
<Compile Include="Results\DapperResult.cs" />
112114
<Compile Include="Results\DapperSql2008Result.cs" />
113115
<Compile Include="Results\DapperSql2012Result.cs" />
116+
<Compile Include="Results\MapQueryableResult.cs" />
114117
<Compile Include="Results\QueryableResult.cs" />
115118
<Compile Include="SelectListItemGroup.cs" />
116119
<Compile Include="SortField.cs" />

Griddly.Mvc/GriddlyButton.cs

+16-5
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ public GriddlyButton(string additionalClassName = null)
1212

1313
Enabled = true;
1414
Action = GriddlyButtonAction.Navigate;
15-
ClearSelectionOnAction = true;
1615

1716
ClassName = ((GriddlySettings.DefaultButtonClassName ?? "") + " " + (additionalClassName ?? "")).Trim();
1817
}
@@ -23,12 +22,12 @@ public GriddlyButton(string additionalClassName = null)
2322
public bool Enabled { get; set; }
2423
public bool EnableOnSelection { get; set; }
2524
public bool IsSeparator { get; set; }
26-
public bool IsSplitDropdown { get; set; }
25+
public GriddlyDropdownCaret DropdownCaret { get; set; }
2726

2827
/// <summary>
29-
/// Clear the current row selections after this button is activated (default: true)
28+
/// Clear the current row selections after this button is activated (default: null). If null, will be determined during render -- true for ajax buttons and false otherwise.
3029
/// </summary>
31-
public bool ClearSelectionOnAction { get; set; }
30+
public bool? ClearSelectionOnAction { get; set; }
3231

3332
public string Text { get; set; }
3433
public string Title { get; set; }
@@ -37,7 +36,12 @@ public GriddlyButton(string additionalClassName = null)
3736
public string Target { get; set; }
3837
public string ConfirmMessage { get; set; }
3938
public bool AlignRight { get; set; }
40-
39+
40+
/// <summary>
41+
/// A function name to use to show the confirm message. Takes two parameters, message and callback. Callback is a function to call to continue the button click if the confirm was accepted.
42+
/// </summary>
43+
public string ConfirmPromptFunction { get; set; }
44+
4145
/// <summary>
4246
/// The row ids to include in the button action (default uses grid default)
4347
/// </summary>
@@ -91,4 +95,11 @@ public enum GriddlyButtonAction
9195
Modal,
9296
PostCriteria
9397
}
98+
99+
public enum GriddlyDropdownCaret
100+
{
101+
Inline = 0,
102+
Split,
103+
None
104+
}
94105
}

Griddly.Mvc/GriddlyColumn.cs

+79-2
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,48 @@
44
using System.Text.RegularExpressions;
55
using System.Web;
66
using System.Web.Helpers;
7+
using System.Web.Mvc;
8+
using System.Web.Routing;
79
using System.Web.WebPages;
810

911
namespace Griddly.Mvc
1012
{
1113
public abstract class GriddlyColumn
1214
{
15+
public GriddlyColumn()
16+
{
17+
HeaderHtmlAttributes = new RouteValueDictionary();
18+
19+
RenderMode = ColumnRenderMode.Both;
20+
}
21+
1322
public string Caption { get; set; }
1423
public string ExpressionString { get; set; }
1524
public string Format { get; set; }
1625
public SortDirection? DefaultSort { get; set; }
1726
public int DefaultSortOrder { get; set; }
1827
public string ClassName { get; set; }
1928
public string Width { get; set; }
20-
public bool IsExportOnly { get; set; }
29+
public ColumnRenderMode RenderMode { get; set; }
2130
public SummaryAggregateFunction? SummaryFunction { get; set; }
2231
public object SummaryValue { get; set; }
32+
public IDictionary<string, object> HeaderHtmlAttributes { get; set; }
2333

2434
public GriddlyFilter Filter { get; set; }
2535

36+
public abstract HtmlString RenderUnderlyingValue(object row);
2637
public abstract HtmlString RenderCell(object row, GriddlySettings settings, bool encode = true);
2738
public abstract object RenderCellValue(object row, bool stripHtml = false);
28-
public abstract string RenderClassName(object row, GriddlyResultPage page);
39+
40+
public virtual string RenderClassName(object row, GriddlyResultPage page)
41+
{
42+
return ClassName;
43+
}
44+
45+
public virtual IDictionary<string, object> GenerateHtmlAttributes(object row, GriddlyResultPage page)
46+
{
47+
return null;
48+
}
2949

3050
public virtual HtmlString RenderValue(object value, bool encode = true)
3151
{
@@ -59,7 +79,9 @@ public virtual HtmlString RenderValue(object value, bool encode = true)
5979
public class GriddlyColumn<TRow> : GriddlyColumn
6080
{
6181
public Func<TRow, object> Template { get; set; }
82+
public Func<TRow, object> UnderlyingValueTemplate { get; set; }
6283
public Func<TRow, string> ClassNameTemplate { get; set; }
84+
public Func<TRow, object> HtmlAttributesTemplate { get; set; }
6385

6486
static readonly Regex _htmlMatch = new Regex(@"<[^>]*>", RegexOptions.Compiled);
6587

@@ -89,6 +111,27 @@ public override string RenderClassName(object row, GriddlyResultPage page)
89111
return null;
90112
}
91113

114+
public override IDictionary<string, object> GenerateHtmlAttributes(object row, GriddlyResultPage page)
115+
{
116+
if (HtmlAttributesTemplate == null)
117+
return null;
118+
119+
RouteValueDictionary attributes = new RouteValueDictionary();
120+
121+
object value = HtmlAttributesTemplate((TRow)row);
122+
123+
if (value != null)
124+
{
125+
if (!(value is IDictionary<string, object>))
126+
value = HtmlHelper.AnonymousObjectToHtmlAttributes(value);
127+
128+
foreach (KeyValuePair<string, object> entry in (IDictionary<string, object>)value)
129+
attributes.Add(entry.Key, entry.Value);
130+
}
131+
132+
return attributes;
133+
}
134+
92135
public override HtmlString RenderCell(object row, GriddlySettings settings, bool encode = true)
93136
{
94137
object value = null;
@@ -116,6 +159,33 @@ public override HtmlString RenderCell(object row, GriddlySettings settings, bool
116159
return RenderValue(value, encode);
117160
}
118161

162+
public override HtmlString RenderUnderlyingValue(object row)
163+
{
164+
if (UnderlyingValueTemplate == null) return null;
165+
166+
object value = null;
167+
168+
try
169+
{
170+
value = UnderlyingValueTemplate((TRow)row);
171+
}
172+
catch (NullReferenceException)
173+
{
174+
// Eat
175+
}
176+
catch (Exception ex)
177+
{
178+
throw new InvalidOperationException("Error rendering underlying value or column \"" + Caption + "\"", ex);
179+
}
180+
181+
if (value == null)
182+
return null;
183+
else if (value is HtmlString)
184+
return (HtmlString)value;
185+
else
186+
return new HtmlString(value.ToString());
187+
}
188+
119189
public override object RenderCellValue(object row, bool stripHtml = false)
120190
{
121191
object value = null;
@@ -160,4 +230,11 @@ public enum SummaryAggregateFunction
160230
Min = 3,
161231
Max = 4
162232
}
233+
234+
public enum ColumnRenderMode
235+
{
236+
View = 1 << 0,
237+
Export = 1 << 1,
238+
Both = View | Export
239+
}
163240
}

0 commit comments

Comments
 (0)