public override void Process(TagHelperContext tagContext, TagHelperOutput output) { var model = new NccActionModel { TargetIds = NccFilterTargets.Split(',') }; model.Parameters.Add($"{DefaultParameters.ActionType.ToString().NccAddPrefix()}", "Filter"); if (string.IsNullOrEmpty(NccJsEvents)) { if (output.TagName.ToLower() == "select") { NccJsEvents = "onchange"; } else if (output.TagName == "input" && output.Attributes["type"]?.Value.ToString() == "text") { NccJsEvents = "onkeyup"; } else { NccJsEvents = "onclick"; } } foreach (var jsEvent in NccJsEvents.Replace(" ", "").Split(',')) { var existingJsEvent = ""; if (output.Attributes.ContainsName(jsEvent.ToLower())) { existingJsEvent = output.Attributes[jsEvent.ToLower()].Value.ToString(); } output.Attributes.SetAttribute(jsEvent.ToLower(), $"{existingJsEvent} nccAction(null, " + (string.IsNullOrEmpty(NccFilterIds) ? "$(this)" : $"{JsonConvert.SerializeObject(NccFilterIds.Split(','))}") + $", '{JsonConvert.SerializeObject(model)}', '{NccConstants.AttributePrefix}');"); } }
public override void Process(TagHelperContext tagContext, TagHelperOutput output) { var model = new NccActionModel { TargetIds = NccEventTarget.Split(',') }; model.Parameters.Add($"{DefaultParameters.ActionType.ToString().NccAddPrefix()}", "Event"); model.Parameters.Add($"{DefaultParameters.EventName.ToString().NccAddPrefix()}", NccEvent); model.Parameters.Add($"{"RowNumber".NccAddPrefix()}", RowPos.ToString()); if (output.TagName.ToLower() == "select") { var onchange = ""; if (output.Attributes.ContainsName("onchange")) { onchange = output.Attributes["onchange"].Value.ToString(); } output.Attributes.SetAttribute("onchange", $"{onchange} nccAction(null, $(this), '{JsonConvert.SerializeObject(model)}', '{NccConstants.AttributePrefix}');"); } else { var onclick = ""; if (output.Attributes.ContainsName("onclick")) { onclick = output.Attributes["onclick"].Value.ToString(); } output.Attributes.SetAttribute("onclick", $"{onclick} nccAction(null, $(this), '{JsonConvert.SerializeObject(model)}', '{NccConstants.AttributePrefix}');"); } }
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 override void Process(TagHelperContext tagContext, TagHelperOutput output) { var model = new NccActionModel { TargetIds = LinkTargets.Split(',') }; model.Parameters.Add($"{DefaultParameters.ActionType.ToString().NccAddPrefix()}", "LinkAction"); model.Parameters.Add($"{DefaultParameters.EventName.ToString().NccAddPrefix()}", "OnChange"); var onchange = ""; if (output.Attributes.ContainsName("onchange")) { onchange = output.Attributes["onchange"].Value.ToString(); } output.Attributes.SetAttribute("onchange", $"{onchange} nccAction(event, $(this), '{JsonConvert.SerializeObject(model)}', '{NccConstants.AttributePrefix}');"); }
public override void Process(TagHelperContext tagContext, TagHelperOutput output) { var exportFormats = new string[] { "exportExcel" }; if (!exportFormats.Any(NccExportFormat.Contains)) { NccExportFormat = "exportExcel"; } var model = new NccActionModel { TargetIds = NccTargetIds.Split(',') }; model.Parameters.Add($"{DefaultParameters.ActionType.ToString().NccAddPrefix()}", NccExportFormat); var existingJsEvent = ""; if (output.Attributes.ContainsName("onclick")) { existingJsEvent = output.Attributes["onclick"].Value.ToString(); } output.Attributes.SetAttribute("onclick", $"{existingJsEvent} nccAction(null, null, '{JsonConvert.SerializeObject(model)}', '{NccConstants.AttributePrefix}');"); }
public override async Task ProcessAsync(TagHelperContext tagContext, TagHelperOutput output) { output.SuppressOutput(); if (tagContext.Items.ContainsKey(typeof(NccGridContext))) { _context = (NccGridContext)tagContext.Items[typeof(NccGridContext)]; } else { return; } var gridViewContext = (NccGridContext)tagContext.Items[typeof(NccGridContext)]; var global = ViewContext.ViewData.Model; output.TagName = null; var data = gridViewContext.DataObjects as IList; _nccTagContext.RowNumber = 0; ViewContext.ViewBag.EmptyData = false; if (data != null && data.Count > 0) { object service = null; if (!string.IsNullOrEmpty(_context.EventHandlerClass)) { service = NccReflectionService.NccGetClassInstance(_context.EventHandlerClass, null); } _nccTagContext.GridRows = new List <GridRow>(); if (data.Count > _context.PageSize) { if (_context.Filters.ContainsKey("pageSize")) { var pageSize = Convert.ToInt32(_context.Filters["pageSize"]); data = new List <object>(data.Cast <object>()).Skip(pageSize * (_context.PageNumber - 1)).Take(pageSize).ToList(); } else { data = new List <object>(data.Cast <object>()).Skip(_context.PageSize * (_context.PageNumber - 1)).Take(_context.PageSize).ToList(); } } _context.DataObjects = data; var dataKeys = _context.DataKeys?.Split(',')?.ToList(); if (dataKeys != null) { _context.DataKeysValues = new List <Dictionary <string, object> >(); } foreach (var row in data) { if (dataKeys != null) { var dataKeysRow = new Dictionary <string, object>(); foreach (var dataKey in dataKeys) { var keyValue = row.NccGetPropertyValue <object>(dataKey); if (keyValue != null) { dataKeysRow[dataKey] = keyValue; } } _context.DataKeysValues.Add(dataKeysRow); } service?.NccInvokeMethod(NccGridEventsEnum.RowDataBound.ToString(), new object[] { new NccEventArgs { NccTagContext = _nccTagContext, NccControlContext = _context, DataObjects = data }, row }); _nccTagContext.GridRows.Add(new GridRow { Cells = new List <GridCell>(), RowNumber = _nccTagContext.RowNumber }); var rowData = row.NccToExpando() as IDictionary <string, object>; rowData["NccRowNumber"] = _nccTagContext.RowNumber; ViewContext.ViewData.Model = rowData.NccToExpando(); await output.GetChildContentAsync(false); if (_context.AutoGenerateEditButton) { var rowModel = _nccTagContext.GridRows.LastOrDefault(); if (_context.AdditionalData.ContainsKey("EditRowNumber") && _context.AdditionalData["EditRowNumber"].ToString() == _nccTagContext.RowNumber.ToString()) { var model = new NccActionModel { TargetIds = new[] { _context.Id } }; model.Parameters.Add($"{DefaultParameters.ActionType.ToString().NccAddPrefix()}", "GridAction"); model.Parameters.Add($"{DefaultParameters.EventName.ToString().NccAddPrefix()}", "CancelEditRow"); model.Parameters.Add($"{NccGridParametersEnum.RowNumber.ToString().NccAddPrefix()}", _nccTagContext.RowNumber.ToString()); var link = new TagBuilder("a") { Attributes = { { "style", "cursor:pointer;" }, { "onclick", $"nccAction(null, $(this), '{JsonConvert.SerializeObject(model)}', '{NccConstants.AttributePrefix}');" } } }; link.InnerHtml.AppendHtml("Cancel"); model.Parameters[$"{DefaultParameters.EventName.ToString().NccAddPrefix()}"] = "UpdateRow"; var link2 = new TagBuilder("a") { Attributes = { { "style", "cursor:pointer;" }, { "onclick", $"nccAction(null, $(this), '{JsonConvert.SerializeObject(model)}', '{NccConstants.AttributePrefix}');" } } }; link2.InnerHtml.AppendHtml("Save"); var cell = new GridCell(); cell.Value.AppendHtml(link); rowModel?.Cells.Add(cell); var cell2 = new GridCell(); cell2.Value.SetHtmlContent(link2); rowModel?.Cells.Add(cell2); } else { var model = new NccActionModel { TargetIds = new[] { _context.Id } }; model.Parameters.Add($"{DefaultParameters.ActionType.ToString().NccAddPrefix()}", "GridAction"); model.Parameters.Add($"{DefaultParameters.EventName.ToString().NccAddPrefix()}", "EditRow"); model.Parameters.Add($"{NccGridParametersEnum.RowNumber.ToString().NccAddPrefix()}", _nccTagContext.RowNumber.ToString()); var link = new TagBuilder("a") { Attributes = { { "style", "cursor:pointer;" }, { "onclick", $"nccAction(null, $(this), '{JsonConvert.SerializeObject(model)}', '{NccConstants.AttributePrefix}');" } } }; link.InnerHtml.AppendHtml("Edit"); var cell = new GridCell(); cell.Value.AppendHtml(link); rowModel?.Cells.Add(cell); } } //ViewContext.ViewBag.RowCount _nccTagContext.RowNumber++; _nccTagContext.ColCountComplete = true; service?.NccInvokeMethod(NccGridEventsEnum.RowCreated.ToString(), new object[] { new NccEventArgs { NccTagContext = _nccTagContext, NccControlContext = _context, DataObjects = data }, _nccTagContext.GridRows.LastOrDefault() }); } } }
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); }