public static IGridColumn <T> AddActionLink <T>(this IGridColumnsOf <T> columns, String action, String iconClass) where T : class { return(columns .Add(model => GetLink(columns.Grid.ViewContext, model, action, iconClass)) .Css("action-cell") .Encoded(false)); }
public static IGridColumn <T> AddProperty <T, TProperty>(this IGridColumnsOf <T> columns, Expression <Func <T, TProperty> > expression) { return(columns .Add(expression) .Css(GetCssClassFor <TProperty>()) .Titled(ResourceProvider.GetPropertyTitle(expression))); }
public static IGridColumn <T, TProperty> AddProperty <T, TProperty>(this IGridColumnsOf <T> columns, Expression <Func <T, TProperty> > expression) { return(columns .Add(expression) .Named(NameFor(expression)) .Css(CssClassFor <TProperty>()) .Titled(Resource.ForProperty(expression))); }
public static IGridColumn <T, Boolean> AddBoolean <T>(this IGridColumnsOf <T> columns, Expression <Func <T, Boolean> > expression) { Func <T, Boolean> valueFor = expression.Compile(); return(columns .AddProperty(expression) .RenderedAs(model => valueFor(model) ? Resource.ForString("Yes") : Resource.ForString("No"))); }
public MvcGridExtensionsTests() { Grid <AllTypesView> grid = new Grid <AllTypesView>(new AllTypesView[0]); IHtmlHelper htmlHelper = HtmlHelperFactory.CreateHtmlHelper(); html = new HtmlGrid <AllTypesView>(htmlHelper, grid); columns = new GridColumns <AllTypesView>(grid); }
public static IGridColumn <T, Boolean> AddBooleanProperty <T>(this IGridColumnsOf <T> columns, Expression <Func <T, Boolean> > expression) { Func <T, Boolean> valueFor = expression.Compile(); return(columns .AddProperty(expression) .RenderedAs(model => valueFor(model) ? Strings.Yes : Strings.No)); }
public static IGridColumn <T, IHtmlContent> AddActionLink <T>(this IGridColumnsOf <T> columns, String action, String iconClass) where T : class { if (!IsAuthorizedTo(columns.Grid.ViewContext, action)) { return(new GridColumn <T, IHtmlContent>(columns.Grid, model => null)); } return(columns.Add(model => GetLink(columns.Grid.ViewContext, model, action, iconClass)).Css("action-cell")); }
public MvcGridExtensionsTests() { Grid <AllTypesView> grid = new Grid <AllTypesView>(Array.Empty <AllTypesView>()); IHtmlHelper htmlHelper = HtmlHelperFactory.CreateHtmlHelper(); html = new HtmlGrid <AllTypesView>(htmlHelper, grid); columns = new GridColumns <AllTypesView>(grid); context = html.Grid.ViewContext !; }
public void Grid_SetsColumns() { Grid <GridModel> grid = new Grid <GridModel>(Array.Empty <GridModel>()); IGridColumnsOf <GridModel> expected = new GridColumns <GridModel>(grid); IGridColumnsOf <GridModel> actual = grid.Columns; Assert.Same(expected.Grid, actual.Grid); Assert.Equal(expected, actual); }
public static IGridColumn <T> AddActionLink <T>(this IGridColumnsOf <T> columns, String action, String iconClass) where T : class { if (!IsAuthorizedToView(columns.Grid, action)) { return(new GridColumn <T, String>(columns.Grid, model => "")); } return(columns .Add(model => GetLink(columns.Grid, model, action, iconClass)) .Css("action-cell") .Encoded(false)); }
public static void AddSorting <T>(this IGridColumnsOf <T> gridColumn) where T : ISortable { gridColumn.Add(m => m.Order) .RenderedAs(m => { var type = (m.GetType().Namespace ?? "").StartsWith("Castle.Proxies") ? m.GetType().BaseType : m.GetType(); return("<button data-key=\"" + m.Id + "\" data-model=\"" + type?.FullName + "\" class=\"btn-link p-0 m-0 bg-transparent border-0 sort-handle\" type=\"button\"><i class=\"fas fa-sort\"></i></button>"); }) .Titled("").Encoded(false).CssClasses = "p-2"; }
public static void AddActions <T>(this IGridColumnsOf <T> gridColumn, Action <IActionBuilder <T> > action) { var viewContext = gridColumn.Grid.ViewContext; var httpContext = viewContext?.HttpContext; gridColumn.Add().RenderedAs(m => { var builder = new ActionBuilder <T>(m, httpContext, httpContext?.RequestServices.GetService <LinkGenerator>(), viewContext?.RouteData.Values["controller"]?.ToString()); action(builder); return(builder.Html); }).Encoded(false).CssClasses = "p-2 w-1 white-space-nowrap align-middle"; }
public static IGridColumn <T> AddBooleanProperty <T>(this IGridColumnsOf <T> columns, Expression <Func <T, Boolean?> > expression) { Func <T, Boolean?> valueFor = expression.Compile(); return(columns .AddProperty(expression) .RenderedAs(model => valueFor(model) != null ? valueFor(model) == true ? TableResources.Yes : TableResources.No : "")); }
public void Build_Columns() { IGridColumnsOf <GridModel> expected = htmlGrid.Grid.Columns; Boolean builderCalled = false; htmlGrid.Build(actual => { Assert.Same(expected, actual); builderCalled = true; }); Assert.True(builderCalled); }
public static IGridColumn <T, Boolean?> AddBooleanProperty <T>(this IGridColumnsOf <T> columns, Expression <Func <T, Boolean?> > expression) { Func <T, Boolean?> valueFor = expression.Compile(); return(columns .AddProperty(expression) .MultiFilterable(false) .RenderedAs(model => valueFor(model) != null ? valueFor(model) == true ? Strings.Yes : Strings.No : "")); }
public static void AddActivating <T>(this IGridColumnsOf <T> gridColumn) where T : IActivable { gridColumn.Add() .RenderedAs(m => { var type = (m.GetType().Namespace ?? "").StartsWith("Castle.Proxies") ? m.GetType().BaseType : m.GetType(); return(string.Format( "<a data-key=\"" + m.Id + "\" data-model=\"" + type?.FullName + "\" class=\"activable {0}\" href=\"\"><i class=\"fas fa-lg fa-toggle-on {1}\"></i></a>", m.Active ? "activated" : "deactivated", !m.Active ? "fa-rotate-180" : "")); }) .Encoded(false).CssClasses = "w-1 p-2"; }
public static IGridColumn <T, IHtmlContent> AddAction <T>(this IGridColumnsOf <T> columns, String action, String iconClass) where T : class { if (!IsAuthorizedFor(columns.Grid.ViewContext !, action)) { return(new GridColumn <T, IHtmlContent>(columns.Grid, model => HtmlString.Empty)); } IUrlHelperFactory?factory = columns.Grid.ViewContext?.HttpContext.RequestServices.GetService <IUrlHelperFactory>(); IUrlHelper? url = factory?.GetUrlHelper(columns.Grid.ViewContext); return(columns .Add(model => GenerateLink(model, url, action, iconClass)) .Css($"action-cell {action.ToLower()}")); }
public static IGridColumn <DataRow, object> FormatGridColumn(IGridColumnsOf <DataRow> columns, DataColumn dataColumn, Models.ReportGrid.Column columnInfo) { IGridColumn <DataRow, object> thisColumn; //If the column name specifies formats, we parse the values. if (square.IsMatch(dataColumn.ColumnName)) { var match = square.Match(dataColumn.ColumnName).Groups[0].Value; switch (match.ToLowerInvariant()) { case "[date]": DateTime dateTime; thisColumn = columns.Add(t => DateTime.TryParse(t.ItemArray[dataColumn.Ordinal].ToString(), out dateTime) ? dateTime : null as object).FilteredAs("date"); break; case "[time]": DateTime dateTimeTime; thisColumn = columns.Add(t => DateTime.TryParse(t.ItemArray[dataColumn.Ordinal].ToString(), out dateTimeTime) ? dateTimeTime : null as object).FilteredAs("date") .Formatted("{0:hh:mm tt}"); break; case "[int]": int intTemp; thisColumn = columns.Add(t => int.TryParse(t.ItemArray[dataColumn.Ordinal].ToString(), out intTemp) ? intTemp : null as object).FilteredAs("number") ; break; case "[double]": double doubleTemp; thisColumn = columns.Add(t => double.TryParse(t.ItemArray[dataColumn.Ordinal].ToString(), out doubleTemp) ? doubleTemp : null as object).FilteredAs("number") ; break; case "[currency]": decimal currencyTemp; thisColumn = columns.Add(t => decimal.TryParse(t.ItemArray[dataColumn.Ordinal].ToString(), out currencyTemp) ? currencyTemp : null as object).FilteredAs("number") .Formatted("{0:C}"); break; default: if (match.ToLowerInvariant().Contains("date") && curly.IsMatch(match)) { var matchedSq = curly.Match(match).Groups[0].Value; DateTime dateTimeTemp; thisColumn = columns.Add(t => DateTime.TryParse(t.ItemArray[dataColumn.Ordinal].ToString(), out dateTimeTemp) ? dateTimeTemp : null as object).FilteredAs("date") .Formatted(matchedSq); } else { thisColumn = columns.Add(t => t.ItemArray[dataColumn.Ordinal].ToString() as object).FilteredAs("text"); } break; } } else { thisColumn = columns.Add(t => t.ItemArray[dataColumn.Ordinal].ToString() as object).FilteredAs("text"); } thisColumn.Filterable(columnInfo.Filterable) .Sortable(columnInfo.Sortable) .Titled(!string.IsNullOrEmpty(columnInfo.Title) ? columnInfo.Title : square.Replace(dataColumn.ColumnName, "")) .Named(square.Replace(dataColumn.ColumnName, "").GetSanitizedName()); if (columnInfo.Filterable && columnInfo.FilterType.HasValue) { thisColumn.Filterable(columnInfo.FilterType.Value); if (columnInfo.UseFilterOptions) { thisColumn.UsingFilterOptions(); } } return(thisColumn); }
public static IGridColumn <T, IHtmlContent> AddAction <T>(this IGridColumnsOf <T> columns, Expression <Func <object, string> > href, string renderName) { return(columns.Add(model => GenerateLink(columns.Grid.ViewContext, href.Compile().Invoke(1), renderName))); }
public static IGridColumn <T, DateTime?> AddDateTimeProperty <T>(this IGridColumnsOf <T> columns, Expression <Func <T, DateTime?> > expression) { return(columns.AddProperty(expression).Formatted("{0:g}")); }
public static IGridColumn <T> AddProperty <T, TProperty>(this IGridColumnsOf <T> columns, Expression <Func <T, TProperty> > expression) { return(columns .Add(expression) .Css(GetCssClassFor <TProperty>())); }