public override void Init(TagHelperContext tagContext) { if (tagContext.Items.ContainsKey(typeof(NccGridTagContext))) { _nccTagContext = (NccGridTagContext)tagContext.Items[typeof(NccGridTagContext)]; } else { throw new Exception("GridViewNccTagContext was lost between tags..."); } }
public override void Init(TagHelperContext tagContext) { if (tagContext.Items.ContainsKey(typeof(NccGridTagContext))) { _nccTagContext = (NccGridTagContext)tagContext.Items[typeof(NccGridTagContext)]; } else { _nccTagContext = new NccGridTagContext(); tagContext.Items.Add(typeof(NccGridTagContext), _nccTagContext); } }
public static TagBuilder BuildTableHtml(NccGridTagContext context, NccGridContext gridContext) { var table = new TagBuilder("table"); table.Attributes.Add("class", !string.IsNullOrEmpty(context.CssClassGrid) ? context.CssClassGrid : "table"); table.InnerHtml.AppendHtml(BuildTableHeader(context)); table.InnerHtml.AppendHtml(BuildTableBody(context)); //if (gridContext.AllowPaging) // table.InnerHtml.AppendHtml(BuildTablePager(context, gridContext)); return(table); }
private static TagBuilder BuildTableHeader(NccGridTagContext context) { var tableHeader = new TagBuilder("thead"); if (!string.IsNullOrEmpty(context.GridHeader.CssClass)) { tableHeader.Attributes.Add("class", context.GridHeader.CssClass); } foreach (var headerCell in context.GridHeader.Cells) { var th = new TagBuilder("th"); th.InnerHtml.AppendHtml(headerCell.Value); tableHeader.InnerHtml.AppendHtml(th); } return(tableHeader); }
private static TagBuilder BuilPagerLink(int pageNumber, NccActionModel model, NccGridTagContext context, string htmlContent = null, bool active = false, bool disabled = false) { var li = new TagBuilder("li"); if (!string.IsNullOrEmpty(context.CssClassPagerLi)) { li.Attributes.Add("class", context.CssClassPagerLi); } var link = new TagBuilder("a") { Attributes = { { "name", "pageNumber" }, { "value", pageNumber.ToString() }, { "onclick", $"nccAction(null, $(this), '{JsonConvert.SerializeObject(model)}', '{NccConstants.AttributePrefix}');" } } }; link.InnerHtml.Append(string.IsNullOrEmpty(htmlContent) ? pageNumber.ToString() : htmlContent); if (active) { if (li.Attributes.ContainsKey("class")) { li.Attributes["class"] = li.Attributes["class"] + " active"; } else { li.Attributes.Add("class", "active"); } } else if (!disabled) { link.Attributes.Add("style", "cursor: pointer;"); } if (!string.IsNullOrEmpty(context.CssClassPagerA)) { link.Attributes.Add("class", context.CssClassPagerA); } if (disabled) { if (li.Attributes.ContainsKey("class")) { li.Attributes["class"] = li.Attributes["class"] + " disabled"; } else { li.Attributes.Add("class", "disabled"); } link.Attributes.Remove("onclick"); } li.InnerHtml.AppendHtml(link); return(li); }
public static TagBuilder BuildTablePager(NccGridTagContext context, NccGridContext gridContext) { var pageSize = gridContext.PageSize; if (gridContext.Filters.ContainsKey("pageSize")) { pageSize = Convert.ToInt32(gridContext.Filters["pageSize"]); } var totalPages = gridContext.TotalItems % pageSize > 0 ? gridContext.TotalItems / pageSize + 1 : gridContext.TotalItems / pageSize; if (totalPages <= 1) { return(null); } var model = new NccActionModel { TargetIds = new [] { gridContext.Id } }; model.Parameters.Add($"{DefaultParameters.ActionType.ToString().NccAddPrefix()}", "Filter"); var footerContainerDiv = new TagBuilder("div") { Attributes = { { "class", context.CssClassFooterContainer ?? "row" } } }; var divColLeft = new TagBuilder("div") { Attributes = { { "class", "col-sm-12 col-md-6" } } }; var divColRight = new TagBuilder("div") { Attributes = { { "class", "col-sm-12 col-md-6" } } }; var divRecordCount = new TagBuilder("div"); if (!string.IsNullOrEmpty(context.CssClassRecordCountDiv)) { divRecordCount.Attributes.Add("class", context.CssClassRecordCountDiv); } //TODO: Add RecordCount html var div = new TagBuilder("div") { Attributes = { { "class", context.CssClassPagerDiv ?? "nccGridPagerContainer" } } }; var ul = new TagBuilder("ul") { Attributes = { { "class", context.CssClassPagerUl ?? "nccGridPagerPagination" } } }; var firstLink = BuilPagerLink(1, model, context, "<<", false, gridContext.PageNumber == 1); var prevLink = BuilPagerLink(gridContext.PageNumber - 1, model, context, "<", false, gridContext.PageNumber == 1); ul.InnerHtml.AppendHtml(firstLink); ul.InnerHtml.AppendHtml(prevLink); var nextLink = BuilPagerLink(gridContext.PageNumber + 1, model, context, ">", false, gridContext.PageNumber == totalPages); var lastLink = BuilPagerLink(totalPages, model, context, ">>", false, gridContext.PageNumber == totalPages); var navSize = gridContext.PagerNavigationSize >= totalPages ? totalPages : gridContext.PagerNavigationSize; var linksBefore = navSize / 2 < gridContext.PageNumber ? navSize / 2 : gridContext.PageNumber - 1; var linksAfter = navSize / 2 <= totalPages - gridContext.PageNumber ? navSize - linksBefore : totalPages - gridContext.PageNumber; if (navSize / 2 > linksAfter) { linksBefore = linksBefore + (navSize / 2 - linksAfter); } if (navSize % 2 == 0) { if (linksBefore > 0 && linksBefore >= navSize / 2) { linksBefore--; } else { linksAfter--; } } else if (navSize < linksBefore + linksAfter + 1) { linksAfter--; } for (var i = 0; i < linksBefore; i++) { var link = BuilPagerLink(gridContext.PageNumber - linksBefore + i, model, context); ul.InnerHtml.AppendHtml(link); } ul.InnerHtml.AppendHtml(BuilPagerLink(gridContext.PageNumber, model, context, null, true)); for (var i = 0; i < linksAfter; i++) { var link = BuilPagerLink(gridContext.PageNumber + i + 1, model, context); ul.InnerHtml.AppendHtml(link); } ul.InnerHtml.AppendHtml(nextLink); ul.InnerHtml.AppendHtml(lastLink); div.InnerHtml.AppendHtml(ul); if (gridContext.GridPagerPosition == NccGridPagerPositionEnum.Left) { divColLeft.InnerHtml.AppendHtml(div); if (gridContext.ShowRecordsCount && gridContext.GridRecordCountPosition == NccGridPagerPositionEnum.Left) { divColLeft.InnerHtml.AppendHtml(divRecordCount); } else if (gridContext.ShowRecordsCount && gridContext.GridRecordCountPosition == NccGridPagerPositionEnum.Right) { divColRight.InnerHtml.AppendHtml(divRecordCount); } } else { if (gridContext.ShowRecordsCount && gridContext.GridRecordCountPosition == NccGridPagerPositionEnum.Left) { divColLeft.InnerHtml.AppendHtml(divRecordCount); } else if (gridContext.ShowRecordsCount && gridContext.GridRecordCountPosition == NccGridPagerPositionEnum.Right) { divColRight.InnerHtml.AppendHtml(divRecordCount); } divColRight.InnerHtml.AppendHtml(div); } if (gridContext.ShowRecordsCount && string.IsNullOrEmpty(context.PagerRecordsCountContent)) { var firstRecord = pageSize * (gridContext.PageNumber - 1) + 1; var lastRecord = pageSize * (gridContext.PageNumber - 1) + pageSize; if (lastRecord > gridContext.TotalItems) { lastRecord = gridContext.TotalItems; } divRecordCount.InnerHtml.AppendHtml(string.Format($"<span>{gridContext.GridRecordsTemplate}</span>", firstRecord, lastRecord, gridContext.TotalItems)); } footerContainerDiv.InnerHtml.AppendHtml(divColLeft); footerContainerDiv.InnerHtml.AppendHtml(divColRight); return(footerContainerDiv); }
private static TagBuilder BuildTableBody(NccGridTagContext context) { var gridContent = context.GridRows; var tableBody = new TagBuilder("tbody"); if (!string.IsNullOrEmpty(context.CssClassBody)) { tableBody.Attributes.Add("class", context.CssClassBody); } if (gridContent != null && gridContent.Count > 0) { for (var i = 0; i < gridContent.Count; i++) { var row = gridContent[i]; var tr = new TagBuilder("tr"); if (!string.IsNullOrEmpty(row.CssClass)) { tr.Attributes.Add("class", row.CssClass); } for (var j = 0; j < row.Cells.Count; j++) { var cell = row.Cells[j]; if (!cell.Aggregate) { var td = new TagBuilder("td"); if (!string.IsNullOrEmpty(cell.CssClass)) { td.Attributes.Add("class", cell.CssClass); } td.InnerHtml.AppendHtml(cell.Value); tr.InnerHtml.AppendHtml(td); } else { if (i == 0 || !(i > 0 && gridContent[i - 1].Cells[j].Value.GetContent() == cell.Value.GetContent())) { var sameCount = 1; while (i + sameCount < gridContent.Count && gridContent[i + sameCount].Cells[j].Value.GetContent() == cell.Value.GetContent()) { sameCount++; } var td = new TagBuilder("td"); if (!string.IsNullOrEmpty(cell.CssClass)) { td.Attributes.Add("class", cell.CssClass); } if (sameCount > 0) { td.Attributes.Add("rowspan", sameCount.ToString()); } td.InnerHtml.AppendHtml(cell.Value); tr.InnerHtml.AppendHtml(td); } } } tableBody.InnerHtml.AppendHtml(tr); } } else if (context.EmptyRow != null) { var tr = new TagBuilder("tr"); if (!string.IsNullOrEmpty(context.EmptyRow.CssClass)) { tr.Attributes.Add("class", context.EmptyRow.CssClass); } var emptyCell = context.EmptyRow.Cells.FirstOrDefault(); var td = new TagBuilder("td") { Attributes = { { "colspan", context.ColCount.ToString() } } }; if (!string.IsNullOrEmpty(emptyCell.CssClass)) { td.Attributes.Add("class", emptyCell.CssClass); } td.InnerHtml.AppendHtml(emptyCell.Value); tr.InnerHtml.AppendHtml(td); tableBody.InnerHtml.AppendHtml(tr); } return(tableBody); }
public override void Init(TagHelperContext tagContext) { _nccTagContext = new NccGridTagContext(); tagContext.Items.Add(typeof(NccGridTagContext), _nccTagContext); }