/// <summary> /// Creates GridModel for added row /// </summary> /// <typeparam name="TModel">Wrapper model type</typeparam> /// <param name="expression">Grid selector targeted for wrapping</param> /// <param name="rows">Added rows</param> /// <returns>Wrapper model</returns> public BsGridModel <TRow> ToBsGridViewModel(List <TRow> rows) { var grid = new BsGridModel <TRow> { Items = rows }; return(grid); }
public BsGridHtmlBuilder(string fullName, BsGridModel <TRow> model, ModelMetadata metadata, ViewContext viewContext) : base(viewContext) { this.renderer = new BsGridBaseRenderer <TModel, TRow>(this); this.fullName = fullName; this.model = model; this.metadata = metadata; this.SetColumnsFromModel(); }
/// <summary> /// Creates GridModel for added row /// </summary> /// <typeparam name="TModel">Wrapper model type</typeparam> /// <param name="expression">Grid selector targeted for wrapping</param> /// <param name="row">Added row</param> /// <returns>Wrapper model</returns> public BsGridModel <TRow> ToBsGridViewModel(TRow row) { var grid = new BsGridModel <TRow> { Items = new List <TRow> { row } }; return(grid); }
private void SwitchOrderType(BsGridModel <TRow> result) { foreach (var orderItem in result.BaseSettings.OrderableColumns) { if (orderItem.Type == BsOrderType.Descending) { orderItem.Type = BsOrderType.Ascending; } else if (orderItem.Type == BsOrderType.Ascending) { orderItem.Type = BsOrderType.Descending; } } }
public BsGridModel <TRow> ToBsGridViewModel(TRow row, bool getDetails) { if (getDetails) { this.FillDetails(row); } var grid = new BsGridModel <TRow> { Items = new List <TRow> { row } }; return(grid); }
private void SetResult <TValue>(BsGridModel <TRow> result, IQueryable <TEntity> basicQuery, BsGridBaseRepositorySettings settings, Expression <Func <TEntity, TValue> > uniqueIdSelector) { var totalRecords = basicQuery.Select(x => false).Count(); if (totalRecords > 0) { var pager = new BsPagerModel(totalRecords, this.settings.PageSize, this.settings.Page); IEnumerable <TRow> finalQuery = null; if (totalRecords > 1) { var orderedQuery = this.OrderQuery(basicQuery); if (settings.OrderableColumns.Any(c => c.Type == BsOrderType.Descending)) { orderedQuery = orderedQuery.ThenByDescending(uniqueIdSelector); } else { orderedQuery = orderedQuery.ThenBy(uniqueIdSelector); } var pagedQuery = orderedQuery.Skip(pager.PageSize * (pager.CurrentPage - 1)).Take(pager.PageSize); finalQuery = this.MapQuery(pagedQuery); } else { finalQuery = this.MapQuery(basicQuery); } // get items for current page result.Items = finalQuery.ToList(); //sets pager pager.CurrentPageRecords = result.Items.Count(); result.Pager = pager; } else { result.Items = new List <TRow>(); } }
/// <summary> /// Creates GridModel based on Query, OrderQuery and MapQuery /// </summary> /// <param name="settings">Requested settings</param> /// <returns>Grid model</returns> public virtual BsGridModel <TRow> ToBsGridViewModel <TValue>(BsGridBaseRepositorySettings settings, Expression <Func <TEntity, TValue> > uniqueIdSelector) { this.settings = settings; var result = new BsGridModel <TRow>(); //creates basic query var basicQuery = this.Query(); //add column order result.BaseSettings.OrderColumns = settings.OrderColumns; //add orderable columns result.BaseSettings.OrderableColumns = settings.OrderableColumns; this.orderedQueryBuilder = new OrderedQueryBuilder <TRow>(this.settings.OrderableColumns); if (this.settings.GoTo.HasValue) { this.SetNoOffsetResult(result, basicQuery, settings, uniqueIdSelector); } else { this.SetResult(result, basicQuery, settings, uniqueIdSelector); } if (settings.DetailsAll || settings.DetailsCount > 0) { for (var i = 0; i < result.Pager.CurrentPageRecords; i++) { if (settings.HasDetails(i)) { var row = result.Items.ElementAt(i); this.FillDetails(row); } } } //sets base settings result.BaseSettings = this.settings.GetBase(); return(result); }
public BsGridModel <TRow> ToBsGridViewModel <TValue>(List <TRow> rows, Expression <Func <TRow, TValue> > rowExpression, List <BsGridRowData <TValue> > rowsSettings) { foreach (var row in rows) { var rowProp = rowExpression.GetPropertyInfo(); var rowIdentifier = (TValue)rowProp.GetValue(row); if (rowsSettings.Any(x => x.Id.Equals(rowIdentifier) && x.GetDetails)) { this.FillDetails(row); } } var grid = new BsGridModel <TRow> { Items = rows }; return(grid); }
private void SetNoOffsetResult <TValue>(BsGridModel <TRow> result, IQueryable <TEntity> basicQuery, BsGridBaseRepositorySettings settings, Expression <Func <TEntity, TValue> > uniqueIdSelector) { var pager = new BsPagerModel { PageSize = settings.PageSize }; IEnumerable <TRow> finalQuery = new List <TRow>(); pager.GoTo = settings.GoTo.Value; if (settings.GoTo.Value == BsDirectionType.Last) { this.SwitchOrderType(result); } var orderedPagerQuery = this.OrderAndPaginate(basicQuery, uniqueIdSelector); if (settings.GoTo.Value == BsDirectionType.Last) { this.SwitchOrderType(result); } var pagedQuery = this.OrderQuery(orderedPagerQuery.Take(pager.PageSize)); pagedQuery = this.OrderByUniqueId(pagedQuery, uniqueIdSelector); finalQuery = this.MapQuery(pagedQuery); result.Items = finalQuery.ToList(); result.Pager = pager; result.Pager.CurrentPageRecords = result.Items.Count(); result.Pager.TotalRecords = result.Pager.CurrentPageRecords; }
/// <summary> /// Helper for wrapping grid /// </summary> /// <typeparam name="TModel">Wrapper model type</typeparam> /// <param name="expression">Grid selector targeted for wrapping</param> /// <param name="grid">Grid object</param> /// <returns>Wrapper model</returns> private static TModel SetGridProperty <TModel>(Expression <Func <TModel, BsGridModel <TRow> > > expression, BsGridModel <TRow> grid) where TModel : new() { var model = new TModel(); var gridProp = expression.GetPropertyInfo(); gridProp.SetValue(model, grid); return(model); }
/// <summary> /// Creates GridModel based on Query, OrderQuery and MapQuery /// </summary> /// <param name="settings">Requested settings</param> /// <returns>Grid model</returns> public virtual BsGridModel <TRow> ToBsGridViewModel(BsGridBaseRepositorySettings settings) { this.settings = settings; var result = new BsGridModel <TRow>(); //creates basic query var basicQuery = this.Query(); //performs count var totalRecords = basicQuery.Select(x => false).Count(); //add column order result.BaseSettings.OrderColumns = settings.OrderColumns; //add orderable columns result.BaseSettings.OrderableColumns = settings.OrderableColumns; if (totalRecords > 0) { var pager = new BsPagerModel(totalRecords, this.settings.PageSize, this.settings.Page); IEnumerable <TRow> finalQuery = null; if (totalRecords > 1) { this.orderedQueryBuilder = new OrderedQueryBuilder <TRow>(this.settings.OrderableColumns); var orderedQuery = this.OrderQuery(basicQuery); var pagedQuery = orderedQuery.Skip(pager.PageSize * (pager.CurrentPage - 1)).Take(pager.PageSize); finalQuery = this.MapQuery(pagedQuery); } else { finalQuery = this.MapQuery(basicQuery); } // get items for current page result.Items = finalQuery.ToList(); //sets pager pager.CurrentPageRecords = result.Items.Count(); result.Pager = pager; if (settings.DetailsAll || settings.DetailsCount > 0) { for (var i = 0; i < pager.CurrentPageRecords; i++) { if (settings.HasDetails(i)) { var row = result.Items.ElementAt(i); this.FillDetails(row); } } } } else { result.Items = new List <TRow>(); } //sets base settings result.BaseSettings = this.settings.GetBase(); return(result); }